前情提要:
OpenCode Skills:分享一套自己乱写的还算实用的 AI 编码技能库
自用的 OpenCode Skills 合集更新:从 6 个技能到 22 个,以及必须承认的问题
起因是发现skill-manager的注册表有大问题——10个技能根本没注册,另外10个引用了不存在的路径,还有5个技能的规则文件名写错了。等于说/skills列出来的东西有一半是假的。
这就很尴尬了。既然要修,就顺手做了个全面审计。
不看不知道,细看全是坑。
22个技能都是手写,很不规范,每个SKILL.md基本上就是:我能做这个,我能做那个。然后没了。
出了错怎么办?不知道。
边界情况怎么处理?不知道。
跟其他技能怎么配合?不知道。
改了哪些版本?不知道。
这不行。
所以系统地过了一遍。
每个技能补了Troubleshooting——出问题了怎么排查怎么修。
补了Edge Cases——空仓库、大文件、跨平台、权限不够这些特殊场景怎么处理。补了Version History——记录每次改了什么。
补了See Also——每个技能链接2到4个相关技能,带上命令和理由。给Integration section填了真实的/skill引用,不再是空壳。
给需要处理大量操作的技能加了Performance建议——worktree优化、缓存策略、并行调度这些。
还发现了14个技能frontmatter里的version跟Version History对不上。统一修了。
注册表从600多行重写成677行,砍掉了10个死引用,补上了10个缺失的技能,修正了5处规则文件名。现在22个技能全部正确注册,91个规则文件全部可追溯。
最终从7063行涨到8141行,多了1078行,15%的增长。但行数不是重点。重点是每个技能现在都是完整的——你知道它能做什么,你也知道它不能做什么,出错了知道怎么修,跟别的技能怎么搭,上版本改了啥。
中间出了个小事故。rsync加--delete把global-rules给删了。因为这个技能不在Skills仓库里,是之前单独放在安装目录的。好在规则内容都记得,重新创建了回来。
说到global-rules,这其实是一个血的教训催生出来的。
之前干活的时候,有个bash命令没设超时,跑超了被系统发了SIGKILL。SIGKILL是硬杀,不给进程任何清理机会。结果stdin的文件描述符被搞坏了,opencode的TUI界面在切raw mode的时候直接报 setRawMode errno: 9 (EBADF)——就是文件描述符坏了读不了。然后整个GUI就崩了,窗口消失,所有状态全丢,只能重启。
这种情况,在macOS和Ubuntu24.04上都成功复现了。
上述情况的因果链很清晰:bash命令没设timeout → 默认超时触发 → SIGKILL → stdin FD损坏 → TUI崩溃 → GUI重启。
global-rules就是为了防止这种事再发生建出来的。
加上了三条铁律:
- 每个bash命令必须设显式timeout,30秒测单文件60秒跑安装;
- 绝对不能SIGKILL要先用SIGTERM优雅退出;
- 无穷循环必须有硬上限和预算限制。
这个技能设了auto_load和最高优先级,在每个session开始自动加载。
另外,在zi-kong和sleepless这两个自主迭代技能里,本来有一条"永不询问永不暂停"的铁律,但rm -rf、git push --force、删除生产数据这种操作,必须破例暂停要求确认。要不然这些不可逆操作直接闭着眼执行就可能带来灾难性后果。
技能系统的价值不在于有多少个技能,在于用的时候能不能真正解决问题。一个没有排查指南的工具,跟一个不会报错的程序一样——能用的时候挺好,不能用了就只能干瞪眼。
预览时标签不可点
Close
更多
Name cleared
微信扫一扫赞赏作者
Like the AuthorOther Amount
赞赏后展示我的头像
作品
暂无作品
Like the Author
Other Amount
¥
最低赞赏 ¥0
OK
Back
Other Amount
更多
赞赏金额
¥
最低赞赏 ¥0
1
2
3
4
5
6
7
8
9
0
.
虚拟化,操作系统,以及一些小工具 · 目录
虚拟化,操作系统,以及一些小工具
上一篇OpenLaoKe 更新:本地 GGUF 模型,零 API 费用跑起来下一篇针对大模型和智能体新手开发者的Linux环境配置指南
Close
更多
搜索「」网络结果
Close
调整当前正文文字大小
更多
100%