Repository navigation
Description
Written-by: Codex
目标与分支
目标分支:delivery/ai-centric-development-service。
负责人:@zy95-12。
关联:#2483;复用 #2511 的退出/租约对账、#2514 的显式基线选择。
将不合理的业务时长硬截断改为有证据的 warning。Chief 保持自主裁决;Chief 自身异常由独立的现有通知/个人代理链路兜底。所有 warning 必须共用同一套渐进式披露代码,不能每类 warning 各建一套通知、查询、上下文往返或状态机。
本 issue 是源码实施需求,不授权部署、现场任务/配置/凭据修改或付费推理。
已确认的现状
- project-harness.js 对 SDK 派发设置总时长计时器:projectExecutionTimeoutMs 默认120秒、上限2小时;持续输出不会续期,到时报告 SDK execution timeout。
- Chief inspection 默认排队10分钟失败、执行15分钟中断并进入恢复。
- Codex 与 Claude Agent SDK 原始事件流已进入宿主日志,已有 Session/worker/最近事件等事实;但尚未完整开放给 Chief 做受权、可分页的执行状态查询。不能将“已有日志采集”声称为“Chief 已具备全部诊断能力”。
- 合入等待默认24小时预算耗尽会 blocked。Chief 已有耗时、心跳、等待和反复交接的检查事实。
- autonomy 默认4次恢复动作或1小时后提示重新评估;当前有效进展主要识别新的候选 SHA 通过宿主测试,可能漏掉环境修复、定位和阶段性代码进展。
一、各类 warning 的业务语义
1. SDK 执行
- 同一次执行累计每满1小时提醒 Chief:1h、2h、3h……;持续输出不重置累计时长。
- 不因总时长自动停止、标记失败、释放占用、取消 Task 或创建 successor。
- 删除短总时长计时器的干扰,不能改成 warning 后还残留另一层2分钟/2小时硬截断。
- 提醒绑定 Project/Task/Attempt、worker/执行代次及实际开始时间,重复扫描/重启不重复发送同一小时档位,旧执行不污染新执行。
- Chief 得到执行状态、进展证据后,自主选择继续、查询、询问、请求停止或合法交接。
2. Chief inspection
- 排队超过10分钟、执行超过15分钟均改为 warning,不据此直接 failed/interrupted,也不暗中保留同样的硬截断。
- 接收者为项目明确配置的运维联系人对应个人代理;未配置时走既有受权 Maintainer/Owner 个人代理/本人回退,不伪造联系人或提升代理权限。
- 发送与查询不得依赖被卡住的 Chief 队列或同一个 Chief 再次执行。Chief 队列自身也应可见该告警。
- 正常忙碌可继续等待;受权联系人可查看现场、停止本次协调执行、确认退出后重新请求 inspection。
- 停止单次 Chief 调用不清空常驻 Chief 的逻辑 Session/长期记忆。通知不等于业务 needs-human,也不自动改变 Task 去向。
- 必须整理/补齐受权的查询、停止本次协调与重新巡检操作;不能依靠手改状态或重启恢复。
3. 旧 DAG
本轮不调整旧 DAG 的步骤期限和行为。
4. GitHub 合入等待
- 持续等待每满2小时向 Chief warning,不因为等待预算到期就把业务结果判失败/强制阻塞。
- 保留 required checks、审核、分支权限、精确候选和 provider-confirmed merge 门禁。
- 查询失败/状态未知与检查失败区分;Chief 判断等待、修复、转交或咨询。
5. 执行过久、心跳缺失、等待过久、反复打回/转交
- 统一经公共 warning 入口交给 Chief;事实提示不自动选下游、不自动转人工。
- 复用现有可配置阈值。SDK每小时累计提醒与心跳/无进展异常是不同事实,但可合并展示,避免重复轰炸。
- 框架提供现场证据和可核验的重复模式,不将未经证实的根因当结论。
6. 原“恢复预算”
取消独立“恢复预算耗尽/恢复截止线”的表达,合并为第5类的“反复恢复但缺少可验证推进”提示。提供恢复动作、耗时和产物变化,不以1小时或动作次数强制结束恢复/升级人工。新的提交、环境修复、测试结果、Review/merge 等事实分开标明;日志活跃不等于项目推进,单一测试通过口径也不能垄断进展判断。
二、给决策者的信息
公共摘要包含:关联身份与版本、触发原因/阈值/时间、当前状态与等待对象、最近事件、最近可验证进展、关键异常、证据完整性/未知项、近期已尝试动作和结果、可展开专题及证据引用。
各类型只提供领域事实/引用,复用已有查询:
- SDK:Codex/CC、逻辑/物理 Session、绑定资源、连接/进程探测事实、最近事件、正在运行的工具/命令及耗时、脱敏输出摘要、候选/变更/测试/PR变化。缺失信息标 unknown,不推断模型在思考,不收集隐藏思维链。
- Chief:队列等待、占用者、当前调用活动、inspection 范围、最近成功巡检、受影响 Task、worker/lease/退出证明、已尝试的恢复操作。
- 合入:仓库/PR/目标分支/精确 SHA、查询来源与时间、Draft/Open/Queued/Merged/Closed、冲突、必需/实际 checks 对照、失败日志引用、审核对应 SHA 和未解决意见、权限/队列问题、历次处理及状态变化。
- 心跳缺失:最后事件时间/摘要、独立连接与进程探测结果、仍运行的长命令;沉默不等于死亡。
- 等待过久:谁/什么条件、消息投递/领取/回复、依赖当前状态。
- 反复打回:角色流转时间线、逐次理由、重复模式、每轮产物变化、前次要求是否解决。
三、同一套渐进式披露实现(强制要求)
一套公共 warning 披露/交互入口:
- 第一层主动给裁决摘要,足够判断是否可立即行动。
- 第二层按需返回执行/交接/测试/合入等专题详情。
- 第三层按精确证据引用,分页读取指定范围的原始事件、日志和审核记录。
统一负责权限与身份校验、版本绑定、摘要封装、脱敏、分页/字节预算、投递/去重/已读与历史状态、同一 Chief Session 的上下文查询往返。类型生产者只负责提供已有领域事实及引用;允许必要的领域适配,不复制整套基础代码。
- 权限不足、退出未知、候选已变化、必需检查失败等影响合法裁决的事实必须首屏呈现。
- 标明事实采集时间、来源与未知项;绑定 Attempt/执行代次/候选 SHA,变化后旧详情标历史。
- 展开是只读行为,不隐式执行停止/重试/路由;应用动作前重新校验权限、当前状态和证据。
- 有界摘要/分页,未变化且已读内容不重复灌入上下文,原始日志不全量写长期记忆。
- 复用现有 Chief 结构化上下文请求往返、Effects、Inbox、巡检与调度 reconciliation。不新增监控 Bot、并行调度器、每类独立计时器或固定恢复工作流。
- Chief 的查询/询问/停止能力必须真实可用;现有 attempt.stop 是取消,不能冒充保留任务的“停止本轮执行”。复用并明确执行级停止边界,只有确认退出后才能继续交接;未知退出保持占用。
四、保留的硬边界与非目标
保留单次外部 I/O、启动/鉴权探测、停止等待的有界调用,以及明确的授权有效期、可续租 claim;具体阈值可按用途配置。等待超时不是退出证明,客户端请求超时不是后台操作失败/取消证明。
测试/准备/长命令使用明确的操作级预算,不能再被更短的通用资源层固定上限截断;超时保持环境/执行/断言失败的正确分类。
不扩大凭据/资源/代理权限,不绕过 GitHub 门禁,不自动接受 Task。旧 DAG 不动。无需新增 UI 产品或独立状态库。
验收与回归
- Codex/CC 两类适配器均可提供真实受权执行状态及有界详情;已注册 running、事件活跃、命令运行、等待输入、连接断开/进程未知有明确区别。
- SDK跨1h/2h/3h各一次 warning;持续输出不中断,重复扫描/重启不重复,新执行不收旧告警;无残留短总时长硬终止。
- Chief排队10min/执行15min只告警,原执行/队列保留;Chief自身不可用时通知仍能送到既有代理/人,覆盖配置联系人、合法回退、权限不足及投递失败。
- 受权代理可查、停止本次 Chief 调用、确认退出并重新请求巡检;保留长期记忆,未知退出不释放。非受权调用拒绝。
- 合入等待每2h提供精确现场报告;检查失败、未触发、冲突、待审批、排队、已合入、查询未知和候选变化分别验证。
- 耗时/心跳/等待/反复交接共用披露入口;缺失证据明确 unknown,正常长任务与无进展重复流转可区分。
- 摘要→专题→分页原证据在同一逻辑 Chief Session 跑通,覆盖跨项目拒绝、脱敏、字节/分页限制、旧快照标记、裁决前重验、已读去重和重启持久性。
- 证明不同 warning 使用同一公共封装/投递/查询/上下文往返实现,不出现每种类型独立的一套机制。
- 恢复1h/动作计数不触发截止或人工升级;不同进展事实正确呈现。
- 保留操作级硬超时及实际退出证明;测试/准备不被更短的通用资源命令上限误截断;旧 DAG行为不变。
- 提供未修复基线失败回归、修复后真实隔离执行链路验证;区分模拟/真实SDK与真实模型验收,不冒充独立Review或现场部署。
- 同步 PROJECT/ROADMAP 长期记忆、所属架构/接口文档、必要的OpenAPI与生成物,遵守现有上下文预算,不靠提高预算或丢弃规则解决。
Activity
Keep lost-worker warnings actionable and include Chief SDK allocations
Include mandatory Task and inspection scope facts in warning summaries
Replace execution cutoffs with shared progressive warnings (#2522)
zy95-12 commentedon Nov 5, 2026
Written-by: Codex
已通过 PR #2522 合入 delivery/ai-centric-development-service,merge5ca34860a24d0e6320e4d87cffbf37cf34ffcc06;fetch 后文件树与最终测试 head070d70305c49319cc0cb601b8402ebeca8d14d1b 完全一致。
本单源码交付:SDK每小时warning、Chief排队/执行阈值只告警并独立送原个人/人工Inbox、合入每2小时warning;旧DAG不动。所有类型复用一个摘要/专题/分页证据/声明已读/投递与动作入口。Chief可查看Codex/CC已观测状态与日志,首屏带Task身份、采集时间、关键阻碍、SDK/lease事实、巡检范围和有界影响列表。显式停止只影响当前执行,保留Task/常驻Session/记忆;未知退出不释放。恢复时间/次数不作为业务截止线。测试、长期记忆、架构、API/OpenAPI及生成物已同步。
最终同提交全量5,076通过/0失败/0跳过(含8个实际隔离DSH场景),Node24/tests-ok run42015001039通过。16条warning回归、71条warning/原生代理相关检查通过;warning模块100%行/89.46%分支/87.23%函数覆盖,未声称所有组合穷尽。实际HTTP/DSH验证原代理Inbox、重启恢复、受权停止与退出证明;未修复基线的SDK短超时及自审发现的告警缺口均有失败回归。
本次未部署、未改现场任务/配置/凭据,未调用付费模型。SDK事件进程测试为协议fixture,原生后端使用真实DSH与确定性provider;没有冒充真实Codex/CC模型或OpenToday现场验收。按本单源码范围关单。