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) | 并行进程管理 | ### 星级历史 Star History Chart ### 贡献者 ## 许可证 本项目采用 **MIT 许可证**。有关详细信息,请参阅 [LICENSE.md](https://github.com/a5c-ai/babysitter/blob/main/LICENSE.md)。
**由 A5C AI 的 Claude 构建** [返回顶部](#babysitter)
标签:CMS安全, JavaScript, MITM代理, 事件日志, 人工智能, 代码审查, 任务编排, 工作流程管理, 数据可视化, 无幻觉, 流程控制, 用户模式Hook绕过, 网络调试, 脚本执行, 自动化, 自定义脚本, 自我编排, 质量保证