技能加载失败时,先问路径为什么不存在
那天输入了一条指令:加载 ~/.jianfei-wechat skill。
Agent 回了一句:"我来查看这个路径下的 skill 文件。"然后执行了一条命令。
结果:命令完成,无输出。再试,报错:cannot open `/Users/apple64/.jianfei-wechat' (No such file or directory)。
到这里,大多数人会做两件事之一:要么换个路径再试,要么放弃加载。我做了第三件事——停下来问为什么这个路径不存在。
"不存在"不是终点
Agent 的第一反应是执行——查看路径下的文件。但路径本身就不存在,执行再多也只是在错误的基础上重复。这和之前"只读 smoke"的场景是同一类问题:当结果不符合预期时,不要急着继续执行,先回到源头检查逻辑。
"路径不存在"不是一个需要绕过的障碍,它是一条信息:这个 skill 可能安装在其他位置,或者根本还没安装,或者路径引用有配置错误。每种原因对应的下一步完全不同:
- skill 安装在其他位置 → 找到正确路径,修正配置引用。修正之后,下次加载就不会再失败。
- skill 还没安装 → 先安装,再加载。安装之后再加载,路径自然存在。
- 路径引用有配置错误 → 修正配置,指向正确位置。配置修正之后,所有引用这个路径的指令都能正常工作。
如果我直接换路径再试,可能碰巧找到正确位置,但也可能只是换了一个同样不存在的路径。盲目试错的效率远低于先诊断再行动。而且即使碰巧找到了正确路径,配置文件里的错误引用还在,下次加载还是会失败——因为下次加载还是按配置文件里的路径去找,而配置文件里的路径是错的。
我停住了 Agent 的执行,让它先回答几个问题:
- 这个 skill 应该安装在哪里?有没有配置文件记录了它的实际路径?
- 之前是否成功加载过这个 skill?如果有,当时的路径是什么?
- 当前系统里有哪些已安装的 skill,它们在什么目录下?
这些问题不是在"找替代方案",而是在理解问题的来源。路径不存在只是症状,来源才是病因。症状是"找不到文件",病因可能是"路径引用写错了"或者"skill 安装位置变了但配置没跟着更新"。
从执行转向诊断
Agent 的默认行为是执行:你给指令,它执行。但在路径不存在这种情况下,执行没有意义——你在一个不存在的路径上执行任何操作,结果都是"不存在"。就像在一张错误的地图上导航,你走再多路也到不了目的地。
正确的转向是从执行切换到诊断:先搞清楚路径为什么不存在,再决定下一步。
那次技能加载的卡点,本质上是路径引用错误——配置文件里写的是 ~/.jianfei-wechat,但实际 skill 安装在 /.agent/skills/jianfei-wechat/。两个路径差了一个目录层级:/.jianfei-wechat 和 ~/.agent/skills/jianfei-wechat。前者指向 home directory 下的一个直接子目录,后者指向 .agent/skills/ 下的嵌套目录。
为什么会有这个差异?因为 skill 的安装路径在不同时期有过变更。早期的 skill 直接安装在 home directory 下,后来统一迁移到 .agent/skills/ 目录。配置文件里保留了旧路径引用,没有跟着迁移一起更新。迁移改了实际位置,但没有改配置引用。配置和实际不一致,就是路径不存在的原因。
诊断出这个来源后,解决方案很简单:修正配置文件的路径引用,把 ~/.jianfei-wechat 改成 ~/.agent/skills/jianfei-wechat。一行修改,问题彻底解决。如果我只是换路径再试,即使碰巧找到了正确路径,配置文件里的错误引用还在,下次加载还是会失败。
提炼方法
这个卡点提炼出的方法和其他几个卡点一致:遇到"不存在"或"无法访问"时,先诊断来源,再决定路径。
具体步骤分三步:
- 停止继续执行——在错误基础上执行只会浪费时间。每多执行一步,就多浪费几秒到几分钟。
- 问三个问题:应该在哪里?之前在哪里?现在有哪些?这三个问题指向三个诊断方向——预期路径、历史路径、实际路径。三者不一致就是问题来源。
- 找到来源后,要么修正路径引用,要么安装缺失的 skill。修正引用是改配置,安装是补缺失。两种操作都是一次性投入,不需要反复试错。
这个方法不是什么创新,但它容易被忽略。因为人的直觉是"路径不存在就换一个",而不是"路径不存在就先搞清楚为什么"。前一种直觉快但可能反复踩坑——你换了一个路径成功了,下次同样的路径引用错误再出现,你又得换。后一种直觉慢但能从根本上解决问题——你修正了配置,以后所有路径引用都正确。
技术内容只是材料,提问过程才是结构。加载 skill 失败的那一刻,最有价值的不是找到一个替代路径,而是理解路径引用的完整逻辑。理解逻辑之后,你修的是配置;不理解逻辑,你换的是路径。修配置是一次性投入,换路径是反复折腾。反复折腾的时间成本,远高于一次性修配置的时间成本。