前言¶
和 AI 聊技术时,有价值的内容往往散落在多轮对话里:一段命令、一条边界条件、一个踩坑结论。事后要么靠记忆翻聊天记录,要么手动复制到笔记,再自己归类。DeepSeek Harness(DSH)支持用插件把这类能力挂进 profile;在「记忆」类插件里,dsh-knowledge-tree 把「记零散知识」和「整理成树形结构」拆成工具与技能,落盘在工作区 Markdown 文件里,并可选地在写入前走人在环内(HITL)确认。
下面介绍插件定位、四个工具与两个技能的用法,以及安装与验证步骤。事实以 GitHub 仓库 README 为准;社区目录页见 SkillHub 条目。
这是什么¶
dsh-knowledge-tree 由 YunpengDon 维护,当前 npm 包版本为 1.1.0(MIT 许可证)。一句话定位:在与 AI 的对话中收集零散知识(「树叶」),由 AI 归类进知识树,长期积累形成个人知识体系。
实现上是 DSH bundle:包内自带 cordis.patch.yml,安装后会向 profile 注入四个工具,以及指向本包 skills/ 的技能提供方,一般不需要手改 bundle 配置。
四个工具¶
四个工具都会改工作区文件;若 profile 里启用了 HITL(见后文),落盘前会先弹出决策卡,人同意后再走沙箱、审批等既有策略。
| 工具 | 功能 |
|---|---|
append_leaf |
追加知识叶子到「待整理」区;文件不存在时自动创建 |
organize_tree |
整理知识树(插入节点 / 移动节点) |
cleanup_organized_leaf |
从待整理区删除已整理的叶子 |
update_index |
更新索引文件 |
Markdown 结构操作集中在 src/markdown.ts,路径规则在 src/paths.ts;决策卡预览与最终写入共用同一套纯函数,避免「卡上看到的」和「实际写入的」不一致。锚点不存在、叶子不在待整理区等情况,卡上会给出原因而不是静默失败。
两个技能¶
技能随包分发在 skills/ 目录,安装并重启 DSH 后,可通过 skill 工具加载。
| 技能 | 典型触发说法 |
|---|---|
append-leaf |
「记一下」「保存到知识树」 |
organize-tree |
「整理知识树」「归档待整理」 |
典型流程可以是:对话里让模型记叶子 → 待整理区积累 → 再说「整理知识树」做插入或搬移 → 必要时 update_index 更新索引 → cleanup_organized_leaf 清掉已归档的待整理条目。具体文件布局可参考包内 skills/append-leaf/references/ 下的示例 Markdown。
人在环内(HITL)¶
四个工具在 tools/pre-execute 挂载决策卡,由可选依赖 dsh-hitl ≥ 0.2.0 提供。组合里没有 dsh-hitl 时工具仍可执行,只是没有人工确认;若要用 diff、删除预览等计算字段,不要用低于 0.2.0 的 dsh-hitl。
各工具卡片上展示的内容(摘自 README):
append_leaf:树叶正文按 Markdown 渲染,可编辑;点【修改】则本次调用不执行,模型用你改过的正文重新提交。organize_tree:插入/搬移正文,以及整理后整份文件的 diff。update_index:旧索引与新索引并排 diff,新正文可编辑。cleanup_organized_leaf:将被删除的叶子原文(只读);删除不可撤销,不满意应拒绝并在反馈栏说明。
在 profile 的 cordis.patch.yml 中可配置 knowledge-tree 插件段:
- id: knowledge-tree
name: 'dsh-knowledge-tree'
config:
hitl:
enabled: true # false = 完全不挂卡,四个工具直接落盘
whenUnavailable: reject # 无浏览器连接时:reject(默认)/ wait
countdownSeconds: null # null = 不限时;正整数则到点按拒绝处理
rejectFeedback: true # 拒绝时显示反馈栏
1.1.0 之前字段 humanTurn / confirm / confirmTools 等已废弃,仍会出现警告;off 会映射为 hitl.enabled: false。
已知限制:预览基于弹卡时刻的磁盘内容;若其他会话同时改同一文件,卡上 diff 与最终落盘可能不一致。HITL 拦在调用执行前,不是跨会话事务。
安装与启用¶
插件以当前 DSH 进程权限读写工作区;安装前建议浏览源码与许可证(MIT),仅对信任的包开启 GitHub 安装的 allowBuilds。
应用内安装(推荐)¶
- 左侧侧栏进入【插件】;
- 【+ 添加插件】;
- 包名填
dsh-knowledge-tree; - 【安装】后【立即启用】,按提示重启 DSH。
命令行安装¶
npm 包已含构建好的 dist/,无需 allowBuilds:
pnpm dsh plugin --profile <profile> add dsh-knowledge-tree
从 GitHub 安装会触发包内 prepare(tsc)构建;pnpm ≥10 若拒绝构建脚本,需在 profile 的 pnpm-workspace.yaml 中允许 dsh-knowledge-tree,并尽量固定 commit:
pnpm dsh plugin --profile <profile> add github:YunpengDon/dsh-knowledge-tree
本地开发与 tarball 方式见仓库 README;国内直连 GitHub 超时时可优先用 npm 或本地目录安装。
验证与卸载¶
确认配置层已挂上:
pnpm dsh --profile <profile> --dump-config | grep -n knowledge-tree
应看到 knowledge-tree 与 knowledge-tree-skills 两行。--dump-config 不会求值 !!js 表达式,完整验收需启动 DSH,用 skill 工具确认能列出 append-leaf、organize-tree。
卸载:
pnpm dsh plugin --profile <profile> remove dsh-knowledge-tree
适用场景与注意¶
适合希望在 DSH 会话里持续沉淀技术片段、又希望结构落在可版本管理的 Markdown 里的开发者。Node 引擎要求为 ^22.19.0 || >=24.0.0(见 package.json)。
与同作者 DeepAgents 版知识树相比,DSH 版用 TypeScript、ctx.tools.register() 注册工具,HITL 挂在 dsh-hitl 决策卡上;技能格式为 name + description + whenToUse,不含 DeepAgents SKILL 里的 tools 字段。细节对照见仓库 README「与 DeepAgents 版本的主要差异」一节。