OpenClaw指挥Claude Code开发实战测评
导语
将开发任务交给 Claude Code 后,转身离开工位,回来却发现进程只走了几步就陷入停滞——要么在等待权限确认,要么弹出“您看这样可以吗?”的询问。即便提前写好了完整的实施计划,它依然会在中途停下来等待人工反馈。
能否让 OpenClaw 驱动 Claude Code 执行开发,由小龙虾(OpenClaw)全程监督,确保任务持续推进直至完全落地?经过一整天的反复调试,尝试四种方案,踩过无数坑,最终打通了这条自动化链路:在飞书中提交需求 → 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 当工程师
分工明确后,架构自然清晰:
飞书用户 → 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)
- 用户体验好(自动执行,无需手动指令)
五、最终方案详解
架构
用户(飞书)↓OpenClaw Agent(任务调度层)- 理解需求(LLM)- 拆解任务- exec 调用 acpx claude- 整合结果↓acpx claude(执行层)- 持续会话(-s )- 执行编码任务- NDJSON 流式输出 关键配置
1. 安装依赖
# 安装 Claude Code CLInpm install -g @anthropic-ai/claude-code# 安装 acpx CLI(必须)npm install -g acpx# 验证安装claude --versionacpx --version2. 配置 Claude Code(核心!)
这是最关键的一步,很多人都卡在此处。
为什么必须配置 ~/.claude/settings.json?因为 claude-agent-acp 调用 Claude Code CLI 时,环境变量可能不传递。Claude Code CLI 优先读取配置文件中的 model 字段。
# 手动编辑 ~/.claude/settings.json{ "model": "qwen3.5-plus"}注意是 model 字段,不是 Anthropic_model。使用环境变量配置了半天没生效,最后发现必须修改配置文件。
可选的环境变量(用于认证):
export ANTHROPIC_BASE_URL="https://coding.dashscope.aliyuncs.com/apps/anthropic"export ANTHROPIC_API_KEY="sk-xxx"3. OpenClaw 配置
最终方案不需要 OpenClaw acpx 插件,因为直接调用 acpx CLI。但为了其他功能,可以保留基础配置:
{ "tools": { "sessions": { "visibility": "all" }, "agentToAgent": { "enabled": true, "allow": ["*"] } }}4. 重启 Gateway
openclaw gateway restart会话复用
# 创建会话acpx claude sessions new --name output-manager# 测试复用acpx claude -s output-manager "收到请回复数字 11"# → 输出:11acpx claude -s output-manager "上一个数字 +2 等于多少"# → 输出:13 ✅ 成功复用流式输出
acpx --format json claude -s output-manager "回复数字 11"输出 NDJSON 格式,每行一个事件。OpenClaw 每 5-10 秒 poll 一次,解析 thinking 和 message 字段,实时发送给用户。
结束判断
Claude Code 执行结束会有一个“Claude complete”的标记语,识别到这个即可判定任务完成。
六、拿走即用
快速开始
1. 安装
npm install -g @anthropic-ai/claude-codenpm install -g acpx2. 配置
# 编辑 ~/.claude/settings.json{ "model": "qwen3.5-plus"}3. 创建会话
acpx claude sessions new --name my-project4. 验证
# 第一轮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 小时)