dsh-ima-kb-panel:把 ima 知识库搬到 DSH 侧边栏,并给大笔记补上分页读取

前言

在 DSH 里用 ima 知识库,常见做法是让模型直接调 MCP 的 get_doc_content。这篇笔记原文通常几十万字,而 ima 的 OpenAPI 里 get_doc_content 没有分页参数——一次性返回整篇,上下文被一篇笔记吃掉。另一个问题是浏览:想翻一翻库里有哪些笔记、某篇讲了什么,只能把目录和正文都喂给模型,等于为了看一眼目录付一次上下文。

dsh-ima-kb-panel 处理的就是这两件事:把浏览搬到左侧栏(不占上下文),把正文读取改成「检索 + 按字符偏移分页」,并且全部按需、带上限。插件由 how8088 维护,属于客户端类插件,在社区目录 SkillHub 有收录。

下面按它是什么、装怎么装、怎么用、有哪些要注意的来讲。

一、这是什么

给 DeepSeek Harness(DSH)用的 ima 知识库插件,包名 dsh-ima-kb-panel,当前版本 2.7.0,许可证 MIT,要求 Node >= 18。它做三件事:

  1. 在 DSH 左侧栏放一个入口,下分「笔记」和「知识库」两个页签,浏览、检索、滚动阅读都在浏览器侧完成;
  2. 在对话里注册一组只读工具,让 AI 按需取笔记与个人知识库的内容,返回内容有字符上限;
  3. 在 Host 侧把笔记正文和个人知识库缓存到本地,重启后只补新增或改动的内容。

插件对 ima 账号没有硬编码,它列出当前凭证能看到的全部笔记。所以「换知识库」等于换凭证或加过滤,不用改代码。

二、核心功能

侧边栏面板

左侧栏一个入口,两个页签:

  • 笔记:按分类(课程原文 / 学员总结 / 盘中记录 / 公众号文章…)折叠浏览、全文检索、滚动阅读。分类由插件根据标题自动归组,列表带篇数与字数徽标,可随分类展开收起。
  • 知识库:选知识库后看到面包屑 + 文件夹树 + 文件名检索,进入文件详情可以「下载原文」,下载走 Host 代理拿到带签名的 Word/PDF。

面板字面检索无命中时,插件会自动补一轮模糊检索,结果可以直接点开。

对话工具

工具 用途 上限
kb_list(query?) 列出全部笔记:标题、note_id、字数、开头预览;笔记多时可用 query 只列标题含该词的 有界
kb_search(query, note_id?, limit?) 全库子串检索,一篇可回多段,带字符偏移量 片段 ≤ 600 字,默认 8 段
kb_read(note_id, offset?, limit?) 按偏移分页读正文 默认 6000 字,上限 3 万字
kb_find(query, start?) ima 官方分词检索:换一种说法也能找到,返回命中笔记列表 每页 20 篇
kb_space_list() 列出可见的知识库(kb_id、文件数、说明、角色) 有界
kb_space_browse(kb_id, folder_id?, limit?) 列目录:文件夹 / 文件(media_id、类型) 单页 ≤ 50 条
kb_space_search(kb_id, query, limit?) 按文件名/文件夹名检索,不搜正文 ≤ 50 条

kb_search 和 kb_find 是互补关系:前者是本地字面匹配、带 offset,后者走 ima 官方分词召回。不确定原文措辞时先用 kb_find 找候选篇,再用 kb_read 读。

检索是字面匹配,不是语义检索:搜「止损」能找到,搜「亏了怎么办」不一定能找到「止损」。

缓存与性能

  • 正文落盘:正文缓存在 ~/.dsh/cache/ima-kb-panel/,重启 DSH 后不再全量重取,只补 modify_time 变过的笔记,通常几篇、秒级完成。
  • 默认不自动预热:autoWarm 默认 off,首次装完要点面板里的「⋯ → 缓存全部正文」才会开始取正文,进度显示在面板头部。既有库 70+ 篇、约 200 万字,逐篇一次请求,这一步需要等一会儿。
  • 主机端并发控制:为规避 ima 限流 code=200001,取正文时控制并发与节拍,配指数退避重试。
  • 个人知识库本地缓存(v2.4.0 起):只缓存笔记和 base_type 为「个人知识库」的库,缓存到 kb-<hash>.json(列表 + 目录树 + md/docx/txt 正文)及可选的 pdf/<mediaId>.bin。订阅 / 加入的共享知识库(如「宏观研报精选」「深证信公告库」)不写磁盘,仍走在线读取。断网时目录、正文、文件名检索、PDF 查看都可从本地走。

