Files

120 lines
10 KiB
Markdown
Raw Permalink Normal View History

# 会话同步包 · 决策方法(`6cd67b31`)
- 生成:2026-09-13 07:35 | 生成会话:`15ee0d4f`(本会话)
- 用途:用户要求「把之前叫做 **决策方法** 的那个会话信息同步到这个会话,好继续执行」
- 结论先行:**目标会话已锁定,但它的原文在本机读不到**(见 §2 三条硬证据);下文是**可用证据复原**出的工作线与未闭环项,逐条标了置信度。
---
## 1. 身份卡(置信度:高)
| 项 | 值 | 证据 |
|---|---|---|
| 会话 id | `6cd67b31-78a5-48ea-ae31-5a16618844f4` | `edge-sync.log` |
| **标题** | **「决策方法」**(`isUserDefined=true` ← **用户亲手改的名**) | `§3.4 RENAME: cid=6cd67b31… title="决策方法" isUserDefined=true` |
| 自动标题(首条消息) | 「把本工作区中所有会话 关于如何改造dsh服务优化功能交互,UI界面的所有我的有效决策以及AI的有效决策,如何确认最优解,整一个思考决策的方法skill」 | `[EB_SYNC_ADDED] sid=6cd67b31…` |
| 创建 | 2026-09-12 **09:32:13** | `[CREATE_ENTER]` @ `2026-09-12T01:32:13.651Z`(UTC) |
| 最后活动 | 2026-09-12 **22:52:40**(生命周期约 13.3 小时) | `§3.4.1 ACTIVITY lastActivityAtMs=1789224760457` |
| 工作目录 | `D:\AI技能\aliyun-dsh-server`(**迁移前的 D 盘路径**) | `[CREATE_ENTER] cwd=…` |
| 交叉印证 | 「| `6cd67b31` | **决策方法** | 09-12 09:32 | 14:42 | **本会话** |」 | `.workbuddy/memory/2026-09-12.md:1110` |
> ⚠️ **易混会话(请确认没找错)**:另有一个**自动命名**含「决策方法」的会话 —— `b58f0293`(09-12 22:55 被自动改名「**参考决策方法逐条判断处理**」,最后活动 09-13 00:09)。它走的是**「逐条判断处理待办」**这条线,09-13 已由 `a2665dd3` 接手继续。**本包按用户「亲手命名过」的口径,锁定 `6cd67b31`。** 若你要的是 `b58f0293`,说一句我立刻换。
---
## 2. 「原文读不到」的三条硬证据(置信度:高)
1. **转录目录里没有它** —— `~/.workbuddy/projects/d-AI技能-aliyun-dsh-server/` 只有 5 份 jsonl,**最晚一份停在 09-12 07:00**(`b2817961`),`6cd67b31` 无文件。
2. **元数据库未收录** —— `~/.workbuddy/workbuddy.db` 的 `sessions` 表**最新行停在 09-12 07:00**(桌面版该库已静态化),`6cd67b31` 不在表里;其标题/改名/活动只能从 `edge-sync.log` 取。
3. **本机无任何内容副本** —— 全 `~/.workbuddy` 检索 `6cd67b31`:**除日志外 0 个文件命中**(会话正文只在云端 EdgeSync)。
⇒ **所以本包不能承诺「原文搬过来了」**;下面是**共享日志 + 文档库 + 实测**三条腿复原的结果。
---
## 3. 工作线复原(按活动时间对齐;每条标置信度)
### 3.1 它建了什么(全部仍在生效)
| # | 产物 | 时间 | 置信度 |
|---|---|---|---|
| 1 | **技能 `dsh-decision-method`**:U1–U19(用户有效决策)/ A1–A14(AI 有效推理)/ X1–X8(反例→规则)/ §4.1 判定矩阵 / §4.2 确认最优解十问 / §4.3 验收分级 L1–L5 / **§4.4 技术实现裁决顺序 8 条** | 09:32 起 | 高 |
| 2 | 用 `scripts/extract-user-voice.py` 抽出**180 条用户真实发言**回补核对 → **U1–U12 里 11 条找到原话**,补上 **U13–U19** | 12:00–12:25 | 高 |
| 3 | **技能 `dsh-feature-first`**(谁定什么 / 9 类白名单 / 只上抛 3 类)+ **§3.6 拆包上抛** | 11:16–11:35 / 14:40 诊断后 | 高 |
| 4 | **「提问闸门」设计**(`PreToolUse` + matcher `^AskUserQuestion$` + `type:prompt`)——今日实测**该条目仍在活动配置里** | 11:54–12:10 | 高 |
| 5 | **边界判据定稿**:「只问**超过现有判断方法边界**的问题」→ 落进**用户级 `MEMORY.md` / 工作区 `MEMORY.md` / `dsh-feature-first §3 头`三处**(md5 `24bbff24…`) | 11:58–12:10 | 高 |
| 6 | **整体评估报告**:必看规则文档分层 A/B/C/D + 并发**不支持自动不冲突** + 自动决策**不能保证**(量化 20 次提问:75% 该问 / 15% 不该问 / 10% 重复问) | 15:00–15:20 | 高 |
| 7 | **A14「删除前三问」**(用户原话:「这也是决策方法——删除东西前要先看看」) | 17:31–17:55 | 中高 |
| 8 | **`SOUL.md` 固定姿势第 5 条「一口气做完,不中途汇报」** + **40+ 回合实测基线(每回合 0–72 次调用、无固定上限)+ 三种已实证错误停法** | 22:26–23:05 | 高(现 SOUL 文本含该基线) |
### 3.2 它的关键结论(现在还在被引用)
- **主对话没有硬回合上限**(`maxTurns` 只作用于子代理)⇒「做一部分就停」是**行为问题**,不是机制限制。
- **工作区 `MEMORY.md` 是唯一「每会话必注入」的通道**(前 200 行自动加载)⇒ 体积必须受控(当时 11.5 KB ≈ 82% 上限,已报警)。
- **技能是「按需触发」,不能算送达** ⇒ 凡「动作前必须生效」的规则必须写进 `CODEBUDDY.md`(今天代码库里这条已成文)。
### 3.3 ⚠️ 它当时查错的一件事(今天是新证据)
它 15:19–15:45 得出的「WorkBuddy 项目指令文件 = `CODEBUDDY.md`、层级如何、改完需重启」**结论正确**;
但它 11:54 把「提问闸门」写进的是 **`E:\ProgramData\.workbuddy\settings.json`** —— 这个**才是活动配置**(`CODEBUDDY_CONFIG_DIR=E:\ProgramData\.workbuddy`)。
而 **2026-09-13 上午两个会话去「修 hooks 路径」时,改的却是 `C:\Users\Administrator\.workbuddy\settings.json`(迁移遗留副本,**不是**活动配置)⇒ 两次都白改**。详见 §4.3。
---
## 4. 它对当前状态的影响 / 本次同步时新查出的事实
### 4.1 它留的待办,现在的状态
| 它当时的待办 | 现状 | 判据 |
|---|---|---|
| ① 已有会话贴规则 | 已不再需要(规则已进 `CODEBUDDY.md` + 用户级 `MEMORY.md`,每会话自动注入) | ✅ |
| ② 消灭「重复问」(§3.6) | 已落 `dsh-feature-first §3.6` | ✅ |
| ③ 工作区 `MEMORY.md` 瘦身 | **75 行 / 11,062 B**(上限是 200 行)⇒ 行数安全 | ✅(字节仍偏大,观察项) |
| ④ 重启后走 `/hooks` 审核验证 hook | **桌面版没有 `/hooks` 面板**(用户 09-12 17:45 实测)⇒ 改走「宿主日志取证」 | 🔄 **见 §4.2** |
| ⑤ `docs-sync-check.sh` 排除 `.doing-*` | 已做(脚本第 47/48/81/89 行都有) | ✅ |
| 档案 77 §八 遗留①(崩溃熔断可无限重来 + 无告警) | 未开档 | ⏳ |
### 4.2 ★本次同步新查出:钩子「能调用,但拦不住」(未闭环)
**证据链(全部来自宿主日志,可复跑)**:
1. 配置在 `E:\ProgramData\.workbuddy\settings.json`(`CODEBUDDY_CONFIG_DIR` 指向它)—— 其中 `Write|Edit` 与 `SessionStart` 两条命令**原本指向 D 盘旧路径**。
2. 宿主日志里能看到它**确实在用那条命令**:
`[HookExecutor] spawn … timeout=10000ms cmd=python "D:/AI技能/…/lock-guard-hook.py"`
→ 紧跟 `[HookExecutor] abnormal exit pid=… code=2`(脚本不存在)⇒ **宿主 fail-closed 拒写**(这就是今天「所有 Write/Edit 被拒」的真根因)。
3. 已把**活动配置**的两条命令改成 E 绝对路径(含解释器),**未动结构、未动提问闸门条目**;备份 `settings.json.bak-20260913-lockpathfix-0725`;改后 **D: 残留 = 0**。
4. 07:30:01 应用重启后,宿主日志出现**新命令**:`[HookExecutor] spawn … cmd="E:/…python.exe" "E:/…lock-guard-hook.py"`,**无 abnormal exit**。
5. **但受保护路径 + 无锁的写入仍然成功了**(`dsh-server-docs/_gate_probe_A.md`),且 `.workbuddy/lock-hook.log` **没有 `PreToolUse-deny` 行**。
6. 同一命令 + 合成载荷手工跑**能正确 deny 并写日志**(07:31:26 有日志行)⇒ 脚本逻辑本身没问题。
7. 源码里载荷契约是 `{hook_event_name, tool_name, tool_input}`(`codebuddy.js` `convertToSdkInput`)——与脚本预期一致。
⇒ **判定**:钩子进程**跑通了但是走了「放行」分支**(脚本对读不懂/不匹配的载荷是 fail-open);**要定位就得采一次真实载荷**(给脚本加一行「原样落盘 stdin」的诊断,脚本改动即时生效、无需重启)。
### 4.3 ★另一处必须记下的事故:改错配置文件(白改两次)
- 今天 06:55 与 07:11 两次「修 hooks 绝对路径」,改的都是 `C:\Users\Administrator\.workbuddy\settings.json`;
- **活动配置是 `E:\ProgramData\.workbuddy\settings.json`**(09-12 18:03 之后**再没被改过**)⇒ 两次都不生效;
- 于是「06:47 会话改完仍报旧路径」被误读成「hook 是会话启动时快照、新开会话即生效」——**真实解释是改错文件**。(顺带解释了 06:53–07:05 的临时目录联接为什么"一建就好":它把 D 盘旧路径接上了。)
---
## 5. 并行会话(**单列,勿与本会话混淆**)
| 会话 | 名称 | 今天的角色 | 现状 |
|---|---|---|---|
| `a2665dd3` | 继续参考决策方法逐条判断处理 | 逐条处理「未闭环」项 | **07:32 起持有全局执行锁(锁名 `未闭环-0732`)**,07:33 在写 `_probe_after_restart.txt`(它也在验钩子) |
| `3c12a818` | 继续检测用户回到dsh页面 | 档案 77 浏览器实测(10/10 全绿) | 已收口 |
| `48a9c14c` | 同步方案规划到会话 | 承接 `ca58e09f`(方案规划) | 07:19 建 |
> 共享日志(`.workbuddy/memory/2026-09-12.md`,3474 行)是**多会话混写**的:本包 §3 的段落归属按「时间窗 + 内容主题」对齐,标了置信度;**未标高的请勿当事实引用**。
---
## 6. 若确要它的一手原文
| 路径 | 可行性 |
|---|---|
| `conversation_search` | 本机近期会话**命中率极低**(09-12 实测 2 次 0 命中) |
| 云端 EdgeSync | 本机**没有出口**(不是网络问题,是桌面版不落盘) |
| 间接源(已做) | 共享日志 + 文档库 + 只读实测 —— **本包即此路线** |
| 唯一真解法 | 会话还在跑时**手动导出/复制**;已结束的会话本机拿不到 |