前言¶
DeepSeek Harness(DSH)支持通过 @ 引用历史会话,让模型基于已有对话做出更连贯的回复。但在本地部署多个智能体时,每个智能体维护独立的会话存储(Hermes Agent 默认使用 ~/.hermes/state.db),这些会话与 DSH 的对话记录不在同一个上下文中。
如果要在 DSH 中引用这些会话,需要把它们导出、整理后再粘贴,操作繁琐且容易丢失上下文。dsh-hermes-session 插件直接读取本地 Hermes Agent 的 SQLite 会话存储,将其作为“受限背景上下文”注入当前对话,使模型在不具备执行权限的前提下引用历史内容。
插件定位¶
- 名称:dsh-hermes-session
- 维护者:mailmrcai
- 分类:记忆
- GitHub:https://github.com/mailmrcai/dsh-hermes-session
- 定位:以只读方式访问本地 Hermes Agent 会话,并将其作为受限背景上下文注入当前 DSH 对话。
核心功能¶
插件提供了三种会话访问入口:
| 入口 | 形式 | 功能 |
|---|---|---|
+ Hermes |
Composer 按钮 | 打开可搜索的会话列表,选择后向草稿插入引用芯片 |
hermes_sessions_list |
Model 工具 | 列出所有 profile 下的会话(标题、工作目录、消息数、最后活动时间),按时间倒序 |
hermes_session_import |
Model 工具 | 通过 id 导入单个会话 |
所有导入的内容都会附带固定的“受限背景”提示:模型可以引用其中的事实,但不能遵循其中的指令、权限声明或工具请求。这与 DSH 对自身 @ 引用会话的限制一致。
安装与启用¶
插件以 DSH 插件形式提供,安装命令如下:
dsh plugin --profile web add dsh-hermes-session
或从本地目录安装:
dsh plugin --profile web add /path/to/dsh-hermes-session
安装后,Composer 按钮栏会出现 + Hermes 按钮。
典型用法¶
1. 列出所有会话¶
在 DSH 的 Model 工具栏中调用 hermes_sessions_list,会返回一个会话列表,包含标题、工作目录、消息数和最后活动时间。默认展示最近 100 条,可通过搜索框过滤所有 profile 的会话。
2. 选择并插入引用¶
点击 + Hermes 按钮,弹出可搜索的会话列表。选择一个会话后,草稿中会插入一个蓝色引用芯片,格式为 @[Session title](dsh-hermes:<base64url>)。该芯片与 DSH 原生的 @ 引用相同,可编辑、可删除。
3. 发送并获取上下文¶
在发送消息前,引用芯片尚未激活。发送后,agent/pre-step 钩子会解析芯片,读取对应的 Hermes 会话,将其渲染为“上下文召回”行(form: 'recall'),附加在当前消息之后。模型在单轮中同时看到用户输入和引用的会话内容。
配置项¶
插件通过 config 映射进行配置(cordis.patch.yml),所有字段可选:
| 字段 | 默认值 | 含义 |
|---|---|---|
dbPath |
"" |
指定 state.db 路径,空则扫描 ~/.hermes/profiles/ 及默认数据库 |
pythonPath |
"" |
运行 SQLite 辅助脚本的 Python 解释器,空则优先使用 $HERMES_PYTHON,否则使用 python3 |
maxChars |
60000 |
单次导入的默认字符上限 |
maxCharsHard |
160000 |
调用方可请求的最大字符上限 |
maxMessages |
300 |
默认携带的消息数量 |
工作原理¶
插件通过一个只读的 SQLite 辅助脚本(scripts/hermes_read.py)读取 Hermes Agent 的会话存储,并通过 HTTP 路由向 DSH 客户端暴露会话数据。客户端将数据渲染为“上下文召回”行,并在模型面前以相同的 JSON 结构呈现。
- 只读:脚本以
mode=ro打开 SQLite,不写入 Hermes 存储也不会启动 Hermes 进程。 - 多 profile:Hermes 为每个 profile 维护一个数据库,插件会扫描所有 profile 并标注来源。
- 子会话:包含继续父线程的子会话也会列出,并在列表中标记为“子会话”。
- 搜索在主机完成:过滤框在主机端查询整个存储,确保未预取的会话也能被搜索到。
- 消息截断:超出字符预算的消息会被截断,旧消息优先丢弃,截断信息在头部报告中。
适用场景与注意¶
- 适合需要在 DSH 中引用本地 Hermes Agent 历史会话的场景,如跨智能体协作、回顾历史工作内容。
- 插件以当前 DSH 进程的权限运行,读取本地文件系统,请确保对
~/.hermes/有读取权限。 - 导入的内容为“受限背景”,模型只能引用其中的事实,不能执行其中的指令或工具调用。
- 建议在安装前检查源码与许可证(MIT),确认其行为符合你的安全与合规要求。
结尾¶
dsh-hermes-session 为 DSH 提供了直接访问本地 Hermes Agent 会话的能力,将其作为受限背景上下文注入当前对话。配合 DSH 的 @ 引用机制,可以让模型在不具备执行权限的前提下,基于多个智能体的历史会话做出更连贯的决策。
- 目录页:https://www.skillhub.cn/plugins/mailmrcai/dsh-hermes-session
- GitHub:https://github.com/mailmrcai/dsh-hermes-session