admin
|
5004909267
|
提问规则审计 + 撤出本机生成的两份契约 + 「一律用肯定表述」落进注入面
用户 10-09 三条令:
①「那两份 不说具体 我怎么知道,看看会话提问的规则是否有缺陷」
②「A 方案」(撤出 session-mechanism/roots.env 与 references/manifest.md)
③「要用确定XXXX 这样的描述,避免 不要XXXXX 会导致上下文干扰的描述,除了经验沉淀和红线避坑外」
+「不只是修改 创建生成时也需要遵守」
一、提问规则审计(三条缺陷,全部修掉)
1、判据用错了维度:旧措辞「⛔ 提问正文不许出现的:包名·环境变量·文件路径·commit/sha·表名/字段名·
类名/函数名」是按**词性**一刀切,而同一段末尾又写「正文只留能决定下一步的内容」⇒ 两句自相矛盾。
我按前半句执行、把要撤的文件名删成了「那两份」⇒ 待拍板项不可答。
✅ 改成按功能判:**少了这个标识,用户还能不能决定** —— 不能 ⇒ 写进正文;能 ⇒ 删、下沉技术附录。
2、同一判据散在 6 处、措辞各不同(违反本项目自己的「禁重复判定标准」):已收敛到同一句判据,
并互相标注「改这里必须同批改」。
3、🔴 最隐蔽:**每轮注入的那份 ≠ 包内那份**。钩子 `_core()` 是三级回退,① **本工作区
CODEBUDDY.md 的 `REPLY-CORE` 段**才是每轮注入的(包内那份只是换机器的兜底)。
我先只改包内 ⇒ 注入的仍是旧条文,而"文件都改了、自测全绿",看不出来。
⇒ 两份都改 + 新增防漂移自测 `t_reply_core_same_source`(两份实质内容必须逐字一致)。
二、撤出两份「本机生成」的契约(用户选 A)
- `git rm --cached session-mechanism/roots.env` 与 `session-mechanism/references/manifest.md`
—— **本地文件一律保留**(实测 624 B / 18 568 B 仍在)。
- 为什么必须撤:别的电脑取仓时「同名覆盖」会把它们换成**我们这台机器**的路径 ⇒ 那台机器的
机制脚本去找不存在的目录。
- 新增入库样例 `session-mechanism/roots.env.example`(占位符,无本机路径)。
- `.gitignore`:加这两份的忽略行(⛔ 防 `git add -A` 捎回),并改掉原「刻意入库」那段注释。
三、「一律用肯定表述」写进注入面(原来只在 rules.md,注入面看不到)
- 口径:**写或改技能与规则文件时一律写"要什么、怎么做";新建、生成时同样适用**;
例外=**以「经验沉淀」或「红线/避坑」为目的**的技能与规则(写法=正向目标 + 括号里的踩坑依据)。
- 落点:injected `REPLY-CORE` 段(工作区 + 包内,逐字一致)· `rules.md §9` ·
`改包纪律.md` 新增第 5 条硬纪律(「二、四条」→「五条」)· `01-文档索引.md` 指针同步 ·
把我在注入块里加的那段负向表述改成**正向主导**。
四、🔴 顺带抓到并修掉一个我自己造成的净变差
- 注入块有 **1400 字上限、且从开头截** ⇒ 我加条文把它顶过上限(1274 → 1414+)⇒
尾部三条(变相征询禁止 / 不用征询句收尾 / 本工作区另有定稿)**静默消失**、不再注入。
- 修:上限 1400 → **2000**;并在 `t_reply_core_same_source` 里加断言 **块长 ≤ 上限** ——
以后谁再顶破上限,自测直接报红,逼他"要么精简、要么显式抬上限"。
- 验证:`被截断=False`,尾部三条都回来了。
五、验证
- 全套自测 **PASS 109 / FAIL 0**;py 语法全绿;`install.py --manifest` 重算(78 份,语法失败 0)。
- 注入块实测:来源=工作区 CODEBUDDY.md,不截断,含「一律用肯定表述」「决定对象要点名到具体」
「新建、生成时同样适用」。
|
2026-10-09 10:45:00 +08:00 |
|
admin
|
805f1ba2d7
|
对外叫法落定:机制叫「项目机制」,用法「使用项目机制完成目标:XXXX」;角色名不变
一、用户令(逐字)
`后续说 使用项目机制完成目标:XXXX,创建会话还是叫做 执行会话 和 检查会话`
⇒ 口径终于对齐:**「项目机制」= 这套机制的名字**(不是会话名),
而它建出来的会话**仍叫「执行会话」「检查会话」**(连同「主会话」)—— **⛔ 角色名一律不改**。
二、改法(4 处)
· `SKILL.md` H1 后新增「**对外叫法**」块,逐字记下用户原话,并写清:
**项目机制 = 机制的名字;执行会话/检查会话 = 会话的名字**,两者⛔ 别混。
· 第 0 步触发句置顶加 **`使用项目机制完成目标:XXXX`**(标注 2026-10-08 用户令的现行写法)。
· `skill-load-guard.py` 词表加「项目机制」族(`使用项目机制`/`项目机制完成`/`项目机制`),
⛔ **旧词一个不删**、⛔ **角色名不加进词表**(它不变)。
复核:`使用项目机制完成目标:XXXX` 命中 `['使用项目机制','项目机制完成','项目机制']` ✓;
旧写法 `使用执行会话完成 X 目标` 仍命中 ✓;`按决策方法处理` 仍命中 ✓。
三、与上一轮的关系
上一轮我按「执行会话(协作会话)改为 项目会话」把目标词改错了(已全量撤回,见 `90e892e`);
本轮按用户更正后的**正确目标词「项目机制」**落地,且**不再动角色名**。
四、验收
selftest.py rc=0 PASS 106 / FAIL 0;manifest 76 份、语法失败 0。
|
2026-10-08 22:24:30 +08:00 |
|
admin
|
1d7d31a529
|
撤销误用的「项目会话」更名 + 说人话新稿按**合并**落地(141 处措辞替换)
一、用户令(逐字)
1. `1、A方案`
2. `执行会话没问题 。是之前的说法有问题:应该叫 项目机制 不叫 项目会话`
二、🔴 先撤回上一轮的错误更名(用户更正了目标词)
上一轮我按「执行会话(协作会话)改为 项目会话」把术语改成了**项目会话** ⇒ 本轮用户明确:
**「执行会话没问题」**、要叫的是「**项目机制**」、**⛔ 不是「项目会话」**。
⇒ 已**全量撤回**(6 处):`SKILL.md` 的术语更名口径块/三类会话表那行/第 0 步触发句插入,
以及 `skill-load-guard.py` 词表里新增的"项目会话族"。
⚠️ 复核时看到的另外 4 处「项目会话」是**巧合的普通词组**(「本项目会话共 N 个」「不算本项目会话」),
⛔ 不是更名产物 ⇒ 未动。
🔴 **教训**:改名属"影响面变更"的**目标词**,一次说错就要全量撤回 —— 所以我这轮**没有再自行猜**(见待拍板项)。
三、A 方案:7 份按「**合并**」落地(不是覆盖)
· 规则(保守):只应用**两侧都 ≤8 行、且在现文件里唯一**的"措辞替换";**更大的块一律保留现文件原样**
(那些块是别的会话今天加的新内容,例如 `stage-delivery/SKILL.md` 里 106 行的增量)。
· 结果:7 份共应用 **141 处**措辞替换(9/6/17/12/27/10/60),逐份有残留大块未动(已列出)。
· **改前备份** ⇒ `待清理/技能包-说人话合并前备份-20261008/`(7 份,可回退)。
· ⚠️ 加上上一轮直落的 9 份,A 方案的 16 份**全部处理完毕**:9 份直落(差异只在措辞)+ 7 份按合并(保留新内容)。
四、验收
selftest.py rc=0 PASS 106 / FAIL 0;manifest 76 份、语法失败 0。
|
2026-10-08 22:22:38 +08:00 |
|
admin
|
1ca0a637a6
|
术语更名第一步:执行会话/任务会话 ⇒ 项目会话(口径块 + 触发词表)+ 落地 9 份"说人话"新稿
一、用户令(逐字)
1. `1、A 方案`
2. `把会话技能中 执行会话(协作会话)改为 项目会话 # 用法改为输入 使用项目会话完成目标:XXXXX`
二、A 方案:只落"说人话"新稿 —— ⚠️ 实测**只能落 9 份**,7 份必须合并
· 16 份新稿(`contentm_agent` 那条目标产出)逐份比对现文件:**9 份差异只在措辞**(0~2 行)⇒ ✅ 已落地,
逐份 md5 与稿子一致;**原件已备份**到 `待清理/技能包-说人话落地前备份-20261008/`。
· 🔴 **7 份现文件含稿子里没有的内容**(最多的少 106 行!)—— 且 `stage-delivery/SKILL.md`、
`execution-runbook.md`、`SKILL.md` 是**今天 15:28/15:29 刚被别的会话改过** ⇒ 直接覆盖会**丢掉今天的新内容**。
⇒ 按「改技能包前先看别人在途改动、⛔ 别硬覆盖」的规定**没动这 7 份**,留待合并(见回复待拍板项)。
三、术语更名(先落低风险那一半,让新用法今天可用)
· `SKILL.md` 第一屏加**术语更名口径块**:**项目会话(现行)= 任务会话(旧称)= 执行会话/协作会话(更旧称)**,
新文字一律用「项目会话」;⛔ 三个词的旧正文**按本块读**(同 10-02 那次的做法)。
· 三类会话表里那一行改为「**项目会话**(旧称任务会话/执行会话)」。
· 第 0 步触发句加 **`使用项目会话完成目标:XXXXX`**(用户口径的现行写法)。
· `skill-load-guard.py` 的词表**加**项目会话族(`使用项目会话`/`项目会话完成`/`项目会话`/`创建项目会话`/`派项目会话`),
⛔ **旧词一个不删**(用户与新会话都可能用旧词,收窄词表=把已授权的触发句漏掉,本项目栽过)。
复核:`使用项目会话完成目标:XXXXX` 命中 `['使用项目会话','项目会话完成']` ✓;`用执行会话完成 X` 仍命中 ✓。
· 🔴 **机器前缀 `[执行]` 暂不变** —— 它是角色解析与看板的键(`parse_session_name`/`board.py::_role_of_title`/
在跑的排期名),属影响面变更,**等用户拍板**。
· ⚠️ **全量更名尚未做完**:实测 **416 处 / 22 个文件**(`collabd.py` 71 / `selftest.py` 63 / `SKILL.md` 50 /
`board.html` 46 / `pitfalls.md` 36 / `board.py` 33 …)⇒ 按机制自己的三类规矩(注释文档 / `@case` 标题 / 看板文案)逐步收尾。
四、验收
selftest.py rc=0 PASS 106 / FAIL 0;manifest 76 份、语法失败 0。
|
2026-10-08 22:10:12 +08:00 |
|
admin
|
2ed7766007
|
说人话落地:加每轮注入 + 英文硬核版整包纳入 + 第①段补写作口径
一、用户令(逐字)
「humanizer(英文那份) 也要纳入」「重点就是做到说人话就行了」「但是 content_marketing_agent 的会话生成的文档并没有说人话,还是我手动要求的」
二、根因(两处,都不是"没整合")
· **语气那一档只有指针、没有注入** ⇒ 实测没被读到(`SKILL.md` 必读表标题原写「三篇」而表里有 4 行,
第 4 项=作业规矩整包,被顶在"必读"之外;已订正为「四类」)。
· **写文档的执行会话那条链上一句写作口径都没有** —— 产品规划技能里「反 AI 味」只出现在**第③段界面**
(且指的是界面不是文字),**第①段出文档那节零口径** ⇒ 产物自然是 AI 味。
三、改法
1. **每轮注入**(照排版那条现成机制,⛔ 不改 `main()`):
· `04-去AI味与说话方式.md` 顶部加 `<!-- VOICE-CORE -->` 紧凑块(≈450 字符:核心原则/四种高频 AI 味/交付前三问);
· `reply-style-guard.py` 里**原地重定义** `_core`(`_core_reply = _core` 后用新 `_core` 包住它并追加语气块)
⇒ 注入正文自动多一段,排版那条**不受影响**。
2. **产出侧补口径**:`product-planning` 第①段(stage-discovery)在 1b 表后新增「写作口径」块 ——
落笔前读 `humanizer-zh` 或本包 04,**定稿前过「交付前快速清单」**,并列出六种禁用 AI 味;**适用本段全部五份产出**。
3. **英文硬核版整包纳入**:原独立技能 `humanizer` **逐字**搬入本包 `references/humanizer-en/`(6 文件、
md5 逐个一致):55 个模式 + 5 种语气档 + 0–100 AI 痕迹打分 + `--file` 就地改;
在 `04 §9` 关系表与 `SKILL.md` 对应物段登记(冲突以本包会话场景版为先)。
四、验收
· 新增 `selftest.py::t_voice_core`(4 项);全量 **PASS 106 / FAIL 0**;manifest 70 → **76** 份、语法失败 0。
· 端到端喂真钩子:注入正文已含说人话块、排版块仍在。
· ⛔ 改的是钩子与技能目录(宿主直读)⇒ **不需要分发/重启**。
|
2026-10-07 22:00:13 +08:00 |
|
admin
|
61962f1726
|
补入本地今日改动:session-mechanism + product-planning(按用户令改推本仓库)
背景:旧远端 work.alotbuy.com 今天一直连不上(222/22 端口都不通)⇒ 今天本地累积多条提交推不上去;
用户令改推本仓库 [email protected]:admin/workbuddy_skills.git(只推这 5 个技能:
browser-harness / humanizer / humanizer-zh / product-planning / session-mechanism)。
本次改动(对照本机已安装的技能源逐文件 md5 比对得出,⛔ 是「补差异」不是「整体覆盖」):
· session-mechanism:含今天两条钩子改动(派活收工闸、点名加载收工闸)、
rules.md §9「只写正向范围」、检查程序静默阈值 10→6、检查排期补 workspace_scope(修未分组)、
以及今天修的三处陈旧指针(旧技能名 dsh-decision / agent-operating-rules 与旧路径编号)。
· product-planning:第③段「随段样式风格库」并入 design-system-tiaoyue、竞品分析方法论重写等。
· humanizer / humanizer-zh:已一致,零改动。
· browser-harness:比对出的 7 个「本地独有」全是**它自己 .gitignore 里就排除的**构建产物
(src/*.egg-info/ 与 uv.lock)⇒ 按该技能自己的规矩不推(用户口径「不要环境」)。
仓库级配置(与旧仓一致):core.autocrlf=false;身份 maogeigei <[email protected]>。
⚠️ 克隆时仓库默认 autocrlf=true(会把行尾转成 CRLF)⇒ 已改回 false 并重新暂存,
核对索引 blob 均为 LF、真实差异 23 个(⛔ 不是把几百个文件一起改掉)。
|
2026-10-07 20:33:49 +08:00 |
|
admin
|
9a152a1952
|
加载闸门两处收口:派活族不受冷却 + 冷却跳过留痕(用户问「有什么影响 该如何处理」)
一、影响评估(实测,会话 b232218f)
- 冷却窗口 COOLDOWN=300;旧实现:命中 → 查冷却 → 落在窗口内就 return,**且只在注入成功后才写日志**。
- 后果两条:
① 01:32:00 命中后,**01:33:46 那条最明确的触发句**(「每次我说使用执行会话完成目标…」)
距上次仅 105 s ⇒ **被吞掉,那一轮 AI 收不到任何提醒**;
② 被吞掉**连一行痕迹都没有** ⇒ "没命中"与"被吞"在日志上分不出来,排查只能靠状态文件时间戳反推。
- ⚠️ 危害已被 2026-10-07 新增的「派活收工闸」**部分补偿**(待办标记写在冷却之前 ⇒ 不受冷却影响,
仍会在收工前拦一次);剩下的是"口头提醒缺失"与"日志盲点"。
二、处置(两处,都在 skill-load-guard.py)
1. 抽出共用的 `_is_dispatch()`;冷却旁路改为
`if _cooling(workdir, sid) and not _is_dispatch(prompt):`
⇒ **派活族显式触发句不受冷却**(其余词照旧受)。
2. 被跳过时写一行 `COOL_SKIP sid=… hits=…(冷却中,本轮不注入)` ⇒ 抑制态不再隐身。
三、判据与验证
- 新增 selftest 用例 t_skillguard_cooldown(3 项,**源码级** —— 跑真钩子会动到真工作区的冷却状态,
⛔ 不适合进回归套)。
- 另做了一次**行为级**验证(外部脚本,用真作用域内的工作区、测前备份冷却状态、测后还原):
5/5 通过 —— 非派活首次注入 ✓/非派活冷却中不注入 ✓/**派活族冷却中仍注入 ✓**/
日志有 COOL_SKIP ✓/日志有 DISPATCH_PENDING ✓。
- ⚠️ 该验证脚本第一版**读日志读错**:`log_before` 是字节数却按字符切片 ⇒ 误判成"日志没写"。
改成按字节 seek 后全绿(同族坑:本项目已记过"字节 vs 字符")。
验收:selftest.py rc=0 PASS 103 / FAIL 0(改前 102);manifest 70 份、语法失败 0。
|
2026-10-07 08:15:31 +08:00 |
|
admin
|
9a665039a9
|
派活触发句收工闸:说了就必须把执行会话拉起来(实测栽过,补机器抓手)
一、起因(用户令逐字)
「重点问题是 会话接收到 调用执行会话完成目标 没有去调用对应技能去执行」。
实测会话 b232218f(vibe-product):用户 01:32:00 / 01:33:46 两次说触发句,
到 01:36:27 才建出排期 —— 中间那一轮 AI 只在回复里解释口径,没拉起执行会话。
根因:机制里**只有 "注入提醒"**,⛔ 没有任何机器抓手检查"到底做没做"。
二、改法(发现 → 拦住,两步)
1. scripts/hooks/skill-load-guard.py:命中**派活族**触发句时写一条待办
<工作区>/.workbuddy/.dispatch-pending(会话 id / 时间戳 / 命中词)。
⚠️ 写在**冷却判定之前** —— 实测 01:33:46 那条最明确的触发句正被 300 s 冷却吞掉,
写在冷却之后就等于"最该拦的那一条反而没有标记"。
⚠️ 比对前**去掉空白**:用户写的是「应该使用 执行会话的技能去完成工作」(中间有空格)。
⛔ 不把裸词「执行会话」算进派活族(太宽,讨论机制时也出现)⇒ 误报面保持最小。
2. scripts/hooks/stop-dialog-guard.py:新增收工前闸 —— 同会话 + 超 90 s 宽限 +
宿主库该区此后**没有**新建排期 ⇒ 返回 {"continue": false} 拦一次,逼它先建排期。
⚠️ 必须放在**自作用域判定之前**(那条作用域只认本工作区,而栽的会话在 vibe-product)。
⛔ 三条安全底线:① 全程 fail-open(读不到库/解析失败/任何异常 ⇒ 一律放行);
② 只拦一次(复用本文件 10 分钟限流);③ 待办 30 分钟过期,⛔ 不长期纠缠。
三、判据(新增自测用例,5 项)
selftest.py::t_dispatch_gate —— 派活句留待办(含带空格写法)/非派活句不留/
超宽限且未建排期则拦/宽限内放行。三条断言都确定性,⛔ 不依赖现网存量。
验收:selftest.py rc=0 PASS 100 / FAIL 0(改前 99);
两组外部变异对照(发现侧 3 项、收工闸 4 项)全过;
另实测"10 分钟限流"有效(同一会话重复构造不再重复拦)。
|
2026-10-07 01:47:38 +08:00 |
|
admin
|
9fd120f40b
|
整合作业规矩:agent-operating-rules 整包并入本技能 references/作业规矩/
|
2026-10-06 23:44:16 +08:00 |
|
admin
|
119f0084e2
|
删尾巴:dsh-decision 整份删除;活指针全部改指本包
|
2026-10-06 23:21:29 +08:00 |
|
admin
|
ea4e6d6d58
|
权威统一:提问/排版格式与自决策判据都归位到会话机制包内
起因(用户):「提问拍板格式不应该在会话机制中吗,怎么跑到别的技能中去了」
病根=**权威声明分裂**:
· SKILL.md:963 说 03 号是「内联副本」⇒ 隐指权威在 agent-operating-rules;
· 而 03 号自己头部写着「**这份是权威源**」,且把它说的第②个消费者
`scripts/apply-reply-rules.py` 写成了**不在本包**的路径。
⇒ 同一件事两处说法打架 ⇒ 改的人(我)会把改动做错地方。
处置(统一为「会话机制包内即权威」,与 02/04 两份的既有处置一致):
① 注入器归位:新增 `session-mechanism/scripts/apply-reply-rules.py`,默认读**包内** 03 号;
② 03 号头部改写:权威=本文件,两个消费者都在本包内;
③ `reply-style-guard.py` 第③级兜底从**别的技能**改回包内路径;
④ `agent-operating-rules/references/回复排版-核心块.md` 标注「副本·权威在会话机制」;
⑤ `dsh-decision/references/00-决策方法论.md` 标注「来源·权威在会话机制」;
⑥ SKILL.md:963 措辞由「内联副本」校正为「收进本包并定为权威」。
验收:注入器 `--check` 报权威源=包内 03 号且与 CODEBUDDY.md 一致;
每轮注入 1183 字符(含「竖排」「变相征询」);
**无 CODEBUDDY.md 的干净工作区也能取到**(1185 字符)⇒ 自包含成立。
|
2026-10-06 22:45:43 +08:00 |
|
admin
|
433d43af54
|
decision-rules-hook: 注入补「两个停止点」+「技术方案排序轴」
起因(2026-10-06 用户问):能自决的问题为什么还要问。
复盘发现注入的判据里**缺动作**:
- 缺「十步」的两个停止点 → ① 判类型(方案请求 vs 直接执行)② 判方向(扩大/收窄/中性);
- 缺「自主裁决顺序」的排序轴 → 更小改动 → 更少新增形态 → **不扩大可见面**。
⇒ 前者导致「会扩大可见面」时不停手;后者导致排完仍把已定项混进待拍板清单(=变相征询)。
本次只补这两条动作骨架(1459 → 1906 字符),⛔ 不塞十步全文(避免稀释)。
|
2026-10-06 22:39:51 +08:00 |
|
admin
|
64dd82073b
|
session-mechanism: 修复钩子静默失效 + 3 处判据缺陷;禁「变相征询」
1) stop-dialog-guard: session_budget() 早退路径返回 2 值、末尾返回 3 值,调用方按 3 值解包
⇒ transcript > 64 MiB 时每轮 ValueError。因 fail-open(异常仍 exit 0),
宿主零报错、install.py --verify 只判 rc=0 ⇒ 假绿;实测 86 条 EXCEPTION,
死掉的是整条(水位/收口、接续机制起点、预算告警、门禁自检、路径自检)。
2) session-rules-check 三处判据:
· hook_reg 按旧文件名找 ⇒ 合并成 prompt-guards.py 后每轮假红 ⇒ 改为一组可接受名
· snap_sync 拿 mtime 当内容判据 ⇒ 连续 4 天假红 ⇒ 改为复用抽取器本体比对内容
(变异对照:截断快照能报 fail,非恒绿)
· mem_ptr 只查全局技能根 ⇒ 工作区自带技能被判悬空 ⇒ 改查「全局 ∪ 工作区」
3) pitfalls 新增 P0-95(改判据必须重跑变异对照;fail-open + 只看 rc=0 = 假绿温床)
4) 回复排版核心块新增「变相征询同样禁止」(先只报不动/等你发话/我倾向X你看呢
这类不带选项的待定清单,一律按待拍板项写:问题+说明+各候选优缺点+倾向)
|
2026-10-06 22:27:03 +08:00 |
|
admin
|
19101acd65
|
init: workbuddy_skills 重建,仅收录 session-mechanism
- 按用户指示清空原有 25 技能内容,只提交 session-mechanism(57 文件)
- 附 .gitignore(产物 + 本机凭据)
- 令牌明文已脱敏(历史 .neodata_token 与 pitfalls 引用均不入库)
- 本提交为孤儿提交(父提交为空),历史自此重新开始
|
2026-10-05 14:13:24 +08:00 |
|