coding-council
v0.1.1
Published
Multi-agent coding council CLI for independent review and analysis
Maintainers
Readme
Coding Council
coding-council 会让多个独立 AI Agent 针对同一个编码或分析任务并行工作,并为每个 Agent 写出一份独立结果文件。
安装
使用已发布包:
npm install -g coding-council
coding-council --help从源码安装:
npm install
npm run build
npm link链接后,此包提供的全局命令是:
coding-council --help
coding-council --version第一次使用默认场景前,需要先初始化本地场景模板:
coding-council config init
coding-council anything --prompt "Summarize this repository"Provider 默认值
场景配置里的 runner 可以省略 baseUrl。运行时会先读取对应 provider 的 base URL 环境变量,若不存在则使用官方默认地址。
runner 的 apiKey 解析规则是:先按环境变量名解析,再按直接 API key 字符串解析。
像 AI_GATEWAY_API_KEY 这种环境变量名形式的值必须在环境中配置;直接 API key 应写成真实 key 字符串。
| provider | base URL 环境变量 | API key 环境变量 | 官方默认 base URL |
| --- | --- | --- | --- |
| openai | OPENAI_BASE_URL | OPENAI_API_KEY | https://api.openai.com/v1 |
| anthropic | ANTHROPIC_BASE_URL | ANTHROPIC_API_KEY | https://api.anthropic.com |
| deepseek | DEEPSEEK_BASE_URL | DEEPSEEK_API_KEY | https://api.deepseek.com |
| kimi | KIMI_BASE_URL | KIMI_API_KEY | https://api.kimi.com/coding |
| moonshot | MOONSHOT_BASE_URL | MOONSHOT_API_KEY | https://api.moonshot.ai/v1 |
| glm | GLM_BASE_URL | GLM_API_KEY | https://open.bigmodel.cn/api/coding/paas/v4 |
| zai | ZAI_BASE_URL | ZAI_API_KEY | https://api.z.ai/api/coding/paas/v4 |
| xiaomi | XIAOMI_BASE_URL | XIAOMI_API_KEY | https://api.xiaomimimo.com/v1 |
| openrouter | OPENROUTER_BASE_URL | OPENROUTER_API_KEY | https://openrouter.ai/api/v1 |
| vercel | AI_GATEWAY_BASE_URL | AI_GATEWAY_API_KEY | https://ai-gateway.vercel.sh |
| vercel-ai-gateway | AI_GATEWAY_BASE_URL | AI_GATEWAY_API_KEY | https://ai-gateway.vercel.sh |
场景
场景位于 ~/.coding-council/scenes/<scene-id>/。可以通过 CODING_COUNCIL_HOME 指定其他配置根目录。
运行命令只加载本地场景,不会自动复制默认模板;使用默认场景快捷命令前,请先初始化一次。
coding-council config init
coding-council scene list
coding-council scene list --json
coding-council scene show review
coding-council scene show review --full目录结构:
~/.coding-council/
scenes/
anything/
scene.json
prompt.md
review/
scene.json
prompt.md
plan-analysis/
scene.json
prompt.mdscene.json 只描述结构,具体提示词放在 Markdown 文件里。
coding-council config init 会把默认场景模板复制到本地目录。使用 --force 可以用包内模板覆盖本地默认场景。
{
"id": "review",
"title": "Review",
"description": "Multi-model code review.",
"rounds": 3,
"runners": [
{
"id": "claude",
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"apiKey": "ANTHROPIC_API_KEY"
},
{
"id": "deepseek",
"provider": "deepseek",
"model": "deepseek-v4-flash",
"apiKey": "DEEPSEEK_API_KEY",
"baseUrl": "https://api.deepseek.com"
}
],
"promptFile": "prompt.md"
}没有 Leader 阶段,也没有 leader-prompt.md。一个场景会为每个 Agent 写出一份独立结果文件。
运行场景:
coding-council review
coding-council review --cwd /abs/repo
coding-council review --cwd /abs/repo --run-dir /tmp/review-run
coding-council review --cwd /abs/repo --rounds 5
coding-council anything --cwd /abs/repo --prompt "Summarize this repository"
coding-council anything --cwd /abs/repo --prompt /abs/task.md
coding-council anything --cwd /abs/repo --prompt-file /abs/task.md
coding-council plan-analysis --cwd /abs/repo --prompt /abs/plan.md
coding-council plan-analysis --cwd /abs/repo --prompt "Review this rollout plan"初始化后的默认 anything 场景有一个空的可复用提示词,适合把全部任务说明通过 --prompt 传入的临时运行。
如果一个空提示词场景没有传入 --prompt 或 --prompt-file,命令会在启动任何 Agent 前失败。
初始化后的默认 test 场景会要求 Agent 输出当前一级目录和文件列表。它使用这些 Vercel provider 模型:
deepseek/deepseek-v4-prominimax/minimax-m3xiaomi/mimo-v2.5-pro
coding-council test --cwd /abs/repocwd 默认是命令执行时所在目录。场景命令不接受 --input;任务说明应放在 prompt.md 中。
--rounds <n> 只覆盖当前运行的场景轮数,不修改场景配置。
--prompt <text-or-file> 会把本次运行的额外内容加入每个 Agent 的 prompt。存在的相对路径会基于 cwd 解析;绝对路径必须存在;非文件值会当作纯文本。
--prompt-file <file> 是严格文件模式,文件不存在时会失败。
交互式终端会打开 TUI,展示 session 状态、实时 AI 文本、简洁工具活动和最终输出写入提示。使用上下方向键或 j/k 切换 session,使用 Page Up/Page Down 滚动,使用 / 搜索当前输出,使用 Ctrl-C 取消全部运行中的 Agent。运行完成后,TUI 会停留在结果浏览模式,方便继续查看输出;按 q 退出。非 TTY 环境会输出简洁进度文本。
如果 Agent 启动后 2 分钟内没有任何 AI 文本、工具活动或输出写入提示,只有该 Agent 会被标记为失败。失败原因会写入它的 logs/<session>.log 和 status/<session>.json。
运行结束后,coding-council 会打印运行目录和每个成功 Agent 的输出路径:
Run dir: /tmp/coding-council-review-a1b2c3
Summary: /tmp/coding-council-review-a1b2c3/summary.md
Outputs:
round-1-claude: /tmp/coding-council-review-a1b2c3/outputs/round-1-claude.md
round-1-deepseek: /tmp/coding-council-review-a1b2c3/outputs/round-1-deepseek.mdsummary.md 包含成功/失败数量、耗时、每个 session 的状态、输出路径和输出文件大小。
运行目录结构:
/tmp/coding-council-review-a1b2c3/
manifest.json
summary.md
prompts/
outputs/
logs/
status/Agent 上下文
场景运行会在 <run-dir>/prompts/ 下为每个 Agent 生成一个输入文件。文件结构会把本次运行的用户材料放在可复用场景规则前面:
# Task
Complete this scene run using the target material, scene instructions, and workspace context.
# Target Material
Source: /abs/plan.md
<来自 --prompt 文件的内容,或 --prompt 文本文字>
# Scene Instructions
<来自场景 prompt.md 的内容>
# Workspace
cwd: /abs/repo
# Agent Session
Scene: Review
Run ID: round-1-deepseek
Round: 1 of 3
Runner: deepseek (vercel/deepseek/deepseek-v4-pro)
# Output Contract
Write your final result to: /tmp/coding-council-review-xxx/outputs/round-1-deepseek.md如果 cwd 根目录下存在 AGENTS.md,coding-council 会在启动时读取它并注入 system prompt。这个根 AGENTS.md 可以是 symlink,也可以解析到 cwd 之外。
coding-council 会从以下位置加载 skills:
cwd/agents/skills~/.agents/skills
Skills 会以名称、描述和文件位置的形式暴露。只有当 Agent 调用 Skill 工具时,完整 SKILL.md 内容才会被读取。
安全模型
Coding Council 是本地自动化工具。Agent 可以获得文件工具和 Bash 工具,所以运行自定义场景前应先审查场景内容。
- API key 应通过
AI_GATEWAY_API_KEY这类环境变量提供;避免把字面量凭据提交进 scene 文件。 - 运行时默认从
~/.coding-council/scenes加载本地场景。只有在明确想用包内模板覆盖本地默认场景时,才运行coding-council config init --force。 - 文件工具会基于配置的工作区和输出路径校验读写路径。
- Bash 命令在本机运行。工作目录变更只有在仍位于配置工作区内时才会持久化。
- 默认运行产物会写入平台临时目录;也可以通过
--run-dir指定目录。
漏洞报告和支持版本策略见 SECURITY.md。
工具
Agent 会收到:
ReadBashWriteEditListFindGrepExistsMkdirDelete- 有 skills 时还会收到
Skill
不会暴露 web search 工具。
开发
npm install
npm run check
npm test
npm run build贡献前请阅读 CONTRIBUTING.md。CI 会在 Node 22.x 和 24.x 上运行类型检查、测试和构建。
Tokens
默认每个模型的最大输出 token 限制是 65536。可以在场景 runner 配置里用 maxTokens 覆盖。
许可证
MIT。见 LICENSE。
