dsh-muse
Muse-like persistence for DSH: durable autonomy across restarts + silent proactive heartbeat
- Stars
- 0
- Language
- TypeScript
- Created
- Oct 4, 2026
- Updated
- Oct 6, 2026
Introduction
dsh-muse
Give your DSH agent Muse-like persistence: authorize once, and it keeps working across restarts — plus a silent heartbeat that only speaks when there is something worth saying.
What is this
Three DSH plugins + a set of experience recipes that replicate the core feel of Meta Muse: one long-lived conversation where the agent watches, keeps going, and only speaks when it matters.
| Piece | What it does |
|---|---|
muse/ — @deepseek-ai/dsh-muse | Persists your grant with proof of the original human message; a keeper re-arms disarmed active goals on session resume, so long-running goals survive process restarts |
tool-muse/ — @deepseek-ai/dsh-tool-muse | The muse_autonomy model tool: only a direct human request can grant or revoke autonomy; auto-continuations and subagents are always rejected |
tool-memory/ — @deepseek-ai/dsh-tool-memory | memory_save tool + per-turn memory injection over a human-editable plain-text memory file (~/.dsh/memories/main.md) — the "gets smarter over time" piece |
docs/ | Mechanism analysis, proactivity design (event-driven + speak/not-speak gate), install notes, release checklist |
Security boundary inherited from dsh-goal: activation never auto-inherits. Manual disarm always wins; paused/blocked goals are never auto-resumed.
Install
Requires a DSH runtime whose plugin tree includes the goal family (dsh-goal, dsh-goal-round-driver).
# in your profile directory, e.g. ~/.dsh/profiles/web
dsh plugin --profile web add <published-package-or-git-url> # both packages
Developing from a clone (verified on a fresh git clone):
pnpm install && pnpm build && pnpm -r test && pnpm test:timers
Then add both bundles to your profile's dsh.profile.bundles list, after the goal family. Packages carry their own dsh.bundle.patch metadata, so the plugin panel recognizes them as profile-level plugins. If your runtime version differs from the peer range, grant a per-profile compatibility exemption (compatibility.json).
A ready-made composition example lives at composition example examples/muse.cordis.yml and install notes in docs/install-notes.md.
Experience it
-
Continuous pursuit — in a new session:
Create a long-term goal:
<your task>. I'm leaving — keep going autonomously, don't ask me, until it's done.Watch it call
create_goal, thenmuse_autonomy { autonomy: true }, then run goal rounds back to back. -
Survives restarts — stop the runtime, start it again, reopen the session, say "continue". The keeper re-arms the goal from the persisted grant; no re-authorization needed.
-
Silent heartbeat — schedule a recurring check with "check but don't speak unless there's something worth saying" semantics. See docs/experience-guide.md and docs/proactivity-design.md.
Docs
- Continuous evolution — direction, bounded iteration contract, primary sources, scenario evaluation and evidence ledger. Start with
pnpm evolution:status; validate withpnpm evolution:check. - docs/goals.md — Muse ↔ DSH mechanism mapping, with evidence
- docs/experience-guide.md — how to feel each capability
- docs/proactivity-design.md — proactive trigger design (event-driven, wake ≠ interrupt)
- docs/gaps.md — what's implemented vs. what Muse has that we don't (event ingress, memory seam, external notify)
- docs/install-notes.md — cross-version install gotchas (metadata, exemptions, hot-mount)
- docs/FAQ.md — common errors and fixes
- docs/capability-checklist.md — historical Muse capability inventory; current priorities and evidence live in the evolution ledger
- docs/today-app-notes.md — teardown notes of Today.app (another Muse-like) with adoptable patterns
- examples/habits/ — cross-project habit miner (feeds proactive ideas)
- examples/gate/ — out-of-conversation proactive gate: zero-trace checks, inject only when it matters
- docs/heartbeat-recipes.md — copy-paste silent-heartbeat / proactive-report recipes
- docs/release-checklist.md — what "GitHub-ready" means here
Status
The timer-first loop has package and CLI integration tests, including real AgentLoop + JSONL cold recovery. Current work focuses on bounded progress in the same conversation, waiting/completion state and quiet reflection; external events and other conversations are deferred. See docs/timer-first.md for behavior, verification and remaining limits.
License
MIT
Timer-first progress loop / 定时推进闭环 — same-session routines, waiting/completion state, native cold wake, non-human mailbox delivery and proposal-only reflection.