franksong2702/dsh-daybook ↗★ 0
dsh-daybook
Intelligent, local-first Markdown journal writing assistant for DeepSeek Harness.
AI 分析
核心用途是辅助用户在本地目录中撰写和整理 Markdown 日记。适合习惯用 Markdown 记录生活、注重隐私且希望 AI 辅助润色日记的用户。需要 Node.js 22.19+。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:franksong2702/dsh-daybookドキュメント
README 全文を読む ↗Daybook
Daybook is a local-first intelligent journal writing assistant for DeepSeek Harness. You choose one ordinary folder; Daybook uses the model and your Writing Instruction to lightly polish explicit journal requests, writes only the new entry, organizes today's entry behind a confirmation preview, copies current-message images, and keeps guarded undo receipts in Harness's private data directory.
Alpha status: the source is public for testing. The package is not published to npm or the DSH Plugin marketplace.
What it writes
your-journal/
├── 2026-08-14.md
└── images/
└── 2026-08-14/
└── 221530-a1b2c3d4e5f6.jpg
There is no hidden Daybook folder in your journal. Preview and undo data live under $DSH_HOME/daybook/v1/.
Daybook uses standard Markdown image links and does not require Obsidian. If the selected folder is inside an Obsidian vault, Obsidian simply becomes one optional viewer.
Alpha behavior
- Smart capture: ask “记到日志里” (or another explicit journal request), or enter
/daybook. The normal model turn applies the active Writing Instruction to clean up punctuation, obvious grammar, speech fillers, and accidental repetition in only the new material, callsdaybook_capture, and reports the actual saved text and receipt. Earlier text is never rewritten. - Raw fallback:
/daybook-rawis an explicit no-model, text-only path that trims and saves the text as-is. It never saves images and is not the normal Daybook workflow. - Organize today: ask to organize today's journal. Daybook reads the complete daily file, presents a read-only rewrite preview, and asks for explicit confirmation in the conversation. Only after the user confirms does the model call
daybook_apply_organize. - Images: images can only come from the latest direct user message. They are copied, never moved. Privacy protection is on by default.
- Undo: each applied mutation has an id. Undo succeeds only if the file still matches that operation; otherwise it safely refuses.
- External edits: a preview never overwrites a file changed after the preview was created.
The browser slash menu offers daybook as a plain-text insertion source. It deliberately does not claim submit, so /daybook remains a normal model prompt. Only the explicit /daybook-raw fallback is registered as a direct content-bearing command; use a Harness build that supports CommandDefinition.engagesSession so its durable input and receipt retain the current Session and New Session creates a different conversation.
Local development install
Requirements: Node.js 22.19+ and pnpm.
The current Alpha is tested against DeepSeek Harness 0.1.0-rc.6; its DSH peer packages are supplied by the active Harness profile.
git clone https://github.com/franksong2702/dsh-daybook.git
cd dsh-daybook
pnpm install --config.minimum-release-age=0
pnpm run check
pnpm pack
dsh plugin --profile web add ./dsh-daybook-0.1.0-alpha.1.tgz
Then open Settings → Plugins → Plugin configuration → Daybook, choose a journal folder, and save.
The bundle patch only adds Daybook with an empty folder setting. It does not change the active model, web-search provider, workspace, or any existing journal.
Security boundary
- The selected folder is the plugin's explicit standing filesystem capability.
- Daily filenames and image subpaths are generated by Daybook, not accepted from the model.
- Symlinked daily files and image directories are rejected.
- Mutations are atomic and serialized across plugin processes.
- Card actions accept only local same-origin Web requests.
- Remote image URLs are never fetched.
- Custom instructions and private receipts stay local and contain no account credentials.
See the Alpha contract and design notes.
License
Apache-2.0 © 2026 Frank Song.