前言¶
在 DeepSeek Harness(DSH)里跑智能体,常见痛点不是代码丢了,而是上下文丢了:隔几个月没人记得某个决定为何这么定;换会话或换 agent 要从头翻聊天记录;踩过的坑换个 agent 再踩一遍;记录越写越多,却找不到「现在做到哪了」。变更日志和任务清单能管一部分,但往往管不住「过程证据、导航索引、可复用经验」这三件事。dsh-lore 是社区插件目录里归类为「记忆」的一款包,把过程记录、索引台账和经验沉淀收进一套可读、可查、可校验的文档体系,并通过 DSH profile 注册技能、注入记忆、提供 worklog_memory 工具。
这是什么¶
dsh-lore 由维护者 IThinkItsaName 发布,GitHub 仓库 IThinkItsaName/dsh-lore 当前版本为 0.9.5(MIT 许可证)。官方简介是:面向 AI agent 的长期项目工作日志系统(软件、研究、写作、设计、运营等),包含过程日志、索引台账与经验手册,并附带仅依赖 Python 标准库的工具箱。
一句话概括 README 的定位:过程留证据,索引管导航,经验可复用。 换会话、换 agent,甚至接手的 agent 没有安装本插件,只要项目里保留了技能层文档与 journal.py,仍可按约定继续读写。
三层结构¶
下面介绍插件如何把职责拆开;三层可以只用其中一层,也不限定编程类项目。
| 层 | 位置 | 职责 |
|---|---|---|
| 技能层 | 项目内 work_log/ |
过程记录、索引台账、经验手册;journal.py 工具箱(纯 Python 标准库,不需要 DSH) |
| 记忆层 | 工作区之外(默认 ~/dsh-lore-memory) |
跨工作区事实:来源分档、索引、收敛、信箱 |
| 插件层 | DSH profile | 技能注册、记忆注入、worklog_memory 工具、配置卡片 |
README 说明:技能层已独立成库 project-work-log(2026-10-19 起有独立仓库与发布节奏);本包在 skills/project-work-log/ 保留 vendored 副本供插件运行,并由 tools/sync-skill.mjs --check 防止与上游漂移。pi 或其它 Agent Skills 场景应使用独立仓库路径(文档写明 publish/project-work-log/ 尚未发布),不宜从本包单独拆技能层当长期来源。
它不是变更日志(工作区整理、取证、环境变动都会记,「变更集」只是可选字段);不是任务管理器(待办只是滚动清单);不是插件专属(技能层可独立运行)。
核心功能¶
技能层:journal.py¶
规则集中在 journal.py:写入、索引、lint 都在这一处;插件不重写格式,只做薄包装(例如 send 会调用 journal.py inbox put)。
安装插件后,技能目录通常在 ~/.dsh/skills/project-work-log,或工作区 .dsh/skills/。不知道路径时可先列出上述目录。<skill> 即该技能根路径。
DSH 插件侧¶
worklog_memory工具:检索全局记忆、收发信箱、列会话;只处理工作区之外的记忆层。项目内work_log/台账仍用journal.py与普通文件工具,插件不替代它们。- 记忆注入:经验层资源提示常驻(英文,与系统提示其余部分一致,含写入提示);记忆索引进可缓存前缀;未读信箱仅在有时尾注入。
- 配置卡片:技能开关、记忆开关与目录、诊断日志等;字段归属与生效时机见仓库
SETTINGS.md。 - Bundle 补丁:
cordis.patch.yml启用skill-filesystem并登记本包;自带技能的 DSH 包必须打开skill-filesystem,本包已在补丁中处理。
随包还有技能 client-require-whitelist(客户端 require 白名单检查),默认关闭。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证,确认符合你的安全与合规要求。
CLI 安装(非桌面托管 profile)¶
# 装插件:注册技能、注入记忆、提供 worklog_memory 与设置卡片,并登记进 profile 的 bundles
dsh plugin --profile <profile> add dsh-lore@v0.9.5
# 卸插件:依赖、bundles 条目、node_modules 一起清掉
dsh plugin --profile <profile> remove dsh-lore
README 注明:桌面端用户可在插件页安装/卸载;Electron 托管的 profile 会拒绝 CLI 操作(报错形如 profile "desktop" is managed exclusively by the Electron application)。另外不要用 dsh plugin … install <本地目录>:pnpm 会为本地目录建 junction,卸载时可能删不掉,下次换装报 ERR_PNPM_EPERM(详见仓库 PUBLISHING.md §7)。
社区目录页:skillhub.cn 上的 dsh-lore。目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
依赖方面,package.json 声明 peerDependencies 包括 @deepseek-ai/dsh-tools、@deepseek-ai/dsh-llm、@deepseek-ai/schemastery 等,需与当前 DSH 环境匹配。
典型用法¶
在项目里让 agent 建日志¶
安装后可在项目里让 agent「建工作日志 / 留个记录」,或手动执行(ROOT 为项目根,命令接受 [ROOT] 或 --root):
ROOT=.
python <skill>/scripts/journal.py new --title "标题" --insert
python <skill>/scripts/journal.py brief
python <skill>/scripts/journal.py check --strict --lint
brief 一屏展示状态、待办与近期记录;check --strict --lint 做结构与内容两道门禁。仓库门禁全绿不等于你的项目记录合格,项目容器仍需跑上述 check。
日常操作对照¶
| 你想做的事 | 用什么 |
|---|---|
| 接手项目,先看坐标 | journal.py brief |
| 看最近几篇各自做到哪 | journal.py snapshot --entries 12 |
| 找旧结论 | journal.py search "关键词" → show <篇号> |
| 开一篇新记录 | journal.py new --title "…" --insert |
| 收尾:改状态 / 勾待办 / 抽经验 | status --set、todo、lesson add |
| 归档一阶段 / 索引瘦身 | archive、index compact |
| 把教训带到别的项目 | memory publish → memory collect(DSH 里也可用 worklog_memory) |
| 定期整理 | journal.py check --strict --lint;每月看一次 _inbox.md 与 lessons/ |
适用场景与注意¶
适合谁:需要长期维护、多人或多 agent 接手的项目;希望「决定依据、过程证据、可复用教训」留在仓库里而不是只在聊天历史里;愿意用固定约定(work_log/ + 台账 + lessons)而不是纯自由笔记。
独立性:技能层不依赖 DSH,可在无 DSH 环境单独跑;写给模型的工具在插件侧主要是 worklog_memory,台账操作留在 CLI/文件层,避免「没有插件就打不开记录」的第二套系统。
历史命名:曾用名 dsh-worklog(2026-09-30 改名);环境变量仍为 DSH_WORKLOG_*,技能名 project-work-log、工具名 worklog_memory 未变。reliability-guidelines 已于 0.9.3 起拆为独立技能,本包不再随包提供及相关三项设置。
文档与验证:设计说明在仓库 docs/(含 why.md、memory-spec.md、plugin-spec.md);记录约定与命令门禁见 skills/project-work-log/references/。维护者可在仓库内运行 npm test、npm run test:plugin 等门禁;使用者以项目内 journal.py check 为准。
结尾¶
dsh-lore 把「过程、索引、经验」分成技能层与跨工作区记忆层,再用 DSH 插件做注册与注入,目标是让后续会话和 agent 能接上上下文而不是重挖聊天记录。进一步了解可打开 社区目录页 与 GitHub 仓库 阅读 README、SETTINGS.md 与 docs/。