diff --git a/session-mechanism/SKILL.md b/session-mechanism/SKILL.md index 0a86d58..907e1fb 100644 --- a/session-mechanism/SKILL.md +++ b/session-mechanism/SKILL.md @@ -459,8 +459,8 @@ python .workbuddy/collab/collabd.py --set-life 进行中 --by "主会话"  ✅ **判据实体就在本档正文里**(2026-10-04 改,原文写「权威在 `agent-operating-rules §1.6`」——现已改为**本档即权威**)⇒ 🔴 **只复制这一个技能到别的机器,这些功能全部可用,⛔ 不依赖任何其他技能**。📌 来路:2026-10-04 从 `dsh-decision/references/01` 逐行搬入;⛔ `dsh-decision` 那份视为副本,**改判据以本档为准**。  🔴 **配合任务会话的六阶段一起用**(见 `references/collab.md` §5):**需求识别 → 调研 → 规划 → 执行 → 验证 → 归档**——每个阶段都能撞上"该自己定还是该问用户",本档就是那一刻的判据。 -**⑧ 我要梳理/盘点技能库**(用户说「**梳理技能**」「**盘点技能库**」「**技能库体检**」「**技能清理**」「**梳理一下技能的要求和描述**」——任一句即触发)⇒ 读 **`references/05-技能梳理规程.md`**(2026-10-15 立)。 - 它把 2026-10-06 ~ 10-15 里**零散做过的 6 次"技能梳理"**归纳成 **11 项可执行的检查**,分四段走: +**⑧ 我要盘点技能库**(用户说「**盘点技能库**」「**技能库体检**」「**技能清单**」「**技能已无作用**」——任一句即触发)⇒ 读 **`references/05-技能库盘点规程.md`**(2026-10-15 立)。 + 它把 2026-10-06 ~ 10-15 里**零散做过的 6 次"技能盘点"**归纳成 **11 项可执行的检查**,分四段走:  · **先测再判** —— ① 盘点技能根下每一层(含**非技能散件**)② 判"在用/没用"(判据=**实际被加载过几次**,扫会话转录)。  · **分类** —— ③ 按"**删了会丢什么**"分四档(能力型/知识方法型/散件/绝不能动)④ 查功能重叠(列出合并落点)。  · **查隐患** —— ⑤ 白名单对不对 ⑥ 本机生成的契约有没有被误入库 ⑦ 入库代码里有没有"写死这台机器" ⑧ 路径形态对不对 ⑨ 正文有没有自相矛盾 ⑩ 有没有多份副本 ⑪ 待提交清单。 @@ -468,6 +468,15 @@ python .workbuddy/collab/collabd.py --set-life 进行中 --by "主会话"  🔴 开头就摆着两条**已证过的坑**:**零值必须先自证**(拿一个已知非零的样本做对照,否则"全 0"分不清真没有与没测到)· **"在册" ≠ "在跑"**(判机制生效看**新鲜调用时间戳**,⛔ 不看配置文件里有没有)。  ⛔ 本规程只交「清单 + 分档 + 读数」,**删/改/并的判据只有用户能给**;要动手另按 `references/00-动手前必过.md` 走。 +**⑨ 我要优化技能本身**(用户说「**优化技能**」「**技能怎么改更好**」「**梳理技能**」「**梳理一下技能的要求和描述**」「**技能太长**」「**这条规则写在哪**」「**这个技能能不能拷到别的机器用**」——任一句即触发)⇒ 读 **`references/06-技能优化规程.md`**(2026-10-15 立)。 + **一句话判据**:**写技能时,假设读者是"另一台机器上的另一个会话"** —— 拿它回放一遍,毛病自己浮出来。 + **三层,按顺序做(⛔ 别从第三层开始)**: + · **工程层**(换机器能不能活)—— ① 配置外置 ② 不写死本机 ③ 本机生成的契约不入库 ④ 路径形态统一 ⑤ 入仓按白名单。 + · **结构层**(后续会不会漂)—— ⑥ 单一真源 ⑦ 注入面与真源同源(🔴 每轮注入的面**改文字必须量长度**)⑧ 命名一致 ⑨ 正文不自相矛盾。 + · **表述层**(读起来对不对)—— ⑩ 肯定表述(正本 ⇒ `references/rules.md §9`)⑪ 说人话 ⑫ 一页纸。 + 🔴 **优先级判断**:工程层会**让人出事**(搞坏别的机器)> 结构层会**让后续每次都漂**> 表述层**只是效果差**。 + 🔴 **验法分三层**:工程层 ⇒ **拷到别处跑一遍**(能不能换机器跑通,是最硬的一条);结构层 ⇒ 同源比对/md5/判据;表述层 ⇒ 人读(⛔ 别假装它有自动结论)。 + --- ## 🔴🔴 T 表 · 状态 → 我该做什么(2026-10-04 用户口述,⛔ **唯一权威,不许 AI 推断**) diff --git a/session-mechanism/references/01-文档索引.md b/session-mechanism/references/01-文档索引.md index 0612815..8539967 100644 --- a/session-mechanism/references/01-文档索引.md +++ b/session-mechanism/references/01-文档索引.md @@ -28,7 +28,8 @@ | 查某个历史会话干了啥 | `forensics.md` | — | | 任务图/多会话分工 | `taskgraph.md` + `collab.md` | — | | 怎么回话/排版 | `03-回复排版-核心块.md` + `02-功能优先协作协议.md` | — | -| **梳理技能库/盘点技能**(「梳理技能」「盘点技能库」「技能库体检」) | `05-技能梳理规程.md` | 其余全部 | +| **盘点技能库/技能已无作用**(「盘点技能库」「技能库体检」「技能清单」) | `05-技能库盘点规程.md` | 其余全部 | +| **优化技能本身/这条规则写在哪**(「优化技能」「技能怎么改更好」「梳理技能」「技能太长」) | `06-技能优化规程.md` | 其余全部 | | 对方甩来一句没头绪的话 | `02-功能优先协作协议.md` | — | | 只想要速查 | `99-速查清单.md` | — | | **问「这是什么、为什么这样」** | `architecture.md` | — | diff --git a/session-mechanism/references/05-技能梳理规程.md b/session-mechanism/references/05-技能库盘点规程.md similarity index 83% rename from session-mechanism/references/05-技能梳理规程.md rename to session-mechanism/references/05-技能库盘点规程.md index 45c8417..8294d6a 100644 --- a/session-mechanism/references/05-技能梳理规程.md +++ b/session-mechanism/references/05-技能库盘点规程.md @@ -1,12 +1,13 @@ -# 05 · 技能梳理规程 +# 05 · 技能库盘点规程 -> **什么时候用**:用户说「**梳理技能**」「**盘点技能库**」「**技能库体检**」「**技能清理**」 -> 「梳理一下技能的要求和描述」—— 任一句即触发本规程。 +> **什么时候用**(本规程只管**库**:有哪些技能、在用没用、该不该入仓):用户说「**盘点技能库**」 +> 「**技能库体检**」「**技能清理**」「**技能清单**」「**技能已无作用**」—— 任一句即触发本规程。 +> 📌 用户说「**梳理技能**」「**梳理一下技能的要求和描述**」指的是**改描述**,走 `06-技能优化规程.md`。 > **一句话判据**:**先把读数拿到手,再谈分类;分类之后只报"删了会丢什么",删不删由用户定。** ## 为什么要有这篇(2026-10-06 ~ 10-15 的实证) -近 10 天里,「技能梳理」这件事被零散地做过至少 6 次,每次都要重新摸一遍判据 —— +近 10 天里,「把技能库盘一遍」这件事被零散地做过至少 6 次,每次都要重新摸一遍判据 —— 结果每次都踩同一个坑,或漏同一类东西。以下 11 项是**从那些实际发生过的动作里归纳出来的**, 不是凭空设计的清单。两个已证的坑先摆在前面: @@ -85,5 +86,6 @@ ## 一句话调用 -用户说「**梳理技能**」「**盘点技能库**」「**技能库体检**」⇒ 按本文件跑一遍,产物落 `交付物/技能清单-<日期>.md`。 -用户点名范围(如"只梳理 X 区""只看白名单")⇒ 只跑对应那几项。 +用户说「**盘点技能库**」「**技能库体检**」「**技能清单**」⇒ 按本文件跑一遍,产物落 `交付物/技能清单-<日期>.md`。 +用户点名范围(如"只盘 X 区""只看白名单")⇒ 只跑对应那几项。 +📌 姊妹篇:**改技能描述**(一条规则写在哪、怎么表述、能不能换机器用)⇒ `references/06-技能优化规程.md`。 diff --git a/session-mechanism/references/06-技能优化规程.md b/session-mechanism/references/06-技能优化规程.md new file mode 100644 index 0000000..53e7fce --- /dev/null +++ b/session-mechanism/references/06-技能优化规程.md @@ -0,0 +1,134 @@ +# 06 · 技能优化规程 + +> **什么时候用**(本规程只管**描述与结构**:这条规则写在哪、怎么表述、换台机器还灵不灵):用户说 +> 「**优化技能**」「**技能怎么改更好**」「**梳理技能**」「**梳理一下技能的要求和描述**」「**技能太长了**」 +> 「**这条规则写在哪**」「**这个技能能不能拷到别的机器用**」—— 任一句即触发。 +> **一句话判据**:**写技能时,假设读者是"另一台机器上的另一个会话"。** + +## 为什么是这一句(模型判断,依据=2026-10-05 ~ 10-15 的六次实操) + +近 10 天里「技能怎么改」被反复提过,表面看是六件不相关的事 —— +写死盘符、肯定表述、规则散落、注入被截断、命名混用、旧稿覆盖新稿。 +把它们摆在一起看,**根因是同一个**:**技能是「跨机器、跨会话共享的文本」,但作者在按「本机、本会话」的假设写它。** + +- 按"本机"写 ⇒ 写死 `E:/...` ⇒ 换台机器就坏别人的环境(2026-10-11 用户报障原话: + 「这个环境都是针对一台机器的,同步到别的机器把环境都搞坏了」)。 +- 按"本会话"写 ⇒ 规则散在六处,改一处漏一处;注入面有长度上限,超了**静默丢**, + 而下游只看到一句"已截断",看不出少了哪几条。 +- 按"我读得懂"写 ⇒ 描述里写负向("不用于海报"),而描述是**自动匹配面** ⇒ 反而把"海报"喂进去。 + +⚠️ 反过来说:**任何一条技能优化,只要拿"另一台机器 + 另一个会话"回放一遍,毛病就自己浮出来。** +这就是本规程的判据来源,也是它比"清单"更该先看的那一条。 + +--- + +## 三层优化(🔴 按这个顺序做,⛔ 别从第三层开始) + +**先看一条优先级判断**:工程层的毛病**会让人出事**(搞坏别的机器);结构层的毛病**会让后续每次都漂**; +表述层的毛病**只是效果差**。⇒ **工程 > 结构 > 表述。** + +### 第一层 · 工程层(换机器能不能活) + +**① 配置外置** +每台机器各不同的东西(工作区根 / 配置目录 / 文档库根 / 本机软件安装位)放包内 `env/`; +入仓的只有 `env/*.example`(占位符、无本机路径)。真文件由 `install.py --apply` 生成。 + +**② 不写死本机** +包内代码里留:盘符字面量 / 绝对机器路径 / 工作区清单 —— 都属"写死本机"。 +✅ 写法:能从 `__file__` 推导的就推导;推不出来的读 `env/roots.env`;**推不出来又没有配置 ⇒ 如实报错 + 留痕**。 + +**③ 本机生成的契约不入库** +判据:**它是不是由本机某个脚本生成** —— 是(`env/roots.env`、`references/manifest.md` 这类)⇒ ⛔ 不入库。 + +**④ 路径形态统一** +引用**本包自己或同根技能** ⇒ 写 `<技能根>/<技能名>/` 或包内相对路径。 +**跨根引用**(工作区根 / 文档库根 / 本机安装位 / 宿主数据目录)⇒ 才落到具体位置,且优先读环境变量。 + +**⑤ 入仓按白名单** +仓用 `/*` 全挡 + 逐个放行。**新增独立技能后要同步放行**(漏了 ⇒ 仓里只剩一份指向仓外的引用)。 + +### 第二层 · 结构层(后续会不会漂) + +**⑥ 单一真源** +同一件事**只留一处定义**,其余位置写指针。判据:**改它的时候,我需不需要改第二个地方** —— +需要 ⇒ 那就是两处真源,该收敛。 + +**⑦ 注入面与真源同源** +每轮注入的那份与包内那份**逐字一致**(防漂移判据:`selftest.py::t_reply_core_same_source`)。 +🔴 配套:**凡"每轮注入 / 有长度上限"的面,改文字必须量长度** —— +"改完自测全绿"不等于"改的内容真进了上下文"(已经栽过一次:加条文把尾部三条规则顶掉了)。 + +**⑧ 命名一致** +同一概念在全包用同一个叫法。改名前先列**伴随物清单**(只改主体必留隐患)。 + +**⑨ 正文不自相矛盾** +同一件事在技能里出现两种写法(尤其"正文"与"规则段"之间)⇒ 逐条对,留一处。 + +### 第三层 · 表述层(读起来对不对) + +**⑩ 肯定表述** +写「要什么、怎么做」。⛔ 不写「不要 A/B/C」—— 负向词进匹配面/注入面,**反而把 X 拉高命中**。 +例外:**以「经验沉淀」或「红线/避坑」为目的**的文档可以写负向,写法=**正向目标 + 括号里的踩坑依据**。 +⚠️ 两条边界:「配置里不含本工作区」是在**描述事实**,不在本条管辖内;「三禁」这类**硬禁令**是约束本体,强度要留住。 +(正本 ⇒ `references/rules.md §9`) + +**⑪ 说人话** +落盘文字先过"像不像人写的"这一关(禁四种 AI 味:三段式排比连用 / "…着"结尾的肤浅分析 / +模糊归因 / 把一句话拆成加粗小标题 + 竖排碎句)。 + +**⑫ 一页纸** +单份产出默认 ≤120 行,超长就拆。 + +--- + +## 怎么验(三层验法不同,⛔ 别拿一种验法套三层) + +- **工程层** ⇒ **拷到别处跑一遍**(把技能包复制到一个没有 `env/` 的位置,看它是如实报错还是静默扫空)。 + 这是最硬的一条:**能换机器跑通才算真的优化过。** +- **结构层** ⇒ 同源比对 / md5 / 判据(有机器可查的部分)。 +- **表述层** ⇒ 人读。⛔ 这部分**验不出自动结论**,别假装它通过了。 + +--- + +## 一句话调用 + +用户说「**优化技能**」「**技能怎么改更好**」「**梳理技能**」「**这条规则写在哪**」⇒ 按本文件的三层顺序过一遍。 +用户点名某一层(如"只看工程层")⇒ 只跑那一层。 +📌 姊妹篇:**盘点技能库**(有哪些技能、在用没用、该不该入仓)⇒ `references/05-技能库盘点规程.md`。 + +--- + +## 技能优化描述 · 总表(21 条,四层) + +> **怎么来的**:本表把两个来源合并去重 —— +> ① 本规程的三层 12 项;② 另一工作区的 `技能审计检查清单.md` +> (路径 `E:\ProgramData\AIProject\mcn-short-video\技能审计检查清单.md`,2026-08-10 创作流程全量审计归纳的 13 项, +> 覆盖**流程与数据流**维度)。 +> **用法**:审计一个技能时按 **A → B → C → D** 顺序逐条过,⛔ 别从 D 开始。 +> **发现的问题分级**:**P0 = 会让人出事或断链**(A 层 + C 层第 18 条)/**P1 = 不一致或冗余**(B 层 + C 层其余)/**P2 = 效果差**(D 层)。 + +| # | 层 | 检查点 | 判据(怎么算过) | 典型反例(实测过的) | +|---|---|---|---|---| +| 1 | A 工程 | 配置外置 | 每台机器各不同的值都在包内 `env/`;入仓的只有 `env/*.example` | 本机路径写进入库代码 | +| 2 | A 工程 | 不写死本机 | 包内代码无盘符字面量/绝对机器路径/工作区清单 | `or r"D:\github\..."` 兜底;工作区清单写死 | +| 3 | A 工程 | 本机生成契约不入库 | 由本机脚本生成的产物(`env/roots.env`、`manifest.md`)不进仓 | 入仓后换机器"同名覆盖"改掉对方配置 | +| 4 | A 工程 | 路径形态统一 | 本包/同根技能 ⇒ `<技能根>/<名>/` 或包内相对;跨根 ⇒ 读环境变量 | 同一件事三处三说地写文档库路径 | +| 5 | A 工程 | 入仓按白名单 | 仓用 `/*` 全挡 + 逐个放行;新增独立技能后已同步放行 | 新技能独立了但白名单没加 ⇒ 仓里只剩指向仓外的引用 | +| 6 | B 结构 | 单一真源 | 同一件事只有一处定义,其余写指针 | 同一条判据散在 6 处,改一处漏一处 | +| 7 | B 结构 | 注入面与真源同源 | 逐字一致 + **有长度上限的面改文字必须量长度** | 加条文顶破上限 ⇒ 尾部规则静默消失,下游只看到"已截断" | +| 8 | B 结构 | 命名一致 | 同一概念全包一个叫法;改名先列伴随物清单 | 「任务会话 31 处 / 执行会话 29 处」混用 | +| 9 | B 结构 | 正文不自相矛盾 | 同一件事不出现两种写法(尤其正文 vs 规则段) | 技能正文缺起实例命令、与另一处说法冲突 | +| 10 | C 流程 | 步骤顺序正确 | 全流程步骤顺序无错乱 | 步骤排反 | +| 11 | C 流程 | 编号连续 | 步骤内部编号不跳号 | 第一步→第三步缺第二步 | +| 12 | C 流程 | 无跳步 | 不跳过中间步骤 | 产物链 5→6→7 禁止跳 | +| 13 | C 流程 | 步骤间职责不越界 | 各步骤各管一段,不越界产出 | 后一棒把前一棒的场次表+情绪卡全塞进去 | +| 14 | C 流程 | 字段归属正确 | 字段由哪个步骤产出就标哪个 | 情绪设计卡标成后一棒,实际是前一棒 | +| 15 | C 流程 | 上游→下游不断裂 | 上游输出的字段,下游输入列表要引用 | 「目标体感」字段后两棒都没引用 | +| 16 | C 流程 | 引用路径正确 | 引用走对层级(流程→知识库→素材库) | 素材库误走直接路径,应走知识库间接引用 | +| 17 | C 流程 | 字段不缺失 | 每步的输入列表字段完整 | 某步输入缺「框架方案」 | +| 18 | C 流程 | 产物链完整 | 中间产物必须落盘,**P0**:禁止只出最终产物 | 只在对话里输出、没落盘 | +| 19 | D 表述 | 肯定表述 | 写「要什么、怎么做」;例外=经验沉淀/红线避坑类(正向目标 + 括号里的踩坑依据) | 描述里写「不用于海报」⇒ 匹配面反而把"海报"拉高 | +| 20 | D 表述 | 说人话 | 落盘文字过"像不像人写的"这一关 | 四种 AI 味:三段式排比连用/"…着"结尾的肤浅分析/模糊归因/拆成加粗小标题+竖排碎句 | +| 21 | D 表述 | 一页纸 | 单份产出 ≤120 行,超长就拆 | 一份 300 行的"速查" | + +**验法按层不同**:A 层 ⇒ **拷到别处跑一遍**(最硬);B 层 ⇒ 同源比对/md5/判据;C 层 ⇒ 画数据流看断点;D 层 ⇒ 人读。