项目简介
Paperclip 是自托管编排平台,协调多个 AI 代理完成业务目标,提供组织架构、预算、治理、任务跟踪与成本控制,支持接入 OpenClaw、Claude Code、Codex 等代理。
README 预览
\n \n\n\n\n Quickstart ·\n Docs ·\n GitHub ·\n Discord ·\n Twitter ·\n Website\n\n\n\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n# Paperclip is the app people use to manage AI agents for work.\n\nOpen-source orchestration for teams of AI agents.\n\n**If OpenClaw is an _employee_, Paperclip is the _company_.**\n\nPaperclip is a Node.js server and React UI that orchestrates a team of AI agents to run a business. Bring your own agents, assign goals, and track work and costs from one dashboard.\n\nIt looks like a task manager. Under the hood: org charts, budgets, governance, goal alignment, and agent coordination.\n\n**Manage business goals, not pull requests.**\n\n| | Step | Example |\n| ------ | --------------- | ------------------------------------------------------------------ |\n| **01** | Define the goal | _"Build the #1 AI note-taking app to $1M MRR."_ |\n| **02** | Hire the team | CEO, CTO, engineers, designers, marketers — any bot, any provider. |\n| **03** | Approve and run | Review strategy. Set budgets. Hit go. Monitor from the dashboard. |\n\n\n\n\n\n \n Workswith\n OpenClaw\n Claude Code\n Codex\n Cursor\n Bash\n HTTP\n \n\n\nIf it can receive a heartbeat, it's hired.\n\n\n\n\n\n## Paperclip is right for you if\n\n- ✅ You want to build **autonomous AI companies**\n- ✅ You **coordinate many different agents** (OpenClaw, Codex, Claude, Cursor) toward a common goal\n- ✅ You have **20 simultaneous Claude Code terminals** open and lose track of what everyone is doing\n- ✅ You want agents running **autonomously 24/7**, but still want to audit work and chime in when needed\n- ✅ You want to **monitor costs** and enforce budgets\n- ✅ You want a process for managing agents that **feels like using a task manager**\n- ✅ You want to manage your autonomous businesses **from your phone**\n\n\n\n## The four pillars\
常见问题 (5)
故障排除如何修复将 Paperclip 升级到 v2026.1005.0 后 Claude CLI 会话无法恢复的问题?
出现此回归的原因是,每次运行的 agent 工作副本路径(file-sync/runs/<runId>/live/AGENTS.md)被包含在了 Claude 的提示文本中。由于 <runId> 每次运行都会变化,buildClaudePromptBundleKey 会生成不同的哈希值,因此 hasMatchingPromptBundle 会拒绝已保存的会话并启动新会话。
修复方法:升级到包含 PR #15437 的 Paperclip 版本。该修复在指令和 skills 未发生变化时保持 prompt bundle 稳定,同时将当前工作副本位置单独提供给每次运行。
临时解决方案:降级到 v2026.1001.0,该版本中会话恢复功能正常。受此回归影响的版本包括 v2026.1005.0 和 v2026.1006.0-canary.19。
故障排除如何修复 Paperclip 适配器更新后由悬空的 skill 符号链接引起的 Codex 'failed to stat skills entry … No such file or directory' 错误?
当适配器更新移除了某个技能,但其旧的符号链接仍保留在 ~/.codex/skills 或 ~/.claude/skills 中时,就会出现这些错误。首先预览已损坏的符号链接:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -print
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -print
如果列出的路径是失效的适配器符号链接,请将其删除:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -delete
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -delete
然后重新运行 Codex。这些错误应该会消失,因为加载器将不再遇到指向已从适配器包中删除的文件的符号链接。PR #1711 中曾提出过一个永久性的清理流程,但该 PR 被关闭且未合并,因此需要手动删除,或等待未来维护者的修复。
故障排除如何修复 Paperclip 智能体因 `scripts/paperclip-issue-update.sh` 在其工作目录中缺失或执行失败,而运行全文件系统范围的 `find /` 的问题?
出现这种情况是因为 server/skills/paperclip/SKILL.md 中的第 8 步使用裸相对路径调用该辅助脚本,这只有在 shell 的当前目录为 skill 目录时才有效。在 v2026.916.1 和 2026.1001.0 等 npm 安装中,该辅助脚本也可能完全缺失,因为 scripts/release.sh 只复制 skills/,而 paperclip-issue-update.sh 位于仓库根目录的 scripts/ 目录中。
临时解决方法:修改 SKILL.md,使智能体在辅助脚本缺失时不得搜索文件系统。告知它们改用文档中记录的原始 API 请求:
curl -X PATCH "https://<paperclip-host>/api/issues/$PAPERCLIP_TASK_ID" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data '{"status":"done"}'
使用第 8 步中已记录的身份验证和请求体字段;如有需要,在其中包含 comment/markdown 负载。
打包修复:更新 scripts/release.sh,将 scripts/paperclip-issue-update.sh 复制到 @paperclipai/server、@paperclipai/adapter-claude-local 和 @paperclipai/adapter-codex-local 的 skills/paperclip/scripts/ 中,然后验证:
ls -l skills/paperclip/scripts/paperclip-issue-update.sh
永久路径修复:让 adapter 导出一个绝对的 skill 目录变量,例如 PAPERCLIP_SKILL_ROOT,并将第 8 步改为调用:
"$PAPERCLIP_SKILL_ROOT/scripts/paperclip-issue-update.sh" \
--issue-id "$PAPERCLIP_TASK_ID" \
--status done
在该变量可用之前,可靠的规则是:如果辅助脚本未出现在文档记录的绝对位置,则直接调用 PATCH /api/issues/{issueId},并且绝不要运行 find / -iname paperclip-issue-update.sh。
故障排除如何修复 Paperclip 在根据重复的 'Bounded retry exhausted' 事件构建 attention feed 时因 'JavaScript heap out of memory' 导致的启动崩溃问题?
将 Paperclip 升级到包含上游修复 #13451(提交 667c79ded21e49b2a56b302093591c63a6f4e971)的版本。该修复可防止重复的 retry-exhaustion 生命周期事件在 attention-feed 查询中使每次运行的完整 context_snapshot 成倍累积。受影响的提交为 9a5a364170cb68a939ef972fab60f389f6664fd2;已验证该修复存在于 master 分支的 1477d1ecea0d4fce0a906ac47ad1fc4eea9d3428。
部署步骤:
cd paperclip
git fetch origin
git checkout 667c79ded21e49b2a56b302093591c63a6f4e971 # 或包含该修复的更新版本
pnpm install
pnpm build
systemctl restart paperclip
如果无法立即升级,一个临时解决方法是提高 V8 堆内存限制,例如在 systemd 服务中添加 Environment=NODE_OPTIONS=--max-old-space-size=24576,然后运行 systemctl daemon-reload 并重启服务。这可能需要超过 24 GB 的内存,因为该有缺陷的查询可能返回约 20 GB 的重复上下文数据;升级或归档重复的生命周期事件才是正确的解决方案。
故障排除如何阻止 Paperclip hermes_local 在每次恢复的心跳中重复托管指令?
将 Paperclip 升级到包含 PR #15439 的构建版本(已在 master 分支修复)。该修复通过 Hermes 的原生系统覆盖层传递托管指令,而不是将完整的指令包前置拼接到每个恢复的 -q 用户消息之前。修复还包含针对全新运行、恢复运行、指令变更和会话重置的回归测试。受影响的版本包括 @paperclipai/hermes-paperclip-adapter 2026.1001.0 附近的版本以及提交 582911ba。quiet: true/-Q 或自定义的 promptTemplate 无法移除重复的前缀。作为临时变通方案,可以禁用 persistSession,使每次运行都启动全新会话,但这会失去会话的连续性。