返回模板库
详情页
提示词方法论
2026-09-09 23:34

C:\project

提示词写作方法论,可作为生成/优化 Prompt 的结构化起点。

提示词方法论
2,4765 min
| 空气 能破,而且你这个现象我判断 八成不是“网页真的超时”,而是 Codex 的“等待条件”和肉眼看到的“页面已经打开”不是一回事。

最典型的是:页面已经渲染出来了,但后台还有 WebSocket、埋点、广告、流式请求、iframe 或 SPA 请求一直没结束,于是 Codex 还在等某个 load/network idle/navigation complete 条件,最后自己判“超时”。这类情况下,单纯把 timeout 从 30 秒改成 60/120 秒通常治标不治本。

我建议你直接这么处理。

第一步,打开:

ChatGPT/Codex 桌面版 → Settings → Browser → Developer mode → Enable full CDP access

官方现在明确提供这个模式,它让 Codex 通过 Chrome DevTools Protocol 直接检查 DOM、console、network、页面状态,而不是单纯靠“看网页 + 等页面加载结束”。

这个对你这种“肉眼已经打开,但 Agent 说超时”特别有用。

然后最关键的,是给 Codex 加一条网页操作规则。我建议你直接塞进你的项目指令 / AGENTS.md:

网页自动化容错规则:

1. 页面导航、goto、load、network-idle 或浏览器等待发生 timeout 时,不得立即判定网页打开失败。
2. timeout 后必须立即二次检查:
   - 当前 URL
   - 页面 title
   - document.readyState
   - 当前页面可见正文
   - 目标元素 / 目标文本是否已经存在
3. 如果页面已经显示、URL 已正确跳转、目标 DOM 或目标文字已经出现,则将该 timeout 视为“等待条件误报”,继续执行后续操作。
4. 优先等待具体的目标元素、按钮、文字或 DOM 状态,不要依赖 network idle 作为页面成功的唯一判定标准。
5. 对 SPA、动态网站、流式页面、WebSocket 页面,不要求网络完全静默。
6. 页面肉眼可见但自动化状态不确定时,优先通过 CDP 检查 DOM、console、network 和当前页面状态,再决定是否重试。
7. 禁止因为单次 navigation timeout 反复刷新整个网页。
8. 只有同时满足以下情况才判定真正失败:
   - 当前 URL 不符合预期;
   - 目标内容不存在;
   - DOM 无有效内容或页面明确报错;
   - 重试一次后仍无法进入目标状态。

这一段非常重要。你的核心不是:

“不要超时。”

而是:

“超时不能等同于失败。”

这是两个完全不同的东西。

比如 Codex 做:

打开 example.com/dashboard

结果可能是:

Navigation timeout exceeded

但实际上:

location.href = https://example.com/dashboard
document.readyState = interactive
页面已经出现 Dashboard
“创建项目”按钮也已经出现

那就应该直接继续点“创建项目”,而不是傻乎乎地:

页面加载失败 → 再打开一次 → 再刷新 → 又超时 → 任务失败。

你现在碰到的很可能就是这一类。

还有一个很实用的改法:把“等待页面完成”改成“等待我要操作的东西出现”。

例如不要:

进入页面
→ 等待 network idle
→ 点击登录

改成:

进入页面
→ 等待“登录”按钮出现
→ 按钮出现立即继续

再比如后台页面:

进入订单页
→ 等待订单表格 / “订单管理”标题

而不是:

进入订单页
→ 等整个网站完全停止网络通信

很多现代网站实际上永远不会真正 network idle。聊天网站、Notion、Google 系、后台管理系统、各种 React/Next.js 应用尤其明显。

还有一个你可以注意的地方:Codex 现在实际上有两种网页路线。

内置 Browser 有自己独立的浏览器状态;Chrome Browser Use 则可以利用你 Chrome 已有的登录状态、Cookie、标签页和扩展。官方也明确区分了这两种。

所以我的推荐是:

普通网页测试、localhost、你自己的网页 → 内置 Browser
已经登录过的网站、需要 Cookie、账号状态、Chrome 扩展 → Chrome Browser Use
网页状态识别老抽风 → 开启 Full CDP
遇到 timeout → 先检查 DOM/URL,而不是刷新

还有一个特殊情况你得留意一下。

如果你现在 Codex 项目是跑在 WSL 里面,比如:

/home/halo/project

而 Codex 桌面版又是 Windows 环境,那么最近确实有人报告过 Windows Codex Desktop + WSL 项目 + Browser Use 的运行时衔接问题,Browser Use 的 Windows 侧 runtime 和 WSL sandbox 路径会发生冲突。这个问题的症状不一定跟你完全一样,所以我不会直接认定就是它。

但你可以很简单排除:

如果同一个网页任务:

C:\project
D:\project

项目里稳定,

而:

/home/xxx/project

就疯狂超时/Browser Use 异常,

那就基本锁定 WSL 桥接层了。

所以如果让我给你一个最省事的方案:

开 Full CDP + 加上面那段“timeout ≠ failure”的规则 + 让它等待具体 DOM,而不是 network idle。

这三个一起上,往往比“把超时时间调到120秒”有效得多。