资讯动态

vm0取消与超时恢复:stuck tool如何被SIGKILL收割而不泄漏资源

发布时间:2026/9/18 2:27:23 来源:尧图企业网站定制
vm0取消与超时恢复stuck tool如何被SIGKILL收割而不泄漏资源【免费下载链接】okouOkou connects to the tools your team already uses and does the work — across marketing, sales, engineering, and operations, under your control.项目地址: https://gitcode.com/GitHub_Trending/vm/okouOkouvm0是一个开源 AI 工作流自动化平台把任务放进独立的 Firecracker 微虚拟机里执行并由 guest-agent 全程看管进程生命周期。本文带你读懂它的取消与超时恢复机制当一个网络工具如 WebFetch卡死时stuck tool 看门狗如何一步步升级到SIGKILL收割整个进程组确保沙箱不泄漏任何资源。为什么 AI Agent 会卡住Agent 执行任务时会调用 WebSearch、WebFetch 等网络工具。一旦某个请求挂起对方服务器不响应、DNS 卡死、网络抖动CLI 进程会一直等待表现为任务永远跑不完沙箱被白白占用子进程、管道句柄、网络连接无人回收形成泄漏用户取消cancellation时如果 CLI 忽略了温和的终止信号取消就像没发生vm0 的解法是看门狗定时巡检 信号逐级升级 进程组整体收割。️ 看门狗每 5 秒巡检一次未返回的工具追踪逻辑在 StuckToolTrackerCLI 每发出一个 WebSearch / WebFetch 调用看门狗就记下调用 ID 和起始时间一旦收到对应的tool_result立即从表中移除容量上限 256 条MAX_TRACKED_STUCK_TOOLS单条 ID 最长 1KB防止异常子进程无限刷事件撑爆内存表满了不驱逐旧条目——驱逐可能掩盖真正卡死的请求宁可让新调用暂时无追踪track_use。巡检节奏由两个常量决定constants.rs常量默认值含义STUCK_TOOL_TIMEOUT_SECS300 秒单次网络工具调用最长等待STUCK_TOOL_CHECK_INTERVAL_SECS5 秒看门狗巡检间隔主事件循环select 分支每秒级醒来时调用 oldest_expired找出最早超时的那条调用。命中即判定Tool timeout: WebFetch stuck for …并触发终止流程。 SIGTERM → SIGKILL一次先礼后兵的状态机真正决定怎么杀人的是 termination.rs 里的终止状态机注释里画得很清楚状态迁移表从触发到动作Idle卡死被检出SigtermPending对整个进程组发SIGTERM同时启动 SIGKILL 宽限期SigtermPending宽限期到SigkillPending仍没退出直接SIGKILL收割SigkillPending宽限期到DoneSIGKILL 生效流程收尾任意 pending子进程主动退出Done不再发信号两个设计细节值得新手注意Done 是粘性的迟到第二个typeresult事件无法重新武装定时器所有信号只发一次should_arm_post_result杜绝重复杀进程的竞态。按进程组pgid发信号不是只杀 CLI 本体而是杀掉它 fork 出来的所有子孙进程。日志形如Tool timeout: WebFetch stuck for {elapsed}s, SIGTERM pgid{pgid}ControlTerminationLog这就是不泄漏资源的关键——孤儿进程无处藏身。终止原因被完整记录为诊断信息StuckTool对应的标签就是stuck-tool watchdogTerminationReason::label方便事后审计到底是执行超时、用户取消还是看门狗动手的。✅ 用端到端测试证明收割真的发生了这套机制不是纸上谈兵仓库里有一组专门的集成测试来逼它走完升级链路stuck_tool_reap_sigkill.rsmock CLI 故意忽略 SIGTERM看门狗在 1 秒超时后先发 SIGTERM宽限期内进程装死随后被 SIGKILL 收割。测试断言终止原因正是StuckToolWatchdog、发出的信号是Sigkill、且标记了escalatedstuck_tool_stdout_eof_reap_sigkill.rsstdout 意外断开时的收割路径配套的取消恢复场景见 user_cancellation_recovery.rs 与 execution_timeout_recovery.rs。更上游的取消意图如何从 API 一路传到 Runner的完整设计可以读 run-cancellation-reconciliation.md——它描述了 cooperative协作式与 hard硬取消两种模式如何持久化、如何投递到沙箱。 关键路径速查模块相对路径工具调用追踪看门狗核心crates/guest-agent/src/cli/claude.rs终止状态机与信号策略crates/guest-agent/src/cli/termination.rs主事件循环巡检分支crates/guest-agent/src/cli/mod.rs超时/巡检间隔常量crates/guest-agent/src/constants.rs进程组信号发送crates/guest-agent/src/cli/process_group.rs取消对账官方文档docs/run-cancellation-reconciliation.md一句话总结vm0 用有界追踪 定期巡检 信号逐级升级 进程组整体收割 端到端测试背书五件套把stuck tool 卡死沙箱这类最脏的边界情况变成了可审计、可复现、零泄漏的受控流程——这也是它能放心让 Agent 7×24 小时无人值守干活的安全底座。【免费下载链接】okouOkou connects to the tools your team already uses and does the work — across marketing, sales, engineering, and operations, under your control.项目地址: https://gitcode.com/GitHub_Trending/vm/okou创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价