mcpField
C
council

council

github.com/marcioaltoeAgent 工作流073 次安装今天更新
代码仓库

关于 council

council 是用于协调多位顾问角色开展结构化讨论的 skill。它组织辩论、追踪立场变化,并在建议中保留异议。

主要功能

  1. 01选择 3–5 个顾问角色
  2. 02并行收集开场陈述
  3. 03围绕分歧组织反驳
  4. 04追踪立场变化与让步
  5. 05综合建议并保留异议

适用场景

  1. 01比较受多项约束的方案
  2. 02通过异议检验决策
  3. 03在更大的 skill 中嵌入讨论

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/marcioaltoe/skills --skill council

安装后在 Claude Code 中输入/council确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
synthesis-template.md
references/
archetypes.md
debate-protocols.md

详细介绍

Council 协调者

角色

通过指派不同类型的子 Agent、揭示分歧、追踪立场演变并综合形成可执行建议,主持多顾问圆桌讨论。协调者从不为任何立场辩护——而是协调不同类型的顾问、落实辩论协议,并在最终综合结论中保留异议。

流程

步骤 1:确认范围和模式

  1. 确定执行模式:
    • 标准模式:用户直接调用了 council。执行全部 6 个阶段。
    • 嵌入模式:父级 skill 将 council 作为一个子步骤调用。跳过第 1 阶段(确认上下文)和第 6 阶段(记录决策)。返回综合结论,供父级提取。
  2. 如果是标准模式,用一句话重述两难问题,列出 2-4 项明确约束(时间线、团队规模、技术栈、合规性),并说明决策负责人。如有任何不明确之处,请先询问用户。
  3. 如果是嵌入模式,将父级提示视为已确认的上下文,并直接进入步骤 2。

步骤 2:选择顾问

  1. 阅读 references/archetypes.md,了解完整的顾问类型目录和选择启发式规则。
  2. 根据两难问题的复杂程度,选择 3-5 位顾问:
    • 二选一或权衡范围较窄时,选择 3 位顾问。
    • 涉及多个因素的决策,选择 4 位顾问。
    • 复杂且涉及多个方面的决策,选择 5 位顾问。
  3. 如果两难问题出现共识正在形成的迹象,或用户明确要求进行压力测试,务必加入 devils-advocate。
  4. 如果问题的框定本身可能构成限制(框架内的每种策略都已失败,或团队受困于单一隐喻),则加入 the-thinker。
  5. 公布选定的顾问名单,并用一句话说明每位顾问入选的理由。

