antithesis-triage – 测试失败分诊与根因分析 Skill

3周前更新 12 0 0 0

antithesis-triage 是用于对 Antithesis 测试平台运行结果进行故障分类与问题排查的 Skill,帮助 AI Agent 分析测试失败原因、归类异常并定位潜在缺陷根因。

Skill 安装

多 Agent 安装
npx skills add https://github.com/antithesishq/antithesis-skills --skill antithesis-triage

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

Skill 详细介绍

antithesishq/antithesis-skills#antithesis-triage 是 Antithesis 官方仓库 antithesis-skills 中的一个 Skill,Skill 名称为 antithesis-triage。它面向的是使用 Antithesis 平台进行确定性模拟测试(deterministic simulation testing)的工程团队。

它是什么

  • 一个面向 Antithesis 测试工作流的辅助 Skill,主要用于对 Antithesis 跑出来的测试结果、失败用例、日志与信号进行分诊(triage)。
  • 它属于指导型 / 工作流型Skill,本质是一组面向 Agent 的指令、流程与判断方法,本身不是独立运行的软件,也不会自己启动测试或连接 Antithesis 服务。
  • 安装后,Agent 在处理 Antithesis 相关任务时,会按该 Skill 定义的流程去梳理失败信号、区分真实缺陷与噪声、归类失败原因,并给出下一步排查方向。

它不是什么

  • 不是 Antithesis 平台的替代品,不能自己执行模拟测试。
  • 不是通用的日志分析或 CI 调试 Skill,它的语境限定在 Antithesis 的测试与分诊场景。
  • 不负责帮你写业务代码或修 bug,它更偏向读结果、判断原因、给出排查路径。

核心用途

Antithesis 会通过确定性模拟在受控环境中大量探索程序状态,产出大量断言失败、异常信号与日志。人工逐个看这些信号成本很高。antithesis-triage 的作用是让 Agent 按一套结构化方式去处理这些信号:

  1. 把原始信号按失败类型、出现频率、影响范围分组。
  2. 区分确定性可复现的真实缺陷和由测试环境或配置引起的噪声。
  3. 对可疑失败给出优先排查顺序和可验证的复现思路。
  4. 输出便于工程团队接手的分诊结论,而不是笼统的有问题。

典型任务

  • 对一轮 Antithesis 测试运行的失败集合做归类与优先级排序。
  • 从大量日志/信号里挑出真正需要人看的少数几条。
  • 针对某一类失败,梳理可能的根因假设并给出验证步骤。
  • 把分诊结果整理成可交给开发者的条目(复现条件、相关断言、关联日志)。

工作方式

该 Skill 依赖 Agent 本身具备的读取文件、理解日志、推理分析能力。它提供的是如何做分诊的流程与判断标准,而不是提供数据源。这意味着:

  • Agent 需要能够访问测试结果、日志或相关材料,才能发挥作用。
  • Antithesis 平台本身提供测试执行与结果产出能力;Skill 负责的是对这些结果的处理方法。
  • 如果 Agent 拿不到任何 Antithesis 输出,这个 Skill 基本无法单独产生价值。

适合的用户

  • 正在使用或评估 Antithesis 进行确定性模拟测试的团队。
  • 需要处理大量测试失败信号、希望借助 Agent 提升分诊效率的工程师。
  • 希望把分诊流程标准化、减少人工反复看日志的测试/可靠性工程角色。

不适合的需求

  • 不使用 Antithesis、只需要通用日志分析的场景。
  • 期望 Skill 自动跑测试、自动修复代码的场景。
  • 与 Antithesis 无关的普通 CI 失败排查——除非你只是想借鉴它的分诊思路。

与普通 Agent 自身能力的区别

通用 Agent 也能读日志、猜原因,但没有固定的分诊方法论时,输出容易发散、优先级混乱、把噪声当成缺陷。antithesis-triage 的价值在于把分诊这件事约束成一套可重复的流程和判断标准,让 Agent 在 Antithesis 语境下输出更稳定、更贴近工程实践的分诊结论。

Skill 安全评估

总体判断:这是 Antithesis 官方仓库中的 Skill,来源可信度较高,本身属于流程/指令型 Skill,不包含自运行的软件逻辑。风险主要取决于你把它接入到什么 Agent、授予了什么权限、以及它被要求处理的数据是什么。

来源可信度

  • 来自 Antithesis 官方组织仓库 antithesishq 下的 antithesis-skills,属于一手来源,比第三方转发或 fork 更可信。
  • 建议始终从该官方仓库获取,避免使用来源不明的镜像或重新发布版本。

权限相关

  • 该 Skill 的用途决定了 Agent 需要读取测试结果、日志、信号文件等材料,这属于正常且必要的读取权限。
  • 分诊过程通常不需要写文件或执行 Shell;如果 Agent 被授予自动执行 Shell 的权限,那属于 Agent 层面的配置,而不是这个 Skill 本身的必需项。
  • 如果只是想让 Agent 帮忙分析日志、整理分诊结论,可以关闭 Agent 的自动执行 Shell 与自动写入权限,由你手动执行命令、手动保存结果,能明显降低意外操作的风险。

数据与凭证

  • 是否涉及 API Key、Token 取决于你如何让 Agent 获取 Antithesis 的测试结果。如果通过平台导出文件再交给 Agent,就不需要在 Skill 层配置凭证。
  • 如果日志或测试数据中含敏感信息(内部代码、密钥、用户数据),把它们交给 Agent 处理前应做脱敏,这属于使用习惯风险,而非 Skill 自身缺陷。

Prompt Injection 与供应链

  • 测试日志、断言信息等材料若来自外部或不可信输入,理论上可能被注入引导性内容。处理这类材料时,避免让 Agent 无条件信任日志中的文本指令。
  • Skill 本身不引入额外的 npm / pip 依赖或第三方运行时,供应链面相对较小;真正需要关注的是 Agent 运行环境本身。

降低风险的建议

  1. 从 antithesishq 官方仓库获取该 Skill,不要用来源不明版本。
  2. 如无必要,关闭 Agent 自动执行 Shell 与自动写入,仅保留读取与分析。
  3. 交给 Agent 的测试数据和日志先做敏感信息检查。
  4. 把 Skill 输出当作分诊建议,最终判断和改动由人确认。

没有任何工具能保证绝对安全。这里能做的是:来源可靠、权限最小化、人工把关。

Skill 使用要求

一、Agent / 客户端

该 Skill 属于 Antithesis 官方仓库中的 Agent Skill。官方没有公布完整的第三方 Agent 兼容列表。从 Agent Skill 的工作方式看,只要某个 Agent 支持 Skills 或类似的自定义指令加载机制,通常都可以尝试使用,包括 Claude Code、Codex、Cursor、Trae、OpenClaw、WorkBuddy 等。不同 Agent 的加载方式和兼容程度可能不同,具体以各自当前版本为准。

其中,Claude Code 对 Skills 机制的支持较为直接,通常可以优先在 Claude Code 中尝试;官方若未明确点名其他 Agent,则不视为官方支持。

二、运行环境 / 依赖

antithesis-triage 本身是指令/流程型 Skill,不捆绑独立的运行时。它不会因为安装而额外要求 Node.js、Python、Docker 等。是否需要这些环境,取决于你让 Agent 处理的任务:

项目 要求
Agent 支持 Skills / 自定义指令加载的 Agent,Claude Code 可优先尝试
Node.js / Python / Docker 非本 Skill 强制要求;仅当你处理的任务本身需要时才有用
Antithesis 测试产出数据 实际使用分诊功能时需要可读取的测试结果 / 日志 / 信号
网络 取决于你如何获取 Antithesis 输出;若用本地导出文件,则非必需

官方没有为这个 Skill 规定具体的 Node.js / Python 版本,不要假设存在硬性版本要求。

三、权限

  • 文件读取:必需。分诊需要读取测试结果、日志、信号等材料。
  • Shell 执行:可选。分诊本身不强制;若你想让 Agent 直接跑命令抓取输出,才需要。
  • 文件写入:可选。保存分诊结论时可放开,仅分析可不放。
  • 网络访问:可选。取决于输出是通过网络获取还是本地文件。

四、账号 / API Key

  • Skill 本身:不要求 Skill 层单独配置账号或 API Key。
  • 访问 Antithesis 平台数据:如果你要让 Agent 直接从平台拉取测试结果,可能需要平台侧的凭证,这取决于平台与你的 Agent 配置,不属于 Skill 强制要求。
  • 如果是用导出的日志文件做分诊,则不需要任何凭证。

最小使用条件

  1. 一个支持 Skills 的 Agent 环境。
  2. Antithesis 测试的输出材料(日志 / 信号 / 失败集合)。
  3. 允许 Agent 读取这些材料。

Skill 安装、使用与卸载教程

一、安装

LemonAIKit 本页面已经提供了 antithesishq/antithesis-skills#antithesis-triage 的安装指令,直接复制本页面的 Skill 安装指令,粘贴到对应的 Agent 或终端中执行即可。

如果你不确定自己的 Agent 如何安装 Skill,可以直接问当前 Agent:

如何安装 antithesishq/antithesis-skills#antithesis-triage?

也可以指定 Agent 提问:

如何在 Claude Code 中安装 antithesishq/antithesis-skills#antithesis-triage?

如何在 Codex 中安装 antithesishq/antithesis-skills#antithesis-triage?

如何在 Cursor 中安装 antithesishq/antithesis-skills#antithesis-triage?

让当前 Agent 根据自己的 Skill 加载 / 管理机制来指导安装,通常比手动复制目录更稳妥。不同 Agent 的 Skill 存放位置不同,官方没有为这个 Skill 提供统一的安装命令,不要套用其他 Skill 的安装方式。

二、安装后如何使用

安装后,该 Skill 通常在你把与 Antithesis 测试分诊相关的任务交给 Agent 时被触发。适合交给它的任务类型:

  • 对一轮 Antithesis 测试的失败结果做归类、去噪、排优先级。
  • 从大量日志里挑出需要人工关注的关键失败。
  • 针对某类失败梳理可能的根因与验证思路。
  • 把分诊结果整理成可交给开发者的条目。

向 Agent 描述需求时,尽量带上:测试轮次 / 材料位置、你关心的失败范围、你想要的输出形式(例如按优先级列出最值得先看的几条)。

自然语言使用示例:

使用 antithesis-triage,帮我分诊这次 Antithesis 运行的所有失败,按优先级排序并说明每条的判断依据。

使用 antithesis-triage,从这份日志里区分真实缺陷和测试环境噪声,只列出需要人工介入的项。

使用 antithesis-triage,针对这组断言失败整理可能的根因假设和验证步骤。

三、卸载

该 Skill 没有公开的统一卸载命令。不同 Agent 的 Skill 安装位置和管理方式不同,通常的做法是:

  • 通过对应 Agent 或 Skill 管理器提供的删除 / 移除方式,删除该 Skill。
  • 或者直接询问当前 Agent。

如何卸载 antithesishq/antithesis-skills#antithesis-triage?

如果没有统一卸载命令,直接让 Agent 根据自身机制移除通常更稳妥,不必手动去猜目录结构。

常见问题

1. 这个 Skill 能自己运行 Antithesis 测试吗?

不能。它只负责对已产出的测试结果做分诊,测试执行仍由 Antithesis 平台完成。

2. 安装后 Agent 没有明显反应,怎么确认已生效?

Skill 一般是在匹配到你提出的相关任务时才被触发。可以用一个明确的分诊请求测试,例如让它分诊一段 Antithesis 失败日志。如果仍无反应,检查该 Agent 是否支持 Skills 机制、Skill 是否放在它识别的路径下,直接问 Agent 你是否已加载 antithesis-triage 也是可行的排查方式。

3. 可以同时装到多个 Agent(如 Claude Code 和 Cursor)里吗?

通常可以,各 Agent 的 Skill 管理相互独立。但触发效果和兼容程度可能不同,建议以其中一个为主要使用环境。

4. Skill 更新后需要重新安装吗?

取决于你的 Agent 如何管理 Skill。如果它从仓库拉取或监听更新,可能自动生效;如果是手动复制到本地,就需要重新同步。具体以对应 Agent 的机制为准。

5. 不使用 Antithesis 有必要装它吗?

必要性不大。它是围绕 Antithesis 分诊场景设计的,脱离该场景价值有限。

6. 用它可以关闭 Agent 的 Shell 权限吗?

可以。分诊主要依赖读取与分析,不需要自动执行 Shell。如果你能手动提供日志材料,关闭自动执行权限不影响核心用途,还能降低风险。

Skill 更新日志

版本列表
无版本号
更新 PR #204 的技能版本
无版本号
更新 PR #198 的技能版本
无版本号
更新 PR #201 的技能版本
无版本号
更新 PR #200 的技能版本
无版本号
feat: 添加 antithesis-mutation-testing 技能 (#200) * feat: 添加 antithesis-mutation-testing 技能 验证的是 oracle 而非 SUT:一个每次运行都通过的属性,可能是一个永远 不可能失败的属性。对于每个安全类属性 (Always、AlwaysOrUnreachable、Unreachable),该技能注入一个 真实的 bug,在 Antithesis 下运行它,并确认目标 属性触发——然后将每个幸存者诊断为坏变异体、坏 oracle、坏工作负载或坏属性,将修复路由到工作负载或 研究技能。 工作原理:变异体仅作为补丁存在于用户代码树的临时 git fork 中——工作树从不被修改,clean.sh 会验证这一点。每个变异体 构建为自己的镜像(在 fork 的 compose 中交换 tag), 携带一个启动公告以证明部署了正确的 构建,以及一个证明有 bug 的代码已执行的标记,并在花费任何运行之前 在本地验证。运行以 --ephemeral 启动, 在专用的 --source 下,因此故意的失败永远不会进入真实的 属性历史。证伪要求标记与目标的 反例处于同一历史中,而不是两个运行范围的计数。 组件: - SKILL.md:先决条件、绿色基线门禁、开场访谈 (预算上限、并发、自主性、树写入权限)、 范围界定规则、三个工作流、自审清单 - references/:harness 机制、变异体设计(三部分补丁)、 静态杀伤链验证、扫描 + 判定阶梯 + 归因、 证据工件(访谈/状态/历史/报告)、缺失 scratchbook 的目录 重建、恢复协议 - assets/mutation-testing/:六个 bash 脚本(fork、sync-patches、 select-mutant、build-mutants、verify-mutant、clean)以及一个记录 工作目录的 AGENTS.md 另外:triage 在全绿运行中建议该技能,工作负载的迭代 文档在绿色运行后指向它,README 记录了用法和成本。 供审查时,承重部分是判定阶梯和 同一历史归因规则(sweep-and-verdicts.md)、预算和 停止规则(上限、尝试次数上限、无进展停止)、以 fork 的 base_tree 指纹为键的 双分支重新扫描规则,以及脚本的 INTENT/ASSUMES/GUARANTEES 头中的 fork 隔离保证。已针对真实租户端到端验证, 由三代理小组审查交叉引用和一致性缺陷,并 用 make validate 检查。 * 将 mutatable 添加到拼写错误字典,并将 mis-implemented 替换为 incorrectly implemented * 工作负载技能:简化变异测试的解释 Co-authored-by: Carl Sverre * README:澄清变异测试成本 --------- Co-authored-by: Carl Sverre
无版本号
更新 PR #195 的技能版本
无版本号
更新 PR #199 的技能版本
无版本号
更新 PR #194 的技能版本
无版本号
更新 PR #191 的技能版本
无版本号
更新 PR #189 的技能版本
无版本号
更新 PR #188 的技能版本
无版本号
更新 PR #184 的技能版本
无版本号
feat: 在 antithesis-triage 中设置 triage 插桩设置信号 (#184) * feat: 向 antithesis-triage 添加插桩设置信号 triage 添加 references/instrumentation.md:通过 'Software was instrumented'、'Symbols were uploaded' 和 'Thread pausing was enabled' 属性验证 SUT 和工作负载 已插桩,解释 debug-id 去重注意事项,并且仅当这些属性未涵盖预期二进制文件时, 才回退到 init_coverage_module 事件查询。 将该检查接入 triage-a-run 工作流,添加一个独立的 'Verify instrumentation' 工作流,并添加一个自审标准,使 未插桩的声明遵循证据规则。 Co-Authored-By: Claude * fix: 处理审查意见——移除 Go 特定的事件查询,以源代码作为主要信号 Co-Authored-By: Claude --------- Co-authored-by: Carl Sverre Co-authored-by: Claude
无版本号
chore: 为 PR #182 回填 changelog 条目和技能版本号提升 (#183) * 更新 PR #182 的 changelog 回填:PR #182 合并时没有 changelog 标签,因此 pr-merge-changelog 工作流短路,未添加任何条目。 通过运行 `.ci-scripts/changelog.py add-entry` 并传入 `find_merged_pr.py` 本会生成的条目文本复现。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * 更新 PR #182 的技能版本 回填:同样的短路跳过了版本号提升。通过 运行 `.ci-scripts/update_skill_versions.py update --sha 5b6aeb5` 复现, 使用工作流本会传入的 #182 合并提交 SHA。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu --------- Co-authored-by: Carl Sverre Co-authored-by: Claude Opus 5 (1M context)
无版本号
更新 PR #180 的技能版本
无版本号
feat: 教 triage 用 --begin-vtime 对大型日志下载进行窗口化 (#180) * feat: 教 triage 用 --begin-vtime 对大型日志下载进行窗口化 日志大小在获取之前无法得知,完整历史流式传输可能需要 10 分钟以上。Triage 之前对此情况没有指导, 因此代理会阻塞在无界下载上。 references/logs.md 现在用 `timeout` 限制下载,并记录了 通过 `--begin-vtime` 进行窗口化下载。发现已针对真实的 1031-vtime 秒运行验证: - 流式传输是从最早 -> VTIME,因此截断的下载会丢失 失败时刻。不能将其作为完整内容分析。 - 超时的部分内容作为大小探测毫无用处:服务器端准备 阶段不输出任何内容,因此 4s 和 6s 预算产生 0 字节,8s 产生 完整的 56MB 日志,10s 产生 48MB 前缀。改用窄窗口 探测,并按每 vtime 秒的字节数缩放(在 10/50/200s 窗口内均匀度约 10% 以内;整段运行的密度更低,因此晚窗口 外推会高估,但偏安全)。 - active_faults 是从流式事件重建的,因此从故障中途开始的窗口 会报告无故障,且不包含任何故障事件来 暗示这一遗漏。填充窗口起点可以精确修复它 (--begin-vtime 1030 -> {},1020 -> 真实分区),同时比完整日志 小 58 倍。永不结束的故障无法 通过任何有界填充恢复。 SKILL.md 步骤 3c 指向新章节,以便代理在 发出盲目下载之前看到它。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 明确说明没有完整日志时故障状态不可信 之前的表述(“始终填充窗口;将填充视为预热”) 暗示填充使 active_faults 可信。事实并非如此。该 注释派生自流中存在的故障事件,因此 窗口化日志无法确定故障状态,而不完整的注释 从窗口内部看与真正无故障区域无法区分。 相应重新表述: - 只有完整日志才能确定故障状态。 - 绝不要从窗口得出“没有故障处于活动状态”的结论;报告 无法确定故障状态。 - 如果结论依赖于故障关联,请下载完整日志—— 窗口化不是该分析的选项。 - 填充是一种无法从窗口内部验证的缓解措施, 并且对于没有有界结束的故障窗口通常不够。 大小决策列表现在将故障状态依赖性列为 获取完整日志的理由。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 放弃 timeout(1) 包装,改用先探测再确定大小 用 `timeout 120` 包装下载在三个方面是错误的: - 它重复了每个代理 harness 已提供的功能,并 破坏了本仓库的现有约定:antithesis-launch/SKILL.md 和 antithesis-setup/references/submit-and-test.md 都指示代理 使用后台执行 / 宽松的 harness 超时,从不使用 timeout(1)。 - `timeout` 是 GNU coreutils,在原生 macOS 上不存在,因此 文档中的命令对 macOS 客户会直接失败。 - 它是在一个糟糕的第一步周围的脚手架。一个窄的 `--begin-vtime` 窗口无论历史大小如何都会在几秒内返回,因此提前确定日志大小 将截断下载路径从正常流程中完全移除。 该章节现在以窄窗口探测开头,并且当确实需要完整 下载时(故障关联),指向 harness 后台执行,而不是墙钟包装器。已验证:一个 30-vt 探测耗时 11s / 2.6 MB,并估计为 92 MB,而实际为 57 MB—— 高估,这是安全的方向。 截断部分内容的指导被保留但降级,因为它现在 是边缘情况而非预期路径。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 将大型日志指导简化为后台下载并监控 之前的版本告诉代理从窄的 --begin-vtime 探测估计日志大小。在当前架构下这是不可能的。 日志密度在一次运行中不是恒定的,因此来自一个区域的样本 对其他地方毫无说明。该 PR 自己的测量已经显示了 这一点(整段运行 55 KB/vt,而晚段 88 KB/vt),而指导 与之矛盾。 在下载运行时再次测量:6 秒后文件为 207 KB,覆盖 1031 中的 vtime 93。完成的日志为 56.8 MB。 从该样本外推预测为 2.3 MB,错了 25 倍。 替换为简单建议: - 按照 antithesis-launch 和 antithesis-setup 中的现有 约定,在后台运行下载并监控它。 - 从文件大小和文件中的最后 vtime 读取进度。 明确说明无法计算总大小和剩余时间。 - 决定:如果需要完整日志(故障注释 需要它),让它继续;或者停止并用 --begin-vtime 取一个切片。 移除了大小估算数学、密度数字和超时 预算表。用 ASD-STE100 简化技术英语重写了该章节。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 简化为带超时运行,然后等待或切片 移除了“监控进度”章节和 harness 特定 说明。代理已经知道如何在自己的命令工具上设置超时, 因此该技能只需说明下载可能耗时 很长。 流程现在为三步: 1. 带超时运行下载。 2. 如果未完成,做出决定。 3. 要么等待它(更长的超时,或等待后台 命令),要么取消它并用 --begin-vtime 取一个切片。 还删除了进度读取命令和文件大小/vtime 比较。不要估计大小的指示仍然保留,因为那 是最初的错误。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 将故障注释警告缩减为简短提示 将“切片中的故障状态不可信”章节替换为 切片章节中的五行提示。移除了证据表、 项目符号列表以及无界故障窗口的解释。 该提示还更准确地说明了行为。切片中的 注释是部分的,而非错误的:出现的故障是正确的,但一个 在 BEGIN_VTIME 之前开始的故障根本不会出现。因此空的 active_faults 不能证明没有故障处于活动状态。 还移除了关于启动事件的重复陈述, 不完整文件段落已经涵盖了它。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 应用审查反馈 - 移除 --begin-input-hash 段落。--begin-vtime 本身就会返回 给定 vtime 处最早的条目,并且该标志在测试中产生 字节完全相同的输出,因此该段落记录了一个 并不存在的区别。 - 将 --begin-vtime 描述缩短为一个从句。 - 将 SKILL.md 步骤 3c 缩减为指向 references/logs.md 的指针。它 删除的逐字/不四舍五入规则已在 logs.md 中说明。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu --------- Co-authored-by: Carl Sverre Co-authored-by: Claude Opus 5 (1M context)
无版本号
更新 PR #179 的技能版本
无版本号
更新 PR #178 的技能版本
无版本号
更新 PR #177 的技能版本
无版本号
更新 PR #176 的技能版本
无版本号
更新 PR #169 的技能版本
无版本号
triage: 通过 snouty doctor --json 解析租户并在浏览器中提供报告 (#169) 将 triage 技能切换为从 `snouty doctor --json`(其 `settings` 数组)读取 snouty 解析出的租户,而不是 $ANTITHESIS_TENANT 环境变量,因为 snouty 从 环境或设置文件解析租户。预检现在使用 `--json` 并 检查顶层 `ok` 以及 `api_key` 检查状态。 还添加了指导,用 `snouty runs show --web` 在浏览器中打开完整 triage 报告,而不是粘贴冗长的签名 `links.triage_report` URL,并提供该 URL 的无头回退方案。 Co-authored-by: Claude
无版本号
更新 PR #165 的技能版本
无版本号
triage: 依赖 snouty 原生日志注释 + 属性过滤器,移除捆绑的日志脚本 (#165) * triage: 依赖 snouty 原生日志注释 + 属性过滤器,移除捆绑的日志脚本 移除 triage 技能捆绑的日志辅助工具(download-logs.sh、download-logs-chunked.py、process-logs.py),并直接基于 snouty 驱动 triage,后者现在原生注释日志(active_faults + ANSI 剥离)并支持 --name/--group 属性过滤器。为 NDJSON 流式工作流重写 references/logs.md,更新 properties.md 和 run-discovery.md,并修复指向已移除脚本的 Makefile/CI/文档和跨技能引用。 Co-Authored-By: Claude * debug: 将最低 snouty 版本提升到 0.6.0 0.6.0 提升(83f0ef0)早于 #162,后者向 debug setup-session 参考添加了新的 snouty>=0.5.0 门禁。将其提升到 0.6.0 以匹配套件 其余部分;snouty debug --run-id(该技能首选的启动路径)反正也需要它。 Co-Authored-By: Claude --------- Co-authored-by: Claude
无版本号
更新 PR #162 的技能版本
无版本号
将最低 snouty 版本提升到 0.6.0
无版本号
更新 PR #168 的技能版本
无版本号
更新 PR #161 的技能版本
无版本号
更新 PR #167 的技能版本
无版本号
更新 PR #164 的技能版本

暂无评论

none
暂无评论...