证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle安全与治理dsh Profile

DSH Project Nav

一个为 DSH 项目记录架构关联变更意图,并从追加式事件日志重建治理视图的插件。

快速了解

它能做什么

一个为 DSH 项目记录架构关联变更意图,并从追加式事件日志重建治理视图的插件。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
安全与治理治理文档工作流自动化
适配技术
deepseek-ai-dsh-toolscordis
兼容性

dsh Profile
@deepseek-ai/dsh-tools >=0.1.2-rc.1 <0.2.0; DSH Harness version not declared

可信度与状态

证据已验证
核对日期 2026/9/11 UTC 14:20

有代码证据的贡献

它为 DSH 增加什么

项目导航工具

为 DSH 增加六个工具,用于项目图查询、变更意图提交、决策、节点、渲染和主线设置。

机制证据

选择前先看

Project Nav 是面向 DeepSeek Harness 项目的架构优先治理插件包。它提供项目影响图查询、带范围的变更登记、架构决策记录、节点管理、主线向量设置,以及派生文档和 HTML 地图的重新生成。其文档将 .internal/events.jsonl 定义为事实源,并由其重建运行时模型和投影。

适合谁

适合需要将代码变更与架构锚点、范围检查和自动生成项目文档关联起来的 DSH 团队。

常见任务

  • 使用 nav_graph 查看目标文件的架构影响、覆盖度和文档路由。
  • 通过 nav_commit 以锚点和架构说明登记有范围的变更。
  • 记录架构决策、更新项目节点,或重新生成 PROJECT.md、ARCH-MODEL.md 和地图投影。
  • 将文档中列出的旧版治理账本迁移到事件日志模型。

权限与数据

会在配置的项目工作区中维护治理状态和生成的投影文件。

权限
  • 读取项目文件,以判断范围内变更的证据和架构状态。
  • 在 .internal/ 下写入追加式治理事件。
  • 创建或刷新运行时模型数据,以及生成的文档或 HTML 地图投影。
数据处理
  • 文档将 .internal/events.jsonl 说明为持久化事实源。
  • .internal/runtime/ 是可丢弃、可重建的运行时状态。
  • 重新渲染时可能覆盖指定的生成区域或生成文件。
外部服务
  • 提供的 manifest 和 README 未声明使用外部服务。
凭据
  • 提供的证据未声明需要凭据。

局限

  • 未找到 npm registry 中对应版本;应使用已验证的固定 Git 插件包,不要假定可以从 registry 安装。
  • 未声明 DSH Harness 版本范围;仅声明了 @deepseek-ai/dsh-tools 的 peer dependency 范围。
  • 本次策展未独立执行运行时行为、文件影响、迁移安全性或测试。
  • README 表示生成投影不应手动编辑,因为之后的渲染可能覆盖这些修改。

DSHub 已核对

  • 已验证固定 Git 源和 bundle patch 结构。
  • 已声明包版本 0.9.2、BSD-3-Clause 许可证和 @deepseek-ai/dsh-tools peer dependency 范围。
  • bundle patch 会将 @dsh-external/project-nav 挂载为 project-nav。

DSHub 未核对

  • 未在真实 DSH profile 中执行安装。
  • 未运行文档中列出的测试套件。
  • 未验证与特定 DSH Harness 版本的兼容性。

固定版本安装

安装 DSH Project Nav

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit 4099157 对应的 README
维护者编写的上游内容原文于 2026/9/11README.md 获取,正文和仓库相对媒体固定到 commit 40991570f438,内容哈希为 3f85df405fad。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。
<div align="center">

🧭 dsh-project-nav

面向 DeepSeek Harness(DSH)的项目反漂移治理插件

version license dsh-tools node

简体中文 | English

每个任务从架构出发 · 每个文件都有落点 · 一切皆可回溯

</div>

核心理念(唯一上位约束)

所有开发动作必须从架构出发。 架构不出错,开发过程中出现一点问题也只是局部小问题;反之,架构错了,局部补得再好也是在错误的骨架上堆砌。

v0.9.0 是从架构出发的一次性重写:设计契约见 ARCHITECTURE.md。 旧的补丁式演进(11 个工具 / 5 个并列账本 / begin·done 生命周期)整体放弃——不是收敛,是换骨架。 决策可丢弃,事实(F1–F9)不可丢弃:它们全部变成新架构的需求。


1. 一句话架构

一条 append-only 事件流(唯一事实源)+ 一个由它折叠出的架构模型(可丢弃缓存)+ 一层渲染投影;闸门是对模型的查询,产出是模型的重渲染。

   ┌───────────────────────────────────────────────────────────────┐
   │ ① 事件流  .internal/events.jsonl    ← 唯一事实源(append-only) │
   │   commit{锚点,scope,arch=,phase} · decide{ADR} · node{} · set{}│
   └───────────────────────────┬───────────────────────────────────┘
                               │ 纯函数折叠(I1)
   ┌───────────────────────────▼───────────────────────────────────┐
   │ ② 模型  .internal/runtime/arch-model.json   ← 可丢弃(I3)      │
   │   节点(项目/模块/功能/工件) + 边 + 证据 + 主线向量 + 决策 + 补丁计数│
   └───────────────────────────┬───────────────────────────────────┘
                               │ 全部派生(I2)
   ┌───────────┬───────────────┼───────────────┬──────────────────┐
   ▼           ▼               ▼               ▼                  ▼
 nav_graph  PROJECT.md      ARCH-MODEL.md   地图 HTML        架构档指纹
 (闸门=查询)(渲染)        (渲染)        (渲染)          (机检)

三条不变式(可机检)

不变式 验法
I1 单源:模型每条属性都能由「事件流 + 磁盘实况」复算,无第二手写真相 复算 == 缓存
I2 渲染:地图 / PROJECT.md 标记区 / ARCH-MODEL.md / 架构档指针全部由模型生成 手改渲染物 → 下次渲染覆盖它
I3 可丢弃:删掉整个 .internal/runtime/ → 治理零损失 删后跑全量查询,结果一致

2. 六个工具(11 → 6)

工具数下降不是目标,是"闸门变查询、产出变渲染"的结果。

工具 模型操作 典型用法
nav_graph :影响面 / 缺口 / 覆盖度 / 文档路由 / 架构档新鲜度 / 健康快照 / 地图 nav_graph mode=task target=src/host/app.js
nav_commit :登记改动意图(锚点 + scope + arch= 一句话),跑六闸;自动按证据收上一笔 nav_commit task="加一层校验" anchor=PN-F01 arch="架构不变" features=PN-F01
nav_decide :架构决策(挂节点,登记即重置该节点补丁计数) nav_decide anchor=PN-F01 reason=… decision=…
nav_node :节点 upsert / 退役并级联 / 参考文档工件 / 旧账本迁移 nav_node target=E-F01 name=编辑器 files=src/a.js
nav_render :重生成全部投影(+ 可选刷新架构档指纹) nav_render target=.internal/arch/overview.md
nav_set :主线向量(doing / next / notDoing / exit) nav_set doing="收口 shoucang" notDoing="pmg 融合"

最重要的行为变化:收口不需要第二个动作

  • 登记一笔改动 = 一次 nav_commit,它记下 scope 内每个文件的 {size, mtimeMs, sha1} 作为证据
  • 改完文件后,下一次任意工具调用(任意会话)发现证据变了 → 自动收口。
  • 收口不依赖会话:"只有自己的会话能驱动自己的动作"这条设计被删除: 会话死了,意图照旧被任意会话按证据收口。
  • 证据没变 ⇒ 意图继续在途(有人正在改 = 正常状态,不是孤儿)。
  • 唯一绕过证据的出口:nav_commit mode=archive id=ACT-N reason=…(空 scope / 误建 / 方向已废)。

3. 六个闸门(全部是 nav_commit 内的模型查询)

