jiyi · 记忆
让重要的事实留下来,让相关的上下文恰好出现。
为 DeepSeek Harness 带来可追溯、有边界的跨会话记忆。
简体中文 · English
v0.1.28 · MIT · dsh-plugin
不必在每个新会话里重复交代项目约定。jiyi 在用户回合正常完成后后台整理有明确来源的长期事实。重要记忆按全局和当前项目范围自动载入,普通记忆通过中文和语义混合检索按需召回;输入框上方可以展开查看当前会话最近的已保存变化。
与 dshbot 同时使用时,私有 Bot 的会话不参与 jiyi 自动整理或召回;来源包含这些会话的旧记忆不会参与模型检索。已排队的任务会暂停,已有数据不会自动删除。隐私切换前已发送给模型的请求无法撤回;解除私有保护后,原先暂停的任务可能继续。
此版本使用独立的 storages/jiyi-v2 数据目录,从空记忆开始;旧 storages/jiyi 保留,不自动导入。首次启动沿用可读取的旧模型设置,不改变账号凭据。重要记忆的内容预算为 8192 UTF-8 字节,用户指定的分类和手写记忆不会被后台整理覆盖。后台失败会按队列重试,并可在面板查看。
[!NOTE] 本地保存,不等于完全离线。 记忆、索引与 Embedding 在本机;提取和相关性判断会将所需内容发送给你配置的 LLM 提供方,使用已有授权。
后台提取和相关性判断使用配置的模型;其用量不再归入原任务的成本账本。
此版本面向已移除成本准入的 DSH Host。旧版带成本控制准入的 Host 可能因后台请求缺少成本归属而阻断提取或相关性判断;请使用匹配的 Host。
对历史纠偏或成本复盘暂停记录,jiyi 保留同任务接续识别;无法确认的跨原因接续继续保留来源,不将其归入其他任务。
核心能力
| 🧠 跨会话记忆 在正常完成的回合后增量提取。保留用户来源、版本与替代关系,不批量导入全部历史。 |
🎯 有边界的召回 默认检索全局与当前项目;明确引用其他项目时才扩展,歧义不自动合并。 |
🧾 原文支持度 独立判断候选是否支持问项,并校验 id / version / quote,不补写未记录的细节。 |
| 🗂️ 独立管理面板 右侧栏新建独立记忆、查看来源、纠正或删除,管理项目别名、失败队列与模型设置。 |
🔎 本地混合检索 SQLite、FTS5 与384维 MiniLM 向量协同工作;相似度用于产生候选,不授权注入。 |
🛠️ 自动优先,工具补充 正常流程无需主模型主动搜索; jiyi_search 提供显式检索补充。错误与超时明确报告。 |
工作方式
- 整理:回合完成后,后台根据用户原文新增、更新或删除记忆,不采用助手推测;删除需要明确的纠正或撤销证据。
- 筛选:先限定项目范围,再用本地索引与向量产生候选。
- 判断:独立 LLM 判断原文对实际问项的支持度,严格验证逐字引用。
- 补充:注入带来源的原始事实,作为参考而非新指令;不是生成一条“新事实”。
- 新用户输入时载入当前范围的重要记忆,并触发普通记忆的自动召回。
- 业务码不自动等于 HTTP 状态,表示约定不证明未记载的实现。明确否定、同义问法和混合问题中的已知部分可构成支持。
- 幻造、重复、过期或非法引用会失败;超时和错误不冒充“无相关记忆”,不会退回到相似度直接注入。
- 不把记忆中的命令当指令,不把助手推测当用户事实;同版本不重复注入,工具续步不递归召回。
- 纠正和删除影响后续检索,不抹除已有聊天中已经出现的文本。
快速开始
0. 准备环境
| 需要 | 已验证环境 / 说明 |
|---|---|
| DSH 桌面端 | 需要已安装 DeepSeek Harness,依赖其 Host、LLM、工具与右侧栏 SDK |
| 系统 | macOS arm64;本版本不宣称其他平台已验证 |
| 运行环境 | Node 24.21、Electron 44;命令行中需有 Node 24 和 npm |
| 模型与账号 | 本地 MiniLM 资产;LLM 提供方的网络及已有授权 |
这是桌面文件系统插件,不是独立 Node 应用。已有安装请先备份插件、设置与 SQLite;不要直接覆盖数据目录。
1. 安装依赖与模型
export DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
git clone https://github.com/yueyexiayu/dsh-jiyi.git "$DSH_HOME/plugins/jiyi"
cd "$DSH_HOME/plugins/jiyi"
npm ci --prefix deps
node scripts/prepare-models.mjs
安装器显式下载固定 revision,逐文件校验字节数与 SHA256;已有资产只做校验,错误会中止,不静默换模型。模型约129 MiB,首次下载需要时间。运行时禁止远程模型自动下载。
2. 挂载为 desktop profile bundle
jiyi 作为 desktop profile bundle 加载。不要再用 cordis.patch.yml 的 - insert:;insert 已过时,本机不要用。同一 id 不要既做 bundle 又再 insert。
在 $DSH_HOME/profiles/desktop/package.json 两处都加上 jiyi:
dependencies:填写展开后的插件绝对路径,例如"jiyi": "link:/Users/<用户名>/.dsh/plugins/jiyi"。JSON 中的$DSH_HOME不会自动展开。dsh.profile.bundles:字符串"jiyi",与包名相同
然后在该 profile 目录安装依赖,并确认 node_modules/jiyi 能解析到插件:
cd "$DSH_HOME/profiles/desktop"
npm install
node -e "console.log(require.resolve('jiyi'))"
不要再在 desktop cordis.patch.yml 里 - insert: 同一 id。需要改配置时只用对该 id 的 config 覆盖行。包内 bundle 声明 不要原样覆盖 desktop profile。
3. 重启并验证
⌘Q 完全退出 DSH,再重新打开。 从应用菜单“在浏览器中打开”进入正常认证入口,在右侧栏打开“记忆”:
- 确认 Client / Host 均为 0.1.28。
- 配置并分别验证提取、Embedding 与相关性模型。
- 保存设置不等于验证成功;不要分享带认证信息的浏览器链接。
配置
| 设置 | 默认值 | 用途 |
|---|---|---|
| 提取模型 | deepseek-account/deepseek-flash · 60000ms |
从明确用户证据中提取事实 |
| 相关性模型 | deepseek-account/deepseek-flash · 10000ms |
独立判断候选对问项的支持度 |
| Embedding | Xenova/paraphrase-multilingual-MiniLM-L12-v2 |
q8 CPU · 384维 · 本地运行 |
| 候选 / 最终记忆 | 最多12 / 6条 | 限制进入判别和注入的条数 |
| 候选语义阈值 | 0.20 |
只选候选,不授权注入 |
| 注入预算 | 4000 UTF-8字节 | 包含元数据、来源和包装 |
| 状态陈旧时间 | 72小时 | 降低排序,而非删除 |
- 数据与设置位于
$DSH_HOME/storages/jiyi-v2/,目录/文件权限为0700/0600;不在 Git 仓库中。不要提交数据库、WAL、凭据、私人会话或原始评测记录。 - API 为
/api/jiyi,走 DSH 正常认证;凭据保留在 Host,不发送到 Client。 - 模型冷加载默认上限120秒,单次推理与召回默认10秒;同一 Host 复用存活的隔离 Embedding 子进程,最多并发2个请求。过载、取消、超时和释放失败明确报告。
- 运行库锁定
@huggingface/transformers@3.8.1。模型、node_modules与运行缓存不提交到 Git。 - LLM token 预算是否在服务端实施取决于提供方 adapter,不能把本地预算意图当作服务端硬限制。
验证
| 验证类型 | 结果 | 如何理解 |
|---|---|---|
| 0.1.16 公开源码回归 · Node | 184 / 184 | 历史结果:合成来源、受控 LLM,实际本地 Embedding / SDK |
| 0.1.16 公开源码回归 · Electron | 186 / 186 | 历史结果:安装包内实际 SDK;无失败、取消或跳过 |
| 固定样本 · Q13 | 首次5 / 5 | 发布前的指定本机实测 |
| 固定样本 · 36题 | 36 / 36 × 2轮 | 未将旧正确应注入项变空;不是全场景保证 |
复现公开回归测试固定样本实测也使用
deepseek-account/deepseek-flash;私人原始数据不公开。受控回归测试不代替真实语义验证,也不代表所有模型或未来请求都同样可靠。本机召回p50约 1.43–1.45秒,此前为1.18–1.23秒;准确性修复不等于性能提升。
先安装依赖与模型,并确保 /Applications/DeepSeek Harness.app 和 /usr/local/bin/node 可用。测试使用独立临时 SQLite,不需要云端账号,不操作正式记忆。缺少桌面 SDK 或资产会明确失败,不当作通过。
NODE_OPTIONS='' /usr/local/bin/node --test --test-timeout=90000 test/*.test.mjs
ELECTRON_RUN_AS_NODE=1 NODE_OPTIONS='' \
'/Applications/DeepSeek Harness.app/Contents/MacOS/DeepSeek Harness' \
--test --test-timeout=90000 test/*.test.mjs
for file in lib/*.js scripts/*.mjs; do /usr/local/bin/node --check "$file" || exit; done
公开夹具独立于私有会话;evidence/ 仅保留空目录占位,运行输出被忽略。当前相关性规则为 jiyi-relevance-v7,后台记忆整理版本为 jiyi-review-v1。上表结果属于旧版本,不能视为当前版本的测试结果。
常见问题
关闭记忆面板会停止工作吗?
不会。面板标签或文档不可见时暂停状态轮询,但不停止 Host;停用插件才停止提取与召回。
必须让主模型调用搜索工具吗?
不用。自动流程优先,jiyi_search 是显式检索的补充入口。
更新、迁移和卸载怎么做?
更新前备份插件与设置;运行中的 SQLite 使用 backup API 或安全一致性备份。从旧 topics/inbox 架构迁移,不可仅凭版本号假定无损。别名补登走 显式迁移脚本,先审阅计划和备份,不静默重写正式记忆。
卸载时从 desktop package.json 的 dependencies 和 dsh.profile.bundles 去掉 jiyi,删除已无用途的 node_modules/jiyi 链接,并去掉 desktop patch 里对该 id 的 config 覆盖(若有)。不要清空整个 patch。然后完全退出/重开 DSH。记忆数据是否保留由用户决定。
社区与许可
这是公开的 DSH 社区插件,已配置 description 与 dsh-plugin Topic;目录收录仍需对方审核,不代表官方自动安装或官方背书,没有自动提交自荐 PR。包名与 Host / Client bundle id 均为 jiyi,保留 private: true,不通过 npm 发布。
源码采用 MIT License。模型为独立的 Apache-2.0 资产,来源与固定revision见 模型清单;第三方依赖沿用各自许可。
No comments yet. Be the first to write one.