dsh-weknora-archive:把 DSH 会话增量归档进自托管 WeKnora

前言

用 DeepSeek Harness(DSH)做项目时,会话会落在本机 harness 的 sessions 目录里。若要把这些对话沉淀成可检索的知识,常见做法是手工整理 Markdown 再上传到 RAG 知识库;官方只读插件 @wxg-prc-cpg/dsh-weknora 提供了从 WeKnora 检索的能力,但没有写入侧。维护者 AAAlenwow 的 dsh-weknora-archive(GitHub:AAAlenwow/dsh-weknora-archive,社区目录分类为「记忆」)是 host 端插件,负责把 DSH 会话增量归档进你自托管的 WeKnora 知识库,并在 v0.4.0 起用轮询解析状态做「真实入库」核验,可选生成本地 three.js 入库星图报告。

下面介绍插件定位、工具能力、安装配置与典型用法。

这是什么

dsh-weknora-archive 是 DSH 的写入侧互补插件:扫描本机会话 → 解压与提取对话 → 启发式总结(可选 LLM 精炼)→ 按标题去重后上传到 WeKnora → 在观察窗口内轮询文档解析状态,写入仅含元数据的 archive-manifest.json。当前版本 0.4.0,许可证 MIT,要求 Node >=24.0、DSH >=0.1.7-alpha.1,profile 为 web。

会话数据只发往你配置的 WeKnora 实例;API key 经 redactConfig() 脱敏,不写入日志或工具结果。

核心功能

与官方只读插件的关系

方向 插件 能力
读 @wxg-prc-cpg/dsh-weknora 4 个检索工具
写 dsh-weknora-archive 归档、上传、状态核验、本地报告

