给 DeepSeek Harness 用的全局待办插件——一份 JSON 清单,人和智能体都能往里写
42/100
综合分
11
GitHub 星标
2,178
npm 周下载
—/5
用户评分
数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-global-todonpm 源 · dsh-global-todo 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-global-todo @ 0.20.0
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 06:41:30
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 33 处,展示前 33 条)
- 写入本地文件lib/index.js:221
void writeFile(recentFile, `${JSON.stringify({ id: sessionId, at: Date.now() })}\n`, 'utf8').catch(() => {}) - 读取本地文件lib/index.js:225
void readFile(recentFile, 'utf8') - 读取本地文件lib/index.js:729
diskVersion = JSON.parse(readFileSync(path.join(import.meta.dirname, '..', 'package.json'), 'utf8')).version - 发起网络请求lib/client.js:960
void fetch(`${API}/diagnostics`, { - 发起网络请求lib/client.js:990
const response = await fetch(`${API}/${path}${query}`, { - 写入剪贴板lib/client.js:2196
navigator.clipboard.writeText(value) - 写入本地文件lib/settings.js:254
await chmod(options.file, 0o600).catch(() => {}) - 读取本地文件lib/settings.js:266
text = await readFile(options.file, 'utf8') - 读取本地文件lib/diagnostics.js:41
const text = await readFile(options.file, 'utf8') - 写入本地文件lib/diagnostics.js:99
await appendFile(options.file, `${JSON.stringify(entry)}\n`, 'utf8') - 读取本地文件lib/diagnostics.js:101
const text = await readFile(options.file, 'utf8') - 读取本地文件lib/routes.js:363
const info = await stat(candidate).catch(() => undefined) - 读取本地文件lib/routes.js:372
const info = await stat(base).catch(() => undefined) - 读取本地文件lib/routes.js:374
const entries = await readdir(base, { withFileTypes: true }) - 读取本地文件lib/routes.js:479
const info = await stat(link.value).catch(() => null) - 读取本地文件lib/routes.js:484
const bytes = await readFile(link.value) - 读取本地文件lib/service.js:116
return existsSync(candidate) - 读取本地文件lib/store.js:157
text = await readFile(file, 'utf8') - 读取本地文件lib/store.js:167
observe(await stat(file).catch(() => null)) - 写入本地文件lib/store.js:196
await mkdir(directory, { recursive: true }) - 读取本地文件lib/store.js:239
remember(await stat(file).catch(() => null)) - 读取本地文件lib/store.js:313
const text = await readFile(file, 'utf8') - 读取本地文件lib/sync.js:137
text = await withTimeout(readFile(hubFile, 'utf8'), HUB_TIMEOUT_MS, '读取共享待办') - 读取本地文件lib/sync.js:202
await withTimeout(stat(path.dirname(dir)), HUB_TIMEOUT_MS, '检查共享目录') - 写入本地文件lib/sync.js:210
await withTimeout(mkdir(dir, { recursive: true }), HUB_TIMEOUT_MS, '创建共享目录') - 读取本地文件tools/doctor-lib.mjs:21
return JSON.parse(await readFile(file, 'utf8')) - 读取本地文件tools/doctor-lib.mjs:29
const info = await stat(file) - 读取本地文件tools/doctor-lib.mjs:84
const files = localeExists ? (await readdir(localeDir).catch(() => [])).filter((name) => name.endsWith('.json')) : [] - 读取本地文件tools/doctor-lib.mjs:103
const libFiles = (await exists(libDir)) ? (await readdir(libDir).catch(() => [])).filter((name) => name.endsWith('.js')) : [] - 读取本地文件lib/lockfile.js:75
const text = await readFile(file, 'utf8') - 读取本地文件lib/lockfile.js:106
info = await stat(file) - 删除本地文件lib/lockfile.js:124
await unlink(file) - 删除本地文件lib/lockfile.js:176
await unlink(file)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
最近更新
在 GitHub 查看全部 →v0.22.02026-10-31
进入清单的规则只有一条:没有截止时间,就不进清单。
· 没有截止时间的智能体记录留在收件箱里。改动前统计:357 条记录中有 354 条由智能体写入(约每天 16 条),86 条未完成记录里有 40 条标了「高」,其中 34 条根本没有截止时间。三个入口共用同一个宽松阈值——每轮提示词没有拦截,无人值守提问又沿用了手动「抓一下待办」的说法。现在智能体写入的记录若没有 dueAt 就进收件箱(收下 / 丢弃,七天清理),原因写在记录上;你自己录入的记录永远不受拦截。
· 每天八条,之后排队等待——不丢任何东西。智能体写入的记录进入清单有每日额度,额度从记录本身推算,不靠计数器,所以重启、第二个 Host 或同步都不会对不上。
· 级别由截止时间决定。没有日期 = P3,7 天内 = P2,48 小时内 = P1,已逾期 = P0。模型原本要求的级别保留在 suggestedPriority 里;你手动改过就锁定记录,规则不再覆盖。
· 收件箱不计入清单的数字,所以「全部 / 未完成」指的就是清单本身。
· 本轮已经记过东西就不再追问——智能体在这一轮写过待办,就跳过无人值守提问,而且它的提示词现在是独立的、更严格的文本。
· 面板会自己解释:收件箱每行写明原因,详情里说明级别是按截止时间推出来的、被你锁定的,还是智能体建议的。
· 升级后首次启动做一次清理:没有截止时间、没人动过的未完成智能体记录移入收件箱,受规则管理的级别重新计算。这台机器上是 68 条进收件箱、6 条级别变化、清单从 87 条降到 19 条——而每一条人改过的记录都原封不动。
· 手机上的触摸目标现在会实测了。一个探针从每个控件向外走,直到该点不再命中它,发现四个样式表一直自信地写着「没问题」的地方:搜索框是 44px 外框里的 20px 盒子,附件标签 22px,详情页的分段控件 29px,纯文字按钮 20px。已修复;npm run check:mobile 现在会在真实浏览器里对三个手机视图做这项测量。
· 截图基线固定在一个时刻,所以 CSS 没动时,提交的图片不再每天漂移。
· 新增:docs/RELEASING.md —— 发布流程,以及每道防线各自防住的事故。
测试:393 项,契约检查 101/101,三个手机视图的移动端契约全部通过。
完整更新日志:CHANGELOG.md
v0.21.02026-10-29
两台机器共用一份清单,手机页面还能折叠。
· 每台机器各存自己的清单,在同一个目录里汇合。把 storePath 指向 NAS,会让每个面板都走一次网络往返,离线笔记本连自己的待办都打不开。改成两台机器都通过共享目录里的 todos.hub.json 折叠(同步目录在 设置 → 多端同步,0 = 仅手动)。合并时每条记录以较新的 updatedAt 为准,seq 按记录集重新编号,折叠可交换、幂等,没改动就不写盘。
· 删除会留下墓碑。以前 remove 直接删掉记录,另一台机器下次同步又把它带回来。现在文档带 trash: [{ id, at, by }];撤销是收回墓碑,而不是让墓碑再删掉恢复的副本。读清单从不碰共享目录——挂载失效也卡不住面板,/health.sync 会说明上次同步的结果。
· 手机页面能折叠,折叠靠手势。宽度 600px 及以下时,面板自己量宽度:44px 标题行、三行工具栏(筛选 / 搜索 / 分组)、66px 行高、44px 点击区,并避开安全区。下滑超过 80px 收起搜索行——先补回它让出的 110px,否则内容会在拇指下跳走——上滑 48px 再展开;每次翻转后 300ms 内两个方向都不响应。折叠后的行保留标题和影响下一步操作的信号;展开的行保持完整。派发摘要和自动收集开关从手机工具栏移到设置面板,dsh-mobile 无需配置。
· 按工作区分组是真的。第一种模式是工作写入的目录(originDir,取不到就用会话目录),标题取路径最后一段,完整路径作提示;工作区分组从不自动折叠,按组豁免的键就是分组本身。标签:工作区 / 时间 / 待办等级。
· 顺手修了两个静默故障。/sync 每条路径注册了两次;Host 只按路径匹配精确路由,第二次就抛错,而打包时整份路由表一次注册——于是 /sync 之后的所有路由都消失了,读还在应答,写却只返回裸 404。主按钮用画布 token(--dsw-alias-bg-base)画文字,壁纸主题把它设成透明:白药丸上一个字都没有。修了五处,另加一条测试,禁止在 color / fill / stroke 里用 surface token。
· 测试:381 项,契约矩阵 85/85,两套截图都重新生成。Schema 2——共用 hub 的每台机器都要 0.21.0 或更新,0.20.0 的主机会明确拒绝版本 2 文件,而不是丢掉墓碑。
完整更新日志:CHANGELOG.md
v0.20.02026-10-27
列表不再和记忆存储争抢同一句话。
· 与记忆插件搭一座桥,靠一句话而不是一条线。装了 dsh-mnemon 后,提示词多出一节——动作归这个列表,事实归记忆,同一件事别存两遍——已完成的 todo 的工具结果会提示用 mnemon_remember 记下结论,正文里带上 todo id。两者只在 mnemonMemory 存在时才生效:ctx.inject(['systemPrompt','mnemonMemory'], …) 控制这一节是否出现,createTools({ hasMemory }) 每次调用时询问。点名部署里没有的工具,正是工具组闸门早已拦下的失败。
· 两处拒绝,记在 docs/DESIGN.md。不读写它的 SQLite 存储(私有 schema,它唯一的服务是定义注册表,不是「记住」调用),本仓库也不放 mnemon-source-global-todo 包(第二个 bundle,带 peer 依赖;这个必须能单独跑)。它发布的扩展 SDK 是文档写明的路径,想让召回看到未完成项就走这条。
· 测试:memoryGuidanceFor 的闸门、有记忆插件和没记忆插件时的完成提示行,以及三项契约检查,防止这座桥点名核心部署没有的工具。
· 对照 DSH 0.2.1-rc.3 验证过。它给左侧栏加了 More 菜单(浏览其他插件、创建插件),给会话视图标签页和右侧栏指南也加了;修了 New Session 丢失未发送草稿的问题;还改了 DeepSeek API-key 适配器刷新模型列表的方式。这些都不改插件声明:packages/boot/hmr/src/package-manifest.ts 和 packages/client/modules/src/client/manifest.ts 在 rc.2 与 rc.3 之间逐字节相同,侧栏入口的注册方式也没变——新菜单只是列出条目,不改声明方式。
· 声明的范围本来就容纳新版本,现在写明了原因。engines.dsh 仍是 >=0.2.0-rc.1 <0.3.0;Host 用 includePrerelease: true 匹配(dsh-app-boot 的 satisfies),所以 0.2.1-rc.3 落在下界写着 0.2.0 预发布版的范围内。scripts/matrix.mjs 加了这个用例和一条警告:把范围「清理」成 ^0.2.1 会同时拒绝 0.2.1-rc.2 和 0.2.1-rc.3。两份 README 和快速上手现在都写明验证过的版本,不再含糊其辞。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成中文说明
中文版就是仓库首页的 README.md;英文版在 README.en.md。
两份开头都有一行「中文 · English」可以互相跳转。
这个文件只为让旧链接(0.17.0 及更早的 npm 页面、外部目录里的条目)还能落地,不是第二份正文。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
LUgABeEEE/dsh-global-todo
给 DeepSeek Harness 用的全局待办插件——一份 JSON 清单,人和智能体都能往里写
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2
这是你的仓库?认领条目