Перейти к основному содержимому
S

dsh-quickjot

spankingsnail/dsh-quickjot

Notes, to-dos and dated events kept as one JSON record per item in the local DSH profile and shared across conversations. Three tools list, create, update, complete and delete them, including adding and removing tags through conversation. A sidebar page groups events by day, remembers agenda navigation within the same Shanghai day, folds earlier unfinished events and lets you show completed events. An unfinished item with a due time raises an in-app reminder — including one missed while the app was not running. An optional WeChat push goes only to a target you have already saved, over the DSH-IM channel, and a successful send is recorded as the channel accepting it.

Установка

dsh plugin --profile web add github:spankingsnail/dsh-quickjot

README

随手记

开口说一句,就记下了。

License: MIT DeepSeek Harness English

English · 简体中文

记日程最烦的一步,从来不是「想起来」,而是打开、填表、点日期。

随手记是给 DeepSeek Harness 用的本机日历插件,把这一步压成一句话:便签、待办、日程共用一本账,说一句就落进去;到期时在应用里提醒你,按你的确认也可以发到微信。

https://github.com/user-attachments/assets/a22ff3f9-1d85-48d2-b5e3-5d370c5f56a1

数据存在你自己的机器上,逐条 JSON,随时能看、能备份、能带走。

微信推送那一段不是自己实现的:目标管理与消息通道来自 DSH-IM,没有它,提醒只会停在应用内。


为什么需要它

你和 AI 聊出来的东西,大多数都不会被记住。

「明天十点提醒我续签合同」「这个想法先记下来」「下周三之前把方案写完」——这些话说完就消失在对话流里。你需要的不是更聪明的助手,而是一个把话变成事项的地方。

但真正让人放弃记录工具的,往往不是遗忘,是摩擦:为了记一条「明天十点开会」,要打开应用、找到新建、选类型、选日期、选时分、点保存。六步换一条记录,谁都不愿意坚持。

所以随手记的默认姿态是「说一句」:

  • 在任意对话里说一句,Agent 用插件提供的工具把事项写进本机账本;
  • 不想离开当前页面,点页面右上角的「随口记」,也是一段对话框——没有表单,只有输入框和发送键;
  • 想翻、想改、想勾掉,再回侧栏:日历按月列出日程,待办可以勾掉,便签留给还没成形的想法;
  • 到期了它会提醒你——应用内提醒不需要任何额外配置,微信提醒需要你事先选好收件目标。

表单还在,但它是兜底,不是主路径。

它刻意不做几件事:不读取或监听其他对话,不自动执行待办,不从引用和讨论里推断你的授权,不上传内容,不替你做决定。

三个入口,按动作排

不按位置排,按你当下正在做什么排:

你正在入口说明
跟 AI 说话,顺手想起一件事对话里说一句dsh_quickjot_list / dsh_quickjot_write 两个工具;不用切界面,说完继续干
已经在随手记页面上,懒得走开页面右上角「随口记」一段短对话,走 DSH 的模型额度;记录落在同一本账,不需要填表
想整理、想翻、想改侧栏「随手记」日程 / 待办 / 便签三个视图,月历可展开按日期筛选;新建表单在这里

三个入口写的是同一本账。你用哪个,取决于你当时愿不愿意离开手上的事。

界面跟随 DSH 主题;日程与截止时间一律按 Asia/Shanghai 解释,不跟随浏览器时区。

你会注意到的几个设计取舍

「说一句」才是入口,表单是兜底。 在「随口记」里直接说「明天上午十点开会」,助手会拆成事项并追问含糊的地方;时间不明确时它先问,不猜。表单留着,是因为有时候你确实想对着日历点——但不该默认如此。

引用不是授权。 你贴进来的文章、会议记录、别人的话,都只是资料。只有你自己明确要求记录,才会建项。这条写在插件的全局策略里,不靠模型的临场判断。

逐项保存,可能部分成功。 一次写多条时,每条独立落盘并带 revision 乐观锁。不会整表覆盖,也不会把「第二条失败」粉饰成「全部成功」——失败的会逐条告诉你原因。

提醒状态是可核对的。 微信发送前先持久化「发送中」,渠道确认后才记「已发送」;超时或崩溃记「不确定」,不自动重试,避免重复打扰。你可以核对微信后自己决定要不要重发。

它不会假装可靠。 应用退出不提醒;真正睡眠时不能准点发送,恢复后会补一条「错过的提醒」。这不是精确闹钟,是尽力而为的本机提醒——README 把这句话写在显眼处,因为承诺做不到的事比不做更糟。

安装

当前为 v3.3.0,面向桌面版 DSH(0.2.x)。

git clone https://github.com/spankingsnail/dsh-quickjot.git ~/dsh-quickjot
cd ~/dsh-quickjot
npm install
npm run build

然后把本仓库登记进你的 DSH profile(~/.dsh/profiles/<profile>/package.json):

{
  "dependencies": {
    "dsh-quickjot": "link:/Users/you/dsh-quickjot"
  },
  "dsh": {
    "profile": {
      "bundles": ["...其他 bundle...", "dsh-quickjot"]
    }
  }
}

在该 profile 目录执行 pnpm install,重启 DSH。侧栏出现「随手记」即安装成功。插件可随时停用或卸载,停用不会删除已有事项。

