一、我差点把它当成"能用的"了

手上有个 skill,叫 self-improving-agent,主打"让 AI 从你的纠正和报错里持续学经验,还能跨项目晋升成全局记忆"。名字很诱人,说明书也写得很全:双层记忆、自动检测、两级晋升、SessionEnd Hook 自动触发。看描述,我以为拖进技能目录就算到手了。

结果我试着调用它,发现它被禁用了;就算手动放行,它也会让我先"读代码"。我一读,发现这套东西在我这台机器上,从自动检测到晋升,一条闭环都没真正跑通过。设计意图没错,实现却塌了几处。

二、读了一遍源码,两个致命伤

我把它五个脚本(Hook、review、promote、init、cleanup)都过了一遍,两个地方直接让"自动学习"名存实亡:

1格式对不上,自动检测形同虚设

Hook 脚本解析对话记录,是按"用户:xxx / AI:xxx"这种中文字面量、一行一行去切的。可 WorkBuddy 实际的对话记录是结构化 JSON/JSONL。切不出来,parse_transcript 每次都返回空,Hook 每次都在喊"未找到有效的对话记录"——自动记录这条腿,从根上就是断的。

2晋升门槛永远达不到

晋升判断"跨了几个任务",看的是 source 字段去重后要 ≥ 2 个。可自动记录里 source 永远写死成同一句"SessionEnd Hook 自动检测",去重后永远是 1。于是自动攒出来的经验,一辈子都够不到晋升线,"自动学→自动沉淀"的闭环彻底断在门槛上。

更要命的是几个"别人家的环境"细节:路径全写着 C:/Users/May/...,备份目录指向 F:\小师妹(龙虾)。这不是我机器上的盘,也不在我的用户名下。装完不调教,它跑起来写的每一个字都会落到一个不存在的目录里去。

三、"装"和"调教"是两件事

我后来想明白了:给 AI 装一个 skill,本质是把一段"别人调教好的经验"搬过来,但它没读过你的环境。

那个人把 parse_transcript 写成按中文字面量切行,是因为他的记录格式就是那样;那个硬编码的 F: 盘、那个 May 用户名,是他的机器长什么样。skill 是"活"的经验,但它被写死在某个具体环境里。你把它原封不动拖过来,等于请了个熟手,却没告诉他你家厨房的灶台长什么样——他有手法,但锅对不上。

skill 不是插件,是一段"别人调教过的经验"。经验要真正生效,得先学会你这套环境。

四、给 skill 调教的三步

所以装完 skill 之后,我会多做三件说明书里没说、但决定它"用不用得起来"的事:

A先读代码,别信说明书

说明书讲的是"它想干什么",代码才是"它实际在干什么"。这次两个致命 bug,一行说明书都没提,全在源码里。装完先花十分钟把核心脚本读一遍,比直接跑靠谱得多。

B验闭环,不是验单点

单个函数能跑 ≠ 整条链路通。这个 skill 单独看每个脚本都能出结果,可"检测→记录→晋升→沉淀"串起来是断的。要像验证交付一样,验最末端那个动作(比如最终是否真写进了你的全局记忆),而不是看中间某步有没有报错。

C改成本人的路径和格式

把硬编码的用户名、备份盘、记录解析格式,全换成你机器上真实的样子。这一步不做,前面两步白搭——它学得再聪明,也写不进你的系统。

五、留一句话

装 skill 是 0→1,调教是 1→能用。中间那段"读一遍代码、验一下闭环、改成本地路径",是它真正属于你、能替你把活干好的地方。没调教的 skill,跟没接电的插座一样,外观齐全,不通电。

返回随笔