把开发中的架构决策沉淀为可审查的本地 Wiki 页面
33.3/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yu-xin-c/dsh-project-wiki该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 76 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@dsh-external/dsh-project-wiki(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 08:15:35
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 21 处,展示前 15 条)
- 读取本地文件lib/index.js:172
return await realpath(current); - 读取本地文件lib/index.js:283
const workspaceRealPath = await realpath(this.workspacePath); - 写入本地文件lib/index.js:288
await mkdir(this.root, { recursive: true }); - 读取本地文件lib/index.js:289
const wikiRealPath = await realpath(this.root); - 写入本地文件lib/index.js:294
mkdir(this.pagesDirectory, { recursive: true }), - 写入本地文件lib/index.js:295
mkdir(this.proposalsDirectory, { recursive: true }) - 读取本地文件lib/index.js:300
const names = (await readdir(this.pagesDirectory)).filter((name2) => name2.endsWith(".md")).sort(); - 读取本地文件lib/index.js:302
await readFile(path.join(this.pagesDirectory, name2), "utf8"), - 删除本地文件lib/index.js:349
await rm(path.join(this.pagesDirectory, `${existing.slug}.md`), { force: true }); - 删除本地文件lib/index.js:356
await rm(path.join(this.pagesDirectory, `${page.slug}.md`)); - 读取本地文件lib/index.js:399
const names = (await readdir(this.proposalsDirectory)).filter((name2) => name2.endsWith(".json")).sort(); - 删除本地文件lib/index.js:446
await rm(path.join(this.proposalsDirectory, `${proposal.id}.json`)); - 写入本地文件lib/index.js:517
await mkdir(path.dirname(filename), { recursive: true }); - 写入本地文件lib/index.js:519
await writeFile(temporary, contents, { encoding: "utf8", mode: 384 }); - 写入本地文件lib/index.js:520
await rename(temporary, filename);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 沉淀架构决策
- 生成可审查本地Wiki
- 自带原生Web界面
可审计的工作区本地项目 Wiki,自带原生 Web UI,服务于 DeepSeek Harness
README
由 DeepSeek 最新模型翻译生成DSH 项目 Wiki
面向 DeepSeek Harness 的可审计、本地优先项目 Wiki。
DSH 项目 Wiki 把 Agent 在开发过程中获得的架构知识、设计决策、代码约束和排障结论沉淀为工作区内的 Markdown 页面。它不是隐藏的聊天记忆:被接受的知识可以阅读、编辑、审查、搜索和提交到 Git,来源文件发生变化时也会明确标记为待更新。
面向 DeepSeek Harness 的可审计、工作区本地项目 Wiki,带有原生 Web 视图和经审核把关的 Agent 贡献。
DSH 项目 Wiki 在 DSH Web 中的运行界面
为什么需要它
长时间使用 Coding Agent 时,真正有价值的上下文往往散落在会话里:模块边界、隐含约束、曾经失败的方案、关键文件和维护约定。新会话无法可靠继承这些信息,而把全部聊天记录重新塞进上下文既昂贵,也容易引入过期结论。
DSH 项目 Wiki 提供一层可控的项目记忆:
- 知识归属于工作区:每个已注册的 DSH workspace 拥有独立 Wiki。
- Markdown 是事实源:页面保存在仓库中,可以直接审查、备份和版本控制。
- Agent 先提案、再接受:模型生成的知识不会自动成为已确认事实。
- 结论可追溯到源码:页面可以记录工作区相对路径及其 SHA-256 指纹。
展开完整文档(README 剩余 1 节)
DSH 项目 Wiki
面向 DeepSeek Harness 的可审计、本地优先项目 Wiki。
DSH 项目 Wiki 把 Agent 在开发过程中获得的架构知识、设计决策、代码约束和排障结论沉淀为工作区内的 Markdown 页面。它不是隐藏的聊天记忆:被接受的知识可以阅读、编辑、审查、搜索和提交到 Git,来源文件发生变化时也会明确标记为待更新。
面向 DeepSeek Harness 的可审计、工作区本地项目 Wiki,带有原生 Web 视图和经审核把关的 Agent 贡献。
DSH 项目 Wiki 在 DSH Web 中的运行界面
为什么需要它
长时间使用 Coding Agent 时,真正有价值的上下文往往散落在会话里:模块边界、隐含约束、曾经失败的方案、关键文件和维护约定。新会话无法可靠继承这些信息,而把全部聊天记录重新塞进上下文既昂贵,也容易引入过期结论。
DSH 项目 Wiki 提供一层可控的项目记忆:
- 知识归属于工作区:每个已注册的 DSH workspace 拥有独立 Wiki。
- Markdown 是事实源:页面保存在仓库中,可以直接审查、备份和版本控制。
- Agent 先提案、再接受:模型生成的知识不会自动成为已确认事实。
- 结论可追溯到源码:页面可以记录工作区相对路径及其 SHA-256 指纹。
- 过期知识可见:来源文件变化或消失后,页面会显示为“待更新”。
- 索引可随时重建:SQLite FTS5 只负责检索,不承载唯一数据。
核心能力
| 能力 | 说明 |
| 原生 Web 界面 | 在 DSH 会话中增加 Wiki 标签,集中展示页面、提案、状态和正文 |
| Markdown 编辑 | 创建、编辑和删除页面,支持 GFM 表格、列表、代码块等语法 |
| 全文检索 | 使用 SQLite FTS5 搜索标题、摘要、标签和正文 |
| 提案审核 | Agent 提案与正式页面分开保存,用户可以在界面中接受或拒绝 |
| 来源指纹 | 保存页面时计算来源文件 SHA-256,并显示短指纹用于审查 |
| 过期扫描 | 比较已记录指纹和当前文件,标记变化或缺失的来源 |
| 知识图谱与双向链接 | 正文使用 [[page-slug]] 或 [[Page title]] 建立关系,自动计算反向链接并生成可交互图谱 |
| 修订记录 | 页面记录 revision、创建时间、更新时间及 Web/Agent 操作者 |
| Agent 工具 | 根 Agent 可以搜索、读取、检查来源、创建提案和应用提案 |
工作方式
flowchart LR
Session["DSH Session"] --> Registry["Workspace Registry"]
Registry --> Service["Project Wiki Service"]
Web["Wiki Web View"] -->|Loopback RPC| Service
Agent["Root Agent"] -->|Wiki tools| Service
Service --> Pages["Markdown pages"]
Service --> Proposals["Review proposals"]
Service --> Index["Rebuildable FTS5 index"]
Service --> Sources["Workspace source fingerprints"]
每次 Web RPC 或 Agent 工具调用都会从活动 Session 重新取得 cwd,再通过 DSH WorkspaceRegistry 解析真实工作区。插件不会信任浏览器传入的目录,也不会让一个会话读取另一个工作区的 Wiki。
知识图谱
图谱视图把当前工作区已经接受的 Wiki 页面组织成一张可交互的有向图。它和全文检索互补:搜索适合直接找到某个结论,图谱适合观察模块之间的依赖、共同上下文和知识空白。
DSH 项目 Wiki 知识图谱视图
图结构直接从 Markdown 派生,不维护另一套不可见的图数据库:
- 节点:每个正式页面对应一个节点,标题用于显示,页面状态决定颜色。
- 有向边:页面正文中的 [[target]] 生成一条“当前页面 → 目标页面”的边。
- 目标解析:target 可以是页面 slug 或标题;匹配会进行 Unicode NFKC 规范化、去除首尾空格并忽略大小写。
- 未解析节点:链接目标尚不存在时,图中保留一个虚线空心节点,侧栏同时显示未解析数量。
- 去重:同一页面多次引用相同目标只生成一条关系,节点度数仍可用于视觉权重。
- 状态:绿色表示有效页面,琥珀色表示来源已变化,空心节点表示未解析链接;当前选中页面带蓝色描边。
图谱使用力导向布局自动组织节点。可以拖动节点、平移画布、滚轮缩放,也可以通过右上角按钮放大、缩小或重新适应画布;点击正式页面节点会回到页面视图并打开对应正文。图中不展示待审核提案,只有被用户接受的知识才会进入正式关系网。
对应的数据关系可以概括为:
WikiPage { id, slug, title, status, links[] }
WikiLink { sourcePageId -> targetPageId | unresolvedTarget }
安装
直接从 GitHub 安装
无需全局安装 DSH:
npx --yes @deepseek-ai/dsh@latest plugin --profile web add github:yu-xin-c/dsh-project-wiki
npx --yes @deepseek-ai/dsh@latest web
如果已经有全局 dsh 命令:
dsh plugin --profile web add github:yu-xin-c/dsh-project-wiki
dsh web
仓库包含预构建的 Host 和 Web bundle,因此 GitHub 安装不需要 pnpm allowBuilds。在需要可复现安装的环境中,建议固定 release tag 或 commit:
dsh plugin --profile web add github:yu-xin-c/dsh-project-wiki#
安装本地 checkout
git clone https://github.com/yu-xin-c/dsh-project-wiki.git
cd dsh-project-wiki
pnpm install
pnpm check
dsh plugin --profile web add "$PWD"
dsh web
Node.js 要求为 22.19+ 或 24+。
开始使用
1. 在 DSH Web 中注册或选择一个工作区。
2. 创建一个绑定到该工作区的会话。
3. 打开会话顶部的 Wiki 标签。
4. 使用“新建页面”记录事实、决策和约束,或让 Agent 创建待审核提案。
5. 添加工作区相对的来源文件,例如 src/services/auth.ts。
6. 代码变化后点击“扫描过期”,检查哪些页面需要更新。
Wiki 必须依附于一个仍然存在的源 Session,并且 Session 的目录必须已注册为 DSH workspace。这样可以保证页面、来源和 Agent 工具始终处于同一个项目边界内。
Agent 工具
插件只把工具安装到 DSH 根 Agent,并绑定到该 Agent 的 Session 工作区。
| 工具 | 类型 | 用途 |
| wiki_search | 只读 | 搜索当前项目 Wiki,结果数量限制在 1-50 |
| wiki_read | 只读 | 按页面 ID 或 slug 读取正文、来源、修订和状态 |
| wiki_backlinks | 只读 | 查询链接到目标页面的其他页面 |
| wiki_check_stale | 只读 | 比较来源指纹,不修改已接受页面 |
| wiki_propose | 需批准 | 创建待审核 Wiki 提案,不覆盖正式页面 |
| wiki_apply_proposal | 需批准 | 接受提案并生成带新来源指纹的正式页面 |
wiki_propose 和 wiki_apply_proposal 会触发 DSH 人工批准流程。Web 中的保存、接受和拒绝是用户直接执行的显式操作。
数据布局
每个工作区默认使用以下目录:
.dsh/wiki/
├── pages/ # 已接受页面,Markdown + YAML frontmatter ├── proposals/ # 待审核提案,JSON └── .index.sqlite # 派生的 SQLite FTS5 全文索引
页面 frontmatter 保存 ID、slug、revision、标签、来源指纹、状态、时间和操作者;正文保持普通 Markdown。可以删除 .index.sqlite,插件会根据 pages/ 中的 Markdown 重新建立索引。
建议把 pages/ 纳入 Git。是否提交 proposals/ 和 .index.sqlite 可以按团队策略决定,通常不需要提交派生索引。
来源与过期检测
保存页面时,插件会对每个来源文件计算 SHA-256:
sources:
- path: src/services/auth.ts
sha256: 8a6f...e21c
status: current
扫描时若文件内容变化或文件不存在,页面状态变为 stale,并列出具体来源。扫描只提示知识可能过期,不会自动重写页面,也不会用新指纹掩盖旧结论。
来源路径必须:
- 使用工作区相对路径;
- 解析后仍位于当前工作区内;
- 指向普通文件;
- 单文件不超过 20 MiB。
安全边界
- Web API 仅通过 DSH loopback RPC 暴露。
- 每次调用都重新验证活动 Session 和已注册工作区。
- Wiki 目录必须是工作区内的相对目录。
- 来源路径不能通过 ..、绝对路径或符号链接逃出工作区。
- Agent 的持久化提案和提案接受操作需要人工批准。
- 正式 Markdown 页面与 Agent 提案分开存储。
- SQLite 索引是派生数据,不会取代可审查的 Markdown。
- 页面上限默认为 1000,可配置范围为 1-10000。
配置
安装 bundle 后会插入以下 Cordis 配置:
- id: dsh-project-wiki
name: '@dsh-external/dsh-project-wiki'
config:
directory: .dsh/wiki
maxPages: 1000
| 配置项 | 默认值 | 说明 |
| directory | .dsh/wiki | 工作区内的 Wiki 相对目录,不能指向工作区外部 |
| maxPages | 1000 | 单个工作区允许的最大正式页面数,范围 1-10000 |
用户可以在自己的 profile cordis.patch.yml 中按同一 entry ID 覆盖配置。DSH patch 会替换整段 config,因此覆盖时应同时写出所有需要保留的字段。
当前边界
- 这是项目级本地 Wiki,不提供云同步或跨工作区共享。
- 搜索目前是 FTS5 词法检索,不包含 embedding 或向量数据库。
- 插件检测来源变化,但不会自动判断新代码应该如何改写结论。
- 页面必须由 Web 用户显式保存,或由用户批准 Agent 提案后进入正式知识库。
这些限制是有意的:项目知识应该可见、可审查,并由人决定何时成为长期事实。
开发与验证
pnpm install
pnpm typecheck
pnpm test
pnpm build
也可以运行完整检查:
pnpm check
测试覆盖包契约、RPC 错误格式、Markdown 持久化、FTS 搜索、来源过期检测、提案审核、反向链接和路径逃逸防护。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yu-xin-c/dsh-project-wiki
把开发中的架构决策沉淀为可审查的本地 Wiki 页面
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目