dsh-pet-ledger:用 DSH 真實會話事件驅動的寵物賬本

前言

在 DeepSeek Harness(DSH)裏做智能體開發,終端命令、測試、提交推送會反覆出現。不少「寵物 / 成就」類擴展靠插件內部計數器升級:開面板、點一下、過一天,數字就會漲,和當天實際寫了什麼代碼、跑了什麼命令對不上,也沒法事後覈對。

dsh-pet-ledger(維護者 dingchenhui0618-arch)把成就來源限定在 DSH 真實事件總線 上:只認工具調用結果、Agent 運行時長、會話結束原因等宿主發出的事件。客戶端只渲染 host 摺疊出來的快照,不計算、不授予、不遞增任何成就。演示卡片帶「演示」水印,不會混入真實賬本。項目在 SkillHub 社區目錄的分類爲「趣味換裝」,當前 GitHub 星標爲 0;許可證 MIT,版本 0.1.0。

下面介紹它解決什麼問題、四類成就如何判定、怎麼安裝與配置,以及使用時需要注意的邊界。

這是什麼

一句話:dsh-pet-ledger 是一隻「只認真實會話事件」的寵物賬本——連續失敗、長任務完成、測試由紅轉綠、提交併推送成功,每條成就都能展開查看當時的會話 id、工作目錄與工具調用證據;演示樣張僅內存存在且帶水印。

插件是 host + client 雙半結構,零運行時依賴。靈感方向來自社區項目 dsh-whale-musume,但 README 明確說明未克隆或複製其代碼,按 DSH 事件契約獨立實現。

與普通成就插件的差異

維度 常見內部計數器式插件 dsh-pet-ledger
成就來源 簽到、打開面板、運行天數等 僅四類系列、共 12 個等級,全部來自真實事件
可覈對性 多爲展示數字 每條成就可展開會話與工具調用證據鏈
演示數據 往往與真實數據混在同一計數 獨立演示數組,橙色虛線邊框與「演示」水印,不計數、不落盤
今日任務 固定或預設清單 按當天有效使用與實際命令類型生成,生成後凍結 baseline

沒有「登錄成就」「打開面板成就」,也沒有手動點亮接口。

監聽哪些事件

成就判定在 host 端完成,訂閱的事件包括:

事件 作用
tools/pre-execute 記錄即將發生的工具調用,始終繼續 next(),不攔截工作
tools/result 調用結束:成功、失敗、非零退出碼、耗時、結果摘要
agent/status Agent 從 running 到 idle,作爲長任務時長的起止
session/event turn/end 與結束原因;長任務成就要求正常完成,而非中斷/取消
session/created 會話 cwd,寫入證據中的會話位置
agent/disposed 會話回收時清運行時狀態,避免舊 streak 串到新會話

失敗判定不只看 result.isError:非零退出碼(exitCode / exit_code / code)或輸出中的 [exit code: N] 也算真實失敗,避免終端工具把失敗靜默漏掉。

四類成就

只有以下四個系列,不是這四類事件產生的記錄不會進入成就牆。

系列 門檻 判定依據
工具連續失敗 3 / 6 / 10 次 同一會話內連續 tools/result 失敗;成功一次清零
長任務完成 1 / 3 / 10 次 agent/status 從 running 到 idle 時長 ≥ 閾值(默認 90 秒),且 turn/end 爲正常完成
測試由紅轉綠 1 / 3 / 8 次 同一會話內先失敗再成功的測試命令;跨會話不算
提交併推送成功 1 / 5 / 15 次 同一會話內 git commit 成功後 git push 成功;commit 失敗清標記,push 失敗保留 commit 以便重試

點開成就卡可展開:會話 id、cwd、每次工具調用的時間、工具名、命令行或路徑、結果摘要、耗時、成敗;長任務還會顯示持續時長與結束原因。證據在 host 端生成並持久化,前端只負責展開/收起。每條證據最多保留 8 行(MAX_EVIDENCE),超出保留最近關鍵行。

今日任務與演示樣張

