Back to directory

dsh-evolve-in-git

In a curated listMaintenance: Active

kytolly/dsh-evolve-in-git

A deepseek-harness plugin, making your agent evolve in customed git repository.

View on GitHub
$ dsh plugin add dsh-evolve-in-git

Install

dsh has no central install command — add this plugin’s entry (documented in its README) to your profile or patch config, then restart.

How installs work

82

stars

0

forks

TypeScript

Language

MIT

License

2026-08-21

Created

2026-09-01

Last push

README

dsh-evolve-in-git

DeepSeek Harness plugin version 0.6.3 license MIT

English · 中文

Git-backed long-term memory and evolution plugin for DeepSeek Harness.

Contents

What it does

This plugin treats a user-chosen or preconfigured Git repository as the memory store. It can write session notes, branch-specific records, and reusable skill drafts into that repo, then commit them as ordinary Git history.

Install

# example: install into the web profile
 dsh plugin --profile web add github:Kytolly/dsh-evolve-in-git

The bundle inserts one dsh-evolve-in-git row with the plugin defaults. Later profile patches can override repoPath, repoUrl, auth, and the storage roots.

Usage

Natural language

You do not need to remember tool names — describe the outcome and the model selects the right evolve_* / memory_* tool:

You say (or similar) The model uses
"Remember: whenever X happens, do Y" evolve_remember / memory_save
"Any memory about the deploy flow?" evolve_recall / memory_search
"Read my recent memory history" evolve_timeline
"Turn this warning into a reusable skill" evolve_skill_draft → evolve_skill_promote
"What is the memory repo's current state?" evolve_status / evolve_branches
"Undo the last memory commit" evolve_rollback

Commands (/evolve)

For explicit, deterministic control, type /evolve <subcommand>:

/evolve remember warning "pitfall" :: <content>
/evolve search deploy
/evolve skill list
/evolve skill promote evolve-process
/evolve status
/evolve help

The full command reference is under Harness entry points.

Architecture

The package is split into a framework-free core and a thin DSH adapter:

  • src/core.ts (GitMemoryCore) is the portability boundary. It depends only on Node built-ins and sibling core modules — never on @deepseek-ai/* — and resolves config from the on-disk file over the host-provided base.
  • src/index.ts (GitEvolutionService) is the adapter: it registers Cordis tools, the /evolve command, the system-prompt section, the skill provider, and the config-file route, then maps every surface onto GitMemoryCore.
Module Responsibility
src/git.ts Spawns git: clone/open, status, branch ops, push/fetch, commit, git mv, conflicts, rollback.
src/memory.ts + src/memory-index.ts Markdown+YAML-frontmatter scanning, a metadata index cache (HEAD + mtime signature), budgeted recall, timeline.
src/update.ts Versioned update: a new active record plus supersedes/supersededBy; the old file is never deleted.
src/forget.ts Soft-delete (move to archiveRoot) and restore.
src/privacy.ts Sensitive-content detection, sensitivity classification, redaction, export filtering.
src/skill.ts drafts/ ↔ enabled/ skill discovery; promote/demote via git mv; bundled-skill sync.
src/strategy.ts Slug/sanitize, draft generation from a memory, evolution suggestion, preview.
src/harness.ts /evolve command normalization/parsing plus help/usage/safety text.
src/config.ts + src/defaults.ts Config-file read/write/merge and the plugin defaults.
src/invariant.ts No-op invariant companion (the source of truth is the configured Git repo).
src/loopback.ts + src/config-route.ts Loopback-only /api/evolve-git/config route for the config-file editor.
src/client/ Browser settings section (evolve-git slot) and config-file editor.

Data layout

  • Memory — <repo>/<memoryRoot>/<kind>/<timestamp>-<slug>-<id>.md, one Markdown file per record with YAML frontmatter (kind, title, branch, source, tags, createdAt, id, updatedAt, status, supersedes, supersededBy, expiresAt, sensitivity) followed by the body.
  • Skills — <repo>/<skillsRoot>/drafts/<name>/SKILL.md (promotable) and <repo>/<skillsRoot>/enabled/<name>/SKILL.md (discoverable). Promotion is a git mv between the two, never a copy, so it stays reversible and in history.
  • Archive — <repo>/<archiveRoot>/… (same relative layout as memory); evolve_forget moves records here so they leave recall/timeline but stay recoverable. archiveRoot must remain outside memoryRoot.

Config

Web settings UI (v0.1.4+). The plugin ships a browser half that registers a first-level Settings → 演进记忆 section on the web profile's Settings page (via the settings.section slot). The form uses a SettingsScope adapter that reads and writes the per-user config file directly through the loopback-only /api/evolve-git/config route, so what the form shows is exactly what takes effect (defaults overlaid by the file) and saving writes the file immediately. Nested auth is written as one merged object, and the auth.token field is write-only (secret, redacted from read-back). Requires the profile to be restarted after install so the client manifest is rescanned.

Read the full README on GitHub →

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.