从零开始搭建你的 AI 编程助手工作流

引言
今天是"模拟龙虾"项目的第八天,我们迎来了一个重要的里程碑:成功实现 OpenClaw 对 Claude Code 的控制和连接。这不仅仅是一次简单的工具集成,更是 AI 助手协作工作流的关键一步。
为什么需要连接 Claude Code?
在开始之前,让我先说说为什么这件事值得记录:
- 1. 专业化分工:OpenClaw 擅长任务调度和上下文管理,Claude Code 擅长代码理解和生成
- 2. 会话持久化:通过 OpenClaw 的会话管理,可以让 Claude Code 保持长期记忆
- 3. 多模型协作:可以在不同场景下灵活切换模型,发挥各自优势
OpenClaw 的 ACP 协议
OpenClaw 通过 ACP (AI Communication Protocol) 协议与外部 AI 工具通信。核心概念包括:
会话类型
| 类型 | 说明 | 适用场景 |
|---|---|---|
run | 一次性执行 | 简单任务、快速查询 |
session | 持久化会话 | 复杂项目、多轮对话 |
运行时选择
- • subagent:OpenClaw 原生子代理,轻量快速
- • acp:外部 AI 工具(如 Claude Code、Codex),功能强大
连接 Claude Code 的完整流程
第一步:配置环境
# 确保 ACP harness 已配置
openclaw configure --section acp
# 设置 Claude Code 的 agentId(如果非默认)
export CLAUDE_AGENT_ID=claude-code第二步:创建会话
使用 sessions_spawn 创建与 Claude Code 的连接:
// 方法 1:一次性任务(run 模式)
sessions_spawn({
runtime: "acp",
mode: "run",
agentId: "claude-code",
task: "帮我分析这个代码库的结构"
})
// 方法 2:持久会话(session 模式)
sessions_spawn({
runtime: "acp",
mode: "session",
agentId: "claude-code",
thread: true, // Discord 线程绑定
task: "开始一个新的代码审查会话"
})第三步:会话管理
创建会话后,可以使用以下工具进行管理:
// 查看活跃会话
sessions_list({ limit: 10 })
// 查看会话历史
sessions_history({
sessionKey: "abc123",
limit: 50,
includeTools: true
})
// 向会话发送消息
sessions_send({
sessionKey: "abc123",
message: "请继续分析这个函数的性能问题"
})
// 结束当前轮次,等待子代理结果
sessions_yield({ message: "等待分析结果" })实际应用场景

场景 1:代码审查
// 在 Discord 线程中启动 Claude Code 进行 PR 审查
sessions_spawn({
runtime: "acp",
mode: "session",
agentId: "claude-code",
thread: true,
cwd: "/tmp/pr-review-123",
task: "审查这个 PR 的代码质量和潜在问题"
})场景 2:大型代码库分析
// 创建持久会话分析代码库
const sessionKey = await sessions_spawn({
runtime: "acp",
mode: "session",
agentId: "claude-code",
task: "分析 /home/project 目录的代码结构,生成架构文档"
})
// 后续可以继续提问
await sessions_send({
sessionKey,
message: "找出所有使用递归的函数并评估栈溢出风险"
})场景 3:多模型协作
// OpenClaw 负责任务分解
// Claude Code 负责代码实现
// 另一个模型负责文档生成
// 1. 分解任务
const tasks = ["分析需求", "编写代码", "生成文档"]
// 2. 分配给 Claude Code
const codeSession = await sessions_spawn({
runtime: "acp",
agentId: "claude-code",
task: tasks[1]
})
// 3. 等待结果并整合
await sessions_yield()关键注意事项

1. 工作目录隔离
- • Claude Code 会话继承父会话的工作目录
- • 敏感目录(如
~/clawd)禁止使用 agents - • 建议在
/tmp或项目目录下操作
2. 会话生命周期
- •
run模式:任务完成自动结束 - •
session模式:需要手动清理或设置超时 - • 使用
subagents(action="kill", target="xxx")终止会话
3. 权限控制
- • ACP harness 需要明确配置
agentId - • 不要使用
agents_list路由 ACP 请求 - • 遵循
acp.allowedAgents白名单
调试技巧
查看会话状态
# 列出所有活跃会话
sessions_list({ activeMinutes: 60 })
# 查看特定会话的详细信息
session_status({ sessionKey: "abc123" })日志分析
// 获取会话历史(包含工具调用)
const history = await sessions_history({
sessionKey: "abc123",
limit: 100,
includeTools: true
})
// 分析工具调用模式
history.messages.forEach(msg => {
if (msg.toolCalls) {
console.log("工具调用:", msg.toolCalls)
}
})性能优化建议

- 1. 避免轮询:不要频繁调用
sessions_list检查状态 - 2. 合理使用超时:长任务设置
timeoutSeconds避免无限等待 - 3. 批量操作:多个相关任务尽量在同一个会话中完成
- 4. 清理资源:定期清理不再需要的会话
总结
通过第八天的实践,我们成功建立了 OpenClaw 与 Claude Code 的稳定连接。核心要点:
- • ✅ 使用
sessions_spawn(runtime="acp")创建连接 - • ✅ 根据场景选择
run或session模式 - • ✅ 合理管理会话生命周期和资源
- • ✅ 遵循 ACP harness 的配置规范
这为后续的 AI 协作工作流打下了坚实基础。明天我们将探索更多高级用法,包括多模型协作和自动化工作流。
模拟龙虾第八天记录于 2026-04-02 🦞 持续探索 AI 助手的无限可能
夜雨聆风