Council
Your thinking, round-tabled.
Evolver 让 Agent 自我进化。Council 让人, 自我进化。
AI 在加速自我进化, 人这一条进化曲线还没人画。Council 是给"人"那一份 — 把你的思考外化成可召集的结构, 通过 MCP 暴露给任何 LLM 客户端 (Claude Desktop / Cursor / Cherry Studio)。
Author: 墨宇 (Siyu Deng) · License: MIT · Status: EvoTavern Hackathon 2026 Stack: Node 20+ · TypeScript · MCP Protocol · Anthropic Claude (Haiku 4.5) · Vite + React + Tailwind
5 分钟跑起来
# 1. 安装 (需要 Node 20+)
npm install -g @moyu-build/council
# 2. 准备 API key
echo "ANTHROPIC_API_KEY=sk-ant-..." > ~/.council.env
# 3. 初始化
council init
# 4. 体验三条主链路
council capture --file your-claude-chat.md # 摄入一段思考对话
council distill --auto # 蒸馏出 self persona
council convene "我该不该接这个外包" # 召集议会
council refine self:reframe-before-execute # 让已有 persona 吸收新洞见
# 5. MCP 接入 Claude Desktop / Cursor
council export --mcp
# 把打印出的配置贴进 claude_desktop_config.json / .cursor/mcp.json → 重启客户端
v0.3 起全部命令(含
council live网页圆桌)纯 Node 跑, 不再需要 Bun。
为什么要有 Council
每个做"个人 AI"的产品, 都在回答同一个问题: 怎么让 AI / Agent 自我进化、越来越像人?
Hermes 让 AI 和你一起成长。Second Me 训练你的数字分身。Evolver 给 Agent 装进化协议。花叔蒸馏思想家, 让你召唤他们进 Claude。
他们的主语都是 AI / Agent.
Council 反问了一个不一样的问题:
AI 在加速自我进化, 人这一条曲线呢? 谁替你画?
不是让 AI 替你思考。是让你的思考, 像 Agent 一样, 也能自我进化 — 通过结构化、对抗性议会、跨 LLM 召唤。
Evolver 让 Agent 自我进化。Council 让人, 自我进化。
这不是一个更好的 Agent。这不是 Agent。它是一种不同的主语 — 主语是人。
核心流程
真实对话 ──▶ capture ──▶ distill ──▶ 蒸馏出属于你的 self personas
│
你的问题 ──▶ convene ──▶ 召集 self + mentor (Naval/Jobs/Munger) + role (魔鬼代言人)
│
▼
各自独立表态 ──▶ 互相质疑 ──▶ 综合建议 + 明确分歧
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
终端 CLI 网页圆桌直播 MCP 可调用
(数据层) (议会可视化) (Claude/Cursor)
两种使用姿势
CLI (开发者/资深用户的本地运行时)
council capture ./my-claude-chat.md # 捕获对话
council distill --auto # 识别高光 + 蒸馏 self persona
council convene "我应该先做不完美的产品推出去吗"
每个命令的输出都是真实文件系统里的 Markdown。可 git init, 可手改, 可删除。
Web (让别人看到你议会的开法)
council convene "我应该全职做 Council 吗" --watch
同一条命令, 加 --watch。终端日志继续打印, 浏览器自动弹出一张圆桌。椅子亮起表示在发言, 虚线箭头表示互相质疑, 最后中央浮现一张羊皮纸决议卡 (共识 / 仍存分歧 / 如果今天必须决定 / 本次议会的新模式)。
# 或者只启动 live server, 不发起议会:
council live # 浏览器访问 http://localhost:3737
MCP (让 Claude Desktop / Cursor 等直接召集)
council export --mcp
# 把打印出来的配置贴进 claude_desktop_config.json → 重启 Claude Desktop
之后在 Claude Desktop 里:
你: 帮我决定要不要离职 Claude: 调用 council_convene... Claude: [返回你议会的结构化结论]
目录结构 (用户的议会就是文件系统)
~/.council/
├── identity.md # 告诉 Council 你是谁 (你手写)
├── config.yml # 模型配置 (默认 Haiku 4.5)
├── personas/
│ ├── self/<name>.md # 从你的对话蒸馏
│ ├── mentors/{naval,jobs,munger}.md # 预置
│ └── roles/{devils-advocate,first-customer}.md
├── sessions/<date>-<slug>.md # 捕获的原始对话
├── skills/<观点-slug>.md # 蒸馏出的高光 (按观点命名, 例: 真实性守门员是产品退化的防线.md)
├── transcripts/<date>-<slug>.md # 议会 transcript (人读的)
├── live/<run-id>.jsonl # 议会事件流 (网页/telemetry 订阅)
├── exports/mcp-server/ # MCP 导出产物
└── .state/distilled.json # 防重跑索引
Markdown + YAML + JSONL, 没有数据库。用户拥有完全控制权。
安装
路径 A · NPM (推荐, 90% 用户)
# 一次性试水, 不全局装
export ANTHROPIC_API_KEY=sk-ant-...
npx @moyu-build/council@latest init
npx @moyu-build/council@latest convene "我该不该 X"
# 或全局装 (装一次, 之后命令直接是 council)
npm i -g @moyu-build/council
council init
council convene "我该不该 X"
要求: Node ≥ 20。Anthropic API key.
v0.3 起
council live(网页圆桌直播) 也跑在 Node 上 (node:http+ws), 不再需要 Bun runtime。所有 npm 安装的用户开箱即用。
想从源码跑 / 贡献代码?
见 CONTRIBUTING.md. 源码级开发推荐 Bun (热重载 + TS 直跑), 但 Node 也能跑。
命令表
| 命令 | 用途 |
|---|---|
council init | 初始化 ~/.council/ |
council capture [--file/--clipboard] | 捕获一段对话为 session |
council distill [id|--auto] | 蒸馏 session 为 highlights + self personas |
council persona list | 列出所有 persona |
council persona add <path|url> | 导入外部 SKILL.md 作为 mentor |
council convene "<问题>" [--watch] | 召开议会。--watch 打开网页圆桌直播 |
council live | 仅启动 Live Server (端口 3737), 不发起议会 |
council feedback <transcript-id> | 三档评分 h/g/o |
council evolve | 扫全库, 标记 stale, 建议 merge |
council merge <a> <b> | 融合两个 persona |
council export --mcp | 导出 MCP Server 配置 |
council serve | 启动 MCP Server (stdio) |
MCP 工具
| Tool | 用途 |
|---|---|
council_who_am_i | 拉用户身份档案 + 全部可用 persona (会话开场调一次) |
council_list_personas | 列出可用 persona (轻量) |
council_convene | 召开议会, 返回 transcript |
council_ask_persona | 单独问某个 persona |
council_should_capture | 在 capture 前判断对话值不值得 |
council_capture_this | 把当前对话捕获并立即蒸馏 |
council_bootstrap_identity | 基于已有 self personas 反向回推 identity 草稿 |
接入 MCP 客户端
Claude Code (一行命令):
claude mcp add council -e ANTHROPIC_API_KEY=sk-ant-... -- npx -y @moyu-build/council@latest serve
Claude Desktop / Cursor / Cherry Studio (改 JSON 配置):
{
"mcpServers": {
"council": {
"command": "npx",
"args": ["-y", "@moyu-build/council@latest", "serve"],
"env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
}
}
}
客户端首次启动会触发
npx拉取最新版, 之后命中 npm 缓存秒启动。@latest标签确保你跟主分支。 数据落在~/.council/, 跨客户端共享同一份身份档案。
架构 (三层解耦)
┌─ CLI ─────────────── MCP Server ───────────── Web (浏览器/Pake app) ─┐
│ │
│ POST /api/command │
│ writes ▼ broadcast │
│ ┌──────── 事件总线 (events.ts) ────────┐ │
│ │ │ │
│ ├─▶ ~/.council/live/*.jsonl (真相) │ │
│ ├─▶ stderr (CLI 渲染) │ │
│ └─▶ WebSocket (网页订阅) │ │
│ │
│ convene / capture / distill / evolve <── 业务引擎 │
│ │ │
│ ▼ │
│ Claude Haiku 4.5 │
└──────────────────────────────────────────────────────────────────────┘
三层严格解耦:
- 数据层 (
~/.council/): 文件系统是单一真相。Git-trackable, 用户拥有。 - 运行时 (CLI + MCP + Live Server): 业务逻辑, 事件总线, API 调用。stdout 干净 (MCP 协议安全), 事件通过文件+订阅两路出去。
- 展示层 (CLI 渲染 / 网页圆桌 / MCP 客户端): 只读订阅事件。互相不知道对方存在。
设计哲学
- 你的数据属于你 —
~/.council/是纯 Markdown。Git-trackable, 可审计, 可导出, 可删除。没有数据库, 没有云依赖。 - 协议高于产品 — 兼容 SKILL.md / MCP / AGENTS.md 三大标准。花叔的人物 skill 可以直接作为 mentor persona, Second Me 的模型可以作为 self persona 槽, Hermes/Evolver 蒸馏出的 skill 可以作为能力模块。Council 不竞争, 是协同层。
- 分歧是特性 — 永远同意你的议会是你不需要的议会。synthesis 必须标出"仍存分歧", 不允许和稀泥。
- 减法是纪律 — CLI + Markdown + MCP + 一页式 Web。没有 web UI dashboard, 没有账号, 没有训练, 十年后仍然成立。
- 主语是人 — 这不是功能差异, 是世界观差异。任何对手把 Council 的功能抄光, 只要他们仍以"让 AI / Agent 自我进化"为目标, 他们就做不出 Council。
状态 · 下一步
- ✅ L0: 事件总线 + 结构化 synthesis + persona 视觉元数据
- ✅ L1: Web HTTP/WS server + Vite/React 圆桌页面 +
--watch - ✅ L2: 网页 capture/distill 流程 (粘贴 → 蒸馏 → 直接召集)
- ✅ L3: 链路 C 反哺 (refine + evolve) + 跨 LLM 验证 (Cursor / Claude Desktop)
- ✅ L4: live server 从 Bun 迁到 Node 原生 http + ws — npm 用户零额外安装
- 未来: 剪贴板监听自动 capture, 桌面端全局快捷键, Council 之间的互相借调
完整架构见 docs/architecture/architecture.md · 演讲材料见 docs/ · 贡献请看 CONTRIBUTING.md.
License
MIT © 墨宇 (Siyu Deng)