跳到正文

Skills

chimera-thin-vertical-slice

在把任何一层建完整之前,先建一条穿过每一层并且能跑起来的窄路径——一次从未执行过的集成只是猜测。

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

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

何时会想到它

  • 开始做一个新功能
  • 这需要 CLI、服务和存储
  • 先把抽象层搭出来
  • 现在什么都还跑不起来
  • 搭一个子系统的骨架

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

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

触发

你要开始一件跨越多层的工作——一条命令到达编排器、编排器调用提供方(provider)、提供方写入存储——而你正在决定先建哪一部分。诱惑在于把最底下那一层完整建好,再建下一层,最后再把它们接起来。

这条不适用于真的只有一层深的工作:一个解析器、一个格式化器、一个纯函数。那里没有纵向可言,硬造一个只是仪式。它也不适用于一个已经端到端跑得通的系统内部的改动;那条路径已经存在,这一刀已经付过费了。

该做

  1. 说出这一刀会产出什么可观察的东西,形式是一条别人也能敲的命令,加上一个具体的输出。不要说"流水线跑通了"——而是 chimera run "hi" 打印出一行来自真实提供方的内容。
  2. 先把这次调用写出来,作为一个脚本或一个测试,并看着它因为正确的原因失败。
  3. 实现穿过每一层的最短路径,每一层都做成退化版:一个提供方、不重试、没有配置文件、没有缓存、没有并发。将来会放策略的地方,先放一个常量。
  4. 承载真正未知的那一层要保持真实。如果你还不知道提供方会返回什么,那提供方就是第一刀里唯一不能是桩的东西。
  5. 在它跑通的那一刻提交,在泛化之前。那次提交就是这些层能拼在一起的证据。
  6. 一次只加宽一个维度——第二个提供方,然后是配置,然后是缓存——每加宽一次都保持第 1 步那条命令仍然能用。如果它坏了,那次加宽就是嫌疑人。

避免

在零个调用方的情况下设计接口。横向的顺序会在第一天产出一个基类、六个适配器、一个注册表和一套重试策略,然后在接线的时候发现形状是错的——因为在此之前,没有任何东西向它提过一个真实的问题。


class BaseProvider(ABC): ...
class ProviderRegistry: ...
class RetryPolicy: ...

# 第 1 天,纵向:难看、写死,而且它回答了那个问题。
def complete(prompt: str) -> str:
    return _post(URL, {"model": MODEL, "prompt": prompt})["choices"][0]["text"]

也要避免在错误的维度上切薄的那一刀:把外部调用 mock 掉,其余部分端到端地跑。那证明的是你自己那几层彼此一致,而那从来就不是有疑问的部分。你没有演练过的那处集成,正是将来会出错的那处集成。

检查

问一个二元问题:一个没有写过它的人,在一份干净的检出上,能不能跑一条命令,看着这个功能从头到尾把活干完?如果答案需要加上"嗯,前提是你还要把 X 桩掉"或者"在你把一个 token 粘进那个常量之后"——第二种要诚实地记为环境准备,而任何代码层面的附加条件,都是它还不算一刀的证明。

然后查 git log:有没有一次提交,是命令能跑通、而那些抽象还不存在的?如果第一次跑通的提交同时也是引入注册表的那次提交,那这一刀被跳过了。

风险

一刀会把选择写死,而写死的东西活得很久。常见的失败是第 5 步和第 6 步永远没有发生,因为第一刀"能用",于是留下一个唯一的提供方被焊死、接缝停留在第二个小时最顺手的位置上的系统。把加宽当成同一批次里的工作排进计划,而不是当成一个没人出钱的后续项。

另一项代价是真实的:让第一刀穿过一个活的外部依赖,会让那第一个测试变慢、要花钱、偶尔还不稳定。要在它存在之后再去录制和回放——录制一次你从未发起过的调用是不可能的,而这正是顺序之所以重要的全部原因。

如何使用

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

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-thin-vertical-slice/SKILL.md

完整性

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

cc2b4e8524f6a9a839d70effa69a32287a69eb70dba16321bffb74ae39c302e6

在仓库中阅读该卡片