前言¶
在 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。
核心功能¶
- 臨時性插件:用於在 DSH 上游修復前規避一個 Windows 沙箱兼容性問題。
- 自動注入:通過補丁掛載 shell executor 的
resolve(),使所有受限命令(workspace-write/read-only)繼承PYTHONPATH=<plugin assets dir>。 - 隨附 shim:
assets/sitecustomize.py使os.mkdir忽略 mode 參數,新目錄繼承父目錄 ACL。 - 覆蓋常見入口:
python、pytest、pip、tox、nox、venv 和子 Python 進程自動生效。 - 不改變沙箱邊界:保持零提權。
- 平臺範圍:僅適用於 Windows;其他平臺
apply()不註冊任何東西。 - 診斷入口:註冊
python-tempfile-shimskill,用於診斷和報告。
安裝與啓用¶
安裝前先閱讀倉庫中的 SECURITY.md,並檢查源碼與 MIT 許可證。插件以當前 dsh 進程權限運行,只安裝你信任的本地來源。
- 從 GitHub 克隆倉庫到本地:
git clone https://github.com/AngelosZou/dsh-python-tempfile-shim.git
- 使用本地倉庫路徑添加到 DSH 插件:
dsh plugin --profile web add link:<local repository path>
第二條命令中的 <local repository path> 是你上一步 clone 下來的本地倉庫路徑。
- 重啓 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 臨時目錄恢復可用。上游修復發佈後,移除該插件即可。
相關鏈接:
- GitHub: https://github.com/AngelosZou/dsh-python-tempfile-shim
- 社區目錄頁:已覈實資料未提供具體 URL,這裏不列出。