🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Nix 声明式打包 Samuka007/dsh-nix

DeepSeek Harness
Samuka00780 天前有提交已提供中文文档扫描:无法判定

用 Nix 声明式组合并构建 dsh 插件配置

33/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/Samuka007/dsh-nix.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · other
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-nix(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 16:13:29

安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 声明式组合插件配置
  • Nix原生打包

README

由 DeepSeek 最新模型翻译生成
dsh-nix 面向 DeepSeek Harness(dsh)的 Nix 原生打包: 1. pkgs.dsh —— 将 CLI 作为可复现的 Nix 包(pnpm monorepo 构建,上游固定在 47f9438)。 2. Profile 打包器 —— 在一个有序列表中,从三类插件组合出 DSH profile,采用构建时解析,而非 dsh plugin 的激活时 pnpm reconcile。 3. programs.dsh Home Manager 模块 —— 以 Thunderbird 风格的声明式插件管理:模块掌管 ~/.dsh 下的组合,应用掌管自身数据。 插件模型 profile 的 plugins 列表接受三种类型,可以任意顺序混合: | 类型 | 示例 | 解析方式 | | 内置 bundle | "@deepseek-ai/dsh-base" | 仅名称;从 dsh 安装中解析 | | pnpm spec | "github:someone/plugin" | 固定输出派生在构建时运行 pnpm add;用 specsHash 固定 | | Nix 包/路径 | pkgs.fetchFromGitHub { ... } 或 ./my-plugin | 符号链接进 profile;自带依赖闭包 |
展开完整文档(README 剩余 1 节)
dsh-nix

面向 DeepSeek Harness(dsh)的 Nix 原生打包:

1. pkgs.dsh —— 将 CLI 作为可复现的 Nix 包(pnpm monorepo 构建,上游固定在 47f9438)。
2. Profile 打包器 —— 在一个有序列表中,从三类插件组合出 DSH profile,采用构建时解析,而非 dsh plugin 的激活时 pnpm reconcile。
3. programs.dsh Home Manager 模块 —— 以 Thunderbird 风格的声明式插件管理:模块掌管 ~/.dsh 下的组合,应用掌管自身数据。

插件模型

profile 的 plugins 列表接受三种类型,可以任意顺序混合:

| 类型 | 示例 | 解析方式 |
| 内置 bundle | "@deepseek-ai/dsh-base" | 仅名称;从 dsh 安装中解析 |
| pnpm spec | "github:someone/plugin" | 固定输出派生在构建时运行 pnpm add;用 specsHash 固定 |
| Nix 包/路径 | pkgs.fetchFromGitHub { ... } 或 ./my-plugin | 符号链接进 profile;自带依赖闭包 |

层注册(哪些插件加入 dsh.profile.bundles)是一个纯构建时的 reconcile,它读取每个已解析包的 dsh.bundle.patch 声明 —— dsh plugin 的 install/resolve/reconcile 被整体替换,因此移除是声明式的,解析失败会在 nix build 时暴露。

内置 profile 会获得一个构建时启动检查:checks.profile-boot-web 和 checks.profile-boot-headless 在 Nix 沙箱内用 dsh 自身的
boot()(它会运行 assertEntriesActivated)启动组合后的 profile,并
立即销毁。一个会在运行时失败的 profile —— 缺少服务、激活失败 —— 会改为让 nix build 失败。该检查是真正的 dsh 大声失败,而非重新实现: scripts/check-profile.mjs 完全按照 dsh --profile 的方式加载 profile,并让 dsh 自身的审计来判定。checks.profile-boot-web-nobase 证明该检查能捕获一个没有 base 的 web 应用组合(8 个待处理条目)。

用法

Overlay

nixos configuration:
imports = [ inputs.dsh-nix.nixosModules.default ]; # or:
nixpkgs.overlays = [ inputs.dsh-nix.overlays.default ];

now pkgs.dsh is available everywhere:
environment.systemPackages = [ pkgs.dsh ];

当应用了 overlay 时,Home Manager 模块的 package 选项默认为 pkgs.dsh,否则回退到自包含的 callPackage 构建。

Home Manager

inputs.dsh-nix.url = "github:Samuka007/dsh-nix";
inputs.dsh-nix.inputs.nixpkgs.follows = "nixpkgs";

in your home-manager config:
imports = [ inputs.dsh-nix.homeManagerModules.dsh ];

programs.dsh = {
enable = true;
profiles.headless = {
plugins = [ "@deepseek-ai/dsh-base" "@deepseek-ai/dsh-headless" ];
};
profiles.web = {
plugins = [ "@deepseek-ai/dsh-base" "@deepseek-ai/dsh-web-app" ];
};
profiles.custom = {
plugins = [
"@deepseek-ai/dsh-base"
"github:someone/cool-plugin" # build-time resolve
];
specsHash = "sha256-..."; # 固定解析结果
userPatchesFile = ./patches.yml; # 配置文件级别的 cordis.patch.yml
};
homePatchesFile = ./home-patches.yml; # -> ~/.dsh/cordis.patch.yml
settings = { ... }; # 一次性生成 ~/.dsh/settings.yaml
};

激活会将每个不可变配置文件具体化到 ~/.dsh/profiles/(基于标记的幂等刷新)。该模块仅拥有组合层;~/.dsh 下的会话、设置和凭据仍归应用所有。

dsh --profile headless "task"
dsh --profile web # http://127.0.0.1:3080

独立使用

nix build .#packages.x86_64-linux.dsh # 命令行工具 nix build .#packages.x86_64-linux.tui-spec # 示例:规范解析的配置文件 nix eval .#profiles.tui-spec --json # 声明

该软件包还附带 dsh-acp-demo,即 ACP 自动化服务器应用(基于 stdio 的 JSON-RPC;通过 --config 提供一个叶子级 cordis.yml,例如上游的 examples/acp-agent/cordis.yml)。

验证

nix flake check # 产物形态 + 模块断言 ./scripts/profile-smoke.sh # 使用打包的 dsh 启动 tui 配置文件,断言 activate/dispose 生命周期 ./scripts/hm-e2e.sh # 模块求值 -> 激活 -> 启动

真实的 agent 运行需要凭据(DEEPSEEK_API_KEY,或在 Web UI 中配置模型以便填充 ~/.dsh/.credentials.yaml)。

说明

- Home Manager 模块的默认 package 会基于你的 nixpkgs 构建 pkgs/dsh.nix,而你的 nixpkgs 必须提供 fetchPnpmDeps 和 pnpmConfigHook。
- 规范字符串插件仅在其 specsHash 更新时才会改变其解析后的内容——这是刻意为之的锁文件式流程。
- 上游 dsh 不附带 TUI 界面(仅有 web 和 headless 配置文件);第三方 TUI 包将作为单个插件条目接入。

许可证

MIT
预览分享卡片长什么样 ↓Samuka007/dsh-nix
分享 · DeepSeek Harness Hub
Samuka007/dsh-nix

用 Nix 声明式组合并构建 dsh 插件配置

这是你的仓库?认领条目

回到顶部