前言¶
做智能體應用時常遇到一個具體問題:模型能推理、能調工具,但「今天發生了什麼」沒有地方落。對話結束後記錄散在聊天裏,想回顧、檢索都很被動。DSH(DeepSeek Harness)的理念是「一切皆插件」,這類能力適合做成插件來補。下面介紹的 dsh-diary 就是這樣一個插件:給模型一組日記工具,再配一個瀏覽器端的查看和管理界面。
這是什麼¶
dsh-diary 是 hyperMoss 維護的 DeepSeek Harness 插件,npm 包名 dsh-diary,當前版本 0.1.1,許可證 MIT。它做三件事:
- 在
ctx.tools註冊 10 個模型可調用工具,覆蓋日記條目的增刪改查、全文搜索和模板管理; - 自帶自定義模板系統,讓條目按固定格式生成;
- 提供瀏覽器端界面,包括一個「日記」設置分區和一個獨立的日記看板。
條目本身就是普通的 markdown 文件,存放在本地目錄,不引入額外的存儲服務。
核心功能¶
十個模型可調用工具¶
工具註冊在 ctx.tools 上,模型可以直接調用:
| 工具 | 用途 |
|---|---|
diary_create |
創建條目(文件名 YYYY-MM-DD[-slug].md),支持可選 title、tags、body 和命名模板 |
diary_list |
列出條目及元數據,可按年/月、標籤或標題/文件名子串過濾 |
diary_read |
讀取單個條目的 frontmatter 和完整正文 |
diary_update |
替換或追加正文,修改標題和標籤 |
diary_delete |
刪除單個條目文件 |
diary_search |
對條目正文做全文搜索,返回行號和片段 |
diary_template_list |
列出可用模板 |
diary_template_read |
讀取一個模板的完整內容 |
diary_template_set |
創建或覆蓋模板 |
diary_template_delete |
刪除模板 |
前六個面向條目本身,後四個是模板工具組。模板是 <diary-directory>/templates/ 下的 markdown 文件,diary_create 接受 template 名稱,並替換正文中的佔位符:
{{date}} {{title}} {{tags}} {{slug}} {{year}} {{month}} {{day}} {{datetime}} {{time}}
如果 diary_create 同時傳入 template 和 content,渲染後的模板正文在前,content 追加在空行之後。
瀏覽器端界面¶
插件自帶瀏覽器端代碼 lib/client.js,經 /plugins/dsh-diary/client.js 提供,包含兩個界面:
- 「日記」設置分區:顯示日記/模板目錄,列出、創建、編輯、刪除模板;
- 日記看板:獨立面板,通過自己的懸浮按鈕打開(按鈕圖標爲 📓),條目按月分組,提供「新建日記」按鈕和逐條刪除。
兩個界面的後端是 /api/diary/* 下的 diary Typert Remote 命名空間:
getDirectory listTemplates getTemplate setTemplate deleteTemplate
listEntries getEntry createEntry deleteEntry
安裝與啓用¶
安裝的是 npm 上發佈的 dsh-diary 包(https://www.npmjs.com/package/dsh-diary),不是 GitHub 源。官方安裝命令:
dsh plugin --profile web add dsh-diary
這一步會把插件裝入 web profile。之後需要重啓 web server,新的工具層和設置分區纔會生效。
存儲與配置¶
條目文件格式¶
條目是帶可選 YAML frontmatter 的 markdown 文件,默認存放在 $DSH_HOME/diaries(回退 ~/.dsh/diaries)。一個條目大致長這樣:
---
title: My day
date: 2026-08-14
tags:
- work
- life
---
Today I …
默認每個日期一條;給 diary_create 傳 slug 可以在同一天保留多條,文件名變爲 YYYY-MM-DD-<slug>.md。
覆蓋日記目錄¶
想把日記放到別的目錄,可以在 profile 的 cordis.patch.yml 裏用 config.directory 覆蓋:
- insert:
- id: dsh-diary
name: 'dsh-diary'
config:
directory: '/Users/me/Diary'
資料中出現的配置項只有 directory 這一項。
開發與調試¶
如果要自己改代碼,流程如下:
pnpm install # 鏈接 @deepseek-ai/* 宿主與客戶端包,供 typecheck 使用
pnpm run build # esbuild 打包出 lib/index.js(宿主端)、lib/client.js(瀏覽器端)和聲明文件
pnpm run typecheck
node smoke.mjs # 對十個工具做功能冒煙測試
依賴方面,運行時依賴 js-yaml ^4.1.0 和 zod ^4.4.3;@deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-tools 等 peer 依賴均爲 optional。
適用場景與注意¶
適合的場景:
- 希望智能體有持續的工作日誌或個人日記,能自己寫、自己查;
- 想在瀏覽器裏直接瀏覽和整理條目,而不是進文件系統翻文件;
- 想把記錄放在自己控制的目錄裏,比如同步盤中的 Diary 目錄。
注意幾點:
- 插件以當前 dsh 進程的權限運行,它能讀寫日記目錄,也就擁有該進程對應的文件系統權限。安裝前建議先檢查源碼與許可證(本項目爲 MIT);
- 安裝後務必重啓 web server,否則新的工具與設置分區不會出現;
- 默認目錄是
$DSH_HOME/diaries(回退~/.dsh/diaries),如需調整用上面的directory配置。
小結¶
經過上面的步驟,智能體就有了一份落在本地 markdown 文件裏的日記:模型側通過十個工具讀寫和搜索,人側通過設置分區和日記看板管理。代碼與文檔在 GitHub:https://github.com/hyperMoss/dsh-diary;目錄頁在社區站點 skillhub.cn:https://www.skillhub.cn/plugins/hyperMoss/dsh-diary。該目錄是獨立的社區站點,與 DeepSeek / 幻方沒有官方從屬關係。