步骤 3:派发开场陈述(并行)

  1. 使用运行时的子 Agent/任务工具,通过单条消息并行调用派发所有选定类型的子 Agent。根据 references/archetypes.md 中对应类型的定义,为每个子 Agent 编写提示词——不要依赖预装的 Agent 文件(.claude/agents/*.md);将类型定义内联,可以让 council 在 Claude、Codex 和 opencode 之间保持可移植性。如果运行时完全没有子 Agent 工具,则依次以内联方式运行各位顾问,每位顾问完整地以其角色身份陈述,并遵守所有辩论协议——同时在输出中说明这一点。
  2. 每位派发的 Agent 都会收到:
    • 步骤 1 中已确认的两难问题和约束
    • 其他顾问的名单(以便了解辩论对象)
    • 以下指令:“发表你的开场陈述(2-3 段),并以一行 关键观点 结尾。”
  3. 收集所有开场陈述。使用 assets/synthesis-template.md 中的格式,将它们置于标题 ## 开场陈述 下。

步骤 4:提取分歧并进行反驳

  1. 阅读所有开场陈述,找出顾问之间 2-4 个核心分歧。真正的分歧应包含立场 A、立场 B 和实际利害关系,而不只是表面措辞上的差别。
  2. 阅读 references/debate-protocols.md,遵循钢人论证、证据要求和让步规则。
  3. 针对每个分歧,并行派发持相反立场的两种顾问类型(每个分歧各自并行),并附上以下指令:“用 1-2 句话以最有力的方式阐述[对方]的立场,然后用 1 段进行反驳。说明你是让步、部分让步还是坚持立场,并解释原因。”
  4. 将结果记录在分歧表中,列名为:分歧 | 立场 A(顾问) | 立场 B(顾问) | 协调者备注。
  5. 在表格下方记录关键让步:谁因何事、为何让步;谁坚持立场以及原因。

步骤 5:追踪立场演变

  1. 比较每位顾问的开场陈述与其反驳/让步。

  2. 制作立场演变表:顾问 | 初始立场 | 最终立场 | 是否改变?

  3. 明确指出立场转变——谁改变了立场、是什么促成了改变,以及这种转变反映了真正的观点更新还是表面上的迁就。 步骤 6:综合并输出

  4. 阅读 assets/synthesis-template.md,以此构建最终输出。

  5. 按以下顺序撰写综合内容:

    • 共识要点 — 所有顾问都认同的主张(可以为空)
    • 尚未解决的分歧 — 经过辩论后仍存在的分歧
    • 建议的后续方案 — 主要建议及其理由
    • 异议观点 — 最有力的少数派立场,并注明具体顾问(切勿省略)
    • 风险缓解 — 针对异议观点所关切的问题提出具体控制措施
  6. 如果处于嵌入模式,到此为止,并将综合内容返回给父技能。

步骤 7:记录决策(仅限标准模式)

一次提一个问题,共问两个问题。先询问用户选择哪条路径,将综合内容中提到的两到三条路径作为选项:

  • A) <综合内容中建议的路径>(推荐)
  • B) <综合内容中的第二条路径>
  • C) <综合内容中的第三条路径>(当综合内容提及第三条路径时)

用户回答第一个问题后,再询问哪个触发条件会重新开启这项决策,提供综合内容所列风险中的两到三个触发条件作为选项:

  • A) <综合内容风险中建议的触发条件>(推荐)
  • B) <综合内容风险中的第二个触发条件>
  • C) <综合内容风险中的第三个触发条件>(当综合内容提及第三个触发条件时)

不要添加 Other 选项。将两个回答原样记录在 ## 已记录的决策 下。

结构化提问工具会提供自定义答案;如果没有此类工具,则在聊天中提出同一个问题,并接受用户的自定义回答。

辩论协议(全程执行)

  • 先充分阐述对方观点:每次反驳都必须先呈现对立观点最有力的版本。
  • 需要证据:主张需要有推理或示例支撑,不能只是断言。
  • 保持立场真实:每种角色都应基于其真正关注的优先事项进行论证——安全倡导者绝不为图方便而轻视风险;务实工程师不会为了理论上的纯粹而牺牲交付。
  • 不制造虚假共识:辩论后仍存在的分歧应保留在综合内容中,而不是被掩盖。
  • 让步协议:让步的顾问要说明让步的内容及原因;坚持立场的顾问要说明什么情况会改变自己的看法。

如果任何已分配角色违反这些协议(例如,安全倡导者为了方便而同意在没有控制措施的情况下发布),则拒绝其回复,并在重新分配时提醒其遵守协议。

协调者职责

  • 确保每位顾问在每个阶段都有充分的发言机会。
  • 指出顾问之间各说各话的情况(对同一术语的定义不同,或讨论范围不同)。
  • 找出问题框架中隐藏的假设和虚假的二分法。
  • 综合各方意见,但不要强行达成一致——观点多元是输出的一部分,而不是问题。

错误处理

  • 角色分配失败或返回不符合角色的内容:明确提醒其遵守协议,并提供角色名单背景后重新分配。如果再次失败,则在综合内容中说明该失败,并继续处理其余顾问。
  • 出现的实质性分歧少于 2 个:这个难题的重要性可能低于预期。向用户说明这一点,并询问是继续生成精简版综合内容,还是中止顾问团讨论。
  • 所有顾问过快达成共识:将 devils-advocate 加入角色名单(如尚未包含),并根据逐渐形成的共识重新执行步骤 4。
  • 用户要求的角色不在标准目录中:阅读 references/archetypes.md 了解自定义顾问团的指引,或提议最接近的标准角色,并在继续前与用户确认。

评论

支持 Markdown