fix(role): 近期工作記憶注入全文,不再只給一句 summary #22

Merged
admin merged 2 commits from develop into master 2026-07-29 04:59:58 +00:00
Member

問題

重開工作階段後,角色仍答不出「上一段進行到哪」。

memory.jsinboxBlock() 迴圈寫成 for (const [meta] of recent) —— 只解構了 metadata,content(body)從頭到尾沒被用到。SessionStart 注入的「近期工作記憶」因此只有一行 summary

### 近期工作記憶(未整理,最新在前)
- 12:36 重開前的進度快照:西莉卡已建立待派工驗證,兩端皆 0.0.6(進度快照、西莉卡、待驗證)

summary 是一句話的標題,只夠讓角色知道「有這件事」,講不出還差什麼、下一步是什麼。實測角色仍得自己去翻 inbox/ 檔案才答得出內容,交接等於失效。長期記憶的「(全文)」區塊本來就會注入 body(cmdLoad),inbox 更近、更該給。

改了什麼

檔案 變更
scripts/role/memory.js inboxBlock() 注入全文 body;預算改逐則計費,超出整則略過並誠實計數;最新一則永遠保留
scripts/role/memory.js DEFAULT_LOAD_INBOX_LIMIT 12003600
skills/role/SKILL.md 環境變數表、SessionStart 說明、交接兩層表同步;補「為什麼必須注入全文」的理由

預算改逐則計費的原因:原本是整段組好再 slice(0, limit) 硬切,放全文後會把最舊那則砍成半句,讀起來像壞掉的資料。

1200 是「只注入 summary 一行」時代的額度;改注入全文後單則約 300~600 字元,1200 只夠兩則就開始丟最舊的。3600 約可容納 6~8 則,足以覆蓋一次睡眠整理週期內的工作。

效果

### 近期工作記憶(未整理,最新在前,含全文)
- 12:36 **重開前的進度快照:西莉卡已建立待派工驗證,兩端皆 0.0.6**(進度快照、西莉卡、待驗證)
  - 重開是為了驗證三件事:對話交接是否記得、同伴清單是否出現、Agent 工具是否看得到
  - 已完成:plugin 命名空間分離、記憶交接、召回統計…
  - 重開後第一件事:確認能否派 sub agent 做一件小事

驗證

情境 結果
node --check scripts/role/memory.js 通過
預設預算(3600) 兩則 inbox 全文完整注入
--inbox-limit 500 保留最新一則全文,標示「另有 1 則…未載入」
--inbox-limit 120 最新一則自截並標示「(本則內文已截斷)」
--inbox-limit 0 區塊關閉,長期記憶不受影響
空 inbox 角色 / 不存在角色 不輸出區塊,不報錯

無其他程式讀取 inboxBlock 的輸出格式,長期記憶區塊未受影響。

版本

master 現行 0.0.7 → 本 PR 升 0.0.8(三家 manifest 同步)。

🤖 Generated with Claude Code

## 問題 重開工作階段後,角色仍答不出「上一段進行到哪」。 `memory.js` 的 `inboxBlock()` 迴圈寫成 `for (const [meta] of recent)` —— 只解構了 metadata,**`content`(body)從頭到尾沒被用到**。SessionStart 注入的「近期工作記憶」因此只有一行 `summary`: ``` ### 近期工作記憶(未整理,最新在前) - 12:36 重開前的進度快照:西莉卡已建立待派工驗證,兩端皆 0.0.6(進度快照、西莉卡、待驗證) ``` `summary` 是一句話的標題,只夠讓角色知道「有這件事」,講不出還差什麼、下一步是什麼。實測角色仍得自己去翻 `inbox/` 檔案才答得出內容,交接等於失效。長期記憶的「(全文)」區塊本來就會注入 body(`cmdLoad`),inbox 更近、更該給。 ## 改了什麼 | 檔案 | 變更 | | --- | --- | | `scripts/role/memory.js` | `inboxBlock()` 注入全文 body;預算改逐則計費,超出整則略過並誠實計數;最新一則永遠保留 | | `scripts/role/memory.js` | `DEFAULT_LOAD_INBOX_LIMIT` `1200` → `3600` | | `skills/role/SKILL.md` | 環境變數表、SessionStart 說明、交接兩層表同步;補「為什麼必須注入全文」的理由 | 預算改逐則計費的原因:原本是整段組好再 `slice(0, limit)` 硬切,放全文後會把最舊那則砍成半句,讀起來像壞掉的資料。 `1200` 是「只注入 summary 一行」時代的額度;改注入全文後單則約 300~600 字元,1200 只夠兩則就開始丟最舊的。3600 約可容納 6~8 則,足以覆蓋一次睡眠整理週期內的工作。 ## 效果 ``` ### 近期工作記憶(未整理,最新在前,含全文) - 12:36 **重開前的進度快照:西莉卡已建立待派工驗證,兩端皆 0.0.6**(進度快照、西莉卡、待驗證) - 重開是為了驗證三件事:對話交接是否記得、同伴清單是否出現、Agent 工具是否看得到 - 已完成:plugin 命名空間分離、記憶交接、召回統計… - 重開後第一件事:確認能否派 sub agent 做一件小事 ``` ## 驗證 | 情境 | 結果 | | --- | --- | | `node --check scripts/role/memory.js` | 通過 | | 預設預算(3600) | 兩則 inbox 全文完整注入 | | `--inbox-limit 500` | 保留最新一則全文,標示「另有 1 則…未載入」 | | `--inbox-limit 120` | 最新一則自截並標示「(本則內文已截斷)」 | | `--inbox-limit 0` | 區塊關閉,長期記憶不受影響 | | 空 inbox 角色 / 不存在角色 | 不輸出區塊,不報錯 | 無其他程式讀取 `inboxBlock` 的輸出格式,長期記憶區塊未受影響。 ## 版本 `master` 現行 `0.0.7` → 本 PR 升 `0.0.8`(三家 manifest 同步)。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jiantw83 added 2 commits 2026-07-29 04:58:36 +00:00
重開工作階段後角色仍答不出「上一段進行到哪」:inboxBlock() 的迴圈只解構
了 [meta],content(body)從頭到尾沒被用到,因此 SessionStart 注入的
「近期工作記憶」只有一行 summary。summary 是一句話的標題,只夠讓角色知道
「有這件事」,講不出還差什麼、下一步是什麼 —— 實測角色仍得自己去翻
inbox/ 檔案才答得出內容,交接等於失效。長期記憶的「(全文)」區塊本來就
會注入 body(cmdLoad),inbox 更近、更該給。

預算改成逐則計費:原本是把整段組好再 slice(0, limit) 硬切,放全文後會把
最舊那則砍成半句,讀起來像壞掉的資料。改成超出預算就整則略過,並在結尾
誠實標示略過幾則;最新一則永遠保留,必要時只截它自己的內文。

ROLE_LOAD_INBOX_LIMIT 預設 1200 → 3600。1200 是「只注入 summary 一行」
時代的額度,改注入全文後單則約 300~600 字元,1200 只夠兩則就開始丟最舊
的。3600 約可容納 6~8 則,足以覆蓋一次睡眠整理週期內的工作。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
admin approved these changes 2026-07-29 04:59:56 +00:00
admin merged commit 627f8e6b90 into master 2026-07-29 04:59:58 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/shared#22