Introduction¶
When running agents in DeepSeek Harness (DSH), it’s common that pitfalls encountered, processes summarized, and reusable memories gained in one session are not automatically carried over to the next. Relying on manual copy-pasting to profiles or SKILL.md files works but lacks versioning, auditing, and reversible rollback. If the model “proposes” to write a rule during a conversation, it’s also difficult to guarantee format, scope, and promotion strategy using code.
This introduces dsh-continual-evolve (maintainer: ZK-Andy, GitHub repo: ZK-Andy/dsh-continual-evolve). It adds a layer of continuous self-evolution state to DSH: prompt notes, memories, skills, subagent specs, etc., refined from session trajectories, with versioning, auditing, and deterministic rollback. Global changes can also be subject to benchmark scoring before acceptance. The design principle stated in the README is “The model proposes, the code guarantees” — schema validation, atomic writes, snapshots, versioning, auditing, and acceptance decisions are enforced by code, not by prompt self-discipline.
What Is It¶
dsh-continual-evolve is a workflow-type plugin in the DSH ecosystem (SkillHub category: Workflow; current npm version: v0.5.0). Licensed under MIT, it requires Node.js ^22.19.0 || >=24.0.0. It turns cross-session reusable agent experiences into first-class state: with local scope within sessions and global scope with merge semantics across sessions. Global writes require explicit human approval and are filtered by code-side promotion guards for project paths, overly short content, and near-duplicate entries.
State defaults to the evolve/ directory under the DSH home (configurable via baseDir). After installation or update, restart dsh web.
Core Features¶
Sedimentation and Guards¶
- Sedimentation: The model creates entries via the
evolve_addtool; ifautoReviewis enabled, an automatic review gate proposes entries from the trajectory based on turn intervals and compaction checkpoints. - Guard: Code validates the edit schema, impact scope, and scope consistency, and enforces the promotion strategy. Global creates with similarity ≥0.8 to existing entries are rejected at write time; medium overlaps attach a
conflictHintfor later processing via/evolve consolidate. - Approve:
requireGlobalApprovaldefaults totrue; global writes require explicit human approval. The fate (promotion/archive/keep) of local entries is proposed by the gate and applied after consultation, without silent modification.
Injection and Storage Forms¶
After approval and atomic application, snapshots and audit events are generated. Prompt notes and delegation specs are injected into the system prompt ordered by relevance (max 6 per category, each ≤180 characters); memories and skills appear as directory indexes ([kind:id] title, default max 15 lines, folding to counts if exceeded). Full content is read via evolve_list. Empty stores inject no tokens.
Skills entries can materialize as SKILL.md bundles under <dshHome>/skills; /evolve mount hot-mounts executable skills as live plugins.
Validation, Rollback, and Repository Hygiene¶
- Benchmark Loop: Candidate refinements are scored by an independent scorer on frozen use cases, with the rubric stored encrypted statically (
rubricKey/ env varDSH_EVOLVE_RUBRIC_KEY). On rejection,autoRollbackOnRejectdefaults totrue, generating reverse edits based on applied results for deterministic rollback without LLM re-guessing. - Consolidate:
/evolve consolidatebatches write-time conflict hints and zero-use stale global entries into a set of approvable, fully reversible archive operations.
Model Tools and Session Commands¶
Model-side tools: evolve_list, evolve_add, evolve_update, evolve_delete, evolve_rollback.
Session /evolve commands cover viewing, history, rollback, planning, wrapup, archive/demotion, consolidation, failure summaries, logs, import/export, mounting, goal-driven auto review, benchmark use case lifecycle, etc. (see usage table below).
Installation and Activation¶
Official installation methods (consistent with README and SkillHub directory):
# Install from npm (includes bundle patch, activated upon installation)
dsh plugin add dsh-continual-evolve
# Or install from GitHub source (requires approving the allowBuilds step on first run)
dsh plugin add ZK-Andy/dsh-continual-evolve
After installation or update, restart dsh web.
Auto review can be enabled in the profile as needed, for example:
- id: continual-evolve
config:
autoReview: true
reviewIntervalTurns: 6
Typical Usage¶
Session Commands¶
| Command | Effect |
|---|---|
/evolve |
Help and current local store |
/evolve list · history · rollback <id> |
View and rollback (add global to operate across sessions) |
/evolve plan [msg] |
Run LLM planner on the store |
/evolve wrapup |
Evaluate current session local entries: promote / archive / keep |
/evolve archive · unarchive · demote <id> |
Hide from injection (data retained for recovery); demote targets global noise |
/evolve consolidate [apply] |
Report or apply a batch of conflict-hint + zero-use stale global entry archiving |
/evolve failures |
Summarize gate and benchmark failure categories |
/evolve log [tail N] [session <id>] |
Plugin logs |
/evolve export · import <path> |
Backup / restore store |
/evolve mount · unmount <skillId> |
Hot-mount executable skills |
/evolve goal [objective · done · block] |
Turn-driven auto review goal |
/evolve benchmark … |
Use case lifecycle, runs, and acceptance |
Common Configuration Options¶
| Key | Default | Meaning |
|---|---|---|
autoReview |
false |
Enable automatic review gate |
reviewIntervalTurns |
6 |
Gate frequency on turn interval paths |
requireGlobalApproval |
true |
Global edits require explicit approval |
localFate |
true |
Gate audits local and proposes promote/archive |
promotionMinChars |
100 |
Entries shorter than this stay local |
promotionBlockPatterns |
POSIX paths, session IDs, ~/.dsh, etc. |
Matched content treated as project-scoped, not promoted to global |
injectionDirectoryLines |
15 |
Max lines for directory index before injection |
reviewModel |
Agent itself | Optional cheaper gate model ("provider/model") |
For the full list, see the Configuration table in the repository README.
Development Self-Testing (Maintainer Workflow)¶
pnpm install && pnpm build # Dependencies + tsc -> lib/
pnpm test # Vitest (README notes 543 tests passing)
pnpm test:coverage # V8 coverage, CI-enforced thresholds
pnpm lint # Oxlint src test
Design docs and pitfall records: docs/design.md, docs/FAQ.md; comparison with prime-agent /refine and penguin-harness is in docs/gap-analysis.md.
Use Cases and Considerations¶
Who it’s for: Teams or individuals who run similar tasks long-term on DSH and want to sediment recurring failure modes, stable facts, and reusable processes from sessions into Harness state, with versioning, auditing, reversible rollback, and benchmark gating.
Precautions before use:
- The plugin reads and writes the DSH home and project files with the current
dshprocess permissions. Before installation, read the source code and MIT license to ensure the promotion guards and global approval strategy meet your security expectations. - Global store writes require human approval by default; do not assume model tool calls will silently change cross-session behavior.
- SkillHub (directory page) is a community directory, not officially affiliated with DeepSeek or Falcon; plugin sources are based on GitHub and npm.
- First installation from GitHub requires completing the allowBuilds approval; the npm package includes a
cordis.patch.ymlbundle patch.
Conclusion¶
dsh-continual-evolve turns “what’s learned in a session” into a manageable, injectable, and rollbackable state layer in DSH: with local and global tiers, code-side guards and benchmark validation, reducing the overhead of starting from scratch in the next session. The current GitHub repo has about 14 stars, with 543 tests passing in the test suite.