dsh-sticky-notes
灵感便签 (Sticky Notes) plugin for the dsh web GUI: jot ideas while the agent thinks — without interrupting it. Queue-channel sends/forwards, auto-persist (localStorage + host file), export TXT/JSON/MD, bilingual zh/en. DeepSeek Harness plugin · @lastplayer82/dsh-sticky-notes
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 27, 2026
- Updated
- Aug 27, 2026
Introduction
dsh-sticky-notes (灵感便签)
Sticky Notes for the DeepSeek Harness web GUI — jot ideas while the agent is thinking, then deliver them into the chat without interrupting it. Fully bilingual (zh/en): the UI follows the DSH interface language.
Features
- Jot anytime: capture ideas while the agent thinks/runs — auto-saved on every keystroke (browser localStorage + host file dual-write, nothing is lost across restarts or port changes).
- Floating panel (v0.2): a click on the dock chip / sidebar entry pops a floating overlay anchored near the input box (bottom-right when no conversation is open); click outside or press ESC to auto-save and close (the draft is kept). Draggable by the header, resizable from 8 edges/corners — size and position are remembered.
- Never interrupts the agent: sends and forwards go through the official
queue channel (
conversation.send, mode=queue) — when the target session is busy the message lines up and is processed after the running turn. - One-click send: send a single note, or merge several into one message (verbatim text, blank-line separated, no decoration).
- Drag to reorder (v0.2.5): drag the
⋮⋮handle on any unsent note to rearrange the list — merged sends follow the exact order you see, so the agent receives your ideas in the order you intend. - Inline edit (v0.2.5): click a note's text to edit it in place (the caret lands where you clicked); focus leaves → auto-saved; ESC cancels.
- Copy one note (v0.2.5): per-note copy button puts the verbatim text on the clipboard.
- Forward to another conversation (v0.2): 「转到…」opens a session picker (busy sessions marked) and forwards through the target session's own queue channel.
- Export (v0.2.1): tick notes and export as TXT / JSON / Markdown — copy or download; TXT is verbatim-only (paste-ready), Markdown decorations follow the UI language.
- Confirmations (v0.2): destructive actions (clear sent / clear all) use an in-panel confirm overlay (window.confirm is unreliable in Electron).
- Bilingual (v0.2.2): full zh/en dictionaries, follows the DSH locale service automatically.
Install
dsh plugin --profile web add <path-to-this-package>
Or add "@lastplayer82/dsh-sticky-notes": "link:../../plugins/dsh-sticky-notes"
to profiles/web/package.json dependencies + the package name to
dsh.profile.bundles, then pnpm install and run node scripts/junction.mjs
once. A full DSH restart is required after install (a page refresh is not
enough).
Usage
- Click the note button above the input box (or the sidebar entry; the badge = unsent count) to open the floating panel.
- Type an idea → 「记下」/ Enter saves and keeps the composer focused (Shift+Enter inserts a line break).
- Send to the current chat: single note 「发送到对话」, or 「合并发送」 to merge several (tick to exclude).
- Send to another chat: 「转到…」→ pick a session → forwarded through its own queue channel.
- Reorder: drag the
⋮⋮handle (unsent notes only) — merged/forwarded order follows the list. - Edit: click any note's text, edit, click away (auto-saved), ESC cancels.
- Sent notes stay in the list marked ✓ and can be cleared (with confirm); 「清空全部」removes everything (with confirm).
Data & persistence
dsh.sticky.v1(localStorage) + host file~/.dsh/dsh-sticky.jsonare the stable persistence contract — upgrades must never lose notes; the array order is the user's display/merge order.- Uninstalling the plugin does not delete the host file, so reinstalling restores notes.
Architecture
- Host:
src/index.ts+src/routes.ts—/api/dsh-sticky/status(health probe),/api/dsh-sticky/state(state file read/write), loopback trust fence. - Client:
src/client/— sidebar entry (self-healing DOM mount), floating panel (body-level fixed overlay), input-dock chip registered on the officialconversation.input.dockslot (conversation.sendfor queue delivery). - Forwarding:
ctx.sessions.scope(targetId)→ the target session's scopedconversation.send; roster read viactx.sessions.listsnapshot. - Events: panel ↔ dock over
dsh-sticky:send/-result,dsh-sticky:list-sessions/-result,dsh-sticky:forward/-result; store mutations broadcastdsh-sticky:change.
Build & test
pnpm install && pnpm build # build host + client bundle (needs node on PATH)
node scripts/smoke-client.mjs # client smoke (after build): mount/badge/queue/send/roster/forward/export/copy/edit/reorder
中文速览
DSH 灵感便签插件:AI 思考时随手记想法(自动保存不丢),一键/合并发送或转发到指定会话,全部走官方排队通道、绝不打断 AI;v0.2.5 起支持每条复制、拖拽排序(合并发送顺序跟随清单)、点击文本就地编辑(失焦自动保存);界面中英双语跟随 DSH 语言设置。安装后需彻底重启 DSH(刷新页面不算)。