今天干的事有点无聊:删 skill。删完觉得值得记一笔。
skill 就是一份 Markdown
先说清它是什么。在我平时用的这套东西里(DeepSeek Harness,下面写 DSH),skill 就是一个文件夹加一份 SKILL.md——正文是写给模型看的操作说明,开头一段 front matter。
关键在于 front matter 里的 description。我原来以为它写的是「我是干什么的」,其实不是。它写的是「什么时候该用我」。随便挑一个装着的一看就明白:
Use when asked to animate something, add motion, make a component feel alive, or build a transition.
这是一条路由说明。模型每次拿到你的话,先看这份清单,判断该不该把某个 SKILL.md 读进来,再照着做。所以决定一个 skill 有没有用的,不是它正文写了多少,是那句 description 有没有把「什么时候」说对。
DSH 的 skill 放在 D:\dsh-home\skills\<名字>\SKILL.md。这份清单在会话启动的时候加载一次,所以新装的 skill 要重启才生效——今天装了东西没反应,就是卡在这儿。另外它不装也能用:把 SKILL.md 的内容直接贴给模型就行,今天试过,一样管用。
每个 skill 都在每一次请求上收钱
上面那套机制有个代价:description 会进每一次请求。
不是「用到的时候才加载」。是每一轮对话开始之前,所有 skill 的名字和 description 就已经摆在模型面前了。装一个不用的 skill,等于每一句话都多背一段无关的说明。
这件事我一直知道,但没当回事,直到今天去数了一下。
231 个
这台机器上原来堆了 231 个 skill。
其中两百多个是同一套东西:一整批科研方向的合集。天文学、生物信息、量子计算、细胞图像、代谢建模、脑影像……我数的时候有点想笑——我是写博客的,一个都用不上。
光这些的 description 加起来 88,920 个字符,约 25,406 token。再把 name 和格式开销算进去,每次请求打底就要 ≈29,217 token。还没跟它说一个字,上下文里先垫进去这么多。
处理方式没什么技术含量:按来源和加入时间分批过一遍,只留四类——官方文档处理(docx / pdf / pptx / xlsx)、工程流程、求职那套、动效设计。
结果是 56 个。description 降到 17,600 字符 ≈ 5,029 token,每次请求打底从 ≈29,217 降到 ≈5,783。
省下 71,320 字符 ≈ 20,377 token,砍掉 80.2%。
我的判断是:重点不是 56 这个数字,是 80.2% 这个比例。一个 skill 单看都很便宜,两百多个叠在一起就不便宜了——而且它们不会因为你不用就不收费。
顺手记一件当时让我停了一下的事。那批里面有个 skill 是能读写文件的,还会通过另一个程序看你的屏幕,它要你在本机装一个额外的程序才能跑起来。我没装,也删了。不是因为它一定有问题,是我根本不知道它要干什么。
然后我拿留下的那套干了件正经事
留下的一批里,有 10 个来自 emilkowalski/skills(46,028 star,MIT,作者 Emil Kowalski)。这套是给设计师和工程师用的,讲界面动效和视觉判断,一共 15 个 skill:animate、review-animations、mobile-native、break-ui、apple-design、animation-performance 等等。
我挑它不是因为 star 多,是因为它是纯 Markdown——零脚本、零依赖。这一点对我很重要:纯文本的东西能读、能改、能直接贴给模型,不用先信它会干什么。
于是拿它审了这个站的前端。审的是 assets/css/extended/fluent.css,当时 4,371 行。
出来 22 条:值得动的 9 条、可以考虑的 9 条、不建议动的 4 条。另一栏里,18 条算客观问题,9 项算审美偏好——偏好那栏我特意留着,它们不是错误,是「换一种做法也行」的意思。
真改了 3 处,已经上线。
搜索框字号 15px 改成 16px。 15px 的输入框在 iOS 上被聚焦时,整个页面会被放大,而且不缩回来。这条我原来完全不知道。
状态栏那颗「呼吸的绿点」不呼吸了。 它原来挂着一个 box-shadow 动画,全站常驻,每秒重绘。删掉的理由不是性能,是它不传达信息:「稳定运行」这件事,绿点的颜色加后面那行字已经说完了。
阅读进度条从 width 改成 transform: scaleX()。 这是全站唯一一处动布局属性的动画。
改完顺手反查了一遍,这个站原本没犯最常见的几个错:transition: all 0 处、will-change 0 处,ease-in 也没有单独出现过,4 处全是 ease-in-out。这一点我承认有点意外。
还有几个我看到了、没装的
今天查资料的时候还看到几个。
REA,用 agent 逆向软件,GitHub 上 17.9 万星;dsh-notifier,管通知和远程控制,写着 28 个出站通道、6 个入站控制;还有一个把 DSH 接进微信的第三方方案。
这三个我都没装,只是看到。 写在这里是因为查的时候确实碰到了,不是因为我觉得它们该装。skill 这东西现在是真多,而每装一个都要在每次请求上付一次钱——今天刚算过这笔账,所以下一次手会慢一点。
