前言¶
在 DeepSeek Harness(DSH)里让智能体改某一功能,常见路径是:在仓库里 grep、连续打开多个文件、再判断哪些片段与当前问题相关。文档若分散在 README、Wiki 或口头约定里,智能体往往仍会把「搜代码」当作默认入口,上下文噪声大、也容易漏掉测试与边界条件。
dsh-feature-map 把「按功能组织的一页文档」变成智能体会话里的固定前置步骤:每个功能对应 docs/features/ 下的一页,写清相关文件、类型、测试与坑点;插件把阅读顺序写进 prompt,并提供按粒度读取地图的工具;在项目已有地图时,还会在本会话内拒绝第一次直接查源码,并给出原因与补救方式(先读地图)。下面介绍插件定位、能力与典型落地步骤。
这是什么¶
dsh-feature-map 是维护者 megablue 发布的 DSH 插件,在 Plugin Hub 上归类为记忆。一句话定位来自项目简介:Docs before code: one page per feature so your agent stops grepping and starts knowing——用「一页一功能」的地图替代反复 grep,让智能体先知道该读哪一块,再按需打开源码。
插件以 DSH bundle 形式安装,无 npm 运行时依赖;面向 DSH 0.2.0-rc.2 与本地工作区,从主机文件系统读取 docs/features/,写入经 harness 文件系统 seam,并受当前 profile 沙箱策略约束。
核心功能¶
五个工具¶
| 工具 | 作用 |
|---|---|
feature_map |
读取地图:索引、某主题的章节、单页结构、某一节、某个 ###,或整页。 |
feature_map_check |
报告漂移(无索引行指向的页面、链接失效的行等),以及过大、不宜一次读完的章节。 |
feature_map_init |
为新项目脚手架:AGENTS.md、HANDOFF.md、docs/SPEC.md 与地图索引。 |
feature_map_adopt |
分析已有项目缺什么,仅写入尚不存在的文件;默认只读,需 apply: true 才落盘。 |
feature_map_regen |
重写已有地图:补标题与 Status: 行、拆分过大章节为 ###、并对齐索引。 |
Prompt 与守卫¶
除工具外,插件还会注入说明阅读顺序的 prompt 段落,并用守卫在本会话内强制执行一次(详见 README 中 What you will notice):在已有 feature map 的项目里,智能体若试图不经地图直接做首次源码查找,会被拒绝并提示应先读地图。
脚手架文件分工¶
feature_map_init 涉及的四份文档各司其职:
| 文件 | 用途 |
|---|---|
AGENTS.md |
流程与硬规则:命令、工作流、每次变更都适用的约束。 |
docs/features/README.md |
地图索引与页面模板——智能体应优先阅读的入口。 |
docs/SPEC.md |
用户可见行为,不依赖读代码即可理解产品。 |
HANDOFF.md |
易变的会话状态:进行中事项与下一步。 |
安装与启用¶
在 README 中、desktop profile 上验证过的安装命令如下:
dsh plugin --profile desktop add github:megablue/dsh-feature-map
也可从源码以 bundle 方式启用:在应用插件设置里把本仓库目录加为 bundle;或在 agent 会话里用插件管理器指向该目录的绝对路径,会链接包、在 profile 中增加 feature-map 行并即时生效。注意:修改插件自身代码需重启应用(profile 不监视模块文件);只改项目内文档无需重启。
兼容性摘要:目标 DSH 0.2.0-rc.2;CI 使用 Node 22.x;package.json 版本为 0.2.0,许可证 MIT;插件不做网络调用。
典型用法¶
新项目:先脚手架,再填内容¶
-
生成脚手架(不落盘)
对智能体说 “scaffold the documentation workflow here”,或调用feature_map_init。会先返回四份文档的渲染结果,不写文件。 -
写入文件
使用feature_map_init且write: true(经 harness 文件系统 seam 写入),或自行粘贴返回内容。已有文件不会被覆盖;确需覆盖时再传force。 -
填写占位符
模板里标明的占位(如AGENTS.md中的布局、命令与硬规则,以及索引第一行)需人工或团队补全;未填完的脚手架若被当成权威文档会「看起来完整却信息为空」,占位是刻意可见的。 -
写第一页功能文档
从docs/features/README.md复制页面模板,写清功能做什么、涉及名称、工作原理、配置、测试与关联。再调用feature_map_adopt:索引行可由页面标题与Read when:行自动生成,无需手维护表格。 -
自检
feature_map_check应报告地图内部一致。之后循环遵循文档中的工作流:改代码的同一提交里更新对应功能页;会话中先读地图再读源码。
已有项目: adopt 再按需 apply¶
默认调用 feature_map_adopt(无参数)为只读报告,包含 Index、Pages、Sections、AGENTS.md 缺失块、以及 docs/ 下地图外 Markdown 等分段说明,并给出带 deterministic / judgment 标签的计划。apply: true 时仅创建不存在的文件,从不修改已有文件内容。
若地图结构已过时,可使用 feature_map_regen 整理章节与索引(README 在「Bringing an existing project」一节有进一步说明,截断处仍指向同一工作流)。
适用场景与注意¶
适合谁: 希望 DSH 智能体在本地仓库里稳定「先文档、后代码」的团队;功能边界清晰、愿意维护 docs/features/ 一页一功能的仓库;或已有部分文档、想用 feature_map_adopt 对齐索引与模板的项目。
生态背景: DSH 采用「一切皆插件」的扩展方式;社区目录(如 SkillHub 上的插件页)是独立站点,与 DeepSeek / 幻方无官方从属关系,本文不将其描述为官方应用商店。
安全与权限: 插件随当前 DSH 进程与 profile 沙箱运行,能读项目中的 docs/features/ 并在允许策略下写入。安装前建议在 GitHub 上查看源码与 MIT 许可证,确认符合团队合规要求。README 未提供虚构案例或用户数据,本文亦未补充未经核实的数据。
结尾¶
dsh-feature-map 把「功能地图」从可选文档变成智能体工作流的一部分:工具负责读图、查漂移、脚手架与再生;守卫与 prompt 负责把第一次读源码换成先读地图。维护者 megablue,当前 GitHub 星标为 0(以目录页展示为准)。