Back to skills
SKILL.md
Llm Council
ASecurityLLM Council — Karpathy 式多模型议会。5 个 AI 顾问并行回答问题, 匿名互评打分,主席综合最佳答案。触发:/llm-council, /council, "开会讨论", "council", "议会模式"
- 2 stars
- 0 votes
- 0 copies
- 2 views
- Added September 2, 2026
Works with
Security analysis
100/100npx -y skills add shengdabai/Tony-Claude-Code-Skills --skill llm-council --agent claude-codeAre you the author of Llm Council?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shengdabai-llm-council)---
name: llm-council
version: 2.0.0
description: |
LLM Council — Karpathy 式多模型议会。5 个 AI 顾问并行回答问题,
匿名互评打分,主席综合最佳答案。触发:/llm-council, /council,
"开会讨论", "council", "议会模式"
allowed-tools:
- Agent
- Bash
- Read
- Write
- Grep
- Glob
- AskUserQuestion
---
# LLM Council — 多模型议会决策系统
灵感来自 [Andrej Karpathy 的 LLM Council](https://github.com/karpathy/llm-council)。
## 核心流程
```
用户提问 → Stage 1: 5个顾问分批回答 (3 Agent 并行 → Codex → Gemini 顺序)
→ Stage 2: 匿名互评打分 (3 Agent 并行)
→ Stage 3: 主席综合最终答案
```
---
## Step 0: 解析输入
用户输入格式:
- `/council <问题>` — 直接提问
- `/llm-council <问题>` — 同上
- `/council` 无参数 — 用 AskUserQuestion 询问问题
如果用户没有提供问题,用 AskUserQuestion 询问:
> 请输入你想让 AI 议会讨论的问题。可以是技术决策、架构选择、方案对比等任何需要多角度分析的问题。
---
## Step 1: 检查工具可用性 + 环境预热
**必须用绝对路径检查**,不要用 `which`(shell PATH 不可靠):
```bash
CODEX="/Users/adam/.local/bin/codex"
GEMINI="/Users/adam/.nvm/versions/node/v24.14.0/bin/gemini"
CODEX_OK=$($CODEX --version 2>&1 && echo "OK" || echo "FAIL")
GEMINI_OK=$($GEMINI --version 2>&1 && echo "OK" || echo "FAIL")
echo "Codex: $CODEX_OK"
echo "Gemini: $GEMINI_OK"
```
至少需要 Claude(内置)。Codex 和 Gemini 不可用时,用额外的 Claude subagent 补位。
目标始终是 5 个顾问。
---
## Step 2: Stage 1 — 分批征集意见
向用户展示:
```
🏛️ LLM COUNCIL 已召集
════════════════════════════════════════════════════════════
议题: <用户的问题>
顾问: Advisor A (Claude Opus) | Advisor B (Claude Sonnet) | Advisor C (GPT/Codex) | Advisor D (Gemini) | Advisor E (Claude Haiku)
════════════════════════════════════════════════════════════
Stage 1/3: 征集独立意见中...
```
### ⚠️ 关键调度规则(必须严格遵守)
Codex 和 Gemini 是前台 Bash 命令,**不能**和 Agent subagent 在同一条消息中并行派发。
必须分两批执行:
**第一批(并行)**:3 个 Agent subagent 同时派发
- Advisor A (Opus) + Advisor B (Sonnet) + Advisor E (Haiku)
**第二批(顺序)**:等第一批完成后,依次执行 Codex 和 Gemini
- Advisor C (Codex) → Advisor D (Gemini)
### Advisor A — Claude Opus (Agent subagent)
```
Agent(model=opus, subagent_type=general-purpose):
"你是 LLM Council 的一位独立顾问。请对以下问题给出你的深度分析和建议。
要求:独立思考,给出有理有据的回答,包含优缺点分析。
回答控制在 500 字以内。
问题: <用户的问题>"
```
### Advisor B — Claude Sonnet (Agent subagent)
```
Agent(model=sonnet, subagent_type=general-purpose):
"你是 LLM Council 的一位独立顾问。请对以下问题给出你的深度分析和建议。
要求:独立思考,给出有理有据的回答,包含优缺点分析。
回答控制在 500 字以内。
问题: <用户的问题>"
```
### Advisor E — Claude Haiku (Agent subagent)
```
Agent(model=haiku, subagent_type=general-purpose):
"你是 LLM Council 的一位独立顾问。请对以下问题给出你的深度分析和建议。
要求:独立思考,注重实用性和可行性,给出简洁直接的建议。
回答控制在 300 字以内。
问题: <用户的问题>"
```
### Advisor C — GPT (via Codex CLI)
**等前三个 Agent 完成后再执行。** 使用绝对路径,不用 --json,直接读纯文本输出:
```bash
/Users/adam/.local/bin/codex exec "你是 LLM Council 的一位独立顾问。请对以下问题给出你的深度分析和建议。要求:独立思考,给出有理有据的回答,包含优缺点分析。回答控制在 500 字以内。问题: <用户的问题>" -s read-only 2>&1 | head -200
```
Bash 参数:`timeout: 180000`(3 分钟)
**Codex 输出验证**:如果输出为空或只有错误信息(不含中文实质内容),视为失败,立即用 Claude Sonnet Agent 补位(prompt 加"从工程实践角度")。
### Advisor D — Gemini (via Gemini CLI)
**等 Codex 完成后再执行。** 使用绝对路径:
```bash
/Users/adam/.nvm/versions/node/v24.14.0/bin/gemini -p "你是 LLM Council 的一位独立顾问。请对以下问题给出你的深度分析和建议。要求:独立思考,给出有理有据的回答,包含优缺点分析。回答控制在 500 字以内。问题: <用户的问题>" 2>&1 | head -200
```
Bash 参数:`timeout: 180000`(3 分钟)
**Gemini 输出验证**:如果输出为空或 exit code 非 0 或只有错误信息,视为失败,立即用 Claude Sonnet Agent 补位(prompt 加"从产品思维角度")。
收集所有 5 个回答,记为 Response A ~ E。
---
## Step 3: Stage 2 — 匿名互评
向用户展示:
```
Stage 2/3: 匿名互评中...
```
**核心规则:匿名化**
- 将 5 个回答编号为 Response 1 ~ 5(随机打乱顺序,不对应 A~E)
- 每个评审者看到的是**除自己之外的 4 个回答**
- 评审者不知道哪个回答来自哪个模型
**并行派发 3 个评审者**(全部用 Agent subagent,确保并行可靠):
### Reviewer 1 — Claude Opus (Agent subagent)
```
Agent(model=opus):
"你是 LLM Council 的匿名评审员。以下是针对同一问题的多个独立回答。
请从准确性、深度、实用性、逻辑性四个维度评分(1-10),并给出简短评语。
最后给出你的总排名(从最好到最差)。
原始问题: <问题>
Response 1: <打乱后的回答>
Response 2: <打乱后的回答>
Response 3: <打乱后的回答>
Response 4: <打乱后的回答>
Response 5: <打乱后的回答>
输出格式:
| Response | 准确性 | 深度 | 实用性 | 逻辑性 | 总分 | 评语 |
排名: [最佳 → 最差]"
```
### Reviewer 2 — Claude Sonnet (Agent subagent)
同样的 prompt,通过 Agent(model=sonnet) 执行。
### Reviewer 3 — Claude Haiku (Agent subagent)
同样的 prompt,通过 Agent(model=haiku) 执行。
**注意**:Stage 2 评审全部使用 Agent subagent 而非 Codex/Gemini CLI。
原因:评审 prompt 很长(包含5个完整回答),Codex/Gemini CLI 对超长 prompt 不稳定。
多模型多样性已在 Stage 1 顾问阶段体现,评审阶段优先保证可靠性。
收集所有评审结果。
---
## Step 4: Stage 3 — 主席综合
**主席由 Claude Opus 担任**(当前对话的主 agent 直接执行,不再派子 agent)。
综合所有评审结果,生成最终答案:
```
🏛️ LLM COUNCIL 最终裁决
════════════════════════════════════════════════════════════
📊 评审得分汇总:
| 顾问 | 模型 | R1评分 | R2评分 | R3评分 | 平均分 |
|------|------|--------|--------|--------|--------|
| A | Opus | 8.5 | 9.0 | 8.0 | 8.5 |
| B | Sonnet| 7.0 | 7.5 | 8.0 | 7.5 |
| C | GPT | 8.0 | 8.5 | 7.5 | 8.0 |
| D | Gemini| 7.5 | 7.0 | 7.5 | 7.3 |
| E | Haiku | 6.5 | 7.0 | 6.0 | 6.5 |
🏆 最佳回答: Advisor X (模型名)
📉 共识度: X% (评审排名一致性)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 主席综合意见:
<综合所有顾问的最佳观点,形成一个完整、准确、有深度的最终答案>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 关键分歧点:
<列出顾问之间的主要分歧,以及主席的判断>
🔍 各顾问原始回答可在上方 Stage 1 输出中查看
════════════════════════════════════════════════════════════
```
---
## 输出规范
1. **Stage 1 结果**:展示每个顾问的完整回答(标记模型来源)
2. **Stage 2 结果**:展示评审打分表(此时揭示匿名编号对应哪个顾问)
3. **Stage 3 结果**:主席综合最终裁决
---
## 降级策略
| 情况 | 处理 |
|------|------|
| Codex 输出为空/报错 | 立即用 Claude Sonnet Agent 补位(prompt 加"从工程实践角度") |
| Gemini 输出为空/报错 | 立即用 Claude Sonnet Agent 补位(prompt 加"从产品思维角度") |
| 两者都不可用 | 5 个顾问全部用 Claude(Opus×1 + Sonnet×2 + Haiku×2),不同 prompt 角度 |
| 某个顾问超时 | 标记为"缺席",用 4 个顾问继续 |
| 评审超时 | 用 2 个评审结果继续 |
### 输出验证规则
Codex/Gemini 的输出必须通过以下检查才算成功:
1. **非空**:输出不为空字符串
2. **有实质内容**:包含至少 50 个中文字符或 200 个英文字符
3. **非纯错误**:不是纯粹的错误信息(如 "Error:", "FATAL", "command not found")
任何一项不通过,立即启动对应的 Claude Agent 补位,不要重试 CLI。
---
## CLI 调用铁律(必须遵守)
1. **绝对路径**:Codex 用 `/Users/adam/.local/bin/codex`,Gemini 用 `/Users/adam/.nvm/versions/node/v24.14.0/bin/gemini`
2. **不用 --json**:Codex 直接读纯文本输出,不做 JSON 解析
3. **不用 2>/dev/null**:用 `2>&1` 保留错误信息用于诊断
4. **管道 head -200**:限制输出长度,防止上下文爆炸
5. **timeout: 180000**:Bash 工具的 timeout 参数设为 180 秒
6. **前台执行**:不用 `run_in_background`(后台模式 PATH 丢失导致 exit 127)
7. **顺序执行**:Codex 和 Gemini 不能互相并行,必须一个完成后再执行下一个
8. **不与 Agent 并行**:Codex/Gemini 的 Bash 调用不要和 Agent subagent 放在同一条消息中
---
## 注意事项
- **分批调度**:Stage 1 分两批(3 Agent 并行 → Codex/Gemini 顺序),Stage 2 全部用 Agent 并行
- **匿名化是核心**:Stage 2 中评审者不能看到模型名称,防止偏见
- **打乱顺序**:每个评审者看到的回答顺序应不同,避免位置偏见
- **主席不参与评审**:主席只在 Stage 3 综合,不给自己的回答打分
- **成本意识**:整个流程约消耗 5 次顾问调用 + 3 次评审调用 = 8 次 LLM 调用
- **失败即补位**:CLI 调用失败不重试,直接用 Agent 补位,保证流程不阻塞
Attribution
Comments
Loading comments…