只读约束

不写笔记、不上传、不删除,本机正文缓存文件除外。插件不做任何修改 ima 侧内容的操作。

三、安装与启用

前置条件

需要 说明
DSH 桌面版或 Web 版都行,插件是 profile 级安装
ima 凭证 Client ID + API Key,在 https://ima.qq.com/agent-interface 生成
网络 能访问 https://ima.qq.com

装了什么

装完都要重启 DSH 才会加载新插件。插件通过 plugin_manager 的 install_bundle 安装,来源是 release 里的 .tgz 包或本机源码目录。

方式 A,把 release 里的 .tgz 交给 DSH 里的 AI(最省事):

请帮我安装本地插件:<路径>\dsh-ima-kb-panel-2.7.0.tgz
用 plugin_manager 的 install_bundle 安装,装完告诉我是否需要重启。

方式 B,自己调工具:

plugin_manager(action="install_bundle", target="<tgz 的绝对路径>")

方式 C,从源码目录安装(只在改代码时用):

plugin_manager(action="install_bundle", target="<本仓库目录的绝对路径>")

用目录安装是软链接(link:),DSH 会报 restart-required;用 .tgz 安装是真实拷贝,热应用更顺。改完代码要重新 pnpm pack 再装。

方式 D,从 GitHub 升级(换电脑或升版本推荐):每个 v* tag 由 Actions 自动打包并发 Release,下载地址是 github.com/how8088/dsh-ima-kb-panel/releases,下载最新的 dsh-ima-kb-panel-<版本>.tgz,然后在 DSH 里新开会话说:

请用 plugin_manager 安装本地插件:<tgz 完整路径>

重启 DSH(或刷新页面)即可。仓库是公开的,不用登录。

首次运行要补的两件事

插件本体之外,换新电脑时还有两件事各处理一次:

东西 怎么弄
ima 凭证 把 ~/.config/ima/client_id 与 api_key 复制到新电脑同路径,绝不要进仓库
AGENTS.md 联动段 把 docs/AGENTS-联动段.md 的内容追加到 ~/.dsh/AGENTS.md(v2.3.0 起这份文档随包安装,位在插件目录的 docs/ 下)

两个技能(market-research / ima-kb)自 v2.2.0 起插件启动时会自动装到 ~/.dsh/skills/,已存在不覆盖,不用再手工复制。桌面版(Electron)自 v2.3.0 起也不要手工改 import:插件启动时先按裸包名解析 @deepseek-ai/dsh-tools / @deepseek-ai/schemastery,失败再按 process.execPath 反推安装目录从 app.asar 里读,换安装路径也不用改代码。

凭证放哪

默认两个文件:

~/.config/ima/client_id     ← Client ID
~/.config/ima/api_key       ← API Key

Windows 上就是 C:\Users\<你>\.config\ima\。一行一个,不要引号,不要多余空格。也可以用环境变量 IMA_CLIENT_ID / IMA_API_KEY,优先级高于文件。面板的「首次运行」界面会把这两个绝对路径直接显示出来。

确认可用

  1. 重启 DSH,左侧图标栏应出现书本 + 放大镜图标;
  2. 点它,左侧应列出全部笔记(不只是 20 篇),头部显示 N 篇 · M 字;正文还在后台载入时显示「载入正文 N/M」和进度条;
  3. 在对话里问:「查一下我的知识库:仓位管理我是怎么讲的?」AI 应调用 kb_search 并引用原文。

如果面板显示「还没连接 ima 账号」,说明凭证没放好,回到上一节检查路径。

四、配置项

在 设置 → 插件 → ima 知识库面板 里改,或直接改 profile 的 cordis.patch.yml:

- id: ima-kb-panel
  name: 'dsh-ima-kb-panel'
  config:
    credentialsDir: 'D:/ima-creds'      # 凭证目录换地方
    titleFilter: '雪球,宏观'             # 只纳入标题含这些词的笔记
    maxNotes: 200
    contentTtlMinutes: 360
