:从6列到12列——任务监控报告的进化之路)
系列第22篇 | 当你发现能看到进度和能处理异常是两回事背景我们的AI Agent多系统协作平台每天都在跑任务。小虾写代码、小牛测试、小密复核。看起来很完美但有一个致命问题——我看不到任务卡在哪里了。最早的报告长这样| 任务ID | 完善内容 | 开发 | 测试 | 复核 | |--------|----------|------|------|------| | DEV-001 | 修复xxx | ✅ | ⏳ | - |6列简洁明了。但用了一天就发现测试卡了2小时我完全不知道。问题1超时是黑箱现象小牛测试一个任务我等了2小时没动静。打开报告一看| DEV-001 | 修复xxx | ✅ | ⏳ | - |只显示⏳进行中不知道卡了多久。原因报告只记录了状态进行中/已完成没有记录时间维度。就像看外卖APP只显示配送中但看不到骑手离你还有多远。修复给每个阶段加上超时时间| 开发状态 | 开发超时 | 测试状态 | 测试超时 | 复核状态 | 复核超时 | |----------|----------|----------|----------|----------|----------| | ✅ | - | ⏳ | 120分钟 | - | - |现在一眼就能看到测试已经卡了120分钟。问题2重试次数是黑洞现象任务复核不通过系统自动重试。但我不知道重试了几次也不知道还能重试几次。就像打客服电话只告诉你正在转接但不知道转了几轮、还要转多久。原因没有记录retry_count。系统默默重试用户一无所知。修复给每个阶段加上重来次数| 测试状态 | 测试超时 | 测试重来 | 复核状态 | 复核超时 | 复核重来 | |----------|----------|----------|----------|----------|----------| | ⏳ | 120分钟 | 2 | ❌ | - | 1 |现在能看到测试重试了2次复核失败1次。问题3报告刷屏现象任务完成后报告每分钟都在发同一条消息。飞书被刷屏了。【小密统筹报告 07-22 14:00】✅ 共1个任务全部通过 【小密统筹报告 07-22 14:01】✅ 共1个任务全部通过 【小密统筹报告 07-22 14:02】✅ 共1个任务全部通过 ...连续发了3小时原因没有报告标志机制。每次生成报告都显示所有任务包括已完成的。就像快递APP每5分钟通知你您的包裹已签收签收了100次。修复添加reported字段# 报告后设置reported1db.execute(UPDATE tasks SET reported1 WHERE msg_typenew_task AND reported0 AND status IN (verified,completed))报告只显示reported0的任务。完成后标记为1不再重复显示。问题4空闲时瞎忙现象没有任务的时候报告还是每分钟发一次空报告。飞书被空消息刷屏。原因没有空闲暂停机制。不管有没有任务都按时生成报告。就像冰箱里的便签纸不管你有没有看每小时自动换一张新的。修复添加空闲检测defcheck_idle_and_pause():# 检查是否有活跃任务activedb.execute(SELECT COUNT(*) FROM tasks WHERE status NOT IN (archived, cancelled, verified) ).fetchone()[0]ifactive0:# 空闲超过30分钟暂停ifidle_seconds30*60:returnTrue# 暂停returnFalse# 继续没有任务时30分钟后自动暂停报告。问题5结论撒谎现象报告说共6个任务2个失败但我明明只看到2个DEV任务在表格里。原因结论统计包含了TEST/RETEST任务但表格只显示DEV任务。数字对不上。就像超市小票显示共10件商品但袋子里只有2件——另外8件是赠品小样。修复结论只统计DEV任务# 只统计DEV任务ifnottid.startswith((FIX-,DEV-,REDEV-)):continue现在结论和表格一致。最终形态从6列进化到12列| # | 任务ID | 完善内容 | 开发状态 | 开发超时 | 开发重来 | 测试状态 | 测试超时 | 测试重来 | 复核状态 | 复核超时 | 复核重来 | |---|--------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------| | 1 | DEV-001 | 修复xxx | ✅ | - | - | ⏳ | 120分钟 | 2 | ❌ | - | 1 |每个阶段都有状态做什么超时卡了多久重来重试了几次。一眼就能看出任务卡在测试阶段已经120分钟重试了2次还没过。规范驱动这个进化不是拍脑袋想的而是来自用户定义的规范文件/vol1/1000/workspace/file/规范/ ├── agent工作内容.jpeg # 谁做什么 ├── 统筹内容要求.jpeg # 报告要包含什么 ├── 统筹报告格式.jpeg # 报告长什么样 └── 脚本编制要求.jpeg # 脚本怎么写用户说对标规范我就去查这些文件然后对照当前实现纠偏。规范是权威来源不是参考意见。经验总结状态≠进度只知道进行中不够还要知道卡了多久记录时间维度每个阶段都要记录超时时间和重试次数报告标志防刷屏已完成的任务标记reported1不再重复显示空闲暂停没有任务时自动暂停避免空消息刷屏结论要对得上数字统计范围要和表格显示范围一致规范驱动开发先定义规范再实现最后对标检查