feat(sandbox): 强制执行可取消的逐工具截止时间
This commit is contained in:
@@ -369,3 +369,13 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
|
||||
- 原生参数/环境探针、IPv4/IPv6 环回探针已切换到此正式进程模块执行,相关行为回归通过。新增实际 Windows 测试验证不匹配 SID 拒绝、丢弃未恢复进程后句柄进入终止状态、入口不存在与损坏终止符失败不消耗 Profile。运行中的等待探针验证零时限返回未完成、超过 60 秒的等待请求拒绝、主动终止后五秒内观察到退出。
|
||||
- 47 项扩展回归通过,3 项 ignored 为由父测试驱动的 Job 辅助入口;全目标 Clippy -D warnings 通过。日志 `.build/extension-process-regression-tests.log`、`.build/extension-process-clippy.log`。
|
||||
- 该模块只收拢已验证的原生生命周期,不构成完整生产扩展启动器。许可和包句柄原子绑定、撤销停止、生产 broker、scratch 配额、工具总期限及崩溃后的配置清理仍未完成,整体生产化继续实施。
|
||||
|
||||
|
||||
## 增量:独立于调用方轮询的单工具期限守卫
|
||||
|
||||
- 新增 ToolDeadline,生产预算固定 60 秒,按单次工具调用启动,不限制常驻 MCP 服务总寿命。Running::start_tool_call 绑定该实例的 Job,创建独立计时线程;线程创建或句柄复制失败返回明确错误,调用方必须在派发工具请求前成功启动守卫。
|
||||
- 期限使用单调时钟和条件变量。超时独立终止整个实例 Job,不依赖调用方继续轮询;完成只能在期限到达前撤销计时,完成操作不能在期限已过、计时线程尚未调度时绕过超时。终止失败、计时线程异常与普通超时分别返回稳定错误码。
|
||||
- finish 正常完成后保留常驻进程;cancel 主动终止实例;守卫未 finish 就被释放也终止实例,覆盖调用 future 取消或异常退出,避免留下无期限工具调用。释放会唤醒并回收计时线程,正常完成无需等待满 60 秒。
|
||||
- 真实 AppContainer 等待探针验证:正常完成守卫后进程仍活着;使用测试内部 100 ms 期限时,在没有 check/finish 轮询驱动的情况下进程退出,随后 finish 明确返回超时;显式取消和未完成释放均在 5 秒内观察到进程退出。生产公开 API 不接受延长期限参数。本轮没有执行完整 60 秒墙钟超限、计时线程故障注入或高并发调用压力测试,不能据此独立通过 C-04。
|
||||
- 48 项扩展回归通过、3 项 Job 辅助入口 ignored(由父测试执行),全目标 Clippy -D warnings 通过。日志 `.build/extension-deadline-tests.log`、`.build/extension-deadline-clippy.log`。
|
||||
- 守卫仍需接到实际 MCP/扩展调用派发与结束路径;正式许可/包句柄绑定、broker、scratch 配额及完整验收尚未完成,整体生产化目标继续进行。
|
||||
|
||||
Reference in New Issue
Block a user