@guowenzhang/dsh-task-list
v0.7.1
Published
Native task list for DeepSeek Harness with its own SQLite storage, host-side search and paging, and one-click Start and Complete
Readme
DSH 任务列表
English | 中文
在 DeepSeek Harness 内集中管理任务,把待办、暂存消息和 AI 会话放在同一个工作流里。
插件列表的显示名称与介绍支持英文和中文,随 Harness 语言设置显示,英文为默认回退;英文名称为去掉 npm scope 的原包名,中文名称说明用途,安装仍使用不变的真实包名。
解决了什么问题
任务原本散落在笔记、聊天记录或其他工具里,开始处理时还要切换应用、查找上下文,再把内容复制到 Harness。
本插件把任务管理直接带进 Harness:
- 集中管理任务:在侧边栏「任务列表」中查看待办、进行中和已完成任务,按工作区筛选、搜索和分页浏览。
- 从任务直接发起会话:点击「启动」,在所选工作区创建会话,自动带入任务内容和附件;可指定 Agent,或选择使用 Worktree。
- 暂存未发送的消息:在对话输入框按
Ctrl+S(macOS 为Cmd+S),把文字、图片和文件存成任务,稍后再处理。默认关联当前会话,保存成功后清空已保存的输入,并在页面顶部提示;失败时保留输入。 - 保留任务上下文:支持富文本、附件、优先级、标签、故事点和会话关联,并记录创建、开始与完成时间。新建和编辑任务时,图片附件显示缩略图,点击可放大预览;按 Esc、点击背景或关闭按钮退出预览。所有附件仍可下载。
截图

