# 全链路验证记录(2026-08-18) > 本文记录 dsh-simple-memory 在测试仓库(hud-simple、memory-test-proj)里跑完整记忆系统 > 设计流程的过程与结果。目的:给"效果待测试"提供实证材料,也给后续维护留底。 > 状态:核心链路已通,真实使用效果待长期观察。 ## 测试场地 | 仓库 | 用途 | |---|---| | hud-simple(plugin-dev 下真实插件仓库) | 迁移前的记忆测试场地(含 踩坑-测试端口占用) | | memory-test-proj(新建测试项目) | 方案 A 后跨项目记忆/自动建目录验证 | | 全局记忆根(~/Documents/DSH/memory) | 全局 common/ + projects/ + staging + archive | ## 验证流程与结果 ### 1. 写入链路 - [x] project 写入(落 projects/<项目名>/)✅ 格式正确(日期首行/分类-主题.md/≤2KB) - [x] global 写入(工作区外)✅ 沙箱拒绝 → 提权 → 审批 → 写入 - [x] 非法参数校验 ✅ 空字段/超长/非法字符均正确拒绝 - [x] 自动建目录 ✅ 项目目录不存在时首次写入自动创建(mkdirSync recursive) ### 2. 索引注入 - [x] 每会话首步注入 ✅ 主会话 + 子代理(新会话)独立验证 - [x] 发现并修复 bug:进程级开关(injected=false)→ 按 session.id 记(injectedSessions Set) - [x] 覆盖盲区修复:记忆根游离文件(决策-记忆系统架构.md)现可注入 ### 3. 升格/遗忘/归档 - [x] 升格:项目记忆 → staging.md 入池 → 提炼入 common/ → 出池删条目 ✅ - [x] 遗忘:活跃 → archive/ ✅ 退出索引(grep 命中但索引不显示) - [x] git commit:`mem: 记/升格/遗忘/整理` 格式 ✅(全局记忆仓库独立 git) ### 4. 检索/搜索 - [x] grep 覆盖所有项目 + 全局 + 冷区 ✅(方案 A 迁移后) - [x] 跨项目检索 ✅ 一次 grep 同时命中 hud-simple / memory-test-proj / dsh-simple-memory - [x] 发现并修复 bug:.gitignore 隔离 memory/ 导致 grep 搜不到 → 记忆统一收全局根 ### 5. HTTP 端点 / UI - [x] status / list / read / init / config 全部实测 ✅ - [x] 平级项目列表(projects 数组带项目名)✅ - [x] 路径穿越防御(project/../etc/passwd → 404)✅ - [x] 配置 UI:globalMemoryDir 读/写 patch 文件 ✅(改后重启生效) ### 6. 手动交互(用户验证) - [x] 灯泡按钮/设置页/浏览记忆/记忆流程 ①-④ 用户点击确认 ✅ ## 测试产物(记忆仓库内留痕) - projects/hud-simple/踩坑-测试端口占用.md(旧测试) - projects/memory-test-proj/踩坑-测试项目记忆.md(跨项目测试) - projects/dsh-simple-memory/流程-跨项目记忆测试.md、流程-方案A回归验证.md、踩坑-记忆系统链路测试.md(链路测试) - 全局记忆仓库 git log 完整记录每次 mem: 操作 ## 发现并修复的问题清单 | # | 问题 | 修复 | |---|---|---| | 1 | 插件未加载(bundles 清单漏) | package.json bundles 补条目 | | 2 | host.call 在静态 bundle 不存在 | 改 webServer HTTP 路由 + fetch | | 3 | memory-write 裸调 fs 被沙箱拒 | resolve 会话策略 + 提权参数 | | 4 | gitignore 挡 grep 搜项目记忆 | 方案 A:记忆统一收全局根 projects/ | | 5 | 索引进程级开关只注入一次 | 按 session.id 记(Set) | | 6 | 记忆根游离文件不入索引 | buildIndex 扫记忆根根目录 | | 7 | 浏览记忆与 HUD 重叠/关不掉 | shell.overlay → 设置页内嵌 | ## 遗留 / 待观察 - 真实使用效果(提醒频率、检索命中率、记忆质量)→ 待长期使用验证