README
dsh-evolve-in-git
Git-backed long-term memory and evolution plugin for DeepSeek Harness.
Contents
- What it does
- Install
- Usage
- Architecture
- Data layout
- Config
- Harness entry points
- Browser half
- Development
- Delivery notes
- License
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/evolvecommand, the system-prompt section, the skill provider, and the config-file route, then maps every surface ontoGitMemoryCore.
| 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 agit mvbetween the two, never a copy, so it stays reversible and in history. - Archive —
<repo>/<archiveRoot>/…(same relative layout as memory);evolve_forgetmoves records here so they leave recall/timeline but stay recoverable.archiveRootmust remain outsidememoryRoot.
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.sectionslot). The form uses aSettingsScopeadapter that reads and writes the per-user config file directly through the loopback-only/api/evolve-git/configroute, so what the form shows is exactly what takes effect (defaults overlaid by the file) and saving writes the file immediately. Nestedauthis written as one merged object, and theauth.tokenfield is write-only (secret, redacted from read-back). Requires the profile to be restarted after install so the client manifest is rescanned.
更多「知識與研究」外掛
weknora
作者 tencent
開源的 LLM 知識庫平臺:把原始文件轉化為可檢索的 RAG 知識庫、自主推理智慧體和自動維護的 Wiki 系統,支援多租戶部署。
honcho
作者 plastic-labs
用於構建有狀態 AI 智慧體的記憶庫,支援跨會話連續學習與上下文工程。
webnovel-writer
作者 lingfengqaq
基於 Claude Code 的長篇網文輔助創作系統,解決 AI 寫作中的「遺忘」和「幻覺」問題,支援 200 萬字量級 連載創作。
billion-context
作者 ranxianglei
A context-compression plugin for month-long single sessions (billions of tokens) ,small context windows (a 100K context is enough) and token savings (5x fewer tokens) .上下文壓縮外掛,月級長會話會話, 兼顧小視窗(100k上下文足矣)省token(省5倍token) . billion-context is all you need
