Skip to content

Releases: chenzheshushi-commits/dsh-evolve

v0.4.2 — controlled-prune human UI, soft-delete, heat ordering

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 24 Aug 14:34

Highlights:

  • Soft-delete (reversible). Forgotten memories get a forgottenAt tombstone and disappear from recall / injection / crystallization, but stay in the store until you restore them.
  • pinned — three-tier protection. Pin a memory and it is locked from every code path: never enters prune candidates, never overwritten by near-duplicate reinforcement, never deleted without an explicit confirm=true. The protection lives in the data layer, so it holds regardless of whether the delete came from the panel, a tool call, or a future code path.
  • Heat is a read-only ordering signal. Each memory gets a power-law coldness score. Time basis is accessedAt || createdAt — never updatedAt. Heat only orders prune candidates; it never archives anything automatically.
  • Two-stage panel: preview → execute. Stage 1 builds an in-memory plan and returns a planDigest. Stage 2 consumes it. The plan registry uses atomic claim (synchronous consumed-flag flip before the applyPlan await) so double-click / retry / resend cannot re-execute.
  • Per-target ETag staleness check. If something mutates a target between preview and execute, that target is skipped (not-found / stale) with a reason; the rest of the plan still applies.
  • JSONL audit, fail-open + amortized ring-trim. Every run is appended to a JSONL sidecar (500-row cap). The audit write is fail-open — a disk error warns, never blocks the prune.

A2 layout: approval queue (existing) at top, then the new controlled-prune block, then overview. Pinned rows render their checkbox disabled.

Tool count stays at 22. Web routes now 5 (added /prune, /prune/preview, /prune/execute). The auto-physical-eviction path is retired; capacity governance is now "detect automatically, dispose explicitly" — over-budget emits a warn and surfaces trim candidates for you to act on.

Excluded by design: local vector models, semantic search, knowledge graphs (too heavy for an optimization, not a rewrite).

v0.4.1 — memory convergence + reinforcement

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

0.4.0 built the skill half of convergence and left memory unguarded, and it recorded understanding without ever strengthening it. This closes both gaps.

Reinforcement — the part that makes it learn: re-observing the same understanding raises its observation count and, past a threshold, its importance. The higher-quality phrasing is kept, so a vaguer restatement cannot degrade a good one. Confidence is surfaced so established knowledge outweighs a one-off remark.

Memory convergence: a hard character budget that never silently drops (over-budget hands back trim candidates for a human to decide on), a gate against reworded near-duplicates and thin writes, and promotion of well-reinforced project memory to global scope.

Also: merge candidates now weigh the zero-load signal — never-loaded duplicates rank first — and evolve_maintain aggregates every read-only check into one report for an external cron.

Tools 19 → 22.

Install

dsh plugin --profile web add github:chenzheshushi-commits/dsh-evolve

Or pin this release:

dsh plugin --profile web add "https://github.com/chenzheshushi-commits/dsh-evolve/releases/download/v0.4.1/dsh-evolve-0.4.1.tgz"

Requires Node >= 22.5 (for the built-in node:sqlite used by FTS5).

v0.4.0 — the evolution loop, closed

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

Ties the pieces into a loop: an auto-grown user profile from confirmed preferences, per-skill style overlays that adapt output without ever rewriting the underlying SKILL.md (so clearing one restores vanilla), per-turn snapshot collection throttled by turn index rather than a timer, convergence suggestions on turn end, and overlays injected on skill load.

Also polishes retrieval: filler-word filtering, RRF surfacing single-list hits, quiet degradation when SQLite is missing.

Tools 14 → 19.

v0.3.1 — naming as a mechanism, tiered gate, background review, convergence

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

Naming: crystallized skills get readable semantic names and descriptions that say what they actually do (this is what deferred loading matches on), with chain-of-thought stripped. findSkillByTag locates a skill through its state block, so renaming no longer breaks lookup.

Tiered approval gate: not every model write needs a human. A deterministic gate auto-confirms only reversible, user-anchored, non-conflicting writes — and deliberately ignores the model-supplied kind, since a self-reported label must not grant its own exemption.

Background review: after a turn (throttled), an isolated LLM pass replays the conversation snapshot and proposes what to remember. It carries no tools and never touches the main prompt cache, so side effects are structurally impossible.

Skill convergence: detect near-duplicate and refinement-bloated skills; merge into umbrella skills or fold refinements back into clean prose. Detection is free; mutations are opt-in.

v0.3.0 — always-on memory, optional LLM refinement, web settings

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

Tier-1 snapshot: durable user preferences/facts inject at turn start (deduped, char-budgeted) so they apply immediately instead of waiting for a recall hit.

Optional LLM refinement: one auxiliary call distills raw memories into a structured skill (summary/steps/pitfalls). Off-switchable, follows the main model unless overridden, falls back to deterministic assembly on failure.

Safety: tar.gz backup before every archive/refine, plus skill_rollback to undo one.

Also: batch confirm for pending memories, zero-token outcome triage, and a web settings page (refine toggle + model picker, approval queue, stats) behind a same-origin loopback fence.

Tools 12 → 14.

v0.2.1 — refine in place

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

refine_skill improves an existing skill in place — versioned, hand edits preserved — instead of spawning a near-duplicate. Adds a registration probe to the test suite and observability surfaces for memory/skill stats.

v0.2.0 — hybrid recall + skill lifecycle

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

Recall: SQLite FTS5 BM25 fused with bigram-Jaccard through Reciprocal Rank Fusion; CJK tokenization made precise so 苹果 stops matching 水果. Falls back to pure bigram when FTS5 is unavailable.

Skills: a real active → stale → archived lifecycle with reversible archive — nothing is ever deleted.

v0.1.0 — first working plugin

Choose a tag to compare

@chenzheshushi-commits chenzheshushi-commits released this 23 Aug 01:51

Cross-session structured memory with deterministic zero-token recall (bigram-Jaccard), a human-approval gate, and skill crystallization into SKILL.md. JSON as the source of truth with a Markdown mirror and git checkpoints.

7 tools.