开发与工程

cmux 测试二分定位(cmux-test-bisect)

当 Swift 包测试套件在 main 上持续变红时,该技能在 CI 上对历史提交做二分,逐个测试找出是哪次提交、哪种原因导致失败。

51/ 100
谨慎使用

价值存在,但可靠性、证据或控制措施仍有明显缺口。

查看评分依据 ↓
可直接使用于
Codex · Claude Code
Star 数
★ 28k
最近更新
1 天前
License
NOASSERTION
git-bisecttest-debuggingciswift-package-manager
+4github-actionsgh-cliregression-triageios-testing

这个 Skill 能做什么,适合哪些场景?

这是 manaflow-ai/cmux 仓库内置的 25 个技能之一,位于 skills/cmux-test-bisect/SKILL.md。它针对 PR CI 只跑筛选测试、完整套件在 main 上悄悄变红的痛点,用 scripts/ci/package_bisect.py 在 CI 上对旧提交逐点跑测试并生成失败矩阵。注意:它专属于 cmux 仓库本身,只覆盖 Packages/iOS 与 Packages/Shared 下的 SwiftPM 包套件,所有探针都在 CI 上运行而非本机。适用前提是你能为 manaflow-ai/cmux 这个仓库派发 CI 任务。

  • 从失败的 CI 运行中读取完整失败集,并区分偶发(flake)与真实回归
  • 用 package_bisect.py 在 CI 上对指定提交区间逐点运行 Swift 包测试(每个探针推送 bisect/ 分支,把今天的 iOS CI 文件铺到旧提交上)
  • 输出按测试×探针排列的失败矩阵,给出 broken by <sha>、flaky、failing at the oldest probe 等判定
  • 支持按正则筛选测试、--patch 应用已知修复、--bisect 并行第二个实验
  • 引导读 culprit PR 的 diff,判定是“测试过时”还是“代码回归”,并按不同方式修复
  • 指导用 test-ios.yml 定向验证,并在收尾时清理 bisect/ 分支
适合
  • 维护 cmux 的开发者发现 Packages/iOS 下的某个包套件在 main 上红了,想知道是哪次提交打破的
  • PR CI 只跑了被筛选的测试,完整套件已漂移多周,需要一次性定位所有失败
  • 被问到“是哪个 PR 弄坏了这个测试”,需要逐测试归因并区分测试过时与代码回归
  • 二分过程中旧提交构建挂掉(已知原因),需要用 --patch 跳过已知问题继续二分真正的疑问
不适合
  • 不属于 manaflow-ai/cmux 仓库的开发者:所有命令都硬编码为该仓库的 CI 工作流、包名和 runner 配置,无法直接迁移到其他项目
  • 想在本机快速二分的用户:该技能明确禁止在 Mac 本地做完整构建,全部依赖 CI 排队,单次等待可达 45 分钟
  • 针对 cmuxTests(app-host)失败的场景:该技能说明这类失败另有自动二分(#14510),不适用本流程

如何安装这个 Skill?

使用前请注意
  • 该技能深度绑定 manaflow-ai/cmux 仓库内部基础设施(package_bisect.py、test-ios.yml、org remote、Blacksmith),对其他仓库不可复用。
  • 使用时将向 org remote 推送探针分支并触发 CI 付费运行,且会临时去掉 package-lint 门;确认前请知晓这些外部副作用。
  • 核心脚本与 test-ios.yml 未在本次审查证据中,未经执行验证;置信度为低。
  • 仓库许可元数据为 NOASSERTION,服务器目录为 BUSL-1.1(商用受限),引用技能前请确认许可合规。
  • 技能为英文,无中文界面或中文环境适配说明。
开始前你需要
Agent 需要具备
  • Shell / 命令行
  • 网络访问
  • 本地文件系统
需要预先安装
  • GitHub CLI (gh)
  • python3
  • git
  • access to manaflow-ai/cmux CI (test-ios.yml)
  • macOS/Linux checkout of cmux with upstream remote

该仓库的 README 没有为安装技能集合给出具体命令(技能文档仅给出技能内使用的命令),来源未记载独立的安装步骤;该技能位于仓库 skills/cmux-test-bisect/ 目录,作为仓库一部分使用。

通用方式:手动安装到 Claude Code(macOS / Linux)
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/manaflow-ai/cmux.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/cmux-test-bisect" ~/.claude/skills/
rm -rf "$tmp"

根据源仓库地址和 Skill 路径自动生成,只复制这个 Skill 的文件夹。如果上文有作者提供的安装方式,请优先按作者说明操作;想只在当前项目中使用,把 ~/.claude/skills 换成项目里的 .claude/skills。

如何使用这个 Skill?

试试这样说

安装后,把下面任意一句发给 Agent 即可触发:

  • Packages/iOS 下的 CmuxMobileShell 套件在 main 上红了,帮我二分找出是哪个提交打破的
  • 是哪个 PR 弄坏了这个测试?逐个测试判断是测试过时还是代码回归
  • PR CI 只跑了筛选的测试,完整套件已经漂移几周了,用 CI 二分定位所有失败
  • 旧提交构建会挂掉,已知原因,加 --patch 跳过后继续二分这几个失败测试

技能由触发语激活(套件在 main 上变红、PR CI 只跑了部分测试、或被问哪个 PR 弄坏了测试)。核心流程:

  1. 用 gh run view 拿到今天的失败集,必要时跑两遍全量套件排除 flake;先搜是否已有修复中的 PR。
  2. 在自己的 worktree(从 upstream/main)里启动二分:
T=scripts/ci/package_bisect.py
python3 $T --package CmuxMobileShell start --points 6 <old-sha>..upstream/main
python3 $T --package CmuxMobileShell status --wait     # 最长 45 分钟
python3 $T --package CmuxMobileShell next --dispatch
python3 $T --package CmuxMobileShell cleanup
  1. 读 status 打印的矩阵(X 失败 / . 通过 / - 未在该探针运行 / ? 等待 / E 编译或 runner 失败)。INCOMPLETE 探针后的 '-' 不是通过,需用 --patch 加挂起修复再二分一次。
  2. 读 culprit PR,逐测试判定 stale test(改测试以表达原意)或 regression(改代码),不确定时选择让测试名保持真实的那种读法并在 PR 中说明。

值得知道的选项:--filter 正则缩小套件、--paths 改变中点候选提交范围、--patch 可重复地为每个探针应用修复提交、--bisect <name> 并行第二个实验(--package/--bisect 须放在子命令前)。状态存于 <git-common-dir>/package-bisect/<name>.,由同一 checkout 的所有 worktree 共享,日志按尝试缓存以便 status --refetch 增量下载。

这个 Skill 有哪些优点和局限?

优点
  • 所有探针都在 CI 上运行,不需要在笔记本上完整构建 cmux
  • 失败矩阵按测试×探针呈现,可直接区分 broken by / fixed by / flaky / 越界等情形
  • 考虑了真实工程陷阱:旧提交带旧 CI 脚本、挂起测试导致假破窗、flake 与回归的区分、INCOMPLETE 探针的 '-' 不是通过
  • 内置收尾纪律:cleanup 清理 bisect 分支、在 PR 中 credit 改变行为的原 PR
局限
  • 完全绑定 manaflow-ai/cmux 仓库:包名、test-ios.yml、runner(auto/Blacksmith)、org remote mf 都是该仓库专属
  • 单次探针等待最长 45 分钟,二分成本依赖 CI 排队
  • 许可证标注为 NOASSERTION,仓库整体为 GPL-3.0-or-later 加部分 BUSL-1.1(web/ 等),采用前需自行确认技能文件本身的许可边界

这个 Skill 与同类方案有什么区别?

与相关 Skills 并排比较;分数均按同一 FSRS 标准得出。

Skill FS 评分 Star 数 最近更新 License
cmux 测试二分定位(cmux-test-bisect) 本页 51 · 谨慎使用 ★ 28k 1 天前 NOASSERTION
CI 组件截图基线调查 ✓ Microsoft · 官方 37 · 不推荐 ★ 193k 3 天前 MIT
VS Code 冒烟测试助手 ✓ Microsoft · 官方 53 · 谨慎使用 ★ 193k 3 天前 MIT
疑难 Bug 诊断法 47 · 谨慎使用 ★ 281k 3 天前 MIT
SkillHub 测试与 CI 规范 47 · 谨慎使用 ★ 5.2k 3 天前 Apache-2.0

技能本身将可由 test-ios.yml 读取包任务的 ci.yml 运行与之区分(ci.yml 无包任务),并提及 app-host(cmuxTests)失败走独立的自动二分(#14510);仓库层面与 tmux 的对比属于终端产品范畴,与本技能无关。

FollowSkills 如何评估这个 Skill?

FollowSkills 评估 · FSRS-2.0
谨慎使用
51/ 100 五分制 2.6 / 5
1信任安全14 / 25 · 2.8/5

技能操作透明:探针通过 CI 推送 bisict/<name>/<sha> 分支并可用 cleanup 删除,提供回滚路径;明确说明探针会覆盖旧提交的 CI 文件并去掉 lint 门。扣分点:推送分支到 org remote、触发付费 CI 运行均无显式用户确认步骤,被覆盖的 CI 安全门(lint gate)被丢弃这一副作用仅一句带过,隔离与最小权限论证不完整。

2可靠稳定9 / 20 · 2.3/5

指令自洽且失败模式描述细致(INCOMPLETE 探针、`-` 不是通过、shallow checkout 修复、adopt/—refetch、watchdog 等都有可诊断的处理路径),但核心脚本 scripts/ci/package_bisect.py 未在证据中提供,静态审查无法复现关键路径;按锚点不超过 10 分,再因脚本不可见扣 1。

3适用触发10 / 15 · 3.3/5

触发条件明确(main 上红测、PR CI 只跑过滤测试、询问哪个 PR 弄坏测试),并清晰划出非适用范围(app-host cmuxTests 走自动 bisect #14510,仅限六个 SwiftPM 包)。扣分点:完全绑定本仓库及其 CI 基础设施(test-ios.yml、Blacksmith runner、org remote),无中文支持说明,环境外几乎不可用。

4规范维护8 / 15 · 2.7/5

文档分层合理(准备→执行→读矩阵→判定→落地),命名稳定、表格化 verdict 清晰。扣分点:技能目录无独立许可证文件(仓库级 NOASSERTION 元数据),无版本号、变更日志或维护责任人声明,对 #14510 等引用无链接稳定性保证。

5有效结果6 / 15 · 2.0/5

解决了真实且高价值的问题(过滤式 PR CI 导致 main 长期红测),给出从定位到落地的完整产出路径。扣分点:静态审查无法验证输出格式与矩阵读取是否可直接使用,效果依赖未提供的脚本与 CI 行为,按锚点不超过 7 分。

6证据核验4 / 10 · 2.0/5

有可审计的仓库内一手材料(CI 工作流、agents/openai.yaml、详细流程文档),但技能引用的 package_bisect.py 与 test-ios.yml 本身未在证据中出现,无独立第三方执行证据,按静态校准不超过 5 分,再扣 1。

1 2 3 4 5 6

点击维度查看打分理由

评估于 2026年10月10日 审查版本 3dd1fe78859f 评估证据[1][2][3][4][5][6][7][8][9][10][11]

证据充分度:低 — 主要依赖静态检查、作者材料或有限演示;适合发现线索,不适合做高风险决策。

查看完整评分方法 →

常见问题

这个技能能用于我自己的仓库吗?
不能直接用。它硬编码了 manaflow-ai/cmux 的包名、test-ios.yml 工作流和 scripts/ci/package_bisect.py,迁移到其他项目需要大量改造。
为什么探针要推送 bisect/ 分支而不是本地检出?
因为旧提交携带旧 CI 脚本,直接派发会在早期失败;技能把今天的 iOS CI 文件铺到旧提交上并放弃 package-lint 门禁,然后在 CI 上运行。
矩阵里的 '-' 是什么意思?
表示该测试在该探针处从未运行,绝不是通过。若探针被标记 INCOMPLETE(挂起测试看门狗或超时),其后的测试都显示 '-',需加挂起修复后重新二分。
如何区分测试过时与代码回归?
读 culprit PR:若 PR 有意改变行为且能证明(PR 描述、注释、同方向更新的其他测试),修测试以在新行为下表达原意;若测试意图仍然成立,则修代码、保留测试。不确定时选让测试名保持真实的读法并在 PR 中说明。

同仓库的其他 Skills

均来自 manaflow-ai/cmux

开发与工程

cmux 测试技能

为 cmux 仓库选择合适的本地/CI 验证方式,添加有行为依据的测试,并确保 Swift 测试文件在 Xcode 工程中正确接线。

★ 28k FS 60 推荐 1 天前
开发与工程

cmux-capture:cmux 窗口截图与录制

用一条 CLI 命令截图或录制 cmux 窗口,为 PR、bug 报告或视觉验证提供真实证据,且无需任何屏幕录制权限。

★ 28k FS 55 谨慎使用 1 天前
开发与工程

cmux 共享行为规则

为 cmux 多入口行为制定统一的实现与验证规则,避免某个入口改了、其他入口仍是旧逻辑或旧 bug。

★ 28k FS 48 谨慎使用 1 天前
开发与工程

cmux 发布助手

为 cmux 仓库维护者整理发版全流程:版本号递增、变更日志汇总、预发布守卫、打标签与产物校验,减少手工遗漏。

★ 28k FS 53 谨慎使用 1 天前
开发与工程

cmux 工作区操作技能

让 AI 代理安全地在调用它的 cmux 工作区内工作,避免误触用户正在查看的其他工作区或窗口。

★ 28k FS 64 推荐 1 天前
开发与工程

cmux 架构规范技能

在向 cmux 添加或大幅改写 Swift 文件、包、协调器、服务或公共 API 之前,先加载这套包架构、分层、依赖倒置与 Swift 6 并发规则,避免违反项目约定。

★ 28k FS 63 推荐 1 天前
开发与工程

cmux-browser:cmux 内置浏览器自动化技能

在不抢夺焦点的前提下,通过 cmux CLI 打开网页、探查浏览器表面、等待页面状态并提取数据,专为并行开发场景设计。

★ 28k FS 60 推荐 1 天前
开发与工程

cmux Socket 策略规范技能

为 cmux 的 socket/CLI 命令开发提供线程调度与焦点行为规范,避免高遥测负载卡死主线程、避免自动化命令抢占用户焦点。

★ 28k FS 58 推荐 1 天前
自动化与运维

cmux Cloud 虚拟机技能

让 AI 代理通过 cmux CLI 操作云端虚拟机:在持久化的远程终端上运行长时命令和编码代理,并在完成后向用户展示结果工作区。

★ 28k FS 56 谨慎使用 1 天前
开发与工程

cmux 调试技能

为 cmux(基于 Ghostty 的 macOS 终端)开发者提供调试日志、Debug 菜单、运行时陷阱和性能敏感路径的规范知识,避免在打字延迟敏感代码中引入卡顿。

★ 28k FS 56 谨慎使用 1 天前
开发与工程

cmux 合并前审查技能

在合并前审查 AI 编程代理的改动,用子代理独立发现正确性缺陷,以证据验证修复,控制审查消耗的开发者注意力。

★ 28k FS 55 谨慎使用 1 天前
开发与工程

cmux Ghostty 子模块工作流技能

为 cmux 贡献者提供 Ghostty 子模块与 GhosttyKit.xcframework 的标准化构建、推送与指针更新流程,避免子模块指针悬空导致的拉取失败。

★ 28k FS 54 谨慎使用 1 天前
开发与工程

cmux 开发工作流技能

为 cmux 贡献者提供原生构建、带标签开发包、Xcode 工程规范化与侧边栏扩展的标准化工作流,避免破坏正在运行的 cmux 会话。

★ 28k FS 53 谨慎使用 1 天前
开发与工程

cmux 诊断

为 cmux 用户收集安全、只读的诊断信息,快速定位钩子、通知、会话恢复和 CLI 控制不工作的问题。

★ 28k FS 51 谨慎使用 1 天前
开发与工程

cmux 核心控制技能

通过 cmux CLI 确定性地控制多窗格终端布局——创建工作区、分割面板、移动与聚焦表面、触发提醒,专为 AI 编码代理的自动化而设计。

★ 28k FS 47 谨慎使用 1 天前
开发与工程

cmux 键盘快捷键定制

把你的按键习惯变成 cmux 的快捷键绑定:提供向导、模板与一键应用,避免误绑和冲突。

★ 28k FS 58 推荐 1 天前
开发与工程

cmux 设置管理技能(cmux-settings)

安全查看、修改和回滚 cmux 终端的 cmux. 配置,改完即存即生效,无需重启应用。

★ 28k FS 58 推荐 1 天前
开发与工程

cmux 本地化规范与审计技能

在修改 cmux 任何用户可见文案时,强制执行本地化规则并跑完一条可核验的翻译审计流程,杜绝硬编码英文串。

★ 28k FS 56 谨慎使用 1 天前
开发与工程

cmux 自定义技能

针对 cmux 终端的配置技能:安全地编辑 cmux.、Dock 配置与 Ghostty 偏好,定制动作、布局、快捷键和通知,而不破坏现有配置。

★ 28k FS 55 谨慎使用 1 天前
效率与协作

cmux Markdown 查看器

把 .md 文件在 cmux 终端旁的格式化面板中打开,文件一变就自动重渲染,让计划、文档和笔记始终可见。

★ 28k FS 52 谨慎使用 1 天前

相关 Skills