hermes远程操作opencode serve模式

概述

本笔记记录 Hermes Agent 通过 Tailscale 远程操作工作机上的 opencode serve 模式的架构方案。

┌──────────────────────────────────────────────────────────┐
│           Hermes → opencode serve 远程开发架构           │
│       跨 Tailscale 局域网 · 编排远端 coding agent        │
├──────────────────────────────────────────────────────────┤
│              ☁️ ARM 云服务器  arm.atibm.com              │
│┌────────────────────────────────────────────────────────┐│
││              Docker Container (ghost_net)              ││
││   ┌────────────────────────────────────────────────┐   ││
││   │                  Hermes Agent                  │   ││
││   │          deepseek-v4-flash · 编排决策          │   ││
││   │           terminal()  execute_code()           │   ││
││   └────────────────────────────────────────────────┘   ││
││   ┌────────────────────────────────────────────────┐   ││
││   │            🔒 Tailscale (userspace)             │   ││
││   │             出站连接 tailnet 节点              │   ││
││   └────────────────────────────────────────────────┘   ││
│└────────────────────────────────────────────────────────┘│
│                            │                             │
│                            ▼                             │
├──────────────────────────────────────────────────────────┤
│                   🔗 Tailscale Tailnet                    │
│            WireGuard + MagicDNS + 点对点直连             │
│┌────────────────────────────────────────────────────────┐│
││               max2-at.tail9e6317.ts.net                ││
│└────────────────────────────────────────────────────────┘│
│                            │                             │
│                            ▼                             │
├──────────────────────────────────────────────────────────┤
│                     🖥 工作机 (max2)                      │
│┌────────────────────────────────────────────────────────┐│
││   ┌────────────────────────────────────────────────┐   ││
││   │             opencode serve  :4096              │   ││
││   └────────────────────────────────────────────────┘   ││
││           📁 项目文件(本地读写 · 无需 SCP)            ││
││            🧠 AI 推理(代码生成 · 测试运行)            ││
││              🔀 Git(本地仓库 · CI 集成)               ││
│└────────────────────────────────────────────────────────┘│
├──────────────────────────────────────────────────────────┤
│                          工作流                          │
│① 任务分解 → ② 远程调用 → ③ 代码生成 → ④ 结果回收 → ⑤ 交付│
├──────────────────────────────────────────────────────────┤
│                       三种操作模式                       │
│              A. opencode --attach 指令推送               │
│     terminal("opencode run 'T' --attach http://...")     │
│                   B. HTTP API 直接调用                   │
│       execute_code() 发送 HTTP 请求到 opencode API       │
│                  C. 多 worker 并行编排                   │
│             多台工作机同时 attach,并行任务              │
├──────────────────────────────────────────────────────────┤
│                          数据流                          │
│ Hermes => [Tailscale] => max2:4096 => AI + 项目 => 结果  │
└──────────────────────────────────────────────────────────┘

架构说明

架构分为三个层级:

1. 编排层 — Hermes Agent(ARM 云服务器)

  • 运行在 arm.atibm.com 的 Docker 容器内(ghost_net 网络)
  • 负责需求理解、任务切片、指令分发
  • 通过 terminal()execute_code() 工具,使用 opencode --attach 或 HTTP 调用远程 opencode server

2. 网络层 — Tailscale

  • Hermes Docker 容器内运行 Tailscale userspace 模式
  • 通过 MagicDNS 解析工作机:max2-at.tail9e6317.ts.net
  • WireGuard 端到端加密,点对点直连(同局域网低延迟)
  • 出站连接能力已通过 MCP 端口(:9003)验证

3. 执行层 — opencode serve(max2 工作机)

  • 工作机运行 opencode serve 监听端口 4096
  • 通过 --attach http://max2-at.tail9e6317.ts.net:4096 接收远程指令
  • 代码在工作机本地生成、读写项目文件,无需 SCP/同步
  • AI 推理在工作机上进行(利用其 GPU/计算资源)

三种操作模式

模式 方法 适用场景
A · --attach 指令推送 terminal("opencode run '任务' --attach http://...") 一次性编码任务,利用 opencode CLI 的完整能力
B · HTTP API 直接调用 execute_code() 发送 HTTP 请求到 opencode API 精细化编排:Hermes 拆任务 → 逐个 POST → 取结果 → 整合
C · 多 worker 并行编排 多台工作机同时 attach,Hermes 分配并行任务 大规模并行开发(特性分支并行实现)

工作流

  1. 任务分解 — Hermes 理解需求,将任务拆分为可执行切片
  2. 远程调用 — 通过 opencode --attach 发送指令到 max2:4096
  3. 代码生成 — opencode 在工作机进行 AI 推理,直接读写本地项目文件
  4. 结果回收 — 状态和日志通过返回流回到 Hermes
  5. 交付 — Hermes 审阅结果,整合交付用户

数据流路径

Hermes => [Tailscale] => max2:4096 => AI + 项目 => 结果

注意事项

  • opencode 新版本(v1.15+)端口动态分配,不支持 --port;如果 4096 能固定,可能是旧版或自行包装
  • 务必设置 OPENCODE_SERVER_PASSWORD 环境变量保护 serve 端口
  • Tailscale userspace 模式仅支持出站连接,不支持入站 — 从工作机主动连 Hermes 不可信