npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@moyu-build/council

v0.5.1

Published

Council — 你的思考议会。捕获对话, 蒸馏思维 skill, 召集多 persona 辩论。CLI + MCP server, 跨 Claude Desktop / Cursor / Claude Code 通用。

Downloads

1,138

Readme

Council

npm version npm downloads License: MIT MCP Node

Your personal thinking council for the AI era.

Council turns your real conversations into reusable self-personas, then lets you convene them with mentors and roles across CLI, Web, and MCP.

Author: 墨宇 (Siyu Deng) · License: MIT · Status: EvoTavern Hackathon 2026
Stack: Node 20+ · TypeScript · MCP Protocol · Anthropic Claude (Haiku 4.5) · Vite + React + Tailwind


Hackathon Submission

如果你是第一次来到这个项目, 建议先看路演材料, 再决定要不要深入代码。

| Audience | Material | Format | |---|---|---| | 评委 / 导师 | 横屏路演 Deck | PDF | | 评委 / 导师 | 横屏路演源文件 | PPTX | | 移动端浏览 | 竖屏路演 Deck | PDF | | 移动端浏览 | 竖屏路演源文件 | PPTX | | 现场讲述 | 6 分钟 Pitch 稿 | Markdown | | 现场 Demo | Demo Runbook | Markdown | | 叙事背景 | Story Narrative | Markdown |

更多演讲材料、架构图和设计稿见 docs/README.md

什么是 Council

Council 不是一个“替你思考”的 Agent, 而是一套把你的思考资产结构化、可复用、可召集的个人认知运行时。

  • capture: 把真实对话沉淀为可追踪的认知素材
  • distill: 从素材里蒸馏出属于你的 self personas
  • convene: 让 self、mentor、role 在一个议会里相互质疑并形成结论
  • export --mcp: 把这套能力暴露给 Claude Desktop、Cursor、Cherry Studio 等客户端

一句话说: Evolver 让 Agent 自我进化。Council 让人, 自我进化。

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 草稿 |

LLM 调用模式 (v0.4 起两种自动选择)

Council 在 MCP 模式下会自动判断该用哪种方式调 LLM:

| 模式 | 何时启用 | 特征 | |------|---------|------| | BYOK (Anthropic API) | 配了 ANTHROPIC_API_KEY | ⚡ 流式 / 不弹窗 / 用你的 API 账单 | | MCP Sampling (借宿主) | 没配 Key, 客户端支持 sampling | 🆓 用客户端订阅 / 不流式 / 客户端可能弹窗 approve |

说人话: 如果你已经在 Claude Desktop / Claude Code 里付了订阅, 不用再配 API Key——Council 会自动反向请求宿主跑 LLM. 在 Cursor 等部分支持的客户端也能用. CLI 和 council live (本地浏览器) 仍然必须 BYOK, 因为它们没有"宿主"可借.

取舍: Sampling 不流式 (议会失去逐字现场感), 部分客户端会每次弹 approve. 重度使用建议配 Key 走 BYOK 模式, 体验更顺.

接入 MCP 客户端

Claude Code (零配置, 借用客户端 LLM):

claude mcp add council -- npx -y @moyu-build/council@latest serve

不传 -e ANTHROPIC_API_KEY 时, Council 自动用 Sampling 模式借 Claude Code 的 LLM. 想走 BYOK (流式 + 不弹窗) 就加 -e ANTHROPIC_API_KEY=sk-ant-....

Claude Desktop / Cursor / Cherry Studio (改 JSON 配置):

零配置 (借宿主 LLM, 推荐):

{
  "mcpServers": {
    "council": {
      "command": "npx",
      "args": ["-y", "@moyu-build/council@latest", "serve"]
    }
  }
}

走 BYOK (体验更顺, 流式 + 不弹窗):

{
  "mcpServers": {
    "council": {
      "command": "npx",
      "args": ["-y", "@moyu-build/council@latest", "serve"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
    }
  }
}

客户端首次启动会触发 npx 拉取最新版, 之后命中 npm 缓存秒启动。@latest 标签确保你跟主分支。 数据落在 ~/.council/, 跨客户端共享同一份身份档案。 启动日志在 stderr (Claude Desktop 在 ~/Library/Logs/Claude/mcp.log), 第一行会告诉你当前用的是 anthropic-api 还是 mcp-sampling.


架构 (三层解耦)

┌─ 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 客户端): 只读订阅事件。互相不知道对方存在。

设计哲学

  1. 你的数据属于你~/.council/ 是纯 Markdown。Git-trackable, 可审计, 可导出, 可删除。没有数据库, 没有云依赖。
  2. 协议高于产品 — 兼容 SKILL.md / MCP / AGENTS.md 三大标准。花叔的人物 skill 可以直接作为 mentor persona, Second Me 的模型可以作为 self persona 槽, Hermes/Evolver 蒸馏出的 skill 可以作为能力模块。Council 不竞争, 是协同层
  3. 分歧是特性 — 永远同意你的议会是你不需要的议会。synthesis 必须标出"仍存分歧", 不允许和稀泥。
  4. 减法是纪律 — CLI + Markdown + MCP + 一页式 Web。没有 web UI dashboard, 没有账号, 没有训练, 十年后仍然成立。
  5. 主语是人 — 这不是功能差异, 是世界观差异。任何对手把 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)