babysitter
AI 编程助手的工作流编排引擎,通过事件溯源和强制停止机制为智能体执行施加质量约束
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI 编程助手的工作流编排引擎,通过事件溯源和强制停止机制为智能体执行施加质量约束
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你的 AI 编程助手正准备一口气生成 300 行代码、修改 12 个文件、提交一个功能分支——而你只能眼睁睁看着它犯错后自己回滚,整个过程毫无控制。这就是当前大多数 AI 编程工具的现状:力量强大,但缺乏约束。Babysitter 正是为解决这一问题而生。
Babysitter 是一款面向 AI 智能体工作流的编排引擎,由 A5C AI 开发,MIT 许可证开源。它通过将工作流定义为代码(JavaScript 函数),为 AI 编程助手(如 Claude Code、Codex、Cursor 等)强制施加执行约束:质量门禁必须通过才能继续,关键节点必须人工审批,每一步决策都被不可变地记录到日志中。与其说它是一个工具,不如说它是一套给 AI 编程助手使用的「流程合规体系」。
Babysitter 由 A5C AI 团队开发,GitHub 仓库 a5c-ai/babysitter 目前拥有超过 1300 颗星,版本号已迭代至 v4.0.157,展示了极高的维护活跃度。项目采用 monorepo 结构管理,核心代码位于 packages/ 目录下,包含 SDK、Catalog(过程库索引)、Observer Dashboard(实时监控面板)等多个子包。
该项目的诞生背景直指 AI 编程助手在复杂任务中的失控问题。当任务从「写一个函数」升级到「实现用户认证系统」,AI 助手的执行路径变得不可预测:它可能跳过测试直接提交,可能在不恰当的时机引入 breaking change,也可能忽略了你明确要求的 TDD 流程。Babysitter 通过将工作流编码为确定性过程,从根本上解决了这一矛盾。
Babysitter 的架构设计建立在两个核心机制之上:事件溯源(Event Sourcing)和强制停止(Mandatory Stop)。
事件溯源体现在每一次运行都会在 .a5c/runs/<runId>/ 目录下生成完整的操作日志 journal,记录所有任务执行、质量门禁结果、人工审批决策。这份日志是不可变的(immutable),既可以事后审计,也支持从任意检查点恢复运行。当 AI 进程意外中断时,babysitter harness:resume --run-id <runId> 可以从中断处精确继续,无需从头重来。
强制停止是 Babysitter 与普通 AI 编程助手的根本区别。传统 AI 工具在给出回复后即结束本次交互;Babysitter 则在每个执行步骤后强制暂停,由过程代码(Process Code)决定下一步是什么。如果质量门禁未通过,进程不会继续;如果到了人工审批节点,AI 会等待用户确认才继续。这种机制确保了 AI 的行为完全受流程代码约束,而不是随心所欲。
工作流本身以 JavaScript 函数定义,写入 .a5c/processes/ 目录下的 .js 文件中。一个典型的过程定义如下:
async function process(inputs, ctx) {
await ctx.task(plan, { ... }); // 任务:制定计划
await ctx.breakpoint({ question: 'Approve plan?' }); // 人工审批节点
await ctx.task(implement, { ... }); // 任务:实现代码
const score = await ctx.task(verify); // 任务:质量验证
if (score < 80) throw new Error('Quality gate failed');
}
整个架构通过 Claude Code/Codex 等 AI 编程 CLI 的 Hook 系统接入:Babysitter 注册 SessionStart 和 Stop 两个 Hook,在每次 AI 执行的开始和结束时接管控制权,从而实现强制停止和状态管理。
Babysitter 的技术栈以 Node.js 20+ 为运行时,以 TypeScript 为主要开发语言,采用 npm workspaces monorepo 结构组织:
| 子包 | 功能 |
|---|---|
packages/sdk | 核心 SDK,提供 babysitter CLI、Hook 注册、事件溯源引擎、压缩子系统 |
packages/catalog | 过程库索引,将 library/ 目录下的 2000+ 过程文件编制为 SQLite 数据库 |
packages/observer-dashboard | 实时监控 Web 界面(Radix UI + React),展示并行运行状态 |
plugins/babysitter/ | Claude Code 插件:skills 目录含 Babysit Skill,hooks 目录含会话生命周期 Hook |
SDK 的源码结构高度模块化,核心目录包括:
src/runtime/ — 事件溯源引擎,run 的创建、迭代、重放逻辑src/tasks/ — 任务分发与结果收集src/session/ — 会话状态管理src/hooks/ — Claude Code Hook 注册与管理src/harness/ — 多 harness 适配器(claude-code / codex / gemini / internal)src/compression/ — 4 层 token 压缩子系统src/mcp/ — MCP(Model Context Protocol)服务端集成Babysitter 还支持多种 AI 编程 harness 的插件化接入,官方支持:Claude Code(推荐)、Codex CLI(Beta)、Cursor IDE/Cursor CLI(Experimental)、Gemini CLI(Experimental)、GitHub Copilot(Experimental)、Pi CLI(Experimental)、Oh-My-Pi(Experimental)、OpenCode(Experimental)。每种 harness 都有独立的插件包(plugins/babysitter-*),通过统一的 SDK 接口抽象差异。
在长会话中,AI 编程助手的上下文窗口会被历史对话快速填满。Babysitter 内置了一个 4 层 Token 压缩子系统,实测可将上下文使用量降低 50-67%,同时保持 99% 的事实保留率:
| 层级 | Hook 名称 | 引擎 | 压缩内容 | 压缩率 |
|---|---|---|---|---|
| 1a | userPromptHook | density-filter | 用户提示词 | ~29% |
| 1b | commandOutputHook | command-compressor | Bash/shell 输出 | ~47% |
| 2 | sdkContextHook | sentence-extractor | Agent/任务上下文 | ~87% |
| 3 | processLibraryCache | sentence-extractor | 过程库文件(预缓存) | ~94% |
所有压缩 Hook 由 Babysitter 插件自动注册,无需手动配置。压缩粒度可通过 .a5c/compression.config.json 或 CLI 精细调控。
Babysitter 附带了一个包含 2000+ 预构建过程 的官方过程库(Process Library),覆盖以下领域:
过程库通过 packages/catalog 模块索引为 SQLite 数据库,支持 babysitter catalog:search 快速检索。
图1:Babysitter 开源贡献者图谱
Babysitter 提供两种使用模式:本地安装和 Docker 容器化部署。
本地安装需要 Node.js 20+,在 Claude Code 中直接通过 marketplace 安装插件:claude plugin marketplace add a5c-ai/babysitter && claude plugin install --scope user babysitter@a5c.ai。安装后重启 Claude Code,输入 /skills 验证 babysit 技能出现即可使用。
Docker 部署是更省心的选择:项目提供完整的多阶段 Dockerfile,基于 Node.js 20-bookworm 镜像,预装了 Claude Code 和 Babysitter SDK,支持通过环境变量注入 API Key 和任务提示词。预构建镜像托管在 GitHub Container Registry(ghcr.io/a5c-ai/babysitter/babysitter:production),拉取即可运行。docker-compose.yml 提供了工作目录挂载支持,将本地项目目录映射到容器内的 /workspace。
Babysitter 的 CLI 命令行提供了丰富的子命令:
/babysitter:call — 交互模式(推荐新手)/babysitter:yolo — 完全自主模式(跳过所有审批节点)/babysitter:plan — 仅规划模式(停在 Phase 1)/babysitter:forever — 持续监控模式/babysitter:doctor — 诊断运行健康状态/babysitter:observe — 启动实时监控面板/babysitter:resume — 恢复中断的运行此外,Babysitter 还支持内部 Harness 模式(--harness internal),无需外部 AI 编程 CLI,通过 SDK 内置的 Pi 执行引擎直接在命令行运行过程定义,适合 CI/CD 流水线、脚本自动化和无人值守编排。
Babysitter 的设计理念并非没有争议。首先,将工作流写成 JavaScript 代码本身就有一定门槛——它要求用户具备基本的编程能力,这与让非程序员也能用 AI 的大趋势存在张力。其次,内部 Harness 模式虽然声称无需外部 AI CLI,但其内置的 Pi 执行引擎能力边界尚未经过大规模生产验证。
此外,Babysitter 对特定 AI 编程 harness 的强依赖(尤其是 Claude Code 的 Hook 机制)意味着它的能力上限部分取决于这些 harness 本身的成熟度。当前的 Codex 插件处于 Beta 阶段,Cursor/Gemini 等插件更是 Experimental 状态,在生产环境中的稳定性有待验证。
Babysitter 代表的趋势是 AI Agent 的工程化治理。随着 AI 编程助手从辅助工具升级为主要的代码生成力量,如何确保 AI 生成代码的质量、安全性和合规性成为行业焦点。Babysitter 通过将约束内置于工作流引擎而非事后检查,提供了一种结构化的解法。
从增长曲线看,Babysitter 在短时间内获得了可观的社区关注,18 个话题标签覆盖了 agentic-ai、trustworthy-ai、agent-orchestration 等前沿方向,显示出其定位的前瞻性。随着 Claude Code、Codex 等 AI 编程 CLI 的生态持续扩大,为这些工具提供治理框架的项目将获得更多机会。
图2:Babysitter 项目 Star 增长历史
推荐:Docker 一键部署
# 拉取预构建镜像
docker pull ghcr.io/a5c-ai/babysitter/babysitter:production
# 运行交互式会话
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
ghcr.io/a5c-ai/babysitter/babysitter:production
# 或执行特定任务
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e PROMPT="Implement user authentication with TDD" \
-v $(pwd):/workspace \
ghcr.io/a5c-ai/babysitter/babysitter:production
本地 Claude Code 插件安装
claude plugin marketplace add a5c-ai/babysitter
claude plugin install --scope user babysitter@a5c.ai