coding-agents
vectorize-io/hindsightHindsight:会学习的 Agent 长期记忆系统,自动召回/保存、知识页、深度反思与按仓库隔离的记忆银行。
双账本跨会话记忆:自动把对话中的长期事实提取进 MEMORY.md,并维护项目进度账本 PROGRESS.md,每个新会话自动召回两本账。
DeepSeek Harness 的双账本跨会话记忆插件。
设计灵感来自 OpenAI 开源编码代理 Codex 的记忆管线。dsh-memories 让同一项目里的每个新会话都能读到两本自动维护的活账本:
| 账本 | 文件 | 回答的问题 |
|---|---|---|
| 长期事实 | .dsh/memories/MEMORY.md | 这个项目的规矩是什么?用户偏好什么?踩过哪些坑? |
| 项目进度 | .dsh/memories/PROGRESS.md | 做到哪了?已完成什么?正在做什么?接下来做什么? |
两本账都由插件在后台自动维护,并在每个新会话开始时自动注入 AI 视野——不需要你反复交代背景。
.bak 备份remember / update_progress 工具让 AI 主动记账;/remember /progress /memories 给人直接控制权部署需提供标准宿主平面服务:
fs · llm · sessionQuery · systemPrompt · tools · commands · sandboxPolicy
(全部来自默认 dsh-base 组装;已在 dsh 0.1.0-rc.9 实测)
dsh plugin --profile web add dsh-memories
插件管理器会读取本仓库自带的 cordis.patch.yml,自动完成接线。需要发布了 bundle manifest 的版本——当前 npm 上的 0.1.2 还没有,下次发布前请先用方式 A。
cd ~/.dsh/profiles/web # 你实际运行的 profile
npm install <git 地址或 tarball> # 包会进入 ./node_modules
然后在 ~/.dsh/profiles/web/cordis.patch.yml 追加一行。用相对路径指向入口文件——这是 pnpm 管理 profile 下被验证可行的引用方式(patch 行里的裸包名不可靠):
- insert:
- id: dsh-memories
name: './node_modules/dsh-memories/lib/index.js'
也可以走 npm 原生方式:在 profile 的 package.json 里把 "dsh-memories": "*" 加入 dependencies、把 "dsh-memories" 加入 dsh.profile.bundles,然后 pnpm install,无需 patch 行。
把整个仓库文件夹复制到 ~/.dsh/profiles/web/node_modules/dsh-memories,再按上面加同样的 patch 行。
重启 DSH 一次即完成。之后插件随启动加载,全程静默工作。
如果你之前用过本插件的动态版本(cordis_define 创建的 mem-*),重启前请先移除它,避免工具重复注册。
日常无需任何操作。需要直接控制时:
| 命令 / 工具 | 效果 |
|---|---|
/remember <事实> | 向当前项目的长期记忆追加一条并触发整理 |
/memories | 状态总览:已处理数、草稿文件、账本预览、最近错误 |
/memories rescan | 立刻重新扫描最近对话 |
/memories reset | 清空"已处理登记",让近期对话重新被提炼 |
/progress | 查看 PROGRESS.md |
/progress <说明> | 手动补记一条进度 |
模型工具 remember(fact, category?, pinned?) | AI 在对话中主动沉淀稳定事实 |
模型工具 update_progress(completed?, doing?, next?) | AI 在里程碑处更新进度账本 |
自然语言也可以:直接说"帮我记住:……",AI 会调用同样的工具。
<你的项目>/.dsh/memories/
├── MEMORY.md # 整理后的长期事实(四节:偏好/项目/环境/经验)
├── MEMORY.md.bak # 上一次版本备份
├── PROGRESS.md # 项目进度(已完成 / 进行中 / 下一步)
├── PROGRESS.md.bak
└── raw/ # 未整理的草稿(_manual.md、_progress.md、各会话提取笔记)
全部是纯 Markdown——随时打开看、随手改、可以 git diff。
新会话 ──▶ 扫描(同工作区、≤14天、每轮≤2篇)
│
▼
提炼(每篇一次 LLM 调用)
├─ facts[] → raw/<会话>.md
└─ progress{} → raw/_progress.md
│
▼
整理(每本账一次 LLM 调用)
├─ MEMORY.md ← 合并去重 + 30天衰减 + 四节归类
└─ PROGRESS.md ← 已完成 / 进行中 / 下一步 + 日期
│
▼
下个会话 ◀── 召回段注入系统提示
提炼 prompt 强制严格 JSON 输出(数组或 NONE)、限制条目长度、禁止机密、跳过不足 400 字的琐碎会话。整理 prompt 强制章节格式与篇幅预算(事实 ≤100 行、进度 ≤60 行)。
~/.codex/memories 那种)规划通过 globalDir 配置实现MIT