
舰队控制平面在孤立的 Git / JJ 工作树中运行编码工人(OpenCode v2 服务器),允许人工通过聊天侧边栏引导一个长寿命的 Director 会话,并对每个工人进行门禁......
概览
舰队控制平面在独立的 Git / jj 工作树中运行编码工人(OpenCode v2 服务器),允许人工从聊天侧边栏引导一个长寿命的 Director 会话,并将每个工人差异通过固定的人类密钥绑定为 Ed25519 签名。一个暗色模式的 WebUI 通过五个用户体验支柱显示整个舰队。 需求:Bun 1.4.2、Git 和 Opencode CLI(v2,opencode serve)在 PATH 上配置了提供者。可选:搭载 JetStream 的 NATS 服务器。 调度员标志(也在调度员/src/main.ts的头部中记录): 1. 消息发送到一个长期存在的OpenCode会话(agent director),该会话在仓库中启动,拥有自己的独立OpenCode数据库。回复会在聊天中显示。卡片仅由Director发出的围栏区块创建,并通过zod验证(严格;未知字段、错误的DEP或无效JSON不生成任何东西,并在聊天中报告): 任务 [{“key”:“api”,“title”:“Query API”,“objective”:“...”,“paths”:[“src/api/”],“acceptance”:[“...
概述(AI 翻译)
舰队控制平面运行编码工人(OpenCode v2服务器)
孤立的Git / jj 工作树,允许人类引导一位长寿命的Director
会话来自聊天侧边栏,每个工作人员都被关在一个后面。
Ed25519 签名,来自固定的人类密钥。一个暗模式 WebUI 显示
整个车队通过五大用户体验支柱。
跑它
需求:Bun 1.4.2、Git 以及 opencode CLI (v2, [opencode serve)
在PATH上,配置了提供者。可选:一个NATS服务器,且
捷流。
调度员标志(也在dispatcher/src/main.ts的头部中说明):
| 旗帜 / 环境 | 默认 | 含义 |
|---|---|---|
--repo / FLEET_REPO |
cwd | 舰队使用的仓库 |
--state-dir / FLEET_STATE_DIR |
~/.local/state/agency-control-plane |
SQLite board + 工作树寄存器 ([dispatcher.db, WAL, busy_timeout=15000), worktrees/, audit.jsonl, human.pub |
--port / FLEET_PORT |
7600 |
环回端口(仅绑定127.0.0.1) |
--human-pub |
/human.pub |
置顶的人类公钥。缺少或无效的→批准被禁用,批准路径回答为503(失败关闭) |
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
Agency Control Plane — Fleet Dispatcher Daemon + High-Fidelity WebUI
The Fleet Control Plane runs coding workers (OpenCode v2 servers) in
isolated Git / jj worktrees, lets a human steer a long-lived Director
session from a chat sidebar, and gates every worker diff behind an
Ed25519 signature from a pinned human key. One dark-mode WebUI shows the
whole fleet through five UX pillars.
Run it
Requirements: Bun 1.4.2, Git, and the opencode CLI (v2, opencode serve)
on PATH with a provider configured. Optional: a NATS server with
JetStream.
bun install --frozen-lockfile --ignore-scripts
# 1. The human approval key (once). Same format as epistemic-factory es-core:
# human.key.enc (scrypt + AES-256-GCM sealed Ed25519 key, 0600) + human.pub.
bun run keygen -- --out ~/.local/state/agency-control-plane
# Already have an es-core key? Point the dispatcher at it instead:
# --human-pub /path/to/human.pub (or put human.pub in the state dir).
# 2. Build the WebUI and start the dispatcher on the repository to work on.
bun run build:web
bun run dispatcher -- --repo /path/to/repo --port 7600
# (or `bun run serve -- --repo ...` to build and start in one go)
# 3. Open http://127.0.0.1:7600 — the UI and /api share one loopback origin.
Dispatcher flags (also documented in the header of dispatcher/src/main.ts):
| Flag / env | Default | Meaning |
|---|---|---|
--repo / FLEET_REPO |
cwd | Repository the fleet works on |
--state-dir / FLEET_STATE_DIR |
~/.local/state/agency-control-plane |
SQLite board + worktree register (dispatcher.db, WAL, busy_timeout=15000), worktrees/, audit.jsonl, human.pub |
--port / FLEET_PORT |
7600 |
Loopback port (never binds anything but 127.0.0.1) |
--human-pub |
/human.pub |
Pinned human public key. Missing or invalid → approvals are disabled and the approval routes answer 503 (fail closed) |
--worker-cmd / FLEET_WORKER_CMD |
opencode serve --port 0 --hostname 127.0.0.1 |
Worker server command (JSON array or words) |
--director-cmd / FLEET_DIRECTOR_CMD |
worker command | Director server command |
--director-agent |
director |
OpenCode agent of the Director session (define it in your OpenCode config) |
--task-agent |
server default | OpenCode agent for task sessions |
--fleet-cap |
4 |
Max concurrent workers (scheduler cap) |
--per-expert-cap |
fleet cap | Max concurrent workers per expert when its role pack sets no maxConcurrent |
--roles-dir / FLEET_ROLES_DIR |
unset | Role packs for expert tasks (see Role packs below) |
--tier-models / FLEET_TIER_MODELS |
unset | JSON {"tier-1-opencode": "provider/model", "tier-2-commercial": …, "tier-3-local": …}. New worker sessions run on the active tier’s model; unset tiers use the worker’s default model |
--task-timeout-ms |
30 min | Per-task worker timeout |
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add heretek-ai/agency-control-plane