dsh-loopx-plugin
huangruiteng/loopxLoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
dsh 的任务看板:创建任务时可指定项目与模型,支持手动执行及定时执行;项目内新建会话会自动拉取该项目的待办任务,完成后移至待验收。
English | 简体中文
DeepSeek Harness 的任务看板插件:人建卡、agent 认领执行、人验收。任务挂项目(workspace)、可指定模型与 preset、支持手动与定时执行,全流程双向协作。
taskboard_* agent 工具** + 代码级协议闸:agent 永远移不到 done、任务被持有时不可抢、跨项目不可认领零配置:安装即用——无需 Token、无需 API Key、无需额外服务或数据库。
依赖 · 要求 · 说明 DeepSeek Harness · ≥ 0.1.1 · 需要 dsh plugin 子命令与 web profile Node.js · ≥ 20 · 仅 GitHub 源安装构建时需要 git · 可选 · Worktree 隔离需要;缺失时自动降级原目录执行
双轨挂载(0.8.0):dsh ≥ 0.1.7(带官方 slot 系统)时,看板作为一等侧边栏面板注册(sidebar.panellist+main,宿主拥有侧栏行与面板切换,从根本上消除「看板打开后其他面板点不动」这类问题,#31);旧版 shell 自动回落到原有的 DOM 注入方式,行为与 0.7.x 完全一致。两条路径运行时自动互斥选择,无需配置。
# 一键安装(npm,预构建、免构建授权 —— 推荐)
dsh plugin --profile web add dsh-taskboard
# 或从 GitHub 源安装
dsh plugin --profile web add github:cloader/dsh-taskboard安装后重启 `dsh web` 并刷新页面:侧边栏出现「任务看板」入口即成功。无需任何后续配置。
GitHub 源安装卡在 prepare / allowBuilds?
git 源插件安装时经 prepare 脚本构建,pnpm 会先阻止——按报错提示把精确 key 加进 profile 目录 pnpm-workspace.yaml 的 allowBuilds 后重跑即可。npm 源是预构建产物,无此步骤。
开发模式安装(改代码即生效)
git clone https://github.com/cloader/dsh-taskboard.git
cd dsh-taskboard
npm install && npm run build
dsh plugin --profile web add "link:/path/to/dsh-taskboard"link 安装后,仓库里 npm run build 重建、刷新页面即生效;改完宿主侧代码需重启 dsh web。
卸载:dsh plugin --profile web remove dsh-taskboard(台账数据保留在当前数据目录,见配置与数据)。
官方@deepseek-ai/dsh-*包只写进 profile 的bundles列表,不要plugin add进 dependencies(避免 SDK 双实例遮蔽)。
第 1 步 · 建卡:看板右上「+ 新建任务」——选项目、紧急度、执行方式(认领/一次性定时/定期 cron)、模型与 preset、Git 隔离开关、验收清单;一次性定时任务可新建会话或选择当前项目的既有会话。定期任务则可独立选择「每次新建会话」「首次新建、后续复用」或既有会话,并选择完成后「移回待办」或「新建待办」;可勾「⚡ 立即执行」。
第 2 步 · agent 执行:三种触发方式任选——
taskboard_* 工具认领:按看板上的任务 t-xxxxx 执行第 3 步 · 人验收:待验收列「✓ 完成」一键验收;「✗ 退回」退回待办并附原因(agent 下轮开工前会读)。
一次完整的 agent 工作流(协议由插件在执行开场自动下达):
你:执行看板任务 t-ab12cd
agent:
taskboard_list # 查板:项目内 todo 任务
taskboard_get t-ab12cd # 读需求、评论、验收清单
taskboard_move → in_progress # 认领(代码闸:被持有/跨项目会被拒绝)
……编码 / 测试……
taskboard_checklist check # 逐项勾验收清单,附证据 note
taskboard_execution_report # 结构化报告:摘要/改动文件/自验/产物/风险
taskboard_comment_add # 交接说明
taskboard_move → in_review # 移待验收
你:看板待验收列 ✓ 完成 # done 永远只属于人——agent 调用会被代码闸拒绝任何会话可用;项目边界:只有属于任务所在项目的会话才能认领或执行。
工具 · 作用 taskboard_list · 查板(按项目/状态/紧急度过滤,紧凑摘要) taskboard_get · 读单卡全文:描述、prompt、评论流、清单、执行记录 taskboard_comments · 列出任务评论(视为最新需求,先读后动) taskboard_create · 建卡(workspaceId、紧急度、清单、preset、隔离、定时) taskboard_update · 改标题/描述/prompt/紧急度/清单(model/execution 只读) taskboard_move · 移卡:todo→in_progress→in_review(到不了 done) taskboard_comment_add · 追加评论(交接、风险、进展) taskboard_delete · 软删除(可 purge;执行中不可删) taskboard_checklist · 验收清单 add / check(附证据)/ uncheck taskboard_execution_report · 提交结构化执行报告,自动挂到当前执行
看板协作
/ 即弹出命令与技能补全(↑↓/Enter/Tab/Esc 键盘导航,宿主动态发现与内置清单合并);描述与 Prompt 中的 Markdown 图片渲染为缩略图,点击灯箱放大taskboard_checklist 增补/勾选(附证据 note);用户在详情页直接勾选;待验收时未完成项红色高亮 + 卡片「☑ n/m」角标(未全勾显红);清单编辑在表单中整组管理(勾选状态与证据保留)taskboard_execution_report 提交(摘要 / 改动文件 / 自验 / 产物 / 剩余风险),自动挂到当前执行记录;待验收详情页分栏渲染;开场框架行明示提交时序(报告 → 评论 → 移待验收)git show / 文件 git diff,128KB·2000 行封顶标注截断);worktree 已删时回落主仓(仅限提交与带基线的范围 diff)Agent 工具(taskboard_*)
执行
/.dsh-worktrees/ 独立 worktree 上进行,分支 task/+(首次创建后定死,改名不改);执行会话归属项目根目录(分组、工具与文件沙箱完整可用——DSH 要求会话 cwd 即工作区根,0.3.2 修正),worktree 路径与边界纪律在开场指令中明确下达;结算自动采集提交列表 / 未提交修改警告 / 改动统计;非 git 项目或 git 不可用时自动降级原目录执行(执行记录注明降级原因,台账与执行主流程永不因 git 失败而失败);验收时详情页一键 --no-ff 合并到主工作区(主区脏或冲突原样报告,不自动解决)、删除 worktree(有未提交修改时拒绝)、可选删分支;支持「↻ 续跑」在现有 worktree/分支上继续执行(保留上次改动与提交)/.dsh-worktrees// 形成结构同构镜像;执行引导逐仓库给出镜像路径与分支并声明边界纪律(未镜像仓库禁改);提交证据、diff 查看(?repo= 按仓库)与合并(逐仓库 --no-ff,一仓冲突不阻断他仓,按仓库汇总)均分仓库进行;镜像清理聚合全部仓库的未提交检查后「先子后根」删除;任务与执行记录新增 branches / repos 附加字段,单仓库行为与旧数据零变化;根仓库以 gitlink(embedded repo)形式跟踪子仓的容器工作区同样完全可用——嵌套子镜像在根镜像 status 中的结构性噪音(未跟踪目录 / gitlink 漂移)已在证据采集、合并检查与镜像清理中自动豁免;新建任务表单在多仓库工作区显示「将镜像 N 个仓库」提示,纯容器工作区(根非仓库、只有并列子仓)同样可选 Worktree 隔离taskboard_create 创建时将默认值存入新任务,后续改设置不影响已有任务。未配置看板模型时,GUI 保留原有的上次模型选择记忆;新建表单也可主动选择跟随部署默认。配置随台账持久化并支持 JSON 导入导出。Worktree 隔离是协作约定而非沙箱:执行会话拥有完整工具权限,隔离依赖分支约定,不适用于运行不可信代码的场景。
taskboard_update 的 waitingForHuman 和 waitingReason 报告或解除等待。原因只写需要用户完成的操作,请勿填写密钥、验证码等凭据。JSON 备份保留这些状态;HTTP 更新传 waitingForHuman: null 可恢复自动识别。开箱即用,全部配置项如下(均为可选):
环境变量 · 默认 · 说明 DSH_TASKBOARD_MAX_CONCURRENT · 3 · 全局同时执行的会话数上限 DSH_HOME · ~/.dsh · DSH 主目录,也是未自定义时的数据目录及位置引导文件所在目录 ATB_TRACE · 未设置 · =1 时 host 打印工具调用跟踪(调试用)
数据目录默认是 DSH_HOME,可在「🛠 设置 → 数据存储位置」中检查并迁移到其他绝对路径。三个数据项始终一起迁移;卸载插件不删除数据。
文件 · 内容 dsh-taskboard.json · 任务台账(全部任务/执行/评论) dsh-taskboard-templates.json · 任务模板 dsh-taskboard-assets/ · 图片附件(按内容哈希去重) dsh-taskboard.json.backup- · 整册导入替换前的自动备份 DSH_HOME/dsh-taskboard-storage.json · 自定义数据目录的位置引导文件;固定留在 DSH 主目录 /.dsh-worktrees// · 任务执行 worktree(多仓库工作区:整区任务镜像,每仓库一个子 worktree)
随时可顶栏「⬇ JSON」备份台账、「⬇ CSV」导出任务清单(带 BOM,Excel 直接打开)。图片附件不在 JSON 内;完整备份需复制设置页显示的数据目录中的 dsh-taskboard-assets/ 文件夹。
侧边栏没有「任务看板」入口? 刷新页面;仍没有则确认插件已装进当前 profile 并重启 dsh web(宿主半区在进程启动时加载)。三代 shell 均支持:data-pane(dev)、哈希类名(官方布局,0.4.2 起)、DSH Desktop 非兼容 extended frame(0.5.2 起)。
任务数据存在哪?怎么备份? 见配置与数据。GUI「⬇ JSON」可导出、恢复台账;图片附件还需备份 dsh-taskboard-assets/ 文件夹。
浏览器关了,定时任务还跑吗? 跑。调度在 host 进程侧,与浏览器无关;错过的时间窗口跳过不补跑。
定期任务完成后为什么停在「待验收」?如何自动继续? 默认会保留本轮供验收并由系统创建下一轮 todo 卡。若希望复用同一张卡,在任务表单的「定期任务完成后」选择「完成后移回待办」即可。两种策略不依赖 agent 的状态操作;未配置的既有 cron 任务也会采用默认的新建待办策略。
项目不是 git 仓库,能用吗? 能。Worktree 隔离自动降级为原目录执行,执行记录注明降级原因;其余功能不受影响。
多个项目怎么协作? 任务挂项目(= DSH workspace)。认领校验会话归属:只有任务所在项目内的会话能认领/执行,跨项目不可抢。
agent 会把任务直接标成「已完成」吗? 不会。这是代码级协议闸(不是提示词约定):taskboard_move 到 done 的调用被直接拒绝,验收永远由人在看板完成。
GitHub 源安装报 prepare 被阻止? pnpm 的构建授权——按报错把 key 加进 profile 的 pnpm-workspace.yaml allowBuilds 后重跑;或改用 npm 源(预构建,无此步骤)。
和 dsh-better-sidebar 并存,看板顶栏右侧按钮被遮住? 0.6.5 起已自动避让:better-sidebar 收起时其右上角常驻按钮簇(展开底部面板 / 展开侧边栏)占据视口右上 10~70px,看板激活时会为工具条右侧预留这块区域(镜像 better-sidebar 对 DSH 原生会话头的避让契约),任何窗口宽度都不再重叠;未安装 better-sidebar 或其侧栏展开时无任何影响(#19)。
Windows 版 DSH Desktop 的窗口按钮与看板顶栏重叠? 0.6.6 的修复会根据看板距窗口顶部的实际位置,为原生窗口控制按钮预留顶部空间;已有独立标题栏时保持原间距,窗口缩放和布局变化时重新计算。该问题已通过 Windows 实机验收(#20 评论)。
编辑任务时 DoD 勾选框占位过多,把文本输入框挤出去? 0.6.6 已将 checkbox 排除在弹窗的整行输入框样式之外,恢复勾选框的 15px 宽度及文本输入区域(#20)。
git clone https://github.com/cloader/dsh-taskboard.git
cd dsh-taskboard
npm install && npm run build # host ESM + client CJS 双构建
npm test # vitest 全量(含真实 git 镜像集成测试)
node tests/manual-git-e2e.mjs # 真 git 端到端手测(worktree 全链路 + 续跑 + diff 查看器)npm run build 在构建前清理 lib/ 的旧产物,再生成 host ESM 和客户端注册模块 lib/client.js。npm run build:host、npm run build:client 只重建对应部分并保留另一部分产物;发布前请运行完整构建。
禅道支持按「关联项目」或「关联执行/迭代」同步缺陷、研发需求和任务;TAPD 支持缺陷、需求、任务。两种禅道模式已在真实环境进行只读验证;TAPD 仍以本地模拟验证为主。
/api.php/v1)、登录用户名和密码,默认同步此登录账号的任务,也可指定其他处理人。TAPD 使用 API Basic Auth 或 Bearer Token,单独填写处理人成员昵称。项目模式读取项目下的缺陷和需求;任务通过分页遍历该项目下所有执行汇总,同一工作项在该项目范围内去重。执行模式直接读取该执行下勾选的类型。只请求选中的同步范围,不把整个产品的工作项混入项目。新导入项仍按处理人和结束状态筛选。
可勾选「同步未关联项目」或「同步未关联执行/迭代」(文案随映射方式变化,默认关闭)。开启后,每轮手动或定时同步都会重新获取当前账号可访问的对应范围;清单中不关联本地项目的项,以及后来新增、尚未配置映射的项,也会导入和更新卡片。新卡片的工作项目为空,已关联项仍导入指定本地项目;已有卡片的本地项目为空时,后续关联并保存后,下次同步自动补上本地项目;已有非空项目不被覆盖,已归档和回收站卡片保持不动。开启时允许不配置任何本地关联。取消勾选后停止未关联项的后续同步,已有卡片保留。
任务来源标识包含映射范围。同一需求关联多个执行时,可以按各执行映射在不同本地项目分别建卡;切换映射模式不合并或删除旧卡片。相同映射重复同步不重复创建,已有卡片的非空本地项目和执行状态不自动移动。标题、描述和优先级采用三方合并;进行中/待验收内容受保护,已完成/已取消只更新来源状态和处理人,已归档停止更新。删除忽略记录也按映射范围生效。
旧配置处理:缺少新映射方式的旧禅道配置暂停自动同步,保留凭据和已有任务,并提示重新关联项目或执行/迭代。旧产品 ID 不会被自动解释为项目 ID;重新获取清单、关联并保存后恢复。
连接凭据保存在活动 DSH_HOME 的 dsh-taskboard-external.json(host 专用明文文件,需妥善保护),密码和 Token 不返回前端、不进入任务导出。禅道自动获取内存 Token,不支持旧 Token 认证配置。任务与同步记录原子保存,失败不提交部分任务。当前支持一个活动连接,暂不包含截图、附件、Webhook 和状态回写。
2026-10-16 实测:项目模式读取 4 个缺陷、4 条项目需求和 8 个开发任务;执行模式读取到相同范围的数据。两种模式分别按 admin 导入 2 个缺陷、2 个任务,第二轮均无新增和更新;需求未分配给该账号,因此未导入,需求按处理人导入另有模拟集成测试覆盖。测试仅写入临时本地账本,不修改禅道业务数据。
接口依据:项目需求、执行需求、项目下执行清单、执行任务。