dsh-python-tempfile-shim:在 DSH Windows 沙箱中讓 Python 臨時目錄可用

前言

在 DSH 的 Windows sandbox 中運行 Python 時,臨時目錄相關行爲可能受到限制,pytest 的 tmp_path / tmpdir 測試也會受到影響。DSH 的插件機制允許把這類局部兼容性問題掛到已有運行路徑上處理。

dsh-python-tempfile-shim 就是這樣一個臨時插件:在 DSH 上游修復發佈前,自動爲受限 shell 命令注入 CPython tempfile shim,讓 Python 和 pytest 的臨時目錄可用。

這是什麼

dsh-python-tempfile-shim 是一個 DeepSeek Harness(DSH)臨時插件,由 AngelosZou 維護,許可證爲 MIT。

它未發佈到 npm,需要從本地 clone 安裝。這個插件的目標很集中:在 DSH Windows sandbox 中,讓 Python(包括 pytest)可以使用臨時目錄。

它不替換 Python,也不修改全局 Python 環境。它通過 DSH 插件機制在受限命令執行路徑上注入 PYTHONPATH,並隨附一個 sitecustomize.py,使 os.mkdir 忽略 mode 參數,新目錄繼承父目錄 ACL。

核心功能

  1. 臨時性插件:用於在 DSH 上游修復前規避一個 Windows 沙箱兼容性問題。
  2. 自動注入:通過補丁掛載 shell executor 的 resolve(),使所有受限命令(workspace-write / read-only)繼承 PYTHONPATH=<plugin assets dir>。
  3. 隨附 shim:assets/sitecustomize.py 使 os.mkdir 忽略 mode 參數,新目錄繼承父目錄 ACL。
  4. 覆蓋常見入口:python、pytest、pip、tox、nox、venv 和子 Python 進程自動生效。
  5. 不改變沙箱邊界:保持零提權。
  6. 平臺範圍:僅適用於 Windows;其他平臺 apply() 不註冊任何東西。
  7. 診斷入口:註冊 python-tempfile-shim skill,用於診斷和報告。

安裝與啓用

安裝前先閱讀倉庫中的 SECURITY.md,並檢查源碼與 MIT 許可證。插件以當前 dsh 進程權限運行,只安裝你信任的本地來源。

  1. 從 GitHub 克隆倉庫到本地:
git clone https://github.com/AngelosZou/dsh-python-tempfile-shim.git
  1. 使用本地倉庫路徑添加到 DSH 插件:
dsh plugin --profile web add link:<local repository path>

第二條命令中的 <local repository path> 是你上一步 clone 下來的本地倉庫路徑。

  1. 重啓 DSH,使插件生效。

卸載時,在 DSH 設置頁移除插件,然後重啓 DSH。

注意:不要把 assets/sitecustomize.py 安裝到全局 site-packages 或機器級 PYTHONPATH。0o700 是 CPython 的隱私強化,未沙箱化運行應保留該行爲。

典型用法

安裝並重啓後,正常通過 pwsh 運行 Python 或 pytest。對於使用 tmp_path / tmpdir 的 pytest 測試,無需特殊參數即可通過。

如果父 Python 進程再啓動子 Python 進程,shim 會通過繼承的 PYTHONPATH 繼續生效。

在本地倉庫中運行 smoke test:

npm test

該測試覆蓋 resolve-patch 契約、prompt-section 和 skill 註冊。

適用場景與注意

適合以下場景:

  • 在 DSH Windows sandbox 中使用 workspace-write 或 read-only 受限命令運行 Python。
  • 在 DSH 中運行 pytest,尤其是依賴 tmp_path / tmpdir 的測試。
  • 在 DSH 上游修復發佈前,臨時規避該兼容性問題。

需要注意:

  • 僅針對 Windows 的 DSH 沙箱問題。
  • danger-full-access 或未沙箱化運行不注入 shim。
  • 不要把它當作全局 Python 修復,不要安裝到全局 site-packages 或機器級 PYTHONPATH。
  • 上游修復發佈後應卸載此插件。
  • DSH 社區目錄是獨立站點,不應理解爲官方應用商店。

結尾

dsh-python-tempfile-shim 的價值在於局部和自動:它不改變沙箱邊界,保持零提權,只讓 DSH Windows sandbox 下的 Python 臨時目錄恢復可用。上游修復發佈後,移除該插件即可。

相關鏈接:

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

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

小夜