Installation
npx -y @deepseek-ai/dsh plugin --profile web add github:raosay/dsh-kanbanThis installation command is an unverified starting point generated from the GitHub repository address.
README
Maintainer-authored documentation snapshot.
dsh-kanban
一个独立的 DeepSeek Harness (DSH) Web GUI 插件:只提供看板能力,并增强支持任务执行时选定特定模型。
这是什么
dsh-kanban 是一个遵循 DSH 官方 cordis bundle 标准的独立插件。它参考 dsh-web-ui 的 packages/dsh-task-board,但做了两点关键裁剪与增强:
| 方向 | 说明 |
|---|---|
| 只保留看板 | 只做多列看板 + 任务的创建 / 移动 / 详情 / 删除 / 真实执行。去掉了定时调度(cron)、归档、以及模式(agent 预设)/ 权限 / 工作区等执行目标选择,保持插件最小化、职责单一。 |
| 增强:按任务选模型 | 新建任务或编辑任务详情时,可从模型目录中选择一个具体模型(provider / model)。任务执行时,插件在发送提示词之前调用 session.selectModel 应用该模型;留空则使用会话默认模型。 |
特性
- 🗂 多列看板:待规划 / 待办 / 进行中 / 已完成 / 已失败,卡片实时反映执行状态。
- 🚀 真实执行:复用/创建会话 → 应用模型 → 重命名会话 →
session.prompt发送提示词 → 监听回合结束并自动落列(成功 / 失败)。 - 🎯 按任务选定模型:模型下拉来自 host 级
llm.models目录(无需会话即可列出 provider 分组与模型),执行前通过session.selectModel下发。 - 🧾 执行历史:每次执行记录会话、开始/结束时间、结果与失败原因,可一键跳转到对应会话查看完整对话。
- 💾 本地持久化:数据存浏览器
localStorage(键dsh.kanban.v1),跨标签页同步。 - 🔌 零侵入挂载:侧边栏入口 + 中间栏面板均通过 DOM 注入,与 ssh / task-board 等面板协同互斥,不改动任何 dsh 源码。
快速开始
前置条件
- 已安装并初始化 DSH(
dsh web可正常启动,且存在webprofile)。 - Node.js ≥ 22、pnpm ≥ 10。
方式一:本地构建后 link(推荐,适合开发 / 二次修改)
# 1. 克隆仓库
git clone https://github.com/raosay/dsh-kanban.git
cd dsh-kanban
# 2. 安装依赖并构建(产出 lib/index.js 与 lib/client.js)
pnpm install
pnpm build
# 3. 安装进你的 web profile(把克隆目录链接进 profile)
dsh plugin --profile web add link:"$PWD"
# 4. 重启 dsh web(先停掉当前 dsh web,再重新运行 `dsh web`)
说明:
dsh plugin add link:<path>会把插件加入~/.dsh/profiles/<profile>的依赖,并自动把它追加到dsh.profile.bundles(因为包声明了dsh.bundle)。重启后侧边栏即出现「看板」入口。
方式二:直接按 git 地址安装
dsh plugin --profile web add github:raosay/dsh-kanban
pnpm ≥ 10 默认拦截 git 依赖的
prepare构建脚本。若安装时提示Ignored build scripts: dsh-kanban,请按提示把dsh-kanban加入~/.dsh/profiles/<profile>/pnpm-workspace.yaml的allowBuilds后重跑一次。
验证
重启 dsh web 后:
- 侧边栏「新会话」按钮下方出现「看板」入口。
- 点开看板 →「新建任务」,能看到「模型」下拉(来自
llm.models,形如deepseek-v4-flash · DeepSeek)。 - 选一个模型后执行任务,卡片依次经历「进行中 → 已完成 / 已失败」,执行历史里可跳转到对应会话。
使用指南
创建任务
点「+ 新建任务」,填写:
- 标题(必填):一句话描述要做什么。
- 描述(可选):背景、范围、验收标准。
- 执行提示词(可选):发送给 agent 的完整指令;留空则用标题作为提示词。
- 模型(可选):从模型目录选择一个具体模型;留空 = 会话默认模型。
执行任务
在任务详情里点「执行」/「再次执行」。执行会真实驱动一个 dsh agent 会话:
- 连接(复用空白会话或新建)到最近使用的工作区。
- 若任务指定了模型,先调用
session.selectModel应用。 - 将会话重命名为任务标题。
- 发送提示词,并监听回合结束,把任务落到「已完成」或「已失败」。
任务详情
- 查看描述、提示词、模型设置与执行历史。
- 修改模型、手动移动到「待规划 / 待办」。
- 删除(带确认)、跳转到执行会话。
模型选择实现原理
新建/编辑任务 执行时
────────────── ──────────────
llm.models({}) connectWorkspace()
│ (host 级目录,无需会话) │
▼ ▼
{ provider, model } session.selectModel({ sessionId,
(随任务存 localStorage) provider, model })
│
▼
session.prompt(...) ← 发送提示词
- 目录来源:
llm.models(session-independent 的模型目录),返回 provider 分组 + 每个 provider 下的模型。 - 应用时机:
src/core/execution.ts的applyModel,在发送提示词之前调用。 - 持久化:模型以
{ provider, model }存在任务记录上,随看板一起落到localStorage。
⚠️ 注意:DSH 的
session.selectModel是唯一的模型选择原语,它会把所选模型同时记为默认模型(与官方模型选择器行为一致)。因此按任务选定模型,也会影响之后新建会话的默认模型。
目录结构
dsh-kanban/
├── package.json # 包清单:dsh.bundle.patch + dsh.client 声明
├── cordis.patch.yml # bundle patch:向 profile 插入插件行
├── tsdown.config.ts # tsdown 构建配置
├── tsconfig.json # 类型检查配置
├── tsconfig.build.json # 类型产物构建配置
├── build/ # 客户端打包预设(复用 dsh-web-ui 共享预设)
└── src/
├── index.ts # host 半区:system-prompt 公告(让 agent 知晓本插件)
├── invariant.ts # 空 invariant(无跨包运行时断言)
├── mount-once.ts # host 单实例守卫
├── core/ # 框架无关的核心(tasks / execution / store / controller / use-cases)
└── client/ # 浏览器半区(wiring / sidebar / board-mount / 组件 / 样式)
- host 半区(
src/index.ts):向每个 agent 的 system prompt 注入一段公告,说明看板的存在与协作方式。 - browser 半区(
src/client/):看板 UI + 与真实运行时(sessions/workspaces/connection)的 wiring。 - core(
src/core/):与 cordis 无关的纯领域逻辑,可脱离运行时做单元测试。
构建与开发
pnpm install # 安装依赖
pnpm build # tsc 产出类型 + tsdown 产出 lib/index.js 与 lib/client.js
pnpm run bundle # 仅 tsdown(产出运行时产物,不含类型)
pnpm run typecheck # 仅类型检查
pnpm run watch # 监听模式(配合开发)
prepare脚本已配置为tsdown:通过 git 地址安装时,pnpm 会自动构建运行时产物。
数据存储
- 键:
dsh.kanban.v1(浏览器localStorage)。 - 内容:任务数组(含标题、描述、提示词、状态、创建/更新时间、执行历史、模型选择)。
- 跨标签页:监听
storage事件,一个标签页的修改会同步到其他标签页。
限制与注意事项
- 消耗 API 额度:执行任务会真实驱动 dsh agent 会话。
- 默认模型副作用:见上文「模型选择实现原理」的 ⚠️ 说明。
- 壳布局依赖:面板通过 DOM 注入挂载,依赖 dsh Web GUI 的壳布局(
[class*="centerCol"]/[data-pane="conversation"]/[class*="logoRow"]等选择器)。若 dsh 壳改版,可能需要同步调整这些选择器。 - 与 dsh-task-board 定位重叠:本插件与 dsh-web-ui 的
dsh-task-board都提供看板,建议二选一安装,避免侧边栏出现两个看板入口。
License
致谢
- DeepSeek Harness (DSH) — 插件宿主与运行时。
- dsh-web-ui — 本插件的结构、看板 UI 与构建预设的参考来源。
Repository information
- Language
- TypeScript
- License
- Apache-2.0
- Last updated
- Aug 17, 2026, 6:46 AM
Install deliberately
Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.