dsh-evolve-in-git:用 Git 仓库给 DeepSeek Harness 加长期记忆

前言

在 DeepSeek Harness(DSH)里跑智能体,一个反复出现的问题是:会话一结束,积累的经验就没了。常见的补救办法是让模型把笔记写进本地目录,但这套做法有明显的短板——文件改坏了没有历史可回溯,跨设备要自己同步,敏感信息写进去也没人拦。

dsh-evolve-in-git 的思路是换用一个成熟的基础设施:Git。它把一个 Git 仓库当作记忆存储,会话笔记、分支专属记录、可复用技能草稿都以普通文件的形式写进去,提交就是普通 Git 历史。下面按已核实的信息介绍这个插件的定位、功能、安装与用法。

这是什么

dsh-evolve-in-git 是一个 DSH 工作流插件,一句话定位:Git-backed long-term memory and evolution plugin for DeepSeek Harness。维护者是 Kytolly,当前版本 0.6.3,许可证为 MIT,代码开源在 GitHub。

插件把用户指定或预配置的 Git 仓库作为记忆存储,可写入会话笔记、分支专属记录、可复用技能草稿,并提交为普通 Git 历史。有一点需要提前说明:插件不内置任何个人仓库地址,repoUrl 的内置默认值是占位符 https://github.com/<your-github-username>/<your-memory-repo>.git,装好后需要自行配置记忆仓库。

核心功能

记忆的写入与召回

不需要背工具名,用自然语言描述意图即可触发 evolve_* / memory_* 工具。完整工具清单是:evolve_rememberevolve_recallevolve_timelineevolve_skill_draftevolve_skill_promoteevolve_statusevolve_branchesevolve_rollbackmemory_savememory_search

版本化更新与软删除

更新记忆时,新的活跃记录会带上 supersedes / supersededBy 字段,旧文件永不删除,修改历史完整留在 Git 里。删除同样克制:evolve_forget 做软删除,把记录移入 archiveRoot,让它离开召回和时间线,但仍可恢复。约束只有一条:archiveRoot 必须位于 memoryRoot 之外。

技能草稿与晋升

技能放在 skillsRoot 下,草稿在 drafts/ 目录,晋升后进入 enabled/ 才能被发现。晋升与降级都通过 git mv 完成,不是复制,因此可逆且保留历史。插件还带内置技能同步。

隐私写入门控

每次记忆写入都要过隐私门控,检测内容包括邮箱、电话、身份证、信用卡、AWS 密钥、GitHub token、私钥及 password 类密钥。privacyMode 决定检测到之后的处理方式:

  • block:拒绝写入。
  • redact:只存脱敏后的内容,绝不存明文。
  • ask:原样存储并标记 sensitivity,待复核确认。

默认值是 ask

Web 设置界面与会话摘要

v0.1.4 起,插件带浏览器端设置界面:在 web profile 的 Settings 页注册一级设置区「Settings → 演进记忆」,经 loopback-only 的 /api/evolve-git/config 路由直接读写每用户配置文件。

插件还支持会话开始注入 persona + warning 摘要,由 digestEnableddigestMaxRecordsdigestMaxChars 三个配置项控制。

Git 认证

私有仓库的认证支持两种 auth.mode

  • ssh:使用系统 ssh,可配置自定义 sshCommand
  • token:使用 token 或从 tokenEnv 读取,附带 GitHub 风格的 Authorization 头。

默认 profile 是 SSH 优先、支持 token。

安装与初始配置

安装命令(以 web profile 为例):

dsh plugin --profile web add github:Kytolly/dsh-evolve-in-git

安装后需要重启 profile,让客户端 manifest 重新扫描——这也是 Web 设置界面生效的前提。

初始配置建议按这个顺序做:

1、创建自己的记忆仓库,把 repoUrl 配置为实际地址(内置默认是占位符)。
2、按需设置 auth,私有仓库走 ssh 或 token。
3、确认各存储根目录,尤其注意 archiveRoot 必须在 memoryRoot 之外。

主要配置项与默认值如下:

配置项 默认值
repoPath ~/.dsh-evolve-in-git/remote-memory
memoryRoot .dsh-evolve/memory
skillsRoot .dsh-evolve/skills
archiveRoot .dsh-evolve/archive
defaultBranch main
remoteName origin
autoCommit true
recallTopK 10
recallMinScore 0
recallMaxChars 8000
privacyMode ask
digestEnabled true
digestMaxRecords 5
digestMaxChars 2000

经过上面的步骤,记忆仓库就可以正常读写了。

典型用法

多数场景下直接描述意图,模型会选对工具:

你说(或类似的话) 模型调用
“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_draftevolve_skill_promote
“What is the memory repo’s current state?” evolve_status / evolve_branches
“Undo the last memory commit” evolve_rollback

需要确定性控制时,改用 /evolve 显式命令:

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

架构一览

包分成两层:

  • src/core.tsGitMemoryCore 是框架无关核心,也是可移植边界;配置解析时磁盘上的配置文件优先于宿主提供的基础值。
  • src/index.tsGitEvolutionService 是 DSH 适配器,负责注册 Cordis 工具、/evolve 命令、系统提示段、技能提供者与配置路由,并把每个入口映射到 GitMemoryCore

适用场景与注意

适合的场景:长期与 DSH 协作、希望经验跨会话积累且可控复用的开发者;需要记忆历史可审计、可回滚的团队;对敏感信息写入有要求的环境。

使用前请注意:

1、插件以当前 dsh 进程的权限运行,能访问该进程能访问的文件与网络。安装前应自行检查源码与许可证(本项目为 MIT)。
2、repoUrl 默认是占位符,必须配置成你自己的记忆仓库。
3、privacyMode 默认 ask,敏感内容会原样存储并标记待复核;如果要求严格不落明文,改为 redact
4、auth.token 是 write-only 的 secret,读取回显时会脱敏。

小结

dsh-evolve-in-git 的价值在于借用 Git 的既有能力解决智能体记忆的持久化问题:历史可追溯、删除可恢复、技能晋升可逆,敏感内容有门控,且配置改动都能在 Web 设置界面里完成。相关链接:

  • GitHub 仓库:https://github.com/Kytolly/dsh-evolve-in-git
  • 社区插件目录页:https://www.skillhub.cn/plugins/Kytolly/dsh-evolve-in-git

其中社区目录为独立站点,与 DeepSeek、幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye