xingmen-1/dsh-move-rag
Local knowledge base for DeepSeek Harness that lives on your desktop: drag files onto an always-on-top icon to ingest them, search them in the same panel, and let the agent query them.
Project Overview项目介绍
This is a local RAG knowledge base plugin for DeepSeek Harness on Windows. It supports drag-and-drop file ingestion, processes all data locally for retrieval, and can be called by DSH Agents. Use it for lightweight offline private knowledge bases that need no cloud services or model downloads. It only works on Windows, does not OCR images, and has limited recall accuracy.
这是适用于 DeepSeek Harness 的 Windows 本地 RAG 知识库插件,支持拖拽文件入库,全本地处理提取、切片、向量化与检索,可提供给 Agent 调用。适合需要轻量离线私有知识库的场景,不依赖云端和大模型权重,仅支持 Windows,无图片 OCR,召回精度有限。
请帮我了解并安装插件:【dsh-move-rag】【https://github.com/xingmen-1/dsh-move-rag】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add github:xingmen-1/dsh-move-rag
把 xingmen-1/dsh-move-rag 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-move-rag
给 DeepSeek Harness 用的本地知识库插件:把 PDF / Word / 图片 / 代码丢进一个文件夹,它负责提取、切片、向量化、检索;桌面上常驻一个置顶小图标,拖文件上去就入库,点开就是搜索面板。
不依赖任何云端向量库、不下载模型权重——嵌入是在本地用哈希词向量算的,索引是一个 JSON 文件。

名字里的 move 指的是它的用法:把文件拖上去就入库,图标本身也能拖到屏幕边缘收起来。
功能
- 桌面临时面板:一个真正的 Windows 窗口(WinForms),置顶、可拖动、拖到屏幕边缘自动收成一条箭头;浏览器最小化或关掉它都在
- 拖拽入库:把 PDF / Word / txt / md / csv / 代码 / 图片拖到图标或面板上即可,支持本地解析(PDF 文本流 + ToUnicode CMap、DOCX)
- 本地 RAG:定长切片 + 哈希嵌入(512 维)+ 余弦召回,面板里能直接试检索,看来源文件、相似度、原文片段
- 给模型的工具:
knowledge_search(检索)、kb_dev(状态/预览/按路径入库/重建索引),Agent 可以主动查你的资料 - 网页侧边栏面板:DSH 网页里也有一行「知识库」,置顶开关控制桌面图标出不出现,可直接上传文件
环境要求
- Windows(桌面面板是 WinForms;宿主侧的文件写入用了 PowerShell 原语)
- DeepSeek Harness,Node.js
^22.19 || >=24 - PowerShell 5.1(Windows 自带)
安装
dsh plugin --profile web add github:xingmen-1/dsh-move-rag
dsh plugin add 会做两件事:pnpm add 这个包,然后发现包声明的 dsh.bundle.patch 并自动把这一层加进 profile,所以不需要你手动改 cordis.patch.yml。
装完重启 dsh web(或 dsh web 里的 profile 重载)即可生效。
也可以从 npm 装:
dsh plugin --profile web add dsh-move-rag
使用
- 打开置顶:网页侧边栏「知识库」→ 打开「置顶」开关 → 桌面右上角出现悬浮图标(关掉则图标进程退出)
- 入库:把文件拖到桌面图标上,或点开面板拖进去;面板底部会显示「已入库 N 个文件 · M 个片段」
- 检索:面板里输入问题 → 回车或点「检索」,结果按相似度排序,点文件行可以选中、点「移除」两次确认删除(文件会移到
.kb/trash回收站) - 让 Agent 用:直接问它「查一下知识库里关于 X 的内容」,它会调用
knowledge_search
右键桌面图标还有:打开网页面板 / 展开桌面面板 / 退出。
配置
| 变量 | 默认值 | 说明 |
|---|---|---|
DSH_KNOWLEDGE_ROOT |
%USERPROFILE%\knowledge-docs |
知识库根目录。文件在 <root>/files,索引在 <root>/.kb/index.json,删除的文件进 <root>/.kb/trash |
DSH_HOME |
~/.dsh |
插件把自己的运行文件与状态放在 $DSH_HOME/knowledge/ |
数据放在哪
<root>/
files/ 入库的原始文件
.kb/index.json 切片 + 向量索引(纯文本 JSON,可以直接看/备份/删)
.kb/trash/ 被移除的文件(可恢复)
$DSH_HOME/knowledge/
engine.js 从包里复制出来的运行时代码
impl.js
desktop.ps1
state/ 置顶开关、请求队列、桌面图标 pid 与位置
开发笔记
几个踩过的坑,给要改这个插件的人:
- Cordis loader 有模块体积上限:插件入口文件不能太大(约 40KB 以上就挂载失败)。所以入口
entry.js很小,真正的实现放在同级文件里,运行时用new Function读取求值。 - ESM 按 URL 缓存模块:同一个
file://路径如果第一次导入失败,之后都会复用那个失败结果——迭代时换个文件名。 - PowerShell 5.1 的
New-Object 类型(参数...)简写在函数内部解析不可靠,会变成数组参与运算并抛op_Addition错误。项目里统一用[类型]::new(...)。 - 桌面面板的异常会写进
$DSH_HOME/knowledge/state/ui-error.log(带脚本行号),不是弹框。 - 宿主侧改动后要重新挂载才能生效:删掉
cordis.patch.yml再写回会强制重新加载。
已知限制
- 仅 Windows;Linux/macOS 需要替换桌面面板与宿主侧的文件写入实现
- 哈希嵌入是关键词级别的语义近似,不是真神经嵌入——召回质量对同义改写不敏感,胜在离线、零依赖、快
- 图片只按文件名索引,没有 OCR
- 单个上传文件上限 16MB(base64 走 JSON),本地路径入库上限 256MB
许可证
MIT,见 LICENSE。
text2future/flowix
huiliyi37/dsh-tianshu-tui
tinqiao-oss/engramory
AKS1st/dock-editor
cayan0x/Lume
MemTensor/MemOS