DDDPG/dsh-plugins--plugins-dsh-plan-keeper ↗★ 0
dsh-plan-keeper
DSH web plugin: plan persistence & workspace memory — captures every exit_plan_mode plan into .dsh-outputs/plans/<sessionId>/ (plan.md + revisions + meta.json), keeps a workspace-gradual memory under .dsh-outputs/memory/ (user/feedback/project/reference, MEMORY.md index), injects the memory into every model turn (6KB budget, toggleable), exposes a memory_write model tool, and renders a deliverables view (计划/记忆 rings: view / edit / delete / add / send-to-composer).
AI 분석
核心用途是持久化保存 AI 生成的计划并自动维护工作区记忆。适合需要跟踪项目交付物、让 AI 记住历史反馈和参考资料的用户。在会话页面的“产物”标签页展示。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:DDDPG/dsh-plugins#543d4b046af0c67602be6d16cba7f6ed94239247&path:plugins/dsh-plan-keeperdsh-plan-keeper
A DeepSeek Harness plugin: plan persistence + workspace memory, presented as a Deliverables (产物) conversation view.
Part of the dsh-plugins collection.
Layout
/.dsh-outputs/ # per-workspace outputs root (session.header.cwd)
├── plans//
│ ├── plan.md # latest plan
│ ├── revisions/NN.md # immutable snapshots
│ └── meta.json
└── memory/
├── MEMORY.md # rebuild injection index
├── meta.json # { enabled, budgetBytes, entryCount }
├── user/-.md
├── feedback/-.md
├── project/-.md
└── reference/-.md
The output root follows the session workspace (session.header.cwd), not
the deployment root.
Install
./scripts/install.sh web plugins/dsh-plan-keeper
or, as a bundle-layer package:
dsh plugin --profile web add ./plugins/dsh-plan-keeper
Then refresh the browser page and open the Deliverables (产物) tab in any session header (after Trace (轨迹)).
Note for sessions that ran the dynamic (in-session) version: the dynamic plugin registers the same
deliverablesview id with a lower shadowing priority, so it wins while it is running.cordis_stop(or undefine) the dynamicplank-1plugin before installing this package to use the packaged version.
Architecture
- Host half (
lib/index.js): plan capture & sync (tools/result,agent/turn-stopping), memory storage & index,systemPrompt.sectioninjection, thememory_writemodel tool (tools.register), and a local HTTP RPC routePOST /api/dsh-plan-keeper(webServer.register,{ method, args }JSON). - Client half (
lib/client.js): the Deliverables (产物) view — Memory (记忆) ring and Plan (计划) ring — via same-originfetchRPC.
Security note
The HTTP route is unauthenticated and bound to the harness web server
(same-origin, local development setups). It validates sessionId against
[A-Za-z0-9-]+ and only touches files under the session workspace's
.dsh-outputs/. Do not expose the harness web port beyond localhost.
Model tool
memory_write (type / topic / content) — the model is instructed to record
corrections, preferences, project decisions and external references, and not
code details, transient task state, or anything already in AGENTS.md /
CLAUDE.md. Entries are plain markdown; the user can edit or delete them in the
Deliverables (产物) view at any time.
License
MIT — see LICENSE.