在发布文章、做出决定或交付代码之前,先让 Codex 从多个角度反驳和审查自己。
Codex Council 会把一次 Codex 请求拆成一个小型评议会:多名角色代理先独立给出意见,输出随后被匿名化为 Candidate A–F,并按领域量表进行排序和评分,最后由主线程中的 Chairman 综合结论。运行前会显示本地 token 估算。
这个 fork 以写作场景优先、日常决策第二,同时完整保留 coding 工作流。它完全运行在 Codex 内部,不会调用第三方模型 API。
从 v1.2.0 开始,Council 还支持按角色配置 Codex 模型和 reasoning effort。默认采用平衡型路由,也允许你为每个成员、Reviewer、Forge 创作者、Bob、Sam 和 Chairman 单独覆盖配置。
**Fork 说明:**本项目基于 ercoledevs/codex-council 的 MIT 许可版本改造。上游 GitHub Pages 仍主要介绍原始 coding-first 版本;本 README 才是当前 fork 的产品与使用说明。
**必须说明的限制:**这里的“多样性”主要来自隔离的角色提示词、不同上下文、可配置的 Codex 模型以及匿名复审,并不等同于多个独立模型厂商组成的评审委员会。Council 可以降低单次回答的锚定效应并保留异议,但共识本身不是事实证明。
- 适用场景
- 快速开始
- 实现原理
- 三类领域与角色
- 模式与 token 预算
- Codex Forge
- Codex Mind
- Decision Runtime
- 模型与 reasoning effort 路由
- 角色微调 Alters
- 提示词示例
- CLI 参考
- 隐私与本地状态
- 安装与更新
- 开发与验证
- 限制
- 来源与许可证
当“一个看起来很自信、实际却错误的回答”代价较高时,适合使用 Council。例如:公开发布但证据薄弱的文章、难以撤销的日常决定、存在数据风险的迁移、无法独自判断的产品取舍。对于很小、可逆、容易验证的任务,直接使用普通 Codex 更快。
| 适合使用 | 通常不必使用 |
|---|---|
| 文章大纲、初稿、修订、事实核查、发布前审核 | 自己可以立即确认的小幅措辞调整 |
| 日程规划、购买比较、困难沟通、生活决策 | 没有明显风险的一步式小事 |
| 架构决策、高风险 diff、迁移、发布判断 | 很小的代码修改和简单问答 |
| 安全、隐私、医疗、法律、财务风险 | 已由可信专业人士确认的事项 |
| 前端、UX、浏览器行为验证 | 只需要一个直接答案的任务 |
| 使用 Codex Forge 塑造写作、日常或 coding 提案 | 只想获得赞同或盖章 |
npx codex-marketplace add rodrigueez/codex-council --plugin --global -y安装或更新后,重新加载 Codex 或新建一个 thread。
使用 Codex Council 修订这篇文章。
重点检查结构、证据、受众匹配和语言风格。
Standard、Deep 和 Expanded 模式在派发子代理前都会显示估算并等待确认。“使用 Codex Council”只表示请求使用 Council,并不自动代表同意消耗预算;expanded 还需要单独明确确认。
一次完整评议分为四个阶段:
| 阶段 | 发生的事情 |
|---|---|
| 1. 独立初审 | 最多六名角色子代理并行工作,在看到其他人的结论之前独立回答。 |
| 2. 匿名复审 | 移除作者身份,标记为 Candidate A–F,再按领域量表排序和评分,而不是按角色名气或篇幅判断。 |
| 3. 确定性聚合 | 存在 Reviewer JSON 时,由本地脚本聚合分数;阻断项和异议不会被平均掉。 |
| 4. Chairman 综合 | 主 Codex 线程根据保存的成员输出、Reviewer 结果和证据生成最终结论,而不只是宣布最高分获胜。 |
最终结果会包含:
- 建议或结论;
high / medium / low / blocked置信度;- 阻断项与非阻断优化;
- 仍然存在的异议;
- 需要实际执行的验证步骤。
Python 脚本负责生成 session、提示词、估算、校验、聚合与审计文件;真正调用模型和派发子代理的是 Codex 编排器。
默认 Standard/Deep Council 使用六名成员。可选的自适应 panel 可以减少低风险任务的角色数量,但遇到隐私、安全、数据丢失、医疗、法律、财务、大额支出或不可逆风险时,会强制恢复完整覆盖。
| 领域 | 定位 | 工作流 |
|---|---|---|
writing |
默认,写作优先 | outline、draft、revise、fact-check、tone、publish |
daily |
日常规划与决策 | plan、compare、decide、schedule、purchase、communication |
coding |
完整兼容原工程场景 | architecture、implementation、decision、skill、frontend |
| 角色 | 审查重点 |
|---|---|
| Ada Lovelace — 结构编辑 | 论证结构、章节顺序、节奏和逻辑流 |
| Grace Hopper — 证据与事实编辑 | 事实、来源、日期、缺少证据的断言 |
| Hypatia — Brief 与约束守门人 | brief、范围、品牌、法律和禁用表述 |
| Florence Nightingale — 受众代表 | 读者背景、实用性、可读性和语言门槛 |
| Alan Turing — 反方批评 | 薄弱论点、缺少的反例、更稳妥的替代方案 |
| Seymour Cray — 语言与风格编辑 | 语气、节奏、风格一致性和压缩表达 |
| 角色 | 审查重点 |
|---|---|
| Ada Lovelace — 实际规划者 | 可立即执行的步骤和顺序 |
| Grace Hopper — 时间与精力管理者 | 日程适配、精力成本、恢复和过度承诺 |
| Hypatia — 风险与隐私守门人 | 安全、隐私、法律财务暴露和不可逆性 |
| Florence Nightingale — 人因代表 | 关系、情绪、沟通成本和人的尊严 |
| Alan Turing — 反方简化者 | 更小、更简单、更可逆的选择 |
| Seymour Cray — 预算与资源分析者 | 金钱、工具、依赖和机会成本 |
| 角色 | 审查重点 |
|---|---|
| Ada Lovelace — 首席架构师 | 边界、集成、可维护性、迁移风险 |
| Grace Hopper — 可靠性工程师 | 故障模式、测试、回滚和可观测性 |
| Hypatia — 安全与治理 Reviewer | 密钥、权限、隐私、来源和策略 |
| Florence Nightingale — 产品与运维代表 | 工作流、文档、采用成本和操作摩擦 |
| Alan Turing — 反方红队 | 隐藏假设、过度设计和简单替代方案 |
| Seymour Cray — 性能工程师 | 延迟、吞吐、内存、成本、规模和测量 |
- Leonardo da Vinci:通过
--frontend-review或--type frontend进行 coding 前端和 UX 批评。 - Bob:实际执行浏览器路径并收集 UI 证据。Bob 不参与投票;没有真实运行就不能声称“已验证”。
- Sam:通过
--type fact-check或--source-evidence核实写作中的事实、来源和时效性。Sam 不参与投票;没有实际查证时必须标记为not verified。 - Coverage Integrator:确认所有关键视角、阻断项、异议和证据缺口进入 Chairman 综合。
- Deep 模式还会增加 Rubric Reviewer、Bias Auditor 以及对应领域的 Gatekeeper。
优先选择能够覆盖风险的最小模式,只针对真正的阻断项升级。
| 模式或开关 | 适用情况 |
|---|---|
fast |
小型、可逆、低风险任务,仅运行一次 Chairman 审查 |
standard |
写作、日常规划、架构等需要多视角的任务 |
deep |
安全、数据丢失、医疗、法律、财务、迁移、不可逆决策或结果接近 |
--domain writing|daily|coding |
选择领域;默认是 writing |
--frontend-review |
coding UI、UX 或浏览器行为,加入 Leonardo 和 Bob |
--source-evidence |
写作事实与来源检查,加入 Sam |
--type skill --skill-review |
三角色的低成本插件或 skill 可用性审查 |
输出长度由 --token-budget 控制:
| 预算 | 说明 |
|---|---|
compact |
默认;输出紧凑,加载最小参考集 |
balanced |
存在真实取舍或歧义,只扩展高风险部分 |
expanded |
安全、数据丢失或不可逆任务;没有明确确认不会执行 |
codex-forge 是 Council 的创意生成阶段:
- Forge 负责创造:从多个创作视角形成一个边界明确的写作、日常或 coding 提案。
- Council 负责判断:检查提案是否安全、连贯、可执行,以及是否值得发布或实施。
Forge 使用五名创作者:
| 角色 | 负责视角 |
|---|---|
| Buckminster Fuller | 叙事、选项或系统的整体形状与边界 |
| Hedy Lamarr | 读者、人或用户价值,以及采用体验 |
| Katherine Johnson | 可交付性、可行性、依赖和证据需求 |
| Margaret Hamilton | 准确性、安全、隐私、可靠性和可逆性 |
| John von Neumann | 清晰度、成本、复杂度和简化空间 |
默认只运行一轮。第二轮需要用户在第一轮后确认,只有第一轮出现强烈分歧时才会自动触发;硬上限为三轮。如果仍无法收敛,Forge 会返回 nonconverged 和持续异议,不会制造虚假共识。
使用 Codex Forge 为这个主题设计一份边界明确的写作方案。
python3 scripts/codex_council.py estimate \
--topic "设计一组 Newsletter 选题" --mode standard \
--type forge --domain writing --token-budget compact
python3 scripts/codex_council.py init \
--topic "设计一组 Newsletter 选题" --root . --mode standard \
--type forge --domain writing --confirm-estimatecodex-mind 会把 Forge 和 Council 串成一次受控流程:
- 没有提案时,先询问要创造或决定什么;
- 合并计算 Forge 与 Council 的估算,只确认一次;
- Forge 生成提案;
- 只把提案本身交给 Council,不传递完整中间对话;
- 返回符合领域的“发布 / 执行 / 构建 / 修订 / 停止”结论。
如果 Forge 返回 nonconverged,或 Council 发现阻断项,流程会暂停,不会为了跑完整条流水线而继续消耗预算。
使用 Codex Mind 先完善这个想法,再交给 Council 做最终判断。
Decision Runtime 是用于已完成 session 的本地、实验性决策智能侧车。它不是第二个 Chairman,也不会修改原始 verdict。
| 能力 | 当前状态 |
|---|---|
| Decision Cell 投影和类型化边补丁 | 实验性、确定性 |
frontier.jsonl 基线 |
实验性、确定性 |
| Cell 与 frontier 对比、导出和 replay | 实验性、非权威 |
事务性 generation、HEAD、恢复和回滚 |
需要明确启用的 shadow sidecar |
| 类型化 JSON Decision Patch | 仅作用于 sidecar |
| Fail-closed 影响计划 | 只提供建议,不派发代理 |
| 原始 session 与 Chairman verdict | 稳定且始终权威 |
流程保持单向:
已完成的原始 session
-> 确定性投影
-> Decision Cell 与 frontier.jsonl 对比
-> 可选 shadow generation
-> 建议性影响计划
先运行不提交的预览:
python3 scripts/codex_council.py cells project \
--session <session-dir> --compare frontier --plan --json确认有价值后,再显式提交并检查健康状态:
python3 scripts/codex_council.py cells project \
--session <session-dir> --compare frontier --commit --plan --json
python3 scripts/codex_council.py cells doctor \
--session <session-dir> --json任意 Markdown 或模型自然语言输出都不会被隐式解析成补丁。Hash 和 session 范围 ID 只提供完整性检查和假名化,不等于加密,也不证明内容正确。ignored 和 quarantined 都意味着退回使用原始 legacy 结果。
详细契约见 decision-runtime.md。
当前 Codex 协作环境允许以下子代理模型:
gpt-5.5gpt-5.6-solgpt-5.6-terragpt-5.6-lunagpt-5.4gpt-5.4-minigpt-5.3-codex-sparkxai/grok-4.5deepseek/deepseek-v4-flash、deepseek/deepseek-v4-proopencode-free/*(例如opencode-free/deepseek-v4-flash-free)
允许的 reasoning effort 为:low、medium、high、xhigh、max、ultra。
免费/共享模型突发派发容易触发限流(如 429):建议同时只启动 3–4 个会话,
失败时等待 30–60 秒后用新 session 重试,并保留失败 session 供对照。非 GPT
模型没有已知的 credits 费率,estimated_credits 会如实显示为 null。
| 分配 | 角色 |
|---|---|
gpt-5.6-sol / high |
Chairman 推荐、Grace、Hypatia、Turing、Katherine、Margaret、von Neumann、关键 Reviewer/Gatekeeper、Sam |
gpt-5.6-terra / medium |
Ada、Florence、Hedy、Coverage Integrator、Bob |
gpt-5.6-terra / high |
Seymour、Fuller、Leonardo |
gpt-5.5、gpt-5.4-mini |
保留为用户覆盖选项,不进入平衡型默认分配 |
每次 init 都会在 session 中生成 model-routing.json。其中的 spawn_override 才是编排器需要传给子代理的模型参数,不会通过提示词假装切换模型。
Chairman 始终是当前主线程,因此它的配置只是对主会话模型与 intelligence level 的建议,不是子代理 override,也不会偷偷再生成一个 Chairman。
# 查看全部有效路由和支持值
python3 scripts/codex_council.py models list
# 查看一个角色
python3 scripts/codex_council.py models show --role grace
# 覆盖模型与 reasoning effort
python3 scripts/codex_council.py models set \
--role grace --model gpt-5.6-sol --reasoning xhigh
# 只覆盖一个字段
python3 scripts/codex_council.py models set \
--role bob --reasoning low
# 显式继承父线程设置
python3 scripts/codex_council.py models set \
--role ada --model inherit --reasoning inherit
# 恢复一个角色或全部角色的推荐值
python3 scripts/codex_council.py models reset --role grace
python3 scripts/codex_council.py models reset --all用户覆盖保存到插件本地 model-routing-overrides.json。不支持或拼写错误的模型会 fail closed,不会静默换成其他模型。完整角色 ID、优先级和 fallback 契约见 model-routing.md。
Alter 是对角色行为的本地、有限调整,例如让 Ada 更直接、让 Seymour 特别关注数据库成本,或要求 Leonardo 对糟糕的 UI 更严格。
Alter 只能改变关注点与表达方式,不能移除阻断项、异议、验证、匿名化、安全要求或证据边界。Bob 和 Sam 是证据代理,不是可调人格。
# 查看当前微调
python3 scripts/codex_council.py alters list
python3 scripts/codex_council.py alters show --role ada
# 先预览,再保存
python3 scripts/codex_council.py alters preview \
--role ada --tone "表达更直接" \
--domain-focus "API 设计与可维护性"
python3 scripts/codex_council.py alters configure \
--role ada --tone "表达更直接" \
--domain-focus "API 设计与可维护性"
# 恢复默认
python3 scripts/codex_council.py alters reset --role ada
python3 scripts/codex_council.py alters reset --all不要手工编辑 alter-overrides.json。
Council 更适合审查“具体决定”,而不是回答一个模糊问题。推荐结构:
[Standard|Deep|Frontend] Council:审查 <具体决定>。
上下文:<需要检查的文章、文件、diff 或链接>。
硬约束:<兼容性、截止时间、预算或不可触碰的边界>。
输出:阻断项、异议、置信度、最安全的 v1,以及准确验证步骤。
写作:
使用 Council 修订这篇文章。
重点检查结构、缺少来源的断言、受众匹配和语言风格。
日常决策:
使用 Daily Council 比较这两个租房方案。
重点考虑预算、通勤、可逆性和隐藏成本。
Coding:
使用 Council 审查这个 diff。
重点检查回归、缺少的测试和性能影响。
高风险迁移:
使用 Deep Council 审查这次迁移。
重点检查安全、回滚和数据丢失风险。
前端:
使用 Frontend Council 审查这个弹窗流程。
让 Leonardo 进行 UX 批评,并让 Bob 在 Chairman 综合前实际验证浏览器路径。
解释 Council 的原理不会触发代理派发;表达不清的调用只会得到一条澄清问题。
scripts/codex_council.py 只使用 Python 标准库。普通对话可以直接调用 skill;CLI 用于需要留痕的 session、估算、评分、校验和统计。
# 经用户同意后保存用于估算的本地消费配置
python3 scripts/codex_council.py profile \
--plan Plus --model gpt-5.6-sol --reasoning high
# 查看首次使用问题
python3 scripts/codex_council.py profile
# 估算运行范围
python3 scripts/codex_council.py estimate \
--topic "文章发布前审查" --domain writing \
--mode standard --token-budget compact
# 预览自适应 panel;高风险仍会强制完整覆盖
python3 scripts/codex_council.py estimate \
--topic "低风险文档清理" --router auto --panel auto --json
# 判断文本是在调用 Council,还是只在讨论它
python3 scripts/codex_council.py classify-invocation \
--text "解释 Council 的工作方式"# 接受估算后创建写作 session
python3 scripts/codex_council.py init \
--topic "文章结构审查" --root . --domain writing \
--mode standard --token-budget compact --confirm-estimate
# 日常决策
python3 scripts/codex_council.py init \
--topic "比较两个租房方案" --root . --domain daily \
--type compare --confirm-estimate
# Coding 前端审查,加入 Leonardo 与 Bob
python3 scripts/codex_council.py init \
--topic "弹窗流程审查" --root . --domain coding \
--frontend-review --confirm-estimate
# 写作事实核查,加入 Sam
python3 scripts/codex_council.py init \
--topic "核实文章中的事实与来源" --root . --domain writing \
--type fact-check --source-evidence --confirm-estimate
# Skill 或插件可用性审查
python3 scripts/codex_council.py init \
--topic "Skill 可用性审查" --root . \
--type skill --skill-review --confirm-estimate
# Forge 创意提案
python3 scripts/codex_council.py init \
--topic "设计发布工作流" --root . --domain writing \
--type forge --token-budget compact --confirm-estimate
# expanded 必须明确确认
python3 scripts/codex_council.py init \
--topic "高风险迁移审查" --root . --domain coding \
--mode deep --token-budget expanded \
--confirm-estimate --confirm-expanded--root 是被分析的 workspace。Session 文件默认保存在插件本地 .codex-council/sessions/,不会写进你的项目仓库。
# 聚合 Reviewer JSON
python3 scripts/codex_council.py score --input reviews.json
# 判断 Forge 是否收敛
python3 scripts/codex_council.py forge-convergence \
--input forge-scores.json
# 校验 session
python3 scripts/codex_council.py validate-session \
--session <session-dir>
# 完成真实输出后的生命周期收尾
python3 scripts/codex_council.py finalize \
--session <session-dir> --final-state approved-with-risk
# 只读健康检查
python3 scripts/codex_council.py doctor \
--session <session-dir>
# 生成并保存 session 统计
python3 scripts/codex_council.py stats \
--session <session-dir> --write
# 查看本地 session 总览
python3 scripts/codex_council.py dashboard
# 编译并去重上下文
python3 scripts/codex_council.py compile-context \
--topic "审查交接报告" \
--constraint "不得使用公开链接" --jsonfinalize 会检查成员、Reviewer、证据 runner 和 Chairman 输出是否有正文,校验 reviews.json,并写入可复核的 aggregate.json。只有通过收尾才会把 session 标记为 completed;脚手架或不完整运行会标为 incomplete。model-routing.json 默认只代表计划,只有传入执行清单才会标记为已观测的实际路由。
统计数据只是本地估算,不是实际 Codex 账单或精确 token 遥测。报告会区分 pre_execution_estimate、post_execution_estimate 和 artifact_only_tokens,并分别统计 Bob 浏览证据与 Sam 来源证据;来源核查还要求在 ## Source Evidence 下明确写出 Coverage: complete|partial|not-verified。缺少提示词、输出、声明或收尾时,coverage 会标记为 partial。
每个 session 还会保存:
context-capsule.jsonrun-manifest.jsondecision-ledger.jsonfindings.jsonltelemetry.jsonrouter-decision.jsoncompiled-context.jsonmodel-routing.jsonaggregate.json(完成评分收尾后生成)
Council 的 session、估算、提示词、输出、统计、历史、模型覆盖和 Alter 配置都保存在插件本地 .codex-council/,不会污染当前项目仓库。
- 紧凑 invocation 日志不会保存提示词、原始输出、密钥、topic、workspace 绝对路径或私密内容。
- Consumer profile 只保存经用户同意的 plan、典型模型、reasoning 和聚合历史;其中
typical_model只用于估算,不控制子代理模型。 - 模型路由覆盖保存在
model-routing-overrides.json,Alter 保存在alter-overrides.json。 - 可通过
CODEX_COUNCIL_STATE_ROOT、CODEX_COUNCIL_HOME或CODEX_COUNCIL_SESSION_ROOT覆盖存储位置。 - Decision Runtime 使用 session 范围 ID、私有目录权限和事务性 generation;它不自动删除数据。
doctor只报告保留期限;完整 purge 必须由操作者提供 session ID 明确确认。
npx codex-marketplace add rodrigueez/codex-council --plugin --global -ynpx codex-marketplace add rodrigueez/codex-council --plugin --project重新执行安装命令,然后重新加载 Codex:
npx codex-marketplace add rodrigueez/codex-council --plugin --global -y也可以检查 GitHub Release:
python3 scripts/codex_council.py check-updatemkdir -p ~/plugins
git clone https://github.com/rodrigueez/codex-council.git \
~/plugins/codex-council然后把插件加入本地 marketplace 文件,通常位于 ~/.agents/plugins/marketplace.json:
{
"name": "codex-council",
"source": { "source": "local", "path": "./plugins/codex-council" },
"policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
"category": "Productivity"
}从旧版升级是增量兼容的:已有 session、profile、Alter、Markdown、ledger、findings 和统计无需破坏性迁移。Decision Runtime 默认关闭,旧 session 只有在你显式运行 cells project 时才会参与投影。
# 完整测试
python3 -m unittest discover -s tests -v
# 严格插件校验
python3 scripts/codex_council.py validate \
--plugin-root . --strict
# Decision Runtime 的可复现 replay 与 fault harness
python3 scripts/codex_council.py cells replay \
--corpus tests/fixtures/council_cells \
--compare frontier --repetitions 10 --json
python3 scripts/codex_council.py cells fault-test \
--corpus tests/fixtures/council_cells --json
# 发布前检查本地残留
find . -name '.DS_Store' -o -name '._*' \
-o -name '__pycache__' -o -name '*.pyc'仓库结构:
codex-council/
├── .codex-plugin/plugin.json # 插件 manifest
├── scripts/codex_council.py # 仅使用标准库的 CLI
├── scripts/council_cells.py # 实验性 Decision Runtime
├── skills/codex-council/ # 核心 skill 与参考文档
├── skills/codex-council-alters/ # 角色微调 skill
├── skills/codex-forge/ # 创意提案 skill
├── skills/codex-mind/ # Forge + Council 组合流程
├── docs/ # 继承的上游 GitHub Pages 快照
├── CHANGELOG.md
├── PROVENANCE.md
├── assets/
└── tests/
docs/ 目前仍是上游 coding-first 站点快照。本 fork 的权威产品说明是这份中文 README,以及 skills/codex-council/references/ 下的协议文件。
- **Council 共识不是证明。**它是建议性工作流,不替代法律、安全、合规、医疗或财务专业意见。
- **不是多厂商模型委员会。**角色隔离与可配置 Codex 模型可以增加视角,但不等于多个独立实验室。
- **不伪造 UI 验证。**Bob 或等价浏览器工具没有真实运行时,UI 行为只能标记为未验证。
- **不伪造来源核实。**Sam 或等价来源检查没有实际执行时,不能声称来源已验证。
- **没有账单遥测。**Token 报告只是启发式估算,实际使用量请查看 Codex 设置中的 Usage。
- **Expanded 有强制门槛。**它可能显著增加消耗,没有明确确认不会运行。
- Decision Runtime 仍是实验性 sidecar。
healthy只表示完整性检查通过,不证明决策正确。 - **暂不承诺效率收益。**任何 token、延迟或吞吐改进都需要配对工作负载验证。
本项目受公开的 LLM Council 模式启发:
原始模式会让多个独立模型回答、匿名互评,再由 Chairman 模型综合。本 fork 保留这一决策结构,并适配为 Codex 角色、可选 Codex 子代理、按角色模型路由和本地确定性评分,不增加跨厂商模型调用。
单轮批评者、独立综合阶段、类型化 panel、fail-fast 初始化检查和紧凑 invocation 日志等工作流模式,也参考了 Chris Blattman 的 Claude council 模式。完整来源与 fork 差异见 PROVENANCE.md。
本项目使用 MIT License。