Kytolly/dsh-evolve-in-git
A deepseek-harness plugin, making your agent evolve in customed git repository.
项目介绍Project Overview
dsh-evolve-in-git 是 DeepSeek Harness 的 Git 记忆插件,把本地或远程 Git 仓库作为长期记忆库,自动写入会话笔记、分支记录和技能草稿并以普通 Git 历史提交。适用于需要跨会话持久化助手记忆并通过 Git 审计、回滚或共享的场景。需注意:必须为 repoUrl 配置自己的仓库,配置文件中不应直接存放令牌,技能提升与冲突解决尚待后续版本。
dsh-evolve-in-git is a DeepSeek Harness plugin that uses a Git repository as long-term memory, committing session notes, branch records, and skill drafts as ordinary Git history. Use it when you need persistent, auditable, shareable memory across sessions. Note that you must supply your own repoUrl, never store tokens directly in the config file, and skill promotion plus merge/conflict handling are still slated for later releases.
请帮我了解并安装插件:【dsh-evolve-in-git】【https://github.com/Kytolly/dsh-evolve-in-git】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:Kytolly/dsh-evolve-in-git
把 Kytolly/dsh-evolve-in-git 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-evolve-in-git
Git-backed long-term memory and evolution plugin for DeepSeek Harness.
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.
Windows local install. A
file:source containing spaces (D:\Deepseek Harness\…) is split by the CLI argument parser, so use a space-less path (a junction or short path):dsh plugin --profile web add file:C:/Users/13928/.dsh/evolve-in-gitThe built
lib/(including the browserlib/client.js) is committed, so thegithub:route works as-is. Rebuild locally withpnpm buildafter source changes, then commit the artifacts.
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. The section binds the
evolve-gitsettings namespace and edits every field below through the official settings transport (nestedauthis written as one merged object); theauth.tokenfield is write-only (redacted from the wire). Requires the profile to be restarted after install so the client manifest is rescanned.
repoPath- the local Git checkout that stores memory and skills. Defaults to~/.dsh-evolve-in-git/remote-memory.repoUrl- the remote memory repository. No personal default ships with the plugin: the built-in default is the placeholderhttps://github.com/<your-github-username>/<your-memory-repo>.git, so configure your own repository (see "Per-user config file" below).auth- Git auth settings for private access. The default profile is SSH-first and token-capable.memoryRoot- where memory records are written, default.dsh-evolve/memory.skillsRoot- where skill drafts are written, default.dsh-evolve/skills.defaultBranch- branch to evolve from when creating new branches, defaultmain.remoteName- remote to fetch and push, defaultorigin.autoCommit- whether writes auto-commit, defaulttrue.
Auth
auth.mode: "ssh"- usesshor a customsshCommand.auth.mode: "token"- usetokenor a token fromtokenEnvand a GitHub-styleAuthorizationheader.
Per-user config file
Each DSH user keeps one local config file at $DSH_HOME/evolve-in-git.json
(~/.dsh/evolve-in-git.json by default). It is user-local and never part of any
Git repository — do not commit it. The file is the single user configuration
layer: the web Settings → 演进记忆 form reads and writes exactly this file
(showing the defaults overlaid by your file values, and saving writes the file
immediately), and the /evolve config show|open|refresh|set <key> <value>
commands edit it too. The embedded config-file editor opens the raw JSON.
Example:
{
"repoPath": "/absolute/path/to/your/local-memory-checkout",
"repoUrl": "https://github.com/<your-github-username>/<your-memory-repo>.git"
}
Never put access tokens in this file — use
auth.tokenEnvto name an environment variable, or the web settings token field (write-only).
The web Settings → 演进记忆 section also embeds a config-file editor that
opens this file directly, edits it as raw JSON, and saves it through the
loopback-only /api/evolve-git/config route (saves apply immediately).
Harness entry points (v0.1.3)
The plugin targets the current Harness 0.1.1-rc.2 host contracts for commands,
tools, system prompt, and invariants (peerDependencies are ^0.1.1-rc.2). Install it
into a profile, then restart that profile so the bundle layer is composed.
Tools:
evolve_connectevolve_statusevolve_rememberevolve_branchesevolve_help
Human command:
/evolve connect/evolve status/evolve branches/evolve remember <kind> <title> :: <content>/evolve help
After installation, verify composition before starting a long-lived profile:
dsh --profile web --dump-config
dsh --profile web
The first command should show the evolve-git row from the plugin bundle. The
second command boots the profile; once loaded, the model sees the five
evolve_* tools and the UI command registry exposes /evolve.
Browser half (v0.1.4+)
src/client/- the browser bundle (lib/client.js) compiled bytsc -p tsconfig.client.json && tsdown(seetsdown.config.ts); registered as asettings.sectionslot so the web Settings page renders the config form.package.json-exports["./client"]+dsh.client(platform: "web") are the manifest contractdsh-client-modulesscans to include the bundle inwindow.__DSH_BOOT__.
Current slice
v0.1.4 makes the plugin directly usable from Harness and adds the web
settings UI.
It adds the first tool and command surfaces, but still leaves skill-promotion strategy, safe rollback, sync reminders, and timeline views for later versions.
Limits
- No automatic prompt injection yet.
- No merge/conflict resolver yet.
- No sync to the DSH skill registry yet.
- No branch switch, diff, or revert command surface yet.
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase