diff --git a/docs/todo/system-design/32-hire-body-fill-reliability.md b/docs/todo/system-design/32-hire-body-fill-reliability.md index a50ad49..387ef07 100644 --- a/docs/todo/system-design/32-hire-body-fill-reliability.md +++ b/docs/todo/system-design/32-hire-body-fill-reliability.md @@ -134,6 +134,21 @@ if (existing?.protocol?.isConnected) { 4. **不做**:不做「保证自动跑到底」——这跟 30 号文档 §三的结论一致,全系统没有一处做这个 保证,这里也不该单独破例发明一套。目标只是把"静默卡死"变成"卡死了但看得见"。 +### 3.1 解决了什么 / 没解决什么(对照表,别读完方案又高估了它) + +| | 解决了 | 没解决 | +|---|---|---| +| **撞车丢请求** | ✅ 加了重试,绝大多数"招聘间隔太近撞车"场景自愈,不需要人工 | —— | +| **卡死后没人知道** | ✅ 从一行 console.error 变成可查询的持久标记 | ❌ 只是**可查询**,不是**主动通知**——没人去查还是发现不了;30 号文档 §三点名的"主动喊人"那一层没做 | +| **agent-creator 真的坏了(不是撞车、持续报错)** | —— | ❌ 重试耗尽照样停在"失败等人工",跟 DevLoop `retry_budget` 耗尽、Graph `blocked` 是同一套哲学,不追求自动恢复到底 | +| **新引入的并发复用会话风险** | ✅ 互斥锁从设计上直接避免触发这个场景 | ⚠️ `SessionPool` 并发复用同一会话本身的真实后果仍未实测验证(§四.1)——只是这次修复不会踩到它,不代表这个坑对别处调用方也不存在 | +| **另外两处同构缺口(DevLoop / Graph)** | —— | ❌ 完全不碰,本文档只动招聘装配这一处 | +| **hire 接口的调用体验** | —— | ❌ 接口仍是异步的,前端拿到的还是立即返回的 `training` 状态;装配完成/失败要另外查,跟今天一样,只是"失败"这个状态现在是真的会被写出来的 | + +**一句话版本**:这个方案把"静默卡死、永远没人知道"变成"卡死了会重试,重试也不行就留下一个 +能查到的信号"——它治的是**可靠性的地板**(从"完全没有保证"提到"有重试 + 失败可见"), +不是把整条链路变成"保证成功",也不负责把这个信号推给人看。 + --- ## 四、风险 / 未决问题