dsh-diary: Automating Daily Public and Private Diary Writing for the DSH Agent

前言

在 DSH 里和 agent 协作一天,会话、待办、其他插件留下的痕迹会散在 ~/.dsh 各处。事后想回顾「今天到底干了什么、agent 怎么想的」,往往要翻多个 JSON 和日志,很难形成连贯叙述。手动让 agent 写总结可以,但需要记得触发,且每次要自己组织上下文。

下面介绍社区插件 dsh-diary(维护者 qzuser,分类:记忆)。它在设定的时间点自动采集当天只读数据,向专用会话投递一轮指令,由 agent 本人(而非插件调外部 API)写两篇日记:一篇公开、一篇私密。插件只负责闹钟、扫数据、组 prompt;文字由 agent 带着当日上下文生成。

这是什么

dsh-diary 是 DeepSeek Harness 的插件,版本 1.0.0(MIT)。核心价值:按配置的时间(可多个、可补写)汇总当天 DSH 相关数据,驱动 agent 在 ~/.dsh/diary/(或自定义目录)落盘 .public.md 与 .private.md。

与 dsh-bili-whale 产生的 ~/.dsh/whale-diary*.md 不同:后者是「那条鱼」刷 B 站的日记;dsh-diary 写的是本机 agent 自己的工作与想法,两套可同时启用。

运行方式概览

插件约每 60 秒 tick 一次,逻辑大致如下:

  1. 判断今天是否在 weekdays 内、enabled 是否开启。
  2. 是否到达 times 中的某一时刻;错过则在 catchUpHours 窗口内补写。
  3. 若当日尚未写过:只读采集数据 → 压成 markdown → 先写两篇骨架文件(避免中途失败一片空白)。
  4. 通过 sessionController.prompt() 向目标会话(默认专用会话 dsh-diary)塞入一轮;agent 按指令写两篇并回一行确认。

采集来源(均可通过 sources.* 单独关闭)包括:当日会话 JSON(标题、工作目录、问/答摘要、轮次、步数、耗时、token)、未完成 todos、whale-log.jsonl、其他插件目录的通用摘录、logs 尾巴(默认关)等。采样上限由 maxSessions、maxTurnsPerSession、maxPromptChars、maxResponseChars、maxDataChars 控制,避免 prompt 撑爆上下文。

输出与配置

默认文件名形如 ~/.dsh/diary/2026-10-31.public.md 与 .private.md。模板支持 {date}、{yyyy}、{mm}、{dd}、{weekday}、{iso};outDir 可指向任意路径;开启 monthlyDir 时按 2026-10/ 分子目录。

全部配置在 ~/.dsh/diary-config.json,也可在 设置 → 日记 修改;改完下一 tick(约 60 秒内)生效,无需重启 DSH。例外:若改 sessionId,需等到下一个时间点才按新会话投递。

常用配置项摘要:

键 说明
enabled 总开关
times 24 小时制时间点数组,如 ["12:30","22:00"]
weekdays 0=周日 … 6=周六
catchUpHours 错过后多少小时内补写;0 仅在该分钟触发
sessionId 留空则用专用会话 dsh-diary(推荐)
cwd 会话工作目录;留空为 ~/.dsh/diary-work
publicWords / privateWords 目标字数(写入指令的软约束)
style / persona 文风与人设,拼进 prompt
redact / publicHidePaths 公开篇禁词与路径脱敏
promptTemplate 完全自定义指令;占位符含 {date} {time} {data} {publicPath} {privatePath} 等

keepDays 与 autoCleanup 控制保留与自动清理。

安装与启用

插件在 DSH 启动时加载,安装或改 bundle 后需重启 DSH。README 给出的安装方式以本地 link 为例(本仓库即源码目录):

dsh plugin --profile desktop add "link:C:\Users\<你>\.dsh\plugins\dsh-diary"

卸载:

dsh plugin --profile desktop remove dsh-diary

也可在 profile 的 package.json 中设置 dependencies["dsh-diary"] = "link:C:/.../dsh-diary",在 dsh.profile.bundles 加入 "dsh-diary" 后执行 pnpm install。具体路径以你的环境为准;社区目录页:https://www.skillhub.cn/plugins/qzuser/dsh-diary,源码:https://github.com/qzuser/dsh-diary。

典型用法

设置页:立即生成一次(立刻投递,不影响当日定时记录)、预览今天的数据(只采集并展示将喂给 agent 的指令)、看已有日记 / 打开目录。

HTTP 接口(DSH 本地服务,示例端口 3080):

curl.exe -s http://127.0.0.1:3080/dsh-diary/api/status
curl.exe -s -X POST http://127.0.0.1:3080/dsh-diary/api/run
curl.exe -s http://127.0.0.1:3080/dsh-diary/api/preview

排查「到点没写」:看 GET /api/status 的 lastTick.reason(如「等时间」「已关闭」)以及 today/ranToday。若文件仍是骨架,说明投递成功但 agent 未写完,到 dsh-diary 会话查看进度。prompt 过长时可减小 maxSessions、maxDataChars,或关闭 sources.logs、sources.plugins。

想改成周报形态:重写 promptTemplate 即可,{data} 为整段采集结果。

未安装前可在仓库 docs/preview-light.html / preview-dark.html 查看与设置页等价的静态预览(自包含 HTML)。

适用场景与注意

适合:希望 agent 定期基于真实会话与插件痕迹做自我叙述、区分对外公开与对内私密两版记录、且愿意在专用会话里完成写作的用户。

务必知悉:插件以当前 DSH 进程权限读取 ~/.dsh 下的会话与日志,并触发 agent 写盘。安装前应阅读源码与 MIT 许可证,确认数据源与脱敏策略(redact、publicHidePaths)符合你的隐私要求。DSH 生态强调「一切皆插件」;SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-diary 把「定时、采数、投递」从「写字」里拆开:闹钟与摘要由插件保证,叙述与判断留在 agent。若你需要可配置的公开/私密双日记与丰富数据源开关,可在安装重启 DSH 后从 diary-config.json 或设置页调时间与文风。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye