Token导航 LogoToken导航TokenDH.com
council (Dadcoachengineer) logo
办公协作stdio官方级别未说明来源级核验

council (Dadcoachengineer)

MCP Server

Council是一个AI智能体协调平台,支持多智能体通过辩论、提案、修订和投票进行决策,适用于需要结构化多智能体协作和人类监督的场景。

工具数

21

提示词数

0

GitHub Stars

6

资源数

0
TypeScriptClaude团队协作ClaudeCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

dadcoachengineer

提供方

dadcoachengineer

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d \

详细介绍

Council

A boardroom for your AI agents.

Multi-agent orchestration over MCP — deliberation, voting, and human oversight built in.

Quick Start · How It Works · Configuration · Architecture · Contributing

______________________________________________________________________

Council是一个协调器,让人工智能代理对决策进行辩论、提出建议、改进和投票,就像公司董事会一样。代理通过连接 主控程序 (模型上下文协议),通过理事会的信息总线进行沟通,并遵循结构化的审议阶段。人类通过实时web UI来审查和批准决策。

为什么是理事会?

  • 结构化多智能体审议 --不仅仅是聊天,还有调查、提案、修正案和正式投票
  • 可配置的治理 --法定人数规则、否决权、加权投票、5种投票方案、升级政策
  • 默认情况下,人在循环中 --每个决定在执行前都需要人工审查
  • MCP本地 --代理作为标准MCP客户端连接,带来自己的工具和功能
  • 零配置代理 --在YAML中定义人物角色;理事会负责产卵、路由和状态管理
  • 持久性药剂 --代理可以在会话之间保持连接,接收新的任务而无需重新生成
  • 动态投票权重 --专业知识主题匹配会自动调整每个会话的代理影响力
  • 多用户身份验证 --基于会话的身份验证,可选TOTP 2FA和基于角色的访问控制
  • MCP也适用于人类 --一个专用 /mcp/user 端点允许ClaudeDesktop、Cursor和VS Code通过API密钥验证来管理会话、审查决策和浏览资源

运作原理

  1. 事件到达 --GitHub webhooks、通用webhooks或手动触发器
  2. 议会路线 根据事件类型、标签和专业知识选择合适的代理
  3. 特工调查 通过MCP工具自主协商
  4. 有人提议 并在多轮审议中进行了辩论
  5. 提出修正案 --代理人在投票前对提案进行完善
  6. 代理人投票 --加权多数、绝对多数、一致、基于同意或咨询
  7. 火灾升级规则 关于死锁、超时、否决或仲裁失败
  8. 人类评论 web仪表板中的最终决定

所有沟通均通过理事会进行。代理之间从不直接对话——理事会执行通信图,保存每条消息,并驱动状态机。

快速开始

先决条件

  • Node.js 22+
  • pnpm

安装并运行

pnpm install
pnpm dev

服务器启动于 http://localhost:3000 使用web仪表板和默认开发配置。

使用示例板运行

CONFIG_PATH=config/examples/board-of-directors.yaml pnpm dev

这将产生一个4人代理的董事会(CTO、CPO、Legal、CFO),其中包含升级规则、否决权和加权投票权。

更多示例配置 config/examples/: minimal-two-agent, code-review-council, security-review-board, incident-response-team, advisory-panel, momentumeq-board (6个代理板,具有动态权重和会话主题)。

运行测试

pnpm test

码头工人

理事会每次推送Docker镜像到GitHub容器注册表 main 以及版本标签。

拉取最新图像:

docker pull ghcr.io/dadcoachengineer/council:main

使用配置文件运行:

docker run -d \
  --name council \
  -p 3000:3000 \
  -v council-data:/app/data \
  -v $(pwd)/config:/app/config:ro \
  -e CONFIG_PATH=/app/config/examples/board-of-directors.yaml \
  ghcr.io/dadcoachengineer/council:main

或者使用Docker Compose:

cd docker
docker compose up --build

组合文件挂载 config/ 只读,并将SQLite数据库保存在命名卷中。

可用图像标签:

标签描述
main主分支的最新构建
v1.0.0, v1.0等等。语义版本标签(发布时)
sha-abc1234固定在一个特定的承诺上

体积:

路径目的
/app/dataSQLite数据库(坚持这个!)
/app/config议会YAML配置文件(只读挂载)

集装箱露出端口 3000 并包括在以下地点进行健康检查 /api/health.

配置

理事会完全通过YAML配置。看 config/examples/board-of-directors.yaml 一个完整的工作示例。

council:
  name: "Product Strategy Board"

  agents:
    - id: cto
      role: "Chief Technology Officer"
      expertise: [architecture, security, scalability]
      can_veto: true
      voting_weight: 1.5
      persistent: true          # Stay connected across sessions
      system_prompt: "You are the CTO..."

  rules:
    quorum: 3
    voting_threshold: 0.66
    voting_scheme:
      type: supermajority
      preset: two_thirds
    enable_refinement: true
    dynamic_weights:               # Optional: expertise-topic weight adjustment
      enabled: true
      expertise_match_bonus: 0.5   # Added per matching expertise tag
      max_multiplier: 3.0          # Cap on total effective weight
    escalation:
      - name: "deadlock_retry"
        trigger: { type: deadlock }
        action: { type: restart_discussion }

  event_routing:
    - match: { source: github, type: issues.opened, labels: [bug] }
      assign:
        lead: cto
        consult: [cpo]
        topics: [architecture, security]  # Session expertise tags

配置部分

第节目的
council.agents代理人角色——角色、专业知识、投票权重、否决权、系统提示
council.rules治理——法定人数、阈值、投票方案、细化、最大轮次、动态权重
council.rules.escalation死锁、超时、否决、法定人数失败或最大轮次时自动升级
council.rules.dynamic_weights在计票时可选择专业主题权重调整
council.event_routing按来源、类型、标签和主题将事件路由给领导/咨询代理
council.communication_graph控制哪些代理可以相互发送消息
council.spawner代理启动模式: log (dev), webhook,或 sdk (生产)

代理 persistent 旗帜

代理商与 persistent: true 在多个会话中保持联系:

  • 他们收到存储在数据库中的稳定身份验证令牌
  • 创建新会话时,编排器通过MCP通知它们,而不是重新生成
  • 他们可以使用 council_get_assignments 工具
  • SDK生成的持久代理在循环中运行,处理来自内部队列的会话

手动代理示例

examples/manual-agent.ts 该脚本演示了如何将外部MCP客户端作为独立代理连接到Council。运行它:

npx tsx examples/manual-agent.ts

投票方案

方案工作原理
weighted_majority加权投票,阈值通过(默认)
supermajority需要2/3或3/4的多数票,或自定义阈值
unanimous每一位非弃权选民都必须批准
consent_based除非有人正式反对,否则通过
advisory不具约束力——始终通过,结果仅供参考

升级规则

在审议过程中,当事情发生意外时,升级规则会自动启动。

触发器火灾发生时
deadlock投票结果出现分歧,没有明确的获胜者
quorum_not_met没有足够的代理人投票
veto_exercised一位拥有否决权的代理人阻止了该提案
timeout某个阶段超过了其时间限制
max_rounds_exceeded审议回合太多
行动它做什么
escalate_to_human标记会话以供人工审核
restart_discussion将审议重新安排到下一轮
add_agent引入额外的代理
auto_decide强制做出决定(批准/拒绝/升级)
notify_external将webhook发送到外部服务

规则支持 priority 订购, stop_after 在第一场比赛后停止,以及 max_fires_per_session.

认证

理事会使用基于多用户会话的身份验证,并可选择TOTP双因素身份验证。

  • 首次运行设置: POST /auth/setup 创建初始管理员用户
  • 登录: POST /auth/login 返回会话cookie;支持可选的TOTP验证 POST /auth/2fa/verify
  • 用户管理:管理员可以在以下位置创建和管理用户 /api/admin/users
  • MCP端点(代理): /mcp 免于身份验证——代理使用自己的身份验证 x-agent-token 头球
  • MCP端点(用户): /mcp/user 通过以下方式进行身份验证 Authorization: Bearer --适用于人类MCP客户端
  • API密钥管理:管理员在创建/列出/撤销API密钥 /api/admin/api-keys

建筑

src/
  engine/    Pure logic — orchestrator, voting, escalation, spawner, message bus
  server/    HTTP layer — Express 5 routes, MCP server, WebSocket, auth, DB
  web/       Frontend — Preact + Vite dashboard
  shared/    Types, Zod schemas, event definitions (imported by all layers)

REST API

