我打通了飞书→OpenClaw→Claude Code 的完整链路

创作:OpenClaw × Anton


导语

有时候把开发任务交给 Claude Code 就离开了做别的了,回来发现它执行个三五步就停了,不是等你给权限就是问"您看这样可以吗?",哪怕你提前写好了完整的实施计划,它还是会中途停下来等你确认。

要是能让 OpenClaw 使用 Claude Code 进行开发,让小龙虾监督它持续工作直到完全实施完成就好了。

于是我折腾了一整天,试了四种方案,踩了无数个坑,终于打通了这条链路:在飞书里提需求→OpenClaw 自动拆解任务→Claude Code 持续执行→完成后发起 PR 通知验收。中间完全不需要人工介入。

最爽的是,整个过程 Claude Code 始终在同一个会话里,上下文是连续的,它记得之前做了什么,不会出现"我是谁我在哪"的情况。

如果你也想让 AI 真正帮你托管开发,而不是"挤牙膏式"的一轮一轮做,这篇文章就是为你写的。



一、为什么不让 OpenClaw 直接开发?

我试过让 OpenClaw 直接开发,但他对项目的工程级上下文能力还是很欠缺,Claude Code 则有几个不可替代的优势:

第一,它有成熟的项目上下文持续集成优化机制,以项目维度划分工作区,对项目的技术架构、业务逻辑的理解能持续积累。

第二,它是专门为 coding 设计的 agent,工具链更完善,写代码的手感更好。

第三,长期迭代时,Claude Code 能记住之前的决策和改动,不会每次都从零开始。

所以我的目标很明确:用 OpenClaw 当"技术 PM"负责任务拆解和调度,用 Claude Code 当"执行工程师"负责写代码

在飞书里跟机器人说一声"帮我开发个用户注册功能",然后该干嘛干嘛去。等 OpenClaw 通知我"做完了,PR 已发起",我去验收一下就行。中间不需要我反复确认、反复给指令。


二、架构设计:OpenClaw 当 PM,Claude Code 当工程师

想清楚分工后,架构就清晰了:

scss 复制代码
飞书用户 → OpenClaw(调度层) → Claude Code(执行层)

飞书是入口,随时随地提需求,不用打开 IDE。

OpenClaw是技术 PM,负责理解需求、拆解任务、调度执行、整合结果。它有 LLM 能力,能跟人自然语言沟通,也能调用各种工具。

Claude Code是执行工程师,负责具体的编码工作。它专业、高效,而且能持续积累项目上下文。

关键设计点:

OpenClaw 通过 exec 命令调用 acpx claude,每 5-10 秒轮询一次输出,识别到"Claude complete"标记就知道任务完成了。如果 Claude Code 遇到问题停下来,OpenClaw 能基于对需求的理解自主决策,告诉它下一步该做什么。只有遇到权限等重大问题时,才会问我。

这样一来,整个链路就活了。



三、核心难点:持续会话是成败关键

整个链路最难的地方,不是配置环境,不是写调度逻辑,而是保持同一个 Claude Code 会话

为什么这个这么重要?

因为 Claude Code 的上下文记忆是绑定在 session 上的。如果每次调用都是新 session,它就完全不记得之前做了什么,相当于每次都要从零开始。这样的话,OpenClaw 的调度就失去了意义------它得把之前的对话历史重新讲一遍,效率极低。

我卡在这里整整一天。

试了很多种办法,一开始用官方推荐的 OpenClaw ACP 方式,配置了半天,一会儿是这个参数不对,一会儿是那个接口报错。最烦的是,很多配置问题 OpenClaw 自己也排查不到,问它吧,它还可能说谎------工具调用的输入输出有点黑盒,看不到真实证据。

后来我学聪明了,每改一次配置就让 OpenClaw 提供调用工具的真实日志,这才慢慢摸清楚问题在哪。


四、踩坑排查:四种方案对比

我把尝试过的方案整理成表格,一目了然:

方案 会话复用 OpenClaw 调度 流式输出 状态
ACP + resumeSessionId 失败
ACP + /acp steer 可用但不推荐
acpx claude -s 可用但无调度
Agent + exec acpx 推荐

方案一:ACP + resumeSessionId(失败)

官方文档说用 sessions_spawn 加上 resumeSessionId 参数就能复用会话。我配了半天,发现每次都是新会话。

后来仔细研究才发现,resumeSessionId 是 OpenClaw ACP 会话的 ID,不是 Claude Code 的 session ID。复用 OpenClaw 的会话 ID 根本维持不了同一个 Claude 会话。这个参数有点鸡肋,可能在 thread 和 mode=session 下才有用。

方案二:ACP + /acp steer(可用但不推荐)

这个方案能复用会话,但有个致命问题:/acp 指令只能人为发送给 OpenClaw,它自己不能执行。也就是说,每一条指令都需要我手动发布,那直接用 Claude Code 不香吗?

这个方案解决不了核心需求:Claude Code 中断时,OpenClaw 自主决策继续调度。

方案三:acpx claude -s(可用但无调度)

直接用 acpx claude -s 会话名 确实能复用会话,而且很简单直接。但问题是不经过 OpenClaw,无法发挥它的任务拆解和调度能力。

