READMESource: main@23f7ef16
日记 · DSH 插件
给 DeepSeek Harness 的侧栏加一本安静的日记:一天一篇,按月历翻,自动存成本地 Markdown。
- 写:整页书写,停手 0.7 秒自动保存,回车就是普通换行
- 翻:月历导航,有记录的日子打点,「今天」一键回今日
- 找:
Ctrl+K全文搜索 - 看:连续记录天数、本月与累计篇数、总字数
- 拿得走:
~/Documents/日记/2026.md,一年一个 Markdown 文件,任何编辑器都能打开
没有账号,没有云同步,也没有 AI 代写——日记应该是自己写的。
安装
本仓库根目录就是插件包本身,不需要构建。三种装法:
从 GitHub(建议锁 commit,避免上游改动悄悄改变行为):
git+https://github.com/PeiQinyi/dsh-diary.git#<commit>在
plugin_manager的install_bundle里,target 填上面这串。本地目录:先
git clone,再让install_bundle的 target 指向该目录的绝对路径直接拷贝:把整个目录放到任意位置,同样用绝对路径安装
装好后侧栏出现笔记本图标(在「插件」「日程」下面)。数据目录默认 ~/Documents/日记,与插件代码完全分开——卸载或升级插件都不会动日记。
用法
- 点侧栏的笔记本图标打开日记页
- 光标直接落在正文里,写字即可;停手 0.7 秒自动保存
- 左侧月历点日期切换,
‹ ›翻月,「今天」回到今日 Ctrl+K(macOS⌘K)全文搜索,Ctrl+S立即保存,Esc关闭搜索- 右上角「导出」把所有日记合成一个 Markdown 文件下载
数据格式
默认目录 ~/Documents/日记/,一年一个文件:
# 2026
## 2026-11-03
> ⛅ 多云 · 🥱 疲惫
今天……
- 标题
## YYYY-MM-DD是唯一结构锚点,其余按原样保存 - 心情/天气是紧跟标题的引用行;数据由 emoji 承载,后面的中文只是装饰,改成「rain · exhausted」也能读回来
- 旧格式
<!-- {"mood":...} -->仍然能读,下次保存时自动改写为引用行 - 行首空白在保存时去掉,正文一律顶格;空行两侧和纯空白行会被规整
- 第一个日期标题之前的内容是「序言」,写入时原样保留
- 每次写入前,上一版留在
<年>.md.bak;正文写空且没选心情/天气时,该日条目会整条删掉 - 换目录:设环境变量
DSH_DIARY_DIR,或改cordis.patch.yml里的config.directory
设计取舍
- 一年一个文件,不是一天一个。几百个小文件不好翻、不好备份;按年归档,用编辑器的目录树和搜索都更顺
- 纯文本优先。正文就是 Markdown 原文,不做富文本、不做预览层,文件离开插件也能读
- 不碰内容生成。插件只负责记录与回收,不代写、不润色、不摘要
- 写入是原子的。临时文件 + rename,旧版本留
.bak,避免半截文件
开发
# 语法检查 + 存储层测试(30 项)
node --check index.js
node --check client.js
node --check lib/store.js
node test/store.test.mjs
# 改完重新安装(profile 内生效)
# plugin_manager install_bundle,target = 本目录
改 index.js(Host 半)需要重启 Harness 才会重新加载;改 client.js 后一般刷新页面即可,若没生效则重启。
结构
| 文件 | 作用 |
|---|---|
index.js |
Host 入口:解析目录、注册路由 |
lib/store.js |
年文件读写、解析、搜索、统计、导出(纯 Node,可独立测试) |
lib/route.js |
POST /dsh-diary/api,按 action 分发,走宿主鉴权 |
client.js |
浏览器半:侧栏图标 + 整页界面 |
test/store.test.mjs |
存储层测试 |
PLAN.md |
产品与格式的决策记录 |
已知边界
- 只做纯文本:不做富文本、图片、标签、多日记本
- 不做云同步;把目录放进 OneDrive / iCloud 即可
- 年文件在极端情况下(几十万字/年)会变慢,届时再拆
License
MIT © 2026 Pei Qinyi
No comments yet. Be the first to write one.