闸门 问题 判据 强度
锚点闸 架构节点真实存在吗? 节点在模型中,或锚定 .internal/arch/*.md
范围闸 撞主线反面吗?撞别人在途 scope 吗? notDoing 命中 → 拒;与他在途重叠 → 告警 拒/告警
主线闸 scope 里的模块在主线上吗? 未被 doing/next 引用 → 告警 告警
计数闸 同一锚点又在反复打补丁? 自上次决策以来 ≥ 3 次 → 强制先出决策
决策闸 这次改动需要架构变更吗? arch= 缺失 → 告警要求一句话回答 告警
完结闸 有该收而未收的意图吗? 开新笔时按证据自动收旧;异常才报 自动 + 报异常

闸门是查询而不是流程,因此它们不可能产生"孤儿状态",也无法被"另开一条路"绕过—— 写入只有一个入口。

4. 数据面:7 → 3

路径 生命周期 版本控制
事件流 .internal/events.jsonl 永久 (唯一事实源)
运行时 .internal/runtime/(模型缓存 · 在途 · 锁 · 诊断) 短命 (gitignore,可丢弃可重建)
渲染投影 PROJECT.md 标记区 · .internal/ARCH-MODEL.md · runtime/map-*.html · 架构档 arch-cache 可再生 投影本身可进仓

.gitignore 必须只排除 runtime,不能整目录排除 .internal/—— 否则事件流不进版本控制,新 clone 读不到任何决策,"决策可传播"就是一句空话。

5. 安装

# 1) 打包(在插件仓根)
npm pack

# 2) 装进 profile:编辑 ~/.dsh/profiles/<profile>/package.json
#      dependencies:  "@dsh-external/project-nav": "file:<本仓路径>/dsh-external-project-nav-0.9.0.tgz"
#      dsh.profile.bundles 里已有 "@dsh-external/project-nav"(保持不变)

# 3) 重启 dsh —— 装与重启是两条时间线,重启前线上仍是旧版

配置(profile 里的插件项):

默认 说明
root '' → 进程 cwd 被治理工作区根(其 .internal/ 存事件流)。建议显式设置

6. 迁移(旧账本 → 事件流)

旧版有 5 个并列账本:nav-index.json / vector.json / nav-actions.json / nav-docs.json / nav-arch.json

nav_graph mode=legacy        # 先看清旧账本全貌(只读)
nav_node layer=migrate       # 一次性折叠成事件 + 归档为 .internal/legacy/ 只读快照
nav_render                   # 重建全部投影

迁移只跑一次(落下 .internal/legacy/migrated.json 标记)。迁移后旧文件离开原位、不再被任何读路径读取—— 不存在第二个真相。本轮不保留二段式侧车与回切;旧快照仅作取证材料。

7. 测试

npm test                  # 四个套件:98 项
npm run test:node-runner  # 同一批用例走 node --test
套件 覆盖
test/core.test.mjs 事件流 / 折叠 / scope 解析 / 六闸 / 收口 / 迁移(含真实索引形状与落点口径)(43)
test/architecture.test.mjs 不变量 I1·I2·I3·A1·A2·A4·A5·A6(22)
test/concurrency.test.mjs F1 并发追加不丢 / F2 破锁竞态 / token 校验 / 重入 / 无锁残留(12)
test/host.test.mjs 真 host 代码 + 桩 ctx:装配面 6 工具、闸门接线、端到端、归属归一回归(22)

沙箱提示:node --test 会用管道 spawn 子进程,在某些受限沙箱下报 spawn EPERMnpm test 直接执行测试文件(文件被直接运行时 node:test 同样执行),因此不受影响。

8. 版本规则

每次更新一律 +0.0.1,不因"加功能"跳中间位(lk 2026-09-10 定调)。 例外:架构换代才允许跳位,且必须在变更日志里写明"换代"二字。

本版 0.8.6 → 0.9.0 即该例外:不是加功能,是换骨架(决策丢弃、事实保留)。

9. 开发纪律

  1. 改代码前先读 ARCHITECTURE.md——它是本仓的架构契约,不是说明书。
  2. 改了架构先改契约;契约之外不新增文件(新增即架构变更)。
  3. 渲染物永不手写:手改 PROJECT.md 标记区 / ARCH-MODEL.md / 地图,下一次 nav_render 就覆盖它。
  4. 事故事实(F1–F9)不可丢弃:它们是需求,只有实现方式可以换。

License

BSD-3-Clause © Fishsb (lk)

有意识地管理

安装与管理

前置条件与目标 Profile

目标 dsh Profile

交付方式 Git Bundle — Fishsb/dsh-project-nav#40991570f4387db4c746fe3e1d3d384d7628e0cf

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile dsh list

兼容性与访问范围

Requires @deepseek-ai/dsh-tools peer dependency @deepseek-ai/dsh-tools >=0.1.2-rc.1 <0.2.0; DSH Harness version not declared

检查兼容性证据

风险事实

workspace-writes

Writes governance records and regenerated project projections in the configured workspace root.

证据
license

BSD-3-Clause license.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

若工作区已有治理文件,建议先在测试工作区使用:该插件文档描述了迁移和重新生成行为,可能改变项目维护的记录和投影。

AI 审查于 2026/9/11 UTC 14:21GitHub 事实核对日期: 2026/9/11 UTC 14:21

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: DSH Project Nav