npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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、点击背景或关闭按钮退出预览。所有附件仍可下载。

截图

Harness 内的任务列表:状态筛选、工作区筛选、搜索与启动/完成操作

桌面端任务列表展示任务内容、状态和所属工作区,可直接点击「启动」或「完成」。手机端(宽度不超过 760px)任务描述保持单行,超长显示省略号,可用操作位于同一行右侧;隐藏状态、工作区及删除按钮。截图由实际使用界面提供,具体外观以安装版本为准。

云效 / TAPD 手动同步

任务页只有一个 「同步」 执行动作:拉取缺少的远端任务,并对已关联任务按上次成功快照比较、双向同步。只改远端则覆盖本地同步字段;只改本地则回写远端;双方都改动时,远端标题、描述等业务字段优先,本地整个状态优先并回写。双方均未变化则跳过。配置保存、连接测试、打开页面及结果刷新均不会自动执行同步。

同步设置是宿主设置面板里的一页「任务同步」(设置 → 任务同步),不在任务列表里;任务页只保留执行动作。任务列表页头右侧是一个合并按钮:左半点击新建任务,右侧箭头下拉里的「同步」执行同步。没有配置连接时点击同步不会启动运行,只提示去设置页添加连接;任务页平时不显示同步说明文字。

连接列表的每一行有开关直接在列表里启用/停用;规则列表同理。

  1. 打开设置 → 任务同步的连接页,新增连接。平台与鉴权方式都是下拉;云效默认官方授权登录,TAPD 默认手动填写。官方授权不需要先保存:点「登录并授权云效」会自动存下草稿再打开官方页面,完成后组织下拉自动列出你加入的组织,选中保存即可。TAPD 官方授权需管理员先配置开放应用 ID、密钥引用与已登记回调。
  2. 也可选手动填写,凭据直接填在这里:云效填个人访问令牌,TAPD 填 API 用户与密码。凭据保存在 DSH 宿主凭据存储中,不写进任务数据库、不回显,不需要配环境变量(环境变量仍是兼容回退)。连接名称由平台与组织/公司自动生成,无需填写。
  3. 组织/公司 ID 不用记:云效点组织下拉即按官方接口读取(x-yunxiao-token 同时支持个人令牌与官方授权令牌),失败会显示错误码;TAPD 直接粘贴工作台地址(如 https://www.tapd.cn/2001/...)或填公司 ID,插件自动取出 ID。
  4. 切到规则页新增规则,按「项目与范围 → 状态映射 → 确认」三步配置。项目可粘贴云效项目链接(/projex/project/…)自动取 ID;任务类型、负责人、迭代、远端状态都是下拉多选。映射每种类型所有读取状态和三个本地状态的写入目标,再启用规则;规则卡片显示项目名称(保存时随规则一起存下,无需再查平台,旧规则显示 ID 直到重新保存)。
  5. 回到任务页,点击页头右侧下拉里的「同步」。范围是所有已启用规则,不受任务页状态/工作区/搜索过滤影响;已关联但离开导入范围的任务仍会核对。关闭页面不停止宿主运行,重新进入只查询最新运行。

来源任务显示独立标题、平台编号及同步时间;外部标题不会由描述派生,描述允许为空。启动时草稿为「标题 + 空行 + 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 界面的 web profile。
  • Node.js ^22.19.0 或 >=24.0.0(使用内置 node:sqlite)。
  • 仅在启用「使用 Worktree」时,需要在同一 profile 安装并启用 @guowenzhang/dsh-worktree 1.x 或 2.x。

从 npm 安装

使用已安装的 Harness CLI:

dsh plugin --profile web add @guowenzhang/dsh-task-list

包地址:@guowenzhang/dsh-task-list。

安装后重启对应的 Harness 宿主并刷新页面,点击侧边栏「任务列表」。如果 Web 界面运行在其他 profile,请将命令中的 web 替换为实际 profile 名称。

最短使用流程

  1. 点击「新建任务」,填写内容,按需选择工作区、Agent 和启动选项,然后保存。标题自动从内容生成,无需单独填写。
  2. 点击「启动」创建会话。默认只把内容和附件填入输入框,供你检查;开启「立即发送」后才会直接发送。
  3. 处理结束后点击「完成」。也可在编辑弹窗中调整状态、选择或清除关联会话。会话下拉只列出侧边栏可见的会话:已归档会话、子代理运行和未使用的新会话都不会列出;若任务原本关联的会话已被隐藏(例如已归档),仍会在下拉中回显并标注「已归档」,可保留或改选。
  4. 暂时不想发送的消息,在对话输入框按 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。