关于 The High Council
The High Council 是一个 CLI 和 MCP 服务,通过模型提案、辩论和分层审查,将项目构想转化为计划。它记录分歧,并生成包含验收检查项、供编码 Agent 使用的实施交接文档;用户需自备 API 密钥。
主要功能
- 01规划前制定验收标准
- 02模型盲提案
- 03记录辩论与异议
- 04三层计划审查
- 05附带检查项的实施交接
适用场景
- 01审查功能或项目计划
- 02准备编码 Agent 的实施说明
- 03比较模型提案并保留不同意见
MCP 相关
它以 MCP 服务运行,让编码 Agent 会话驱动规划流程;同一项目也提供 CLI。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y the-high-councilANTHROPIC_API_KEY密钥Your own Anthropic API key. Needed only by chains that seat Anthropic models.OPENAI_API_KEY密钥Your own OpenAI API key. Needed only by chains that seat OpenAI models.GOOGLE_API_KEY密钥Your own Google (Gemini) API key. Needed only by chains that seat Google (Gemini) models.MISTRAL_API_KEY密钥Your own Mistral API key. Needed only by chains that seat Mistral models.DEEPSEEK_API_KEY密钥Your own DeepSeek API key. Needed only by chains that seat DeepSeek models.GROQ_API_KEY密钥Your own Groq API key. Needed only by chains that seat Groq models.TOGETHER_API_KEY密钥Your own Together API key. Needed only by chains that seat Together models.COHERE_API_KEY密钥Your own Cohere API key. Needed only by chains that seat Cohere models.OPENROUTER_API_KEY密钥Your own OpenRouter API key. Needed only by chains that seat OpenRouter models.ZAI_API_KEY密钥Your own Z.ai API key. Needed only by chains that seat Z.ai models.MAX_USD_PER_RUNThe figure the spending-limit screen suggests for a paid run; the limit is the number the person types. Unset, a command-line run suggests nothing, and when a client sends no max_usd the MCP server suggests the lesser of 7 and COUNCIL_MAX_USD_LIMIT where that is set. For a chain with no paid seat it is the run's ceiling (7 when unset). A run stops before any stage that could pass its limit.COUNCIL_MAX_USD_LIMITA hard per-run ceiling in US dollars that the MCP client cannot raise or remove (max_usd above it, or "none", is refused). Set it to the same value as MAX_USD_PER_RUN so the suggested figure and the ceiling are the same.COUNCIL_WORKDIRFolder for task files and run output. Default: the directory the client starts the server in.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
19收录的工具列表 · 更新于 3 天前
此工具无需参数。
详细介绍
THE HIGH COUNCIL
“开端之时,最重要的是谨慎细致地确保各方平衡”
— Frank Herbert,《Dune》
你带来一个新项目、功能或任何类型更新的想法。
THC 会围绕你的想法及其背后的软件工程展开辩论。
经过多轮辩论和 3 层评审,他们能发现许多连你最强大的初稿撰写大模型都未曾想到的问题。
目标是让所有人齐心协力、和谐共事、彬彬有礼。实际效果的具体数据尚未衡量。
0.8.3 版本带来:递归议会——“计划之中的计划之中的计划”
网站 · 定价 · AI 阅读版(全文) · 更新日志 · 已知限制
30 秒快速体验
npx the-high-council council demo
无需密钥,无需联网,费用为 $0。将其作为 MCP 服务添加到 Claude Code:
claude mcp add council -- npx -y the-high-council council --mcp
对于 Claude Desktop,请从 Releases 下载 .mcpb 捆绑包(the-high-council-<version>.mcpb)。
目录
- 你的前十分钟 · 本文用词
- 工作原理 · 使用程序读取一次运行
- 要求 · 设置 · 快速开始(CLI) · 快速开始(MCP)
- 支出上限 · 定价 · 链
- 构建过程 · 技能
- 已知限制 · 隐私 · 无障碍 · 报告错误 · 许可证
- AI 阅读版(全文) · 故障排除 · Agent 技能 · 角色设定 · 参与贡献
你将获得什么
- 先制定标准,再开始规划。 你的请求会先被整理成一份简短的是/否检查清单,规划必须通过这些检查。
- 盲提案与有记录的辩论。 每个实验室先在看不到其他提案的情况下提交提案,然后匿名阅读其他提案,并发表支持意见、反对意见或合并方案。之后,每位作者都会公开决定保留、修改或撤回自己的提案。
- 评审与修订。 评审小组会根据标准检查草案;未通过的检查会将草案退回修订。规划链会分三层进行评审。尚未解决的反对意见会保留在记录中;不会被平均掉。
- 交接以便执行。
HANDOFF.md面向负责执行计划的人编写:其中包含验收检查和编码 Agent 要遵循的指示;规划链还会包含里程碑。
每次运行都会生成一个文件夹 runs/<id>/:
| 文件 | 内容 |
|---|---|
deliverable.md | 计划 |
BOARD.md | 完整辩论记录:每条发言和每次撤回 |
HANDOFF.md | 供编码 Agent 使用的执行说明和验收检查 |
report.json | 以结构化格式记录相同的辩论内容,以及令牌和费用统计 |
关于本项目的主张与非主张。 本仓库公开了实现机制:规划链、席位名单和阶段顺序。在规划 0.8.3 更新的那次运行中,我们确实让前沿 AI 对 Council 进行了测评:计划在除一项之外的所有测评指标上都有所提升,而唯一未提升的指标是计划变得更长、更难阅读。本仓库具体实现的是,让模型之间的分歧清晰可见并留有记录,而不是被平均掉——你可以查看谁反对了什么、谁在辩论后撤回了提案,以及谁坚持了自己的立场。
首次运行
快速入门规划链 plan-default-opro-council 只需一个 OpenRouter API 密钥:一个可以访问多家实验室模型的账户。在你运行命令的文件夹中创建一个名为 .env 的文件,并将密钥放进去:
OPENROUTER_API_KEY=your-key-here
将 .env 添加到 .gitignore(如果你的想法属于私密内容,也将 runs/ 添加进去)。然后:
npx the-high-council init
npx the-high-council doctor
init 会写入 tasks/my-first-task.md。将其编辑成你自己的想法,用简单直白的语言说明你想要什么、有哪些重要约束,以及怎样才算完成。先估算费用,然后运行:
npx the-high-council --task tasks/my-first-task.md --chain plan-default-opro-council --dry-run
npx the-high-council --task tasks/my-first-task.md --chain plan-default-opro-council --max-usd 10
第一条命令不会产生任何费用。只有在屏幕上输入支出上限后,付费运行才会开始;--max-usd 10 会将 $10 设为建议值。运行也可能暂停,等待你通过 Claude Code 会话或亲自提供答案;两个评审层的反对意见来回交锋就是一种会触发暂停的情况。
如果运行达到上限而停止,已付费完成的所有阶段都会保留。运行 npx the-high-council --resume runs/<id> 即可继续:屏幕会要求输入一个高于当前已统计费用的新总额,已完成的阶段不会再次收费。
与编码 Agent 搭配使用
可作为 MCP 服务运行(例如 Claude Code 这样的编码 Agent 会话可驱动该服务),也可作为 CLI 运行。使用你自己的 API 密钥。我们不会转售任何内容,也不会替你托管服务;你的密钥只会发送给你选择的提供方,绝不会发送给我们。
Claude Code 的配置方式:
claude mcp add council -- npx -y the-high-council council --mcp
也可以将其用作 Claude Code 插件,它会注册同一服务,并安装 skills/ 中的技能:
claude plugin marketplace add muad-yasin/the-high-council-mcp
claude plugin install the-high-council@the-high-council
**Claude Desktop:**从 Releases 下载并打开 the-high-council-<version>.mcpb。
其他 MCP 客户端 · 插件设置与密钥 · 独立二进制文件
定价
每条已发布链每次运行的成本,单位为美元。代码会在发送任何内容之前,根据已发布的价格表和链自身的规模估算,计算出预期费用和最高估算费用。council doctor 会打印相同的数据;--dry-run 会为你自己的任务估价,任务越长,费用越高。最高估算费用按每次计划调用都用满其全部输出额度、并用完所有允许轮次来计算。它不包括重新询问和重试,因此并非费用上限:你输入的限额才是停止运行的依据。实测费用是实际运行的成本;– 表示尚未报告任何运行数据。Claude Code 会话回答时所用的席位在此处费用为 $0,因为它们使用你自己的订阅。两个 advise- 项显示建议附加功能本身显示并强制执行的费用:简报为其 48,000 字符上限,而最高估算费用包含对被截断回复的一次重试。
| 链 | 预期费用 | 最高估算费用 | 实测费用(实际运行) |
|---|---|---|---|
| 规划链 | |||
plan-mini-council | $1.51 | $5.27 | – |
plan-medium-council | $7.16 | $23.04 | – |
plan-high-council | $25.89 | $272.24 | – |
| 变体 | |||
plan-claude-council | $0.00 | $0.00 | – |
plan-mini-council-sol-session | $1.41 | $4.46 | – |
plan-default-opro-council | $2.95 | $16.26 | – |
| 中国实验室替代方案 | |||
plan-china-mini-council | $1.69 | $6.15 | – |
plan-china-medium-council | $5.78 | $17.71 | – |
plan-china-high-council | $18.64 | $175.72 | – |
| 建议附加功能 | |||
advise-single | $0.08 | $1.32 | $0.03–$0.15(3 次运行) |
advise-standard | $0.75 | $1.40 | – |
| 其他 | |||
local-ollama | $0.00 | $0.00 | – |
verify | $0.48 | $3.20 | – |
daily7-sub-a | $1.39 | $5.06 | – |
使用递归 Council 时,按默认限制运行的树最多会运行 12 个 Council(根节点和 11 个子计划),每个都使用你为其指定的链;因此,如果全程使用同一条链,费用最高可达该链所列费用的 12 倍。council tree start --dry-run 会打印你自己的任务和链对应的费用预测,而你输入的限额会停止整棵树的运行。
运行过这些链之一?CONTRIBUTING.md 说明了如何向我们提交费用数据。
递归 Council:计划之中的计划之中的计划
0.8.3 新增。 计划中的一个里程碑可以拥有自己的 Council,其里程碑也可以继续嵌套,因此运行会在一个根计划下形成一棵树。你只需输入一次整棵树的支出限额,所有子计划都将在此限额下运行。子计划会继承父计划委派给它的验收标准,且不能缩小适用于整棵树的验收标准。审批以及运行陷入停滞时作出的决定都会被记录,并注明每项决定由谁作出:你,或负责驱动整棵树的 Claude Code 会话。
在花费任何费用之前,为整棵树估价:
npx the-high-council tree start --task tasks/my-first-task.md --chain plan-mini-council --child-chain daily7-sub-a --dry-run
已知限制,如实说明
- 评审组只签署一份草稿;后续阶段可能会更改你收到的内容,而且不会有人重新审阅。 争议处理阶段、签署后的质疑阶段和最终编辑,都是最后一次审阅后由模型进行的编辑;异议和冷读区块则由运行框架编写。运行会标明这一点,但不会修正:
report.json包含signed_text和delivered_text(哈希、same_as_signed、changed_by);适用时,BOARD.md会说明情况;如果模型在评审组签署后更改了文本,HANDOFF.md开头会显示横幅(未获评审组签署的运行仍会保留自己的“not a signed-off plan”横幅)。运行框架添加的冷读或异议区块会列在delivered_text.harness_notes中,且不会显示横幅。评审组不会重新审阅更改后的文本(每次运行都要为此额外付费),如果交付文本与签署文本不同,run_status会在“every lab signed off”之后说明这一点(report.json中的delivered_text.same_as_signed)。 - 提前结束需要由你自己的会话担任修订者。 在分层链中,修订者可以在回复末尾写上
EARLY-FINISH: <why>,然后由顶层决定运行是否就此停止;这只有在修订者席位是你的 Claude Code 会话(external)时才有效。修订者是 API 席位的链不能提前结束:这行文字会从其文本中移除,日志也会说明原因。提前结束不代表达成一致:passed为 false,运行以 22 退出,所有未解决的异议都会作为具名构建任务列在HANDOFF.md末尾。 - 支出上限按最坏情况强制执行,而非依据预测:将整个提示词按输入计费,再将席位的全部
maxTokens额度按输出计费(对于 Anthropic 席位,还要加上它们可能进行的一次重试所用的较高上限)。实际阶段几乎不会花这么多钱,因此运行可能会在仍有余量时停止。这是有意为之的权衡——恢复运行即可:付费运行会在限额页面要求输入新的、更高的总额(没有付费席位的链则使用--max-usd)。 - 试运行(
--dry-run,MCPdry_run)只估算任务本身,不会读取--context文档,因此对于带有上下文的运行,估算会偏低。支出上限不受影响:每次调用前都会检查包括上下文在内的每个实际提示词。 - 如果席位所用模型既不在
src/pricing.json中,也不在项目的pricing.user.json中定价,就无法对其应用支出上限,因为上限会将对它的每次调用都按 0 美元计算。从 0.8.2 开始,运行会在发送任何内容前拒绝此类席位(退出码 5;消息会指出席位,并从 0.8.3 起说明解决方法:在项目文件夹的pricing.user.json中为其添加一行,例如{ "openrouter/vendor/model": { "in": 1.0, "out": 4.0 } },单位为每百万个 token 的美元价格;你添加的行可以补充缺失价格或提高随附价格,但不能降低随附价格;无法完整读取的文件会被整体拒绝),而--dry-run也会以 0 美元显示同样的拒绝信息。mock、external和ollama席位不受此限制:对于任何模型名称,ollama都明确按 0 美元定价,因为它确实可以免费运行。仍需注意:上限的准确性取决于价格表(价格表有日期,过期时试运行会提示);如果一个模型代替已定价模型作答(extra.models中的 OpenRouter 备用模型),则会按已定价席位的价格收费,这一价格可能与备用模型自身的价格不同。 - 如果调用在到达提供商后失败——例如读取 200 回复时连接断开、200 响应携带的正文不是 JSON,或请求等待响应头超时——则不会重试,因为这次生成很可能已经计费。无法读取实际用量,因此会按最坏情况预估值计入每次运行的上限,并记录为
superseded/<label>.charge-<n>.usage.json;council --spend和恢复运行时都会将其计入。 - 一些托管推理模型会在写出任何答案前,触及远低于席位自身上限的提供商端推理上限(2026-09-23 观察到:通过 OpenRouter 调用的
deepseek/deepseek-v4.1-flash,28 次调用中有 6 次在约 4.2k 个 token 时停止,全部用于推理,低于 36k 上限)。提高上限无法解决此问题,因此此类回复会记录为REASONING_EXHAUSTED,且不会重试:该席位弃权,阻碍全体一致,且绝不会被视为同意。是否为此调整链的推理设置,应由席位名单决定,而不是由运行框架代劳。 - Claude Code 插件从仓库根目录安装。
claude plugin validate .会通过,但有一条警告;claude plugin validate --strict .会因此失败:“CLAUDE.md at the plugin root is not loaded as project context”(该文件是本项目自己的指令,不属于插件)。单独的plugin/目录不会有此问题;该布局在 0.8.1 中被否决,并会随着插件目录列表一同恢复。关于 Claude Code 如何传递未设置的可选对话框字段,只在 Claude Code 2.1.289 上的一个临时插件中观察过一次(传递的是空字符串),并未在不同版本或 Claude Desktop 自带的客户端上验证。 - 推理字段依据提供商文档和 OpenRouter 的公开模型列表设置,并未通过实时调用测试(src/reasoning-table.json;其
asOf字段是读取日期)。如果提供商拒绝某个字段,该席位的调用会以提供商自己的错误失败;更改链后的首次实际运行才是实时测试。该表超过 60 天后会过期,届时发布测试会失败。当前推理能力较强的席位会更快耗尽输出上限;为简短回答(问题或标准阶段)设置的上限可能花在思考上:此类席位会以更高上限重试一次,超过限额后则记录为未作答。直接调用 Anthropic 时不会进行流式传输,因此重试上限为 64,000 个 token;目前尚未实现流式传输。 src/pricing.json中的价格是人工维护的标价。其asOf日期(2026-10-23:所有条目最近一次核实日期中最早的一天)会由council doctor和--dry-run显示,超过 60 天后会发出警告。如果模型的提供商已下架该模型或不再列出其价格,表中仍会保留原有数字,其所在行的_source会注明这一点:该日期记录的是读取日期,而非价格本身的日期。支出上限和所有估算都使用这些静态价格。它们只是估算,不是账单。提供商账单才是实际金额。已知价格会变动的行会带有expires日期(GPT-5.6 Sol 的促销价格至少持续到 2026-11-21;Gemini 3.8 Flash 和 Gemini 3.6 Flash 的价格会在 2027-01-01 翻倍):超过该日期后,council doctor和--dry-run会发出警告,但预估和上限仍使用旧价格,因此在更新价格表前可能会低估费用。- 已退役的
plan-highest-7(位于chains/outdated/)从未使用真实模型运行;plan-daily-7只运行过一次(2026-09-28),使用的是 2026 年 10 月 7 日重新设计前的席位名单。分层评审组的机制(层级、深度分析席位、多数意见保护)均未经过测量。其试运行价格只是预估值。 run_tests会将仓库自身的测试文件作为可信代码运行,不提供沙盒。 它属于可选择启用的席位工具(verify.tools中指定run_tests;随附链中没有任何一条使用它;只有链同时设置tools.seat_requests时,席位才能在阶段中途请求它)。从 0.8.2 开始,测试进程只能访问允许列表中的环境变量:PATH、HOME(USERPROFILE)、临时文件夹变量、LANG、LANGUAGE、LC_*、TERM、CI和 Windows 系统变量(SystemRoot、ComSpec、PATHEXT、WINDIR)。其环境中不包含提供商密钥,但测试代码仍然可信:它仍可读取父进程的环境和磁盘上的文件(例如/proc/<pid>/environ)。需要其他变量(例如数据库 URL)的项目测试将无法读取这些变量。测试仍可读取你能读取的所有文件、写入文件并使用网络,因此只应在你信任的仓库上运行。- MCP 工具的符号链接隔离尚未在 Windows 上测试。 从 0.8.2 开始,工具会拒绝包含符号链接的运行文件夹,并以
O_NOFOLLOW打开运行文件夹中的文件。Windows 不支持此标志,因此该平台的保护仅依赖lstat检查;而这只在 Linux 上测试过:没有在真实 Windows 机器上测试,打包的.exe在 Wine 下的冒烟测试也未覆盖此情况。 - 标记为
external的席位(所有规划链的决策者、除plan-default-opro-council外所有链的写作席位,以及通过你的 Claude 订阅或在plan-mini-council-sol-session中通过你的 ChatGPT 方案作答的席位)会暂停运行,直到有人为其作答;它们之所以按 0 美元计费,只是因为由使用订阅的 Claude Code 会话,或由使用你自己的方案的你,编写了答案。系统不会检查答案的作者。 - 包含许多评审组且轮次上限较高的链会很快变得昂贵:每轮都会向每个评审席位发出请求。运行前请先估算价格。
- 评审组签署通过,并不保证输出正确。这只意味着每个评审席位都依据明确列出的验收标准检查过内容,且未发现问题。含糊的标准会使签署毫无意义——运行质量在很大程度上取决于标准阶段的质量。
- 某些链会按设计暂停,以等待人工输入;这并不是卡住了。
- 审计日志(
audit.jsonl)可以检测被编辑的行或被截断的末尾,但如果没有 HMAC 密钥(默认情况),则无法检测整个文件被重写:任何能编辑文件的人都能重新计算所有哈希。如果日志必须具备防篡改能力,请将AUDIT_HMAC_KEY_FILE设置为一个保存在运行文件夹之外的密钥。 - 建议工具(
council_quote、council_advise)仍处于实验阶段;一次调用需要数秒(单个席位)到数分钟(一个评审组),而不是数毫秒,并且每次都会产生实际费用:报价会显示最坏情况价格和预期价格,调用不会突破其上限。简报会发送给外部评审组:预览会说明发送对象;其中的“ZDR-tagged by OpenRouter”措辞是 OpenRouter 对端点的路由标签,并不保证该主机会如何处理你的文本(其背后的表src/advice-retention.json是带日期的快照)。遮蔽功能只能识别已知格式(电子邮件、IBAN、银行卡、IPv4 地址、固定列表中的内部主机名后缀,以及/home、/Users和/srv下的用户路径),无法识别其他内容(IPv6 地址、/var/home、WSL 的/mnt/c/Users/...路径、.home.arpa、.fritz.box),也永远无法识别以文字形式写出的姓名、地址或密码。任何运行的运行文件夹都会保存工作文件夹的绝对路径(run.json、run.log、RESUME.md):提交运行文件夹就会公开该路径。审批步骤仅适用于council_advise:使用其他链调用write_task和start_run会在没有预览的情况下向评审组发送文本,只进行密钥扫描、个人数据检查(发现问题时会停止运行,除非你将COUNCIL_PII_GATE设置为warn)和支出上限检查。调用限额只约束建议工具,不约束通过 shell 直接运行council的情况;其使用记录保存在你的工作文件夹中。目前尚无测量结果证明来自其他评审组的建议能改善会话的表现。 - 出站密钥扫描只匹配密钥格式,即
src/secret-patterns.js中列出的格式;以普通文字写出的密码无法检测。运行前会检查输入中的通用格式(例如 URL 或赋值语句中包含的密码);模型生成的文本则只检查特征明显的密钥格式。 - 评审组顾问(
council_quote、council_advise)仅使用模拟提供商测试过;尚未通过真实提供商或客户端验证。 这些测试均不代表质量承诺;你可以自行设置上限进行实时测试。- U1:在真实 OpenRouter 请求中同时使用
zdr、data_collection和max_price。如果组合错误,请求会在生成前失败,费用为 0 美元,因此风险是调用被拒绝,而不是超支。 - U2:输出上限是否能约束全部三个评审组路由上的推理 token。报价中的上限是预估值,最终费用取决于提供商自己的计费方式。
- U3:计费超时是否会重试,并在同一笔预留费用中扣除两次。
- U4:真实客户端对 48,000 字符简报(上限)的审批提示会显示什么内容,以及等待审批是否会计入客户端的后台处理阈值。始终存在终端路径(
council gate answer)。 - U5:每个提供商如何对已中止的请求计费,以及真实客户端如何处理取消(测试会手动发送
notifications/cancelled)。 - U6:Sol 作为顾问时的实际输出长度和延迟,以及 GLM-5.3 作为顾问时的延迟。
- U7:在 SDK 协商的协议修订版下,取消的语义是什么(通用取消,不是较新的 stdio 要求)。
- U1:在真实 OpenRouter 请求中同时使用
- 合约记录(
council contract、contract_read、contract_amend)仅使用模拟提供商和模拟终端测试过。 起草调用从未使用真实模型进行(其措辞记录于 0.8.2,但只由模拟席位读取过)。当事人的回答只是增加操作阻力,并非强制约束:具备 shell 权限的 Agent 可以打开伪终端,就像使用council gate answer那样。合约是某人与构建会话指令之间的约定;它无法让构建会话遵守约定,也没有任何测量结果显示它能起作用。 - 审批门槛只是增加操作阻力,并非强制约束。 每次建议调用都需要有人通过终端或信息请求来响应审批,因此不支持脚本或无人值守使用:无法询问人员的客户端(无头 Claude Code、脚本)会收到
awaiting_approval,在有人通过终端响应前不会发送任何内容。终端响应可以由任何以你的身份运行的程序输入。门槛的日志只能显示篡改痕迹,不能防止篡改:最后一行之前的编辑会被检测到;最后一行、文件末尾以及同时重写日志和其视图则不会被检测到。 - 目前仍无法从外部停止规划运行(
council stop和客户端取消只能停止建议调用)。 advise-premium会将你的文本发送给没有零保留标签端点的评审组。 它在 0.8.3 中已退役至chains/outdated/(将它复制到你在COUNCIL_ADVICE_CHAINS_DIR中指定的文件夹即可使用)。它仅限public(操作员设置了该最低级别),且其最坏情况费用超过附加组件的默认单次调用限额,因此操作员必须提高限额才能使用。GPT-6 Astra 只能通过 OpenRouter 调用:没有订阅路由。发送预览背后的保留策略表是带日期的快照(src/advice-retention.json);预览中的措辞是 OpenRouter 的路由标签,不是保证。- 建议简报会写入运行文件夹(
runs/<id>/advice-brief.md),因此提交运行文件夹会公开简报。 advise-single的上限为 $1.32(其工具描述显示的最高估算值)。 该上限涵盖首次调用和一次针对截断回复的重试;单次调用的通常费用远低于此值。个人在自己的终端运行建议链不会经过审批门槛(gate: null);附加组件的金额限额及所选链也可以通过项目的.env设置(审计日志密钥AUDIT_HMAC_KEY和报价有效期COUNCIL_ADVISE_QUOTE_TTL_MS也一样):是否应拒绝此类设置尚无定论。单席位替换模型(Astra、Gemini)的输出上限固定。0.8.2 中新增或提高的三项价格仅通过试运行估算,未进行实时调用:Qwen3.8 Max 的上限为 36,000 个 token(模型按高于 high 的默认设置进行推理时,这是否足够尚未验证);当前为 1017 构建的 DeepSeek V4.1 Flash 上限设置为 360,000 个 token,只有部分零数据保留端点接受此值(9 个提供商中有 7 个,列表读取日期为 2026-10-23);GLM-5.3 Flash 的上限设置为评审组的 131,072 个 token,除一个外所有零数据保留提供商都接受此值(25 个提供商中有 24 个,列表读取日期为 2026-10-23);OpenRouter 是否会绕过不支持或拒绝该调用的端点,尚未验证。建议链本身没有时间限制,因此停止操作(council stop、客户端取消)仍需等待正在进行的调用结束,最长等待至 2 小时的请求期限。- 安全审查席位中的审查内容会被截断:
src/security-review.js会将审查者字段截断至 2,000 个字符,显示标记,但不作记录。 - 尚未在不区分大小写的文件系统(macOS、Windows)上测试。 关于
handoff.md和HANDOFF.md指向同一文件的修复(FX-9:handoff --from-run现在也会以独占创建方式写入,因此无论磁盘的大小写规则如何,都不会替换已有文件)以及工作文件夹路径检查,都只在 Linux 上测试过。0.8.1 和 0.8.2 均未在 Mac 或 Windows 机器上运行测试。 - 试运行的预期费用不包含所有上限。 规划链的预期费用按链自身的估算值计算评审者费用,而不是按其输出上限计算,因此 0.8.1 和 0.8.3 中较高的上限(DeepSeek V4.1 Flash 现为 393,216 个 token)只会显示在试运行的最高估算值和按阶段计算并与限额对比的预估值中,不会显示在预期费用中;预估值可能会在预期总费用之前停止运行。DeepSeek V4.1 Flash 在 393,216 个 token 上限下的速度未经测量,因此未知如此长的回复能否在 2 小时的请求期限内完成;被期限截断的调用仍会产生超时费用。
- 审批后启动失败仍会按完整上限计费。 如果有人批准了顾问运行,但之后运行无法启动(例如,项目
.env中指定的审计密钥文件无法读取),则审批已被使用,不会发送任何内容,但调用仍会按完整上限计入限额(advise-single:$1.32)。发生两次此类情况再加一次真实调用,就会超过 $3 的会话限额;之后六小时内建议功能都会被拒绝,但不会产生任何费用。 - **如果复制已批准运行的文件夹,一次审批可以启动两次运行:**审批绑定的是文本,而不是运行文件夹。
- 随附链中有一条使用 Gemini 2.5(
verify,通过直接 Google 提供商;已退役的us-only、plan-two-strong、seven、cheap和smo也曾使用它)。Google 已停止向新项目开放 Gemini 2.5,因此新用户在这些链上运行时,该席位很可能会失败;请改用包含其他席位的链,或更改该席位使用的模型。 - 如果直接 Anthropic 席位的思考过程耗尽了整个上限,其重试可能永远不会触发。 重试逻辑依赖回复的
usage中的思考 token 数量(output_tokens_details.thinking_tokens),而 Anthropic 的公开 Messages API 参考文档未列出该字段(思考 token 计入output_tokens);OpenRouter 会报告reasoning_tokens,因此通过单一提供商路由("transport": "openrouter")发送 Anthropic 席位时会触发重试。如果缺少该计数,达到上限后被截断的回复会按评审组常规截断规则重试(增加上限后再调用一次),而不是由此机制触发。尚未通过实时 API 验证。 - Agent 读取的某些运行信息未标记为不可信文本。
external_prompt会将外部席位的声明(claimed_by和contested_by,即同伴会话写入运行文件夹的字符串)作为普通字段返回,其中可能包含指令。list_runs和run_status会在untrusted_fields中标记运行标签、链名称、任务路径和日志行;external_prompt也会在其中标记提示词。这些字段均已标记。子 Agent 的阶段包会说明引用的文件属于数据。 - 审批调用的终端命令尚未通过
.mcpb路由运行过。 它会使用服务器自己的 Node 二进制文件和cli.js的绝对路径(或只使用独立二进制文件)。尚未检查能否从终端运行 Claude Desktop 内置的 Node;已安装council后,council gate answer始终可用。 - 如果进程在付费调用过程中被杀死,该调用会按最坏情况计费,而非按实际费用计费。 从 0.8.2 开始,请求发出前会先将调用的最坏情况费用写入
runs/<id>/spend-reservations.jsonl,调用返回后再写入结算行。如果进程在这两步之间结束(没有信号处理程序),提供商可能仍会对调用收费,但不会生成用量文件,因此未结算的预留金额会在恢复运行的上限、council --spend和支出报告中继续按最坏情况计算。没有命令可以清除它:该数值会偏高,只有删除运行文件夹后才会消失。任何有权限写入运行文件夹的人都能编辑该文件。非 ASCII 文本(例如中文、日文、韩文)的简报在规划链中的费用预估会偏低(按每个 token 对应四个字符计算);附加组件则按简报的字节数计价。 - **在 0.8.1 下暂停、且其链或提示词被 0.8.2 修改的运行,恢复时不会重放:**配置指纹或提示词哈希会发生变化(0.8.2 修改了七条规划链,以及所有链的标准提示词和评判提示词),因此 API 阶段需要重新付费;已经提供给外部阶段的答案也会被搁置并重新询问(在 0.8.0 下暂停、且其链被 0.8.1 修改的运行也一样)。请使用暂停时的版本完成此类运行,或重新启动运行。
- **按设计,
npm test会在特定日期变红:**2026-11-21(gpt-5.6-sol促销价格行)、2026-11-23(保留策略表超过 30 天未更新)、2026-12-10(src/pricing.json中的 OpenRouter 价格行超过scripts/refresh-openrouter-prices.mjs上次与 OpenRouter 价格列表对比日期 45 天)以及 2026-12-23(src/reasoning-table.json超过 60 天未更新;该文件于 2026-10-23 重新生成)。重新阅读相关页面并更新文件日期后,测试套件就会再次通过。直接提供商(Anthropic、OpenAI、Google 等)的价格行在_source中各自标有日期,不受此测试覆盖。 - 通过 Together 调用 DeepSeek V4 Flash 时,会根据 vLLM 的服务配置发送
chat_template_kwargs {thinking: true, reasoning_effort: "high"};未找到 Together 自己关于此模型的页面,因此尚未确认 Together 是否支持该值。 - 评审备注通道(0.8.3)尚未经过测量,而且存在试运行未显示的成本。 启用
reviewNotes后,每位评审者都可以在与裁决相同的 JSON 回复中,在每轮监督者轮次提出最多 3 条建议和 3 条改进意见。如果回复在备注中途被截断,会丢失一项签署意见(被截断的签署意见算作弃权),但已解析的异议仍会保留,因为备注与异议在同一条回复中;如果某个席位的回复在备注请求发出后被截断,该监督者轮次就不会再次向其请求备注。从监督者第 2 轮开始,每次评审者调用还会读取上一轮条目和写作者答复组成的记忆块:这是付费输入,两个试运行数字都未计入(每次调用最多 10000 个 token;按 2026-10-18 的表格价格,最坏情况下,plan-mini-council约为 $0.00,plan-default-opro-council约为 $0.00,plan-mini-council-sol-session约为 $0.02,plan-medium-council约为 $0.25,plan-high-council约为 $9.77,plan-china-mini-council约为 $0.00,plan-china-medium-council约为 $0.38,plan-china-high-council约为 $5.30);你输入的限额才是阻止费用继续增加的机制。试运行的预期金额会计算一轮监督者轮次条目对应的写作者答复费用,上限估算则会计算所有计划轮次的费用;如果交接时答复了数轮尚未答复的条目,读取的内容会超过预期金额的计算范围。在交接席位不是计划中的写作者的链中,该通道会增加一个阶段notes-answer;在 9 条规划链中,写作者的答复包含在交接中。只有 ID 完全相同的重复项会合并(ID 根据经过空白规范化的文本计算),而“已采纳”只是写作者的说法,没有任何机制会核查。 - OpenRouter 调用的价格限额依赖一条有文档记录的筛选规则和一次探测。 OpenRouter 的文档将
provider.max_price称为筛选条件,但没有说明当没有服务主机的价格低于或等于该限额时会发生什么。一次实际调用(2026 年 10 月 18 日,该模型唯一服务主机的价格远高于限额)被拒绝,返回 HTTP 404“没有满足此请求最高价格限制的端点”,且未产生费用。程序只识别这一措辞:任何其他携带限额的调用发生 404,也会停止运行(退出码 24),但不会给出建议。限额恰好等于某个服务主机价格的情况,以及有多个服务主机的模型,均尚未实际运行过;如果 OpenRouter 在这些情况下拒绝调用,运行会以退出码 24 停止并向你询问。如果 OpenRouter 的标价高于src/pricing.json中的某一行,运行也会以同样方式停止,而不会超额付费:将模型当前价格添加为pricing.user.json中的一行(已安装的副本无法刷新价格表;请更新 THC,或在克隆版中运行scripts/refresh-openrouter-prices.mjs),或者在该阶段不需要此席位时用--skip-seat跳过。 plan-china-high-council中的 DeepSeek V4 Pro 席位有 5 个可按该价格提供服务的主机(0.8.3)。 该席位按模型标价计算,即每百万 token 输入 0.66、输出 1.98;每次调用都会携带该价格作为筛选条件,因此只有价格低于或等于该价格的主机才能为此席位提供服务。2026 年 10 月 23 日,OpenRouter 列出了该模型的 23 个端点;其中 7 个端点来自 5 个主机(DeepSeek、StreamLake、Alibaba、Baidu 和 Sail Research),价格低于或等于该价格,且声明的输出限额至少为 384,000(输出限额筛选未经验证:这是 OpenRouter 提供的字段,并非实际探测结果)。如果这 5 个主机都无法处理调用,调用就会被拒绝,运行也会停止(退出码 24);其中某个主机恢复服务后,或你将更高的价格行添加到pricing.user.json后,即可恢复运行。该席位是评审小组的评审者,因此永远不会被跳过:无论是在树中还是单独运行都不会跳过,因为只有听取所有评审者意见后,评审小组才会达成一致。- 你添加的价格行会按输入值直接信任。 项目文件夹中的
pricing.user.json可以为随附价格表中没有的模型添加价格,也可以提高随附价格,但不能降低价格。对于随附价格表中没有的模型,任何能写入项目文件夹的对象都能设置较低的价格,导致支出上限少计该模型的费用。运行的限额界面以及付费重赛、重放、交接、合同草稿或摘要的界面,都会列出由该文件定价的席位及其金额,让你在输入限额前看到较低的金额;council tree start不会显示此类界面,而是直接使用文件中的金额,不作说明(council doctor和--dry-run会列出该文件中的行)。控制会话也可以通过tree_decide提高此类价格行,但仅限于某个树中已停止的成员因该价格限额而被拒绝的模型;它不能降低价格,并且会被要求先征求你的同意,并将你的同意记录为原因(THC 无法核查它是否征求过同意;在你输入council tree resume前,不会运行任何内容):该价格行适用于项目中的每次运行,记录会将添加者列为该会话,并列出该会话引用的来源;如果价格设置得过低,就会导致通过直连服务商调用时对该模型的费用少计。 price_raise无法确认会话是否征求过你的同意(0.8.3)。 该工具会要求会话在确认前向你展示引用文本,并在聊天中征得你的同意,但 THC 无法看到这一过程;它记录的reason也是会话提供的文本(系统会要求会话传入你的原话)。不受会话影响的保障是:确认操作不会产生费用,而之后调用resume_run会因价格行已变更而再次停在支出限额关卡;此关卡由你作答(通过能够询问你的客户端中的对话框(Claude Desktop),由客户端向你展示;或者在终端中使用council gate answer)。获取引用文本时,MCP 服务进程会向 openrouter.ai 发起网络调用(与终端报价读取同一份列表);服务启动时只读取一次pricing.user.json,因此如果此后手动编辑了该文件,报价显示的限额可能已经过时。- 树中会话给出的答复属于该会话,THC 无法得知工具调用的幕后操作者是谁。 通过
tree_decide,控制会话可以处理树中的部分停止情况(接受已完成的运行,不作改动;就地解决里程碑;重新规划子计划;将停止状态交还给你;提高某个已停止成员因价格限额而被拒绝的模型价格;或者在每个子节点都获得完整上限时,批准拆分操作的第一层前沿)。记录会标明会话、会话通道和其撰写的理由,不会将此类答复记作你的答复;资金操作(追加资金、设置上限、提高运行限额、调整深度或子节点数量)、关闭、放弃、创建新的根计划,以及所有个人数据或密钥扫描相关答复,都仍由你在终端中处理(对于新的根计划,会话可以代拟决策草稿:你可以在那里完整阅读并输入停止 ID 予以批准,也可以要求修改)。批准前沿后,子节点的额度即可从树的上限中发放(批准本身不会转移资金);系统会要求会话在执行前向你展示引用文本,并用你的原话记录你的同意(THC 无法核查它是否征求过同意);只有你输入council tree resume后,才会开始运行;记录会附带询问时的可用金额和代码计算出的额度(sessionConditions),这些是 THC 自身计算的数值,并非由第二方核验;实际登记额度时,仍会根据当时的可用金额发放。此项检查只是协作工具之间的防护措施:任何能够调用该工具的程序都会被视为该会话。 - 交接清单会列出计划中提到的依赖项,但不会检查它们。 当计划要求构建会话安装或下载某些内容时,
HANDOFF.md会在其自身部分的末尾添加“待验证的依赖项”章节:每项占一行,名称和版本照抄计划中的内容;对于计划中留有选择余地的每一项,也各占一行;并指示在安装前检查每个名称。0.8.3 只负责列出并提出要求。它不会查询注册表,也不会发起网络调用;模型会生成清单,因此可能漏掉某项或写错,而运行框架也不会确认构建会话是否进行了检查。检查工作由你负责。 - 由编码 Agent 会话填写的席位,其回答者是谁只是会话自己的说法,从不经过核验(0.8.3)。
report.json和 BOARD 会说明哪个客户端作出了回答,以及会话声明使用了哪个模型,并据此统计小组中的公司数量。会话可以随意声称;如果会话未声明模型,则会显示为未知,而不会显示为链条中列出的公司。运行过程中的任何环节都不依赖此信息。 - 树中的较小计划只能从任务的标题中获取你的目标(0.8.3)。 当树将计划拆分时,每个较小计划会获得你的任务中由该计划命名的各个章节,以及所有标题为 Non-goals、Non-goal、Exclusions、Out of scope 或 Not in scope 的章节。如果任务有标题,而目标只写在第一个标题之前的部分,那么它不属于任何章节,因此不会传递给任何较小计划:请将目标放在单独的标题下。如果任务完全没有标题,或者标题只有排除项相关标题,则会整体传递。
隐私
此工具不会收集任何信息。直截了当地说明这一点,而不是对质量作出承诺:
- 本仓库在任何地方都不会进行遥测、分析或任何形式的跟踪。
- 此工具唯一会进行的网络调用,是调用你使用自己的密钥配置的 AI 提供商 API(
ANTHROPIC_API_KEY、OPENROUTER_API_KEY等),而且仅当你使用非模拟、非外部席位启动实际运行时才会调用。council doctor和council demo不会进行任何网络调用;两者都只读取本地文件和环境变量名称。 docs/中的着陆页不会加载 JavaScript,也不会加载第三方资源——参见test/landing-page.test.js,如果其中任何一项发生变化,构建就会失败。- 运行产生的一切内容——任务、辩论、交付物、费用——都会写入你自己磁盘上的文件夹(
runs/<id>/),不会写到其他地方。删除该文件夹即可删除记录。关于为何费用记录是从这些文件夹中汇总得出,而不是保存在单独日志中,请参阅src/spend.js自带的文档。 - 个人数据。 一次运行会将你的任务发送给链中指定的提供商。请尽可能避免在任务中包含个人数据。每次运行都会在发送任何内容之前检查任务中是否包含电子邮件地址、IBAN 或银行卡号;默认情况下,发现这些内容就会停止运行:不会发送任何内容,也不会产生费用。若要继续发送,请使用
--allow-pii <types>再次运行同一命令。此工具无法识别人名、地址或其他个人信息。停止提示和日志会说明匹配的类型及其位置(行和列),但绝不会显示具体值:停止时会打印相关行(通过 MCP 时,这些行会写入启动日志文件),且此时尚未创建运行文件夹;在warn模式下,运行会继续,并将相同行写入其run.log,树中的成员还会将其写入WARNINGS.md。如果必须发送个人数据,请使用与你签署了数据处理协议的提供商。运行是否符合 GDPR,取决于这些协议以及任务内容;THC 不对此作出任何声明。 - 咨询调用(
council_advise)会将会话生成的简报经遮蔽处理后,通过 OpenRouter 发送给预览中指定的实验室,但只有在你批准其确切文本之后才会发送(通过客户端对话框,或使用council gate answer);没有任何豁免,也没有任何声明可以跳过这一步。与每次运行一样,确切文本会写入磁盘上的运行文件夹:runs/<id>/advice-brief.md,并以哈希形式记录在report.json(task_sha256)和 gate 中;文件夹会在你作出答复前创建,因此即使你拒绝或未答复,也会留下文件夹(其中没有任何内容被发送或产生费用)。advise-log.json不保存简报文本(仅保存问题的加盐哈希词语,盐保存在你的主文件夹中);audit.jsonl(咨询调用时始终会写入)会记录每次调用的哈希和大小,但绝不记录文本。如果你提交运行文件夹,就会公开其中经过遮蔽处理的简报。 - 如果你选择启用审计导出(
"audit": true,且只要存在policy.json,就会自动启用),每次运行还会在自己的文件夹中写入audit.jsonl:其中包含经过签名、以哈希串联的行(每行都包含上一行的哈希),可由src/audit.js中的verifyAuditLog离线检查。只记录席位、费用和耗时,不记录任务或提示词文本。格式:docs/audit-schema.md。
报告错误
请在 github.com/muad-yasin/the-high-council-mcp/issues 提交问题。 对于任何与安全有关或不应公开的问题,请改为发送邮件至 [email protected]。
如果这能为你赚钱
本项目采用 MIT 许可证。你不欠任何费用,这就是许可证的全部内容——下文不会改变这一点。
如果 The High Council 最终帮你打造了能赚钱的东西,我希望获得其收益的 0.7%。这不是费用,不是条款,也不是订阅。这只是打造事物的人之间的请求。
无需报告、审计或跟踪,也没有任何东西会核查。拒绝就是完整的答复——你可以使用它、分叉它、出售你用它打造的东西,然后再也不用想起这一节。这完全没问题,也正是许可证如此规定的原因。
如果你愿意答应:按你认为合适的金额支付。
许可证
MIT。请参阅 LICENSE。上文只是一个请求,不是许可证条款。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。