dsh-codex-project:DSH 工作區共享子目錄插件

前言

DeepSeek Harness(DSH)的插件生態強調模塊化與安全性。在處理跨目錄項目時,開發者常面臨兩難:要麼授予模型 danger-full-access 權限,風險較高;要麼通過繁瑣的手動授權操作,效率低下。dsh-codex-project 插件源自 Codex 的項目處理思想,它允許一個工作區掛載任意數量的共享子目錄(支持跨盤符),並且全程保持 workspace-write 權限,無需升級到 danger-full-access。

核心功能

該插件主要包含以下能力:

  • 共享子目錄配置:支持跨盤符掛載,支持裸目錄(非註冊工作區)。
  • GUI 交互:提供「編輯工作區」彈窗、「項目文件夾」側邊欄 Tab、「打開本地目錄」入口。
  • 運行時安全:多根沙箱 runner 與多根 fs fence,確保子目錄讀寫在 workspace-write 邊界內。
  • 上下文管理:會話上下文提醒,在模型推理時摺疊列出共享目錄清單。
  • 管理與持久化:支持配置的 CRUD 操作,數據持久化存儲。
  • 交互工具:提供 add_dir 模型工具與 /adddir 指令,支持用戶與模型主動添加目錄。

工作原理

插件通過 Cordis(DSH 的 IoC 框架)提供的鉤子切入 DSH 運行循環,不侵入源碼。

  1. HTTP 路由橋樑:啓動時掛載 /codex-project/api 路由,client 通過 fetch 調用,host 處理配置 CRUD 與文件讀寫。
  2. 上下文注入:監聽 agent/pre-step 事件,根據當前會話命中的配置生成 <system-reminder> 消息,告知模型可寫的目錄集合。
  3. 工具註冊:註冊 add_dir 模型工具,模型可調用此工具請求添加目錄,經用戶確認後生效。
  4. 沙箱包裝:wrap sandbox.confine 方法。無共享目錄時透傳;有多根目錄時,使用 runner.js 創建受限令牌(Windows ACL + 空間級 SID),在令牌下執行子進程。
  5. FS 隔離:通過 ctx.fs 提供者(bundle patch)替換核心 fs-sandbox,在進程內通過 fs fence 按可寫根集合放行或拒絕操作。

使用方法

1. 通過 GUI 添加/移除目錄

在側邊欄的「項目文件夾」Tab 或工作區菜單的「編輯工作區」彈窗中,可以查看當前主根與共享子目錄列表。點擊「添加」或「移除」按鈕,選擇目標目錄即可完成配置。使用「設爲主要」可以改變目錄在上下文提醒中的排序和標註。

2. 通過命令行添加

在 composer 中輸入 /adddir 並回車。系統會彈出原生目錄選擇框,選中目錄後直接加入當前會話工作區的附加可寫集合。

3. 通過模型工具添加

模型在推理過程中可以通過調用 add_dir 工具請求添加目錄。此時會彈出確認框,用戶批准後,目錄被寫入 SQLite 數據庫並立即生效。

安全與注意事項

  • 權限不升級:插件全程保持 workspace-write 權限。它使用 Windows ACL 受限令牌和空間級 SID 來隔離不同根目錄的權限,拒絕列表與空間級 SID 寫授權確保不會越權訪問其他目錄。
  • 失效根處理:配置中的共享子目錄如果被物理刪除(失效),可寫集合會自動收窄(僅保留現存根)。插件不會自動清理失效記錄,但會在上下文提醒中標註 (⚠ directory missing)。
  • 根目錄衝突:同一目錄不能同時作爲兩條記錄的 path。如果會話的 cwd 落在衝突目錄,會命中配置文件中靠前的那條記錄。
  • 無只讀共享:當前版本所有根都授予讀寫權限,不支持只讀共享功能。

配置與數據

配置文件默認存儲於 SQLite 數據庫:~/.dsh-codex-project/dirs.db。環境變量 DSH_CODEX_PROJECT_CONFIG 可覆蓋該路徑。

數據表 workspaces 的邏輯模型如下:

{
  "workspaces": {
    "<workspaceId>": {
      "path": "主根(該工作區自身的路徑)",
      "dirs": ["共享子目錄1", "共享子目錄2"],
      "primary": "展示層主要根(可選)"
    }
  }
}

源碼與文檔

  • GitHub 倉庫:https://github.com/luoxunhao/dsh-codex-project
  • 社區目錄:https://www.skillhub.cn/plugins/luoxunhao/dsh-codex-project
  • 許可證:MIT
羽毛球分组比赛记分
小程序二维码

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

小夜