安装并使用 CC Session Bridge 脚本,将 CC 调用会话转换为 OpenClaw 格式,供 AIMA 平台采集展示。支持流式写入、自动绑定 AIMA 任务、追加已有会话。触发场景:(1) 用户请求安装桥接脚本,(2) 用户想让 C...
将 Claude Code (CC) 的调用会话转换为 OpenClaw 会话格式,使 AIMA 平台能采集并展示 CC 的会话记录。支持流式写入、自动绑定 AIMA 任务、追加已有会话。
bash
# 1. 解压技能包到 skills 目录
mkdir -p ~/.openclaw/skills
unzip -o <技能包路径>/cc-session-bridge.skill -d ~/.openclaw/skills/
# 2. 拷贝脚本和配置到全局目录
mkdir -p ~/.openclaw/scripts
cp ~/.openclaw/skills/cc-session-bridge/scripts/cc-session-bridge.py ~/.openclaw/scripts/
cp ~/.openclaw/skills/cc-session-bridge/scripts/cc-bridge-config.yaml ~/.openclaw/scripts/
chmod +x ~/.openclaw/scripts/cc-session-bridge.py
# 3. 编辑配置文件,添加当前 agent 的信息
# 编辑 ~/.openclaw/scripts/cc-bridge-config.yaml
配置文件格式( ~/.openclaw/scripts/cc-bridge-config.yaml):
yaml
# 按 agent 目录名配置
# ⚠️ 填小灵自己的工号和名称,不是主人的
xiaoling-qinfang:
chat_id: "WB02521102"
sender_id: "WB02521102"
sender_name: "小灵-财富风控001"
# 其他小灵安装时,替换为自己的身份信息:
# xiaoling-xxx:
# chat_id: "你的工号"
# sender_id: "你的工号"
# sender_name: "小灵-xxx"
bash
# 检查依赖
which claude && claude --version # CC CLI
which aima && aima --version # AIMA CLI
which python3 && python3 --version # Python3
# 测试运行
python3 ~/.openclaw/scripts/cc-session-bridge.py \
--agent-name <你的agent目录名> \
--task-id <一个AIMA任务ID> \
--query "你好,这是测试"
预期输出: 🆕 新建会话: xxx → ✅ 会话已绑定到任务 xxx → CC 执行 → 🎉 完成
bash
python3 ~/.openclaw/scripts/cc-session-bridge.py \
--agent-name xiaoling-qinfang \
--task-id 8700205 \
--query "分析项目结构"
bash
python3 ~/.openclaw/scripts/cc-session-bridge.py \
--agent-name xiaoling-qinfang \
--task-id 8700205 \
--chat-id WB02521102 \
--sender-id WB02521102 \
--sender-name "小灵🤖财富风控001" \
--query "分析项目结构"
bash
python3 ~/.openclaw/scripts/cc-session-bridge.py \
--agent-name xiaoling-qinfang \
--task-id 8700205 \
--cwd ~/projects/my-project \
--query "分析项目结构"
CC 会在 ~/projects/my-project 目录下工作,能读取该项目的文件。不传 --cwd 时默认使用当前目录。
bash
python3 ~/.openclaw/scripts/cc-session-bridge.py \
--agent-name xiaoling-qinfang \
--task-id 8700205 \
--model opus \
--query "复杂分析任务"
默认 sonnet,可选 opus、 haiku 等。
同一 task-id 第二次调用时自动追加(append 模式),无需手动操作。
参数必填默认值说明--agent-name✅-OpenClaw agent 目录名--task-id✅-AIMA 任务 ID--query✅-传给 CC 的请求内容--model❌sonnetCC 模型--chat-id❌配置文件小灵 chat_id(填小灵自己的工号)--sender-id❌配置文件小灵 sender_id(填小灵自己的工号)--sender-name❌配置文件小灵 sender 名称--cwd❌当前目录CC 的工作目录,决定 CC 能访问哪些文件
优先级:命令行参数 > 配置文件
text
1. 查找 AIMA 任务是否已有绑定会话
├── 有 → APPEND:追加到现有 jsonl
└── 无 → NEW:新建会话 + 绑定到 AIMA 任务
2. 新建模式:
a. 生成 session_id (UUID)
b. 写入 session header
c. bind-session 到 AIMA 任务
d. 写入 user message + custom_message
3. 流式调用 CC (claude -p --output-format stream-json --verbose)
├── system 事件 → cc-raw 完整原始事件 + cc-init 摘要
├── assistant 事件 → cc-raw 完整原始事件 + 结构化 message (含 thinking/tool_use/text)
├── user 事件 → cc-raw 完整原始事件 + toolResult message
├── result 事件 → cc-raw 完整原始事件 + cc-result (完整文本,不截断)
└── 未知事件 → cc-raw 完整原始事件
脚本采用 双写策略,确保 CC 所有返回结果完整写入龙虾会话:
custom(cc-raw) 记录,不丢失任何数据CC 用 --output-format stream-json 输出时,每行一个 JSON,按 type 字段分 4 类:
事件类型说明关键字段system初始化事件,CC 启动时发一次model, cwd, tools, permissionMode, mcp_servers, skills, session_idassistantCC 的回复,每轮调用模型后返回message.content (text/thinking/tool_use blocks)user工具执行结果回传message.content (tool_result blocks)result最终结果,任务完成后发一次result, total_cost_usd, num_turns, duration_ms, stop_reason, is_error
一次完整 CC 调用的流程:
text
system → assistant(text+tool_use) → user(tool_result) → assistant(text+tool_use) → user(tool_result) → ... → result
即:初始化 → CC思考+调工具 → 工具返回结果 → CC再思考+再调工具 → ... → 最终结果
CC 事件脚本处理AIMA 展示system只写一次,Markdown 格式🔧 CC 初始化(模型、工具数、MCP服务等)assistant拆出 text/thinking/tool_use,写两条:原始折叠 + 结构化 message🤖 CC Assistant Event + 正常 assistant messageuser拆出每个 tool_result,折叠展示🔧 Tool Result: 工具名(点击展开)result只写统计表格,不重复 result_text📊 CC Summary(费用、轮次、耗时)
Markdown 格式优化:
<details> 折叠,默认只显示概要AIMA 看不到会话:
ls ~/.openclaw/agents/<agent>/sessions/aima workspace task detail --taskId <id>CC 调用失败:检查 which claude,模型名是否正确
绑定失败:检查 which aima,手动绑定: aima workspace task bind-session --taskId <id> --sessionId <sid>
只需 3 步:
~/.openclaw/scripts/cc-session-bridge.py~/.openclaw/scripts/cc-bridge-config.yaml(添加新 agent 配置)claude CLI + aima CLI + python3零 Python 依赖(内置简单 YAML 解析,不需要 pyyaml)。