这就相当于绕过了 PM,直接跟工程师对话。简单任务还行,复杂任务就抓瞎了。

方案四:Agent + exec acpx(完美)

最终方案:OpenClaw Agent 通过 exec 调用 acpx claude -s 会话名

这个方案兼顾了所有需求:

  • OpenClaw 可以调度(拆解任务、整合结果)
  • acpx claude 持续会话(-s 参数)
  • 支持流式输出(--format json + 定期 poll)
  • 用户体验好(自动执行,不需要手动指令)


五、最终方案详解

架构

markdown 复制代码
用户(飞书)
  ↓
OpenClaw Agent(任务调度层)
  - 理解需求(LLM)
  - 拆解任务
  - exec 调用 acpx claude
  - 整合结果
  ↓
acpx claude(执行层)
  - 持续会话(-s <name>)
  - 执行编码任务
  - NDJSON 流式输出

关键配置

1. 安装依赖

bash 复制代码
# 安装 Claude Code CLI
npm install -g @anthropic-ai/claude-code

# 安装 acpx CLI(必须)
npm install -g acpx

# 验证安装
claude --version
acpx --version

2. 配置 Claude Code(核心!)

这是最关键的一步,很多人(包括我)都卡在这里。

为什么必须配置 ~/.claude/settings.json?因为 claude-agent-acp 调用 Claude Code CLI 时,环境变量可能不传递。Claude Code CLI 优先读取配置文件中的 model 字段。

bash 复制代码
# 手动编辑 ~/.claude/settings.json
{
  "model": "qwen3.5-plus"
}

注意是 model 字段,不是 Anthropic_model。我用环境变量配了半天没生效,最后发现得改配置文件。



可选的环境变量(用于认证):

bash 复制代码
export ANTHROPIC_BASE_URL="https://coding.dashscope.aliyuncs.com/apps/anthropic"
export ANTHROPIC_API_KEY="sk-xxx"

3. OpenClaw 配置

最终方案不需要 OpenClaw acpx 插件,因为直接调用 acpx CLI。但为了其他功能,可以保留基础配置:

json 复制代码
{
  "tools": {
    "sessions": { "visibility": "all" },
    "agentToAgent": { "enabled": true, "allow": ["*"] }
  }
}

4. 重启 Gateway

bash 复制代码
openclaw gateway restart

会话复用

bash 复制代码
# 创建会话
acpx claude sessions new --name output-manager

# 测试复用
acpx claude -s output-manager "收到请回复数字 11"
# → 输出:11

acpx claude -s output-manager "上一个数字 +2 等于多少"
# → 输出:13 ✅ 成功复用

流式输出

bash 复制代码
acpx --format json claude -s output-manager "回复数字 11"

输出 NDJSON 格式,每行一个事件。OpenClaw 每 5-10 秒 poll 一次,解析 thinkingmessage 字段,实时发送给用户。

结束判断

Claude Code 执行结束会有一个"Claude complete"的标记语,识别到这个就知道任务完成了。


六、拿走即用

快速开始

1. 安装

bash 复制代码
npm install -g @anthropic-ai/claude-code
npm install -g acpx

2. 配置

bash 复制代码
# 编辑 ~/.claude/settings.json
{
  "model": "qwen3.5-plus"
}

3. 创建会话

bash 复制代码
acpx claude sessions new --name my-project

4. 验证

bash 复制代码
# 第一轮
acpx claude -s my-project "收到请回复 11"

# 第二轮(验证上下文)
acpx claude -s my-project "上一个数字 +2 等于多少"
# 应该输出 13


开源计划

我已经把这套方案封装成了 skill,整理好会开源。到时候可以直接安装使用,不用自己从头配置。


写在最后

虽然现在只能用 exec 方案,有点"曲线救国"的意思,但已经能达到托管开发的目的。如果未来飞书能支持 thread,OpenClaw ACP 能丰富能力,我还是更希望用原生的 ACP 方式------那样等同一个 agent 会话,有 session 记录文件,很方便追溯完整对话过程,可靠性和便捷性都更高。

但在那之前,这个方案已经足够好用了。


创作 :OpenClaw × Anton
创作时间:约 2 小时(素材收集 1 小时 + 写作 1 小时)


相关推荐
counterxing9 小时前
Agent 跑起来之后,难的是复用、观测和评测
node.js·agent·ai编程
uccs9 小时前
大模型底层机制与Agent开发
agent·ai编程·claude
counterxing10 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
夜雪闻竹10 小时前
vectra 向量索引文件损坏怎么办
ai编程·向量·vectra
ZzT10 小时前
Harness 到底指什么
openai·ai编程·claude
宅小年10 小时前
AI 创业最危险的地方:太容易做出来
openai·ai编程·claude
麦客奥德彪10 小时前
Android Skills
架构·ai编程
言萧凡_CookieBoty11 小时前
一文讲清 RAG:让 AI 读懂业务知识库的核心方法
ai编程
kyriewen12 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
Patrick_Wilson12 小时前
知识沉淀的四层模型:从个人笔记到企业资产,让文档真正长出复利
面试·程序员·ai编程