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_remember、evolve_recall、evolve_timeline、evolve_skill_draft、evolve_skill_promote、evolve_status、evolve_branches、evolve_rollback、memory_save、memory_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 摘要,由 digestEnabled、digestMaxRecords、digestMaxChars 三個配置項控制。

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_draft → evolve_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.ts 的 GitMemoryCore 是框架無關核心,也是可移植邊界;配置解析時磁盤上的配置文件優先於宿主提供的基礎值。
  • src/index.ts 的 GitEvolutionService 是 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、幻方無官方從屬關係。

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

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

小夜