dsh-work-assistant
微信工作助理:把你交代的事记进 SQLite 任务账本,按紧急度排序,到点提醒,从笔记里抽取人物与关系,并把任务分派给独立的助手会话。自带微信机器人通道(扫码登录,仅私聊)与整页仪表盘。
安装
dsh plugin --profile web add dsh-work-assistant
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-work-assistant
<p align="center">
<img src="https://raw.githubusercontent.com/544244857/dsh-work-assistant/main/assets/banner.png" alt="dsh-work-assistant" width="100%">
</p>
<p align="center">
<b>微信里的工作助理。</b>你把事说给它,它记成账本、排好先后、到点提醒你;<br>
干不完的活儿派给独立副手,回头还从笔记里认出人和关系。
</p>
<p align="center">
<a href="https://www.npmjs.com/package/dsh-work-assistant"><img src="https://img.shields.io/npm/v/dsh-work-assistant?color=2f6f5e" alt="npm"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="license"></a>
<a href="package.json"><img src="https://img.shields.io/badge/node-%E2%89%A522.5-brightgreen" alt="node"></a>
<a href="https://github.com/544244857/dsh-work-assistant"><img src="https://img.shields.io/badge/DSH-plugin-2f6f5e" alt="DSH plugin"></a>
<img src="https://img.shields.io/badge/tests-430%20passed-brightgreen" alt="tests">
</p>
一句话:微信官方机器人只能私聊,你在群里被 @ 了就转发给它,剩下的记账、排序、提醒、派活、认人交给它。
不依赖任何第三方 IM 插件——微信通道、账本、知识库、人物图谱、定时提醒,全在这一个包里。
你会说的话 · 它干的事
周五前把 Q3 报销整理好发我 · 记成工作项,自动判优先级,逾期会一直顶在最前
现在有哪些活 · 按紧急度念一遍,不是只报个数
这个你派个人去做 · 开一个独立会话去干,你继续跟助理说话,干完回来汇报
值班表按 5 个人轮班排到年底 · 排完直接导出一份 xlsx 发到微信
你认识哪些人 / 老周是谁 · 从聊天和笔记里认出的人,带关系判断和把握度
长什么样
在微信里说一句话,它记账、排期、出文件;手上一堆活儿的时候,回头在仪表盘上看全局。
一句"值班表先给我出一份",它把人、规则记下来,排到 12-31,顺手导出一份 xlsx 发回微信。
<p align="center">
<img src="https://raw.githubusercontent.com/544244857/dsh-work-assistant/main/assets/shot-ledger.png" width="88%" alt="在微信里排值班表并导出 Excel">
</p>
PNG / XLSX / DOCX / MD 四种文件都能发到手机上,发完还能读回来核对内容。
<p align="center">
<img src="https://raw.githubusercontent.com/544244857/dsh-work-assistant/main/assets/shot-files.png" width="88%" alt="在微信里收发各种文件">
</p>
想看这个插件到底解决什么问题、内部数据怎么组织,读 [INTRO.md](INTRO.md)。这份 README 讲怎么装、怎么配、接口长什么样。
目录
[先说边界](#先讲清楚一条边界) ·
[装](#装) ·
[登录和设置](#登录和设置) ·
[它能做什么](#它能做什么) ·
[工具](#给模型用的工具) ·
[配置](#配置) ·
[数据](#数据放在哪) ·
[接口](#http-接口) ·
[取舍](#设计上的几个取舍) ·
[限制](#已知限制) ·
[许可](#许可)
先讲清楚一条边界
微信官方机器人只能私聊,读不到群聊,也没有"@我"这种事件。
所以这个插件的做法是:你在群里被 @ 了,自己把那条消息转发给机器人。它记账、分析、提醒。
这不是偷懒。个人微信没有对外开放的群消息接口,逆向客户端违反腾讯服务条款、有封号风险,所以这里不做。企业微信的智能机器人可以收群 @ 消息,那是另一条路,需要的话可以另做渠道。
它是怎么跑的
微信(你的手机) DSH 宿主进程 │ │ │ 你转发一句话 / 发个文件 │ ├───────────────► iLink Bot 长轮询 ────►│ 通道 │ │ ↓ │ │ 助手会话(挂你选的预设与模型) │ │ ↓ 调 work_* / kb_* / assign_* 工具 │ │ SQLite 单文件账本(work-assistant.db) │ 收到回执、提醒、文件 │ ↓ │◄────────────── 发消息 / 发文件 ◄───────│ 60 秒 ticker + 每日摘要 + 周复盘
三个关键点:
- 不需要公网地址。走的是长轮询,不是 webhook,本机开着就能收。
- 提醒是模板直发,不经过模型,不烧 token,断网重连也不会重复轰炸。
- 副手是独立会话,跟你在 GUI 里开一个会话没区别,能看过程、能接着聊。
装
已经发到 npm,从网上装(推荐,装的是预构建产物,不需要本地编译):
dsh plugin --profile <你的 profile> add dsh-work-assistant
从源码改着玩就装本地目录:
dsh plugin --profile <你的 profile> add -w link:<这个目录的绝对路径>
也可以直接从 GitHub Release 的 tarball 装:
dsh plugin --profile <你的 profile> add https://github.com/544244857/dsh-work-assistant/releases/download/v0.5.6/dsh-work-assistant-0.5.6.tgz
装完重启宿主。插件会自己创建数据目录,默认在 ~/.dsh/dsh-work-assistant/。
仓库在 544244857/dsh-work-assistant,npm 包名 dsh-work-assistant。
登录和设置
重启宿主后,打开 DSH 的设置,左边会多出一项「工作助理」。这个页面里什么都有:
- 登录状态、扫码二维码(没登录时才显示)
- 账本概览:未完成几件、逾期几件、进行中几件、能代做几件,还有前 10 条工作项
- 每日摘要时间和提醒检查间隔,改完点保存,立刻生效
- 「立刻发一条摘要」按钮,用来验证通道通不通
- 对话记录:跟你聊过的每一天都留在这儿,点一天看当天的往来
- 会话设置:助手用哪个预设、哪个模型、推理强度多高、什么权限档位,四组下拉直接选,保存后下一条消息就按新的来
二维码本身是 qrcode 包在宿主进程里渲染成 dataURL 的,不联网,不上传。
如果设置页因为某种原因没出来(比如宿主版本差异),也可以直接开这个地址:
http://127.0.0.1:<你的 DSH 端口>/api/dsh-workassistant/login
这是同一个功能的纯网页版,扫码、看状态、换码都在里面。
用手机微信扫码,把机器人加成好友,就好了。凭据只存在本机,不上传。
登录之后,你给这个机器人发消息就等于跟工作助理说话;它的回复会直接推回微信。
它能做什么
记账
收到消息先判断里面有没有"需要被完成的事"。有就记下来,没有就不记。一件事记不住就拆成几条。
记的时候会顺手判断:期限是什么时候、优先级多高、打什么标签、这件事是不是它能直接代做。
记完一定会给回执,形如:
记下了 w-20261020-006:催老周补发票 期限 10/24 18:00,优先级 高 按紧急度排第 1 位(越靠前越该先做) 现在手上共 6 件未完成
看到这段就说明真的写进账本了。同一件事被反复说(你重发、它重试)不会记成多条——标题或内容重合会认出来,只把新信息补进去,回执改说"已经记过了"。
自动排优先级
不用你操心优先级。每条工作项都会算一个紧急度分数,影响排序和摘要顺序:
因素 · 影响
已逾期 · 分数最高,一直顶在最前
期限越近 · 24 小时内最高,一周内次之,之后递减
高优先级措辞 · 标题或正文出现"催""尽快""马上""今天""急"等,算高
正在做 · 比同等条件下还没动的稍微靠前
分数只在排序时用,不会覆盖你手动设的优先级。如果你想强按某件的顺序,说一句"这件最高优先级"它就会显式标成 high。
主动请缨
遇到查资料、改表格、整理文件、写文档、核对数据这类它手上能干的活,它会主动问一句"这个我可以直接做,要我做吗"。你说"做吧"或者"做第 3 件",它就去干。
干完会汇报结果,并把过程要点存进知识库。
提醒
- 单条到期提醒:给某件事设了提醒时间,到点推一条。创建时如果只填了期限没填提醒时间,默认提前一小时。
- 每日摘要:默认 09:00 和 18:30 各推一次,列出逾期、今天到期、本周内要交的。手上没活就不推。
- 安静时段:默认 22:00 到 08:00 一条都不推。落在这段时间里的提醒不会丢,也不会被标成已发,等时段结束一起补给你。
- 每周复盘:默认周五 18:00 推一次,说这一周做完了哪些、还欠着哪些。设成"关掉"就不推。
提醒是模板直发,不烧 token。所有"今天是否已经推过"的状态都落盘,重启不会重复轰炸。
重复的事
「每月五号交报表」这种可以直接记成重复任务。做完一件会自动滚出下一件,不用每个月重新说一遍。
让人去办
「等老周补发票」这类不是自己动手的事,可以记成「等某人」并约好什么时候去问一句。到点提醒你"该问问老周了",而不是提醒你去做那件你本来也做不了的事。
具体行为:
- 说了「下周问他」「周五再催」→ 按那个时间提醒。
- 没说 → 默认记下来那天往后 3 天。回执里会给确切时刻,不用猜。
- 到点推一条「该去问一句了:等老周补发票,等 老周」。催过就把下一次往后推 3 天,不会反复轰炸。
- 第二次起措辞变成「还没回音:…」,提醒你这事还悬着。
- 标成已完成或放弃后就不再催。
- 推送失败不动时间,下一轮接着试,不会静默漏掉。
副手:把活儿派出去
有些活儿不是一两句话能办完的——要把三个月的报销单理成一张表、要把一份合同逐条比对模板、要翻一堆资料查清楚某件事。这种活儿交给微信那头等着不合适,你在那儿干等,它也不一定一次干得完。
现在可以派出去。派出去之后它在一个独立的会话里干,你继续在微信里跟助理说话,两边不耽误。干完它会回来汇报,报告直接推到微信。
用法就是在微信里说一句"这个你派个人去做",助理会调 assign_create 开一个副手。也可以自己在整页视图的「副手」卡片里点「派一个」,写清楚要什么结果。
几个细节:
- 副手是独立的会话,会出现在 GUI 的会话列表里。这是故意的,不是 bug——你想看它到底在干什么,可以直接点进去看它的完整过程,或者点卡片上的「去看」跳过去。
- 默认最多同时开 3 个。开满了再派会直接失败并告诉你哪几个还占着,不会排队、不会假装派出去了。要改上限改
maxAssignments(1 到 32)。 - 助手随时能跟它说话。派完想起来还有要求,用
assign_send补一句;默认算"新的一轮",它会接着干。也能用assign_inspect看它最近几步干了什么,assign_stop停掉。 - 它交的报告可能是在问你。报告可以标"等你回话",这时候卡片上会亮黄,微信那头也会提示。名额开满时它还是会交报告,只是状态不会切到"等回话"——话照样送到你手上,回执里会说清这一点。
- 宿主重启后副手会标成"掉线"。下次给它发消息时会自动把会话恢复起来;真找不回来了(比如会话被删了)就如实报错,不会假装还活着。
- 副手可以绑一个工作区(
assignmentCwd)、用别的模型(assignmentModel)、换预设(`as
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:7,最后更新 2026-10-24