前言¶
在 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 一次,逻辑大致如下:
- 判断今天是否在
weekdays内、enabled是否开启。 - 是否到达
times中的某一时刻;错过则在catchUpHours窗口内补写。 - 若当日尚未写过:只读采集数据 → 压成 markdown → 先写两篇骨架文件(避免中途失败一片空白)。
- 通过
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 或设置页调时间与文风。