franksong2702
dsh-daybook
Intelligent, local-first Markdown journal writing assistant for DeepSeek Harness.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
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 <text>. 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-raw <text>is 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 <text> 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.