从早期版本升级:存储域是 dsh_quickjot / dsh_quickjot_in_app,工具是 dsh_quickjot_list / dsh_quickjot_write / dsh_quickjot_in_app_reminders。

使用

最短的一条路:打开随手记,点右上角「随口记」,说一句。

标题栏可以选择 DSH 已配置的模型,以及该模型支持的推理强度,不占用聊天输入区。选择只用于这一个随口记对话,不修改全局默认。模型读取或切换失败会显示原因,不会自动换成别的模型。

如果留存的随口记对话已归档,页面会明确提示并暂停发送。点击「恢复此随口记对话」后再手动发送;恢复只解除这条对话的归档,不会自动重发旧消息。

  • 「明天上午十点提醒我续签合同」→ 落成日程,并问你要不要发微信
  • 「这个想法先记下来:给周报加一栏风险」→ 落成便签
  • 「下周三之前把方案写完」→ 落成带截止时间的待办
  • 「这周还有什么日程?」→ 问也行,不一定非要记

说不清楚的时候它会追问,不会替你猜时间。便签和普通待办可以没有日期;日程必须有具体日期和时分。

不只新增,也能调整已有事项: 在「随口记」或 DSH 对话中,可以直接说:

  • 「把『续签合同』改到明天上午十一点」
  • 「把『写周报』标为完成」/「重新打开『写周报』」
  • 「给『写周报』加上『工作』『重要』标签」
  • 「移除『写周报』的『临时』标签,其他标签保留」
  • 「把这些待办的『临时』标签改成『工作』」——范围不清楚会先列出候选,请你确认

先查现有事项,再按精确 ID 与最新版本修改;同名或时间不明确时先追问,找不到不会擅自另建一条。改内容、时间或标签不会清空未提到的字段;增加、移除和整体替换标签是不同操作。批量修改逐项保存,可能部分成功;回复应区分成功与失败。改日程时间不等于同步修改微信提醒时间,需要同步时请明确说;完成后重新打开也不会自动重启已取消的微信提醒。

用语音调整: 沿用 DSH 主对话已有的语音输入,转成文字、核对后发送即可;微信仅处理渠道已经转成文字的语音,不保证所有原始语音都能识别。「随口记」本身不新增麦克风或录音,转写后的文字与键盘输入走同一套编辑工具。引用、转述、示例和讨论不是修改授权。

在对话里也一样: 任何对话中直接说「帮我记一条……」或「把……改成……」,Agent 会调用 dsh_quickjot_list / dsh_quickjot_write。不用先切到插件页面。

日程多了以后: 默认「接下来」只列今天起的未完成日程,跨月也不会漏掉;往期未完成单独折叠,已完成可勾选显示。顶部导航滚动时保持可见,可切「今天」「近七天」「查看整月」,也可以直接选日期。同一天切回页面或结束编辑时,会恢复各视图上次的阅读位置;跨上海日期后回到「接下来」。这些只是显示方式,不会自动完成或删除事项。

要点表单的时候: 页面里点「+ 新建便签 / 待办 / 日程」。这条路还在,只是不再是默认。

提醒: 有时间的未完成待办和日程会自动进入应用内提醒——右下角「提醒 N」打开未读列表,到期时最多弹 3 条。想让某些提醒也发到微信,先在「设置 → IM机器人 → 微信」测试并保存目标,再在页面里选为默认。

数据与隐私

  • 事项在 DSH 的存储域 dsh_quickjot(version 1,逐条记录);提醒未读状态在 dsh_quickjot_in_app。后端是逐条 JSON 文件,路径由 DSH 决定(本机通常在 ~/.dsh/storages/ 下)。
  • 事项账本保存事项、标签、提醒状态和你选定的收件目标 ID;不保存对话内容、通讯录、微信 token。页面另在本机浏览器的 sessionStorage 暂存视图、搜索词与滚动锚点,不上传、不写入事项账本;存储不可用时仍可浏览。
  • 微信投递只调用已接入的 dshIm 服务里你已经保存过的目标,不创建目标、不读取凭据、不主动给未知联系人发消息。
  • 插件不另建服务器或账本云同步服务,也不新增录音或音频存储。AI 对话仍使用你在 DSH 选定的模型;语音转文字由 DSH/微信已有能力处理,可能涉及相应服务提供方。转写文字与键盘输入一样,按会话配置交给模型处理。

致谢

  • DSH-IM(@xmanrui/dsh-im)——这个插件的微信推送,完全是借它的技术才做到的。目标管理、IM 投递通道和发送回执都由 DSH-IM 提供;随手记只在它之上做三件事:从你已经保存的目标里选一个、把发送状态记进本机、让你能核对结果。没有 DSH-IM,就不会有「微信提醒」这个功能。
  • dsh-plugin-control-your-schedule(HaoyanZhang123,MIT)——本项目的上游。数据结构、提醒状态机和「引用不是授权」的策略延续自它。
  • DeepSeek Harness——插件框架、UI 插槽、存储域与模型额度。
  • Zod(MIT)是唯一声明的运行时依赖;React 来自 DSH 的模块表。

License

MIT。保留上游版权与来源说明,见 THIRD_PARTY_NOTICES.md。

Похожие плагины