一个真正的审议共识型MCP服务器,其中AI模型在多轮次中进行辩论并完善各自立场。
云模型辩论 (Claude Sonnet, GPT-5.1 Codex, Gemini):
mcp__ai-counsel__deliberate({
question: "我们应该使用REST还是GraphQL作为我们的新API?",
participants: [
{cli: "claude", model: "claude-sonnet-4-5-20250929"},
{cli: "codex", model: "gpt-5.1-codex"},
{cli: "gemini", model: "gemini-2.5-pro"}
],
mode: "conference",
rounds: 3
})
结果: 达成混合架构共识(置信度0.82-0.95)• 查看完整记录
本地模型辩论 (100%私有,零API成本):
mcp__ai-counsel__deliberate({
question: "我们应该优先考虑代码质量还是交付速度?",
participants: [
{cli: "ollama", model: "llama3.1:8b"},
{cli: "ollama", model: "mistral:7b"},
{cli: "ollama", model: "deepseek-r1:8b"}
],
mode: "conference",
rounds: 2
})
结果: 第一轮辩论后有2个模型改变立场 • 查看完整记录
AI咨询实现了真正的审议共识,其中模型可以看到彼此的回答并在多轮次中完善各自的立场:
快速(单轮次)或会议(多轮次辩论)query_decisions工具查询过去决策(找到矛盾、追踪演变、分析模式)几分钟内启动并运行:
.mcp.json示例设置您的MCP客户端,参见[在Claude Code中配置](#在Claude Code中配置)。python server.py启动服务器,并使用用法中的示例触发deliberate工具。尝试一次审议:
// 混合本地和云端模型,本地模型零API成本
mcp__ai-counsel__deliberate({
question: "我们应该为新功能添加单元测试吗?",
participants: [
{cli: "ollama", model: "llama2"}, // 本地
{cli: "lmstudio", model: "mistral"}, // 本地
{cli: "claude", model: "sonnet"} // 云端
],
mode: "quick"
})
⚠️ 模型大小对审议很重要
推荐:使用7B-8B+参数模型(如Llama-3-8B、Mistral-7B、Qwen-2.5-7B)以获得可靠的结构化输出和投票格式。
不推荐:小于3B参数的模型(例如Llama-3.2-1B)可能难以处理复杂指令并产生无效投票。
可用模型:claude(sonnet, opus, haiku),codex(gpt-5.1-codex),droid,gemini,HTTP适配器(ollama, lmstudio, openrouter)。详情参见CLI模型参考。
关于模型选择和选择工作流,请参阅模型注册表与选择器。
python3 --versiongit clone https://github.com/blueman82/ai-counsel.git
cd ai-counsel
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux; Windows: .venv\Scripts\activate
pip install -r requirements.txt
python3 -m pytest tests/unit -v # 验证安装
✅ 准备就绪!服务器包含核心依赖项以及可选的收敛后端(scikit-learn, sentence-transformers)以达到最佳准确性。
编辑config.yaml以配置适配器和设置:
adapters:
claude:
type: cli
command: "claude"
args: ["-p", "--model", "{model}", "--settings", "{\"disableAllHooks\": true}", "{prompt}"]
timeout: 300
ollama:
type: http
base_url: "http://localhost:11434"
timeout: 120
max_retries: 3
defaults:
mode: "quick"
rounds: 2
max_rounds: 5
注意:使用type: cli用于CLI工具,type: http用于HTTP适配器(Ollama, LM Studio, OpenRouter)。
控制哪些模型可供选择。每个模型都可以启用或禁用而不删除其定义:
model_registry:
claude:
- id: "claude-sonnet-4-5-20250929"
label: "Claude Sonnet 4.5"
tier: "balanced"
default: true
enabled: true # 模型处于活动状态且可用
- id: "claude-opus-4-20250514"
label: "Claude Opus 4"
tier: "premium"
enabled: false # 暂时禁用(成本控制、测试等)
启用字段行为:
enabled: true(默认)- 模型出现在list_models中并且可用于审议enabled: false - 模型从选择中隐藏但定义保留以便轻松重新启用deliberate调用中明确指定也无法使用使用案例:
当意见稳定时,模型会自动收敛并停止审议,从而节省时间和API成本。状态:已收敛(≥85%相似度)、正在精炼(40-85%)、分歧(<40%)或僵局(稳定分歧)。投票优先:当模型进行投票时,收敛反映投票结果。
→ 完整指南 - 阈值、后端、配置
模型以置信水平(0.0-1.0)、理由和继续审议信号进行投票。投票确定共识:一致(3-0)、多数(2-1)或平局。相似选项在0.70+相似度阈值下自动合并。
→ 完整指南 - 投票结构、示例、集成
本地运行Ollama、LM Studio或OpenRouter以实现零API成本和完全数据隐私。与云端模型(Claude、GPT-4)混合使用。
→ 设置指南 - Ollama、LM Studio、OpenRouter、成本分析
添加新的CLI工具或HTTP适配器以适应您的基础设施。简单的3-5步过程,附带示例和测试模式。
→ 开发者指南 - 分步教程、真实世界示例
通过查询实际代码、文件和数据来使设计决策基于现实:
// MCP客户端示例(例如Claude Code)
mcp__ai_counsel__deliberate({
question: "我们应该从SQLite迁移到PostgreSQL吗?",
participants: [
{cli: "claude", model: "sonnet"},
{cli: "codex", model: "gpt-4"}
],
rounds: 3,
working_directory: process.cwd() // 必需 - 使工具能够访问您的文件
})
在审议过程中,模型可以:
TOOL_REQUEST: {"name": "read_file", "arguments": {"path": "config.yaml"}}TOOL_REQUEST: {"name": "search_code", "arguments": {"pattern": "database.*connect"}}TOOL_REQUEST: {"name": "list_files", "arguments": {"pattern": "*.sql"}}TOOL_REQUEST: {"name": "run_command", "arguments": {"command": "git", "args": ["log", "--oneline"]}}示例流程:
read_file检查当前配置database: sqlite, max_connections: 10search_code数据库查询优点:
支持的工具:
read_file - 读取文件内容(最大1MB)search_code - 搜索正则表达式模式(默认使用ripgrep或Python回退)list_files - 列出匹配glob模式的文件run_command - 执行安全只读命令(ls, git, grep等)控制工具行为在config.yaml中:
工作目录(必需):
deliberate工具时设置working_directory参数working_directory: process.cwd()在JavaScript MCP客户端中工具安全性(deliberation.tool_security):
exclude_patterns:阻止访问敏感目录(默认:transcripts/, .git/, node_modules/)max_file_size_bytes:read_file的最大文件大小(默认:1MB)command_whitelist:run_command的安全命令(ls, grep, find, cat, head, tail)文件树(deliberation.file_tree):
enabled:将存储库结构注入到第1轮提示中(默认:true)max_depth:目录深度限制(默认:3)max_files:包含的最大文件数(默认:100)适配器特定要求:
| 适配器 | 工作目录行为 | 配置 |
|---|---|---|
| Claude | 通过子进程自动隔离{working_directory} | 不需要特殊配置 |
| Codex | 没有真正隔离 - 可以访问任何文件 | 安全注意事项:模型可以读取{working_directory}之外的文件 |
| Droid | 通过子进程自动隔离{working_directory} | 不需要特殊配置 |
| Gemini | 强制执行工作区边界 | 必需:--include-directories {working_directory}标志 |
| Ollama/LMStudio | N/A - HTTP适配器 | 没有文件系统访问限制 |
了解更多:
“文件未找到”错误:
working_directorylist_files → read_file“访问被拒绝:路径匹配排除模式”错误:
transcripts/, .git/, node_modules/deliberation.tool_security.exclude_patterns在config.yaml中自定义Gemini“文件路径必须在工作区内”错误:
--include-directories标志使用了{working_directory}占位符工具超时错误:
deliberation.tool_security.tool_timeout以适应缓慢操作了解更多:
AI咨询从过去的审议中学习以加速未来的决策。两个核心能力:
当开始新的审议时,系统:
query_decisions进行语义搜索程序化查询过去的审议:
配置(可选 - 默认设置开箱即用):
decision_graph:
enabled: true # 默认开启自动注入
db_path: "decision_graph.db" # 解析到项目根目录(适用于任何用户/文件夹)
similarity_threshold: 0.6 # 调整以控制上下文相关性
max_context_decisions: 3 # 注入多少过去的决策
适用于任何用户从任何目录 - 数据库路径解析到项目根目录。