内容
# 统筹委员会
[](LICENSE)
[](package.json)
用于 **Claude 代码**、**Grok CLI** 和 **AGY CLI** 的本地多统筹编排 —— 生成不同供应商的 AI 编程代理作为 **可见终端工作器**,在它们之间传递上下文,并在一个 2×2 网格中观察它们的工作。
**统筹委员会** 管理任务 + 共享上下文。**统筹** 管理智能。**cmux** 管理可见性。
```
您 + Claude(计划) ──spawn──► AGY(探索)/ Grok(代码)
▲ │
└──────── 结果 + 通知 ─────┘
(cmux 中的可见分割)
```
## 指南
| 文档 | 内容 |
| --- | --- |
| **[docs/SETUP.md](docs/SETUP.md)** | 安装、守护进程、cmux、Claude MCP、插件、配置、故障排除 |
| **[docs/USAGE.md](docs/USAGE.md)** | 角色、CLI/MCP、探索→代码流程、**2×2 布局**、自动关闭 |
| **[docs/ORCHESTRATOR.md](docs/ORCHESTRATOR.md)** | 任意统筹作为顶级统筹 — AGENTS.md/GROK.md 代码段、路由优先级 |
## 要求
| 工具 | 角色 | 备注 |
| --- | --- | --- |
| [Node.js](https://nodejs.org) 22+ | 运行环境 | 使用 `node:sqlite` |
| [cmux](https://github.com/manaflow-ai/cmux) | 可见性 | 推荐 — 工作器的分割/选项卡 |
| Claude 代码 | 统筹/工作器 | 可选 |
| Grok CLI | 工作器 | 可选,`grok login` |
| AGY CLI | 工作器 | 可选 |
只有您实际路由到的统筹才需要安装 — 任意一个都可以作为顶级统筹 ([docs/ORCHESTRATOR.md](docs/ORCHESTRATOR.md))。
## 快速开始
```bash
git clone https://github.com/dorukanc/harness-council.git
cd harness-council
npm install && npm run build
npm link # 或:export PATH="$PWD/bin:$PATH"
council setup
council daemon start
council spawn --role explore "映射身份验证系统"
council spawn --role code --effort high "实现速率限制"
council list
council result <job_id>
```
## 在 cmux 中看到的内容
默认布局是一个 **2×2 网格分割**,然后是 **选项卡** 如果有更多工作器启动:
1. 第一个工作器 → **向右分割**
2. 下一个 → **向下分割**
3. 最多 **4** 个工作器窗格(2×2)
4. 更多 → **选项卡** 在工作器窗格上
当任务 **成功完成** 时,其表面 **自动关闭** 以便为下一个工作器腾出空间。**失败** 的任务保持打开以便检查。
```toml
[display]
layout = "grid"
grid_max = 4
close_on_complete = true
close_on_failed = false
```
## Claude 代码
MCP(推荐):
```json
{
"mcpServers": {
"harness-council": {
"command": "council",
"args": ["mcp"]
}
}
}
```
可选插件:`plugins/claude-code`(技能 + `/spawn` + 停止钩子)。详情见 [docs/SETUP.md](docs/SETUP.md)。
在用户范围内注册 MCP 服务器一次,**每个项目都无需额外设置** — 不需要 CLAUDE.md 行。`council-runtime` 技能在您请求委托时自动加载。
## 项目特定覆盖(可选)
仅当仓库应与默认路由不同时:
```bash
council init # 写入 .harness-council.toml + CLAUDE.md 块
council init --file AGENTS.md --no-toml
```
两次写入都是幂等的 — 重新运行会更新 `<!-- harness-council:start -->` / `<!-- harness-council:end -->` 之间的托管块,并将文件的其余部分保留不变。生成的 TOML **完全注释**:它记录了项目当前解析的内容,并从 `~/.harness-council/config.toml` 继承,直到您取消注释某个键。
## 默认角色
| 角色 | 统筹 | 目的 |
| --- | --- | --- |
| `plan` | claude | 规划 |
| `code` | grok | 实现 |
| `explore` | agy | 廉价侦察/研究 |
| `review` | grok(只读) | 第二次通过 |
在 `~/.harness-council/config.toml` 或项目 `.harness-council.toml` 中配置。
## 架构
```
council CLI / MCP → 本地守护进程 → SQLite 任务 + 上下文存储
→ 适配器(claude | grok | agy)
→ cmux 网格布局 + 自动关闭
```
## 开发
```bash
npm test
npm run typecheck
npm run build
npm run council -- setup
```
## 守护进程如何与 cmux 通信
cmux 的默认套接字身份验证(`cmuxOnly`)验证 **进程祖先**,因此分离的守护进程永远无法打开分割。当从 cmux 内部启动时,守护进程因此在其自己的 **`council · daemon` 选项卡** 中运行;关闭该选项卡会停止它。在 cmux 之外,一切仍然无头地工作。
## 状态
v0.1 — 守护进程(cmux 选项卡托管)、CLI、适配器、**网格布局**、**自动关闭**、MCP、Claude 插件(本地市场安装)、与统筹无关的文档。
## 贡献
欢迎提出问题和 PR。在提交之前:
```bash
npm run typecheck && npm test
```
添加新的统筹故意保持小型:实现 `src/adapters/` 中的 `HarnessAdapter` 接口(二进制解析、就绪性、命令构建、结果解析),并在 `src/adapters/index.ts` 中注册它。
## 许可证
[MIT](LICENSE)