pairdown
Pairdown
多人 Markdown 协作,房间里还有 agent。
一台服务器持有所有文档。人们打开一个链接,就能实时共同编辑同一份文档,并在页边空白处留下评论。房间里的任何人都可以把自己的 Claude Code 会话带进来——它会以一个具名参与者的身份出现,安静地待着,直到有人提到它,然后它会在被召唤进来的那个线程里作答。
它可以在浏览器里运行,无需安装任何东西。房间、编辑、评论和分享功能在完全没有接入 agent 的情况下也能正常工作;Claude Code 插件只是接入会话的可选方式,而且它本身从不持有文档。
运行服务器
托管需要一份代码检出和 bun:
bun install
bun run build # bundles the browser client into public/js
bun run src/server.ts # http://127.0.0.1:8790一个进程服务所有房间。/ 是房间索引——服务器上的每个房间,都链接到各自的 /r/<id>,并带有一个创建表单。房间持久化存储在 data/rooms/ 下,每个房间一个文件,并且比进程活得更久。
Related MCP server: Concord
接入 agent
从这个仓库安装插件——这个仓库本身就是自己的 marketplace,所以是两条命令而不是一条:
claude plugin marketplace add rohanrichards/pairdown
claude plugin install pairdown@pairdown安装时会询问四件事,其中前两件比较重要:
设置项 | 原因 |
Agent 代号 | 人们输入 |
你的名字 | 显示在代号旁边,让人们能看到这是谁的 agent |
房间服务器 | 如果服务器在你自己的机器上就保持默认;设置为别人的服务器地址即可加入他们的房间 |
共享密钥 | 仅当他们的服务器有密钥保护时才需要。这是一个共享演示密钥,而不是个人凭据,以明文存储在 |
之后可以用 /plugin configure pairdown 修改其中任何一项。
你的 PATH 上需要有 node(22 或更新版本)。你不需要克隆这个仓库或安装它的依赖——agent 以单个打包文件的形式发布,直接运行即可。
bun 只在托管房间服务器时需要,因为服务器构建在 Bun.serve 之上。把 agent 带到别人的房间不需要它。
如果要开发插件本身,claude --plugin-dir . 可以从代码检出中加载而无需安装,并且会在 /reload-plugins 时拾取你的修改。
插件运行一个 MCP 服务器,以客户端身份连接到房间服务器。它的 pairdown 二进制文件在插件启用期间位于 PATH 上,如果房间服务器尚未启动,会按需启动它。
接入后,会话先调用 room_list,然后调用 room_create 或 room_join,再通过 read、outline、search、edit、append、insert、comments、reply 和 resolve 进行工作。
agent 在被点名之前处于休眠状态。除非有评论提到它的代号,否则不会有任何内容到达会话,所以一个有四个 agent 的房间和没有 agent 的房间一样安静,直到有人召唤其中一个。
同样的四个设置也可以作为环境变量,用于在插件之外运行 agent:
变量 | 作用 |
| 此会话的代号,即人们在 |
| 这是谁的 agent,显示在代号旁边 |
| 要接入的房间服务器(默认 |
| 共享密钥,当服务器有门禁时使用 |
环境变量优先于同名的插件设置,这就是你可以在不修改配置的情况下,以不同代号运行第二个 agent 的方式:
PAIRDOWN_AGENT=scout PAIRDOWN_OWNER=Rohan claude更新
安装不会把现有安装升级到新版本——它会报告插件已安装并保持当前运行版本不变。要获取新版本:
claude plugin marketplace update pairdown
claude plugin uninstall pairdown@pairdown
claude plugin install pairdown@pairdown用 claude plugin list 检查实际运行的版本;重要的是那里的版本号,而不是缓存里放着什么。
提及一个代号会立即通知该会话;未标记的评论会一直等待,直到有人按下"发送给 claude"。即时通知还需要 channels 研究预览版,并且在 Team/Enterprise 上,组织管理员必须设置 channelsEnabled——否则通知会被静默丢弃,其他一切仍然正常工作。
共享密钥门禁
设置 PAIRDOWN_SECRET 会把整个服务器置于一个密钥之后:浏览器会看到一个表单,然后获得一个会话 cookie;agent 和脚本发送 Authorization: Bearer <key>。未设置时,服务器是开放的,和之前完全一样。
PAIRDOWN_SECRET="$(openssl rand -base64 32 | tr -d /+= )" bun run src/server.ts这是身份验证,不是授权。一个密钥意味着持有它的每个人都是同一个主体:无法区分任何人,无法单独撤销任何人,服务器上的每个房间都在同一扇门后面。它的存在是为了让受监督的演示可以通过隧道进行,而不必把机器交给任何找到 URL 的人。它不是让服务器长期在线的方式。
它确实做对了这类门禁通常搞错的部分:比较是恒定时间的,cookie 携带的是密钥的 HMAC 而不是密钥本身,而且 websocket 升级和页面一起被门禁——如果只给 HTML 加门禁而不给 /ws 加,就等于锁了门却开着窗户。
测试
bun test
bun run src/smoke.tssmoke.ts 会创建一个一次性房间,针对它启动 MCP 服务器,并端到端驱动整个工具面。
尚未实现
账户、SSO、按房间的权限、托管。先本地使用,用隧道做演示。
设计文档见 docs/superpowers/specs/2026-08-19-spec-room-design.md。它和旁边的计划都是在该项目最初名称下书写的带日期记录,保持原样未动。
This server cannot be deployed
Maintenance
Related MCP Connectors
Markdown workspace for AI agents: read, write, organize, and share markdown documents.
Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.
Create and improve live, shared interactive documents with your agent.
Collaborative word processor you can use with your agent.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceMCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.345,281 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides a multi-agent collaboration room with real-time messaging, file sharing, and coordination primitives for AI agents.2MIT
- FlicenseNot gradedqualityBmaintenanceEnables collaborative multi-agent turn-taking conversations between LLM agents and humans via @mentions, with synchronized turn queues, private messaging, and live Markdown transcript tracking.-
- AlicenseAqualityBmaintenanceEnables AI agents to perform safe, semantic edits on Markdown and DOCX documents through a normalized model with staging, diff review, and stale-edit protection.13MIT