桌面端任务列表展示任务内容、状态和所属工作区,可直接点击「启动」或「完成」。手机端(宽度不超过 760px)任务描述保持单行,超长显示省略号,可用操作位于同一行右侧;隐藏状态、工作区及删除按钮。截图由实际使用界面提供,具体外观以安装版本为准。
云效 / TAPD 手动同步
任务页只有一个 「同步」 执行动作:拉取缺少的远端任务,并对已关联任务按上次成功快照比较、双向同步。只改远端则覆盖本地同步字段;只改本地则回写远端;双方都改动时,远端标题、描述等业务字段优先,本地整个状态优先并回写。双方均未变化则跳过。配置保存、连接测试、打开页面及结果刷新均不会自动执行同步。
同步设置是宿主设置面板里的一页「任务同步」(设置 → 任务同步),不在任务列表里;任务页只保留执行动作。任务列表页头右侧是一个合并按钮:左半点击新建任务,右侧箭头下拉里的「同步」执行同步。没有配置连接时点击同步不会启动运行,只提示去设置页添加连接;任务页平时不显示同步说明文字。
连接列表的每一行有开关直接在列表里启用/停用;规则列表同理。
- 打开设置 → 任务同步的连接页,新增连接。平台与鉴权方式都是下拉;云效默认官方授权登录,TAPD 默认手动填写。官方授权不需要先保存:点「登录并授权云效」会自动存下草稿再打开官方页面,完成后组织下拉自动列出你加入的组织,选中保存即可。TAPD 官方授权需管理员先配置开放应用 ID、密钥引用与已登记回调。
- 也可选手动填写,凭据直接填在这里:云效填个人访问令牌,TAPD 填 API 用户与密码。凭据保存在 DSH 宿主凭据存储中,不写进任务数据库、不回显,不需要配环境变量(环境变量仍是兼容回退)。连接名称由平台与组织/公司自动生成,无需填写。
- 组织/公司 ID 不用记:云效点组织下拉即按官方接口读取(
x-yunxiao-token同时支持个人令牌与官方授权令牌),失败会显示错误码;TAPD 直接粘贴工作台地址(如https://www.tapd.cn/2001/...)或填公司 ID,插件自动取出 ID。 - 切到规则页新增规则,按「项目与范围 → 状态映射 → 确认」三步配置。项目可粘贴云效项目链接(
/projex/project/…)自动取 ID;任务类型、负责人、迭代、远端状态都是下拉多选。映射每种类型所有读取状态和三个本地状态的写入目标,再启用规则;规则卡片显示项目名称(保存时随规则一起存下,无需再查平台,旧规则显示 ID 直到重新保存)。 - 回到任务页,点击页头右侧下拉里的「同步」。范围是所有已启用规则,不受任务页状态/工作区/搜索过滤影响;已关联但离开导入范围的任务仍会核对。关闭页面不停止宿主运行,重新进入只查询最新运行。
来源任务显示独立标题、平台编号及同步时间;外部标题不会由描述派生,描述允许为空。启动时草稿为「标题 + 空行 + Markdown 正文」,本地附件照常送入会话,不上传到云效或 TAPD。工作区、Agent、会话、立即发送、Worktree 和子任务不会被远端覆盖。不会自动创建远端任务,也不传播远端删除。
结果包含导入、拉取覆盖、回写、合并、无变化和失败;待确认是失败的子集。发现不完整时不显示虚假总数或百分比。待确认并不等于写入失败:远端可能已接受请求,下次手动同步先只读对账,不能盲目重发。平台流程、权限、必填字段或描述格式不能证明安全时会拒绝回写。
当前边界:仅官方公网服务;云效区域模式未开放;TAPD BPM/附加赋值/权限受限流转保守拒绝。远端附件不下载,本地附件不回写。适配与恢复有离线测试,实际 Web 设置与回调已检查,真实账号登录、项目权限和回写尚未联调。能力说明见 同步能力矩阵。
更多任务(云效工作项分页浏览)
任务页页头「统计」旁的 「更多任务」 打开一个只读页面,右上角「关闭」返回任务列表。页面顶部依次选择连接、项目、类别(需求/缺陷/任务);「表头设置」打开右侧抽屉,按「显示字段 / 未显示字段」分组列出这个项目自己配置的全部字段(优先级、Story Points、所属模块等自定义字段按平台里的名字列出),带搜索框与开关,勾选即改列。表格在中间滚动,分页固定在最下面(上一页/下一页与每页 20/50/100/200)。
列表只请求所选列对应的字段,不含描述、评论、关联与动态——这些属于详情,需要单独打开。单页上限 200 条,且 页码 × 每页 不得超过 10000,越界会在发请求前被拒绝。云效没有可用的“内嵌图片”读取路径,工作项正文里的图片无法在此显示。
筛选栏是一个标题搜索 + 最多 2 个条件。条件字段在 设置 → 任务同步 的「可用的筛选字段」里勾选,可选项为:状态、状态阶段、负责人、创建者、优先级、迭代、类型、创建时间(区间);候选值来自平台本身(状态取工作流状态,负责人/创建者取项目成员,优先级取字段配置的选项,迭代取项目迭代)。标题搜索与所有条件同时生效(AND),条件值留空即不参与。云效的「参与人」筛选实测会静默返回 0 条,因此不提供。
每一行右侧有 「启动」 与 「同步」:两者都会关掉本页、打开新建任务表单并把工作项数据预填进正文——「同步」只是预填,「启动」同时把「立即启动」打开,保存后直接进入会话。填入哪些内容在 设置 → 任务同步 的「新建任务时填入」里勾选(标题、描述、编号、状态、负责人、迭代、优先级、自定义字段、来源编号);只有勾选了「描述」时才会为此多发一次详情请求,其余字段都来自列表本身。
同步排障
凭据:在连接设置中直接填写,环境变量引用仍可作为备用方式;不要把密钥写入任务或聊天。如果启动报错提示 task-list/connection-…-secret 记录的 secret 类型未知,先备份 ~/.dsh/.credentials.yaml,仅将这些记录的 kind 改为 grant,保留记录键和凭据内容,再重新构建或升级插件并重启 DSH。
权限:401/403、模块未开放或流程权限不足,需要平台管理员核对;只读测试成功不代表可写。
映射:从候选中完整设置读取与写入状态;不兼容的映射保留本地任务并报错。
内容:只同步可往返的正文表示;不支持的 HTML/Markdown 结构、长度超限等不会静默降级。
网络:读取有有限重试和超时,写请求只发一次;429 或连接异常可能留下待确认结果。
恢复:不要删除未确认意图或重发旧状态操作。重启后由下一次手动同步只读核对;无法确认时继续保留待确认。
宿主升级:旧宿主没有新增 RPC 会显示重载提示;重建浏览器包不足以加载宿主代码,需重载插件或重启。
环境要求
安装
环境要求
- 已安装 DeepSeek Harness 0.2.0-rc.1 或更新版本,Web 端提供工作区控制器。
- 安装到运行 Web 界面的
webprofile。 - Node.js
^22.19.0或>=24.0.0(使用内置node:sqlite)。 - 仅在启用「使用 Worktree」时,需要在同一 profile 安装并启用
@guowenzhang/dsh-worktree1.x 或 2.x。
从 npm 安装
使用已安装的 Harness CLI:
dsh plugin --profile web add @guowenzhang/dsh-task-list包地址:@guowenzhang/dsh-task-list。
安装后重启对应的 Harness 宿主并刷新页面,点击侧边栏「任务列表」。如果 Web 界面运行在其他 profile,请将命令中的 web 替换为实际 profile 名称。
最短使用流程
- 点击「新建任务」,填写内容,按需选择工作区、Agent 和启动选项,然后保存。标题自动从内容生成,无需单独填写。
- 点击「启动」创建会话。默认只把内容和附件填入输入框,供你检查;开启「立即发送」后才会直接发送。
- 处理结束后点击「完成」。也可在编辑弹窗中调整状态、选择或清除关联会话。会话下拉只列出侧边栏可见的会话:已归档会话、子代理运行和未使用的新会话都不会列出;若任务原本关联的会话已被隐藏(例如已归档),仍会在下拉中回显并标注「已归档」,可保留或改选。
- 暂时不想发送的消息,在对话输入框按
Ctrl+S/Cmd+S存为任务。
报表统计
手机端(视口宽度不超过 760px)隐藏「报表统计」按钮,较宽屏幕仍保留入口。
点击「新建任务」旁的「报表统计」进入独立报表页;点击「关闭」回到任务列表,保留筛选、搜索和分页。选择「天」「月」「年」及日期,再点击「计算统计」。热力图采用紧凑固定网格:天按小时 6 列 × 4 行,月按日期 7 列 × 5 行,年按月份 3 列 × 4 行。月视图从 1 日顺序排列,不按星期对齐,月末空位留白。切换「新建会话」「用户发送次数」「消耗 token」查看数值和颜色强度,悬停或键盘聚焦格子可查看三项数值。
- 仅点击按钮计算。打开报表、更换周期、日期或指标、刷新任务都不会计算;结果保留为快照,直到再次点击。更换周期或日期会清空展示的快照。
- 使用浏览器本地时区,排除当前小时及未来小时,未计入格子与零值区分展示;显示计算时间和不包含在内的截止时间。
- 统计宿主全部可用会话,与任务筛选、关联会话无关。新建会话包含子代理会话;发送次数仅计已进入会话的用户消息,不计排队或被拒绝的输入、上下文注入、自动续轮和代理初始委派。
- Token 使用模型报告的用量,包含输入、输出、缓存、重试、子代理调用及有记录的压缩用量,不重复累计推理 token 或分叉继承历史。缺失用量会提示;没有会话用量记录的后台调用不在统计范围内,已删除或不可用的日志无法还原。
- 需要宿主提供
sessionQuery服务(listSessions/readSession)。日志读取失败会报错,不会悄悄返回不完整的零值;宿主代码更新后需重载插件或重启宿主。
本地开发安装
在本仓库目录执行:
npm ci
npm run typecheck
npm test
npm run build
dsh plugin --profile web add 'link:/absolute/path/to/dsh-task-list'将链接路径替换为本机绝对路径;Windows 示例为 link:C:/path/to/dsh-task-list。修改后重新构建并刷新页面;宿主代码变化还需重载插件或重启宿主。维护说明见 AGENTS.md。
注意事项
默认数据库路径是 <DSH_HOME>/task-list/tasks.sqlite(通常为 ~/.dsh/task-list/tasks.sqlite)。Cordis 配置可通过 file 指定其他绝对路径。插件启用 SQLite WAL 模式,任务更新带版本号,过期编辑会被拒绝。运行中备份请使用 SQLite 备份 API 或 VACUUM INTO;DSH 停止后复制 tasks.sqlite 以及可能存在的 WAL 侧文件。旧版数据库会在启动时自动迁移:v3 之前的库补齐卡片字段与启动选项,v3 的库增加子任务表,v4 及更早的库迁移为 v5,增加富文本 JSON 与附件表。旧内容按纯文本迁移(不解释 HTML),任务版本号和时间不变。同步版本进一步迁移至 schema 10(v9 增加非敏感鉴权方式配置,令牌仍由宿主凭据服务管理;v10 增加规则的 project_name 展示列):增加连接/规则/快照/写入意图与运行记录(v6),单例租约与对账审计(v7),以及按运行定位的待确认标记(v8)。迁移在事务内执行,保留正文与附件,未知未来版本拒绝打开。升级后必须重启宿主,迁移后的数据库不能由旧版插件打开。
- 数据保存在本地:任务和附件使用插件独立的 SQLite 数据库,默认位于
<DSH_HOME>/task-list/tasks.sqlite(通常为~/.dsh/task-list/tasks.sqlite)。不会直接修改 Harness 会话日志或查询索引,也不自动同步单会话的todo/write清单。可在 Cordis 配置中用file指定其他绝对路径。 - 升级前备份:数据库会自动迁移,迁移后旧版插件不能打开。运行中请用 SQLite 备份 API 或
VACUUM INTO;停止 DSH 后可复制数据库及可能存在的 WAL 侧文件。升级后重启宿主,避免旧代码导致富文本或附件保存失败。 - 附件有限额:最多 8 个,单个不超过 10 MiB,总计不超过 20 MiB。删除任务会同时删除其附件和子任务数据;只有文件名、未保存文件字节的历史附件需重新添加。
- 富文本不是完整 Office 导入:粘贴网页或 Word 正文可保留常见格式、链接和表格,不保留完整字体、颜色和分页布局。外部网址或 Word 内部路径引用的图片不会自动下载,需手动添加;添加文档附件不会自动解析正文。
- 启动会新建会话:启动后自动关联新会话并转为「进行中」;编辑弹窗允许再次启动已开始或已完成的任务,也会新建会话并替换关联。「立即发送」默认关闭,未关联工作区时使用默认工作区;已删除的工作区需重新选择。
- Worktree 会操作 Git:需要 Worktree 插件与 Git 工作区。非 Git 目录会提示更换工作区或确认「初始化并启动」,后者会创建 Git 仓库和首次提交,并将未选项目加入根目录
.gitignore。多个仓库的上层目录应改选具体仓库,操作前确认路径和文件选择。 - 子任务界面暂不可用:当前版本保留子任务数据,但不在列表或编辑弹窗中展示、编辑。
- 卸载不删除任务数据:执行下方命令只移除插件,已有数据库仍保留。
dsh plugin --profile web remove @guowenzhang/dsh-task-list许可证
本插件采用 Apache License 2.0,详见 LICENSE。
浏览器构建包含采用 MIT 许可证的 Lexical,第三方声明见 THIRD_PARTY_NOTICES.md。
