ACP Claude Code 集成

通过 ACP (Agent Communication Protocol) 从 OpenClaw 中 spawn Claude Code 实例,在指定目录执行编程任务。

概述

ACP 是 OpenClaw 的 Agent 间通信协议,支持从一个 Agent 中启动(spawn)另一个 Agent 进程。本次尝试通过 ACP 在 ~/projects/clawline 目录中启动 Claude Code CLI,实现从聊天界面直接调用 Claude Code 编程能力。

关键点

  • 命令格式/acp spawn claude --mode persistent --thread auto
  • 工作目录~/projects/clawline
  • API 代理http://127.0.0.1:4819/(Copilot→Anthropic 代理服务)
  • Claude CLI 路径/Users/leway/.nvm/versions/node/v22.22.0/bin/claude

技术细节

运行模式

模式说明Clawline 支持
run一次性执行,不需要线程绑定
persistent (session)持久化会话,需要线程绑定

Clawline 是简单的 CLI/Relay 聊天通道,协议层不支持线程(threads)。线程需要底层平台原生支持(如 Discord、Telegram、Mattermost)。

遇到的问题

1. Billing Error(API 余额不足)

多次尝试均报错:

⚠️ API provider returned a billing error — your API key has run out of credits or has an insufficient balance.

2. OAuth 覆盖环境变量

根因:Claude Code 已登录 OAuth 账号(michael.keepgoing@gmail.com),优先使用 OAuth 而忽略 ANTHROPIC_BASE_URL 环境变量。

尝试的修复

  • 设置 ANTHROPIC_BASE_URL="http://127.0.0.1:4819"ANTHROPIC_API_KEY
  • 添加 --bare 参数强制使用 API key 模式(跳过 OAuth)
  • 更新 proxy 脚本使用 source ~/.zshrc 加载 PATH

3. 环境加载问题

ACP proxy 脚本需要正确加载 ~/.zshrc 以获取 Claude CLI 路径和环境变量。

解决方案

要使用 persistent ACP session:

  1. 从支持线程的渠道发起 — Discord / Telegram / Mattermost
  2. 在 Clawline 中用 run 模式 — 一次性执行,不需要线程

对于 API 调用问题:

  • 确认本地代理 127.0.0.1:4819 正常运行
  • 使用 --bare 模式避免 OAuth 覆盖
  • 确保 ~/.zshrc 中的 ANTHROPIC_BASE_URLANTHROPIC_API_KEY 正确设置

相关页面