← Back to home@ttmouse

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
GitHub repo

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.

PieceWhat it does
muse/ — @deepseek-ai/dsh-musePersists 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-museThe 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-memorymemory_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

  1. 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, then muse_autonomy { autonomy: true }, then run goal rounds back to back.

  2. 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.

  3. 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

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.