前言¶
在 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,这里不列出。