OpenCode Remote

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 HTTP API 远程操作 OpenCode 服务器。用于管理远程 OpenCode 实例的会话、监控状态和执行任务。 核心功能: 1. 管理多个"主session"(每个有独立的四词短名、endpoint、任务) 2. 向 session 发送消息(默认不指定agent,延续之前使用) 3. 自动监控:发...

OpenCode 远程操作

功能概述

OpenCode 远程操作是一项面向实际任务的技能,主要用于通过 HTTP API 与远程 OpenCode 服务器交互,实现多 session 管理、状态监控和任务执行;核心概念:主 Session;

核心要点

  • 每个主 session 有:;
  • 四词短名 :唯一标识(如 csbx , kumo , hetc );
  • Endpoint :服务器地址和端口;

使用与执行

Session ID :完整的 session 标识符;当前任务 :正在执行的工作内容。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

OpenCode 远程操作

通过 HTTP API 与远程 OpenCode 服务器交互,实现多 session 管理、状态监控和任务执行。

核心概念:主 Session

每个主 session 有:

  • 四词短名:唯一标识(如 csbx, kumo, hetc)
  • Endpoint:服务器地址和端口
  • Session ID:完整的 session 标识符
  • 当前任务:正在执行的工作内容

主 Session 示例

短名 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 项目开发

快速开始

1. 确认服务器连接

curl -s http://:/global/health | jq

2. 列出所有 Sessions

curl -s http://:/session | jq

3. 查看 Session 详情

# 基本信息
curl -s http://:/session/ | jq

# 消息记录
curl -s http://:/session//message | jq

# 待办事项(最准确的状态检查)
curl -s http://:/session//todo | jq

向 Session 发送消息

⚠️ 重要原则

默认不指定 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内容"

可用 Agents(用户要求时提供)

先调用 GET /agent 获取完整列表,常用 primary agents:

  • Sisyphus (Ultraworker) - 主要工作 agent
  • Hephaestus (Deep Agent) - 深度分析
  • Prometheus (Plan Builder) - 规划构建
  • Atlas (Plan Executor) - 规划执行
  • build, plan, general, explore - subagents

自动监控(重要)

规则:发送消息后自动监控

每当向一个 session 发送消息后,必须自动设置监控:

  1. 创建定时任务:每 5 分钟检查该 session 的 todo 状态
  2. 汇报内容:
    • Todo 进度(completed / in_progress / pending)
    • 当前活跃任务内容
    • 最新消息摘要
  3. 任务完成时:提醒用户并建议取消监控

会话结束时报告完整结果

当监测到 session 从 active/running 状态变为 stopped/completed 时:

  1. 立即提取并报告最后一段完整输出:
📋  会话已结束

**最后输出**:
[完整的最后一条或几条 assistant 消息,包含所有 text 内容]

**任务总结**:
- 完成状态:✅ 完成 / ❌ 失败
- Todo 进度:X/Y 完成
- 建议:取消监控 / 继续观察

如何检测会话结束:

  • 检查最新消息的 info.time.completed 不为 null
  • 或检查 todo 列表全部为 completed 状态
  • 或 session state 从 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,合并为一个定时任务:

⏰ 监控多个主 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 时,必须先询问用户:

"您想用哪个 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 标题"}'

记录主 Session

创建后记录到 opencode-sessions.md:

## 主 Session 列表

| 短名 | Endpoint | Session ID | 任务 | 创建时间 |
|------|----------|------------|------|----------|
| xxx | host:port | ses_xxx | 任务描述 | 2026-03-07 |

监控 Session 的最佳实践

✅ 正确的状态检查方法

方法一:优先检查 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"

完整 API 参考

详见 references/api_reference.md

更新日志

  • 2026-03-07:
    • 添加主 session 管理规范(四词短名)
    • 明确默认不指定 agent 的原则
    • 添加发送消息后自动监控规则
    • 添加创建 session 时询问 agent 的要求
    • 添加多 session 监控合并规则
    • 添加发送后必须重复 prompt 给用户的规则
    • 添加会话结束时报告完整结果的规则

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习