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