當天第一次滿足「至少 60 秒有效使用或 3 次工具調用」時生成一次任務並凍結進度:

  1. 專注任務:目標由當日有效使用推算,相鄰事件間隔超過 5 分鐘按離開處理,掛機不計入。
  2. 命令任務:從當天真實跑過的命令類型裏取前兩種(測試、提交、推送、構建等),目標爲 clamp(ceil(實際次數 / 2), 1, 5)。
  3. 生成時記錄 baseline;之後進度相對 baseline 計算,目標不會隨當天使用量漂移。
  4. 活動不足時顯示 pending 原因,不憑空給任務。

命令分類在 src/commands.js 中啓發式完成,例如 pytest 算測試、gh repo create ... --push 算推送。

面板底部「演示樣張」可生成 4 張演示卡,帶「演示」水印,只存在 host 內存,不寫入 pet-ledger.json;DSH 或插件重啓後消失。點「清除演示」立即移除。

安裝與啓用

要求 DSH 版本 >=0.2.1-rc.2 <0.3.0。從 GitHub 安裝時使用 README 中的命令(將 <你的 profile> 換成實際 profile 名):

dsh plugin --profile <你的 profile> add github:dingchenhui0618-arch/dsh-pet-ledger

本機源碼開發可改用 file: 路徑指向倉庫目錄。裝好後重啓 DSH,在對話視圖 Tab 欄會出現「寵物賬本」。桌面端也可在插件市場/插件頁安裝,profile 由應用管理。

配置

在 profile 的 cordis.patch.yml 裏爲 dsh-pet-ledger 增加 config,例如:

- id: dsh-pet-ledger
  name: dsh-pet-ledger
  config:
    longTaskMs: 90000     # 長任務閾值,默認 90 秒
    idleGapMs: 300000     # 超過 5 分鐘算離開,不計有效使用
    timeZone: Asia/Shanghai
    minActiveMs: 60000    # 生成今日任務所需的最少有效使用
    minToolCalls: 3       # 或至少這麼多次工具調用
    dataPath: D:\somewhere\pet-ledger.json   # 默認 $DSH_HOME/pet-ledger.json
    enabled: true

enabled: false 時仍加載插件,但不記錄、不落盤;面板可顯示已有賬本,但不會繼續增長。

HTTP 接口與數據

路由前綴爲 /dsh-pet-ledger:

  • GET /dsh-pet-ledger/state:當前快照(成就、證據、今日統計、任務、演示、數據文件路徑)。
  • POST /dsh-pet-ledger/demo:生成演示卡(僅內存)。
  • POST /dsh-pet-ledger/demo-clear:清除演示卡。

請求體上限 64 KiB;無鑑權,與 DSH Web 面板同源;只讀寫本機賬本,不發外網請求。

賬本默認寫到 $DSH_HOME/pet-ledger.json,僅本機;無遙測、無上傳。不讀取會話正文,只取 session.header.cwd 與會話 id;證據裏的命令來自工具參數與結果摘要。保存採用臨時文件 + rename;損壞的 JSON 會回退爲空賬本並記錄 unreadable ledger。

面板數字來自 host 快照,輪詢間隔約 1.5 秒,不是 WebSocket 實時推送。

適用場景與注意

適合希望在 DSH 日常開發裏保留「可覈對」趣味反饋、又不想讓成就與真實工作脫節的開發者。若宿主未發出 agent/status 的 running/idle,則不會有長任務成就;自定義測試命令若不在 commands.js 的測試正則裏,可能無法識別「紅轉綠」。連續失敗 streak 按會話隔離。

DSH 社區目錄(SkillHub)是獨立站點,與 DeepSeek / 幻方無官方從屬關係。插件以當前 DSH 進程權限運行,安裝前建議閱讀倉庫源碼、SECURITY.md 與 MIT 許可證。

結尾

dsh-pet-ledger 用事件總線把成就釘在真實工具調用與會話生命週期上,並用證據鏈與演示水印區分「真賬本」和「預覽樣式」。更多信息見社區目錄頁與 GitHub 倉庫:

  • 目錄頁:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-pet-ledger
  • GitHub:https://github.com/dingchenhui0618-arch/dsh-pet-ledger
羽毛球分组比赛记分
小程序二维码

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

小夜