前言¶
DeepSeek Harness(DSH)插件生态强调「一切皆插件」,社区目录提供插件分发渠道。DSH Project Board 是一款客户端插件,把「项目结构 + 待办 + 决策」收进一套可追踪的记录系统:一棵节点树、两份 Markdown 文件、右侧栏一键查看。
插件由 Notoonex 维护,分类为客户端,当前星标数为 0。它解决的是 DSH 用户在项目开发中常见的痛点:待办和决策散落在聊天、文档、看板里,过两周就找不到;看板按「阶段」分节,但实际是按「产品部位」干活,找不全一个页面的上下文;决策只记结论不记理由,三个月后无法判断是否还成立;汇总数字手写,改一处忘一处。
核心设计¶
这套系统用三个约束解决上述问题:
- 节点树:使用
## 20 首页这样的节点命名,节点 = 持久的产品面/领域,不是任务、不是阶段。节点编号固定,不随任务增减。 - 双轨记录:进度看板放任务,决策台账放决策,共用同一套节点 ID。两份文件 stem 必须一致,frontmatter 中的
project:必须等于 stem。 - 派生视图:进度、未完成、待拍板全部算出来,不手写。
右侧栏功能¶
插件会在 DSH 右侧栏增加「项目看板」标签:
- 索引 chips + 互斥手风琴:一次只展开一个节点,避免信息过载。
- 搜索、仅未完成、待拍板过滤。
- 决策按节点分组,点开底部抽屉可以查看理由、备选、影响、复审。
- 浅色 / 深色自动跟随 DSH 主题。
安装与启用¶
作为 DSH 插件安装(推荐):
dsh plugin --profile web add @notoonex/dsh-project-board
从源码安装:
dsh plugin --profile web add github:Notoonex/dsh-project-board
重启 DSH 后,右侧栏会出现「项目看板」。插件会自动把 skill 安装到 ~/.dsh/skills/project-board/,并托管本地 board server。
配置¶
插件提供两个环境变量:
| 环境变量 | 默认 | 说明 |
|---|---|---|
DSH_PROJECTS_DIR |
~/Documents/Projects |
项目根目录,每个子目录一个项目 |
DSH_PROJECT_BOARD_PORT |
自动 | 可选;不设时从 8791 起自动找空闲端口 |
如果项目在别的目录,启动 DSH 前设置 DSH_PROJECTS_DIR。不设端口时,server 会自动找空闲端口,前端也会自动探测,不需要手动配置。
目录结构¶
每个项目需要各恰好一个 * 进度看板.md 和 * 决策台账.md,两份文件 stem 必须一致,frontmatter 的 project: 必须等于 stem。
目录结构如下:
$DSH_PROJECTS_DIR/
└── my-app/
├── my-app 进度看板.md
├── my-app 决策台账.md
├── 踩坑.md # 可选,只放教训
└── README.md # 可选,定位/背景
文件格式¶
进度看板¶
---
schema: project-board/1
project: my-app
archetype: web-app
nodes:
"00": 治理
"20": 首页
"90": 归档
---
## 20 首页
> 范围:首屏 / 导航 / 视觉
- [ ] 首屏文案定稿 · 验收: 3 秒内说清产品是什么 · 关联: D-20-01
- [ ] [[首屏是否放演示视频]] 等 owner 拍板
- [x] ~~四屏结构定型~~ `abc1234`
决策台账¶
---
schema: decision-log/1
project: my-app
---
### D-20-01 首屏采用单 CTA
- 节点: 20 首页
- 状态: 生效
- 日期: 2026-10-24
- 可逆性: 可逆
- 理由: 首屏只保留一个动作,降低选择成本
- 备选: 双 CTA / 无 CTA
- 影响: 20
- 复审: 上线两周看转化率
决策 ID 自带节点:D-20-01 = 节点 20 的第 1 条。台账扁平按 ID 排序,天然按节点分组,不需要复制章节骨架。
Skill¶
插件内置 Skill,位于 skill/ 目录:
references/init.md:首次接入与迁移。references/operate.md:日常写任务/决策。references/schema.md:完整字段与编号规则。references/packs/:web / business / life 域包。scripts/lint.mjs:跨文件校验。scripts/scan-legacy.mjs:旧看板只读扫描,输出 mapping 草稿。
使用方法:
node "$DSH_SKILL_DIR/scripts/lint.mjs" "$DSH_PROJECTS_DIR/my-app"
Skill 本身不依赖插件,只要有 Markdown 和 Node 就能用。
安全与 Token¶
插件安全设计如下:
- 只监听
127.0.0.1,公网访问不到。 - 非本机来源的请求直接返回 403(不只是「不给读」);DSH Desktop 的
dsh-app://属于本机应用来源,单独放行。 project参数按目录白名单校验,拒绝路径穿越。- 只读写项目目录内的
* 进度看板.md/* 决策台账.md。 - 勾选回写优先按任务 ID,其次按「节点 + 任务文本」定位,不依赖行号。
- 本地 token:首次启动自动生成,客户端自动携带;同一台机器上的其他页面没有 token,调用会被 401 拒绝。
Token 配置:
- 首次启动生成
~/.dsh/project-board/token(权限 600)。 - 插件启动时把 token 写进已安装的
client/client.js。 - 客户端所有 API 请求带
X-Project-Board-Token。 /api/health不校验 token,只用于端口探测。- 如果侧栏报 401:重载 DSH;或删除 token 文件后重启 DSH,让插件重新生成并注入。
这是一次性自动配置,不需要用户输入任何东西。只有一种情况会失败:插件安装目录本身是只读的(例如全局 npm 安装)。用 dsh plugin add 装到 profile 目录通常是可写的。
更新机制¶
- 增量更新:只覆盖有变化的文件。
- 你新增的文件会保留。
- 你改过的文件会保留(日志提示
kept local skill edit)。 - 上游删除、且你没改过的文件会被删除。
- 想强制全量:删掉
~/.dsh/skills/project-board/或其中的.manifest.json,重启 DSH。
写入定位¶
侧栏勾选不再按行号硬写:
- 任务有
[T-<节点>-<序号>]→ 按 ID 找。 - 没有 ID → 按「节点 + 任务文本」找。
- 都找不到 → 返回 409,让前端刷新,不会误勾别的任务。
- 勾选完成只加/去
~~删除线~~,不改任务原文(链接、反引号、加粗都保留)。
开发与测试¶
运行测试:
npm test
测试包含:
lint正常/异常 fixture。- board server 的 board/decisions API。
- 路径穿越拦截。
- CORS 远程来源拒绝 / 本地来源放行。
兼容性¶
- DSH(Cordis)插件。
- 纯 markdown,Obsidian 可直接打开。
- Skill 部分对 Codex / Claude 也可复用。
适用场景¶
DSH Project Board 适合需要在 DSH 中管理项目结构、待办事项和决策记录的用户。它通过节点树和双轨记录,把散落在各处的信息收拢到两份 Markdown 文件中,并用右侧栏提供统一的视图。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
总结¶
DSH Project Board 把「项目结构 + 待办 + 决策」收进一套可追踪的记录系统:一棵节点树、两份文件、右侧栏一键查看。它通过节点树、双轨记录、派生视图三个约束,解决待办和决策散落、阶段与产品部位脱节、决策不记理由、汇总数字手写的问题。插件提供完整的 Skill、校验脚本和安全机制,适合需要在 DSH 中建立统一项目记录系统的用户。
- 目录页:https://www.skillhub.cn/plugins/Notoonex/dsh-project-board
- GitHub:https://github.com/Notoonex/dsh-project-board