a5c-ai/babysitter
GitHub: a5c-ai/babysitter
Babysitter是一款基于JavaScript的自动化工作流程管理工具,通过强制执行代码定义的规则,确保任务按预期执行。
Stars: 1257 | Forks: 74
### 使用 `--harness internal` 进行自动化
`internal` 引擎对于 CI/CD 和脚本特别有用,因为它不需要外部 AI 编码代理:
```
# 在 CI 流程或脚本中
babysitter harness:call \
--harness internal \
--process .a5c/processes/lint-and-test.js#process \
--workspace . \
--no-interactive \
--json
```
它使用 SDK 内置的引擎执行进程,支持所有效果类型(任务、断点、休眠、并行调度),并产生与任何其他引擎相同的事件源日志。
## 工作原理
```
+=============================================================================+
| /babysitter:call |
+=============================================================================+
| |
| YOUR PROCESS (JavaScript) This is the AUTHORITY |
| +----------------------------------------+ |
| | async function process(inputs, ctx) { | Real code, not config. |
| | | The orchestrator can ONLY |
| | await ctx.task(plan, { ... }); | do what this code permits. |
| | | |
| | await ctx.breakpoint({ | Breakpoints = human gates |
| | question: 'Approve plan?' | (enforced, not optional) |
| | }); | |
| | | |
| | await ctx.task(implement, { ... }); | Tasks = executable work |
| | | |
| | const score = await ctx.task(verify);| Quality gates = code logic |
| | if (score < 80) | (not config, real checks) |
| | await ctx.task(refine, { ... }); | |
| | } | |
| +-------------------+--------------------+ |
| | |
| | governs |
| v |
| +---------------------------------------------------------------------+ |
| | ENFORCEMENT MECHANISM | |
| | | |
| | +-------------+ +------------------+ +-----------------+ | |
| | | MANDATORY |---->| PROCESS CHECK |---->| DECISION | | |
| | | STOP | | What does the | | | | |
| | | (enforced | | process permit | | Permitted: next | | |
| | | by hook) | | next? | | task assigned | | |
| | +-------------+ +------------------+ | | | |
| | | | Blocked: halt | | |
| | v | until gate | | |
| | +--------------+ | passes | | |
| | | Gate/task | +-----------------+ | |
| | | from code | | |
| | +--------------+ | |
| +---------------------------------------------------------------------+ |
| | |
| | records every decision |
| v |
| +---------------------------------------------------------------------+ |
| | JOURNAL: Every task, gate, decision - immutable, replayable | |
| +---------------------------------------------------------------------+ |
| |
+=============================================================================+
```
**与简单迭代的区别:**
- **过程即代码:** 您的工作流程是 JavaScript - 守护者只能执行此代码允许的操作
- **强制停止:** Claude 不能“持续运行” - 每一步都以强制停止结束,然后进程决定下一步
- **强制执行,而非协助:** 门控阻止进度直到满意 - 它们不是建议
- **事件源日志:** 所有状态都在 `.a5c/runs/` 中 - 确定性回放和从任何点恢复
## 为什么选择 Babysitter?
| 传统方法 | Babysitter |
|---------------------|------------|
| 运行脚本一次,希望它工作 | 进程在完成前强制执行质量门控 |
| 通过聊天手动批准 | 带有上下文的结构化断点 |
| 会话结束时状态丢失 | 事件源,完全可恢复 |
| 单个任务执行 | 并行执行,依赖关系 |
| 没有审计跟踪 | 所有事件的完整日志 |
| 随机工作流程 | 确定性,代码定义的过程 |
**关键区别:** 进程强制执行、确定性回放、质量收敛、人机交互断点、并行执行。
## 压缩
Babysitter 包含一个 4 层令牌压缩子系统(集成在 `packages/sdk/` 中),在真实会话中可以将上下文窗口的使用减少 50-67%,同时保持 99% 的事实保留。
所有压缩钩子都由 Babysitter 插件 **自动注册** -- 无需手动 `settings.json` 配置。安装插件后,压缩即可生效。
### 工作原理
| 层 | 钩子 | 引擎 | 内容 | 减少 |
|---|---|---|---|---|
| 1a | userPromptHook | density-filter | 用户提示 | ~29% |
| 1b | commandOutputHook | command-compressor | Bash/shell 输出 | ~47% avg |
| 2 | sdkContextHook | sentence-extractor | 代理/任务上下文 | ~87% |
| 3 | processLibraryCache | sentence-extractor | 库文件(预先缓存) | ~94% |
### 快速切换
```
# 禁用所有压缩
export BABYSITTER_COMPRESSION_ENABLED=false
# 禁用单个层
babysitter compression:toggle sdkContextHook off
# 显示当前有效配置
babysitter compression:config
```
### 配置文件
编辑 `.a5c/compression.config.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 ` 切换任何层或使用 `babysitter compression:set ` 设置单个值。
## 文档
### 入门
- [快速入门指南](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) - 2,000+ 预建进程
- [进程定义](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)
## 贡献
我们欢迎贡献!以下是如何帮助的方式:
- **报告错误**:[GitHub Issues](https://github.com/a5c-ai/babysitter/issues)
- **建议功能**:分享您的改进想法
- **提交拉取请求**:修复错误或添加功能
- **改进文档**:帮助使文档更清晰
查看 [CONTRIBUTING.md](https://github.com/a5c-ai/babysitter/blob/main/CONTRIBUTING.md) 获取详细指南。
## 社区和支持
- **Discord**:[加入我们的社区](https://discord.gg/dHGkzxf48a) *(GitHub 邀请链接)*
- **GitHub Issues**:[报告错误或请求功能](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) | 并行进程管理 |
### 星级历史
### 贡献者
## 许可证
本项目采用 **MIT 许可证**。有关详细信息,请参阅 [LICENSE.md](https://github.com/a5c-ai/babysitter/blob/main/LICENSE.md)。
**由 A5C AI 的 Claude 构建**
[返回顶部](#babysitter)
标签:CMS安全, JavaScript, MITM代理, 事件日志, 人工智能, 代码审查, 任务编排, 工作流程管理, 数据可视化, 无幻觉, 流程控制, 用户模式Hook绕过, 网络调试, 脚本执行, 自动化, 自定义脚本, 自我编排, 质量保证