dsh-self-evolve:爲 DeepSeek Harness 提供帶護欄的程序性記憶

前言

在 DeepSeek Harness(DSH)裏跑智能體時,同一類任務往往會在每個新會話裏重新摸索一遍:命令順序、項目約定、踩過的坑。Harness 本身會掃描技能目錄並在合適時機加載 SKILL.md,但「誰寫、怎麼改、無人值守時會不會亂改」並沒有默認答案。社區裏 jianghuife/dsh-self-evolve 做過概念驗證;維護者 Kosello 的 Kosello/dsh-self-evolve 將其移植到 DSH 0.2.1-rc.2,補上安全護欄,並把回合結束後的自動回顧半環接進插件。下面介紹它是什麼、能做什麼,以及如何安裝與配置。

這是什麼

dsh-self-evolve 是 DSH 的「記憶」類插件:讓智能體把已驗證的流程寫成 Harness 已會掃描目錄下的 SKILL.md,後續會話按技能執行,而不是反覆探索;同時提供讀寫守衛、預算與可選審批,適配無人值守的自改進循環。

  • 維護者:Kosello
  • 上游:Fork 自 jianghuife/dsh-self-evolve(MIT),保留上游版權聲明
  • 當前狀態(README):版本 0.4.0,106 項測試,針對 DSH 0.2.1-rc.2 做類型檢查;未發佈到 npm,需從 GitHub 或本地構建安裝
  • 社區目錄頁:skillhub.cn/plugins/Kosello/dsh-self-evolve(獨立站點,與 DeepSeek / 幻方無官方從屬關係)

插件在 profile 中激活爲 self-evolve 行,向模型增加 skill_manage 工具,並向人類提供 /skills 命令。

核心功能

skill_manage 與技能範圍

模型通過 skill_manage 管理程序性記憶,支持的操作包括:list、create、patch、edit、delete(歸檔,非硬刪)、write_file、remove_file、pin、unpin。

技能落在兩處:

  • 用戶級:~/.dsh/skills
  • 項目級:<project>/.dsh/skills

另有扁平的 <name>.md 技能形態。創建時可指定 scope: "user" | "project"。

讀寫與安全護欄

機制 說明
Read before write 默認開啓:技能須先用 skill 工具加載後,才能 patch、edit、delete 或 pin
Duplicate refusal create 拒絕近似重複,並提示應 patch 的已有技能名
憑證與 lint 攔截憑證形態文本;對過大正文、事故日誌形態、引用發散、破壞性 shell 慣用法給出警告
Staged approvals 可選 writeApproval:用 /skills pending 看 diff,用 approve / reject 結算

回合後回顧(Reviewer)

可選開啓:在回合結束後 fork 出獨立回顧子流程,通過 skill_manage 創建或 patch 技能,與主對話 transcript 隔離。默認配置裏 review.enabled 爲 true,但回顧會消耗 token,README 將其表述爲 opt-in 能力,可按需關閉。

觸發受計數器約束(如 turnInterval、toolCallThreshold);完整預算見 docs/configuration.md。

Jev 門控(可選)

review.gate 可爲 counters(默認)或 jev。啓用 Jev 時,可調用 TypeSafe Jev 在足夠把握時取消無意義的回顧;無法運行時退化爲 counters。門控爲 advisory,不能繞過權限、審批與寫入守衛。啓用 Jev 需環境變量 TYPESAFE_API_KEY;出站數據僅爲有界摘要(用戶消息、助手消息、工具次數、已加載技能名、回合索引),不含工具輸出。

Curator 與用量賬本

Curator 對僅由智能體 authored 的技能做機械老化:30 天 stale、90 天歸檔;pin 的技能豁免;從不硬刪。Usage ledger 記錄加載與 review-gate 決策,便於調參。

自改進循環(概覽)

turn ends ──▶ counters due? ──▶ (optional) Jev gate ──▶ fork reviewer
                                                        │
                                          skill_manage ─┴─▶ ~/.dsh/skills/<name>/SKILL.md
                                                        │
                                          next session ─┴─▶ skill catalog (progressive disclosure)

