乐于分享
好东西不私藏

模拟龙虾第八天:OpenClaw 控制和连接 Claude Code 实战

模拟龙虾第八天:OpenClaw 控制和连接 Claude Code 实战

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

工程师在电脑前专注工作

引言

今天是"模拟龙虾"项目的第八天,我们迎来了一个重要的里程碑:成功实现 OpenClaw 对 Claude Code 的控制和连接。这不仅仅是一次简单的工具集成,更是 AI 助手协作工作流的关键一步。

为什么需要连接 Claude Code?

在开始之前,让我先说说为什么这件事值得记录:

  1. 1. 专业化分工:OpenClaw 擅长任务调度和上下文管理,Claude Code 擅长代码理解和生成
  2. 2. 会话持久化:通过 OpenClaw 的会话管理,可以让 Claude Code 保持长期记忆
  3. 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. 1. 避免轮询:不要频繁调用 sessions_list 检查状态
  2. 2. 合理使用超时:长任务设置 timeoutSeconds 避免无限等待
  3. 3. 批量操作:多个相关任务尽量在同一个会话中完成
  4. 4. 清理资源:定期清理不再需要的会话

总结

通过第八天的实践,我们成功建立了 OpenClaw 与 Claude Code 的稳定连接。核心要点:

  • • ✅ 使用 sessions_spawn(runtime="acp") 创建连接
  • • ✅ 根据场景选择 runsession 模式
  • • ✅ 合理管理会话生命周期和资源
  • • ✅ 遵循 ACP harness 的配置规范

这为后续的 AI 协作工作流打下了坚实基础。明天我们将探索更多高级用法,包括多模型协作和自动化工作流。


模拟龙虾第八天记录于 2026-04-02 🦞 持续探索 AI 助手的无限可能