dsh-rsi
面向个人用户、安装在 dsh 中的 Chat Memory+Skill 自动演化插件
- Stars
- 2
- Language
- Python
- Created
- Oct 2, 2026
- Updated
- Oct 7, 2026
Introduction
dsh-rsi
让 dsh 的任务经验积累为记忆与技能,供下一次任务使用。
dsh-rsi 是面向 DeepSeek Harness(dsh)的单用户、本地自动学习插件。它从会话中提炼 Chat Memory 和 Skill,在后续任务中召回相关记忆、加载适用技能,并提供集成在插件详情页里的资产管理界面。
当前为开发版本:本地安装、管理页和真实记忆/Skill 正文消费已有验收。最新完整八用户开发复验使用 qwen3.8-27b、两组相同完整历史:基线 21/32、启用组 20/32,用户分组差值区间跨零;已知聊天 token 为基线 5.80 倍,无聊天 usage 缺测,嵌入 token 未提供。6 个自然 Skill 头、11 次正文加载均有实际日志,但没有效果优势证据。固定8题连续学习同样未见优势(5/8 对 3/8,已知聊天 token 多约38%)。装配修复与验证交付已完成,事实/偏好阶段和任务适用性仍有限;本轮是已曝光样本开发复验,不能当独立盲测。旧失败轮及费用见历史终止报告,当前状态见推进路线。
产品定位 · 项目架构 · 工作流程 · 管理页面 · 工作区与存储 · 安装与开始使用 · 验证状态 · 开发与贡献
产品定位
使用 Agent 开发项目时,一些信息需要反复解释:项目约束、个人偏好、历史问题,以及已经执行过的排查和测试流程。dsh-rsi 的目标是把这些经验保留下来,让新会话能够继续使用。
插件围绕两类资产工作:
- Chat Memory:保存对话来源,提炼事实、约定与经验,进一步整理场景记忆和用户画像。
- Skill:从任务轨迹中创建或改进可复用流程,保留正文、资源文件和版本,按需交给 dsh 使用。
适合在同一项目中持续开发、反复执行相似工作,或希望跨项目保留个人偏好的用户。目标是减少重复解释、重复探索和重复错误;是否达到这些目标,需要通过实验验证。
自进化的范围
自进化发生在资产层:记忆被提炼、去重、合并和纠正;技能被创建、更新和复用。每次任务可以更新已有资产,也可以不产生新资产。
插件本地运行,无需单独部署完整资产管理后台。首版不包含 Wiki、CodeGraph、团队与权限管理、Agent/Task 管理、模型权重训练或插件自身源码修改,也不会自动索引整个代码库。
项目架构
插件通过宿主生命周期钩子、官方 Skill provider 与 Typert RPC 接入 dsh,将前台资产消费、后台学习编排和管理页面连接到本地记忆与技能核心。

Memory 使用 FTS5 与向量混合检索,Skill 使用 BM25 检索。后台提炼通过 DshModelRunner 调用宿主 LLM 服务;任务状态与资产保存在插件数据目录,正式会话日志由 dsh 管理。
工作流程
启用插件后,继续在 dsh 中正常做任务。插件捕获任务轮次,后台学习,后续会话按需消费资产。

什么数据形成什么资产
| 输入 | 资产 | 后续如何使用 |
|---|---|---|
| 用户与助手的对话正文 | L0 原始对话 | 回看来源,主动检索历史对话 |
| 对话中的事实、约定、偏好与经验 | L1 原子记忆 | 按当前请求检索相关内容 |
| 累积的 L1 记忆与已有场景 | L2 场景记忆 | 提供场景导航,按需读取 Markdown 正文 |
| 变化的 L2 场景与已有画像 | L3 用户画像 | 提供稳定的背景和偏好 |
| 对话、工具调用与结果、轮次结束原因、已有技能 | Skill 正文、资源与版本 | 通过 dsh 官方技能接口按需加载 |
| 用户主动选择的已有技能 | 独立的 RSI 技能副本 | 在副本上继续演进 |
当前 L0/L1 使用用户和助手正文;Skill 提炼额外使用工具调用与结果。Memory 与 Skill 是两条学习分支,Skill 不需要等待 L1→L2→L3 全部完成。任务结束不保证产生新资产,也不代表任务已经被正确解决。
如何进入模型上下文
- 每轮第一个模型步骤前,按用户请求检索通用与当前工作区记忆,提供相关 L1 内容、已有画像和场景导航。
- 记忆以带插件来源的正式消息进入会话日志,再发送给模型。需要更多内容时,模型可调用
rsi_memory_search、rsi_conversation_search和rsi_profile_read。 - 技能通过官方 Skill provider 暴露为
rsi-<名称>;dsh 的技能工具按需加载正文和对应版本的资源。 - 历史资产的验证结果标为来源会话记录;读取Skill不代表本轮执行了其中的代码或测试。对应提示经正式日志保存,但不作为用户偏好再次学习。
- 默认记忆注入上限为 6000 字符,不把全部资产一次性放入上下文。工具后续读取的内容另算。
后台学习也使用 dsh 的模型服务,发送前保存可重建的输入,记录工具调用、用量与结果。原始任务会话与后台学习会话保持关联。
一个使用示例
假设你在项目中要求“修改解析规则后,运行指定回归测试并保留失败日志”,随后完成了一次修复。
| 可能积累的资产 | 示例内容 |
|---|---|
| L1 记忆 | 当前项目修改解析规则后,需要执行指定回归测试 |
| L2 场景 | “解析器维护”:相关约束、排查经验和验证方式 |
| Skill | rsi-parser-regression:定位问题、修改规则、执行测试、检查结果 |
下一次相关任务可以召回约定,并按需加载技能。以上是产品行为示例,不是实测产物或效果数据;模型也可能判断信息不足、更新已有资产或保持不变。
管理页面
入口:dsh 左侧「插件」→ 已安装的 dsh-rsi → 插件详情页。
| 页签 | 可以做什么 |
|---|---|
| 概览 | 选择工作区,查看资产数量、学习记录和额外模型用量,处理待学习任务 |
| 记忆 | 浏览 L0–L3、筛选与搜索、查看来源,纠正或删除 L1 记忆 |
| 技能 | 查看和编辑正文、预览资源、查看版本与变更片段、禁用、回退、复制为通用技能 |
| 设置 | 配置资产语言、学习与预算参数,导出或清理资产 |
停止使用时,直接关闭 dsh 的插件启用开关。概览没有单独的暂停/恢复按钮;设置中的自动学习配置可用于维护资产。
纠正记忆会更新实际检索结果,旧的派生场景与画像暂不参与注入,待重建后恢复。Skill 禁用影响后续加载;回退把选定旧版本的正文和资源保存成新版本。
以下截图来自管理页交互夹具,使用模拟数据展示布局与操作,不代表真实任务产物或 benchmark 成绩。
记忆管理

技能管理

官方运行时的实际页面挂载、RPC 设置保存和启停记录见 管理页验收。当前 L2/L3 不支持直接管理编辑,技能资源只读预览,尚无资源文件编辑器和导入恢复向导。
工作区与存储
资产默认属于哪个工作区
以 dsh 会话绑定的工作区目录为准。同一真实路径下的不同会话,共用该工作区的资产;工具临时 cd 到子目录不会改变归属。直接绑定子目录的新会话会形成另一个工作区,当前没有自动寻找 Git 根目录的逻辑。
| 资产 | 默认归属 |
|---|---|
| 项目事实、约束、经验和生成的技能 | 当前工作区 |
提炼时被分类为 persona 的个人偏好记忆 | 通用范围 |
| 用户明确复制为通用的技能 | 通用范围 |
后续任务可以使用当前工作区与通用范围的资产。其他工作区的专属资产不会一起加载;个人偏好的分类由模型完成,准确性仍待真实任务验证。
已有技能只有经用户选择才会复制到插件管理范围,包括其本地资源。后续演进写入副本,原技能由用户继续维护。
实际保存位置
默认根目录为 $DSH_HOME/plugin-data/dsh-rsi;没有设置 DSH_HOME 时,使用 ~/.dsh/plugin-data/dsh-rsi。插件的 dataDir 配置可覆盖为其他绝对路径。
dsh-rsi/
├── rsi-state.sqlite 设置、队列、调用记账与检查点
├── scopes/
│ ├── global/ 通用资产
│ └── <工作区真实路径的哈希>/ 工作区专属资产
│ ├── memory.sqlite L0/L1、全文与向量检索索引
│ ├── skills.sqlite 技能正文、元数据与版本
│ ├── skill-assets/ 按技能 ID 和版本存储的附件
│ ├── history/ 对话与记忆追加历史
│ └── profile/ 场景、画像和派生检查点
└── learning-runs/ 后台学习与来源会话的关联记录
通用范围采用同样的资产结构。数据位于插件目录,不默认写入项目源码目录或原有技能目录。Skill 正文以数据库为权威源,附件按版本保存;后台会话日志本体由 dsh 管理。
**本地存储与模型推理是两件事。**学习使用配置在 dsh 中的模型,相关对话片段和资产内容会进入该模型的请求;使用远程提供商时,推理发生在提供商侧,并产生额外调用成本。
安装与开始使用
环境要求
- 官方 dsh;当前兼容检查目标为
0.2.0-rc.2、Cordis4.0.4。 - 本地源码构建使用 Node.js 24。
- 自动学习需要 dsh 中可用的模型配置;默认跟随来源会话的模型。
1. 获取并构建源码
git clone https://github.com/lsmax-72/dsh-rsi.git
cd dsh-rsi
npm ci
npm ci 会通过 prepare 自动生成 lib/。如果使用 --ignore-scripts,需要另行执行 npm run build。
2. 在桌面版安装
在源码目录执行 pwd,复制得到的绝对路径。打开 dsh 插件 → 添加插件,输入该目录,安装并启用,然后打开插件详情。
当前已验证本地目录链接安装。源码更新后,在目录内执行 npm run build,完整退出并重新打开 dsh,让宿主重新加载客户端产物。
包仍为 private: true,尚未发布 npm 包。dsh 支持 GitHub 地址安装,但本项目通过远程 Git URL 的完整安装流程尚未验收。
可选:独立网页测试 profile
以下命令在已构建的源码目录中执行;dsh CLI 需要已加入 PATH。
dsh --profile rsi-dev --from-default-profile web --help
dsh plugin --profile rsi-dev add "$(pwd)"
dsh --profile rsi-dev --no-open
第一步从官方 web 模板初始化测试 profile,最后一步打印网页入口。profile 分开不代表资产目录自动分开;要隔离日常数据,应使用独立 DSH_HOME 或显式设置插件 dataDir。测试 profile 本身也不是任务执行沙箱。
3. 开始积累经验
- 在 dsh 中选择项目工作区,正常执行任务。
- 打开插件「概览」,查看学习记录、用量和失败原因。
- 在「记忆」「技能」中检查生成或更新的内容,按需纠正、编辑或禁用。
- 在同一工作区的新会话中继续任务,插件会召回记忆,并向官方技能接口提供可用的 RSI 技能。
初次安装没有资产是正常的。缺少模型配置、学习开关关闭或预算耗尽时,不会开始新的学习请求;管理页会显示相应任务状态。任务“已完成”表示 L0、L1 与 Skill 阶段完成,L2/L3 可能仍在后台处理。
默认设置与成本
| 配置 | 默认值 |
|---|---|
| 自动学习 | 开启 |
| 新资产语言 | 简体中文;支持英文、日文、韩文和繁体中文 |
| 每日后台模型请求上限 | 100 次 |
| 单次输出上限 | 4096 token |
| 单次工具迭代上限 | 16 次 |
| 单次超时 | 180 秒 |
| 学习触发 | 稳定阶段每 2 轮或空闲 30 秒,保留首次 warmup |
| 自动记忆注入上限 | 6000 字符 |
每日额度按 UTC 日期重置,包含工具循环和失败的每次模型请求,不是费用金额上限。页面展示调用与提供商报告的 token 用量;未报告的用量保留为未知。预算耗尽会暂停新学习请求,已保存的资产仍可消费。
切换语言影响后续生成;已有资产可以手动转换,保留历史。代码、命令、路径和 API 标识保持原样。手动转换也消耗后台模型调用预算。
验证状态
后台失败后的答题路径已通过原生隔离夹具,独立画像失败也已补齐原生日志/额度核对的 v2 收尾规则:新评测协议可预先选择使用已保存资产继续答题,同时单独报告失败学习及费用;旧失败轮仍不补算。见规则与边界。这不是效果提升证据。
| 验证内容 | 当前证据与边界 |
|---|---|
| 学习与消费链路 | 固定响应与真实默认流程均验证自动捕获、提炼、资产写入及记忆/Skill 正文消费;真实会话已自然选择新 Skill,尚无质量或迁移收益结论 |
| 资产管理与恢复 | 固定响应检查覆盖工作区隔离、预算、禁用、回退、附件和独立进程恢复 |
| 官方管理页面 | 独立 web profile 通过实际挂载、页签切换、RPC 设置保存与插件启停;个人桌面修复后的结果仍待用户确认 |
| 安装包 | 本机 macOS ARM64 检查通过;远程 Linux/macOS/Windows 的源码构建与生产包安装检查全部通过,见 CI 回执 |
| 容器执行 | Linux 容器内真实工具与固定响应资产闭环通过;固定模型网关边界与 qwen 工具调用通过 |
| PersonaMem完整开发复验 | 8用户/32题:21/32 对20/32,已知聊天token为5.80倍;8位学习均完成,64个正常回答、613次日志重建通过;不是独立盲测,见完整报告 |
| 负结果离线复盘 | 32对回答逐题核验;新增发现通用偏好迁移后对工作区冲突检查不可见,尚未修复;见复盘与范围诊断 |
| 固定编程连续学习 | 8题:5/8对3/8,后四题均2/4;39个保存快照检查,8题无自然Skill正文加载,见结果与诊断 |
| 历史20题开发记录 | 原冻结8/20对10/20、费用与未知用量保留;题单已用于开发,后续回归不能再作为独立盲测,见历史报告 |
本次试跑的失败原因、调用成本和接入缺口见 真实试跑报告。同一题补跑与剩余门槛见 补跑报告。默认自动学习、自然 Skill 消费与新增成本见 默认流程预演。这些接入结果不能证明或否定插件相对效果。
当前验证比较保留正常历史的 dsh 基线与完整插件,保持各轮预先固定的题单、模型、环境和预算,分别报告任务质量、额外学习及消费成本。PersonaMem按用户分组统计,编程序列保留自身先前轨迹;官方评分不回流学习。资产数量、短正文与完整交付率都不能代替效果结论。最新协议和状态见推进路线;早期方案及原固定方案作为历史记录保留。
开发与贡献
代码组织与复用边界
vendor/core/ 固定版本的记忆、技能、存储与调度源码
vendor/panel/ 复用的资产列表、分栏、Markdown、文件树与样式
adapters/ 模型入口、观测及界面依赖的宿主适配
src/ dsh 事件与模型桥、作用范围、队列、预算、RPC 和管理页
scripts/ 构建、来源校验、安装包和集成检查
docs/ 需求、实现边界、评测协议与运行证据
核心固定为修订 e09899c2136fb6bc27ecc68505e32bdb637cdfa8 的源码文件,数量以核心清单为准;界面固定复用 10 个文件,其中文件树和对应样式从原详情页提取。构建前核对逐文件 SHA-256。必要适配留在 adapters/ 与 src/,没有平行重写提炼、召回或版本系统。
当前 Chat Memory 使用原生 SQLite FTS5、向量检索与 RRF;Skill 保留原生 BM25。默认本地向量模型为 embeddinggemma-300m-qat Q8_0(768 维),首次需下载约 329 MB;离线使用时通过插件配置 embedding: {provider: "local", modelPath: "/绝对路径/embeddinggemma-300m-qat-Q8_0.gguf"} 指定已下载文件。编码失败显式报错,首次模型加载及历史索引重建可能延长插件启动时间。2026-10-04 装配审计还确认了 Skill 生产提示词替换、画像触发缺失、资产分页遗漏、上下文截断和错误重试接线问题,见 能力装配审计与隔离复现,最新修复状态见 修复进度。七类装配及后续画像错误传播、完整条目/时间来源适配已有接入回执;完整新复验的原生学习与消费均结束,但事实忠实度、阶段合并和适用性仍有限,不能把接线验收当作质量保证。此前终止结果保持;新增原生依赖的 Linux/macOS/Windows 安装检查全部通过。接入验收不等于效果改善;首轮实验结果对应此前适配版。构建成功也不代表通过了整个复用库的类型检查。来源、固定文件及许可见 核心清单、界面清单、核心许可和界面许可。
自动提炼 Skill 的正文预算
自动提炼的 Skill 正文最多1500个 Unicode 码点,初稿目标1000以留出修改余量;长脚本和详细资料使用原生资源文件并相对引用。超长写入返回原生错误供模型修正,不截断内容;人工编辑沿用原生限制。写入、资源、版本及安装版链路夹具通过;真实开发例生成并消费1435码点正文,但新轮持续更新在1508码点反复拒绝后超时。未证明整体质量或成本改善,见适配与验证边界。
Skill 来源窗口
插件配置可传 skillTranscriptWindow: {headChars: 40000, tailChars: 64000},直接使用原生截取参数;未配置仍为8k/32k。这与Chat Memory召回预算分别设置,重新加载插件后生效。来源更长会增加输入token,需确认所选模型容量;当前配置覆盖值可在snapshot及诊断中查看。非法参数在学习前拒绝,不静默回退。配置接线已通过夹具验证,较大窗口的单次真实提炼仍有内容错误,不能称为质量或效果提升,见来源窗口与实测边界。
开发检查
npm run build
npm run test:integration
npm run test:runtime
npm run test:package
集成脚本使用临时目录与固定模型响应,不调用真实模型;macOS 默认使用应用内 CLI,其他安装通过脚本的 --dsh 参数指定。安装包检查需要下载依赖。管理页模拟数据预览可通过 node scripts/preview-client.mjs 启动,默认地址为 http://127.0.0.1:45177/。
贡献时先阅读 项目约定:优先调用已有组件,只做必要的适配;说明复用与新增边界,并为修改保存与其范围相符的证据。每个可独立验收的小任务完成后单独提交,提交前检查差异和有效 Git 身份;不把多个任务攒成一次大提交,也不为增加数量拆分无意义提交。