525 lines
19 KiB
Markdown
525 lines
19 KiB
Markdown
# AI智能体工作流编排
|
||
|
||
`AI智能体` `工作流` `编排` `Claude Code` `自动化`
|
||
|
||
<div align="center">
|
||
|
||
# Babysitter
|
||
|
||
https://a5c.ai
|
||
|
||
---
|
||
|
||
[](https://www.npmjs.com/package/@a5c-ai/babysitter-sdk)
|
||
[](https://opensource.org/licenses/MIT)
|
||
[](https://github.com/a5c-ai/babysitter/issues)
|
||
[](https://github.com/a5c-ai/babysitter/stargazers)
|
||
|
||
> **强制 AI 智能体工作团队服从指令。通过确定性、无幻觉的自我编排管理极其复杂的工作流。**
|
||
|
||
[快速开始](#安装) | [文档](#文档) | [社区](#社区与支持)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
- [什么是 Babysitter?](#什么是-babysitter)
|
||
- [前置要求](#前置要求)
|
||
- [安装](#安装)
|
||
- [插件](#插件)
|
||
- [第一步](#第一步)
|
||
- [快速入门](#快速入门)
|
||
- [Harness CLI 封装器](#harness-cli-封装器)
|
||
- [工作原理](#工作原理)
|
||
- [为什么选择 Babysitter?](#为什么选择-babysitter)
|
||
- [压缩](#压缩)
|
||
- [文档](#文档)
|
||
- [贡献](#贡献)
|
||
- [社区与支持](#社区与支持)
|
||
- [许可证](#许可证)
|
||
|
||
---
|
||
|
||
## 什么是 Babysitter?
|
||
|
||
Babysitter 强制 AI 智能体工作团队服从指令,使其能够通过确定性、无幻觉的自我编排管理极其复杂的任务和工作流。在代码中定义你的工作流——Babysitter 强制执行每个步骤,确保在推进前通过质量门控,在断点处要求人工审批,并将每个决策记录在不可变的日志中。你的智能体严格按照流程允许的范围执行,不多也不少。
|
||
|
||
---
|
||
|
||
## 前置要求
|
||
|
||
- **Node.js**:20.0.0+ 版本(推荐 22.x LTS)
|
||
- **Claude Code**:最新版本([文档](https://code.claude.com/docs/en/quickstart))
|
||
- **Git**:用于克隆(可选)
|
||
|
||
---
|
||
|
||
## 安装
|
||
|
||
Babysitter 支持多种 AI 编程框架。为你选择的框架安装对应插件:
|
||
|
||
### Claude Code(推荐)
|
||
|
||
原生市场安装:
|
||
|
||
```bash
|
||
claude plugin marketplace add a5c-ai/babysitter
|
||
claude plugin install --scope user babysitter@a5c.ai
|
||
```
|
||
|
||
重启 Claude Code,然后输入 `/skills` 验证"babysit"是否出现。
|
||
|
||
[插件 README](plugins/babysitter/README.md)
|
||
|
||
### Codex CLI(测试版)
|
||
|
||
克隆本仓库后,在 Codex CLI 中执行:
|
||
|
||
```
|
||
codex
|
||
> /plugins
|
||
```
|
||
|
||
导航到"babysitter"条目并选择"安装"。
|
||
|
||
[插件 README](plugins/babysitter-codex/README.md)
|
||
|
||
### Cursor IDE 和 CLI(实验性)
|
||
|
||
通过 Cursor 市场或 npm:
|
||
|
||
```bash
|
||
npm install -g @a5c-ai/babysitter-cursor
|
||
```
|
||
|
||
[插件 README](plugins/babysitter-cursor/README.md)
|
||
|
||
### Gemini CLI(实验性)
|
||
|
||
```bash
|
||
npm install -g @a5c-ai/babysitter-gemini
|
||
babysitter-gemini install --global
|
||
```
|
||
|
||
[插件 README](plugins/babysitter-gemini/README.md)
|
||
|
||
### GitHub Copilot(实验性)
|
||
|
||
通过 GitHub Copilot CLI 市场,或:
|
||
|
||
```bash
|
||
npm install -g @a5c-ai/babysitter-github
|
||
```
|
||
|
||
[插件 README](plugins/babysitter-github/README.md)
|
||
|
||
### Pi(实验性)
|
||
|
||
原生 Pi 插件安装:
|
||
|
||
```bash
|
||
pi install npm:@a5c-ai/babysitter-pi
|
||
```
|
||
|
||
[插件 README](plugins/babysitter-pi/README.md)
|
||
|
||
### Oh-My-Pi(实验性)
|
||
|
||
原生 omp 插件安装:
|
||
|
||
```bash
|
||
omp plugin install @a5c-ai/babysitter-omp
|
||
```
|
||
|
||
[插件 README](plugins/babysitter-omp/README.md)
|
||
|
||
### OpenCode(实验性)
|
||
|
||
```bash
|
||
npm install -g @a5c-ai/babysitter-opencode
|
||
```
|
||
|
||
安装后脚本会自动将插件复制到 `.opencode/plugins/babysitter/`。
|
||
|
||
[插件 README](plugins/babysitter-opencode/README.md)
|
||
|
||
### 内置 Harness(无需 AI 编程智能体)
|
||
|
||
Babysitter 内置了一个**内部 harness**,无需任何外部 AI 编程智能体即可以编程方式运行流程。这对于 CI/CD 管道、脚本、自动化测试和无头编排非常有用:
|
||
|
||
```bash
|
||
npm install -g @a5c-ai/babysitter-sdk
|
||
|
||
# 使用内部 harness 运行流程定义
|
||
babysitter harness:call --harness internal --process .a5c/processes/my-process.js#process --workspace .
|
||
|
||
# 或运行自由格式的提示
|
||
babysitter harness:call --harness internal --prompt "run lint and tests" --workspace .
|
||
```
|
||
|
||
内部 harness 直接使用 SDK 内置的 Pi 执行引擎。它支持所有功能(编程式、会话绑定、停止钩子、无头提示),无需外部 CLI。
|
||
|
||
在流程执行期间,内部 harness 可以通过调用器**将任务委派给任何已发现的已安装 harness**。在 `--harness internal` 下运行的流程可以生成通过 Claude Code、Codex、Gemini CLI 或系统上发现的任何其他 harness 执行的子智能体任务——SDK 在运行时发现可用的 harness CLI 并相应地路由任务执行。这意味着你可以从单个无头入口点编排多智能体工作流,不同任务委派给最适合的 harness。
|
||
|
||
---
|
||
|
||
## 插件
|
||
|
||
Babysitter 有自己的插件系统——其工作方式与你预期的不同。Babysitter 插件不是带有扩展点的代码模块,而是 AI 智能体读取并执行的**一组自然语言指令**(Markdown 文件)或**确定性编码流程**(JS 文件)。SDK 存储、版本管理和分发这些指令,AI 智能体是运行时。
|
||
|
||
这意味着插件可以做 AI 智能体能做的任何事情:安装 npm 包、生成 CI/CD 管道、设置 git 钩子、创建 Terraform 配置、修改 linter 规则、将 babysitter 流程复制到你的项目中,并在过程中询问你的偏好。
|
||
|
||
官方市场包含以下类别的插件:**安全**(gitleaks、ESLint 安全规则、审计流程)、**测试**(Vitest/Playwright/pytest 设置、覆盖率门控、TDD 流程)、**部署**(Terraform、Helm、Dockerfile、多环境管道)、**主题**(音效、设计系统、对话个性)、**CI/CD**(GitHub Actions 工作流)和**速率限制**(指数退避钩子)。
|
||
|
||
要管理插件,在你的 harness 中使用 `/babysitter:plugins` 命令(或从 CLI 使用 `babysitter harness:plugins`)。智能体读取插件的安装说明,询问你的偏好,分析你的项目,并在 babysitter 编排运行中执行设置。
|
||
|
||
有关安装工作原理、市场格式、创建自己的插件和迁移系统的详细信息,请参阅完整的[插件文档](docs/plugins.md)。
|
||
|
||
---
|
||
|
||
## 第一步
|
||
|
||
安装后,设置你的环境:
|
||
|
||
### 1. 配置你的个人资料(一次性)
|
||
|
||
```bash
|
||
/babysitter:user-install
|
||
```
|
||
|
||
这将创建你的个人资料,包含:
|
||
- 断点偏好(你希望多少监督)
|
||
- 工具偏好和沟通风格
|
||
- 专业领域以更好地匹配流程
|
||
|
||
### 2. 设置你的项目
|
||
|
||
```bash
|
||
/babysitter:project-install
|
||
```
|
||
|
||
这将分析你的代码库并配置:
|
||
- 项目特定工作流
|
||
- 测试框架和 CI/CD 集成
|
||
- 技术栈偏好
|
||
|
||
### 3. 验证设置
|
||
|
||
```bash
|
||
/babysitter:doctor
|
||
```
|
||
|
||
运行诊断以确认一切正常。
|
||
|
||
---
|
||
|
||
## 快速入门
|
||
|
||
```bash
|
||
claude "/babysitter:call implement user authentication with TDD"
|
||
```
|
||
|
||
或用自然语言:
|
||
|
||
```
|
||
Use the babysitter skill to implement user authentication with TDD
|
||
```
|
||
|
||
Claude 将创建一个编排运行,逐步执行任务,处理质量检查和审批,并持续到完成。
|
||
|
||
### 选择你的模式
|
||
|
||
| 模式 | 命令 | 使用场景 |
|
||
|------|---------|-------------|
|
||
| **交互式** | `/babysitter:call` | 学习、关键工作流——暂停等待审批 |
|
||
| **自主式** | `/babysitter:yolo` | 可信任的任务——全自动,无断点 |
|
||
| **规划式** | `/babysitter:plan` | 执行前审查流程 |
|
||
| **持续式** | `/babysitter:forever` | 监控、周期性任务——无限运行 |
|
||
|
||
### 实用命令
|
||
|
||
| 命令 | 用途 |
|
||
|---------|----------|
|
||
| `/babysitter:doctor` | 诊断运行健康状况和问题 |
|
||
| `/babysitter:observe` | 启动实时监控仪表板 |
|
||
| `/babysitter:resume` | 继续中断的运行 |
|
||
| `/babysitter:help` | 文档和使用帮助 |
|
||
|
||
---
|
||
|
||
## Harness CLI 封装器
|
||
|
||
除了会话内技能命令(`/babysitter:call` 等),Babysitter SDK 还提供 `harness:*` CLI 命令,让你从终端创建、运行和管理编排会话。这些命令适用于任何已安装的 harness。
|
||
|
||
### 通过 Harness 运行流程
|
||
|
||
```bash
|
||
# 通过 Claude Code 交互式运行流程(在断点处暂停)
|
||
babysitter harness:call --harness claude-code --prompt "implement user authentication with TDD" --workspace .
|
||
|
||
# 完全自主运行(无断点)
|
||
babysitter harness:yolo --harness claude-code --prompt "add pagination to the API" --workspace .
|
||
|
||
# 仅规划(在第一阶段后停止)
|
||
babysitter harness:plan --harness claude-code --prompt "implement feature X"
|
||
|
||
# 使用内部 harness 运行(无需外部 AI 智能体)
|
||
babysitter harness:call --harness internal --prompt "run lint and tests" --workspace .
|
||
```
|
||
|
||
### 管理运行
|
||
|
||
```bash
|
||
# 恢复中断的运行
|
||
babysitter harness:resume --run-id <runId> --harness claude-code --workspace .
|
||
|
||
# 诊断运行健康状况
|
||
babysitter harness:doctor --run-id <runId>
|
||
|
||
# 分析过去的运行以获取洞察
|
||
babysitter harness:retrospect --all --harness claude-code --workspace .
|
||
|
||
# 清理旧运行
|
||
babysitter harness:cleanup --keep-days 7 --harness claude-code --workspace .
|
||
```
|
||
|
||
### Harness 发现
|
||
|
||
```bash
|
||
# 查看系统上安装了哪些 harness CLI
|
||
babysitter harness:discover
|
||
|
||
# 安装 harness CLI
|
||
babysitter harness:install claude-code
|
||
|
||
# 安装 harness 插件
|
||
babysitter harness:install-plugin claude-code
|
||
```
|
||
|
||
### 使用 `--harness internal` 进行自动化
|
||
|
||
`internal` harness 对 CI/CD 和脚本编写特别有用,因为它不需要外部 AI 编程智能体:
|
||
|
||
```bash
|
||
# 在 CI 管道或脚本中
|
||
babysitter harness:call \
|
||
--harness internal \
|
||
--process .a5c/processes/lint-and-test.js#process \
|
||
--workspace . \
|
||
--no-interactive \
|
||
--json
|
||
```
|
||
|
||
它使用 SDK 内置引擎执行流程,支持所有效果类型(任务、断点、休眠、并行分发),并生成与任何其他 harness 相同的事件溯源日志。
|
||
|
||
---
|
||
|
||
## 工作原理
|
||
|
||
```
|
||
+=============================================================================+
|
||
| /babysitter:call |
|
||
+=============================================================================+
|
||
| |
|
||
| 你的流程(JavaScript) 这是权威来源 |
|
||
| +----------------------------------------+ |
|
||
| | 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) | (非配置,真实检查) |
|
||
| | await ctx.task(refine, { ... }); | |
|
||
| | } | |
|
||
| +-------------------+--------------------+ |
|
||
| | |
|
||
| | 管控 |
|
||
| v |
|
||
| +---------------------------------------------------------------------+ |
|
||
| | 强制执行机制 | |
|
||
| | | |
|
||
| | +-------------+ +------------------+ +-----------------+ | |
|
||
| | | 强制 |---->| 流程检查 |---->| 决策 | | |
|
||
| | | 停止 | | 流程允许 | | | | |
|
||
| | | (由钩子 | | 下一步是什么? | | 允许:分配 | | |
|
||
| | | 强制执行) | | | | 下一个任务 | | |
|
||
| | +-------------+ +------------------+ | | | |
|
||
| | | | 阻止:暂停 | | |
|
||
| | v | 直到通过门控 | | |
|
||
| | +--------------+ +-----------------+ | |
|
||
| | | 来自代码的 | | |
|
||
| | | 门控/任务 | | |
|
||
| | +--------------+ | |
|
||
| +---------------------------------------------------------------------+ |
|
||
| | |
|
||
| | 记录每个决策 |
|
||
| v |
|
||
| +---------------------------------------------------------------------+ |
|
||
| | 日志:每个任务、门控、决策——不可变、可重放 | |
|
||
| +---------------------------------------------------------------------+ |
|
||
| |
|
||
+=============================================================================+
|
||
```
|
||
|
||
**与简单迭代的区别:**
|
||
- **流程即代码:** 你的工作流是 JavaScript——编排器只能执行此代码允许的操作
|
||
- **强制停止:** Claude 无法"持续运行"——每个步骤都以强制停止结束,然后由流程决定下一步
|
||
- **强制执行,而非辅助:** 门控在满足条件前阻止推进——不是建议,是强制
|
||
- **事件溯源日志:** 所有状态存储在 `.a5c/runs/` 中——可从任意点确定性地重放和恢复
|
||
|
||
---
|
||
|
||
## 为什么选择 Babysitter?
|
||
|
||
| 传统方式 | Babysitter |
|
||
|---------------------|------------|
|
||
| 运行脚本一次,寄希望于成功 | 流程在完成前强制执行质量门控 |
|
||
| 通过聊天手动审批 | 带上下文的结构化断点 |
|
||
| 会话结束后状态丢失 | 事件溯源,完全可恢复 |
|
||
| 单任务执行 | 并行执行,支持依赖关系 |
|
||
| 无审计记录 | 所有事件的完整日志 |
|
||
| 临时工作流 | 确定性、代码定义的流程 |
|
||
|
||
**核心差异化优势:** 流程强制执行、确定性重放、质量收敛、人工断点介入和并行执行。
|
||
|
||
---
|
||
|
||
## 压缩
|
||
|
||
Babysitter 包含一个 4 层 Token 压缩子系统(内置于 `packages/sdk/`),在真实会话中可将上下文窗口使用量减少 50-67%,同时保持 99% 的事实保留率。
|
||
|
||
所有压缩钩子由 babysitter 插件**自动注册**——无需手动配置 `settings.json`。安装插件后压缩即自动生效。
|
||
|
||
### 工作原理
|
||
|
||
| 层级 | 钩子 | 引擎 | 内容 | 压缩率 |
|
||
|---|---|---|---|---|
|
||
| 1a | userPromptHook | density-filter | 用户提示 | ~29% |
|
||
| 1b | commandOutputHook | command-compressor | Bash/Shell 输出 | 平均 ~47% |
|
||
| 2 | sdkContextHook | sentence-extractor | 智能体/任务上下文 | ~87% |
|
||
| 3 | processLibraryCache | sentence-extractor | 库文件(预缓存) | ~94% |
|
||
|
||
### 快速切换
|
||
|
||
```bash
|
||
# 禁用所有压缩
|
||
export BABYSITTER_COMPRESSION_ENABLED=false
|
||
|
||
# 禁用单个层
|
||
babysitter compression:toggle sdkContextHook off
|
||
|
||
# 显示当前有效配置
|
||
babysitter compression:config
|
||
```
|
||
|
||
### 配置文件
|
||
|
||
编辑 `.a5c/compression.config.json` 以持久化设置(环境变量始终优先):
|
||
|
||
```json
|
||
{
|
||
"enabled": true,
|
||
"layers": {
|
||
"userPromptHook": { "enabled": true, "threshold": 500, "keepRatio": 0.78 },
|
||
"commandOutputHook": { "enabled": true, "excludeCommands": ["jq", "curl", "docker"] },
|
||
"sdkContextHook": { "enabled": true, "targetReduction": 0.15, "minCompressionTokens": 150 },
|
||
"processLibraryCache": { "enabled": true, "targetReduction": 0.35, "ttlHours": 24 }
|
||
}
|
||
}
|
||
```
|
||
|
||
使用 `babysitter compression:toggle <层> <on|off>` 切换任意层,或使用 `babysitter compression:set <key> <value>` 设置单个值。
|
||
|
||
---
|
||
|
||
## 文档
|
||
|
||
### 入门指南
|
||
- [快速入门指南](docs/user-guide/getting-started/quickstart.md)
|
||
- [初学者教程:REST API](docs/user-guide/tutorials/beginner-rest-api.md)
|
||
- [最佳实践](docs/user-guide/BEST-PRACTICES.md)
|
||
|
||
### 功能特性
|
||
- [流程库](docs/user-guide/features/process-library.md) - 2000+ 预构建流程
|
||
- [流程定义](docs/user-guide/features/process-definitions.md)
|
||
- [质量收敛](docs/user-guide/features/quality-convergence.md)
|
||
- [运行恢复](docs/user-guide/features/run-resumption.md)
|
||
- [日志系统](docs/user-guide/features/journal-system.md)
|
||
- [最佳实践](docs/user-guide/features/best-practices.md)
|
||
- [架构概览](docs/user-guide/features/architecture-overview.md)
|
||
|
||
### 参考资料
|
||
- [常见问题](docs/user-guide/reference/faq.md)
|
||
- [故障排除](docs/user-guide/reference/troubleshooting.md)
|
||
- [安全性](docs/user-guide/reference/security.md)
|
||
- [CLI 参考](docs/user-guide/reference/cli-reference.md)
|
||
|
||
---
|
||
|
||
## 贡献
|
||
|
||
我们欢迎贡献!以下是你可以提供帮助的方式:
|
||
|
||
- **报告 Bug**:[GitHub Issues](https://github.com/a5c-ai/babysitter/issues)
|
||
- **建议功能**:分享你的改进想法
|
||
- **提交 Pull Request**:修复 Bug 或添加功能
|
||
- **改进文档**:帮助使文档更清晰
|
||
|
||
详细指南请参阅 [CONTRIBUTING.md](https://github.com/a5c-ai/babysitter/blob/main/CONTRIBUTING.md)。
|
||
|
||
---
|
||
|
||
## 社区与支持
|
||
|
||
- **Discord**:[加入我们的社区](https://discord.gg/dHGkzxf48a)
|
||
- **GitHub Issues**:[报告 Bug 或请求功能](https://github.com/a5c-ai/babysitter/issues)
|
||
- **GitHub Discussions**:[提问和分享想法](https://github.com/a5c-ai/babysitter/discussions)
|
||
- **npm**:[@a5c-ai/babysitter-sdk](https://www.npmjs.com/package/@a5c-ai/babysitter-sdk)
|
||
|
||
### 社区工具
|
||
|
||
| 工具 | 描述 |
|
||
|------|-------------|
|
||
| [Observer Dashboard](https://github.com/yoavmayer/babysitter-observer-dashboard) | 并行运行的实时监控 UI |
|
||
| [Telegram Bot](https://github.com/a5c-ai/claude-code-telegram-bot) | 远程控制会话 |
|
||
| [vibe-kanban](https://github.com/BloopAI/vibe-kanban) | 并行流程管理 |
|
||
|
||
### Star 历史
|
||
|
||
<a href="https://star-history.com/#a5c-ai/babysitter&Date">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=a5c-ai/babysitter&type=Date&theme=dark" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=a5c-ai/babysitter&type=Date" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=a5c-ai/babysitter&type=Date" />
|
||
</picture>
|
||
</a>
|
||
|
||
### 贡献者
|
||
|
||
<a href="https://github.com/a5c-ai/babysitter/graphs/contributors">
|
||
<img src="https://contrib.rocks/image?repo=a5c-ai/babysitter" />
|
||
</a>
|
||
|
||
---
|
||
|
||
## 许可证
|
||
|
||
本项目采用 **MIT 许可证**。详情请参阅 [LICENSE.md](https://github.com/a5c-ai/babysitter/blob/main/LICENSE.md)。
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
**由 A5C AI 使用 Claude 构建**
|
||
|
||
[返回顶部](#babysitter)
|
||
|
||
</div> |