lnikell/loopndroll

GitHub: lnikell/loopndroll

一个本地工具,让 Codex 在特定条件满足前持续运行并自动执行检查。

Stars: 505 | Forks: 37

Loopndroll

让 Codex 持续运行,直到任务真正完成。

下载

https://github.com/user-attachments/assets/1deba634-a305-4686-8654-65f889162932 如果你曾经不得不发送数十条跟进消息只为让 Codex 继续运行,或者当它跳过测试、Lint 或类型检查时感到沮丧——即使你已在 Agents.md 中明确要求执行这些操作,那么这个工具或许能帮到你。 ## 使用 Loopndroll,你可以: - 让 Codex 持续运行,直到你手动停止 - 在任务结束时要求执行特定命令,并持续运行直到它们通过 - 通过 Telegram 或 Slack 接收进度更新,甚至可以回复消息以重定向工作或更改模式 ## 它是如何工作的 Loopndroll 通过 Codex Hooks 集成到 Codex 中。 当聊天开始时,Loopndroll 会注册该聊天并记住该任务的设置。 当 Codex 尝试停止时,Loopndroll 会介入决定接下来发生什么。根据你选择的模式,它可以: - 允许聊天停止 - 发送另一个提示并继续让 Codex 运行 - 先运行你的补全检查(如测试、Lint 或类型检查),并在失败时继续运行 - 等待 Telegram 的回复,并将该回复反馈到同一聊天中 同时,它还可以将最新的助手消息发送到 Telegram 或 Slack,让你在不全程盯着 Codex 的情况下了解进度。 **重要提示:** Loopndroll 完全在本地运行。它不会将你的聊天、提示或应用数据发送到任何 Loopndroll 服务器。如果你连接了 Telegram 或 Slack,使用的是 **你自己的机器人** 或 **你自己的 Webhook**,完全由你控制。 ## 模式 你可以为所有聊天全局设置模式,也可以为每个任务单独覆盖。 如果没有激活任何模式,Codex 将正常停止。 - **无限循环(Infinite)**:每次 Codex 停止时,Loopndroll 会发送默认的跟进提示并保持聊天继续。你可以在设置中更改该默认提示,或通过在 Telegram 中回复该任务来覆盖。 - **等待回复(Await Reply)**:当 Codex 停止时,Loopndroll 会在 Telegram 中等待你的回复,然后将该回复发送回同一聊天。 - **补全检查(Completion Checks)**:当 Codex 停止时,Loopndroll 会运行你的命令(如测试、Lint 或类型检查)。如果任一命令失败,它会告诉 Codex 继续运行,直到通过为止。 - **最大回合数(Max Turns 1 / 2 / 3)**:Loopndroll 让 Codex 额外运行固定数量的回合,然后允许其停止。 这为你提供了一个简单的选择:自动持续推动、等待人工输入、要求检查通过,或仅允许少量额外回合。 ## 使用场景 - **在进行混乱的重构时持续推动,而无需每 5 分钟发送一次“继续”** 使用 **无限循环** 模式,当工作真实存在但尚未有清晰的“完成”判定方式时非常适用。这适用于跨文件重构、错误排查以及需要依赖 Codex 发现内容的长时间评论清理。 - **确保 `pnpm test` 通过后再标记任务完成** 使用 **补全检查** 模式,当你希望 Codex 仅在仓库真正“绿灯”时才停止。这适用于代理声称完成但测试、Lint 或类型检查仍失败的常见情况。 - **将结果发送到 Telegram 并等待你的决定** 使用 **等待回复** 模式,当 Codex 到达决策点时应等待你而非自行猜测。这适用于你希望审阅草案、批准计划或在离开办公桌时重定向工作。 ## Telegram 设置 ### 获取 Telegram 机器人令牌 1. 打开 Telegram。 2. 与 [`@BotFather`](https://t.me/BotFather) 聊天。 3. 发送 `/newbot`。 4. 按照提示选择机器人名称和用户名。 5. BotFather 会发送一个机器人令牌,格式如 `123456789:AA...`。 6. 在 Loop N Roll 中,进入 `设置` -> `通知` -> `添加通知`。 7. 选择 `Telegram`。 8. 将机器人令牌粘贴到 `API 令牌`。 ### 让你的 Telegram 聊天显示在应用中 1. 与你的机器人开启一个直接消息并发送任意消息。 2. 或将机器人添加到一个群组并在该群组中发送任意消息。 3. 返回 Loopndroll。 4. 聊天应出现在 `聊天` 下拉菜单中。 5. 选择它并保存通知设置。 ## Telegram 命令 这些命令在机器人连接后可在 Telegram 中使用: - `/help` - 显示命令帮助 - `/list` - 列出注册到该 Telegram 目的地的聊天 - `/status` - 显示当前全局模式和每个聊天的模式 - `/reply C22 你的消息` - 向特定聊天发送消息 - `/mode global infinite` - 将全局模式设置为无限循环 - `/mode global await` - 将全局模式设置为等待回复 - `/mode global checks` - 将全局模式设置为补全检查 - `/mode global off` - 关闭全局模式 - `/mode C22 infinite` - 将聊天 `C22` 设置为无限循环 - `/mode C22 await` - 将聊天 `C22` 设置为等待回复 - `/mode C22 checks` - 将聊天 `C22` 设置为补全检查 - `/mode C22 off` - 停止聊天 `C22` 注意: - 如果你直接回复 Telegram 通知,Loopndroll 会自动使用该聊天。 - 如果发送纯文本(不含命令),Loopndroll 会将其发送到该 Telegram 会话中最后一个等待的聊天。 ## Slack 设置 ### 重要说明 该应用使用 Slack 传入 Webhook URL。 它 **不** 使用 Slack 机器人令牌。 ### 获取 Slack 传入 Webhook URL 1. 前往 [Slack 应用](https://api.slack.com/apps)。 2. 创建一个新应用,或打开已有应用。 3. 打开 `传入 Webhook`。 4. 启用传入 Webhook。 5. 点击 `将新 Webhook 加入工作区`。 6. 选择你希望发布消息的频道。 7. 确认应用。 8. 复制 Webhook URL,格式如 `https://hooks.slack.com/services/...`。 9. 在 Loopndroll 中,进入 `设置` -> `通知` -> `添加通知`。 10. 选择 `Slack`。 11. 将 Webhook URL 粘贴到 `Webhook URL`。 如果你在寻找 Slack 令牌:该应用不需要它来发送 Slack 通知。 ## 开发 - `pnpm install` - 安装依赖 - `pnpm run dev` - 以开发模式启动应用 - `pnpm run check` - 运行 Lint、格式检查和类型检查 - `pnpm run build` - 构建应用 - `pnpm run build:stable` - 构建稳定发布版本 ## 有用链接 - Telegram BotFather: [https://t.me/BotFather](https://t.me/BotFather) - Telegram 机器人 API: [https://core.telegram.org/bots/api](https://core.telegram.org/bots/api) - Slack 应用: [https://api.slack.com/apps](https://api.slack.com/apps) - Slack 传入 Webhook: [https://api.slack.com/messaging/webhooks](https://api.slack.com/messaging/webhooks)
标签:AI 代理, AI 辅助编程, Codex, Hook 机制, Lint, Mac, MITM代理, Slack 通知, SOC Prime, Telegram 通知, 二进制发布, 代码助手, 任务完成检测, 任务循环, 威胁情报, 开发工具, 开发者工具, 开源工具, 持续运行, 本地运行, 模式切换, 测试, 消息回复, 类型检查, 网络调试, 自动化, 自动化攻击, 进度通知, 隐私安全