細節見倉庫 docs/review-loop.md。

環境與安裝

要求

  • DeepSeek Harness 0.2.1-rc.2(README 中的測試目標;其他 0.2.x 可能可用)
  • Node.js 22.19 或更新
  • 可選:僅在使用 Jev 門控時需要 TYPESAFE_API_KEY

從 GitHub 安裝

README 給出的命令如下(安裝後需重啓對應 profile):

dsh plugin --profile web add github:Kosello/dsh-self-evolve

本地 checkout 需先 npm ci 與 npm run build,再用 dsh plugin --profile web add "$PWD";手動接線、環境文件、驗證與卸載見 docs/installation.md。

配置

各項均可選;默認在「有用且安靜」之間取捨。在 profile 的 cordis.patch.yml 裏改 self-evolve 行的 config:

- id: self-evolve
  config:
    readBeforeWrite: true        # default
    writeApproval: false         # set true to review every write
    review:
      enabled: true              # the reviewer spends tokens; opt in
      turnInterval: 10
      toolCallThreshold: 15
      gate: jev                 # counters (default) or jev
      jev:
        model: jev-latest
        apiKeyEnv: TYPESAFE_API_KEY
        confidentNo: 0.75

完整鍵說明見 docs/configuration.md。API 密鑰不應寫入 profile YAML,只寫環境變量名。

啓用 Jev 時,README 建議用獨立 env 文件並通過 systemd 注入(示例):

install -m 600 /dev/null ~/.dsh/typesafe.env
printf 'TYPESAFE_API_KEY=%s\n' "$YOUR_KEY" >> ~/.dsh/typesafe.env
mkdir -p ~/.config/systemd/user/deepseek-harness.service.d
printf '[Service]\nEnvironmentFile=%%h/.dsh/typesafe.env\n' \
  > ~/.config/systemd/user/deepseek-harness.service.d/typesafe.conf
systemctl --user daemon-reload
systemctl --user restart deepseek-harness.service

典型用法

模型側:skill_manage

Action Purpose
list 兩個 scope 下的技能、用量與佈局
create 新建技能;scope: "user" \| "project"
patch 在 SKILL.md 內做精確文本替換(首選更新方式)
edit 整體替換 body / description
delete 歸檔
write_file / remove_file 技能目錄下的附屬文件
pin / unpin 免於 Curator 老化

人類側:/skills

/skills pending | diff <id> | approve <id|all> | reject <id|all>
/skills approval on|off
/skills review on|off|now

可復現示例見 docs/usage.md。

適用場景與注意

適合誰: 需要把「已經跑通的一整套步驟」沉澱爲 DSH 技能、並在後續會話自動遵循的開發者;希望在自改進 loop 裏仍保留 read-before-write、重複拒絕、憑證掃描和可選寫審批的團隊。

務必知曉:

  • 插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證。
  • 回顧子智能體繼承父級工具集,激活後範圍收窄爲 skill + skill_manage,但 DSH 無 per-activation 工具 過濾器,這是縱深防禦而非沙箱;審查不可信對話時建議 writeApproval: true。
  • 回顧子流程使用父會話同一模型,成本由 counters、cooldown 與會話上限約束。
  • 本插件不是通用記憶存儲:持久事實應交給 profile 裏組合的其他記憶層(例如 MCP memory server)。
  • 構建與測試目標爲 DSH 0.2.1-rc.2;插件 API 仍較新,可能變動。回顧依賴 subagent 服務與 provider(默認 fork)。

威脅模型與 outbound 說明見 docs/security.md。

結尾

dsh-self-evolve 把「智能體寫程序性記憶」收進 Harness 已有的技能掃描路徑,並用 skill_manage、可選寫審批、回合後回顧與 Jev 門控、Curator 老化把無人值守 loop 需要的護欄補齊。DSH 生態強調「一切皆插件」;若你要在 web profile 上試裝,可從目錄頁瞭解分類與簡介,並按 README 安裝與配置。

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

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

小夜