你下载的那个“AI 技能包”,可能只是换了张皮的提示词
- 2026-10-08 05:31:17
拆开一个完整的 skill 长什么样,以及从 skill 到人人能用的产品,中间隔着的是什么
一、先说清楚我为什么来写这篇
我做六爻、大六壬、奇门遁甲、太乙神数,同时也在更新《六爻入门》系列专栏。最近专栏停了一段时间,因为我去干别的了——做子平八字的 AI 技能。
原因很简单:我实在看不下去现在命理开源生态里对 skill 这件事的普遍误解。
打开各种群、各种仓库,你会看到大量标题写着“XX 古籍 AI 技能包”“一键让 AI 学会 XX”的分享。点进去下载,解压,里面是一个 SKILL.md,可能两三万字,把某本书的内容用 AI 转写了一遍,然后……就没有然后了。
这本没错,但它不是 skill。它是一份提示词。
而真正的 skill,是一个完整的技能包——有目录结构、有分层知识、有可执行脚本、有输入输出契约、有测试用例。它用的是文件系统和工具调用这些能力,而这些才是 agent 时代真正新增的东西。
我不想只骂人。骂完别人该怎么做还是不知道,看的人该识别还是识别不了。所以这篇我想做三件事:
把 skill 的解剖图画清楚,让你以后看任何一个 skill 都知道该翻哪几个地方 讲明白 skill 和“能给别人用的产品”之间差多远 顺手介绍一下我做的这个项目:灵爻妙解
会有一些技术名词,但我会尽量用人话讲。不懂 AI 的命理爱好者应该也能看完。
二、Skill 到底是什么:不是文档,是“渐进式披露”
先破除一个误解。
很多人以为 Skill 就是“一段更长的系统提示词”。不对。按 Anthropic 官方给 Agent Skills 的定义,它本质是一个文件夹——里面有 SKILL.md,还可以有脚本、数据、模板、参考资料。
关键不在“能不能写长”,而在于渐进式披露(Progressive Disclosure):一份知识不是一次性全部塞进模型的上下文,而是按需分层加载。
为什么这事重要?因为上下文窗口是有限的、是贵的,也是会被污染的。你把 9.8 万字的《子平真诠评注》一次性塞进对话里,会发生两件事:一是大部分内容跟当前这个问题无关,二是模型在大量无关内容里的注意力会被稀释——它会开始“综合”那些不该它综合的东西。
渐进式披露解决的就是这个。它的加载顺序是这样的:
第一层:只有 frontmatter 常驻。模型平时只看到 name 和 description 两行。它靠这两行判断“用户这个问题该不该调这个技能”。
第二层:命中后才加载SKILL.md正文。这部分是操作说明——输入参数是什么、怎么调脚本、遇到各种情况怎么处理。
第三层:正文里指路,模型自己去读更深的知识文件。比如“取格请先读 rules/00_总纲_取格.md”“问行运请读 rules/90_行运.md”。这些文件在读之前不占用任何上下文。
第四层:脚本和数据是“外部能力”,根本不进上下文。模型只是调用它、拿结果。1155 行排盘代码不需要模型读懂,只需要模型会用。
所以一个 skill 写得好不好,一半的功夫在于这套分层设计得对不对——什么该常驻、什么该按需、什么该外置成代码。这跟“把书写得尽量详细”是完全相反的两件事。
三、一个完整 skill 的解剖图:从开胃菜到硬骨头
我把 skill 里常见的东西按“含金量”分成五层。你可以拿这个当尺子去量你手头的任何 skill。
第一层:SKILL.md 与 frontmatter —— 必需,但只是开胃菜
任何 skill 都得有这个东西:
---name: ZiPingEightChardescription: 子平八字:排盘与《子平真诠》格局法解释。输入姓名、性别、出生日期时刻(当地钟表时间)、出生地,脚本输出结构化命盘 Markdown(六柱信息、藏干、空亡、纳音、神煞、节令、大运、流年、流月及排盘审计)……---
很多人把 90% 的精力花在这里,以为写长就是写好了。其实这一层最难的是description的写法——它决定路由,写不好就等于这个技能不存在。
看两个例子。差的写法:
description: 八字分析技能,帮你解读命盘
这句话的问题是:它只说“我是干什么的”,没说“什么时候该用我”。用户问“今年财运怎么样”的时候,模型凭什么选它?而且如果装了三个八字技能,它们会互相抢答,因为谁都没有声明边界。
好的写法长这样(引自盘叔的开源包,确实是这个包里做得最好的部分):
description: 当用户问"这个八字事业怎么样""能当官吗",而八字月令为正官时使用。先判官格成败与财印双护,再定贵之层级与本格取运,大运总纲另见ziping-xingyun,兼断妻室内助。月令七杀、官杀混杂,或从格化气专旺不适用,健康寿夭不覆盖。
拆开看,它同时交代了四件事:触发场景(问事业、问当官)、触发条件(月令为正官)、让渡关系(大运另见 xingyun,别抢)、以及不覆盖范围(健康寿夭不归我管)。
最后那句“不覆盖”是很多人会漏的。它不只是免责,它是路由卫生——声明了边界,模型才不会拿七杀格去断印绶格的问题。
第二层:知识层 —— 大部分技能包就到这里了
规则、术语、命例、原文。这一层决定“模型答得对不对”,是绝大多数技能包的全部内容。
但同样是规则,做法差很远。真正的分水岭是:这些规则是“给模型看的散文”,还是“可以被判定的条件”?
举例。模糊的写法是:
官星被伤,看整体配合,若印能护官则无碍。
这句话没有错,但模型拿到之后没法执行——“整体配合”是哪几个字段?“印能护官”需要印在哪个位置?它只能凭感觉补全。
可判定的写法是这样的(引自 ZiPingEightChar 的规则条目格式):
### R-官-03 官逢伤用印解- **条件**:月令为正官;天干透伤官克官;四柱透印,且印未被财贴身克破。- **判定**:成格。印解伤而护官,全局关键在印。- **出处**:第三十一篇·论正官- **原文**:“官逢伤而透印以解之……”
区别在哪?条件里出现的每个词,“条件”字段必须能对应到排盘输出的某个具体字段——“月令”对应
节令 的月支,“透干”对应 ## 四柱 的天干,“藏干透出”对应 ## 地支藏干 与 ## 四柱 的对照。
这是我在自己的规则库格式规范里写死的一条硬规则:条件字段不得出现“看组合”“视情况”这类无锚措辞。因为一旦允许模糊,模型就会在这里自由发挥,而它的发挥是不稳定的——同一个盘问两次可能得出两个结论。
还有一个细节:每条规则带 出处 和 原文。这不是为了好看。这是让结论可以被回查——模型给出判断,用户可以问“你依据哪一条”,然后一路追到原文。没有溯源链的规则库,本质上和让模型自由生成没有区别。
ZiPingEightChar 的规则库现状:rules/ 下 16 个文件、380 条编号规则,按格局分成 11_正官格.md 到 19_杂格.md,横切的有 90_行运.md(行运通论)、94_神煞细节.md、95_禁则.md(不得为之事)、96_六亲.md、97_女命.md;另有 sources/ 存放 50 篇原文,平时不加载,只在规则与原文疑似冲突时回查。
95_禁则.md 这个文件我觉得值得单独说一句。它是“负面清单”——明确规定哪些事绝对不准做。比如:神煞、纳音、空亡绝不进入取格、成败、用神相神、格局高低这四层判断,只能在格局定论之后作细节参看。
为什么要专门写一个“不准”的文件?因为大模型有一个顽固的倾向:它会把手上所有信息都拿来综合。你在盘里给了它 13 个神煞,它就会拿神煞去解释格局。而《子平真诠》的立场是“星辰无关格局”——用神煞断格局本身就是错的。
你不明令禁止,它一定会犯。
第三层:脚本层 —— “必须有”和“最好有”的分界线
到这里,就是一个技能包是不是“真的技能”的实质分界线。
命理领域特别容易犯一个错:让模型自己去算。
你问它“1990 年 5 月 14 日上午 8 点半在成都出生,八字是什么”,它会给你一个答案,而且看起来很像那么回事。但这是它“回忆”出来的,不是算出来的。大模型做日期加减、节气推算、经度修正这类事情,准确率低得可怕,而且错得毫无征兆——它不会说“我不确定”,它会非常自信地给你一个错的时柱。
所以凡是涉及历法、天文、地域的计算,必须外置成脚本。这是我的立场,没有商量余地。
ZiPingEightChar 的做法是:
python scripts/cast_chart.py --name 张三 --gender 男 \--birth ”1990-05-14 08:30” --place ”四川省成都市”
模型只需要会调用这一条命令。背后 1155 行 Python 干了这些事:
真太阳时换算:出生地经度修正 + 均时差修正。上例输入钟表时间 08:30,输出真太阳时 06:30—— 差了两个小时 。不修正的话时柱直接错。 子初换日:真太阳时 23:00 起算次日。日界规则固定,且写进输出的“排盘审计”段。 晚子时提示:约 4% 的盘会落在 23:00–24:00,这时“子正换日”一派会排出不同的日柱与时柱,命盘开头会打出 ⚠️ 提示,解释时必须声明此分歧。 夏令时回拨:1986–1991 年全国实行过夏令时,那几年 4 月中旬到 9 月中旬出生的人,钟表时间要先回拨一小时——“钟表 23 点 ≠ 真太阳时 23 点”。 依赖内置: vendor/里带着 tyme4py 1.5.0 和 tzdata,纯 Python 纯数据,用户不用装任何东西。
最后这条看着不起眼,但它是真实世界的胜负手。一个需要用户先 pip install 的技能,在“不懂技术的命理爱好者”手里,等于零。
更关键的是一个设计原则:脚本只算,不断。cast_chart.py 的输出里没有任何一句命理判断,它只吐结构化的命盘 Markdown。所有解释归模型,所有计算归脚本。职责分明,才谈得上各自可验证。
这带来一个额外好处——排盘结果结构化、机器可读,这让它天然能被别的程序消费。这正是灵爻妙解平台上自研排盘引擎的路子,也是我敢把技能和平台放在一起讲的原因:同一套工程思想,一个跑在你本地,一个跑在网页和 App 里。
第四层:契约层 —— 让脚本和模型“接得上”
脚本输出给模型,模型输出给用户。这两次交接都需要契约,否则就是各说各话。
脚本 → 模型 的契约,在 ZiPingEightChar 里叫“输出契约”,它冻结了章节标题:
四柱
地支藏干 ## 四柱空亡 ## 纳音 ## 神煞 ## 节令 ## 大运 ## 流年 ## 流月 ## 排盘审计
这些标题不许改。因为规则库里的“条件”字段是引用这些章节来定位的(规则里写“月令”,指向的就是
节令 段)。这是接口,接口一变,380 条规则全部失锚。有了它,脚本和规则库才能各自独立升级而不互相弄坏。
另外还有退出码约定,这是“出错时怎么办”的契约:
第 3 条是整个设计里我最在意的一条。“不许猜盘”——因为大模型在这时候的第一反应,一定是“那我凭印象估一个吧”。它宁可编也不肯说“我算不出来”。契约必须堵死这条路,SKILL.md 里就得明写。
模型 → 用户 的契约同样重要,而且这是被绝大多数技能包完全忽略的一层。
ZiPingEightChar 的“解释输出契约”规定了一个固定骨架,其中标 ★ 的是强制项:
排盘口径 —— 真太阳时修正量、夏令时回拨、晚子时分歧声明 说人话 ★ —— 白话详解,且逐条对应:每个关键判断都要有一条白话条目 依据备查 —— 术语层的专业判定,按“取格 → 成败 → 用神相神 → 高低 → 行运喜忌”次序 存疑与边界声明 —— 命中的存疑规则、两可处,如实声明 结尾标识与免责 ★ —— 固定引用块
这里面有个反直觉的设计:白话在前,术语在后(v2.0 改版的核心)。
为什么?因为命理解读的读者绝大多数不是同行。你跟他讲“官星透干被伤,喜印绶化之”,他看完不知道你在说什么,也不知道自己该干什么。所以成品的呈现顺序是“先说人话,术语放后面备查”,但思考顺序不变——模型必须先把取格、成败、用神相神、高低、行运全部判完,才允许落笔写白话。
契约里还专门写了“说人话段”的两条硬约束:
不得出现备查段没有的判断——白话段只允许降维表达,不允许新增结论 不得软化警示——“需要注意”不能变成“应该没事”,凶断照样用大白话说凶
第二条是我在实际测试里最常抓到的毛病。模型天然倾向于讨好用户,你说“这个盘婚姻可能不顺”,它会给你自动打磨成“感情上需要多一点耐心”。两份输出看着无关痛痒,性质完全不同:一个是如实告知,一个是粉饰。
第五层:验证层 —— 凭什么说你是对的
这一层最难,也最见一个作者的诚实程度。
命理技能有个特殊困难:没有标准答案。你说这个八字是官格破格,凭什么?不同流派能吵三天。
但“没有绝对标准答案”不等于“无法验证”。有三件事是可以验的:
第一,排盘可以验。这是纯计算,有唯一正确答案。ZiPingEightChar 有 7 个测试文件,覆盖:
test_solar_time.py—— 真太阳时换算,配 tests/golden/longitudes.yaml黄金数据test_timezone.py—— 时区解析,配 history_tz.yaml(含历史时区变更)test_equation_of_time.py—— 均时差 test_day_boundary.py—— 换日边界,配 time_boundary.yamltest_e2e.py—— 端到端 test_license_gate.py—— 授权锁 test_version_sentinel.py—— 版本哨兵
看到 golden/ 这个目录名了吗?黄金数据——人工核对过的标准答案,测试就是拿它们对。这类测试不涉及任何命理判断,纯粹是工程正确性,但它是整个技能的信任地基。第几柱都排错了,后面讲得再漂亮也是空谈。
第二,规则对古法命例的结果可以验。《子平真诠》自己带了大量命例,原书给了判定(比如某造“大贵”、某造“一富而已”)。拿规则去重推这些命例,对得上多少、对不上哪些、对不上的是规则写错了还是原书传抄有错——这是可核查的。
ZiPingEightChar 的规则库跑过原书的黄金命例集,结论是 87 例与原书判定一致、2 例 mismatch、3 例因原书传抄缺陷不可验证。而那两个 mismatch 最后定位出来是规则措辞有问题,已经回修。
这个过程的产物比“我做了验证”这句口号有价值得多。因为承认有 2 例对不上并把原因写出来,恰恰说明后面那 87 例是真跑出来的。
第三,触发路由可以验。装多个技能时,谁会抢答、边界在哪,是可以拿题目测的。盘叔那个开源包在这点上做得不错,技能包/测试题.md 里有 34 道双层诱饵题,专挑最容易抢答出错的边界题(比如“印格走什么运”该归印绶格技能还是行运总纲技能)。
但我要说句公道话,也要说句难听话:这份测试文档里自己写了“测试者为融合执行者本人(非独立测试员)”。自测和盲测是两回事。自己出的题自己答,答对了只说明题目和答案出自同一个脑子,不证明路由清晰。文件里也建议了“正式发布前再派独立测试员盲测一轮”——这个自觉是好的,但这一轮是必须补的,不是可选项。
小结:五层尺子
SKILL.mddescription | ||
前两层是“内容”,后三层是“工程”。开源命理技能包九成以上只做了前两层,然后管它叫“完整技能包”。
四、怎么一眼识别好 skill 和差 skill
上面是结构,下面是实操。拿到一个 skill,按这六条走一遍,十分钟能看个大概。
1. 先看 description:有没有“什么时候用”和“什么时候别用”
好的描述里会同时出现触发场景、触发条件、边界。差的描述只有一句自夸。
红旗:description 写的是“XX 命理分析技能,专业度高,效果好”——这是宣传,不是接口。
2. 看目录:有没有非 markdown 的东西
差:skill/└── SKILL.md (一个文件,几千到几万字)好:ZiPingEightChar/├── SKILL.md├── rules/ 16 个文件 · 380 条规则├── rules/sources/ 50 篇原文(按需回查)├── scripts/ 排盘引擎 · 1155 行├── vendor/ 内置依赖,免安装├── data/ 城市数据等└── tests/ 7 个测试 + golden/
红旗:解压后只有一个 .md。不管它多长。
3. 看规则条目能不能“判定”
随机挑两条规则看它的条件字段。如果出现“看整体”“视情况”“结合判断”“凭经验”——这个规则库在执行层面是空的。
好规则长这样:条件里每个词都能对上排盘输出的某个具体字段。红旗:整本书转写的散文,或者只有结论没有条件(“伤官见官为祸百端”——那什么情况下不为祸?书里明明说了金水伤官喜见官)。
4. 看有没有“不许做”的清单
这点很反直觉,但极其有效。一个成熟的技能一定有禁则。
因为作者只要认真测过,就一定会发现模型乱来的地方,然后必须写成禁止条款。ZiPingEightChar 的 95_禁则.md 有 19 条,明确“神煞、纳音、空亡绝不进入格局四层”。
红旗:从头到尾只有“你应该怎么做”,没有“你不准怎么做”——说明作者要么没测过,要么不敢承认模型会跑偏。
5. 看有没有承认“不知道”的地方
两种,都要看:
一是覆盖声明。ZiPingEightChar 明写:健康、寿夭、女命专论、流年逐岁吉凶不在覆盖范围(因为《子平真诠》本身没有系统论述,不能硬编)。盘叔的包更细,有一张 48 章的覆盖对照表,逐章标注处置方式。
二是存疑标注。遇到原文歧义,规则条目末尾加 > 存疑:……,明确不自行裁决。
红旗:一个技能号称“覆盖八字全领域,健康婚姻财运事业一网打尽”。人类命理师都不敢这么讲,一个技能敢讲。这不是能力,这是没读过书。
6. 看它的数字是怎么来的
技能包宣传里通常有一串漂亮数字:“555 条规则”“140/140 命中”“34 题盲测全对”。
你得追问口径。
“命中原文”——抽的是哪几条?抽了多大比例?抽样方法是什么? “盲测全对”——测试员是谁?独立吗?题目和答案是不是同一个人出的? “N 条规则”——有多少条是真正可判定的?有多少是同一句话换了个说法?
有件事我觉得特别值得说。盘叔的包在 清单.md 里自己交代了:横向对比时发现另外两个 AI 生成的包,一个自报 290 条实际 568 条,另一个自报 568 条实际 290 条——两个数字刚好互换,说明台账和实物根本没对上过。
能把自己和他人的数字问题写进文档里,这本身就是可信度。反过来,只报总数、不报口径、不报抽样方法的技能包,数字一律不听。
附:下载前的三分钟自测清单
解压后是否只有一个 .md?→ 是,那它是提示词,不是技能description里有没有“什么时候不该用我”?→ 没有,装多个技能必抢答随便两条规则,条件字段能不能对上具体输入字段?→ 对不上,结论不可复现 有没有禁则/不覆盖声明/存疑标注?→ 全无,作者没测过或者不诚实 有没有脚本处理计算类任务?→ 没有而任务涉及历法、天文、地域 → 结果不可信 有没有测试、黄金数据、命例重推记录?→ 没有,那只能叫“作者觉得不错”
五、Skill 和“能用的产品”之间,隔着五道门
现在说第二部分,也是最容易被开源社区忽略的部分。
我做了这个技能之后发现一件事:技能做得好,和有人能用它,是两个完全不同的问题。
Skill 是给“已经站在门里的人”用的。而绝大多数人连门在哪都不知道。
门槛一:它跑在哪?
Skill 不是双击就能用的软件。它需要一个载体:
Claude Code 这类 CLI 工具 Cherry Studio、Claude Desktop 这类桌面客户端 某些支持技能目录的 AI 助手应用
这几样东西,共同点是:都得先有一个能用的模型 API。
而现实是,很多人连“API 接入”这个词都没听过。在他们脑子里,AI 就是“打开网页,打字,出结果”。你要跟他说“先注册一个 Provider,填 API Key,选模型,然后建个会话,把技能挂上去”——他已经走了。
我做过一个非正式的小观察,在几个命理群里问过“知道 agent 客户端和 AI 网页对话有什么区别吗”,回答清楚的比例不到两成。这不是他们笨,是这个世界还没准备好。但结果是:一个设计得再好的 skill,到这一步就断了。
门槛二:它要什么输入?
这是我认为命理技能最被低估的失败点。
ZiPingEightChar 的必需输入是四项:姓名、性别、出生年月日时分、出生地(精确到县)。
在懂的人眼里这是常识。但在真实用户那里:
“几点出生的”——很多人真不知道。家里老人只记得“天快黑的时候”。而 SKILL.md里写死了: 必须追问具体时刻,不要自行假设 12:00 或任何时刻 。因为它知道时辰错了就是另一张盘。“出生地”——“我们那是个小地方”。技能得能解析到县级行政区,解析不到时要按话术追问。 “真太阳时”——用户根本不知道有这回事。新疆出生的人用北京时间的钟表数字去排盘,时柱会错到离谱。
技能里可以内置追问话术,这一点 ZiPingEightChar 做了:
缺时刻:“时辰决定时柱,差一个时辰就是另一张盘,所以出生时间需要精确到小时。您大概几点出生?”
但话术只能救一半。另一半必须靠产品的表单设计和交互引导——什么时候必须问、怎么问才不烦人、用户答不上来时怎么给替代方案(比如“按相邻两个时辰各排一张,标明哪些结论会变”)。这些是产品设计问题,SKILL.md 解决不了。
门槛三:用户知道该问什么吗?
技能正常工作的方式是:用户报出四柱天干地支,然后问具体问题。
问题是,99% 的人不会排盘,也不知道自己的四柱是什么。
盘叔那份 怎么用.md 写得很直白:给助手一个八字排盘(四柱天干地支),再问对应领域的问题。示例问法是:
“甲申、壬申、乙巳、戊寅,这个八字能做官吗”
对懂的人,这很自然。对不懂的人,这是天书。他不知道什么叫“甲申”,不知道去哪查自己的四柱,也不知道自己该问正官格还是七杀格。
这就意味着:一个“给四柱就能断”的技能,对普通用户是残废的。它缺了前置的一整段——从“我不知道我是什么命”到“我已经有了正确的四柱”。
ZiPingEightChar 想解决这个问题:它可以只吃“出生信息”直接出盘,不用用户先排。这是它和“只吃四柱的技能”最重要的差别之一。但即便如此,输出之后还有下一关。
门槛四:拿到结果看得懂吗?
技能输出的是 Markdown。终端里,或者一个聊天窗口里,一整段文字。
但命理盘面天然是空间性的——四柱是横排的,地支藏干有层级,大运是一条时间轴,神煞是散落的标签。用文字描述一个盘,永远是“降维”。
而普通用户拿到一大段文字之后,最常见的反应是:看不懂术语,也不知道该看哪一句。
这也是我理解为什么产品层必须做的事,不是优化文本,而是:
盘面可视化,干支关系可高亮、可点开 术语可以点,点了能查 关键判断和盘面元素一一对应,能核对
灵爻妙解在这层做的事就是这个:解读过程中可以对盘面具体位置做高亮与关系标注,讲解内容和盘面元素一一对应,方便核对与复盘。这类东西在纯 skill 形态里做不出来——它不是一个文件能承载的交互。
门槛五:技能坏在哪,谁来修?
一个 skill 交到用户手里之后:
模型换了会坏。 换个模型,之前的调教全失效,模型开始“综合”不该综合的东西,神煞又跑进取格了。 技能更新不了。 你发了 v1.8,用户手里还是 v1.1,而且他不知道有新版。 出错没有反馈。 十个用户用崩了,你一个都不知道。你不在他们的会话里。 授权和风控。 分发出去就等于失控,谁都能改、谁都能传。
这几条我在 ZiPingEightChar 里做了各种工程应对——版本哨兵测试(test_version_sentinel.py)、软授权锁(_license_gate.py,次数与有效期限制,退出码 4)、水印指纹(定制副本在 SKILL.md、rules/、脚本和授权状态文件里嵌入唯一编号,形如 LY-20261007-A3F9,泄露可按编号溯源)。
但我要非常坦白地说一句:软锁防君子不防小人。这句话我写在了授权文档里。技能是一种可复制的东西,它一旦离开你的手,你就只能靠法律和信誉约束,技术上拦不住。
这不是技能设计的失败,这是技能这种形态的天然上限。它注定属于“自用可行、小圈子分享可行、规模化分发不行”。
一个具体的失败场景
把上面五道门串起来,一个真实用户会遇到什么:
老张在群里看到有人分享“子平八字 AI 技能包”,说效果很好。他下载了,是个压缩包。解压,里面有一堆文件和文件夹。他点开
SKILL.md,全是英文和符号。他不知道这东西要放哪。群里问了半天,知道要先装一个 AI 客户端。装了。客户端说要用 API。他不知道 API 是什么,更不知道去哪买。折腾两小时,放弃。
后来有人帮他配好了。他终于用上了,AI 说请提供出生信息。他填了“1985 年 3 月 12 日”。
AI 说:“时辰决定时柱,差一个时辰就是另一张盘,所以出生时间需要精确到小时。您大概几点出生?”
老张愣了。他打电话问了三个亲戚,得到的答案分别是“好像是早上”“记不清了”“你妈生你的时候我在上班”。
他回了句“不知道”。AI 说:“那我按该时段的两个相邻时辰各排一张,并说明哪些结论会随时柱变化、哪些不受影响。”
这已经是很负责任的处理了。但老张已经不想看了。他本来只是想知道“我这两年要不要换工作”。
这段里没有哪个环节是技术难题。但每一环都是一个普通用户会掉出去的地方。技能本身的水平在老张的体验里权重极低——他人还没走到用得上技能的那一步。
那产品要接管什么
把上面的门槛反过来说,就是产品必须承担的活:
一句话概括:技能把“怎么做对”解决了,产品要解决的是“怎么让不懂的人也能做对”。
这两件事的技能树完全不同。前者是命理 + 工程,后者是交互 + 服务 + 运维。开源社区现在普遍把前者的成果拿来当后者的成绩宣传——这是我认为最需要说清楚的一件事。
六、顺手说几句当前生态的乱象
不点名,只讲模式。见到这些,多留个心眼。
套路一:把“转写”叫“蒸馏”。把一本古籍用 AI 转成问答对,叫蒸馏。真正的蒸馏是把书里的规则提取成可判定、可溯源、可验证的条目,并且明说哪些章节蒸馏不出来、为什么不出来。
套路二:把“写得多”当“做得好”。三万字的 SKILL.md,听起来很唬人。但字数在渐进式披露的设计里恰恰是负分——你写在正文里的每一句都在占用上下文,都在稀释注意力。好的 skill 是短正文 + 深文件。
套路三:拿自测当验证。“34 题全对”——自己出题自己答。这不是验证,这是复述。真验证要么有独立测试员,要么把测试集公开让人复现,要么像排盘测试那样有唯一正确答案的黄金数据。
套路四:只报数字不报口径。前面说的那个例子——两个包的自报数和实际数刚好互换。这类包表面上还挺严谨,都有“台账”。台账对不上实物,比没有台账更糟。
套路五:把“覆盖全领域”当卖点。一个技能敢说覆盖健康、寿夭、婚姻、财运、流年逐岁,只能说明它没读完那本书。《子平真诠》全书 48 章,根本没有健康寿夭的系统论述。敢于声明“这块我不覆盖”,才是读过的证据。
套路六:转写质量没验,就当原文引。很多包里的“原文”是 OCR 出来的,错字一堆。我前面看到的那个包自己交代了“摘录对原文 OCR 误字做了静默规范化”——比如“病敢”改回“病;”、“不人化土”改成“不以化土”。作者交代了,这是诚实;但如果你引的原文根本没校过就拿来断命,结论是建在沙子上的。
七、回到我自己
讲这么多,其实是在讲我为什么停下来做这个。
我本来是做六爻、六壬、奇门、太乙的。八字我有了解,但算不上高手。我比较确定自己深入的是 AI 这一侧——所以我看得出来哪些做法是真在用 skill 的能力,哪些只是把提示词写长了。
所以我把这个技能做成了我认为该有的样子:排盘靠脚本、解释靠规则、结论带溯源、边界写在明面上、正误靠测试。
它现在长这样:
SKILL.md182 行,写清输入参数、追问话术、退出码处置、输出契约、断运交互 rules/16 个文件 380 条编号规则,格式规范成文,条件字段必须能对上排盘输出的具体字段 rules/sources/50 篇原文,平时不加载,只用于回查 scripts/1155 行排盘引擎,处理真太阳时、子初换日、夏令时、历史时区 vendor/内置 tyme4py 1.5.0 与 tzdata, 用户不用装任何依赖 tests/7 个测试文件 + 黄金数据,验证排盘正确性 95_禁则.md19 条负面清单,把模型的坏习惯提前堵死
规则库版本目前是 1.8,从 1.0 到现在改了七轮,大多是测试驱动回修——比如“说人话”段从最初的 100–180 字单段概括,改成现在逐点对应的白话详解(因为发现单段概括会掩盖掉具体判断,还会被模型用来粉饰凶断)。
我知道它不完美。规则库还有存疑条目、原书有几个命例因为传抄缺陷无法验证、女命篇和神煞细节层是我的体系拓展(每一条都标了【拓展】,因为原书没有这些内容)。
这些我都写在文档里了。一个技能包最该被看见的地方,不是它声称覆盖了多少,而是它坦白自己哪里不行。
顺便说,我的另一条线也没停——灵爻妙解是我在做的术数平台,覆盖六爻、大六壬、奇门遁甲、太乙神数四类体系。
它就是上面“产品要接管什么”那一节的答案:
自研排盘算法引擎,网页端、Android、iOS 规则一致,排盘结果结构化、机器可读 人工整理标注的术数知识库,按术数与主题分类,解读时按需检索 单智能体与多智能体解读——多智能体模式下,多个角色围绕用神取用、结构关系、动变分析、现实对轨、时间节点推断分轮次讨论,相互质疑,全过程可视化 盘面标注工具,解读内容和盘面元素一一对应,可核对可复盘 案例广场,可评分、保存、分享、提交现实反馈、追加提问,长期累积
《六爻入门》专栏也会继续更新,我没忘。
顺便分享一个体会:平台这条路和技能这条路,看到的是同一个问题的两面。技能让我搞清楚了“什么是对的”;平台逼我面对“怎么让不懂的人也能对”。后者比前者难得多,也诚实得多。
八、最后
如果你只记一句话,我希望是这句:
判断一个 skill 好不好,别看它写了多少字,看它 在模型不听话的时候有没有招 ——有没有禁则、有没有脚本、有没有测试、有没有溯源、有没有承认不覆盖。
模型本质上是一个随和过头的东西。它倾向于讨好你、倾向于给你一个答案、倾向于把手上所有材料都综合一遍。
而一个真正成型的技能,就是作者把自己的领域知识和领域判断,一条条钉进这个随和过头的东西里。钉进去的东西越多,它犯错的余地越小。
提示词告诉 AI“说什么”,技能告诉 AI“不许说什么”。
这中间的差距,就是从“看起来能用”到“真的能用”的差距。
灵爻妙解 · 传承易学智慧
🌐 https://lingyaomiaojie.com
本文所述技能为测试授权版本,仅供个人测试与评估,禁止商业用途与个人传播。
网站与技能输出内容均由 AI 生成,依据古籍整理,仅供传统文化研究与娱乐参考,不替代医疗、法律、投资、心理咨询等任何专业意见;不对现实事件作确定性预测。信任科学,反对迷信。