研发协作
在 Antithesis…
当需要从 Antithesis 测试运行中启动调试会话、打开调试 URL,并在运行内部检查容器文件系统与运行时状态时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Antithesis 多宇宙调试器中特定
解决思路
- 使用 agent-browser 技能与 Antithesis 多宇宙调试器(MVD)交互。
- 每次调试会话都使用一个全新的唯一 SESSION 值,例如 antithesis-debug-$(date +%s)-$$。
- 使用 --session-name antithesis 让 agent-browser 自动管理共享认证状态,同时用 --session "$SESSION" 让每次调试运行与其他并发 agent 隔离;调试完成后关闭该唯一活动会话。
- 开始前从用户处收集:调试器 URL(必需,形如 https://TENANT.antithesis.com/debugging-session/...)、要调查的内容(文件系统内容、运行时状态还是特定产物)、容器名(如已知;未提供时可从日志视图或容器下拉框查看可用容器)。
- 优先使用 simplified 模式:点击日志行设置时刻/容器,输入 bash 命令并按 Send,适合运行 shell 命令、读文件、列目录、提取产物。
- 仅在需要时升级到 advanced 模式:目标容器在 MVD recreate 时刻已崩溃或未运行(需通过 moment.rewind_to(...) 时间回溯并用 bash...run({container: "<name>"}) 按名指定)、分支(moment.branch())与推进时间(branch.wait、branch.wait_until)、从同一时刻探索多个随机历史(branch.send_input)、事件集查询(environment.events.up_to(moment)、.contains({source}))、故障注入器状态检查或控制(environment.fault_injector.pause/unpause)、后台进程与等待进程退出(run_in_background、p.exits)、复杂多单元格 notebook 工作流与分组授权、完整 JavaScript notebook API,以及 simplified 模式不工作时的逃生通道。
- 注入运行时后检测当前模式:agent-browser --session "$SESSION" eval "window.__antithesisDebug.getMode()",返回 "simplified" 或 "advanced";用 window.__antithesisDebug.switchMode("simplified") 切换。注意右侧面板的 "Simple mode"/"Advanced mode" 标签条(.display_area__tabs)与 switchMode() 不一致,该标签条控制帮助/弹出面板内容;要读取页面上的 advanced 模式帮助(约 5KB 的 notebook API 权威参考),点击该标签条中的 "Advanced mode" 并读取 document.querySelector(".display_area__layout").innerText。
- 按任务阅读对应参考文件:始终先读 references/setup-session.md;simplified 模式读 references/simplified-debugger.md;advanced 模式先读 references/advanced-debugger.md(心智模型、模式切换、授权、分支、时间推进、故障注入器、主机命令、常见错误),再读 references/notebook.md、references/actions.md、references/common-inspections.md;下载日志读 references/download-log.md。
- 运行时注入对 simplified 和 advanced 两种模式都必需,它提供 window.__antithesisDebug API,含 simplified、notebook、actions 三个命名空间;用 cat assets/antithesis-debug.js | agent-browser --session "$SESSION" eval --stdin 注入当前页面。
- 注入后通过 agent-browser eval 调用方法,例如 window.__antithesisDebug.simplified.runCommand("ls -la /") 或 window.__antithesisDebug.notebook.getSource();agent-browser eval 会自动 await Promise,异步与同步方法调用方式相同。
- 若 window.__antithesisDebug 缺失,重新注入 assets/antithesis-debug.js 后重试方法调用。
- 不要在 agent-browser open、导航或其他可能替换页面的命令并行时运行方法调用;等目标页面稳定后再开始 eval 调用;查询顺序执行,并行启动的变更操作会互相干扰。
- 每次 open 调用或任何可能导航/替换页面的交互后,先确认浏览器已落在调试器页面,再注入 assets/antithesis-debug.js 并调用相应的 waitForReady(),然后才运行其他方法。
- 导航后注入运行时并调用相应 waitForReady:simplified 用 window.__antithesisDebug.simplified.waitForReady(),advanced 用 window.__antithesisDebug.notebook.waitForReady();两者最多轮询 60 秒并返回 { ok, ready, attempts, waitedMs },超时结果还含 details。
- 一次性探测用 window.__antithesisDebug.simplified.loadingFinished() 或 window.__antithesisDebug.notebook.loadingFinished();诊断用 window.__antithesisDebug.simplified.loadingStatus() 或 window.__antithesisDebug.notebook.loadingStatus()。
- 从 simplified 模式开始,它足以处理大多数调试任务;只有明确需要 notebook API 时才切到 advanced 模式。
- 认证交给 antithesis-agent-browser 技能:若调试器 URL 需要认证,使用其 references/setup-auth.md 的交互式登录流程,并使用相同的 --session-name antithesis 以共享认证状态。
- 使用一次性会话:每次调试运行生成唯一 SESSION,搭配共享的 --session-name antithesis,结束时或中止时执行 agent-browser --session "$SESSION" close。
- 两种模式下都顺序运行命令,等每条命令完成后再发下一条。
- 不要编造容器名:用 simplified 的容器下拉框或 advanced 的 environment.containers.list({moment}) 确定有效容器名。
- 清晰呈现结果:报告文件系统内容时包含完整路径与列表;报告产物搜索时说明找到了什么、没找到什么。
- advanced 模式专用:每次 open 调用或页面重载后都要注入 assets/antithesis-debug.js 并调用 notebook.waitForReady() 再进行下一个方法调用。
- advanced 模式专用:若命令因 window.__antithesisDebug 未定义或缺失而失败,重新注入运行时并重跑同一方法。
- advanced 模式专用:用 action() + required_by 分组效果,不要逐个授权单元格,当一次点击可触发一条链时参考 references/advanced-debugger.md 的 tethered_authorization 模式。
- advanced 模式专用:不要编辑已授权的命令,新尝试要新建分支(和新 action);编辑已授权单元格会在未重新授权的情况下重跑(已知 bug)。
- advanced 模式专用:非零退出码会终止分支,同一分支上的后续命令会以 CAMPAIGN SAW TERMINAL EVENT 失败;需从同一或更早时刻 fork 新分支。
- advanced 模式专用:信任 cell.text/innerText 而非 actionCompleted,运行时的完成检测会漏掉真实的 DONE 状态,应直接读取单元格文本。
- 声明完成前做自检:确认每个文件系统列表或产物搜索都来自真实调试器输出而非推断;证据链清晰(运行了哪些命令、返回了什么、得出什么结论);摘要区分调试器显示的内容与你的解读或建议;调试运行结束时已关闭浏览器会话。
适用边界 · 注意事项
- 未安装 agent-browser 或版本低于 v0.23.4 时不要继续(可用 agent-browser upgrade 升级)。
- 不要用本技能处理认证与报告导航,这些由 antithesis-agent-browser 技能负责。
- 不要在页面导航或 open 命令进行中并行运行 eval 方法调用。