通过 HTTP API 远程操作 OpenCode 服务器。用于管理远程 OpenCode 实例的会话、监控状态和执行任务。 核心功能: 1. 管理多个"主session"(每个有独立的四词短名、endpoint、任务) 2. 向 session 发送消息(默认不指定agent,延续之前使用) 3. 自动监控:发...
OpenCode 远程操作是一项面向实际任务的技能,主要用于通过 HTTP API 与远程 OpenCode 服务器交互,实现多 session 管理、状态监控和任务执行;核心概念:主 Session;
Session ID :完整的 session 标识符;当前任务 :正在执行的工作内容。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 HTTP API 与远程 OpenCode 服务器交互,实现多 session 管理、状态监控和任务执行。
每个主 session 有:
csbx, kumo, hetc)| 短名 | Endpoint | Session ID | 任务 |
|---|---|---|---|
| csbx | acf3108.ece.ust.hk:4096 | ses_36c5b7b5effe3AHLnYQJGbgDr7 | OpenCode Web 集成 |
| kumo | acf3108.ece.ust.hk:9004 | ses_34857e78affew0nYs8DQWml3q8 | k8s macOS 部署 |
| hetc | acf3108.ece.ust.hk:35457 | ses_33c2542cbffe2GO3tL5tHTaiRT | HETC 项目开发 |
curl -s http://: /global/health | jq
curl -s http://: /session | jq
# 基本信息 curl -s http://: /session/ | jq # 消息记录 curl -s http:// : /session/ /message | jq # 待办事项(最准确的状态检查) curl -s http:// : /session/ /todo | jq
默认不指定 agent:除非用户明确要求,否则不设置 agent 字段,让系统使用默认 agent 或延续之前使用的 agent。
每次发送消息后,必须完整重复发送的内容给用户确认:
以下是我发送给
的完整 prompt: [完整的 prompt 内容,保持原样]
示例:
以下是我发送给 csbx 的完整 prompt: 做一下 git pull,然后看一下 commit message,看看最近 git 里的人都在干啥。
为什么重要:
同步发送(等待 AI 响应):
POST /session/{id}/message
异步发送(立即返回 204):
POST /session/{id}/prompt_async
# ✅ 不指定 agent(推荐) curl -s -X POST http://: /session/ /message -H "Content-Type: application/json" -d '{ "parts": [{"type": "text", "text": "prompt内容"}], "model": {"providerID": "openai", "modelID": "gpt-5.4"} }' # 发送后向用户报告: # "以下是我发送给 csbx 的完整 prompt:" # "prompt内容"
先调用 GET /agent 获取完整列表,常用 primary agents:
Sisyphus (Ultraworker) - 主要工作 agentHephaestus (Deep Agent) - 深度分析Prometheus (Plan Builder) - 规划构建Atlas (Plan Executor) - 规划执行build, plan, general, explore - subagents每当向一个 session 发送消息后,必须自动设置监控:
当监测到 session 从 active/running 状态变为 stopped/completed 时:
📋会话已结束 **最后输出**: [完整的最后一条或几条 assistant 消息,包含所有 text 内容] **任务总结**: - 完成状态:✅ 完成 / ❌ 失败 - Todo 进度:X/Y 完成 - 建议:取消监控 / 继续观察
如何检测会话结束:
info.time.completed 不为 nullcompleted 状态running 变为 stopped示例检测逻辑:
# 获取最新消息状态
LATEST=$(curl -s http://host:port/session/ID/message?limit=1 | jq '.[0]')
COMPLETED=$(echo $LATEST | jq '.info.time.completed')
if [ "$COMPLETED" != "null" ]; then
# 会话已结束,提取完整输出
TEXT=$(echo $LATEST | jq -r '.parts[] | select(.type == "text") | .text')
echo "会话已结束,最后输出:$TEXT"
fi
如果用户同时监控多个 session,合并为一个定时任务:
⏰ 监控多个主 session 状态(每5分钟) 1. csbx (ses_xxx) @ host:port 2. kumo (ses_xxx) @ host:port 3. hetc (ses_xxx) @ host:port 查询每个 session 的 todo 状态并汇总汇报
# 使用 cron 创建每5分钟监控 cron add --name "monitor-main-sessions" --schedule "every 5 minutes" --command "查询所有主session的todo状态并汇报"
创建新 session 时,必须先询问用户:
"您想用哪个 agent 创建新 session?可用选项:
- Sisyphus (Ultraworker) - 主要工作
- Hephaestus (Deep Agent) - 深度分析
- 其他 subagents: build, plan, general, explore
或者使用默认 agent(不推荐)?"
curl -s -X POST http://: /session -H "Content-Type: application/json" -d '{"title": "新 session 标题"}'
创建后记录到 opencode-sessions.md:
## 主 Session 列表 | 短名 | Endpoint | Session ID | 任务 | 创建时间 | |------|----------|------------|------|----------| | xxx | host:port | ses_xxx | 任务描述 | 2026-03-07 |
方法一:优先检查 todo 列表(最准确)
curl -s http://: /session/ /todo | jq ' group_by(.status) | map({status: .[0].status, count: length}) '
方法二:检查多条消息判断会话结束
# ✅ 检查最新消息是否已完成 curl -s http://: /session/ /message?limit=1 | jq ' .[0] | {completed: .info.time.completed, text: .parts[] | select(.type == "text") | .text[:200]} '
方法三:对比消息 ID 变化
# 记录上次消息 ID,对比是否变化
错误做法:
# ❌ 不要只查单条消息!
curl .../message?limit=1 | jq '.[0] | {completed}'
错误做法:
# ❌ 不要指定不存在的 agent "agent": "main" # 不存在,会导致 agent.variant 错误
错误做法:
# ❌ 发送后不向用户确认 # 必须重复发送的内容给用户
# 列出所有 sessions python3 scripts/opencode_client.py --url http://: list # 查看 session 状态 python3 scripts/opencode_client.py --url http:// : status # 查看消息 python3 scripts/opencode_client.py --url http:// : messages # 发送消息 python3 scripts/opencode_client.py --url http:// : send "prompt"
详见 references/api_reference.md
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习