dsh-knowledge-tree:在对话里攒叶子,落成个人知识树

前言

和 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。

应用内安装(推荐)

  1. 左侧侧栏进入【插件】;
  2. 【+ 添加插件】;
  3. 包名填 dsh-knowledge-tree;
  4. 【安装】后【立即启用】,按提示重启 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 版本的主要差异」一节。

链接

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

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

小夜