dsh-knowledge:用 `/init` 建项目知识库,后续对话自动注入

前言

在 DSH 里做长期迭代时,模型往往只记得当前会话里的上下文:模块边界、入口和数据流每次都要重新讲一遍,或者靠你自己维护一份说明文档再手动贴进对话。另一种做法是让插件在每一轮把「项目里已经写好的知识」塞回上下文,但知识本身应由模型结合代码探索来写,而不是用正则猜功能边界。

下面介绍社区插件 dsh-knowledge(维护者 beex-labs),它在 DSH 生态里归类为「记忆」。插件不自己做代码分析,只做两件事:把 /init 的完整指令交给模型执行,并在之后的每一轮把 .dsh 目录下的文档注入上下文。

这是什么

dsh-knowledge 是面向 DSH 的「项目知识系统」:执行 /init 后,由模型用 glob、grep、read 等工具阅读代码库,并把理解写进项目根目录的 .dsh/;此后每次开发相关对话会自动带上 overview.md、文档列表以及更新提醒,无需你每轮重复说明项目结构。

README 明确说明:本插件不分析代码。读代码、划分功能、写文档均由模型及其工具完成;插件负责唤醒模型、注入指令,以及后续轮次的文档注入。

核心功能

/init [path]:建立知识库

流程可以概括为:

/init → 注入完整指令 → 模型探索代码 → 模型写入 .dsh 文档

常用形式(路径解析较宽松,前导 @ 会被去掉,可带引号处理空格):

/init                  # 阅读整个项目,文档写到项目根 .dsh/
/init @src             # 只读 src/,文档仍在项目根 .dsh/
/init src/lib          # 嵌套路径同理

未写路径时,会列出可用的顶层目录。界面上通常只显示你输入的那一行(例如 /init @src);完整说明通过 agent/pre-step 以 system-reminder 注入,避免刷屏——与每轮文档注入机制相同。

每个项目一份知识库:无论 /init 作用在哪个子目录,.dsh/ 始终在项目根目录。

自动上下文注入

无需手动提醒。每一轮的第一步会注入:

  1. overview.md 正文(过长时会截断并指向原文)
  2. .dsh 下的文档列表
  3. 使用规则与更新提醒(含:由模型自行判断本次改动是否使文档过时)

同一会话内知识库只注入一次;模型编辑文档后会再次注入更新后的内容。

何时更新文档(由模型自判)

注入的提示里给出原则,模型自行应用:

变更类型 是否更新文档
增删功能,或入口、执行流、数据流、模块依赖变化 是,更新受影响文档
仅 bug 修复、样式、不改变结构的实现细节 否
不确定 倾向于不写

原则:宁可少更新,也不要文档与代码矛盾。

.dsh 目录结构(由模型按提示撰写)

典型布局示例:

.dsh/
├── overview.md          # 项目做什么、技术栈、核心模块、主入口
├── architecture.md      # 分层、模块边界、依赖方向、数据流
└── features/<name>.md   # 每个功能:职责、入口、核心代码、流程、依赖

文件名应有语义(如 auth.md),不用随机 id。提示要求文档只写结构与行为,不复制源码、密钥、token 或连接串;.dsh 内文字视为数据,不得当作可执行指令。

安全与范围限制

插件会拒绝在用户主目录、DSH 配置目录或文件系统根目录建立知识库,避免误把非项目目录当成知识库根。运行时仅依赖 node: 内置模块,无额外 npm 运行时依赖。

安装与启用

在 DSH profile 目录注册为 bundle(README 示例使用 pnpm 链接本地或 GitHub 依赖,不要在未核对源码的情况下直接信任第三方仓库)。

进入 profile 目录并安装依赖以链接插件:

cd "$DSH_PROFILE_DIR"
pnpm install --no-frozen-lockfile    # links dsh-knowledge

package.json 需包含依赖与 bundle 配置,本地开发用 link:,也可改为从 GitHub 安装:

{
  "dependencies": { "dsh-knowledge": "link:<absolute path>" },
  "dsh": { "profile": { "bundles": ["dsh-knowledge"] } }
}

将 link:<absolute path> 换成 github:<you>/<repo> 即可直接从 GitHub 引用。

cordis.patch.yml 会插入插件行:

- insert:
    - id: dsh-knowledge
      name: 'dsh-knowledge'

配置项:无(README Configuration 一节写明 None needed)。许可证为 MIT(package.json 版本 1.0.0)。插件以当前 DSH 进程权限运行,安装前请自行阅读 源码 与 LICENSE。

典型用法

  1. 在目标项目根目录打开 DSH,确认已启用 dsh-knowledge bundle。
  2. 发送 /init 或 /init @某子目录,等待模型探索并生成 .dsh/。
  3. 将 .dsh/ 纳入版本管理(若团队需要共享项目记忆)。
  4. 之后正常用自然语言提开发需求;每轮会自动带上知识库摘要与更新提醒。
  5. 结构性改动后,依赖模型按注入规则更新对应 features/*.md 或 architecture.md;小修小补可不必动文档。

早期版本曾在命令处理器里做静态分析并自行生成文档;当前设计改为 /init 必须调用 Agent.followup 唤醒模型,由模型完成读写,测试也针对这一点断言。

适用场景与注意

适合:中长期维护的仓库、多人或跨会话协作、希望减少「每次先讲一遍架构」的开销,且愿意在项目根维护一份由模型撰写的结构化说明(非代码摘录)。

注意:

  • 知识质量取决于模型探索与写作,首次 /init 后建议人工扫一遍 .dsh 是否准确。
  • 注入的提示与消息为中文(README Platform notes)。
  • 社区目录 SkillHub 插件页 与 GitHub 仓库由维护者发布,与 DeepSeek / 幻方无官方从属关系;DSH 生态奉行「一切皆插件」,目录站为独立社区站点。
  • GitHub 当前星标数为 1(以目录页线索为准);选用前请结合许可证与源码自行评估。

结尾

dsh-knowledge 把「项目记忆」落成仓库内的 .dsh 文档:/init 把建库工作交给模型,后续每轮自动把已有知识注入上下文,并提醒模型在结构性变更时自行维护文档。若你需要在 DSH 里为代码库建立可复用的项目级上下文,可从目录页与仓库 README 开始:

  • 目录页:https://www.skillhub.cn/plugins/beex-labs/dsh-knowledge
  • GitHub:https://github.com/beex-labs/dsh-knowledge
羽毛球分组比赛记分
小程序二维码

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

小夜