v0.4.0 重点

  1. 真实入库状态闭环:HTTP 上传成功不等于入库成功。上传后按返回的文档 id 在 parseObservationMs 窗口内轮询解析状态,归档清单中记为 completed / parsing / failed;窗口内未完成记 parsing,不高报为成功。
  2. archive-manifest.json:每次运行原子写入 ~/.dsh/plugin-data/dsh-weknora-archive/reports/(可通过 reportDir 配置),只含标题、状态、项目、KB id 等元数据,不含会话正文、API 地址或密钥。
  3. weknora_archive_visualize:把清单渲染为自包含的本地 three.js「知识入库星图」HTML(内嵌 three.js,无 CDN、file:// 可直接打开)。WebGL 不可用或系统 prefers-reduced-motion 时降级为静态报告;报告失败只告警,不影响归档。设 WEKNORA_ARCHIVE_VISUALIZATION=false 可关闭。

工具一览

工具名前缀默认 weknora_archive,可通过 toolPrefix 修改。

工具 说明
weknora_archive_auto 扫描本机所有 DSH 项目,按项目名匹配/新建知识库并增量归档;已归档跳过;单项目失败不影响其余;适合定时任务;支持 project_keyword、dry_run
weknora_archive_session 归档指定项目会话:定位目录 → 解压 → 提取 → 总结 → 标题去重上传;库不存在则按项目名新建;首次附 00_项目总览.md;支持 dry_run
weknora_archive_status 只读:本机会话项目与会话数、目标库已归档文档及解析状态
weknora_archive_list_knowledge_bases 只读:列出凭据可见的知识库
weknora_archive_create_knowledge_base 新建知识库(新库可能需在 WeKnora 端配置 embedding,否则解析失败)
weknora_archive_visualize 只读:将最近一次或指定归档清单渲染为本地星图 HTML,不上传、不改归档状态

安装与启用

插件通过 DSH 官方插件机制安装。README 给出的命令如下(将 /path/to/dsh-weknora-archive 换成本地插件目录路径):

node "/Applications/DSH Desktop.app/Contents/Resources/app/node_modules/@deepseek-ai/dsh/lib/bin.js" \
  plugin --profile web add /path/to/dsh-weknora-archive

Linux 或其他安装路径下,应使用本机 DSH 对应的 bin.js 路径,参数含义不变:plugin --profile web add 指向插件 bundle 目录。

配置走 bundle 自带的 cordis.patch.yml,默认从环境变量读取,key 不落地、不入库。常用项如下。

字段 环境变量 说明
baseUrl WEKNORA_ARCHIVE_BASE_URL WeKnora 部署地址
apiKey WEKNORA_ARCHIVE_API_KEY 具备写入/摄取能力的 scoped API key
knowledgeBaseId WEKNORA_ARCHIVE_KB_ID 可选;缺省按项目名自动匹配/新建
sessionsDir WEKNORA_ARCHIVE_SESSIONS_DIR 可选;缺省探测 <harness>/sessions
embeddingModelId WEKNORA_ARCHIVE_EMBEDDING_MODEL_ID 强烈建议:自动新建库时携带的 embedding 模型 id,不设则新库文档易 parse_status=failed
reportDir WEKNORA_ARCHIVE_REPORT_DIR 归档清单目录,默认 ~/.dsh/plugin-data/dsh-weknora-archive/reports
parseObservationMs WEKNORA_ARCHIVE_PARSE_OBSERVATION_MS 上传后观察解析的时间窗,默认 60000
visualization WEKNORA_ARCHIVE_VISUALIZATION 设 false 跳过清单/报告生成

LLM 精炼需 llmBaseUrl、llmApiKey、llmModel 三者同时配置才开启;失败回退启发式总结,不影响归档。启发式总结不足约 200 字符时不发模型请求。

WeKnora 侧认证头为 X-API-Key(非 Bearer);若 API 与插件内置路由不一致,需按实际部署调整 lib/client.js。

典型用法

单项目归档或预览

在 DSH 对话中让智能体调用 weknora_archive_session;先加 dry_run 可预览将上传的标题与目标库,确认后再正式归档。

全机增量与定时无人值守

调用 weknora_archive_auto(不带 dry_run)。去重按知识库内文档标题判定,重复执行幂等。

README 推荐的每日提醒配方:在 DSH 建定时提醒(例如 22:00),prompt 示例:

调用 weknora_archive_auto 工具(不要带 dry_run),把返回的汇总原样转告我;有失败项目的列出失败原因。

若修改过 toolPrefix,提醒里的工具名需改用对应前缀(如 my_prefix_auto)。

查看入库与星图

  • weknora_archive_status:核对本机项目与会话、库内文档解析状态。
  • weknora_archive_visualize:打开生成的自包含 HTML,查看带真实解析状态的入库星图。

本地单测(无需网络与凭证):

npm test

适用场景与注意

适合:已在自托管 WeKnora 上跑 RAG,希望把 DSH 各项目会话自动沉淀到按项目划分知识库、并区分「已上传」与「已解析入库」的开发者。

务必注意:

  1. 插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,确认凭据与 sessions 目录访问范围可接受。
  2. 新建库的 embedding 可能在 WeKnora 端单独配置;PUT 接口会静默丢弃 embedding 字段,务必设置 WEKNORA_ARCHIVE_EMBEDDING_MODEL_ID 或在服务端补全。
  3. 正在运行的会话可能解压失败会被跳过,下次归档可补上。
  4. 总结默认为启发式抽取;配置 llm* 后仅为精炼,总结文本会发往你指定的模型服务商。
  5. 社区插件目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区维护条目。

结尾

dsh-weknora-archive 把 DSH 会话增量写入自托管 WeKnora,并用解析状态轮询与本地归档清单、可选 three.js 星图,补齐官方只读检索插件之外的写入与核验链路。进一步说明与配置表见 GitHub README:

  • 目录页:https://www.skillhub.cn/plugins/AAAlenwow/dsh-weknora-archive
  • 仓库:https://github.com/AAAlenwow/dsh-weknora-archive
羽毛球分组比赛记分
小程序二维码

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

小夜