双摄像头MCP
](https://pypi.org/project/bicameral-mcp/)   
AI代理可以快速发送代码。他们忘记了你的团队达成的一致意见,在实现过程中出现的需求差距被埋藏在数千行代码中。
双摄像头MCP是一种 规范合规层 人工智能辅助工程。本地优先;作为一个 MCP服务器它接收你的会议记录、PRD和Slack线程,捕获任何未讨论的中期实现决策,由你的产品负责人异步批准,并将每个决策都绑定到实现它的代码上——这样你的代理就会发现它偏离了书面规范或口头规范的那一刻。
______________________________________________________________________
快速入门
# Recommended: uv (single static binary, no Python prerequisite)
curl -LsSf https://astral.sh/uv/install.sh | sh # one-line install if you don't have uv
uv tool install bicameral-mcp
bicameral-mcp setup# Alternative: plain pip (installs into your current Python env)
pip install bicameral-mcp
bicameral-mcp setup# Windows: substitute the uv installer line with PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"安装向导检测您的仓库,使用Claude Code注册MCP服务器,安装一个git钩子,在每次提交后自动同步账本,并添加一个会话结束钩子,捕获您没有明确摄入的会话中期决策。重新启动Claude Code,就完成了。
验证:
bicameral-mcp --smoke-test夜间频道(设计合作伙伴)
设计合作伙伴选择参与夜间构建,以便在发布当天收到错误修复 dev,在稳定发布之前 main夜生活使用CalVer方案(YYYY.M.D.devHHMMSS例如。 2026.5.16.dev011742)故意与stable的semver正交——stable的进展是由dev精心挑选的,因此将nightlies锚定到“stable之上的下一个补丁”将是一种虚构。 pip 和 uv 默认情况下跳过开发版本,所以很简单 pip install bicameral-mcp 千万不要无意中捡到一个。
步骤1——安装时启用预版本:
# uv
uv tool install bicameral-mcp --prerelease=allow
# pip
pip install --pre --upgrade bicameral-mcp第二步——将回购频道切换到夜间 所以 bicameral.update 跟踪夜间版本指针,而不是稳定版本指针。编辑 .bicameral/config.yaml:
channel: nightly # was: stable随着 channel: nightly, bicameral.update 阅读 开发人员策划 RECOMMENDED_NIGHTLY_VERSION 文件在 dev 每个晚上都会发布到PyPI,但指针文件只有在维护人员判断每晚值得显示时才会被弹出——主要错误修复、模式迁移、新工具字段——因此飞行员不会在每个cron标记时得到通知。看 docs/DEV_CYCLE.md §6.9用于碰撞启发式。稳定(channel: stable)查询PyPI info.version 直接—— dev → main 发布公关流程是那里的策划杠杆。这两个通道故意使用不兼容的版本方案(CalVer用于夜间,semver用于稳定),因此 bicameral.update 永远不要试图将你从一个渠道交叉升级到另一个渠道;翻转 channel: 配置中的字段是切换的唯一方法。
要回滚到稳定状态: 翻转 channel: stable 在您的配置中,然后:
pip install --upgrade --force-reinstall bicameral-mcp噩梦是最好的努力:测试套件已通过PR-dev 合并时间,但他们跳过了稳定放行的供应链签字仪式(联合签字、SBOM认证)。如果您需要一个签名的工件进行合规性审查,请保持稳定。
______________________________________________________________________
感觉如何
在实现功能之前,你的代理人跑 bicameral.preflight 和表面:
(bicameral surfaced — checking Stripe webhook context)
📌 3 prior decisions in scope:
✓ Idempotency via Redis SETNX with 24h TTL
src/middleware/idempotency.ts:checkIdempotencyKey:42-67
Source: Sprint 14 planning · Ian, 2026-03-12
⚠ DRIFTED: Trust Stripe event.created, not server time
src/handlers/webhook.ts:processEvent:80-92
Drift evidence: switched to Date.now() in PR #287
~ 1 AI-surfaced question (no human source yet):
• Should we deduplicate by event.id or (account_id, event.id)?
Source: Slack #payments 2026-03-20看它在运动 --循环分为三个节拍:
1.摄入(PM或dev)。 一个成绩单、PRD或Slack帖子进来了;两院制提取决策并将其写入账簿。
https://github.com/user-attachments/assets/e74ae39f-dd99-485b-8122-8c5211478eb1
2.飞行前(自动)。 在代理编辑代码之前,两院制会出现先前的决定、漂移的区域和范围内文件的未决问题。
https://github.com/user-attachments/assets/8a0fdfb8-fc9a-49fc-9521-e5b5faf8646a
3.批准async(产品所有者)。 产品负责人审查捕获的提案,并按照自己的节奏批准或拒绝它们。漂移跟踪在批准后激活。
https://github.com/user-attachments/assets/206e269e-49d6-407d-b338-ab3f2a2c70ec
______________________________________________________________________
单人或团队模式
双摄像头以两种模式运行;安装向导会在安装时询问您是哪一个。
| 独奏 | 团队 | |
|---|---|---|
| 最适合 | 个体建设者;只有一个决策者的小型项目 | 多人为同一代码库编写决策(项目经理、设计师、多名工程师) |
| 决策在哪里 | 本地SurrealDB .bicameral/ledger.db;不共享 | 只追加一个 .jsonl 每个队友;通过您提供的远程基板进行复制 |
| 谁可以摄入 | 您 | 共享基板上的任何人(PM摄入PRD,开发人员拉动并将其浮出水面 preflight) |
| 分享什么 | 什么都不会离开你的机器 | 决策有效载荷、规范ID、签收。 无源代码 |
| 复制是如何工作的 | N/A | 仅在工具调用时进行拉取(约30秒新鲜度)。没有守护进程,没有Webhook,没有中央服务器 |
| 如果遥控器关闭,则失败 | N/A | 返回本地;重新同步下一个呼叫。无阻塞 |
团队模式远程基板
团队模式通过基质复制事件 您提供并拥有 — 没有任何路由通过Bicameral运营的服务器,以及您的决策数据 永远不要越过我们的基础设施。该向导支持两个后端:
| 后端 | 基板 | 设置 |
|---|---|---|
| Google 云端硬盘 (默认) | 团队Google帐户中的文件夹。每个队友都给自己写信 .jsonl;所有人都阅读其余内容。 | 3分钟一次性OAuth客户端设置,然后在向导中创建或加入。 |
| 本地文件夹 (高级) | 安装在每个队友计算机上的目录(NFS、Dropbox、syncthing)。 | 路径的一个提示。 |
S3、Dropbox原生和Box后端已在路线图上,但尚未发货——我们 故意先发布Drive,与付费团队验证模型,然后进行扩展。
驱动器集成的范围为 drive.file --Bicameral命令行界面 机器只能触摸它在团队文件夹中创建的文件;其余的你 驱动器(其他文件夹、Google文档、共享文件)对CLI不可见。 决策数据流向CLI↔ 谷歌直接; 公司做两院制 不接收您的文件副本.我们确实看到了聚合OAuth遥测(API 请求计数、OAuth同意记录(而非内容)作为OAuth应用程序 发布者,就像任何使用OAuth工具的供应商一样。令牌缓存有效期 在 ~/.bicameral/google-drive-token.json,模式0600。全面安全态势 操作员演练: docs/team-mode-setup.md.
______________________________________________________________________
斜杠命令
设置完成后,Claude Code会收到以下斜线命令:
| 命令 | 何时使用 |
|---|---|
/bicameral-ingest | 粘贴成绩单、PRD或Slack线程以跟踪其决策 |
/bicameral-preflight | 实施前的表面相关决策和偏差 |
/bicameral-history | 查看按功能区域分组的所有跟踪决策 |
/bicameral-dashboard | 在浏览器中打开实时决策仪表板 |
/bicameral-reset | 擦除并回放账簿(紧急使用) |
代理也会自动触发这些-- preflight 在任何代码更改之前, ingest 粘贴文档时。
______________________________________________________________________
什么 setup 写入您的仓库
| 文件 | 它是什么 |
|---|---|
.mcp.json | Claude代码的MCP服务器配置 |
.bicameral/config.yaml | 模式(solo/team)、引导模式标志,以及(在团队模式下) team.backend + team.folder_id/team.remote_root + team.role |
.bicameral/ledger.db | 本地SurrealDB决策分类账(单人模式) |
.bicameral/events/.jsonl | 仅为每个队友添加事件日志(团队模式) |
~/.bicameral/google-drive-token.json | 驱动OAuth令牌缓存,模式0600(仅团队模式+驱动后端) |
.gitignore entry | 忽略 .bicameral/ 在独奏模式下 |
.claude/settings.json | PostToolUse钩子(提交后自动同步)+SessionEnd钩子(捕获会话中期决策) |
skills/bicameral-*/SKILL.md | 规范斜线命令定义(.claude/skills/bicameral-* 是Claude代码解析器的符号链接——永远不要直接编辑) |
所有数据都保留在本地。嵌入式SurrealDB在进程内运行,无需单独的服务器。
______________________________________________________________________
MCP工具参考
13 tools across two categories
决策分类账
| 工具 | 目的 |
|---|---|
bicameral.ingest | 将成绩单、PRD或Slack导出到分类账中 |
bicameral.preflight | 飞行前:地面预先决策和编码前漂移 |
bicameral.search | 按主题搜索过去的决策 |
bicameral.brief | 功能区域的完整简报(决策、偏差、分歧、差距) |
bicameral.history | 按功能分组的所有决策的只读快照 |
bicameral.link_commit | 同步提交——更新内容哈希值,重新评估漂移 |
bicameral.drift | 检测涉及特定文件的决策偏差 |
bicameral.judge_gaps | 在某个主题上运行业务需求差距量规 |
bicameral.resolve_compliance | 回写呼叫者LLM合规性判定 |
bicameral.ratify | 记录产品签收决定 |
bicameral.update | 检查并应用推荐的版本更新 |
bicameral.reset | 擦除当前回购的分类账(默认为模拟运行) |
bicameral.dashboard | 启动本地仪表板服务器并返回其URL |
代码定位器
| 工具 | 目的 |
|---|---|
validate_symbols | 针对代码索引的模糊匹配符号名称假设 |
get_neighbors | 1步结构图遍历(调用者、被调用者、导入) |
______________________________________________________________________
隐私与合规
我们非常重视隐私。Bicameral完全在你的笔记本电脑上运行——代码、决策和记录永远不会离开机器,除非你明确选择进入团队模式(该模式仅通过现有的git远程共享一个仅可追加的事件文件)。遥测仅为匿名整数+工具名称——选择退出 BICAMERAL_TELEMETRY=0完整的状态(主机信任模型、可接受的使用、安装信任模型、审计日志、诊断输出、分类账导出、可用性状态)在 docs/policies/;报告+供应链认证 SECURITY.md.
______________________________________________________________________
许可证
麻省理工学院
