diff --git a/docs/MDTODO/agentrun-runtime-reliability.md b/docs/MDTODO/agentrun-runtime-reliability.md index ee010b71..4b635989 100644 --- a/docs/MDTODO/agentrun-runtime-reliability.md +++ b/docs/MDTODO/agentrun-runtime-reliability.md @@ -160,6 +160,6 @@ 依据 [UniDesk #2275](https://github.com/pikasTech/unidesk/issues/2275) 泛化改进 AipodSpec 装配漂移调查入口:让默认 `agentrun describe aipodspec/` 的人类、JSON、YAML 有界投影同时披露 required skill 名称、总数与省略数,使同类 source-of-truth 对照无需 `--full` 或临时 dump;保持 SecretRef-only、运行面零变更,并以一次定向 smoke 验证,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R11.1_Task_Report.md)。 -## R12 [in_progress] +## R12 [completed] 解决 [AgentRun #372](https://github.com/pikasTech/agentrun/issues/372):修复 release runner 以 Bun 直接作为容器 PID 1、无法回收 Codex/Git 孤儿后代而持续累积 `timeout`/`git` zombie;在 runtime image 使用轻量 init 作为唯一 PID 1 并 exec 现有 boot 链,不改变 task/session、Kafka 实时/回放、持久化、lease、timeout、provider、SecretRef 或 workspace authority;经 release 自动交付后验证新 runner zombie 不再增长,不运行 Vitest、不人工补 CI/CD且不触碰 Webterm,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R12_Task_Report.md)。 diff --git a/docs/MDTODO/details/agentrun-runtime-reliability/R12_Task_Report.md b/docs/MDTODO/details/agentrun-runtime-reliability/R12_Task_Report.md new file mode 100644 index 00000000..3154053d --- /dev/null +++ b/docs/MDTODO/details/agentrun-runtime-reliability/R12_Task_Report.md @@ -0,0 +1,24 @@ +# R12 AgentRun runner 子进程回收任务报告 + +## 结论 + +已修复 release runner 将 Bun 直接置为容器 PID 1 导致 `timeout`/`git` 子进程无法回收的问题。最终根因不是镜像缺少 init,而是 runner Job 的 Kubernetes `command` 覆盖了镜像 `/sbin/tini --` Entrypoint;修复将启动脚本声明改为 `args`,保留现有 boot、task/session、Kafka、持久化、lease、timeout、provider、SecretRef 和 workspace 语义。 + +## 交付 + +- AgentRun PR [#373](https://github.com/pikasTech/agentrun/pull/373) 在 runtime image 安装并声明 `tini` Entrypoint。 +- AgentRun PR [#374](https://github.com/pikasTech/agentrun/pull/374) 移除 Job 对 Entrypoint 的覆盖,合并提交为 `c88661566a9e0379fa4afad1ccb1aab030912c29`。 +- 正常 release 自动链成功生成镜像 `sha256:712e999f59f6d4a837bb664f2af291b66e5df09f4db33ddcbbb5e35774815d77` 和 GitOps revision `16410d3427b7`;未人工触发 PipelineRun 或 Argo sync。 + +## 运行面验收 + +- 新 manager 启动日志确认 source commit 为 `c88661566a9e0379fa4afad1ccb1aab030912c29`。 +- 运行面镜像配置显示 Entrypoint 为 `/sbin/tini --`;manager 实际加载的 `src/runner/k8s-job.ts` 使用 `args`。 +- 自然业务 run `run_571fd8af447a4f8696a916f8a7e7d42d` 创建新 runner `agentrun-nc01-release-runner-8c657bded67e-555px`:Pod 使用新镜像、`command` 为空、`args` 为现有 runner boot 脚本。 +- 容器进程树为 `tini` PID 1 → Bun PID 7 → Node PID 154 → Codex PID 161。 +- 在 backend 初始化、resource bundle 物化和真实 commandExecution 前后两次采样,runner zombie 均为 0。 +- 发布前旧 runner 未被中断,继续使用旧镜像自然完成;未触碰 Webterm,未运行 Vitest。 + +## 关联内存证据 + +旧 AgentRun runner 退出后总 zombie 从 226 降至约 69,剩余主要来自仍运行的发布前旧 runner。新 runner 未复现增长。NC01 真实 `MemAvailable` 仍随业务在 2.7 至 3.9 GiB 波动,因此未为验收额外创建合成任务,也未启动 WebProbe。