dsh-diary:讓 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 或設置頁調時間與文風。

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

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

小夜