前言¶
在 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、幻方無官方從屬關係。