dsh-doc-master
Verifieddsh-doc-master · v0.2.1 · MIT
DSH 文档管理插件:变更日志管理、模块摘要管理、文档优先查询模式与结构化代码分析引擎;按项目隔离,支持多项目同时打开(DSH 0.2.x Desktop)。
Install
dsh plugin add dsh-doc-master Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
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(目录路径 + 标题),并拥有若干会话。 本插件不缓存任何进程级项目状态,而是在每次调用时解析项目根:
exec.agent/invocation.agent→ 会话 id;sessions.get(id).header.cwd→ 项目根(DSH 自身也据此建立 Workspace 索引);- 回退:
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 一条即可。