配置项 默认 作用
credentialsDir 空(= ~/.config/ima) 凭证目录
baseUrl https://ima.qq.com 接口根地址,一般不用改
clientIdEnv IMA_CLIENT_ID client_id 读哪个环境变量
apiKeyEnv IMA_API_KEY api_key 读哪个环境变量
maxNotes 500 最多收录多少篇(1–500,插件自动翻页;list_note 单页上限 20,插件会翻到 is_end)
contentTtlMinutes 10080 磁盘正文最长保留期(分钟);是否重取看 modify_time
cacheDir 空(= ~/.dsh/cache/ima-kb-panel) 正文缓存目录,填 - 表示不落盘
titleFilter 空 只看标题含这些词的笔记,逗号分隔
skillsDir 空(= ~/.dsh/skills) 随包技能安装到哪
autoInstallSkills on 启动时自动装随包技能(已存在跳过);填 off 关闭
autoWarm off 是否自动把全部笔记正文拉到本地。默认 off:只有手动点「⋯ → 缓存全部正文」才取;填 on 恢复启动/检索时后台自动预热

五、典型用法

浏览

点左侧书本图标,切到「笔记」页签浏览分类,用顶部检索框搜内容;切到「知识库」页签选库、进目录、按文件名找文件,进文件详情后下载原文。整个浏览过程不出面板,不进上下文。

在对话里取内容

不确定原文措辞时,先用分词检索找候选篇:

kb_find(query="减仓的理由", start=0)

拿到候选 note_id 后按偏移读正文:

kb_read(note_id="xxx", offset=0, limit=6000)

需要字面定位时用子串检索,返回片段带字符偏移量,可以直接拿 offset 继续读:

kb_search(query="止损", limit=8)

个人知识库的目录与文件名检索:

kb_space_list()
kb_space_browse(kb_id="xxx", folder_id=null, limit=50)
kb_space_search(kb_id="xxx", query="年报", limit=50)

把整库正文拉到本地

首次安装后,面板头部点「⋯ → 缓存全部正文」,进度在面板头部显示。预热完成后写入磁盘缓存,之后重启 DSH 是秒开,只用补充 modify_time 变过的那几篇。个人知识库整棵缓存走 GET /ima-kb/api/kb-warm?kb=<kb_id>,阻塞到取完,进度快照见 GET /ima-kb/api/kb-warm-status。

本机 HTTP 接口

面板使用的接口全部要求浏览器同源会话,未授权返回 401/403。常用几个:GET /ima-kb/api/state 看连接诊断(是否配置、凭证来源、路径、过滤词、笔记数、预热进度);GET /ima-kb/api/notes 取全部笔记列表;GET /ima-kb/api/search?q=&limit= 检索;GET /ima-kb/api/kb-files?kb=&folder=&cursor= 取目录内容加面包屑;GET /ima-kb/api/kb-raw?media_id=&title= 代理下载带签名的原件。面板里出错时会显示真实 HTTP 状态与服务端消息,而不是一句笼统的「没有权限」。

六、适用场景与注意

适合把 ima 当个人资料库用、笔记量比较大(几十篇到上百篇、百万字量级)、又不想每次浏览都烧上下文的人。也适合需要 AI 按原始片段引用知识库内容的场景,因为工具返回带偏移量的片段,模型可以自行决定读不读、读哪一段。

几点注意:

  • 插件不改动 ima 侧任何内容,但以当前 DSH 进程的权限运行,安装前应检查源码与许可证(本仓库为 MIT)。
  • 不要改用 MCP 的 mcp__ima-kb__get_note_content 读大笔记:无分页,一次返回整篇,最长出现过 54.8 万字符。
  • 共享知识库不落盘:订阅 / 加入的库文件量级可达几十万上百万,插件一律在线读取,别指望离线可用。
  • 正文缓存目录里的文件属于本机临时数据,cacheDir 改成 - 可以完全不落盘。
  • 星标数目前为 0,生态较新,遇到版本差异以 README 与 package.json 为准。

结尾

这个插件的价值不在功能多,而在补了两个具体的缺口:get_doc_content 缺的分页,和「看一眼目录就要付上下文」这件事。前者靠 kb_search + kb_read 的偏移分页补齐,后者靠侧边栏面板和本地缓存拿掉。如果你的笔记量大、正文需要反复引用,值得先按上面的步骤装上试一下。

目录页:https://www.skillhub.cn/plugins/how8088/dsh-ima-kb-panel
仓库:https://github.com/how8088/dsh-ima-kb-panel

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