跳到正文

Skills

chimera-ground-it-in-the-source

从已安装的版本里取签名,不要从记忆里取——一个看似合理的 API,在真正跑起来之前和真的没有区别。

模式来源: clean状态: activev0.1.0 · Apache-2.0

由读过该卡片的评审者赋予,而不是文件自我声明的。智能体在处理不可信内容的运行中提炼出的卡片,生来即被标记为受污染,在被检索之前会一直等待评审。

何时会想到它

  • 调用别人写的库
  • 这个参数叫什么
  • API 在版本之间变了
  • 凭记忆写框架代码
  • 本该存在的方法报 AttributeError

价值通常在「避免」和「检查」里。「该做」是人人都会写的那一节。

上面的卡片正文是译文。英文原文才是 CLI 导入的内容、智能体运行时读取的内容,也是下方哈希所证明的内容。

触发

你正准备写一处调用别人的库、框架或 CLI 的代码:一个方法名、一个关键字参数、一个配置键、一个返回值的形状、一个命令行参数。当回忆起来很有把握的时候,这条最为要紧,因为不管那个 API 存不存在,把握感都是以同样的方式产生的。

这条不适用于你天天在用的语言内置功能,它也不是在要求你写 dict.get 之前先去翻文档。分界线是:如果写错了,你接下来运行的东西会不会立刻抓到它。

该做

  1. 取实际安装的那个版本,不是你记得读到过的那个:uv pip show <pkg>,或者 python -c "import pkg; print(pkg.__version__)"
  2. 去读那个装好的东西。python -c "import inspect, pkg; print(inspect.signature(pkg.fn))",或者打开 site-packages 下面的文件,或者对 PATH 上的那个二进制文件跑 --help。这才是权威,因为这是将要被执行的代码。
  3. 当你用一篇博客、网上的一份 README,或者你自己的记忆时,把它当成一个假设,拿第 2 步去确认它。文档站描述的是最新发布版;你的 lockfile 可能并没有锁在那个版本上。
  4. 在写下会去索引你所假设结构的代码之前,先在一小段一次性代码里把这个调用跑一遍,把实际返回值打印出来。嵌套结构——["choices"][0]["message"]——正是记忆最不可靠、也最不容易大声报错的地方。
  5. 把证据留在代码旁边:版本号,以及你读到的那份签名或帮助输出。一条注释或者 PR 描述就够了,它会告诉下一个读者,这段代码当初是对着什么写的。

避免

写出看起来像 API 的文本。这里的失败不是拼写错误——拼写错误会立刻抛异常,几秒钟就能修好。它是一个完全遵守了这个库所有命名惯例、却并不存在的名字:

下面是这个仓库里的一个真实例子,而形状才是重点——这个猜测并不荒唐,它很合理


from chimera.core.checkpoint import WorkspaceGuard, diff_snapshots   # ImportError

# 它实际所在的位置。写这行之前 grep 一次就能找到。
from chimera.core.checkpoint import WorkspaceGuard
from chimera.evolution.diff_gate import diff_snapshots

代价不是那个异常——ImportError 又响亮又便宜。代价在于,同样自信的猜测一旦是关于某个行为的,它就会静默失败,而你只有在它产出的那个数字被发现是错的时候才会知道。

也要避免在错误的版本上做求证。为一个被锁在两个大版本之前的包去读当前文档,产出的代码对着一个你并没有在跑的库是正确的——而错误信息到来时,指向的是你的调用,而不是这处版本错配。

还要避免在包没有附带类型存根(stubs)时,把类型检查通过当成求证。面对一个没有类型标注的依赖,Any 会吞下你编造的每一个属性;检查报告成功,是因为它根本没有东西可查。

检查

对 diff 里每一处不显而易见的调用,你能不能指出你是在哪里看到它的——一份你打印出来的签名、site-packages 里的一行、一次你跑过的 --help?如果其中任何一处的诚实回答是"看起来是对的",那这处调用就是未经验证的,而说出这一点只需要一句话。

更强的检查是可执行的:拿第 4 步的那段代码对着已安装的版本跑一遍,把输出贴出来。一次能解析的 import,和一次返回了你预期形状的调用,是两个不同的事实;你依赖的是后一个。

风险

把这条用在所有地方,会把常规编码变成做研究,白白拖慢进度。把它花在陌生的调用、对版本敏感的调用,以及嵌套的返回结构上——而不是花在它们周围那一百行上。

更微妙的风险是求证得字面。已安装的源码会毫不犹豫地把 _internal_helper 摆给你看,它确实存在、今天确实能用,而且不是任何人的承诺。源码告诉你有什么;文档告诉你什么是受支持的。两者不一致时,优先用有文档的那部分接口,而如果你明知故犯地伸手到它之外,就在注释里说明,而不是让下一个读者以为那是被认可的。

如何使用

卡片就是数据。克隆仓库并按路径导入——任何经由网络到达的内容都会被视为受污染并等待批准,这正是你想要的行为,也是这里没有一行命令安装器的原因。

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-ground-it-in-the-source/SKILL.md

完整性

文件发布版本的 SHA-256。导入方可以据此核对收到的内容与本页展示的一致。

9a51bb6b117c736dba1de11a166efed09ad200134e153ad553f4701302025398

在仓库中阅读该卡片