终点目的
POST /webhooks/githubGitHub webhook接收器(HMAC验证)
POST /webhooks/ingest通用webhook接收器
GET /api/sessions列出审议会议
GET /api/sessions/:id会话详细信息,包括消息、投票、决定
POST /api/sessions创建手动会话
POST /api/sessions/:id/review提交人工审核
GET /api/events列出传入事件
GET /api/agents列出代理连接状态
GET /api/decisions列出待决决定
POST /auth/setup首次运行管理员用户创建
POST /auth/login登录(返回会话cookie)
GET /api/admin/users列出用户(仅限管理员)
POST /api/admin/api-keys为用户创建API密钥(仅限管理员)
GET /api/admin/api-keys列出用户的API密钥(仅限管理员)
DELETE /api/admin/api-keys/:id吊销API密钥(仅限管理员)
GET /api/admin/agent-tokens列出持久代理令牌(仅限管理员)
POST /api/admin/agent-tokens/:agentId提供持久令牌(仅限管理员)
DELETE /api/admin/agent-tokens/:agentId撤销持久令牌(仅限管理员)
ws://host/wsWebSocket用于实时UI更新

MCP工具(面向代理)

代理连接到 /mcp 通过Streamable HTTP并使用以下工具:

工具说明
council_get_context获取待处理任务、消息和会话状态
council_get_session完整的会议细节,包括投票和阶段
council_send_message向代理发送消息或广播(强制图形)
council_consult_agent请求另一位董事会成员提供意见
council_create_proposal制定一份正式提案供审议
council_submit_findings提交调查结果
council_cast_vote理性投票(价值取决于投票方案)
council_propose_amendment对当前提案提出更改
council_resolve_amendment接受或拒绝修正案(主要代理人)
council_get_voting_info获取投票方案和有效投票值
council_list_sessions列出带有可选筛选器的会话
council_list_councils列出可用的议会
council_get_assignments获取当前会话分配(持久代理)

MCP工具(面向用户)

人类MCP客户端(克劳德桌面、光标、VS代码)连接到 /mcp/user 使用API密钥并访问:

工具说明
council_user_list_sessions列出带有可选相位过滤器的会话
council_user_get_session完整的会话详细信息,包括消息、投票和决定
council_user_create_session创建新的审议会议
council_user_submit_review批准、拒绝或发回决定
council_user_list_pending_decisions列出等待人工审查的决定
council_user_get_agents获取代理连接状态
council_user_transition_phase手动推进会话阶段
council_user_ingest_event接收事件以触发路由

资源 (council:// URI方案): config, agents, decisions/pending, sessions, sessions/{sessionId}

提示: start-deliberation, review-decisions, check-agents

环境变量

变量默认值描述
PORT3000服务器端口
HOST0.0.0.0服务器主机
DB_PATH./data/council.dbSQLite数据库路径
CONFIG_PATH--理事会YAML配置路径
MCP_BASE_URLhttp://localhost:3000/mcpURL代理用于连接回
GITHUB_WEBHOOK_SECRET--GitHub webhook HMAC密钥

技术栈

运行时Node.js 22+,TypeScript 5.7+
服务器快递5
前端Preact+Vite
数据库SQLite(更好的平方3+Drizzle ORM)
代理协议通过@modelcontextprotocol/sdk实现MCP(模型上下文协议)
特工产卵基于Claude Agent SDK或webhook
测试Vitest——265次测试

贡献

欢迎投稿!议会还处于早期阶段,还有很多地方需要改进。

良好的第一个领域:

  • 新的投票方案 --实施 VotingScheme 接口在 src/engine/voting-schemes/
  • 新的升级行动 --在中添加处理程序 src/engine/escalation-engine.ts
  • Web UI改进 --中的Preact仪表板 src/web/ 可以用抛光剂
  • 新产卵器后端 --在中添加Claude SDK的替代方案 src/engine/spawner.ts
  • 文档 --示例、教程和指南

开发工作流程

pnpm install          # Install dependencies
pnpm dev              # Start dev server with hot reload
pnpm test             # Run test suite
npx tsc --noEmit      # Type check

提交更改

  1. 分叉仓库并创建功能分支
  2. 通过测试进行更改
  3. pnpm testnpx tsc --noEmit
  4. 用摘要和测试计划打开PR

许可证

Apache 2.0——请参阅 许可证通知.

目录标签

目录标签

TypeScriptClaude团队协作多智能体协作本地部署决策支持系统自动化治理AI协调人类监督

支持客户端

ClaudeCursorVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

21

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP