桃子桃子快讯
返回首页
工具

Goldseam:借本地 LLM 为 Cypress 断链选择器生成可审查修复

开源工具 Goldseam 用本地或自带大模型修复 Cypress 失效选择器,修复结果以 git diff 形式提交,…

2026.07.06 · 周一4 分钟阅读

在端到端测试中,选择器因 DOM 变更而失效是工程师最常踩的坑之一。开源项目 Goldseam 给出了一个思路:让本地或自带的大模型来"修补"这些失效选择器,并把每一次修复都变成可审查、可回滚的 git diff,而不是在运行时悄悄替换定位符。

项目定位

Goldseam 是一个面向 Cypress 的插件与 CLI,定位是 Cypress Cloud 官方功能 cy.prompt() 的开源替代品。它的核心承诺是:模型只能改"选择器字符串",永远不能改写断言步骤;修复结果必须经过验证后再以 diff 形式落地,不在运行时偷偷换元素。

项目以日本金缮(kintsugi)工艺为名——修复本身可见、可审视,并成为测试对象故事的一部分。

工作流程

一次完整的"愈合"遵循六层阶梯:

  • Triage(分流):判断失效是真正的选择器漂移,还是时序问题。
  • Propose(提议):模型在脱敏后的 DOM 与可访问性树快照上提出最小改动,仅限选择器字符串。
  • Resolve(解析):在捕获的 DOM 静态环境下验证提议是否能命中目标,命中数为 0 或有歧义则重试(最多 3 次)。
  • Oracle(裁判):与历史"绿色"时的元素身份比对,避免修复到一个外观相似但语义错误的元素。
  • Rerun-test(重跑单测):单独重跑该用例,确认通过。
  • Rerun-spec(重跑整文件):整份 spec 重跑,全部通过才算真正"愈合"。

任何一层失败都明确报告为"放弃"或"失败",不会出现"伪绿色"的乐观结果。

与同类方案的差异

Goldseam 在 README 中给出了一张对比表,核心差异有三:

  • 模型运行位置:默认走本地 Claude Code CLI(claude -p),也支持 Ollama、任意 OpenAI 兼容端点或自定义可执行程序;不强制走厂商云。
  • 修复落点:以 diff 形式提交,由人 review;Cypress Cloud 的 cy.prompt() 在运行时重新解析,Healenium 等"运行时 healer"则在运行时静默替换定位符。
  • 失败诚实度:放弃是第一类结果,会被显式报告;而运行时 healer 可能给出"看起来绿、其实是假绿"的通过。

此外,Goldseam 把"用自然语言写步骤"与"自动修复断链"拆成两个独立工具,避免了把应用回退、步骤歧义、错误匹配三类失败原因混在一起。

隐私与 CI 成本

  • 模型只能看到脱敏后的 DOM + aria tree + 错误信息,不会接触应用源码。
  • 绿色用例保持原样,零写入;只有失败时才生成捕获物。
  • 自然语言步骤在本地翻译一次,结果缓存为可提交的 .goldseam-prompts/ 文件,CI 回放时不再调用模型,token 成本接近零。

支持的模型与快速上手

已验证可端到端跑通的运行器包括:

  • Claude Code CLI(默认,claude -p
  • Ollama 本地模型(已在 14B 参数的 Qwen 上验证)
  • 任意 OpenAI 兼容端点(含自建 GPU 部署,附 Modal 配方)
  • 任意命令行可执行程序(stdin 进、stdout 出)

集成只需两步:npm install --save-dev goldseamnpx goldseam init。失败时运行 npx goldseam heal 生成修复 diff,开发者 review 后提交即可。

适用边界

Goldseam 解决的是"选择器漂移"这一类可枚举的测试维护问题,对 DOM 大改、流程重构或业务断言变化无能为力。它把这类失败与模型判断错误分开呈现,让团队能更精确地区分"应用回退"和"测试自身脆弱"。项目以 MIT 协议开源,仓库地址与详细文档可在其 Hacker Show HN 帖中获取。

信源