为 DeepSeek Harness 安装 nix-dev-shell 插件
输入:含 flake.nix 的代码仓库 → 处理:安装插件并重启 DSH → 输出:bash 命令自动运行在 Nix devShell 环境
- 给谁
- 使用 DeepSeek Harness 且项目采用 Nix flake 管理开发环境的开发者
- 你会得到
- Harness 的 bash 命令自动进入对应目录的 Nix devShell,无需手动 nix develop
- 你需要
- DeepSeek
硬约束
前置条件:已安装 DeepSeek Harness 与 Nix,工作区包含有效的 flake.nix。安装插件后必须重启 DSH 进程。默认 env 模式无 per-command 开销;wrap 模式语义更完整但每条命令多 0.3–1s。沙箱内自动处理 NIX_CACHE_HOME 以避免只读 ~/.cache 导致 nix 失败。
他们做了什么
作者 running-grass 为 DeepSeek Harness 编写并发布了一个 Host 插件 dsh-nix-dev-shell。该插件通过修饰 ctx.shell 实例的 execute 方法,在命令执行前自动查找工作目录或其祖先目录中的 flake.nix,并将对应 devShell 的环境注入到 spawned 进程中。
效果如何
作者报告:默认 env 模式一次性捕获环境后复用,无 per-command nix 启动开销;wrap 模式语义与手工 nix develop 一致但每条命令多约 0.3–1s。冷缓存(全新临时目录)下 nix develop --command true 约 540ms,热缓存(工作区内持久目录)约 125ms。251 步、9.5 小时的会话只产生 2 条 system/message。(author_report,未实测)
值得知道
安全边界:祖先查找意味着 $HOME 或任意上层目录的 flake.nix 会作用于子树下的每条 bash 命令;首次执行即运行 shellHook,请只在可信仓库启用。捕获 helper 沿用调用方沙箱策略,不额外提权。已知限制:仅覆盖 ctx.shell(bash 工具、子代理、hooks、后台任务),PTY 终端子系统与 tmux 会话不在范围内;env 模式不传递函数、别名、set -x 等交互状态;与替换执行器的插件不兼容。插件自动注入 NIX_CACHE_HOME 解决 workspace-write 沙箱下 ~/.cache 只读问题,但 danger-full-access 下不注入。宿主 SHELL 被保留,插件始终显式调用 bash。
步骤
安装 nix-dev-shell 插件
在终端执行安装命令,将插件添加到 DSH 的 web profile。
运行提示词 · 来源原文。终端执行安装插件
dsh plugin --profile web add github:running-grass/dsh-nix-dev-shell
重启 DSH 进程
Host 插件为 JS 模块,安装或更新后必须重启 DSH 进程才能加载新代码。
验证 Nix devShell 已生效
在含 flake.nix 的目录或其子目录执行命令,确认环境变量与工具路径来自 Nix store;在不包含 flake.nix 的目录(如 $HOME)执行命令,确认保持原生环境。
运行提示词 · 来源原文。验证 devShell 状态,预期输出 impure
echo $IN_NIX_SHELL
运行提示词 · 来源原文。验证工具来自 /nix/store/…(宿主机上不应存在)
command -v ocaml dune
运行提示词 · 来源原文。验证沙箱可写的 nix 缓存目录已注入
echo $NIX_CACHE_HOME
可复制提示词
参考提示词 · 本站建议版本。使用前确认粘贴位置、输入变量及输出格式。
这一段是提示词,页面不会在这里插入广告。
无提示词,按步骤操作即可。
按安装命令、重启、验证三步执行;无需额外提示词。
来源
安装 nix-dev-shell,让 DSH 在 nix shell 里跑命令 · running-grass · GitHub · 2026-10-31T09:07:36Z
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。