P0: 「总结这个网页」整轮失败零产出——手上已有可用搜索结果,却以「模型这次没能返回可用结果」收场,且失败呈现重复三处
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
## 现象(人类 2026-09-09 在 devapp 验收测试,baseline `0707985d1`)
任务:**「总结这个网页:https://openai.com/index/navier-stokes-solution/」**
结果:**整轮失败,零产出。** 人类原话:「已经有结果,但是不能往下走 / 整个过程都失败了」。
## 三个独立缺陷
### ① 手上已有可用信息却判定整轮失败(最严重)
同一次 run 里,`web_search` **成功**返回了目标 URL 的完整元信息:
```json
{"sourceId":"web:1d977876014d13d06569138f11e86311abfe7b1cc05db7e28b72be3bc7cdc7a1",
"url":"https://openai.com/index/navier-stokes-solution/",
"retrievedAt":"2026-09-09T06:32:01.361Z",
"contentHash":"4f63256df8d85171e42a20bb403da5ba2785c378427acfa41c9aaa56450a7779",
"title":"On the Navier-Stokes Millennium Prize Problem - OpenAI",
"snippet":"13 hours ago … We're sharing an AI-generated solution to the Navier-Stokes Millennium Prize Problem, including a writeup and a formal pr…"}
```
**至少足以产出「基于搜索摘要的总结 + 明确声明未能抓取原文」。** 实际却是零产出。
轨迹里最后一条 `web_search` 仍显示「进行中」,随后整轮判失败——**请先查清:那次调用是超时、被中止、还是返回了但没被消费?**
### ② 失败原因被通用措辞吞掉:「模型这次没能返回可用结果」
⚠ **这句话正是本项目此前修过的那一句。** 相关修法(`execute-run.ts` 的 catch 块)曾把它改成带真实异常:
```ts
detail: e instanceof ModelCallError ? e.detail
: e instanceof Error ? `unexpected model call failure: ${e.name}: ${e.message}`
: "unexpected model call failure"
```
现在它又以通用形态出现。**两种可能,请取证判定,不要预设**:
- (a) 这条路径没走那个 catch,真实原因在别处被吞;
- (b) 模型确实返回了空结果,那么「模型没返回可用结果」是**准确的**,但仍需说明**为什么**(上下文超限?工具结果过大?中断?)。
**没有可诊断的失败原因 = 无法修。** 这条优先级最高。
### ③ 失败呈现重复三处,且违反已签核契约
同一次失败在界面上出现三次:
1. 红色「**失败**」横幅
2. 「**这次任务执行失败** / 模型这次没能返回可用结果」卡片(带「重试任务」「修改输入」)
3. 又一条红色「**模型这次没能返回可用结果**」横幅
而 `phases/phase-01-run-a-project/contracts/plan-control/ui.md` 已签核的原文是:
> `failed` 态不出现在这条线上(它不是第六格),而是**替换整条**为一行失败摘要
**现状是三行,不是一行。** 请对照契约收敛为单一呈现——这也是本仓的老形态:同一事实声明在多处。
## 关联
- #3204:`fetch_url` 被拒的归因(本轮失败的上游诱因)
- #3209:任务偏移与不收敛(本轮偏离去抓 nytimes)
- #3208:阶段条状态错误
- **本 issue 的 ① 与 ② 是新的,且比上述都严重**——前面几条是「过程难看」,这条是「拿不到结果」。
## 交付要求
- **先做 ②**:没有可诊断的失败原因,①③ 都只能靠猜。
- 反证必做;**不许把失败文案改得更委婉了事**——要的是可分辨的原因。
- 人类正在验收测试,改动小而收敛。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the baseline 0707985d1 and trace the web_search call in the run for the supplied OpenAI URL, determining whether it timed out, was aborted, or returned unused data. Read execute-run.ts and phases/phase-01-run-a-project/contracts/plan-control/ui.md, then reproduce the failure and inspect existing execution/UI tests. Done means the cause is diagnosable, usable search data is handled appropriately, and the failure is rendered once according to the contract.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend-api-design, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100