跳到主要内容

dsh-doc-master

已验证

dsh-doc-master · v0.2.1 · MIT

DSH 文档管理插件:变更日志管理、模块摘要管理、文档优先查询模式与结构化代码分析引擎;按项目隔离,支持多项目同时打开(DSH 0.2.x Desktop)。

安装

dsh plugin add dsh-doc-master

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

标签

作者

说明文档

dsh-doc-master

DeepSeek Harness 文档管理插件,用于解决大型(前后端分离)项目中 Agent 重复读取全量代码的问题。

适配 DSH 0.2.x(含 Desktop 版),支持多项目同时打开: 每个项目(DSH Workspace)由一个会话的 cwd 标识, 所有路径解析、配置缓存与「文档优先」开关都按项目隔离,多开时互不影响。

能力

  • /changelog(工具 docmaster_changelog):每次代码修改后生成/追加结构化 CHANGELOG 条目,倒序写入当前项目的 CHANGELOG.md。
  • /module(工具 docmaster_module):为当前项目的指定模块生成/增量更新摘要到 docs/modules/<name>.md(职责、接口、依赖、关键文件)。
  • /doc-first / /doc-off(工具 docmaster_doc_first / docmaster_doc_off):开启/关闭当前项目的「文档优先」模式,开启时会向模型提示注入「先查 CHANGELOG 与模块摘要,文档不足才读代码」,并明确只处理当前项目。
  • /doc-projects(工具 docmaster_projects):列出当前同时打开的项目、路径、会话数与各自的文档优先状态,并标明本次调用所属项目。
  • analyze-code(工具 docmaster_analyze_code):结构化代码分析引擎(TypeScript/JavaScript/Python),返回主要导出、方法签名、外部依赖、文件清单(JSON)。
  • /doc-config(工具 docmaster_config):查看/修改/重置当前项目的 .doc-master.json。

多项目(Workspace)支持

DSH 0.2.x 引入 Workspace 模型:一个项目 = 一个 Workspace(目录路径 + 标题),并拥有若干会话。 本插件不缓存任何进程级项目状态,而是在每次调用时解析项目根:

  1. exec.agent / invocation.agent → 会话 id;
  2. sessions.get(id).header.cwd → 项目根(DSH 自身也据此建立 Workspace 索引);
  3. 回退:sandboxPolicy.resolve({ session }).workspaceRoot → 再回退 sandboxPolicy.workspaceRoot。

按项目隔离的状态:

状态 粒度 说明
.doc-master.json 配置 每个项目根一个文件 缓存按项目根分键
文档优先开关 每个项目 A 项目 /doc-first 不影响 B 项目
CHANGELOG / 模块摘要 每个项目根 相对路径一律相对该项目根解析

配置项:

{
  "changelog": { "path": "CHANGELOG.md", "maxEntries": 100, "template": "custom" },
  "modules": { "path": "docs/modules/", "autoAnalyze": true, "exclude": ["node_modules", "dist", "__pycache__", ".git"] },
  "docFirst": { "enabledByDefault": false, "fallbackToCode": true }
}

实现说明

  • 入口 lib/index.js 为可直接加载的 ESM JavaScript(无构建步骤)。@deepseek-ai/cordis 与 @deepseek-ai/dsh-tools 作为 peerDependencies 提供(兼容 0.1.x / 0.2.x)。
  • 只硬依赖 tools / commands / systemPrompt / fs;sessions、sandboxPolicy、agents、workspaceRegistry 走 ctx.get 可选获取,缺失时优雅降级(单项目 / 旧版本仍可用)。
  • 代码分析采用结构化词法扫描(注释掩码 + 声明扫描),识别 import/require、export(default/命名)、function/class/interface/type/enum/const 以及 Python 的 import/def/class 与常量,无需额外 AST 库依赖。

兼容性

  • 面向 DSH 0.2.x(含 Desktop);同时兼容 0.1.x。peerDependencies 声明为 @deepseek-ai/dsh-tools >= 0.1.0-rc.6 < 0.3.0、@deepseek-ai/cordis ^4.0.1。
  • 只用 0.2.x 中稳定存在的 API:tools.register / commands.register / systemPrompt.section / fs.* / sessions.get / sandboxPolicy.resolve;defineTool 的紧凑参数 DSL 与 output.schema: { type: 'json' } 在 0.1.x 与 0.2.x 上均被接受。
  • 唯一硬依赖是 tools / commands / systemPrompt / fs;其余服务缺失时自动降级为单项目模式,因此在旧版本或非 Workspace 宿主上依然可用。

测试

npm install   # 安装 peer 依赖(@deepseek-ai/dsh-tools、@deepseek-ai/cordis)
npm test

test/verify.mjs 是无网络的端到端校验:加载真实插件入口与真实 defineTool,用符合 0.2.x FsTarget/FsDirEntry/FsInfo 契约的假 fs 与假 ctx 驱动两个模拟项目,验证 49 项断言——包括配置/变更日志/提示注入/项目列举的逐项目隔离、目录分析的符号与签名、以及局部变量不再被误判为模块常量。

安装

# Desktop / 0.2.x profile
dsh plugin --profile desktop add dsh-doc-master

# 或直接从 GitHub 安装
dsh plugin --profile desktop add github:ben8804/dsh-doc-master

安装后(也可在设置 → 插件市场里一键安装),重启 DSH 使新 bundle 生效。

发布

上架 dsh-market 即向精选列表 awesome-dsh-plugin 提 PR,新增 data/plugins/ben8804__dsh-doc-master.yml 一条即可。