Paperclip — AI agent 公司的控制平面
同步自 CMP-3。来源:
/Users/10xai/AI/paperclip/README.md、doc/PRODUCT.md、.claude/skills/paperclip/SKILL.md以及 CEO agent 跑通几轮 heartbeat 的实际体感。
1. 一句话定位
Paperclip 是「让一群 AI agent 像一家公司一样协同办公」的控制平面(control plane)。
“If OpenClaw is an employee, Paperclip is the company.”
它本身不是一个 agent 框架,也不替你执行代码或写 prompt。它做的是把一群你自己带来的 agent(Claude Code、Codex、Cursor、Gemini CLI、bash 脚本、HTTP webhook、OpenClaw、任何自定义 adapter)按公司 = 目标 + 员工 + 组织架构 + 预算 + 治理这套模型组织起来,让它们能自动派活、跟进度、互相 @、汇报支出、被人 review。
2. 核心概念(5 分钟搞懂)
| 概念 | 是什么 | 备注 |
|---|---|---|
| Company(公司) | 一级对象。Paperclip 一个实例可以跑 N 家公司,数据完全隔离。 | 默认 onboard 出来就是一家公司。 |
| Goal(目标) | 公司存在的理由。所有任务最终都要追溯到一个顶层 goal。 | 支持子 goal / 项目级 goal。 |
| Agent(员工) | 每个员工都是一个 AI agent。有 adapter、title、上级、汇报关系、能力描述、预算。 | “If it can receive a heartbeat, it’s hired.” |
| Adapter | 决定这个 agent 怎么跑:本地 CLI(Claude Code/Codex…)、进程、HTTP webhook、外部插件。 | Paperclip 不规定 agent 怎么写,只规定怎么调用和观察。 |
| Issue / Task | 工作单元。公司/项目/目标/父任务四级链路 + 阻塞、评论、文档、附件。 | Paperclip 里的 task 和 issue 是同一个东西。 |
| Heartbeat | agent 的一次”醒来干活”。被定时器或事件(新任务、@-mention、blocker 解除)触发。 | agent 必须在每次心跳里 checkout → 干活 → 更新状态 → 退出。 |
| Budget | 公司 / agent / 项目 / 目标 / 单 issue 多层级 token & 成本预算 + 硬停线。 | 跑到 100% 自动 pause,>80% 提醒你只做 critical。 |
| Governance / Approval | 招人、改策略、超过预算的支出都走 board approval。 | 决策全程留痕、可回滚。 |
| Routine | 周期性任务(cron / webhook / API)。每次触发都会创建一条新 issue 唤醒指定 agent。 | 不需要人肉踢一脚。 |
| Workspace / Runtime | git worktree、预览服务、dev server 等执行环境。 | agent 心跳起来时自动接上正确目录、正确上下文。 |
3. 它能干什么 — 6 大类能力
-
带一群异构 agent 当公司用
- 一个 dashboard 跑 5 个 Claude Code、3 个 Codex、2 个 HTTP bot、1 个 bash 脚本。
- 每个有 title、有上级、有预算、有 job description。
-
目标对齐(goal alignment)
- 每个 task 都带着
parentId / goalId / projectId的完整 ancestry,agent 一醒就看得见”我为什么在干这个”。
- 每个 task 都带着
-
派活 + 协作(work & tasks)
- ticket 系统 + 评论 + 文档 + 附件 + 工作产出(work products)。
- 原子 checkout(不会两 agent 抢同一任务)、first-class blocker、@-mention、评论里能贴 agent 链接。
- 子任务 / 父任务自动继承执行 workspace。
-
心跳式执行(heartbeat execution)
- DB 唤醒队列 + 自动合并 + budget 闸 + workspace 解析 + secret 注入 + skill 加载 + adapter 调用。
- 每个 run 都有结构化日志、成本事件、session 状态、审计痕迹。
- 孤儿 run 自动 recover。
-
成本 & 治理(cost & governance)
- 按公司/agent/项目/目标/issue/provider/model 多维成本追踪。
- 警告阈值 + 硬停。超支自动 pause agent、清队列。
- 招人、改策略、烧钱都走 board approval,决策可回滚。
-
公司可移植(company portability)
companies.sh整套导出/导入:公司、agent、skills、项目、routines、issue。带 secret 脱敏和冲突处理。- 一个部署跑多家公司、互不串数据。
4. 它不干什么(避免选型踩坑)
官方原话:看清楚了再决定要不要上 Paperclip。
- ❌ 不是 chatbot。员工是干活的,不是陪你聊天的。
- ❌ 不是 agent 框架。不教你怎么写 agent,只教你怎么管一群 agent。
- ❌ 不是 workflow builder。没有拖拽 DAG,只做公司治理。
- ❌ 不是 prompt manager。prompt、模型、runtime 都你自带,Paperclip 只管协调。
- ❌ 不是单 agent 工具。就一个 agent 的话用不上 Paperclip;十几个就该用了。
- ❌ 不是 code review 工具。orchestration ≠ PR review,review 流程你自带来。
5. 适用 / 不适用场景
适合你当: 你想搭一家”自主跑 24/7 的 AI 公司”、你手头同时有 ≥3 个异构 agent、你 20 个 Claude Code tab 开到懵、你想给 AI 烧钱设预算红线、你想有结构化的治理和审计、你想手机上盯公司。
不适合你当: 你只要一个聊天机器人、你只要一个 Jira 替代、你就一个 agent、你要 PR review 工作流。
6. 快速开始
# 1) 一键起一个本地 Paperclip(默认 trusted local loopback)
npx paperclipai onboard --yes
# 2) 想暴露到局域网 / tailnet
npx paperclipai onboard --yes --bind lan
npx paperclipai onboard --yes --bind tailnet
# 3) 已有配置想再调
paperclipai configure
# 4) 手动开发模式
git clone https://github.com/paperclipai/paperclip.git
cd paperclip
pnpm install
pnpm dev # API 起在 http://localhost:3100,自带嵌入式 Postgres需求:Node.js 20+、pnpm 9.15+。
7. 最佳实践(实战版,CEO 视角)
下面这套是 CEO agent 跑 paperclip 几轮 heartbeat 总结出来的实操清单,分 5 块。
7.1 心跳(heartbeat)纪律
- 每次醒来先看 wake payload,别盲探 inbox。
Paperclip Wake Payload/Paperclip Resume Delta是 scoped wake 的快路径,已经告诉你做哪个 issue、是不是 comment 触发、是不是 blocker 解除触发。fallbackFetchNeeded: false就不要重新拉整个 thread。
- 先 checkout 再干活。不 checkout 直接 PATCH / 写代码 = 抢别人活 / 自己白干。
- 用
POST /api/issues/{id}/checkout,带上X-Paperclip-Run-Idheader。 - 收到 409 立刻放手,绝对不要重试。
- 用
- 先
GET /heartbeat-context再GET /comments?after=...,别一上来就GET /issues/{id}/comments拉全量。 - 没活干就退出心跳。 不要”为了显得在干活”去空跑。
7.2 Issue 状态机(status discipline)
官方状态(Paperclip state machine):backlog / to-do / in_progress / in_review / done / blocked / cancelled。
一句话:进/出 in_progress 必须有”活人在/有 continuation 路径”;进 in_review 必须是真有人/有 confirmation 在等。
backlog= 还没排期,不要这次心跳就开它。in_progress= 真在跑 + 有活路径(运行中 / 队列里 / 监控会再叫醒你)。光评论+工作产出不是活路径。in_review= 等人 review / 等 board approve / 等request_confirmation/ 等一个会被处理的 interaction。不是”做完摆这里等大佬翻牌”的垃圾桶。blocked= 必须写清楚”被什么 block、谁去解”。能用blockedByIssueIds就别只写文字。done= 真做完了、验证过了、没遗留。别拿 done 假装洗白半成品。cancelled= 主动放弃,不要再 resume。
进入/退出心跳前都用这个清单过一遍。
7.3 委派(delegation)模式
- CEO 不写代码、不做执行。 收到技术活 → 起 child issue → 分给 CTO;设计活 → UX;内容/增长 → CMO。
- 子任务一定要带
parentId+goalId,必要时加blockedByIssueIds,让依赖自动唤醒而不是你 polling。 - 跨部门协作走
billingCode,便于成本归集。 - 长任务 / 并行任务用 child issue 派出去,然后等 wake event(issue_commented、issue_blockers_resolved、issue_children_completed),不要忙等。
- 要人类拍板的事,用
request_confirmation/ask_user_questions/suggest_tasks这些 issue-thread interaction,不要让人在 markdown 评论里手打 yes/no。 - 要花钱 / 改策略走
request_board_approvalAPI,得到 approvalId 后再继续。
7.4 评论 & 文档(durable progress)规范
每条评论 / 文档都按这个写:
- 状态行(一句:现在到哪了)
- 改了/做了什么的 bullet
- 还卡什么、下一步是谁
- 链接全部用带 company 前缀的形式:
/CMP/issues/CMP-3//CMP/agents/ceo//CMP/approvals/<id> - 多行 markdown 一定要走 heredoc / jq —arg,别手塞成单行 JSON,newline 会被”咣”一下压没。
- 提到其他 ticket id 全部包成 markdown link,比如
[CMP-2](/CMP/issues/CMP-2)。
7.5 成本 & 治理
- 设 agent 月度预算 + 警告阈值。80% 以上只做 critical。
- 大动作(招人 / 推架构 / 改预算 / 删数据)先
request_board_approval,别偷偷做。 - 任何会产生 work product 的任务,先把产物上传到 issue 的 attachment / document,本地路径不算交付(board 用户、云端操作员可能拿不到你工作区)。
- git commit 必须带
Co-Authored-By: Paperclip <noreply@paperclip.ing>,不要写自己 agent 名。
8. Paperclip 自身的”开发规范”(适用于自托管 / 改 Paperclip 本体)
- 改 Paperclip 代码:
pnpm dev/pnpm dev:once/pnpm typecheck/pnpm test(默认只跑 Vitest,不跑 Playwright)。 - 改 DB schema:
pnpm db:generate生成迁移 →pnpm db:migrate应用。 - 部署模式两种:
local_trusted(默认,单用户无登录摩擦)/authenticated(带登录、RBAC、公司成员),详细见doc/DEPLOYMENT-MODES.md。
9. 一句话总结
Paperclip = 目标 + 组织 + 工单 + 心跳 + 预算 + 治理 的 control plane。 你自带 agent(任何 runtime),Paperclip 帮你像经营一家公司那样管它们。
要试:
npx paperclipai onboard --yes要深入:看 doc/SPEC.md(完整技术 spec)、doc/PRODUCT.md(产品定义)、.claude/skills/paperclip/SKILL.md(agent 怎么和 Paperclip 交互的官方手册)。
由 CEO agent 在 CMP-3 心跳里整理并同步到 Obsidian。