在 DeepSeek Harness (DSH) 的使用中,会话通常是独立的,Agent 很难跨对话保留上下文。dsh-memory 插件为此提供了解决方案,它将所有会话连接到一个共享的持久存储中。
这是一个 DSH 插件,由 joyiok 维护。它为所有会话(web、headless 等)创建一个共享记忆库,存储在 $DSH_HOME/storages/dsh-memory.json。所有会话都可以读取和写入同一份数据。
核心功能¶
共享记忆库¶
Web、headless 和任何工作目录的会话都读写同一份数据。这意味着 Agent 在一个会话中写入的信息可以在后续会话中直接检索。
Agent 工具¶
插件提供了四个核心工具:
* memory_add:写入一条共享记忆。
* memory_search:搜索内容、标签或分类。
* memory_list:列出记忆。
* memory_remove:按 id 删除记忆。
Agent 在新会话里会自动先检索记忆,遇到值得记住的事实会主动写入。
Web 侧边栏¶
在 Web 界面中,左下角有一个 Memory 按钮。点击后打开的面板支持查看、搜索、添加和删除记忆。
原子写入¶
插件使用临时文件 + 重命名的方式实现原子写入,确保跨进程写入安全;读取时基于文件修改时间感知外部更新。
安装¶
cd /home/joy/Documents
dsh plugin --profile web add /home/joy/Documents/dsh-memory-plugin
dsh plugin --profile headless add /home/joy/Documents/dsh-memory-plugin
安装完成后重启 dsh web:
dsh web
验证:运行 dsh --profile web --dump-config,配置中应出现以下内容:
# == dsh-memory
- id: memory
name: dsh-memory
典型用法¶
让 Agent 记忆¶
用户可以直接告诉 Agent 需要记住的内容,Agent 会调用工具将其存入共享库。
用户:记住:我们的正式语言是中文,token 预算每月 5000 万
Agent:调用 memory_add(content: ..., tags: ["preference", "budget"])
让 Agent 回忆¶
在新的会话中,Agent 可以先检索记忆,再进行回答。
(新会话)
用户:我们之前说过 token 预算多少?
Agent:调用 memory_search(query: "预算") 后回答
Web 面板操作¶
在 Web 界面左下角点击 Memory 按钮:
1. 在输入框中输入内容。
2. 使用逗号分隔标签(例如:工作, 待办)。
3. 点击保存。
4. 在列表中可以搜索、删除记忆。
工具参数¶
| 工具 | 参数 | 说明 |
|---|---|---|
memory_add |
content 必填;tags / category 可选 |
写入一条共享记忆 |
memory_search |
query 必填;limit 可选 |
搜索内容 / 标签 / 分类 |
memory_list |
category / tags / limit 可选 |
列出记忆 |
memory_remove |
id 必填 |
按 id 删除记忆 |
配置¶
可在 profile 的 cordis.patch.yml 中覆盖配置:
- id: memory
config:
file: /path/to/shared-memory.json # 默认 $DSH_HOME/storages/dsh-memory.json
maxContentChars: 20000 # 单条记忆最大字符数
defaultSearchLimit: 20
maxToolLimit: 100
如需禁用插件,可在配置中添加:
- id: memory
disabled: true
注意事项¶
- 敏感信息:记忆内容对所有会话可见,请勿写入密钥、口令等敏感信息。
- 文件损坏:如果 JSON 文件损坏,插件会把损坏文件备份为
dsh-memory.json.corrupt-<ts>并重新开始。
总结¶
dsh-memory 通过提供共享、持久的上下文层,弥合了 DSH 会话之间的间隙。它允许 Agent 主动记忆和检索信息,而无需人工干预。