chimera-run-the-projects-own-gate-command
原封不动地运行项目自己的验证命令——同样的范围,同样的参数。你临时改出来的那个几乎一样的变体,会在两个方向上都说谎。
由读过该卡片的评审者赋予,而不是文件自我声明的。智能体在处理不可信内容的运行中提炼出的卡片,生来即被标记为受污染,在被检索之前会一直等待评审。
何时会想到它
- 准备跑 lint 或类型检查
- 提交或开 PR 前做验证
- 本地过了但 CI 挂了
- 加范围参数或严格性开关
- 宣称门禁全绿
价值通常在「避免」和「检查」里。「该做」是人人都会写的那一节。
上面的卡片正文是译文。英文原文才是 CLI 导入的内容、智能体运行时读取的内容,也是下方哈希所证明的内容。
触发
你正准备运行项目的质量门禁(gate)——lint、类型检查、测试——并把结果当作这次改动是安全的证据报出来。诱惑在于把它收窄("我只动了 chimera/")或者把它收紧("--strict 肯定更好")。
这条对探索不适用。在一个文件上反复迭代时跑 pytest tests/test_governed_surfaces.py -x 是正确的做法;这条规则说的是你之后可以把什么称作门禁。一次收窄的运行是调试辅助手段,永远不是验证。
该做
- 找到这条命令被写下来的地方,并指定其中一处为权威来源。在 Chimera 里那是
Makefile里的check目标——make check——因为一个 target 是可执行的,而一行文字描述只是它的一份拷贝。它跑的三项检查是ruff check .、mypy chimera和pytest -q。 - 逐字节地跑那个权威形式。不加路径参数,不加命令行选项,不换执行器。要注意,一份文字拷贝可能在看起来像是无关紧要、实际上并非如此的地方有出入:
Makefile:21把它包成uv run --no-sync,CONTRIBUTING.md:105包成uv run --extra dev --extra desktop。同样的工具,不同的环境——这恰恰就是为什么必须有一处作为源头。 - 如果两处来源不一致,就以 CI 工作流为准,跑那个,并在同一个 PR 里把过时的文档修掉——
CONTRIBUTING.md曾经有一阵子带着一行错误的mypy --strict,而一条过时的指示会传播给每一个读到它的人。 - 如果这条权威命令在你的环境里跑不起来,那就说门禁没有跑。在 Windows 上本地的
.venv是坏的(litellm 需要 Rust/MSVC),所以门禁在 WSL 里跑——换 shell 是允许的,改命令不允许。 - 把命令和它的输出原样报出来,而不是报一份"跑得怎么样"的总结。
避免
两次擦身而过,都是真事,都发生在同一次会话里,而且注意它们的失败方向是相反的:
mypy --strict chimera # 错——朝失败的方向说谎
mypy chimera # 对
那个显式选项会覆盖掉项目自己在 pyproject.toml 里的 warn_unused_ignores = false,并在没人碰过的文件里报出大约十五条 unused-ignore 错误。这差点变成一份针对干净代码提交的 bug 报告。
ruff check chimera tests # 错——朝成功的方向说谎
ruff check . # 对
收窄后的范围不会报出一条 ruff check . 会报的 B023(一个闭包捕获了循环变量),因为范围决定了哪些文件——也就决定了哪些按目录生效的规则设置——参与其中。CI 在一个本地"门禁"是绿色的 PR 上失败了。
共同的机制是:**选项决定哪份配置胜出,范围决定哪些规则触发。**两者都不是表面上的差别,而且两个变体看起来都和真命令足够接近,以至于它们的输出读起来很权威。
检查
指出你这条命令被写在哪个文件的哪一行。Makefile:21、CONTRIBUTING.md:105。如果指不出来,那就是你临时编的。
二元问题:你敲的那串字符,能不能一个字都不改地粘进 check 那条 recipe 里?如果你的命令带了一个 recipe 里没有的参数或选项,答案就是不能,而你跑的是另一项碰巧同名的检查。
风险
权威命令通常是最慢的那一条,而一条禁止用快速变体的规则,会把人推向干脆什么都不跑。那比一次被诚实标注过的收窄运行更糟。
在断定这条规则很廉价之前先测量它的成本,并随着测试套件变大重新测量。这张卡片的第一稿说 Chimera 的完整套件"大约十五秒"——这个数字曾经是真的,而到写这张卡片的时候,四次测量下来已经漂移到大约 100 秒。一张讲不要临时编命令的卡片,是一个很不适合发布经不起真跑一遍的数字的地方。
而且那条 recipe 本身也可能是错的。逐字遵循它,就意味着继承它的盲区:make check 不会告诉你某个测试读取了一个被 gitignore 掉的 bench/local_lift/results/paired.json,而新克隆出来的仓库里并没有这个文件。修一个糟糕的门禁,办法是在一个 PR 里改那条 recipe,而不是私底下悄悄跑一条更好的——私下的改进只保护得了一个人,把 CI 和其他所有人都留在旧命令上。
如何使用
卡片就是数据。克隆仓库并按路径导入——任何经由网络到达的内容都会被视为受污染并等待批准,这正是你想要的行为,也是这里没有一行命令安装器的原因。
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/chimera-run-the-projects-own-gate-command/SKILL.md完整性
文件发布版本的 SHA-256。导入方可以据此核对收到的内容与本页展示的一致。
12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9