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. 覆盖常见入口:pythonpytestpiptoxnox、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 或机器级 PYTHONPATH0o700 是 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-writeread-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 临时目录恢复可用。上游修复发布后,移除该插件即可。

相关链接:

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

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

Xiaoye