From 746e4f2afe85db9727274de10bed79288cd52d5b Mon Sep 17 00:00:00 2001 From: maogeigei Date: Tue, 6 Oct 2026 04:49:24 +0800 Subject: [PATCH] =?UTF-8?q?memory:=202026-10-06=20=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=94=B9=E5=90=8D=E3=80=8C=E6=A3=80=E6=9F=A5=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E3=80=8D=EF=BC=8B=20=E9=98=9F=E5=88=97=E6=8C=89=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E8=BF=87=E6=BB=A4=EF=BC=88=E5=90=AB=E8=A1=8C=E5=B0=BE?= =?UTF-8?q?=20CRLF=20=E5=9D=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .workbuddy/memory/2026-10-06.md | 92 +++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .workbuddy/memory/2026-10-06.md diff --git a/.workbuddy/memory/2026-10-06.md b/.workbuddy/memory/2026-10-06.md new file mode 100644 index 0000000..bbd395d --- /dev/null +++ b/.workbuddy/memory/2026-10-06.md @@ -0,0 +1,92 @@ +# 2026-10-06 工作日志(本工作区 `ai1net-dsh-server`) + +> 承接 `2026-10-05.md`。本日主线:**看板改名 + 队列按目标过滤**(用户逐字驱动)+ 撤销上轮对 `agent-product` 的误建。 + +--- + +## 三十四、看板改名「检查程序」+ 队列按目标过滤(不再历史累积) + +### 用户逐字(两条) + +1. `看板中 常驻程序 改为 目标检查,里面的队列 应该是随着目标的不是目标累积的` +2. (答我反问,**纠正我复述的"目标检查"**)`没有常驻程序的说法 ,改为 检查程序` + +⇒ ⚠️ 正名是 **「检查程序」**(⛔ 不是"目标检查")。我复述错了一次,被当场纠正。 + +### 一、改名:根因是「角色名 ↔ 运行形态」混成一个词(同族第三次) + +- **病根**:「常驻」是**运行形态**(`--supervise`),**不是角色名**。把形态当角色 ⇒ 名字里没有"它是干什么的"。 +- **同族前科(同一类错,别只记这一条)**: + - 2026-10-03:我把「上报」改成「常驻」,用户驳回逐字 + 「**怎么又把上报 改成常驻了 常驻什么,不是 协作程序常驻吗**」。 + - 本轮:用户又要求把「常驻程序」改掉 ⇒ **同一个词第三次被嫌**。 +- **判据(以后选名先过这一条)**:名字必须答"**这个位子负责什么**",⛔ 不答"它怎么跑的"。 +- **改的范围**:**只改用户可见文案**(标题/tooltip/chip/说明区/`aria-label`/peer 说明), + ⛔ **代码标识符一律不动**(`prog`/`rt.prog`/文件名)—— 改了会牵动判据与存储。 + +### 二、队列按目标过滤(这是真缺陷,非文案) + +- **病根**:`tasks.json` **只增不减** ⇒ 看板那格报的是**历史累计**,读者看不出「当前目标在跑多少」。 +- 🔴 **机制自己早就知道**:`goalctl.py:577` 的「静默陷阱」注释逐字「**判据不绑目标**」—— + 那次**只警告没修**(怕动存量数据)。⇒ 本条是**同一病根的正面修法**,⛔ 不是新发现。 +- **修法(四处,缺一不可)**: + 1. `collabd.goal_fp()` —— 目标指纹 = `sha1(title)[:6]` + (与 `goal_dir_name()` **同源** ⇒ 目标目录名尾部的 `-xxxxxx` 与指纹**逐字相同**,三处可对着读)。 + 2. `task_report()` 给新条目 `setdefault("goal_fp", goal_fp())` —— + ⛔ **只打新条目**;存量**不补**(补 = 把历史条目标成"当前目标" = **伪造归属**)。 + ⚠️ `setdefault` 只写一次 ⇒ 同一条目后续上报**不改归属**(防"跑到一半换目标 ⇒ 整条倒戈")。 + 3. `board._queue(tasks, st, cur_fp)` —— 只把 `goal_fp == cur_fp` 的算进 `total`/`by`/`open`。 + 4. 无归属存量**单列 `legacy`**(看板显示「另有历史 N 件,不计入」),⛔ 不混进当前目标。 +- 🔴🔴 **指纹必须从形参 `g` 现算**(⛔ **不许读 `INBOX/goal.json`**): + `_goal_block()` 也渲染 **peer 格**(别的**工作区**的目标)⇒ 读本区文件 ⇒ 用**本区指纹**过滤对方台账 + ⇒ **对方格队列恒为 0**(跨工作区**静默**错,界面上看不出)。 + ✅ 实测:`vibe-product` 格 `fp=5d27fe`(**对方**指纹)—— 若串区会显示本区的 `c8154d`。 +- **空指纹语义**:`cur_fp` 为空(未声明目标)⇒ **如实把全部当 `legacy`**,⛔ **不假装"队列为空"** + (那是把"没有归属信息"说成"没有活")。 +- ⚠️ **`cur_fp` 的插入位置踩了两次坑**:① 插进**字典字面量**里 ⇒ `SyntaxError: ':' expected after + dictionary key`;② 插到 `build()` 的 `warn = []` 之后 ⇒ **函数归属错**(`_goal_block()` 的 `warn` + 是**形参**、没有 `warn = []` 这行)⇒ 正解是 `_goal_block()` 内、`return {` **之前**、 + `_lb = _labor(...)` 之后。 + +### 三、验收(都跑过,非声称) + +- `selftest`:**PASS 97 / FAIL 0**(改前 95/2);`install.py --verify` **✅ 全绿**;`--manifest` 56 份/语法失败 0。 +- `_queue` **四情形单元验证**全过:当前目标命中(total 4/legacy 3)|另一目标(total 1/legacy 6)| + 空指纹(total 0/legacy 7)|无匹配(total 0/legacy 7)。 + ⚠️ 第一版**自己写错了期望值**(把 `open` 当成 "pending+running")⇒ 实测 `open = pending+running+blocked+other` + ⇒ **是测试错,不是代码错**(差点误修代码)。 +- 看板重启后 `board.json` 实测:本区 `fp=c8154d total=0 legacy=1`;`peer` 格 `fp=5d27fe`。 + ⛔ **`board.py` 是代码改动 ⇒ 必须重启看板**(只有 `board.html` 才是每请求实时读盘、不用重启)。 + +### 四、顺手修掉两处 `selftest` FAIL(都是我自己引入的) + +1. **技能里留了项目串**:`goal_fp()` docstring 写了工作区名/历史线名/`goal.json` 的 id 值 + ⇒ 判据「技能就是技能,谁用产生的文件放在他自己那里」报红 ⇒ 已**泛化**(留事实、去专名)。 +2. **`pitfalls.md` 的 P0-86 重复了两份**(3157 行与 3305 行,**逐字相同**,仅差一个尾空行) + ⇒ 删后一份;并把留下的那份从 **7.3 KB/密度 2.1** 压缩到 ~5 KB(**判据要点、变异表、教训一句不丢**)。 + ⚠️ 判据「经验不许写成流水账」的**红线是超长 + 低证据密度**(>6 KB 且 密度<4.0), + 不是"长了就删" ⇒ 压缩时**先保要点**。 + +### 五、另一个坑:`board.html` 行尾被改成 CRLF(差点提交 1856 行纯噪音) + +- 现场:`board.html` 工作副本 **CRLF**(1856 个 CR),而 repo `HEAD` 版是 **LF**,`core.autocrlf=false` + ⇒ `git diff` 整个文件重写(3544 行)。 +- ✅ 处置:**按字节归一化回 LF** 再提交(`b.replace(b'\r\n', b'\n')`)⇒ diff 从 3544 行降到 386 行(真内容)。 +- 🔴 **判据(沿用既有铁律)**:**行尾只信字节级**(`b.count(b'\r')`),⛔ 不看编辑器显示。 + ⚠️ 提交前若见"整文件重写",**先查行尾**,别当成真改动。 + +### 六、提交 + +`5dc6ced session-mechanism: 看板改名「检查程序」+ 队列按目标过滤(不再历史累积)` +(4 files:`board.html`/`board.py`/`collabd.py`/`pitfalls.md`;⛔ **未推送**) + +--- + +## 三十五、撤销上轮对 `agent-product` 的误建(详情见 `2026-10-05.md` §33,此处只记结论) + +- 用户令逐字:`删掉 让那个会话自己建立`。 +- 删了 4 项 + 1 项连带:`tmp/supervise-inbox/goal.json`/`交付物/任务图-会话协作自检.json`/ + `执行会话/目标-agent-product-3e3182/`/`collabd-state.json` 的 `roles` 主会话登记/ + 配置里的 `taskgraph` 指针(删载体要连"谁指向它"一起查,否则常驻每 10 s 刷 `Errno 2`)。 +- 备份:`ai1net-dsh-server/tmp/bak/agent-product-misbuild-20261005/`。 +- **交接姿态**:常驻**故意没重起**(用户令"让那个会话自己建立")⇒ **我不再插手该工作区**。