通过 SSH 远程操控 CNB 云原生开发环境中的 CodeBuddy CLI(tcb ai),实现远程指挥 AI 编程。适用于需要在 CNB 云开发环境中执行代码开发、文件操作、项目构建等任务的场景。触发词:"远程 CodeBuddy"、"CNB 云原生开发"、"tcb ai 远程"、"CodeBuddy SSH"、"云原生 AI"。
CNB CodeBuddy 远程操控是一项面向实际任务的技能,主要用于通过 SSH + PTY 远程控制 CNB 云原生环境中的 CodeBuddy CLI,实现非交互式任务下发和结果回收;CNB 云原生环境已创建 ,可通过 SSH 访问;
每个 CNB 云原生环境。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 SSH + PTY 远程控制 CNB 云原生环境中的 CodeBuddy CLI,实现非交互式任务下发和结果回收。
每个 CNB 云原生环境需要记录:
SSH_HOST=<环境ID>@cnb.space WORK_DIR=/workspace WEBIDE=https://cnb-.cnb.space
ssh -o ConnectTimeout=10 -o ServerAliveInterval=5 -o ServerAliveCountMax=12'echo OK'
ssh'which codebuddy; codebuddy --version' ssh 'tcb ai --config'
必须走中国站 OAuth,CLI 硬编码认证目标为 codebuddy.ai,API KEY 方案不可行(cn 站 key 全部 401)。
推荐方式:用户在 WebIDE 手动登录
tcb ai -a codebuddycopilot.tencent.com/login?platform=CLI&state= 二维码~/.codebuddy/自动登录脚本(需用户配合扫码):
expect << 'EOF'
set timeout 180
spawn tcb ai -a codebuddy
expect -re {Do you trust}
send "r"
expect -re {Enter to confirm}
send "r"
expect -re {copilot.tencent.com/login}
# 提取 URL 通知用户扫码,等待回调
expect eof
EOF
首次启动 CodeBuddy 会询问是否信任目录,选「Trust folder and all subdirectories」。
步骤:
ssh -o ConnectTimeout=10 -o ServerAliveInterval=5 -o ServerAliveCountMax=12 -t'cd && tcb ai'
等待启动完成(约 15-20 秒),确认看到 GLM-5.1 和 ? for shortcuts
用 process write 发送指令文本(纯文本,不含回车):
process write sessionId="" data="read README.md and summarize it"
process send-keys 发送回车(必须用 hex,不能用 write 发 r):process send-keys sessionId="" hex=["0d"]
等待 CodeBuddy 处理(状态变化:waiting for model → streaming → mixing → 完成)
streaming · ↓ N tokens 恢复到 idle 表示完成如遇工具确认提示(Do you want to proceed?),自动选 "Yes, and don't ask again":
process send-keys sessionId="" hex=["1b","5b","42"] # Down arrow # 等待 0.3 秒 process send-keys sessionId=" " hex=["0d"] # Enter
关键交互对照表:
| 操作 | hex 值 | 说明 |
|---|---|---|
| 回车(Enter) | ["0d"] |
提交 prompt / 确认选项 |
| 下箭头(Down) | ["1b","5b","42"] |
切换选项 |
| 上箭头(Up) | ["1b","5b","41"] |
切换选项 |
| Tab | ["09"] |
切换模式/选项 |
| Escape | ["1b"] |
取消/退出 |
状态栏含义:
| 状态 | 含义 | 等待时间 |
|---|---|---|
waiting for model |
排队/冷启动 | 5-15 秒 |
Thinking on |
模型推理中 | 5-15 秒 |
streaming · ↓ N tokens |
正在输出 | 持续 |
mixing |
整合工具调用结果 | 5-20 秒 |
swiping |
生成回复 | 5-15 秒 |
| 空闲(无状态) | 完成,可发下一条 | - |
使用 scripts/cb-remote.sh:
scp scripts/cb-remote.sh:/tmp/cb-remote.sh ssh 'bash /tmp/cb-remote.sh "你的指令" [超时秒数]'
ssh'cd && nohup expect /tmp/cb.exp "指令" > /tmp/cb-output.txt 2>&1 &' # 稍后读取 ssh 'cat /tmp/cb-output.txt | sed "s/x1b[[0-9;]*[a-zA-Z]//g" | tail -30'
sed "s/x1b[[0-9;]*[a-zA-Z]//g; s/]8;;[^]]*]//g"| 症状 | 原因 | 解决 |
|---|---|---|
| 401 认证错误 | token 过期 | WebIDE 重新登录 |
| SSH 2分钟断连 | keepalive 不足 | 加 -o ServerAliveInterval=5 -o ServerAliveCountMax=12 |
| 回车变成文字 | write 发送 r | 用 send-keys hex ["0d"] |
| Thinking 无响应 | prompt 没真正发送 | 确认用 hex 发回车 |
| 信任目录卡住 | expect 没处理 | 脚本加 exp_continue |
| API KEY 401 | CLI 硬编码 codebuddy.ai | 必须走 OAuth |
| waiting for model 久 | 排队/冷启动 | 等 10-15 秒 |
| 多个 tcb 进程 | WebIDE 残留 | pkill -f tcb 清理 |
| 首次 prompt 自动触发 | 历史残留 | 等 idle 后再发 |
~/.codebuddy/,重启环境不丢失