479 lines
58 KiB
Markdown
479 lines
58 KiB
Markdown
# 多棒自动接力编排法(规划棒 ↔ 执行棒)
|
||||
|
|
|
|||
|
|
> **归属**:技能 `dsh-workflow` · 详情档(主干 `../SKILL.md`)
|
|||
|
|
> **本档覆盖**:原技能 `dsh-auto-handoff-chain` **全文**ï¼ˆæ£æ–‡ 308 行 + frontmatter å�˜æ›´åކå�²ï¼‰
|
|||
|
|
> **provenance**:本机版(WorkBuddy 实况)
|
|||
|
|
> **��方�**:**�行未改**;内部附件链接已改写为 `dsh-auto-handoff-chain/<附件�>`(附件在本目录下)
|
|||
|
|
> ⚠� 原技能 `dsh-auto-handoff-chain` **已�并退役** ⇒ �到该�按本档读。
|
|||
|
|
> 🔴 **2026-10-01 用户å�£å¾„(最新)**:**「接ç»ä¼šè¯� æ—¶é—´ç¼©çŸ 3-4 分钟å�³å�¯ã€�** ⇒ 本档ä¸ä¸€åˆ‡ã€Œæ”¶å�£ + 5~8 分钟ã€�**一律按 3~4 分钟读**(原值作废)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
|
|||
|
|
# dsh-auto-handoff-chain — 多棒自动接力编排法
|
|||
|
|
|
|||
|
|
> **一��**:��用「一� prompt 跑完整�工作线�,而是让**�一棒��一件事**,�完**自己把下一棒排上**。
|
|||
|
|
|
|||
|
|
用户原�(2026-09-17 立项):
|
|||
|
|
> 「æ¯�次执行完毕å�Ž è‡ªåŠ¨æ ¹æ�®æ–¹æ³•å†³ç– è‡ªåŠ¨æ–°å»ºä¼šè¯�接ç»å¤„ç�†ï¼Œ**在处ç�†å¤šæ¥éª¤ä»»åŠ¡çš„æ—¶å€™é�žå¸¸å¥½**ã€�
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 0. 与其他技能 / 文档的分工
|
|||
|
|
|
|||
|
|
| � | 管什么 |
|
|||
|
|
|---|---|
|
|||
|
|
| **本技能** | **怎么把长任务排�一�自动接力的链�**(编排层) |
|
|||
|
|
| `dsh-change-workflow` | å�•æ¬¡æ”¹é€ æ€Žä¹ˆè�½åœ°ï¼ˆå…阶段) |
|
|||
|
|
| `session-mechanism` | å�•次å�–èˆ�怎么定得对(**è§„åˆ’æ£’åº”åŠ è½½**) |
|
|||
|
|
| 工作区 `会è¯�接ç»è§„范_20260916.md` | 上下文超é™�æ—¶çš„**接ç»åŒ… v2 模æ�¿ / å¼€æœºå››æ¥ / 多线并行**(本技能是其"多棒编排"的补充,**ä¸�é‡�å¤�**它已写的接ç»åŒ…å—æ®µä¸Žæˆ�本公å¼�) |
|
|||
|
|
| 工作区 `接ç»å…¥å�£_<线å��>_<日期>.md` | **æ¯�一æ�¡å·¥ä½œçº¿çš„唯一执行ä¾�æ�®**ï¼ˆæœ¬æŠ€èƒ½çš„æ ¸å¿ƒä¾�赖) |
|
|||
|
|
|
|||
|
|
### 0.6 🔴 工作区归属五律(2026-09-21 立①②③④ / 2026-09-22 åŠ â‘¤ / **2026-09-23 修⑤ 盘符大å°�写** / **2026-09-24 修⑤ 判æ�®ï¼šå®žæµ‹ `sessions.cwd` + æ£æ–œæ� ** —— 治「å�‚考别的工作区的规则 ⇒ 会è¯�è�½é”™å®¶ã€�+「å�Œä¸€å·¥ä½œåŒºè£‚æˆ�两个å�Œå��分组ã€�)
|
|||
|
|
|
|||
|
|
**背景实测**:æŸ�工作区会è¯�「å�‚考接ç»ä¼šè¯�的规则ã€�时照抄了 `aliyun-dsh-server` 的路径 ⇒ 把**å…¥å�£æ–‡ä»¶**å’Œ**接ç»ä»»åŠ¡**都è�½åˆ°äº†å¹³å�°å·¥ä½œåŒºï¼Œè€Œå®ƒé‚£æ�¡çº¿è‡ªå·±çš„家是 `dsh-plugin-forge`。å�Œä¸€ä»½å…¥å�£å‡ºçް䏤处ã€�md5 相å�Œ = **第二真相æº�**;平å�°å·¥ä½œåŒºçš„ `state.py` å› æ¤æŠŠ**别线**报æˆ�了自己的线(实测报"2 æ�¡å·¥ä½œçº¿",其ä¸ä¸€æ�¡ä¸�是它的)。
|
|||
|
|
|
|||
|
|
| 律 | 内容 | �例(都真�生过) |
|
|||
|
|
|---|---|---|
|
|||
|
|
| â‘ **å…¥å�£å�ªå…�许一份** | ä½�ç½® = **é‚£æ�¡çº¿è‡ªå·±çš„å·¥ä½œåŒºæ ¹**;头部必须写 `> 🔴 **工作区**:<该工作区ç»�对路径>` | 两处å�Œæ”¹ï¼ˆforge + aliyun å�„一份,md5 相å�Œï¼‰ |
|
|||
|
|
| â‘¡ **`cwds` = 本工作区** | automation çš„ `cwds` å�ªè®¤**é‚£æ�¡çº¿è‡ªå·±çš„工作区**;⛔ ä¸�å› "脚本在别的工作区"就把 `cwds` 设过去 | 照抄"第 0 æ¥è·‘ `state.py`" ⇒ `cwds` 写æˆ�脚本所在的工作区 |
|
|||
|
|
| â‘¢ **å�‚考规则 = åŠ è½½æœ¬æŠ€èƒ½** | è¦�副本就å¤�制**规则文档**到本工作区 `docs/会è¯�与接ç»/`;⛔ **å…¥å�£æ–‡ä»¶ä¸�å¤�制** | 直接读别的工作区的 `接ç»å…¥å�£_*.md`,照抄其ä¸è·¯å¾„ |
|
|||
|
|
| â‘£ **`cwds` 写对 ≠会è¯�è�½å¯¹**(2026-09-21 åŠ ï¼‰ | `cwds` å�ªæ˜¯**登记项**,管ä¸�到会è¯�从哪个目录被拉起 ⇒ prompt 里**é¢�外**写æ»ã€Œå¼€å·¥å‰�å…ˆ `cd` 到 `<工作区ç»�对路径>`ã€�ï¼‹ã€Œæ”¶å°¾æ ¡éªŒäº§ç‰©è�½ç‚¹ã€� | **乙类(下)**:6 棒 `cwds` 全写对,会è¯�ä»�å…¨è�½åœ¨ `E:\ProgramData\WorkBuddy\<时戳>` |
|
|||
|
|
| ⑤ **`cwds` 路径写法必须归一化**(2026-09-22 åŠ ï¼›**09-23 修盘符方å�‘**ï¼›**09-24 修判æ�®**) | â›” **å�ªå†™ã€Œä¸Žæ‰‹åŠ¨å¼€ä¼šè¯�çš„ cwd é€�å—å�Œå½¢ã€�**:**当å‰�æ£è§£ = `E:/ProgramData/AIProject/ai1net-dsh-server`ï¼ˆæ£æ–œæ� )**。**判æ�® = 实测 `sessions.cwd`**(⛔ ä¸�å‡è®°å¿†å®šã€Œç»�对写法ã€�—— 09-22 / 09-23 å�„翻烧饼一次);⚠ï¸� 宿主去é‡�é”® = `path.trim().toLowerCase()` ⇒ **å�ªå°�写ã€�ä¸�统一斜æ� **:斜æ� é£Žæ ¼ä¸�å�Œå�³è£‚å�Œå��分组(09-24 代ç �级实è¯�);⚠ï¸� 改路径å—é�¢å¿…é¡»**枚举全部å¤�制é�¢**ï¼ˆæŠ€èƒ½æ£æ–‡ + 本技能 `description` + `MEMORY.md` + å…¥å�£å£°æ˜Žè¡Œ + automation prompt) | **写法一å�˜å°±å½“两个 cwd** ⇒ UI 里**å�Œä¸€å·¥ä½œåŒºè£‚æˆ�两个å�Œå��会è¯�分组**(实测:09-22 = æ–œæ� æ–¹å�‘,aliyun 151 vs 6ã€�capability 5 vs 4ï¼›09-23 = 盘符大å°�写,aliyun 158 vs 2) |
|
|||
|
|
|
|||
|
|
**律⑤ 的实测事故·一(2026-09-22 排查,「å�ˆäº§ç”Ÿäº†ä¸¤ä¸ªå�Œå��的会è¯�分组ã€�|污染维度 = æ–œæ� æ–¹å�‘)**
|
|||
|
|
|
|||
|
|
| 环节 | 事实 |
|
|||
|
|
|---|---|
|
|||
|
|
| 现象 | UI 里�一个工作区出现**两个��分组**(用户原�:「�产生了 两个��的会�分组�) |
|
|||
|
|
| 宿主行为 | 会è¯� `cwd` **é€�嗿Є** `automation.cwds`,**ä¸�å�šä»»ä½•规范化**(实测 10/10 é€�å—一致) |
|
|||
|
|
| 污染æº� | **10 æ�¡ automation çš„ `cwds` 写æˆ�æ£æ–œæ� ** `E:/ProgramData/AI技能/…`,集ä¸åœ¨ 09-21 06:48 → 09-23 09:52 çš„æŽ¥ç»æ£’ |
|
|||
|
|
| å½±å“�é�¢ | `aliyun-dsh-server`:å��æ–œæ� 151 会è¯� vs æ£æ–œæ� 6 会è¯�|`dsh-ai1net-capability`:5 vs 4 |
|
|||
|
|
| ä¼ æŸ“è·¯å¾„ | å‰�任棒次在**æ—¥å¿—é‡ŒæŠŠæ£æ–œæ� 当规范记下**(`2026-09-23.md` çš„ `cwds = E:/…`)⇒ å�Žæ£’照抄 ⇒ ä¸€è·¯æ£æ–œæ� |
|
|||
|
|
|
|||
|
|
**判æ�®**:⛔ å‡è®°å¿†å®šã€Œç»�对写法ã€�必错(09-22 定「大写ã€�/ 09-23 改「å°�写ã€�,å�„裂一次)⇒ **一律å�–实测 `sessions.cwd` 里æ�¡æ•°æœ€å¤šçš„é‚£æ�¡å—é�¢é€�å—å¤�制**。会è¯�å·²ç»�裂开 ⇒ å�ªèƒ½**å�‘现å�Žæ¸…ç�†**(旧组ä¸�会自动消失,且会自我强化);⛔ **新建 automation 一律写「与手动开会è¯�çš„ cwd é€�å—å�Œå½¢ã€�**。
|
|||
|
|
**自查一å�¥**:我这个 `cwds` 与**手动新建会è¯�实际è�½åº“çš„ cwd** 是å�¦**é€�å—å�Œå½¢**(斜æ� æ–¹å�‘也必须å�Œå½¢ï¼‰ï¼Ÿï¼ˆå½“å‰�æ£è§£ = `E:/ProgramData/AIProject/ai1net-dsh-server`)
|
|||
|
|
🔎 **ä¸�确定就现查å˜é‡�**(比记忆å�¯é� ):在 `CODEBUDDY_CONFIG_DIR` 下的 `workbuddy.db` 里跑 `SELECT cwd, COUNT(*) FROM sessions WHERE cwd LIKE '%<工作区å��>%' GROUP BY cwd ORDER BY 2 DESC` ⇒ å�–**æ�¡æ•°æœ€å¤š**的那一æ�¡**å—é�¢**é€�å—å¤�制。
|
|||
|
|
|
|||
|
|
**律⑤ 的实测事故·二(2026-09-23 排查,用户原�「为什么�出现了多个 aliyun-dsh-server 会�分组�|污染维度 = 盘符大�写)**
|
|||
|
|
|
|||
|
|
| 环节 | 事实 |
|
|||
|
|
|---|---|
|
|||
|
|
| 现象 | �一工作区**�次**裂�两个��分组(�事故·一�隔一天) |
|
|||
|
|
| 污染æº� | **3 æ�¡æŽ¥ç»æ£’(IM 线第 12 / 13 / 15 棒)的 `cwds` 写æˆ�大写盘符** `E:\ProgramData\AI技能\aliyun-dsh-server`;三æ�¡**全部建在 09-23 18:55 automation 库被 app é‡�建之å�Ž**(记录全丢 ⇒ é‡�登时按技能里残留的**错误å—é�¢**输入)。⚠ï¸� **21:5x å¤�æ ¸æ›´æ£ï¼šåŽŸè®°ã€Œç¬¬ 12 / 13 / 14 棒ã€�有误** —— 第 14 棒(`2d059ec8` · 20:15)实为å°�写ã€�è�½ `e:\`ï¼›**真凶是第 15 棒(`4e08cc77` · 20:45),当时æ¼�改** ⇒ 20:45 å�ˆè£‚ 1 æ�¡ |
|
|||
|
|
| 实测分布(09-23 21:5x å¤�æ ¸ï¼‰ | `sessions.cwd`:å°�写 `e:\…` = **160 æ�¡** | 大写 `E:\…` = **5 æ�¡**(3 æ�¡ automation 拉起 19:10 / 19:49 / 20:45 + **2 æ�¡ IDE 手动** 20:54 / 21:47)| 旧路径 `d:\AI技能\aliyun-dsh-server` = **11 æ�¡**(09-08~09-12 è¿�ç§»å‰�,末次活动 09-13,已冻结)| `workspaces.path` = å°�写(**53/53 å…¨å°�写**) |
|
|||
|
|
| 🔴 æ•™è®ä¸€ï¼šå‡è®°å¿†è§„定"ç»�对写法"å¿…é”™ | 律⑤ 原文「**å�ªå†™å¤§å†™ç›˜ç¬¦** ï¼� **å°�写盘符必错**ã€�**æ–¹å�‘å��了** —— å˜é‡�与工作区登记都是å°�写。⇒ æ£è§£**ä¸�是**"与å˜é‡�é€�å—对é½�"(å˜é‡�被污染æˆ� 3 个值之å�Žï¼Œè¿™å�¥è¯�æ— æ³•æ‰§è¡Œï¼‰ï¼Œè€Œæ˜¯ **è·Ÿéš�宿主自己的登记值 `workspaces.path`** ⇒ 判æ�®ç”±"我们的约定"å�˜æˆ�"客观事实",⛔ **ä¸�å†�翻烧饼** |
|
|||
|
|
| 🔴 æ•™è®äºŒï¼šæ”¹è§„则必须枚举**全部å¤�制é�¢**并对账 | å�Œä¸€è·¯å¾„å—é�¢å�Œæ—¶å˜åœ¨äºŽ **æŠ€èƒ½æ£æ–‡ + 技能 frontmatter `description` + 用户级 `MEMORY.md` + 项目 `MEMORY.md` + 4 个入å�£æ–‡ä»¶çš„「工作区ã€�声明行 + automation çš„ prompt æ£æ–‡ + `USER.md` + 历å�²æ—¥å¿—/交接å�•**。09-23 那次å�ªæ”¹äº† 3 处,**æ¼�掉 `description`(æ›�光度最高 —— æ¯�次新会è¯�的技能清å�•都会读到它)** ⇒ 当天 19:10 起照旧裂 3 æ�¡ã€‚⇒ **说"å·²å�Œæ¥æ”¹æ£"必须附一æ�¡å¯¹è´¦æŸ¥è¯¢**,å�¦åˆ™ä¿®å¤�è´¨é‡�æ— æ³•è‡ªè¯� |
|
|||
|
|
| 🔴 æ•™è®ä¸‰ï¼šå·²è£‚的组会**自我强化** | 手动新建会è¯�**继承所在分组的å—é�¢** ⇒ `E:\` 组一旦å˜åœ¨å°±è‡ªå·±é•¿ï¼ˆ21:5x 实测该组 5 æ�¡ä¸ 2 æ�¡ä¸ºæ‰‹åŠ¨ä¼šè¯�)。⇒ å�ªå µæº�头ä¸�够,**必须清掉已裂组**,å�¦åˆ™æ®‹ç•™ç»„æŒ�ç»å¤�制自己 |
|
|||
|
|
| å·²æ¢æ�Ÿï¼ˆ09-23 21:5x 补全) | ①第 14 棒(20:15)å°�写 ✅ â‘¡ **第 12 / 13 / 15 棒**(原为大写)一并改回å°�写 `e:\…`,三æ�¡å·²ç¡®è®¤è�½åº“ ✅ â‘¢ 技能 `description` æ–¹å�‘已补改 ✅ â‘£ 两处 `MEMORY.md` 判æ�®å·²æ”¹ä¸ºã€ŒçœŸæº� = `workspaces.path`ã€�å¹¶**冻结** ✅ |
|
|||
|
|
| 待处置 | ①已裂的 **5 æ�¡å¤§å†™ + 11 æ�¡ `d:\`** 会è¯�å—é�¢å½’å¹¶ ⇒ 需**å�œ app + 改活库**(WAL 三件套)⇒ 属红线门ç¦�,⛔ 未擅自动 â‘¡ 4 个入å�£æ–‡ä»¶ç¬¬ 3 行「工作区ã€�声明行的**大写å—é�¢**(登记时的诱导æº�)统一为å°�写 â‘¢ `USER.md` 里工作区ä»�写 `D:\AI技能\aliyun-dsh-server`(过时,`d:\` 组æ�¥æº�) |
|
|||
|
|
|
|||
|
|
**律④ 的实测事故(2026-09-21,6 个碳线棒次 100% 命ä¸ï¼‰**
|
|||
|
|
|
|||
|
|
|cwds(登记)| 会�实际 `cwd`| 对得上|
|
|||
|
|
|---|---|---|
|
|||
|
|
| `E:\ProgramData\AI技能\dsh-ai1net-capability` | `E:\ProgramData\WorkBuddy\2026-09-21-20-20-06` | � |
|
|||
|
|
| å�Œä¸Šï¼ˆè¿žç» 5 棒) | `…-20-22-44` / `…-20-25-47` / `…-20-30-24` / `…-20-33-35` | â�Œ |
|
|||
|
|
| �上(执行棒⑤) | `…-22-11-36` | � |
|
|||
|
|
|
|||
|
|
**�害**:入� / 记忆 / 日志 / md5 全写进错目录,主工作区看起�「什么都没�生�;**�跑一棒多一个**时间戳目录(�是"两份")。
|
|||
|
|
**判æ�®**:会è¯�记录æ¯�æ�¡éƒ½æœ‰ `cwd` å—æ®µ —— 开机第一件事比对它;ä¸�ç‰ â‡’ **å�œæ‰‹æŠ¥å‘Š**,⛔ ä¸�许就地开工。
|
|||
|
|
**对ç–**:登记方 prompt åŠ è¡Œã€Œâ‘ å…ˆ `cd` 到 `<工作区ç»�对路径>`ï¼Œæ ¡éªŒ cwd 相ç‰ã€�ï¼›æœ¬æ£’æ”¶å°¾æ ¡éªŒ**产物è�½ç‚¹**是å�¦åœ¨è¯¥è·¯å¾„下,越界则报告并æ�¬å›žã€‚
|
|||
|
|
|
|||
|
|
âš ï¸� **别与本类混淆 —— å�Œå��é‡�å¤�çš„å…ç±»æˆ�å› ï¼ˆæŽ’æŸ¥æŒ‰æ¤é¡ºåº�)**:
|
|||
|
|
| ç±» | æˆ�å› | 特å¾� | 处置 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| **甲·盘符è¿�移留旧份** | 项目目录å�� = 盘符+路径连å—符化,路径一å�˜å°±å¤šä¸€ä»½ | 目录å��ä¸�å�Œï¼ˆ`d-AI技能-…` vs `e-ProgramData-AI技能-…`) | å�‘现å�Žæ¸…ç�†ï¼Œæ—§ä»½ä¸�自动消失 |
|
|||
|
|
| **乙·cwd 写法å�˜ä½“**(律⑤) | â‘ **æ–œæ� æ–¹å�‘**(`e:\…` vs `E:/…`)② **盘符大å°�写**(`e:\…` vs `E:\…`)—— 两个维度都**å�„自实测裂过**(09-22 / 09-23) | 目录å��**看ç�€åƒ�å�Œä¸€ä¸ª**,实为两个 cwd | 新建一律「**å��æ–œæ� + å°�写盘符**ã€�;旧份å�‘现å�Žæ¸…ç�† |
|
|||
|
|
| **丙·会è¯�æ ‡é¢˜é‡�å��** | ä¸�å�Œçº¿èµ·äº†å�Œå�� automation | æ ‡é¢˜å®Œå…¨ç›¸å�Œã€�cwd 也相å�Œ | æ”¹æ ‡é¢˜åŠ çº¿å��/åº�å�·ï¼ˆæœ¬é¡¹ç›®å·²æ™®é��带线å��,风险低) |
|
|||
|
|
| **ä¸�·cwd è�½åˆ°æ—¶æˆ³ç›®å½•**(律④) | prompt 没 `cd`,宿主按默认目录拉起 | ä¸€å † `E:\ProgramData\WorkBuddy\<时戳>` | è§�律④ |
|
|||
|
|
| **戊·å�Œå��镜åƒ�目录**(2026-09-27 åŠ ï¼‰ | **ç£�盘上真的有两个目录**,路径段里å�ªå·®ä¸€ä¸ªè¯�(`…\ProgramData\…` vs `…\ProgramDSH\…`),且镜åƒ�目录里**å�¦æœ‰ä¸€ä»½å�Œå��å…¥å�£æ–‡ä»¶**ã€�还有 `bundles\`ï¼�`docs\` 骨架 | 目录å��**看ç�€åƒ�å�Œä¸€ä¸ª**ã€�å�ªå·®ä¸€æ®µï¼›ä¸¤ä¾§éƒ½å�¯èƒ½è¢«å½“「本工作区ã€�;⛔ ä¸�是写法å�˜ä½“(乙类)ã€�也**ä¸�是**空壳(光看"目录里有东西"判ä¸�出æ�¥ï¼‰ | 定**唯一æ�ƒå¨�**(判æ�® = 实测 `sessions.cwd` æ�¡æ•°æœ€å¤šé‚£æ�¡ + app 当å‰�工作区 + `.workbuddy\memory\` å�ªé•¿åœ¨å“ªä¾§ï¼‰â†’ 镜åƒ�ä¾§å…¥å�£æ”¹**跳转 stub** → 改全部 automation çš„ `cwds` 与 `--ws` → å·²è�½é”™çš„会è¯�æ�¬å›žæ�ƒå¨�分组。**å�ªç•™ä¸€å¤„** |
|
|||
|
|
| **己·入å�£å£°æ˜Žçš„工作区与ç£�盘ä¸�符**(2026-09-27 åŠ ï¼‰ | æ�¬å®¶æˆ–改å��å�Ž**å�ªæ�¬äº†ç›®å½•ã€�没回填入å�£å¤´éƒ¨**:入å�£ç¬¬ 3ï¼�10 行ä»�写ç�€æ—§è·¯å¾„ —— 实测 `ai1net-decision-laya` 线入å�£å†™ã€Œå·¥ä½œåŒº = `E:/ProgramData/AIProject/session-mechanism-laya`ã€�,而**è¯¥ç›®å½•åœ¨ä¸¤ä¸ªæ ¹ä¸‹éƒ½ä¸�å˜åœ¨**(真实目录å��是 `ai1net-decision-laya`,入å�£å†… 33 处引用全是旧å��) | 与本表甲ï¼�戊**æ£ç›¸å��**:那两类是"多了一份",这一类是"**指å�‘çš„é‚£ä»½æ ¹æœ¬ä¸�在**"。照抄登记 ⇒ 宿主**å‡ç©ºæ–°å»ºä¸€ä¸ªå¹½ç�µåˆ†ç»„**(`projects\e-ProgramData-AIProject-session-mechanism-laya`),比å�Œå��镜åƒ�æ›´éš¾å�‘现(镜åƒ�至少目录å˜åœ¨ã€�还能é� `ls` æ’žè§�) | 判æ�® = 把入å�£é‡Œæ¯�处「工作区 = …ã€�é€�æ�¡ `Test-Path`ï¼›**任一ä¸�å˜åœ¨ ⇒ 以实测 `sessions.cwd` 为准回填入å�£å¤´éƒ¨**,⛔ ç»�ä¸�按入å�£é‡Œçš„路径去**新建**目录(那会把幽ç�µå��实) |
|
|||
|
|
|
|||
|
|
âš ï¸� **「å�œç»´æŠ¤ã€�≠「å�œç”¨ã€�**(2026-09-27 实测,比上表任何一类都容易æ¼�):定完唯一æ�ƒå¨�å�Žï¼Œå�ªå†™ä¸€å�¥ã€Œæ—§å‰¯æœ¬å�œç»´æŠ¤ã€�**ä¸�ç®—æ”¶å�£** —— 旧侧那份入å�£ä»�是**å®Œæ•´æ£æ–‡**,两侧还会å�„自继ç»è¢«å†™ã€‚实测当晚:`ai1net-dsh-anywhere` 两侧入å�£å·²åˆ†å�‰åˆ° **24903 B vs 23816 B(差 1087 B / è�½å�Ž 8.5 å°�时)**ã€�`ai1net-dsh-desktop` å·® **121 B / 20 分钟**,而两æ�¡çº¿**都早已æ‹�æ�¿"å�ªç”¨ ProgramData 那份"**。⇒ æ”¶å�£åŠ¨ä½œå¿…é¡»è�½åˆ°ã€Œ**æ—§ä¾§å…¥å�£å°±åœ°æ”¹æˆ�跳转 stub**ã€�(明示"è¿™ä¸�是入å�£"+æ�ƒå¨�路径+å�œç”¨åŽŸå› ï¼‰ï¼Œå�¦åˆ™ä¸‹ä¸€æ£’读旧侧就会照ç�€è¿‡æœŸå†…容é‡�å�šã€‚
|
|||
|
|
|
|||
|
|
**律①ï¼�â‘¡ 的实测事故·三(2026-09-27 排查,用户原è¯�「å�ˆå¼€å§‹å‡ºçŽ°æŽ¥ç»ä¼šè¯� 创建é‡�å¤�çš„ 会è¯�分组了 ai1net_uiã€�|污染维度 = å�Œå��镜åƒ�目录)**
|
|||
|
|
|
|||
|
|
| 环节 | 事实 |
|
|||
|
|
|---|---|
|
|||
|
|
| 现象 | `ai1net_ui` 在 UI 里裂�两个��分组:`projects\e-ProgramData-AIProject-ai1net_ui`(3 会�)与 `projects\e-ProgramDSH-AIProject-ai1net_ui`(1 会�,建于 23:45:19) |
|
|||
|
|
| 污染æº� | 第 1 棒登记第 2 棒时把 `cwds` 写æˆ�镜åƒ�路径 `E:\ProgramDSH\AIProject\ai1net_ui`ã€‚å®ƒè¿™ä¹ˆåˆ¤æ˜¯å› ä¸ºï¼šå…¥å�£ `æ�¥æº�会è¯�` é‚£æ �写ç�€ã€Œå·¥ä½œåŒº `E:\ProgramDSH\AIProject\ai1net_ui`ã€�ã€�æ£æ–‡å‡ å��处**资产**路径都在 ProgramDSH 下ã€�上一棒给它的抢é”� `--ws` 也是镜åƒ�路径 |
|
|||
|
|
| �蔽�果一:**��互斥** | dsh �按 `--ws` 分命�空间 ⇒ �� `.locks\e-programdata-aiproject-ai1net_ui-2e350e23` vs 镜� `.locks\e-programdsh-aiproject-ai1net_ui-97d0d29d`,**两处�一把��互�排斥**(第 2 棒��期间从��侧查 `status` 报「空闲 ✅�)。本轮两棒没真并�,纯属�气 —— 这�比 UI 观感�险得多 |
|
|||
|
|
| �蔽�果二:**入�分�** | 第 2 棒�写了镜�那份 ⇒ 45052 B vs 40720 B,md5 `c3f0afa2…` ≠`07ad6380…`;�走一棒就会读到过期的「本轮动作� |
|
|||
|
|
| 处置(已è�½åœ°ï¼‰ | ①新版入å�£å�Œæ¥åˆ°æ�ƒå¨�ä¾§ â‘¡ æ�ƒå¨�å…¥å�£å¤´éƒ¨ç«‹ã€Œæœ¬çº¿å·¥ä½œåŒºï¼ˆå”¯ä¸€æ�ƒå¨�)ã€�å››æ�¡çº¦æ�Ÿè¡¨ â‘¢ 镜åƒ�ä¾§å…¥å�£æ”¹**跳转 stub** â‘£ 第 3 棒 automation çš„ `cwds` + prompt å…¥å�£è·¯å¾„ + `--ws` 全改æ�ƒå¨�侧(排期ä¸�动)⑤ 会è¯� `cc1c1205` æ�¬å›žæ�ƒå¨�分组(先ç‰å®ƒ `status=completed`,å†� SQL å�•行 `UPDATE sessions SET cwd=…` + jsonl ç§»ä½� + åˆ ç©ºç›®å½•ï¼›`integrity_check=ok`ï¼›`group by cwd` → 1 行 3 æ�¡ï¼‰ |
|
|||
|
|
| 🔴 æ•™è®ä¸€ | **判「本工作区ã€�â›” ç»�ä¸�能读入å�£é‡Œçš„「æ�¥æº�会è¯�ã€�æ �和资产路径** —— 那些是**历å�²**与**资产ä½�ç½®**,ä¸�是工作区。唯一判æ�® = ①实测 `sessions.cwd` æ�¡æ•°æœ€å¤šé‚£æ�¡å—é�¢ â‘¡ app 当å‰�打开的工作区 â‘¢ `.workbuddy\memory\` å�ªé•¿åœ¨å“ªä¸€ä¾§ |
|
|||
|
|
| 🔴 æ•™è®äºŒ | **镜åƒ�目录ä¸�是空壳**(内有 `bundles\`ï¼�`docs\` 骨架,看ç�€æž�åƒ�æ£ç»�工作区)⇒ å…‰å‡"目录里有东西"定ä¸�了归属;**å…¥å�£é‡Œå‡ºçŽ°ä¸¤ä¸ªç»�å¯¹æ ¹è·¯å¾„æ—¶ï¼Œå…ˆé—®ã€Œç£�ç›˜ä¸Šåˆ°åº•æœ‰å‡ ä¸ªå�Œå��目录ã€�** |
|
|||
|
|
| 自查一å�¥ | 我这æ�¡çº¿çš„工作区路径,**在ç£�盘上是å�¦å�ªæœ‰ä¸€ä¸ªç›®å½•**?(å�Œå��ä¸�å�Œæ ¹ = 戊类,必须先定æ�ƒå¨�ã€�å†�开工;若已裂 ⇒ 清掉错误分组,旧组ä¸�会自愈) |
|
|||
|
|
|
|||
|
|
**跨工作区å�–脚本的æ£ç¡®å§¿åŠ¿**(ä¸�è¿�å��律②)—— 本工作区没有脚本时,用**ç»�对路径**è°ƒã€�并指定 `--ws`:
|
|||
|
|
|
|||
|
|
python "E:/ProgramData/AIProject/ai1net-dsh-server/state.py" --ws "E:/ProgramData/AIProject/<自己的工作区>"
|
|||
|
|
|
|||
|
|
â›” 把 `state.py` å¤�制到æ¯�个工作区 = 多一份è¦�维护的代ç �,`--ws` 是æ£è§£ï¼ˆ2026-09-21 åŠ ï¼›`state.py` å�Œæ—¶æ–°å¢ž**å½’å±žæ ¡éªŒ**:头部声明的 `工作区` ≠本工作区 ⇒ æ ‡ã€Œå¤–æ�¥çº¿ã€�并排除出 §2 / å�£ä»¤ï¼‰ã€‚
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 实测事故·四:全库体检(2026-09-27 23:5x · 用户原�「检查 workbuddy 下所有其他会� 看是�也会出现相�的问题�)
|
|||
|
|
|
|||
|
|
**范围**:`projects\` 全部 7 个分组 / `sessions` 全部 11 � / `automations` 全部 4 � / `.locks` 全部 12 个键 / �工作区入�文件。�跑脚本 = `dsh-auto-handoff-chain/audit-mirror.py`(�读;读 `workbuddy.db` 走 `file:…?mode=ro`)。
|
|||
|
|
|
|||
|
|
**结论**:**当å‰�å�ªæœ‰ ai1net_ui 裂过ã€�且已修**(分组↔cwd **7:7 一一对应,å¤å„¿ 0ã€�缺组 0**,去é‡�键冲çª� 0)。但**三æ�¡çº¿å…·å¤‡å�Œæ¬¾ç»“æž„æ�¡ä»¶**:
|
|||
|
|
|
|||
|
|
| 工作区 | ��镜� | 入��份 | 入�是�分� | �命�空间 | automation `cwds` | 判定 |
|
|||
|
|
|---|---|---|---|---|---|---|
|
|||
|
|
| `ai1net_ui` | 有 | 有 → **已 stub** | 已修(1883 B stub) | 仅旧侧残留键 | 3 �全=��侧 | 🟢 已收� |
|
|||
|
|
| `ai1net-dsh-desktop` | 有 | 有 | 🔴 **分å�‰ 19039 B(23:35) vs 18918 B(23:15)** | 🔴 **两套键**(旧 15:00 `…-3fe5ab6f` / æ–° 23:36 `…-547001a0`) | æ— | 🔴 P1 |
|
|||
|
|
| `ai1net-dsh-anywhere` | 有 | 有 | 🔴 **分å�‰ 24903 B(23:37) vs 23816 B(15:00),差 1087 B / 8.5 h** | 🔴 **两套键**(旧 15:00 `…-5ee837d7` / æ–° 23:38 `…-6bce3721`) | æ— | 🔴 P1 |
|
|||
|
|
| `ai1net-decision-laya` | 有 | 有(md5 一致,在å�Œæ¥ï¼‰ | å�¦ | 自建 `scripts/lock.py`(ä¸�涉 dsh é”�) | æ— | 🟠P1(己类) |
|
|||
|
|
| `aigc-idea-impression` | **æ— ** | æ— | — | — | 1 æ�¡=本工作区 ✓ | 🟢 |
|
|||
|
|
|
|||
|
|
**三个新事实(写进判�)**:
|
|||
|
|
|
|||
|
|
1. **`E:\ProgramDSH\AIProject\` 是 `E:\ProgramData\AIProject\` çš„æ•´æ ‘é•œåƒ�**(4 个工作区,连 `.workbuddy\memory\automations\` çš„ 16~24 个棒记录副本都被å¤�制过去)⇒ 这是甲/戊/己三类的**å…±å�Œæ¸©åºŠ**:å�ªè¦�这棵镜åƒ�æ ‘è¿˜åœ¨ï¼Œä»»ä½•ä¸€æ�¡çº¿æŠŠ `cwds`ï¼�`--ws` 写到 ProgramDSH 侧就立刻å¤�现。**â›” 看å�•个目录判ä¸�出æ�¥ï¼Œå¿…é¡»æ•´æ ¹æ¯”å¯¹**。
|
|||
|
|
- 🔴 **2026-09-28 现状**:该镜åƒ�æ ‘**å·²æ•´æ ‘åˆ é™¤** ⇒ 本æ�¡**æš‚ä¸�适用**,ä¿�留作**å¤�现判æ�®**。⚠ï¸� 但å�Œä¸€ä»½ `cwds` 裂ç¼�**æ�¢äº†ä¸ªå½¢å¼�ä»�会å�‘生**:工作区 09-28 ç”± `aliyun-dsh-server` 改å��为 `ai1net-dsh-server` ⇒ 凡沿旧å—é�¢ç™»è®°çš„ `cwds` 都会è�½åˆ°ï¼ˆå·²ä¸�å˜åœ¨çš„)旧目录。
|
|||
|
|
2. **`dsh-anywhere` çš„æ�ƒå¨�ä¾§å…¥å�£å¤´éƒ¨ç¬¬ 10 行ä»�写「工作区 = `E:\ProgramDSH\AIProject\ai1net-dsh-anywhere`ã€�,而å�Œä¸€æ–‡ä»¶ §24 早已记「唯一æ�ƒå¨� = 本目录ã€�** —— å�Œä¸€ä»½æ–‡ä»¶å†…部自相矛盾。⇒ 戊类的"污染æº�"(第 1 棒æ�®å…¥å�£å¤´éƒ¨åˆ¤é”™å·¥ä½œåŒºï¼‰**åœ¨åˆ«çš„çº¿ä¸ŠåŽŸæ ·å¾…è§¦å�‘**。
|
|||
|
|
3. **「登记下一棒写错 `cwds`ã€�è¿™æ�¡è·¯å¾„全库å�ªå�‘生在本线**:é€�æ�¡è§£æž� `automation_update` å…¥å�‚,6 æ�¡å…¶ä»–会è¯�çš„ `mode=create/update` 计数**全为 0**(其余为 `list`ï¼�`view`)⇒ æ²¡ç™»è®°è¿‡æŽ¥ç»æ£’的线ä¸�会踩。**è¿™æ‰�是å�¯å¤�用的判æ�®ï¼šå…ˆçœ‹ `automations` 表里有没有指å�‘镜åƒ�ä¾§çš„ `cwds`,而ä¸�是先看 UI。**
|
|||
|
|
|
|||
|
|
**一æ�¡è¢«è¯�伪的å�‡è®¾**(çœ�下次排查):`~/.workbuddy` 与 `E:\ProgramData\.workbuddy` **ä¸�是** junction 关系,且å�ªæœ‰**一个** `workbuddy.db`(`C:\Users\Administrator\.workbuddy\` 下**æ— ** db)⇒ ä¸�å˜åœ¨"å�Œåº“"问题,分组å�ªæœ‰ä¸€å¥—。
|
|||
|
|
|
|||
|
|
🔎 **收尾自检一å�¥**:本棒 `cwds` 是å�¦ = 我这æ�¡çº¿è‡ªå·±çš„工作区?入å�£æ–‡ä»¶æ˜¯å�¦å�ªåœ¨æˆ‘这个工作区å˜åœ¨ä¸€ä»½ï¼Ÿ**本次写入的产物是å�¦éƒ½åœ¨è¯¥å·¥ä½œåŒºè·¯å¾„下(律④)?**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 0.7 🔴🔴 活库(`workbuddy.db`)改动é“�律(2026-09-23 è¡€çš„æ•™è® â€”â€” â›” è¿�å��必炸库)
|
|||
|
|
|
|||
|
|
> 🔴 **çº å��(2026-09-23 22:0x 实è¯�)**:「**å¿…é¡»å�œ app**ã€�å�ªå¯¹**文件级æ“�作**(`cp`ï¼�`mv`ï¼�覆盖 WAL 三件套)æˆ�立,⛔ **ä¸�è¦�套到 SQL å�˜æ›´ä¸Š**。
|
|||
|
|
> **实è¯�**:**在 app è¿�行ä¸**用 `sqlite3.Connection.backup()` å�šåœ¨çº¿ä¸€è‡´æ€§å¤‡ä»½ï¼ˆäº§å‡ºå�•文件自洽副本 1.83 MB)→ `UPDATE sessions SET cwd=…`(**16 行**)→ 改å‰�ï¼�改å�Žå�„跑一次 `PRAGMA integrity_check` å…¨ `ok` → **app 全程æ£å¸¸**(执行者本身就跑在 app 里)。
|
|||
|
|
> âš ï¸� 把"å¿…é¡»å�œ app"套到 SQL å�˜æ›´ä¼šå½¢æˆ�**æ»é”�**:执行清ç�†çš„ AI **永远跑在 app 内** ⇒ è¿™æ�¡è§„则一读æ»ï¼Œã€Œæ¸…ç�†å·²è£‚组ã€�就永远å�šä¸�æˆ�(用户原è¯�ç‚¹ç ´ï¼šã€Œ**å…³äº†ä½ å’‹è¿�行 ä½ å°±æ˜¯ workbuddy**ã€�)。**æ£è§£ = â›” ä¸�碰三件套,å�ªç”¨ SQL + 官方 `backup()` APIï¼�`VACUUM INTO`。**
|
|||
|
|
|
|||
|
|
**事故**:为清ç�†ã€Œå�Œå��会è¯�分组ã€�,`cp` 覆盖了 `E:\ProgramData\.workbuddy\workbuddy.db` ⇒ **WorkBuddy 应用当场读ä¸�了库**(`DatabaseError: file is not a database`),且**æŒ�ç»ä¸�å�¯è¯»**ã€�app 还在往上写。
|
|||
|
|
|
|||
|
|
**机�**(这�是�记的):`workbuddy.db` 是 **WAL 模� + 多进程并�**的活库,�一逻辑库由**三个文件**共�构�:
|
|||
|
|
```
|
|||
|
|
workbuddy.db 主库(已 checkpoint 的基线)
|
|||
|
|
workbuddy.db-wal 预写日志(增�,带 salt 世代)
|
|||
|
|
workbuddy.db-shm 共享内å˜ç´¢å¼•(被 app 进程æŒ�有)
|
|||
|
|
```
|
|||
|
|
三者必须**å�Œä¸€ä¸–代**æ‰�自洽。文件级 `cp` å�ªæ�¢å…¶ä¸ä¸€éƒ¨åˆ† ⇒ **salt 世代错ä½�** ⇒ SQLite 判定「ä¸�是数æ�®åº“ã€�。
|
|||
|
|
|
|||
|
|
**é“�律四æ�¡ï¼ˆâ›” ä¸�å�¯ç ´ï¼‰**:
|
|||
|
|
|
|||
|
|
| # | 律 | �由 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| � | **先确认 app 未�行**(`Get-Process WorkBuddy`)⇒ 有进程就**�手**,⛔ �碰文件 | app �有 `-shm` �柄,`cp` 覆盖必然三件套错� |
|
|||
|
|
| â�· | **â›” ç¦�æ¢æ–‡ä»¶çº§ `cp`/`mv`/`rsync` 动活库** | å�³ä½¿ app 已关,é€�文件 `cp` ä»�有ä¸é—´æ€�风险;è¦�备份就三件套一起ã€�è¦�æ�¢å¤�就三件套一起 |
|
|||
|
|
| â�¸ | **改数æ�®å�ªèµ° SQL 连接**(`sqlite3.connect` + `busy_timeout`),⛔ ä¸�碰å—节 | 连接路径由 SQLite 自己维护é”�与世代 |
|
|||
|
|
| � | **改�必备份三件套**,改�**立� `PRAGMA integrity_check`** | 备份�� `-wal`/`-shm`,�则备份本身�自洽 |
|
|||
|
|
|
|||
|
|
**判�(出事时怎么定�)**:
|
|||
|
|
- `file is not a database` ≠文件å��了 ⇒ 先看**三件套 salt 是å�¦å�Œä¸–代**:主库 `change counter`(off 24) 与 `version-valid-for`(off 92) ç›¸ç‰ â‡’ **主库自洽**
|
|||
|
|
- 用 `?mode=ro&immutable=1` 打开�**完全绕开 WAL/SHM**:读得出 ⇒ **数�在,�是 WAL 错�**
|
|||
|
|
- ⛔ **`immutable=1` �能读,�得用于写**(会跳过� ⇒ 与 app 打架)
|
|||
|
|
|
|||
|
|
**修法(唯一)**:å�œ app → **åˆ `-wal` 与 `-shm`** → é‡�å�¯ app(SQLite 从自洽主库é‡�建)⇒ æ•°æ�®é›¶ä¸¢å¤±ã€‚
|
|||
|
|
|
|||
|
|
**自检一�**:我�动的这个库,**app 现在开��**?备份是**三件套一起**�?改完跑 `integrity_check` 了�?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 形�:规划棒 ↔ 执行棒 交替
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
规划棒①(出交接�)→ 执行棒①(照��地)→ 规划棒②(出下一�)→ 执行棒② → …
|
|||
|
|
↑ �棒 = 一个全新会� + 一�一次性 automation,�完自己登记下一棒
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**为什么拆�两�棒(�是�便切段)**
|
|||
|
|
|
|||
|
|
| 棒 | ��什么 | �本�级(实测) |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **规划棒** | **å�ªå‡ºäº¤æŽ¥å�•**:ä¸�改æœ�务器ã€�ä¸�改代ç �ã€�ä¸�部署 | 23–56 次调用 / 5.7–9.4 积分 / 3–10 min |
|
|||
|
|
| **执行棒** | **ç…§å�•è�½åœ°**:按å�•å�çš„ S0–Sn é€�æ�¡æ‰§è¡Œã€�é€�æ�¡éªŒæ”¶ | 93–215 次调用 / 23–29 积分 / 21–41 min |
|
|||
|
|
|
|||
|
|
⇒ 这是「**规划与执行分离**�从纪律��**机制**:规划棒物�上碰�到生产,执行棒物�上�必���。
|
|||
|
|
|
|||
|
|
**⛔ 什么时候��用这套**
|
|||
|
|
|
|||
|
|
- 一次性�任务(直接�,别排链�)
|
|||
|
|
- æ¥éª¤å�¯å¹¶è¡Œï¼ˆç”¨å¹¶è¡Œä¼šè¯� + **域é”�**:域ä¸�é‡�å� å�³çœŸå¹¶è¡Œï¼›æœºåˆ¶å±‚任务ä»�须独å� ,è§� §3.5)
|
|||
|
|
- **任务形�本身就贵**(例:批�改写 N 份文档)—— 那�该**先写脚本一次跑完**;接力**救�了**贵的活,��场地
|
|||
|
|
- å�•棒å�šä¸�完(会超出上下文预算)⇒ 说明**棒还è¦�å†�切细**,或改用「接ç»åŒ… v2 + 开机四æ¥ã€�
|
|||
|
|
- 🔴 **链æ�¡ä¸Šå˜åœ¨ã€Œéœ€è¦�用户æ‹�æ�¿ã€�的决ç–点** ⇒ å�¯è‡ªå†³çš„æ®µè�½ç…§å¸¸æŽ¥åŠ›ï¼Œä½†**必须在æ‹�æ�¿ç‚¹å‰�å�œä¸‹**,ä¸�许自动跨过去(**è§� §3.3 登记门ç¦�**)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. å…件套 prompt 骨架(照抄填空)
|
|||
|
|
|
|||
|
|
> **ä½�ç½®**:æ¯�棒的 prompt 写在 `automation_update` çš„ `prompt` å—æ®µé‡Œã€‚
|
|||
|
|
> **è¦�点**:整段 400–1,300 å—符。**越长越糟** —— æ¯�多抄一个技术细节,就多一个漂移æº�。
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
<线�> · <第 N 棒:规划棒 / 执行棒>(本轮��这一件事,�完��)。
|
|||
|
|
|
|||
|
|
第 0 æ¥ï¼šè·‘ `<ç»�对路径>/state.py` 看状æ€�(å�ªè¯»ã€�å…�抢é”�ã€�1 次调用拿到é”�/git/å…¥å�£/æ”¶å�£ï¼‰ã€‚
|
|||
|
|
第 1 æ¥ï¼ˆå¼€å·¥é—¨ç¦�):先跑 `bash "<ç»�对路径>/preflight-lock.sh" "<线å��>-<第N棒>" <ç›®æ ‡æ–‡ä»¶...>` —— **ã€�D】未归类 或ã€�E】机制层é�žç©º ⇒ rc=1 ⇒ 拒开工**(先去归类/改独å� )。
|
|||
|
|
第 1b æ¥ï¼šæŠ¢é”� `bash "<ç»�对路径>/handoff-guard.sh" --claim-exec "<线å��>-<第N棒>" --domains <域...>`ï¼›**抢ä¸�到 = 冲çª�域被å� ⇒ å�ªæŠ¥å‘Šå¹¶ç«‹åˆ»å�œ**(⛔ ä¸�å¾—åˆ é”�,R9)。
|
|||
|
|
âš ï¸� 机制层任务(`scripts`/`config`/`crypto`/`isolation`/`index`/`CODEBUDDY.md`/é”�本身)**â›” ä¸�åŠ `--domains`** ⇒ 退化全局独å� 。
|
|||
|
|
第 2 æ¥ï¼šè¯»**唯一执行ä¾�æ�®** = `<å…¥å�£æ–‡ä»¶ç»�对路径>` çš„ **§2「🎯 本轮动作ã€�å�—**,按它点å��的那份交接å�•开工。
|
|||
|
|
|
|||
|
|
(规划棒专属)本轮任务:出å�¯æ‰§è¡Œäº¤æŽ¥å�•,è�½ç›˜ `<路径>`,按 8 段模æ�¿ï¼šç›®æ ‡ / å�ªè¯»å‰�ç½® / 范围 / 决ç–点 / æ¥éª¤ S0–Sn / é€�æ�¡éªŒæ”¶åˆ¤æ�® / 回滚 / §8 å›žæŠ¥æ ¼å¼�。
|
|||
|
|
(规划棒专属)⛔ 开工å‰�å…ˆåŠ è½½æŠ€èƒ½ `session-mechanism`(å�–èˆ�判æ�®ä»¥å®ƒä¸ºå‡†ï¼Œä¸�å‡è®°å¿†ï¼‰ã€‚
|
|||
|
|
|
|||
|
|
约æ�Ÿï¼šâ›” ä¸� commit / push;⛔ ä¸�å�š <明确点å��的排除项>;⛔ ä¸�é‡�å�š <已收官的åº�å�·>;⛔ ä¸�扩大å�•å�范围(å�•外å�‘现的缺陷先报告ã€�ä¸�动手)。
|
|||
|
|
�本纪律:批�活先写脚本�让脚本跑;��最多 3 �命令;⛔ �� Glob/Grep 全库摸底;一轮内工具调用次数尽�压低。
|
|||
|
|
|
|||
|
|
纪律:技术实现项**自决�上抛**;�有「没有客观优劣�的���列候选,且�个候选必须写「优点 / 缺点��**候选竖排�段**(�横排);判�必须�被第三方�现。
|
|||
|
|
|
|||
|
|
收尾(缺一å�³ç®—未完æˆ�):①释放é”� `--release-exec "<会è¯�å��>"`(⛔ ä¸�带会è¯�å�� ⇒ **æ‹’ç»�释放** · 2026-09-25 修);② **先过登记门ç¦�(è§� §3.3)**——å�ªæœ‰ã€Œä¸‹ä¸€æ£’å�¯è‡ªå†³ã€�æ‰�登记,**`scheduledAt` = æ¤åˆ» + 5~8 分钟(è§� §3.1.1 é“�律①,⛔ ä¸�许留长ç‰å¾…窗å�£ï¼‰**,且**å�Œä¸€æ—¶åˆ»å�ªæŒ‚ä¸€ä¸ªæŽ¥ç»æ£’**(§3.1.1 é“�律②:⛔ ä¸�预登记队列,å�Žç»é¡¹å†™è¿›å…¥å�£ §2 的「â�ï¸� 本线下一项ã€�由下一棒自己排);用**陈述å�¥**告知「已登记自动接ç»ã€�约 5~8 分钟å�Žè‡ªåŠ¨å¼€æ–°ä¼šè¯�ã€�接ç»ç‚¹ = Xã€�;③ 把入å�£ §2「🎯 本轮动作ã€�推进到å†�下一棒;④ 写工作区日志。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.1 三æ�¡éª¨æž¶ä¸ºä»€ä¹ˆé•¿è¿™æ ·ï¼ˆéƒ½æœ‰å®žæµ‹å‡ºå¤„)
|
|||
|
|
|
|||
|
|
| 骨架 | 治什么 | 实测�� |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **第 2 æ¥ = 指å�‘å…¥å�£ï¼Œä¸�抄细节** | **细节漂移**(细节有两个æ�¥æº� ⇒ 必然打架) | 09-16 那版 prompt é‡�述了整段技术细节 ≈1.2 KB,å��而**挤掉了"开机四æ¥"那一行** ⇒ 40 次调用 / 9.37 积分(立项å�£å¾„ ≤10 次 / ≈1 分) |
|
|||
|
|
| **「本轮å�ªå�šè¿™ä¸€ä»¶äº‹ï¼Œå�šå®Œå�³å�œã€�** | æ— äººå€¼å®ˆæ—¶çš„**自我扩æ�ƒ** | `b08b1c35`:用户å�ªè¯´ã€Œå…ˆç¡®è®¤å¾…办ã€�,第 28 次调用**已在写代ç �** |
|
|||
|
|
| **「å�–è¯�最多 3 æ�¡å‘½ä»¤ã€�** | 防御性过度å�–è¯� | å�Œä¸€ä¼šè¯�第 7–24 次**è¿žç» 17 次å�–è¯�**,reasoning é‡Œä¸‰è¿žè‡ªæˆ‘åŠ ç �「å�–è¯�é�žå¸¸å®Œæ•´äº†ã€� |
|
|||
|
|
| **纪律å�—(自决ä¸�上下抛 + 候选写优缺点)** | **æŠŠå†³ç–æ–¹æ³•内è�”**(新会è¯�读ä¸�到旧上下文,方法论ä¸�会自己进æ�¥ï¼‰ | 09-17 实测:9 棒里 `Skill` 调用 **0 次** ⇒ 判æ�®å…¨é� 这段内è�”æ–‡å—æ’‘ä½� |
|
|||
|
|
|
|||
|
|
### 2.2 ★ 已知缺�:Skill 调用 = 0(本技能给出的修法)
|
|||
|
|
|
|||
|
|
**实测**(09-17 全部 9 棒):`function_call.name == "Skill"` **一次都没有**。判�是 prompt 里的**内�摘�**在起作用,完整方法论从未进上下文。
|
|||
|
|
|
|||
|
|
**修法**(分棒区别对待,别一刀切):
|
|||
|
|
|
|||
|
|
- **è§„åˆ’æ£’å¿…é¡»åŠ **:`â›” 开工å‰�å…ˆåŠ è½½ä¼šè¯�技能 session-mechanism`(规划棒基数å�ªæœ‰ 23–56 次调用,+1 次å�¯æŽ¥å�—,且它确实è¦�å�šå�–èˆ�ã€�è¦�出å�•)
|
|||
|
|
- **执行棒å�¯ä»¥ä¸�åŠ **:å�•å�å·²ç»�把判æ–写æ»äº†ï¼Œå†�åŠ è½½æ–¹æ³•è®ºæ˜¯çº¯å¼€é”€ï¼ˆæ‰§è¡Œæ£’åŸºæ•°å·² 93–215 次)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 收尾四件套(缺一�算未完�)
|
|||
|
|
|
|||
|
|
> 这四件里**第 â‘¡ 件是唯一会"æ–链"的地方**,也是钩å�**å�šä¸�到**的地方(钩å�ä¸�能创建会è¯�ã€�ä¸�能创建自动化)。
|
|||
|
|
> 🔴 第 ② 件的两�硬约�(详� §3.1.1):**�排"下一棒"这一棒**(⛔ �预登记队列)+ **`scheduledAt` = 收� + 5~8 分钟**。
|
|||
|
|
|
|||
|
|
| # | 动作 | 判� |
|
|||
|
|
|---|---|---|
|
|||
|
|
| ①| 释放� `--release-exec "<会��>"`(⛔ �带� ⇒ 拒�释放) | 跑一次信�模�确认已释放 |
|
|||
|
|
| â‘¡ | **先过 §3.3 登记门ç¦�** → 登记下一棒的一次性 automation(**`scheduledAt` = æ¤åˆ» + 5~8 分钟**,è§� §3.1.1 é“�律①;**å�Œä¸€æ—¶åˆ»å�ªæŒ‚一个**,é“�律②)+ **在给用户的回å¤�里用陈述å�¥å‘ŠçŸ¥** | é—¨ç¦�ä¸�过 ⇒ **ä¸�登记,改为告知"链æ�¡å·²æš‚å�œå¾…æ‹�æ�¿"**;陈述å�¥ä¸‰è¦�ç´ ï¼šçº¦ 5~8 分钟å�Žè‡ªåŠ¨å¼€æ–°ä¼šè¯� / **ä¸�ç”¨ä½ æ“�作** / 接ç»ç‚¹ = X |
|
|||
|
|
| ③ | 把入�文件 §2「🎯 本轮动作�**推进到�下一棒** | 入� = 下一棒的**第一信��**;�推进 ⇒ 下一棒照旧�径�,��工 |
|
|||
|
|
| â‘£ | 写工作区日志(当日 `memory/YYYY-MM-DD.md` è¿½åŠ è‡ªå·±çš„å°�节) | å�ªè¿½åŠ è‡ªå·±çš„å°�节,⛔ ä¸�é‡�写别人的段è�½ |
|
|||
|
|
|
|||
|
|
### 3.1 收尾陈述�模�(实测原文,照抄)
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
已登记自动接ç»ï¼šä¸€æ¬¡æ€§ automation `<id>`,约 5~8 分钟å�Žï¼ˆ08:37)自动开新会è¯�,ä¸�ç”¨ä½ æ“�作;
|
|||
|
|
接ç»ç‚¹ = åº� ④「443/TCP 兜底ã€�的规划棒(出 `05-交接å�•/交接å�•_443兜底_20260917.md`,å�ªå‡ºå�•ã€�ä¸�改æœ�务器)。
|
|||
|
|
|
|||
|
|
收�:� 抢 ✓ → 释放 ✓(08:32)|未 commit / 未 push|入� §0/§2 已刷到「③ 已完� → 下一棒 ④�|产出物已交付。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**â›” å�ªç™»è®°ä¸�告知 = 缺陷**:新建会è¯�是**用户å�¯æ„ŸçŸ¥çš„状æ€�å�˜æ›´**。实测:`408636f2` 登记了自动化å�´ä¸€å—未æ��,用户两å°�æ—¶å�Žè‡ªå·±å�‘现æ‰�追问。
|
|||
|
|
|
|||
|
|
#### 3.1.1 🔴 排期两æ�¡é“�律:**é¦–ä¸ªï¼ˆä¹Ÿæ˜¯å”¯ä¸€çš„ï¼‰æŽ¥ç»æ£’** = æ”¶å�£ + **3~4 分钟**;⛔ **å�Œä¸€æ—¶åˆ»å�ªæŒ‚一个**(2026-09-18 定稿;🔴 **2026-10-01 用户å�£å¾„改值:5~8 ⇒ 3~4 分钟**)
|
|||
|
|
|
|||
|
|
> 用户 2026-09-18 原è¯�:「**首个接ç»ä»»åŠ¡ 5-8分钟**ã€�+「**最好ä¸�è¦�建立多个接ç»ä»»åŠ¡ï¼Œä¸€ä¸ªä¼šè¯�结æ�Ÿæ—¶åœ¨æŽ’下一个**ã€�
|
|||
|
|
|
|||
|
|
- **é“�律①(间隔)**:`scheduledAt` = **æ”¶å�£æ—¶åˆ» + 3~4 分钟**(🔴 2026-10-01 用户å�£å¾„,原 5~8 作废)。⚠ï¸� è¿™ 3~4 分钟是「**从本会è¯�æ”¶å�£ï¼Œåˆ°é‚£"唯一一个"æŽ¥ç»æ£’开跑**ã€�的间隔 —— â›” **ä¸�是"棒与棒之间的间隔"**,å�Žè€…æ ¹æœ¬ä¸�å˜åœ¨ï¼ˆç”±é“�律②,任何时刻å�ªè¯¥æœ‰ä¸€ä¸ªå¾…è·‘æŽ¥ç»æ£’)。
|
|||
|
|
- **é“�律②(唯一)**:**å�Œä¸€æ—¶åˆ»å�ªæŒ‚ä¸€ä¸ªæŽ¥ç»æ£’**,下一棒**å�ªèƒ½ç”±"æ£åœ¨æ”¶å®˜çš„那一棒"自己排**。⛔ **ç¦�æ¢é¢„登记队列 / å †å� **("我先把å�Žé�¢ä¸¤æ£’都排上" = è¿�规)。
|
|||
|
|
- **å�Žç»é¡¹ä¸�会丢**:把它写进入å�£æ–‡ä»¶ §2 çš„ **「â�ï¸� 本线下一项(⛔ 本棒ä¸�预登记)ã€�** 行(å�«è¦�点 / æ ¹å› / 验收基线),**由当å‰�那一棒收官时照æ¤ç«‹æ£’**。
|
|||
|
|
- **âš ï¸� 「é‡�挂ã€�的唯一æ£ç¡®å�𿳕 = 新建,ä¸�是改时间**(2026-09-21 实测,è§� §4 第 ⑦ æ�¡ï¼‰ï¼šæ£’å› ä¸º**抢ä¸�到é”�**ç‰åŽŸå› ç©ºè½¬ã€�ä½ æƒ³"过 8 分钟å†�æ�¥ä¸€æ¬¡"时,⛔ **ä¸�è¦�** `mode="update"` 改 `scheduledAt` —— 已跑过的 once 型棒改时间**ä¸�会产生新的è¿�行记录**(链æ�¡é�™é»˜æ»äº¡ï¼‰ã€‚æ£ç¡®å�šæ³•ï¼š`mode="create"` **新建一æ�¡å�Œå†…容 automation**,旧棒置 `PAUSED`(ä¿�ä½�é“�律②的"å�ªæŒ‚一个"),并在 prompt 里写明"抢ä¸�åˆ°å°±ç…§æ¤æ³•自助é‡�挂"。
|
|||
|
|
|
|||
|
|
**边界(哪一头都�能越)**
|
|||
|
|
|
|||
|
|
| 方� | 判� |
|
|||
|
|
|---|---|
|
|||
|
|
| 下�为何是 5(�是 2) | �开调度器最����与文件�盘竞� |
|
|||
|
|
| 上é™� 8 何时å�¯è¶Š | â›” å�ªæœ‰ã€Œ**è¦�ç‰ä¸€ä¸ªå¤–部窗å�£**ã€�æ‰�å…�许拉长(对方æœ�务é‡�å�¯å®Œ / å�¦ä¸€æ�¡æ£’在跑 / 用户æ‹�æ�¿ï¼‰ï¼Œä¸”**必须在陈述å�¥é‡Œå†™æ˜Žåœ¨ç‰ä»€ä¹ˆ** |
|
|||
|
|
| â›” ä¸�许的两æ�¡ç�†ç”± | 「**给用户留追改窗å�£**ã€�(追改å�¯åœ¨ä»»ä½•ä¸€è½®ç›´æŽ¥æ‰“æ– â‡’ ç‰ä»·äºŽä¸»åŠ¨ç©ºè½¬ï¼‰Â· 「**怕它跑ä¸�完**ã€�(**排期按实测基线算,ä¸�按猜ä¸�确定性算**:规划棒实测å�ªéœ€ **6–13 分钟**,åº�⑦/⑨/⑪/⑯/⑱/㉔) |
|
|||
|
|
|
|||
|
|
**实测事故 2026-09-18(一棒之内两处都犯过 ⇒ æœ¬èŠ‚å› æ¤é‡�写)**
|
|||
|
|
|
|||
|
|
| # | 我�了什么 | 用户原� | 性质 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| ①| ㉘ 规划棒排到 **收� + ~2 h**,�给 ㉙ 留 **1.5 h 余�** | 「为什么时间�定在3:00�→「㉘ 规划棒 = 01:30 **也还有1个多�时呢**� | ���律①:长空转 + **用"猜�确定性"代替实测基线** |
|
|||
|
|
| â‘¡ | 用户说「**5-8分钟å�³å�¯**ã€�å�Žï¼Œæˆ‘把它读æˆ� **"棒与棒之间的间隔"**(㉘→㉙ = 8 分钟),于是**å�Œæ—¶æŒ‚了 ㉘ + ㉙ ä¸¤ä¸ªæŽ¥ç»æ£’** | 「我说的是**首个**接ç»ä»»åŠ¡ 5-8分钟,**最好ä¸�è¦�建立多个接ç»ä»»åŠ¡ï¼Œä¸€ä¸ªä¼šè¯�结æ�Ÿæ—¶åœ¨æŽ’下一个**ã€� | è¿�å��é“�律②:预登记队列。**æ ¹å› = 改规则时å�ªåœ¨æ—§å�¥å�上æ�¢äº†ä¸ªæ•°å—ï¼Œæ²¡æœ‰å›žåˆ°æœ¬èŠ‚æ ¸å¯¹è§„åˆ™çš„å®Œæ•´å®šä¹‰** |
|
|||
|
|
|
|||
|
|
⇒ **判æ�®**:任何一次"排期调整"都è¦�**回到本节é€�æ�¡å¯¹ç…§ä¸¤æ�¡é“�律**;⛔ ä¸�许å�ªæ�¢æ•°å—就交差 —— æ•°å—与"å�£å¾„è�½åœ¨å“ªä¸ªå¯¹è±¡ä¸Š"会一起漂移。
|
|||
|
|
|
|||
|
|
#### 3.1.2 🔴 下一棒的 **automation id �能�自工具返回值**(2026-09-17 实测踩�)
|
|||
|
|
|
|||
|
|
- **实测å��例**:åº�â‘§ 执行棒收å�£æ—¶ï¼Œæˆ‘先把「下一棒 id = `ad8d1c4f-…`ã€�写进了自动化记忆文件,**之å�Ž**æ‰�è°ƒ `automation_update` 建å�• —— 真实 id 是 **`0c3feee5-…`**(工具生æˆ�ï¼Œæ— æ³•é¢„çŸ¥ï¼‰â‡’ 记忆文件里留下一æ�¡**指å�‘ä¸�å˜åœ¨çš„自动化**çš„å�‡ id,必须回头å†�改一次。
|
|||
|
|
- **æ£ç¡®é¡ºåº�**(ä¸�å�¯é¢ 倒):①先 `automation_update(mode=list)` 查é‡� ⇒ â‘¡ `mode=create` 建å�• ⇒ â‘¢ **从返回值å�–真 id** ⇒ â‘£ å†�写记忆文件 / å…¥å�£æ–‡ä»¶ / 日志。
|
|||
|
|
- â›” **ä¸�许"å…ˆå� ä½�å†�è¡¥"**:id 是**外部生æˆ�的事实**ï¼Œç¼–é€ = 判æ�®çº§æ±¡æŸ“(下一ä½�读者会拿它去 `mode=view`,查ä¸�到就会误判"链æ�¡æ–了")。
|
|||
|
|
- ⚠� ��适用于:`scheduledAt` 的实际生效值(以返回的 `nextRunAt` 为准)�被工具规范化过的 name。
|
|||
|
|
|
|||
|
|
#### 3.1.3 🔴 跨线交付:**「投� ≠�动�** —— 工��会自己��动作(2026-09-28 实测�)
|
|||
|
|
|
|||
|
|
**事实**:给**å�¦ä¸€æ�¡çº¿**(å�¦ä¸€å·¥ä½œåŒºï¼‰æŠ•了对接å�•ã€�还在对方入å�£åŠ äº†æŒ‡é’ˆä¹‹å�Žï¼Œé‚£æ�¡çº¿**ä¸�ä¼šå› æ¤å¼€å·¥**。
|
|||
|
|
ä¾�æ�®å°±æ˜¯ä½ 本技能的第一律 —— **「自动化 = 开新会è¯�的唯一通é�“ã€�**:没有 `cwds` 指å�‘那个工作区的 automation,**就没有任何机制把对方拉起æ�¥**;工å�•å�ªæ˜¯ã€Œæ–‡ä»¶é‡Œçš„留言ã€�ï¼Œå¾—ç‰æŸ�个会è¯�去读它。
|
|||
|
|
|
|||
|
|
**实测(2026-09-28)**:平�线给 `ai1net-dsh-anywhere` 投了对接�(15:10 �地),并对用户说「让相关会�都执行起��——
|
|||
|
|
但 automation 全表 6 æ�¡é‡Œ**没有一æ�¡æŒ‡å�‘那个工作区**,对方**当天零活动**ï¼ˆæ ¹ç›®å½• mtime å�œåœ¨ 09-27 23:38ã€�æ— å½“æ—¥æ—¥å¿—ï¼‰ã€‚
|
|||
|
|
⇒ 用户å�Žæ�¥ç›´æŽ¥é—®ã€Œ**为什么å�¦ä¸€ä¸ªä¼šè¯�还没开å�‘ app**ã€�ï¼Œæ ¹å› å°±æ˜¯**投å�•之å�Žæ²¡æŽ’棒**。
|
|||
|
|
|
|||
|
|
**判æ�®ï¼ˆæŠ•完å�•必自问一å�¥ï¼‰**ï¼šè¿™å¼ å�•**ç”±è°�ã€�在什么时候**读?
|
|||
|
|
- 有 automation ⇒ ✅ å·²é—环
|
|||
|
|
- 没有 ⇒ **立刻补一� `once` automation**:`cwds` = 对方工作区,prompt 写「读 X �并执行�(⛔ 别指望对方"自己会看到")
|
|||
|
|
|
|||
|
|
âš ï¸� **投å�•å‰�还è¦�æ ¸å¯¹å¯¹æ–¹çš„ã€Œå¼€å·¥ä¾�æ�®ã€�是å�¦ä»�ç„¶æˆ�ç«‹**:实测那æ�¡çº¿å…¥å�£çš„「下一æ¥ã€�ä¾�赖的宿主目录**å·²è¢«åˆ é™¤** ⇒ 就算把它拉起æ�¥ï¼ŒæŒ‰è‡ªå·±çš„å…¥å�£åŠžä¹Ÿä¼šå¤±è´¥ã€‚
|
|||
|
|
⇒ **投� + 排棒 + 在棒里写明「局�已��⛔ 别按旧入�办�**,三件一起�算�到。
|
|||
|
|
|
|||
|
|
âš ï¸� **跨线排棒è¦�防"撞车"**:若对方è¦�动的东西æ£è¢«è‡ªå·±è¿™æ�¡çº¿ç”¨ç�€ï¼ˆä¾‹å¦‚今晚è¦�端到端验è¯�的那批文件),**把对方那一棒设æˆ�「å�ªè¯»æ ¸å¯¹ + 出结论ã€�**,⛔ ä¸�给写æ�ƒé™� —— å�¦åˆ™ä¸¤æ�¡çº¿å�Œæ—¶æ”¹å�Œä¸€æ‰¹æ–‡ä»¶ã€‚
|
|||
|
|
|
|||
|
|
### 3.2 ★ 登记�必须先看有没有在跑的(防�开)
|
|||
|
|
|
|||
|
|
实测(�③规划棒,09-17 07:56):
|
|||
|
|
|
|||
|
|
> 「执行棒会è¯�**å·²ç»�èµ·æ�¥äº†**(07:53 触å�‘,现在 07:56),所以我**ä¸�å†�æ–°å»ºæŽ¥ç» automation** —— 链æ�¡å·²ç»�接上,多建一æ�¡å�ªä¼šé‡�å¤�开工。ã€�
|
|||
|
|
|
|||
|
|
**判æ�®**:登记å‰�先确认下一棒是å�¦**å·²ç»�å˜åœ¨**(会è¯�列表 / `automation_runtime_state.running`)。已å˜åœ¨ ⇒ **ä¸�登记,å�ªæŠ¥å‘Š**。
|
|||
|
|
|
|||
|
|
### 3.3 🔴 登记门ç¦�:è¦�æ‹�æ�¿çš„ï¼Œç‰æ‹�了å†�登记(用户 2026-09-17 明令)
|
|||
|
|
|
|||
|
|
用户原�:
|
|||
|
|
> 「**需è¦�我æ‹�æ�¿æ—¶ï¼Œç‰æ‹�了å†�新建接ç»ä¼šè¯�就行**ã€�
|
|||
|
|
|
|||
|
|
**动作�有两�**:
|
|||
|
|
|
|||
|
|
- 下一棒若å�«**需è¦�用户æ‹�æ�¿**的事 ⇒ â›” **ä¸�登记**;本棒æ£å¸¸æ”¶å�£ï¼Œå�œåœ¨ã€Œå¾…ä½ æ‹�æ�¿ã€�节,并告知「**链æ�¡å·²æš‚å�œï¼Œç‰ä½ æ‹�æ�¿**ã€�
|
|||
|
|
- **��到手�** ⇒ �由当时的会�登记下一棒
|
|||
|
|
|
|||
|
|
**什么算「需è¦�æ‹�æ�¿ã€�** = 边界外å…ç±» + ä¸�å�¯é€†æ“�作:
|
|||
|
|
ä¸šåŠ¡ç›®æ ‡ / 优先级 · 花钱或承诺资æº� · 对外承诺与å�ˆè§„ · 需è¦�用户æ��供凿�®æˆ–审批 · æ— å®¢è§‚ä¼˜åŠ£çš„å��好 · å½±å“�é�¢è¶…出本平å�° · ä¸�å�¯é€†æ“�ä½œï¼ˆåˆ æ•°æ�® / è¿�库 / 清目录)。
|
|||
|
|
|
|||
|
|
âš ï¸� **判æ�®é¡ºåº�**:先判「是ä¸�是è¦�æ‹�æ�¿ã€�ï¼›**未命ä¸**æ‰�轮到「候选排ä¸�排得出优劣ã€�。顺åº�å��了就会自我扩æ�ƒ —— 实测事故è§� §3.3.1。
|
|||
|
|
|
|||
|
|
**唯一例外**:�件��阻塞项(��决定也能先开工)⇒ �以登记,但�把「�到���写进下一棒 prompt。
|
|||
|
|
> 实测æ£ä¾‹ï¼ˆåº�④规划棒):「å�ªæœ‰ S3 实测è¯�明『地å�€è¦†ç›– + 指定 SNIã€�ä¸�å�¯è¡Œæ—¶ï¼Œè¿™ä¸€æ�¡æ‰�æˆ�为唯一缺å�£ã€�⇒ ä¸�阻塞开工 ⇒ æ£å¸¸ç™»è®°ã€‚
|
|||
|
|
|
|||
|
|
### 3.3.1 实测事故:åº�â‘¥ → åº�⑦「æ‹�æ�¿æœªå®šï¼ŒæŽ¥ç»å·²è·‘ã€�(2026-09-17 用户报障)
|
|||
|
|
|
|||
|
|
用户原�:
|
|||
|
|
> 「**最新会è¯�é�‡åˆ°éœ€è¦�我æ‹�æ�¿ 还是自动创建接ç»ä¼šè¯�的情况,导致æ‹�æ�¿è¿˜æ²¡å®šï¼ŒæŽ¥ç»ä¼šè¯�å·²ç»�开始执行**ã€�
|
|||
|
|
|
|||
|
|
**�过**:09:52 �⑥**规划棒**把「真机���(�用户出设备 = 边界外)自己�了 ⇒ 登记执行棒 → 10:58 �⑦规划棒按链�自动开跑 → **11:00 用户�给��** → 11:09 �⑦执行棒�自动开起� → 11:11 用户手动喊�。**多烧 ≥2 轮,且�用户自己介入收拾。**
|
|||
|
|
|
|||
|
|
**三�留档(别�犯)**
|
|||
|
|
|
|||
|
|
1. **边界外的事,候选å†�明显更优也ä¸�许自己æ‹�** —— 这次就是「A é›¶æˆ�本零ç‰å¾…ã€�看ç�€æ›´ä¼˜ï¼Œä½†é€‰é¡¹æœ¬èº«è¶Šç•Œã€‚
|
|||
|
|
2. **æ‹�æ�¿é¡¹ä¸€æ—¦ä¸ŠæŠ›ï¼Œæœ¬æ£’å°±ä¸�许å†�登记下一棒** —— 机器定时与人的æ‹�æ�¿èŠ‚å¥�**没有å�Œæ¥ç‚¹**,ä¸�ç‰å°±å¿…ç„¶é”™ä½�。
|
|||
|
|
3. **判「�棒是�在跑�看�的时间戳**(域��全局�皆�),⛔ �是 `automation.status` —— 12 �已跑完的一次性任务,`status` 全是 `ACTIVE`。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 七�实测防护(都是真踩过的)
|
|||
|
|
|
|||
|
|
| # | 现象 | �果 | 处置 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| â‘ | **æ¼�登记下一棒**(链æ�¡æ–在收工处) | æ— äººæŽ¥ç�€å�šï¼Œ**è¦�ç‰ç”¨æˆ·å�‘现** | 实测:07:2x 那棒æ¼�登记 ⇒ 用户 07:39 主动追问「为什么还ä¸�创建新会è¯�接ç»ä»»åŠ¡ã€�。⇒ 修法 = 把「收尾四件套缺一å�³ç®—未完æˆ�ã€�**写进æ¯�棒 prompt** |
|
|||
|
|
| ② | **�开 / ��登记** | �一份活被跑两�,白烧一轮 | � §3.2(登记�先看有没有在跑的) |
|
|||
|
|
| â‘¢ | **once åž‹ automation 跑完ä¸�自动转完æˆ�æ€�** | åˆ—è¡¨é‡Œå †ç§¯"已过期但 ACTIVE"的一次性任务;调度器补跑窗å�£ **12 å°�æ—¶** ⇒ ç�†è®ºä¸Šå�¯èƒ½è¢«æ‰«åˆ°ã€�**多开一个会è¯�** | 实测 09-17:列表里躺ç�€ 4 æ�¡è¿‡æœŸä»� ACTIVE çš„ once 型任务。处置:**ä¿�æŒ�åŽŸæ ·**(ä¸�动既有é…�置)或**设为暂å�œ**;⛔ ä¸�è¦�用 shell 去改库 |
|
|||
|
|
| â‘£ | **自动跨过"需è¦�æ‹�æ�¿"的点** | æ‹�æ�¿æœªå®šå°±è·‘,**è¦�ç‰ç”¨æˆ·è‡ªå·±å�‘现**(已有实测事故 §3.3.1) | **è¦�æ‹�æ�¿çš„ï¼Œç‰æ‹�了å†�登记**(§3.3 é—¨ç¦�) |
|
|||
|
|
| ⑤ | **下一棒 `scheduledAt` 拉太长**(实测 ~25 min,甚至 ~2 h) | 链æ�¡ç™½ç™½ç©ºè½¬ï¼Œ**用户当场追问** | 实测:åº�⑦执行棒 12:2x æ”¶å�£ã€�下一棒排 12:50 ⇒ 用户 12:26 追问「**为什么è¦�ç‰20多分钟æ‰�执行接ç»ä¼šè¯�**ã€�ï¼›09-18 å�ˆæŽ’过「收å�£ + ~2 hã€�。⇒ 修法 = §3.1.1 é“�律①:**= æ”¶å�£æ—¶åˆ» + 5~8 分钟**,且**按实测基线算**(规划棒 6–13 分钟) |
|
|||
|
|
| â‘¥ | **é¢„ç™»è®°å¤šä¸ªæŽ¥ç»æ£’**ï¼ˆé˜Ÿåˆ—å †å� ) | 链æ�¡ä¸ŠæŒ‚ç�€ ≥2 个待跑棒 ⇒ 抢é”�空转;å�Žç»é¡¹è¦�么白烧è¦�么被撤,**ç”¨æˆ·å½“åœºçº æ£** | 实测 09-18:㉗ 棒å�Œæ—¶æŒ‚了 ㉘+㉙ 两æ�¡ ⇒ 用户原è¯�「**最好ä¸�è¦�建立多个接ç»ä»»åŠ¡ï¼Œä¸€ä¸ªä¼šè¯�结æ�Ÿæ—¶åœ¨æŽ’下一个**ã€�。⇒ 修法 = §3.1.1 é“�律②:**å�Œä¸€æ—¶åˆ»å�ªæŒ‚一个**ï¼›å�Žç»é¡¹å†™è¿›å…¥å�£ §2 的「â�ï¸� 本线下一项(⛔ 本棒ä¸�预登记)ã€�,由当棒收官时立棒 |
|
|||
|
|
| ⑦ | **「é‡�挂ã€�= 改 `scheduledAt` ⇒ æ ¹æœ¬ä¸�触å�‘**(棒被é”�挡回ã€�想é‡�排一次时最容易踩) | 链æ�¡**é�™é»˜æ»äº¡**:以为"5~8 分钟å�Žä¼šè‡ªåЍé‡�试",实际调度器**从未创建è¿�行**,è¦�ç‰ç”¨æˆ·è¿½é—®æ‰�å�‘现 | 实测 09-21 carbon 棒③:06:24 把 `scheduledAt` 改æˆ� 06:34 ⇒ 06:42 ä»�零痕迹;`daemon.log` 里**ä¸�å˜åœ¨** `:1789943*` å½¢æ€�çš„è¿�行记录,å�ªæœ‰åŽŸ 06:23 那一笔 ⇒ **已跑过的 once 型棒,改时间ä¸�会é‡�新入队**。⇒ 修法 = **é‡�挂必须新建 automation**(`mode="create"`),并把旧棒置 `PAUSED`(ä¿�「å�Œä¸€æ—¶åˆ»å�ªæŒ‚一个ã€�);⛔ 别用改时间é‡�排。å�–è¯�æ–¹å¼� = è¿�行记录形如 `<automationId>:<epochMs>`,去 `E:/ProgramData/.workbuddy/logs/daemon.log` 里按 `<id>:<期望时间戳å‰� 7 ä½�>` æ�œ |
|
|||
|
|
|
|||
|
|
### 3.5 🔴 域�四个已实�的「�绿��(2026-09-22 �地时全踩过)
|
|||
|
|
|
|||
|
|
> 域é”� = é”�æ�ºå¸¦**资æº�声明**(`DOMAINS`),å�¯ç®—交集 ⇒ **域ä¸�é‡�å� å�³å�¯çœŸå¹¶è¡Œ**(å�–代旧的「全局å�ªæ”¾ä¸€ä¸ªã€�)。
|
|||
|
|
> 机制层(`scripts`/`config`/`crypto`/`isolation`/`index`/`CODEBUDDY.md`/é”�本身)**全平å�°å…±ç”¨ ⇒ 必须独å� **。
|
|||
|
|
|
|||
|
|
| # | � | 症状 | 修法 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| â‘ | **域键算法 shell / hook 两侧ä¸�一致** | 一侧å�–"首个锚点段"ã€�å�¦ä¸€ä¾§å�–"å‰�两段" ⇒ å�Œä¸€è·¯å¾„算出ä¸�å�ŒåŸŸ ⇒ **交集永远算空** ⇒ 该拦的全放行 | 锚点表**é€�å—一致**且**先长å�ŽçŸ**(`dsh-server-docs` → `aliyun-dsh-server` → `src`/`web`/`test`…);改一侧必须å�Œæ¥å�¦ä¸€ä¾§ |
|
|||
|
|
| â‘¡ | **é�ž ASCII 会è¯�å��塌æˆ�å�Œä¸€ç›®å½•**(本平å�°**必现**) | `tr -c 'A-Za-z0-9._-' '_'` 把æ¯�个é�ž ASCII å—符压æˆ� `_` ⇒ 「域é”�-Aã€�「域é”�-Bã€�「域é”�-Cã€�**å…¨æ˜ å°„æˆ�å�Œå��目录** ⇒ 一é”�被多人共用ã€�域声明被并进å�Œä¸€ä»½ ⇒ **域隔离整体失效** | 会è¯�å��å�«é�ž ASCII ⇒ 目录å��**附 `cksum` 摘è¦�**(唯一ã€�确定ã€�æ— å¤–éƒ¨ä¾�赖);ASCII å��直接留用(å�¯è¯»ï¼‹å…¼å®¹ï¼‰ |
|
|||
|
|
| â‘¢ | **å�Œä¼šè¯�二次抢é”� `rm -rf` é‡�建** | é”�目录å��å�ªç”±ä¼šè¯�å��派生 ⇒ 第二次抢 `src/net` 把第一次的 `src/im` 声明**冲掉** ⇒ 异会è¯�å�¯æŠ¢è¿›æ�¥ | 改为**å�ˆå¹¶**:`grep -qxF` 去é‡�å�Žè¿½åŠ è¿› `DOMAINS` ⇒ 一会è¯�一把é”�ã€�多域累积 |
|
|||
|
|
| â‘£ | **`trap` å�•æ§½ä½�互相覆盖** | bash çš„ `trap` 是**å�•一槽ä½�** —— å…ˆå�Žæ³¨å†Œä¸¤æ¬¡ï¼Œå�Žè€…**覆盖**å‰�者 ⇒ å¿…ç„¶æ¼�æ¸…ä¸€æ ·ï¼ˆå®žæµ‹æ¼� `.gate`) | æ”¶æ•›æˆ�**一个**清ç�†å‡½æ•°å�Œæ—¶æ¸…所有临时物,全æµ�程**å�ªæ³¨å†Œä¸€æ¬¡**;⚠ï¸� 且**å�ªæ¸…自己创建的**(`.gate` å�¯èƒ½æ˜¯åˆ«äººçš„ï¼Œæ— è„‘åˆ = ç ´å��别人的互斥) |
|
|||
|
|
|
|||
|
|
**⚠� 验收 hook 的�置�件(⛔ �满足就是在测错的东西)**:`_is_mine()` �求**会��与 `session_id` �时��**。
|
|||
|
|
è‹¥ä¸�设 `DSH_SESSION_NAME`,且多把é”�写ç�€**å�Œä¸€ä¸ª** `CODEBUDDY_SESSION_ID`(å�Œè¿›ç¨‹æ‰¹é‡�抢é”�必然如æ¤ï¼‰â‡’ 会è¯�å��为空 ⇒ 退到「å�ªçœ‹ idã€�分支 ⇒ **把别人的é”�认æˆ�自己的** ⇒ å�‡ç»¿æ”¾è¡Œã€‚
|
|||
|
|
⇒ **验收必须带 `DSH_SESSION_NAME=<会��>`**,并覆盖四场景:我改我域(放行)�我改他域(拦)�他改我域(拦+报精确冲�域)�他改他域(放行)。
|
|||
|
|
|
|||
|
|
**⚠� 收尾顺��律**:`--release-exec "<会��>"` **必须放在所有文件改完之�**(⛔ �带会�� ⇒ 拒�释放)。
|
|||
|
|
��放���改文件 ⇒ 被 hook 以「没有�任何��**硬拦**(fail-closed,按设计工作)⇒ �能�新抢��改。
|
|||
|
|
⇒ **改完 → 回归 → �放�**。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 实测æˆ�本基线(2026-09-17 链æ�¡ï¼Œè¿žç» 8 棒零æ–链)
|
|||
|
|
|
|||
|
|
| 棒 | 工具调用 | 积分 | 时长 | 用户轮数 |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| �③ 规划棒 | 50 | 6.66 | 10 min | 1 |
|
|||
|
|
| �③ 执行棒 | 215 | 24.65 | 41 min | 4 |
|
|||
|
|
| �④ 规划棒 | 56 | 5.73 | 6 min | 1 |
|
|||
|
|
| �④ 执行棒 | 123 | 24.90 | 23 min | 3 |
|
|||
|
|
| �⑤ 规划棒 | 25 | 7.66 | 3 min | 1 |
|
|||
|
|
| �⑤ 执行棒 | 121 | 28.76 | 21 min | 1 |
|
|||
|
|
| �⑥ 规划棒 | 23 | 9.35 | 7 min | 1 |
|
|||
|
|
| åº�â‘¥ 执行棒 | 93(进行ä¸ï¼‰ | 22.99 | — | 9 |
|
|||
|
|
|
|||
|
|
**对比旧形�**(�一�线�09-16「一� prompt 跑完整�线�):
|
|||
|
|
|
|||
|
|
| 会� | 工具调用 | 积分 | 时长 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| 规划覆盖网络任务è�½åœ°æ¥éª¤ | 207 | 77.99 | 195 min |
|
|||
|
|
| R3 接ç»ï¼ˆrelay 常驻 + via 切æ�¢ï¼‰ | 641 | 72.22 | 166 min |
|
|||
|
|
|
|||
|
|
⇒ **规划棒�本�到旧形�的 1/8–1/12**;且**�棒用户轮数 ≈ 1**(�有 automation prompt 本身,**零人工介入**)。
|
|||
|
|
|
|||
|
|
**�数方法**(已固化为脚本,一�命令出全套):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
"E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe" \
|
|||
|
|
"E:/ProgramData/.workbuddy/skills/dsh-workflow/references/dsh-auto-handoff-chain/chain_report.py" "<线�关键�>"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
它一次输出四段:①é€�会è¯�(工具调用 / 积分 / 积分æ¯�次 / **Skill 调用数** / top tools)② å�ˆè®¡ â‘¢ **自动化è¿�行链 + æ–链检测**(相邻两棒间隔 > 90 min 报 âš ï¸�)④ **过期但ä»� ACTIVE 的一次性 automation 清å�•**。
|
|||
|
|
|
|||
|
|
> **实测判读**:09-17 é‚£ 8 棒间隔全部 < 90 min(**é›¶æ–链**);09-16 æ—§å½¢æ€�è¿žç» 6 次 > 90 min(人工介入ã€�æ— æŽ¥åŠ›ï¼‰ã€‚
|
|||
|
|
|
|||
|
|
底层�径(�自己写脚本时看这三行):
|
|||
|
|
- 会�/自动化元数� → `<�置目录>/workbuddy.db`(`sessions` / `automations` / `automation_runs`)
|
|||
|
|
- �次积分 → 转录 `projects/<工作区目录�>/<sid>.jsonl`,**递归**收集 `rawUsage` 节点求和(⛔ 顶层 `d.get("rawUsage")` 抓�到)
|
|||
|
|
- 工具调用次数 → å�Œä¸€ä»½ jsonl 里数 `type == "function_call"` çš„è¡Œï¼›æ–‡æœ¬å…ƒç´ ç±»åž‹æ˜¯ `input_text` / `output_text`(⛔ ä¸�是 `"text"`,写错会é�™é»˜æŠ½ç©ºï¼‰
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. �地清�(新开一�接力链时)
|
|||
|
|
|
|||
|
|
1. **建入å�£æ–‡ä»¶** `接ç»å…¥å�£_<线å��>_<日期>.md`,把状æ€�ã€�定åº�ã€�`§2「🎯 本轮动作ã€�å�—` 写进去
|
|||
|
|
2. **让 `state.py` 能读到它**(状�脚本的 `[入�]` 段�展开入� §2 ⇒ 钉在 §2 顶部�有用)
|
|||
|
|
3. **定�**:把整�线切�「规划棒①→执行棒①→规划棒②→…�,并**写进入� §0**
|
|||
|
|
4. **起第一棒**:`automation_update` 建一次性 automation(`+5~8 分钟`,� §3.1.1 �律①),prompt 照 §2 骨架填
|
|||
|
|
5. **æ¯�棒收尾走完 §3 四件套**(其ä¸ç¬¬ â‘¡ ä»¶**å‰�ç½® §3.3 登记门ç¦�**)—— 推进 §2 + 登记下一棒;🔴 **å�Œä¸€æ—¶åˆ»å�ªæŒ‚ä¸€ä¸ªæŽ¥ç»æ£’**:本棒å�ªæŽ’"下一棒"一棒,å�Žç»é¡¹å†™è¿›å…¥å�£ §2 的「â�ï¸� 本线下一项ã€�行,⛔ ä¸�预登记队列
|
|||
|
|
6. **收�**:链�跑完时,最�一棒�登记下一棒,改为**明确告知用户"链�已完结"**
|
|||
|
|
7. **é�‡åˆ°æ‹�æ�¿ç‚¹**:å�œåœ¨ã€Œå¾…ä½ æ‹�æ�¿ã€�节(候选竖排 + 优缺点 + 我的倾å�‘),**并明确告知链æ�¡å·²æš‚å�œ**ï¼›ç‰ç”¨æˆ·æ‹�æ�¿å�Žå†�由当时会è¯�登记下一棒
|
|||
|
|
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## å�˜æ›´åކå�²ï¼ˆåŽŸ frontmatter · é€�å—ä¿�留)
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
name: dsh-auto-handoff-chain
|
|||
|
|
description: 长任务「多棒自动接力ã€�编排法 —— 把一个跨越多个上下文窗å�£çš„大任务,拆æˆ�「规划棒 ↔ 执行棒ã€�交替的一次性自动化链æ�¡ï¼Œæ¯�棒å�šå®Œè‡ªåŠ¨å¼€æ–°ä¼šè¯�接下一棒,**全程零人工点击**。当用户说「自动新建会è¯�接ç»å¤„ç�†ã€�「接力跑下去ã€�「多æ¥éª¤ä»»åŠ¡è‡ªåŠ¨æŽ¨è¿›ã€�「跑完一棒自动接下一棒ã€�ã€Œæ— äººå€¼å®ˆæŽ¨è¿›ã€�,或一个任务预计è¦�è·¨ ≥3 个会è¯� / 超过一个上下文窗å�£æ—¶è§¦å�‘ã€‚æ ¸å¿ƒ = å…件套 prompt 骨架(状æ€�å�•点 → 唯一执行ä¾�æ�®æŒ‡é’ˆ → 全局é”� → å�•一动作 → æˆ�本纪律 → 收尾四件套)+ **登记门ç¦�(★è¦�æ‹�æ�¿çš„ï¼Œç‰æ‹�了å†�登记 —— 用户 2026-09-17 明令,当天已有实测事故 §3.3.1)** + 七æ�¡å®žæµ‹é˜²æŠ¤ï¼ˆæ–链 / å�Œå¼€ / once ä¸�转完æˆ�æ€� / 跨过æ‹�æ�¿ç‚¹ / **下一棒定太晚** / **é¢„ç™»è®°å¤šä¸ªæŽ¥ç»æ£’** / **é‡�挂改时间ä¸�触å�‘(必须新建)**,排期纪律è§� §3.1.1)⛔ **投å�• ≠å�¯åŠ¨ï¼ˆÂ§3.1.3,09-28 实测)**:给别æ�¡çº¿æŠ•å·¥å�•+在对方入å�£åŠ æŒ‡é’ˆ**ä¸�产生任何动作**(automation å…¨è¡¨æ— ä¸€æ�¡ `cwds` 指å�‘那个工作区 ⇒ 对方**当天零活动**,用户直接问「为什么å�¦ä¸€ä¸ªä¼šè¯�还没开å�‘ appã€�)⇒ å¿…é¡»**补一æ�¡ `once` automation**,`cwds` = 对方工作区;⚠ï¸� 投å�•å‰�还è¦�æ ¸å¯¹å¯¹æ–¹ã€Œå¼€å·¥ä¾�æ�®ã€�是å�¦ä»�æˆ�立(实测其ä¾�èµ–ç›®å½•å·²åˆ ï¼‰ï¼Œå¹¶åœ¨æ£’é‡Œå†™æ˜Žã€Œå±€é�¢å·²å�˜ã€�â›” 别按旧入å�£åŠžã€�。+ 实测æˆ�本基线 + å¤�跑脚本 `scripts/chain_report.py`。⛔ **排期两æ�¡é“�律(§3.1.1,用户 2026-09-18 明令)**ï¼šé¦–ä¸ªï¼ˆå”¯ä¸€ï¼‰æŽ¥ç»æ£’ = æ”¶å�£ + **5~8 分钟**ï¼›**å�Œä¸€æ—¶åˆ»å�ªæŒ‚ä¸€ä¸ªæŽ¥ç»æ£’**,下一棒由当棒收官时å†�排。⛔ 两æ�¡å…³é”®åˆ¤æ�®ï¼š**prompt 里ç»�ä¸�抄任务细节**(细节å�ªæœ‰ä¸€ä¸ªæ¼‚ç§»æº� = å…¥å�£æ–‡ä»¶çš„「本轮动作ã€�å�—);**先判「是ä¸�是è¦�æ‹�æ�¿ã€�ï¼Œæœªå‘½ä¸æ‰�轮到「候选排ä¸�排得出优劣ã€�—— 顺åº�é¢ å€’å°±ä¼šè‡ªæˆ‘æ‰©æ�ƒ**。⛔ **工作区归属五律(§0.6,2026-09-21 立①②③④ / 09-22 åŠ â‘¤ï¼‰**:入å�£æ–‡ä»¶å�ªå…�许一份(在本工作区)· automation çš„ `cwds` = 本工作区 · å�‚考接ç»è§„则用本技能(ä¸�是去读别的工作区的文档)· 🔴 **`cwds` å�ªå†™ã€Œä¸Žæ‰‹åŠ¨å¼€ä¼šè¯�çš„ cwd é€�å—å�Œå½¢ã€�(判æ�® = 实测 `sessions.cwd`ï¼›**当å‰�æ£è§£ = `E:/ProgramData/AIProject/ai1net-dsh-server` æ£æ–œæ� **)**(`E:/…` ✅ï¼�`E:\…` â�Œï¼�`e:\…` â�Œ ⇒ å�Œä¸€å·¥ä½œåŒºåœ¨ UI 里裂æˆ�**两个å�Œå��会è¯�分组**,实测 09-22 æ–œæ� æ–¹å�‘ã€�09-23 盘符大å°�写**两次**;⚠ï¸� 宿主去é‡�é”® = `path.trim().toLowerCase()` ⇒ **å�ªå°�写ã€�ä¸�统一斜æ� **(09-24 代ç �级实è¯�))。⛔ **å�Œå��镜åƒ�目录(§0.6 戊类 · 2026-09-27 实测)**:入å�£æ–‡ä»¶å�Œæ—¶å˜åœ¨äºŽ**两个真目录**(如 `…\ProgramData\…` 与 `…\ProgramDSH\…`)⇒ â‘ å�Œä¸€å·¥ä½œåŒºè£‚æˆ�**两个å�Œå��会è¯�分组** â‘¡ dsh é”�按 `--ws` 分命å��空间 ⇒ **两处å�„一把é”�ã€�互ä¸�排斥(ç‰äºŽæ²¡ä¸Šé”�)** â‘¢ å…¥å�£åˆ†å�‰ï¼›åˆ¤æ�® = **ç£�ç›˜ä¸Šåˆ°åº•æœ‰å‡ ä¸ªå�Œå��目录** + 实测 `sessions.cwd` æ�¡æ•°æœ€å¤šé‚£æ�¡ï¼›âš ï¸� 镜åƒ�目录**ä¸�是空壳**(å�¯èƒ½æœ‰ `bundles\`ï¼�`docs\` 骨架),⛔ 别看入å�£é‡Œçš„「æ�¥æº�会è¯�ï¼�资产路径ã€�判工作区。⛔ **己类(2026-09-27 实测)**:入å�£é‡Œå£°æ˜Žçš„**工作区路径在ç£�盘上ä¸�å˜åœ¨**(æ�¬å®¶æˆ–改å��å�Žå�ªæ�¬ç›®å½•ã€�没回填入å�£å¤´éƒ¨ —— 实测 `session-mechanism-laya` vs 真实目录 `ai1net-decision-laya`,入å�£å†… 33 处旧å��)⇒ 照抄登记会**å‡ç©ºæ–°å»ºä¸€ä¸ªå¹½ç�µåˆ†ç»„**;判æ�® = 把入å�£é‡Œæ¯�处「工作区 = …ã€�é€�æ�¡ `Test-Path`,任一ä¸�æˆ�ç«‹å�³ä»¥**实测 `sessions.cwd`** 为准回填(⛔ 别按旧å��去新建目录)。🔴 **「å�œç»´æŠ¤ã€�≠「å�œç”¨ã€�**:定完唯一æ�ƒå¨�å�Žï¼Œæ—§ä¾§é‚£ä»½å…¥å�£**必须就地改æˆ�跳转 stub**,å�ªå†™ä¸€å�¥"旧副本å�œç»´æŠ¤"**ä¸�ç®—æ”¶å�£** —— 实测两æ�¡çº¿å› æ¤å�„ç•™äº†ä¸€ä»½å®Œæ•´æ—§æ£æ–‡ï¼Œå½“晚已分å
|
|||
|
|
version: 1.7.5
|
|||
|
|
updated_at: 2026-09-28
|
|||
|
|
created_from: 覆盖网络线 19 个会è¯�(2026-09-16 ~ 09-17)的实测å¤�盘 —— 09-17 链æ�¡è¿žç» 8 棒零æ–链,规划棒æˆ�本é™�至旧形æ€�çš„ 1/8–1/12
|
|||
|
|
last_change: ã€�2026-09-28 跨线交付æ¼�排棒】新增 §3.1.3「**投å�• ≠å�¯åЍ**ã€�—— 实测:给å�¦ä¸€æ�¡çº¿æŠ•了对接å�•+在对方入å�£åŠ äº†æŒ‡é’ˆï¼Œä½† automation 全表**æ— ä¸€æ�¡** `cwds` 指å�‘该工作区 ⇒ 对方**当天零活动**(用户直接问「为什么å�¦ä¸€ä¸ªä¼šè¯�还没开å�‘ appã€�)。判æ�® = 投完å�•必自问「**è¿™å¼ å�•ç”±è°�ã€�在什么时候读**ã€�;没有 automation å°±**立刻补一æ�¡ `once`**(`cwds` = 对方工作区)。附两æ�¡ï¼šâ‘ 投å�•å‰�è¦�æ ¸å¯¹å¯¹æ–¹ã€Œå¼€å·¥ä¾�æ�®ã€�是å�¦ä»�æˆ�立(实测其ä¾�赖的宿主目录**å·²è¢«åˆ é™¤** ⇒ 拉起æ�¥ä¹Ÿä¼šå¤±è´¥ï¼Œé¡»åœ¨æ£’里写明「局é�¢å·²å�˜ã€�â›” 别按旧入å�£åŠžã€�);② 跨线排棒若涉å�Š**自己æ£åœ¨ç”¨çš„æ–‡ä»¶** ⇒ 设æˆ�「**å�ªè¯»æ ¸å¯¹ + 出结论**ã€�防两æ�¡çº¿æ’žè½¦ã€‚æ¤å‰� 09-27:ã€�2026-09-27 å…¨åº“ä½“æ£€ã€‘åŠ Â§0.6「己·入å�£å£°æ˜Žçš„工作区与ç£�盘ä¸�符ã€�æˆ�å› ç±»ï¼ˆâ†’ å…类)+「å�œç»´æŠ¤ ≠å�œç”¨ã€�é“�律(旧侧入å�£å¿…须改 stub)+ 实测事故·四(全库 7 工作区扫æ��,附å¤�跑脚本 `scripts/audit-mirror.py`)。
|
|||
|
|
agent_created: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## å�˜æ›´åކå�²ï¼ˆ**对侧副本** frontmatter · é€�å—ä¿�ç•™ · æ�¥è‡ª `dsh-auto-handoff-chain` çš„ 文档库 版)
|
|||
|
|
|
|||
|
|
> âš ï¸� æœ¬æ¡£æ£æ–‡å�–自**å�¦ä¸€ä¾§**(超集);æ¤å¤„补上对侧副本的版本å�²ï¼Œâ›” 以ä¿�è¯�ä¸�丢任何事实。
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
name: dsh-auto-handoff-chain
|
|||
|
|
description: 长任务「多棒自动接力ã€�编排法 —— 把一个跨越多个上下文窗å�£çš„大任务,拆æˆ�「规划棒 ↔ 执行棒ã€�交替的一次性自动化链æ�¡ï¼Œæ¯�棒å�šå®Œè‡ªåŠ¨å¼€æ–°ä¼šè¯�接下一棒,**全程零人工点击**。当用户说「自动新建会è¯�接ç»å¤„ç�†ã€�「接力跑下去ã€�「多æ¥éª¤ä»»åŠ¡è‡ªåŠ¨æŽ¨è¿›ã€�「跑完一棒自动接下一棒ã€�ã€Œæ— äººå€¼å®ˆæŽ¨è¿›ã€�,或一个任务预计è¦�è·¨ ≥3 个会è¯� / 超过一个上下文窗å�£æ—¶è§¦å�‘ã€‚æ ¸å¿ƒ = å…件套 prompt 骨架(状æ€�å�•点 → 唯一执行ä¾�æ�®æŒ‡é’ˆ → 全局é”� → å�•一动作 → æˆ�本纪律 → 收尾四件套)+ **登记门ç¦�(★è¦�æ‹�æ�¿çš„ï¼Œç‰æ‹�了å†�登记 —— 用户 2026-09-17 明令,当天已有实测事故 §3.3.1)** + 七æ�¡å®žæµ‹é˜²æŠ¤ï¼ˆæ–链 / å�Œå¼€ / once ä¸�转完æˆ�æ€� / 跨过æ‹�æ�¿ç‚¹ / **下一棒定太晚** / **é¢„ç™»è®°å¤šä¸ªæŽ¥ç»æ£’** / **é‡�挂改时间ä¸�触å�‘(必须新建)**,排期纪律è§� §3.1.1)+ 实测æˆ�本基线 + å¤�跑脚本 `scripts/chain_report.py`。⛔ **排期两æ�¡é“�律(§3.1.1,用户 2026-09-18 明令)**ï¼šé¦–ä¸ªï¼ˆå”¯ä¸€ï¼‰æŽ¥ç»æ£’ = æ”¶å�£ + **5~8 分钟**ï¼›**å�Œä¸€æ—¶åˆ»å�ªæŒ‚ä¸€ä¸ªæŽ¥ç»æ£’**,下一棒由当棒收官时å†�排。⛔ 两æ�¡å…³é”®åˆ¤æ�®ï¼š**prompt 里ç»�ä¸�抄任务细节**(细节å�ªæœ‰ä¸€ä¸ªæ¼‚ç§»æº� = å…¥å�£æ–‡ä»¶çš„「本轮动作ã€�å�—);**先判「是ä¸�是è¦�æ‹�æ�¿ã€�ï¼Œæœªå‘½ä¸æ‰�轮到「候选排ä¸�排得出优劣ã€�—— 顺åº�é¢ å€’å°±ä¼šè‡ªæˆ‘æ‰©æ�ƒ**。⛔ **工作区归属五律(§0.6,2026-09-21 立①②③④ / 09-22 åŠ â‘¤ï¼‰**:入å�£æ–‡ä»¶å�ªå…�许一份(在本工作区)· automation çš„ `cwds` = 本工作区 · å�‚考接ç»è§„则用本技能(ä¸�是去读别的工作区的文档)· 🔴 **`cwds` å�ªå†™ã€Œä¸Žæ‰‹åŠ¨å¼€ä¼šè¯�çš„ cwd é€�å—å�Œå½¢ã€�(判æ�® = 实测 `sessions.cwd`ï¼›**当å‰�æ£è§£ = `E:/ProgramData/AIProject/aliyun-dsh-server` æ£æ–œæ� **)**(`E:/…` ✅ï¼�`E:\…` â�Œï¼�`e:\…` â�Œ ⇒ å�Œä¸€å·¥ä½œåŒºåœ¨ UI 里裂æˆ�**两个å�Œå��会è¯�分组**,实测 09-22 æ–œæ� æ–¹å�‘ã€�09-23 盘符大å°�写**两次**;⚠ï¸� 宿主去é‡�é”® = `path.trim().toLowerCase()` ⇒ **å�ªå°�写ã€�ä¸�统一斜æ� **(09-24 代ç �级实è¯�))。🔴🔴 **活库改动é“�律(§0.7,09-23 血教è®ï¼‰**:动 `workbuddy.db` å‰�**必须先确认 app 已关**,⛔ **ç¦�æ¢æ–‡ä»¶çº§ `cp`/`mv`**(WAL 三件套会 salt é”™ä½� ⇒ `file is not a database`),改数æ�®**å�ªèµ° SQL 连接**ã€�备份与æ�¢å¤�**都三件套一起**ã€�改完必跑 `integrity_check`。
|
|||
|
|
version: 1.7.2
|
|||
|
|
updated_at: 2026-09-23
|
|||
|
|
created_from: 覆盖网络线 19 个会è¯�(2026-09-16 ~ 09-17)的实测å¤�盘 —— 09-17 链æ�¡è¿žç» 8 棒零æ–链,规划棒æˆ�本é™�至旧形æ€�çš„ 1/8–1/12
|
|||
|
|
last_change: ã€�2026-09-22 按è¦�求统一版本å�·ã€‘frontmatter `version` → `1.0.0`(原 v1.5.0ï¼‰ï¼›æ£æ–‡ä¸Žåކå�²ä¸çš„版本å�·ä¸ºå½“时记录,未改动。
|
|||
|
|
agent_created: true
|
|||
|
|
```
|