关于 Murmur
Murmur 是用于预演定价、发布、政策和危机反应的 MCP 服务。它结合确定性模拟引擎与宿主编码 Agent 的大模型生成内容,输出异议报告,但不提供经过验证的预测。
主要功能
- 01基于角色的确定性模拟
- 02Twitter 风格与 Reddit 风格信息流
- 03带反方观点的异议排序
- 04访谈模拟角色
- 05导出 Markdown 和 HTML 报告
- 06本地 SQLite 存储与断点续跑
适用场景
- 01探查定价调整可能引发的异议
- 02预演社区对产品发布的反应
- 03分析对政策或危机的反应
- 04比较不同情景的报告
MCP 相关
向 MCP 客户端提供 12 个工具、提示词和资源,用于创建模拟世界、添加素材、运行模拟及导出报告。宿主 Agent 通过计划/提交流程提供大模型生成内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Murmur
为定价和发布变更找出反对意见。在上线前预演各种论点——由你已经在付费使用的编码订阅提供支持。
Murmur 是一款 MCP 服务,可预演社区对定价、发布、政策或危机决策的反应:提供你的材料(定价页面、政策备忘录或事件简报),一群模拟角色便会在类似 Twitter 和 Reddit 的平台上展开讨论。你将获得一份按优先级排序的反对意见档案——每条意见都以最有力的形式呈现,并关联到背后的模拟帖子,还附有反方论据和面向真实用户的测试计划;此外,你还可以采访任意模拟角色,了解他们为何写下那些内容。这是一套结构化论据,而非经过验证的预测;模拟角色是虚构的批评者,不是你的客户。
无需 API 密钥,无需额外付费。 引擎是确定性的,不使用大模型;每次生成都由你现有连接中的编码 Agent大模型(Claude、Codex、Gemini、Antigravity、OpenCode、Hermes……)完成。该服务不包含任何网络代码——构建门禁会强制执行这一点(静态扫描打包文件和引擎源代码,并进行混淆扫描),此外还有一项运行时探测,会在将 fetch 替换为抛出异常的桩函数后执行引擎适配器;如果调用了 fetch,探测就会失败。
You: /murmur-predict How will r/programming react to the new pricing page?
Your agent: world_init → seed_add → ontology(plan/submit)
→ graph(build) → personas(plan/submit)
→ [sim(next_batch/submit)] × 8 rounds
→ report(plan/submit/export)
Result: .murmur/reports/pricing-reaction/report-1.md
(Mermaid sentiment charts, cited risks, post index, diffable)
为什么选择 Murmur
MiroFish 等工具通过服务端大模型实现社交模拟:你需要付费订阅、提供 API 密钥,而且数据会经过它们的云端。Murmur 则采用不同的架构——由宿主提供推理能力:
| 需要密钥的 SaaS | Murmur | |
|---|---|---|
| 大模型调用 | 使用它们的 API 密钥,费用由你承担 | 使用你现有订阅中的编码 Agent |
| 记忆 | 云端记忆服务,受配额限制 | 在 SQLite 中使用三层本地记忆,存于你的代码仓库中 |
| 产物 | Web 控制台 | .murmur/ 中的 Markdown 和 Mermaid 文件,可在任何 Git 托管平台上渲染 |
| 可复现性 | 近似 | 确定性引擎:相同种子 + 相同提交 ⇒ 生成逐字节相同的世界 |
| 运行位置 | 它们的服务器 | 你的机器上,通过单个 stdio 进程运行,零外发流量 |
引擎(世界状态、本体图、角色激活、信息流排序、转发放大、投票引力、病毒式传播、情感、立场迁移、升级检测、统计数据)完全由确定性计算构成。生成角色化帖子、起草报告正文、回答访谈问题等智能任务则由宿主 Agent 提供,并通过批量的规划/提交交互完成,因此一次工具调用就能复用多次生成。
安装
每个客户端只需一条命令(Node ≥ 20):
| 客户端 | 安装 |
|---|---|
| Claude Code | claude mcp add murmur -- npx -y murmur-mcp |
| Codex CLI | codex mcp add murmur -- npx -y murmur-mcp |
| Gemini CLI | gemini mcp add murmur -- npx -y murmur-mcp |
| Cursor | cursor mcp add murmur -- npx -y murmur-mcp |
| Antigravity | 在 Agent 配置中添加 mcpServers JSON:{"murmur":{"command":"npx","args":["-y","murmur-mcp"]}} |
| OpenCode | opencode.json → 添加相同的 mcpServers 项 |
| Hermes | 在 Hermes MCP 配置中添加相同的 mcpServers 项 |
| Windsurf | ~/.codeium/windsurf/mcp_config.json → 添加相同的项 |
| Cline / Continue | cline_mcp_settings.json / ~/.continue/config.yaml → 添加相同的项 |
| VS Code Copilot | .vscode/mcp.json → 添加相同的项 |
上述
npx -y murmur-mcp命令假设该软件包已发布到注册表。murmur-mcp这个 npm 名称尚未被认领,因此目前运行npx会失败——在首次发布之前,请使用下一条说明中的源码安装方式。
npx murmur-mcp doctor 也会打印每个代码片段(同时检查 Node、SQLite 原生模块和工作区),npx murmur-mcp init --client <id> 也会打印这些代码片段。init --client <id> --write 只会为 cursor、vscode、opencode 和 windsurf 写入配置文件;对于其他所有客户端(包括 Claude Code),它会打印代码片段,并要求你自行将其合并到 client.configPath 中。
从源码安装(首次
npm publish之前):在 monorepo 中运行npm install,然后直接运行node packages/server/dist/index.js(或者在packages/server中运行npm link,以使用全局murmur-mcp命令)。仓库上线后,发布产物将通过 npm 发布并附带来源证明(provenance)(npm i -g murmur-mcp)。
快速开始
- 为你的客户端安装(见上文)。
- 在你的仓库中放入一些材料——例如定价页面导出内容、常见问题、更新日志,或者运行
npx murmur-mcp init --template launch来生成一份待填写的简报。 - 在你的编码 Agent 中:
/murmur-predict How will developers react to our new pricing? Sources: pricing-page.md, FAQ.md
这条提示词是一份操作手册:你的 Agent 会依次调用全部 12 个工具,向你展示摘要以供审批,撰写报告,并且每张回执都会告诉它下一步该做什么。
一次运行实际需要多少成本。 不需要密钥,但也不是不花时间:默认的 8 轮世界会在你的宿主模型面前依次进行数百次生成,因此实际耗时取决于模型和批次大小,而不是 Murmur。尚未有人使用真实 LLM 完成端到端发布——包含黄金级字节完全一致的重放和洁净室发布门禁的 651 项测试套件使用模拟生成运行,而
npm run demo则会以无头模式运行完整流水线。请把首次真实运行当作演练,并从较少轮数开始。
运行期间进行试验:
/murmur-simulate How will r/programming react to the pricing change? Rounds: 4
… agent pauses, shows you the sentiment timeline …
You: inject "competitor undercuts us by 30%" and continue
/murmur-interview Ask @ada why she's so hostile about the migration guide
/murmur-resume pricing-reaction
你将获得
.murmur/murmur.db— 整个世界都存储在 SQLite 中(10 张表:worlds、seeds、entities、relations、personas、memories、posts、events、reports、generations)。复制目录即可移植;发生崩溃后,可从任一阶段边界继续运行。.murmur/{world}/graph.mmd— 以 Mermaid 表示的本体图(带类型的关系:alliance / opposition / influence / ownership,并附带张力分数)。.murmur/reports/{world}/report-N.md— 版本化的情景报告:Mermaidxychart情绪曲线、立场迁移柱状图、升级链、角色排行榜、确定性统计附录和帖子索引。报告会重新生成,绝不修改已有内容——可逐行比较两个情景的差异。.murmur/reports/{world}/report-N.html— 同一份报告的独立仪表板(report_export,其中format: "md" | "html" | "both"):内联 CSS + SVG 图表(情绪折线、阵营环形图、平台差异柱状图、轨迹预测)、KPI 卡片、引言集、风险登记表——不含 JavaScript,不发出外部请求,可安全提交或分享。它与.md共用一次引擎计算,因此两者的数值绝不会不一致。.murmur/{world}/interviews.jsonl+qa.jsonl— 记录的深度交互对话。.murmur/{world}/audit.jsonl— 每次计划/提交交互的审计轨迹。
工作原理
五阶段流水线(与该类别完全对等,专为 Agent 重新设计):
- Seeds — 添加文件(PDF/MD/TXT/CSV/JSON)、URL(由你的 Agent 获取,引擎绝不会获取)或粘贴的文本。按字节哈希去重。
- 本体 —
ontology_plan生成提取任务(seed 摘要 + 严格的 JSON schema);你的 Agent 的 LLM 提取实体、动机和事实依据;ontology_submit逐项验证,并在必要时精准重试。 - 图谱 — 确定性推导带类型的关系和张力;reddit 风格的社群;基于立场亲和度的关注关系图;导出为 Mermaid。
- 群体 — 根据本体推导原型分布;采用精简版 Big Five 特质;为每个实体设定立场;确定平台组合;在运行前审计和编辑个体。
- 模拟 — 每一轮中,引擎激活加权抽取的一部分角色,并为其整理个性化摘要(角色卡 ≤ 120 个令牌、排序后的动态、工作记忆、集体视角);你的 LLM 撰写他们的帖子/回复/投票;引擎负责摄取内容,运行平台机制(动态排序、转发放大、投票引力、病毒式传播阈值)、自然互动、三层记忆及其压缩、立场迁移和情绪跟踪。在轮次之间注入全知视角事件,观察发展轨迹变化。
- 报告 + 交互 — 输入确定性统计数据 + 证据包,输出叙述内容,并将版本化报告写入磁盘;随后可采访任意角色(基于其自身记忆和帖子——对从未见过的知识会拒绝作答),也可就整个运行过程进行询问并获得附有引用的回答。
上下文预算工程是引擎的约定,而非一厢情愿:角色卡设有上限;每个角色的动态都会排序并截断;记忆会在轮次之间压缩;任何工具响应都不会超过 12,000 个令牌(超大负载会写入磁盘,并返回可按 ID 获取的回执);批次大小会通过 world_config 自适应调整。
确定性:内容 ID 基于计数生成;所有随机性都来自世界种子,并通过命名流传递;每轮第 2–5 阶段都是存储状态的纯函数。黄金运行测试会重放记录的会话,并断言结果逐字节一致。
工具目录(12 个工具)
| 分组 | 工具 |
|---|---|
| 世界 | world_init world_list world_config |
| 种子 | seed_add seeds_review |
| 本体 | ontology(plan / submit) |
| 图谱 | graph(build / query / export) |
| 人设 | personas(plan / submit / inspect / edit) |
| 模拟 | sim(next_batch / submit / inject / summary / timeline) |
| 报告 | report(plan / submit / export) |
| 交互 | interact(target: "persona" / "run") |
每个整合前的名称(旧版 29 个工具的接口)在 MIGRATED_TOOLS(packages/server/src/tools/index.ts)中仍有对应条目,因此回执和错误消息会提示你所输入旧名称的新写法。
提示词(单命令操作手册):murmur-predict、murmur-simulate、murmur-interview、murmur-resume。资源:murmur://worlds、murmur://world/{id}/state、murmur://world/{id}/report/{rid}。
配置
// defaults (tune via world_config / sim_configure)
{
"rounds": 8, // 1–40
"batch": { "maxPersonas": 20, "maxFeedItems": 8, "personaCardTokens": 120 },
"context": { "maxResponseTokens": 12000 },
"engagement": { "viralityThreshold": 8, "organicCapPerPost": 0.6 },
"memory": { "episodicMaxRecords": 40 }
}
环境变量:MURMUR_WORKSPACE(覆盖工作区根目录;默认值:Git 仓库根目录)、MURMUR_LOG(stderr 日志级别;stdout 仅用于协议)。
保证(经测试,而非承诺)
- 永远无需 API 密钥 — 任何配置接口中都不存在密钥或令牌字段;cleanroom 门禁会静态检测已发布包中的外传 API、URL 或密钥模式,并在检测到时阻止发布;同时会审计依赖闭包中的网络库。
- 客户端中立 — 服务中完全没有针对特定客户端的分支;不同客户端之间的差异以代码片段和模板的形式放在
packages/adapters中。 - 可恢复性 — 崩溃后可安全地重新调用每个工具;会话可恢复至精确的阶段边界。
- 性能 — 在 24×8 默认规模下,引擎侧耗时为 1.48 秒;在 48×8 的旗舰规模下为 2.98 秒(包含报告渲染,不包含宿主大模型延迟;运行
node tools/scale-benchmark.mjs <personas> <rounds>可复现);包含 24 个人设、8 轮的世界可在单个 Agent 会话中完成。
仓库结构
packages/
engine/ deterministic simulation core (pure TS + SQLite adapter)
server/ the murmur-mcp npm package: 12 tools, resources, prompts, CLI
prompts/ playbook prompt packs
adapters/ per-client install snippets + config templates (10 clients)
templates/ scenario packs: launch, policy, crisis, finance, fiction
tests/
golden/ byte-identical replay tests + pipeline acceptance (F1–F7)
integration/ real MCP client ↔ server e2e over stdio
cleanroom/ the release gate (no-egress, no-key, deps, timing, isolation)
examples/ a ready-to-run demo scenario + paste-ready prompts
开发:npm install && npm run build && npm test(651 项测试)· npm run test:e2e · npm run cleanroom · npm run demo(无头完整流水线,无需大模型)。
许可证与来源
Apache-2.0。Murmur 是在洁净室中实现的:未复制任何 AGPL 许可项目的代码、提示词或配置(约束每项贡献的政策见 CONTRIBUTING.md)。“MiroFish”是第三方商标,仅用于事实比较。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。