dsh-infinite-gen-3
Minglink/dsh-infinite-gen-3DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
DeepSeek Harness (DeepSeek 官方 agent 浏览器 UI) fnOS 应用 — 本地常驻服务
把 DeepSeek 官方 Agent 浏览器 UI(DeepSeek Harness / dsh)装成飞牛 fnOS 常驻应用:离线安装免联网,局域网与 FN Connect 直连,自带 28001 管理面板
下载 · 功能 · 快速开始 · 访问方式 · 管理面板 · 配置 · 贡献者致谢 · 更新日志
上游项目:deepseek-ai/deepseek-harness(DeepSeek Harness 开发者预览版,官网 )。本仓库不 fork 上游代码,只负责 fpk 打包、fnOS 生命周期脚本和少量运行时 / 构建期补丁;应用图标为 DeepSeek 官方黑色鲸鱼 logo。
从 Releases 下载对应架构的 fpk:
架构 · 文件 · 说明 x86 · dsh--iframe-x86.fpk · 推荐:fnOS 桌面窗口内打开 x86 · dsh--x86.fpk · 桌面图标在浏览器新标签页打开 ARM · dsh--iframe-arm.fpk · 推荐:fnOS 桌面窗口内打开 ARM · dsh--arm.fpk · 桌面图标在浏览器新标签页打开
版本号跟随上游@deepseek-ai/dsh发行版(目前均为-rc预览版本,如0.1.7-rc.2),本地修复不单独抬版本号。
全部为离线包(内置对应架构的 node_modules),安装时无需联网拉取 dsh;单个 fpk 约 120 MB。0.1.7 起 fpk 超过 Gitee 附件 100 MB 上限,安装包只在 GitHub Release 提供。依赖应用:安装时 fnOS 自动安装 nodejs_v24 与 bunjs(manifest install_dep_apps)。manifest 未声明最低 fnOS / 应用中心版本。ARM 版在 manylinux_2_28 容器中编译原生模块,要求系统 glibc ≥ 2.28(fnOS ARM 设备为 Debian 12 / glibc 2.36)。离线自托管
@deepseek-ai/dsh 连同 node_modules 随 fpk 内置;只有离线包缺失时才回退到在线 npm install(单线程 + 512 MB 堆,照顾 1 GB 内存的小设备)dsh 运行(run-as: package),由 cmd/main 管理 start / stop / status / restart访问与安全
cordis.patch.yml 把 dsh web 绑定到 0.0.0.0:28000(dsh CLI 本身拒绝 --host 0.0.0.0)/api/* 校验 Host / Origin,只放行回环地址 + --trusted-host 列表(启动时自动探测的本机 IP + fnos.net / 5ddd.com + trusted_hosts.conf 中的域名),其余来源 403运维
.credentials.yaml / .env 修正为 600 权限、清理占用 28000 端口的残留进程、修正被 root 误建的 .gitconfig 权限dsh_home(工作空间、会话、API Key、代理与信任域配置)Agent 运行环境
node / npm / npx / pnpm / yarn / corepack / bun(来自依赖应用,启动时自动加入 PATH;见 Agent 环境命令)官方插件兼容
@deepseek-ai/dsh-experimental-voice-input-bundle(本地 SenseVoice 转写)在 fpk 下完整可用 —— 模型下载走 proxy.conf 代理,麦克风走 FN Connect HTTPS 入口或浏览器标志位启用;实测记录与局域网方案见 语音输入插件兼容指南iframe 变体),在 fnOS 应用中心选择手动安装字段 · 说明 DeepSeek API Key · sk- 开头,写入数据区 dsh_home/.env 代理 IP / 代理端口 · 两项都填才生效,拼成 http://IP:端口 写入 proxy.conf;访问 GitHub / 外部 API 超时再填 FN Connect ID · 只填 ID(如 techysy),自动生成 .fnos.net、dsh..fnos.net 信任域;fnos.net 与 5ddd.com(飞牛两条域名后缀)已内置 自定义域名 · 用自己的域名做 DDNS 远程访问时填完整域名(不带 https://),追加到信任域
http://:28000http://:28001/ →「一键下载到 NAS」→「安装更新」(需先做一次 sudo 授权,见 管理面板)卸载前先停止 dsh 与网关代理,卸载后清理数据区的 *.log / *.pid;dsh_home 不会被卸载脚本删除,重装后数据仍在。
入口 · 地址 · 说明 fnOS 桌面图标 · 随 fnOS 访问方式自适应(走统一网关 /app/dsh) · 推荐入口:局域网、DDNS、FN Connect 下都可用,自带 fnOS 登录保护 统一网关 · https:///app/dsh/ · 与访问 fnOS 的域名/协议同源 —— DDNS / 自定义域名的正解入口,免暴露 28000、无混合内容问题 局域网 / Tailscale · http://:28000 · 直连端口;本机所有非回环 IPv4 启动时自动加入信任列表 FN Connect · https://dsh..fnos.net · 需在安装向导 / 应用设置中填写 FN ID;https://.fnos.net、https://fnos.net/ 同样被信任。飞牛 5ddd.com 后缀域名已内置信任,无需填写 自定义域名(DDNS) · https:// · 需在安装向导 / 应用设置中填写自定义域名(28000 直连信任面);走网关则无需填写 管理面板 · http://:28001/ · 与 dsh 相同的信任面
统一网关细节与打通过程见 docs/dsh-access-and-gateway.md。远程场景推荐网关入口;28000 直连入口保留。
安全机制(0.2.0-rc.2 现状,补丁均为幂等,每次启动 / 安装时自动检查):
机制 · 实现 · 说明 0.0.0.0 绑定 · cmd/main 写 dsh_home/profiles/web/cordis.patch.yml · 覆盖 webserver 的 host / port 信任围栏 · cmd/main 以单个 --trusted-host 传入全部信任值 · 该参数是 variadic,重复写 flag 只保留最后一个 桌面免 401 · cmd/main 内联补丁 dsh-client-connection 的 isAuthenticated(python3 不可用时用 node 兜底) · 结果写入 app.log;请勿把 28000 / 28001 暴露到不受信任的网络 附件权限隔离 · cmd/main 内联补丁 dsh-attachment-local 的 ensureDurableHome(issue #9) · 限制 durability 同步在 dsh_home 内部,防止越界访问 @appshare 报 EACCES 特权 API 放行 · 同上 · 上游 0.1.2 起已原生修复,补丁自动跳过 设置页 host 模式 · 构建期 cmd/patch_settings_memory.py,安装 / 升级时再补一次 · 非回环访问读写服务端配置
📖 围栏与回环限制详解:docs/dsh-loopback-restriction.md
0.1.5-rc.2 起内置独立管理面板(cmd/dashboard.js,零依赖纯 node),随 dsh 自动启动,浏览器打开 `http://:28001/`:
功能 · 说明 总览 · dsh web 进程 / 健康检查 / 运行时长、网关代理、fpk 与已装 dsh 版本、磁盘占用(数据区 + 语音模型缓存 + update 目录) 日志查看 · app.log(生命周期)/ dsh.log(dsh 输出)/ dashboard.log(面板),关键字一键过滤(error / EADDRINUSE / patch / share:)+ tail 尾部 + 5 秒自动刷新 插件管理 · 数据源合并 bundles ∪ dependencies:第三方插件与官方实验性插件(@deepseek-ai/dsh-experimental-*,如语音输入)禁用 / 启用 / 删除 / 安装(改 profiles/web/package.json 的 bundles,重启 dsh 生效);官方插件安装时自动钉到已装 dsh 版本(安装前明示确认),默认源失败回退 npmmirror,失败原因可读化;官方插件与 dsh 版本一致性检查 版本检查 · 上游版本优先取 GitHub deepseek-ai/deepseek-harness 的 Release Tag,取不到回退 npmmirror / npmjs;本项目最新 Release 优先 GitHub、Gitee 兜底;fpk 升级后首访显示更新横幅 一键重启 dsh · 经 cmd/main restart 执行,面板自身不受影响 📥 一键更新 · 从 GitHub 直链下载本机架构的 iframe 变体 fpk(实时进度条:百分比 / 速度 / 剩余时间;下载目录可选 —— fnOS ≥ 1.34.0 经开放平台 API读取应用授权目录,老系统回退默认 dsh_home/update/),再点「安装更新」经 appcenter-cli install-fpk 完成安装与重启;sudo 白名单一次配置永久生效(仅限所选目录内的 fpk),面板可探测已授权状态 出站代理 · 面板内配置 GitHub/Gitee 代理(HTTP CONNECT 隧道),与 dsh 主进程共用 proxy.conf,面板立即生效、dsh 重启后生效 界面 · UI 对齐 CreditDaddy 设计语言(视图导航 / panel+toolbar / 卡片 / 胶囊状态 / SVG 图标 / dsh 鲸鱼 logo),日 / 夜主题、中英双语
fnos.net / 5ddd.com 及其子域、trusted_hosts.conf 自定义信任域可访问,其余来源 403dashboard.log;cmd/main stop 不停面板,卸载时由 uninstall_callback 显式停止启用热更新(一次性,SSH 到 NAS 执行;面板「已下载的更新」卡片会给出跟随当前下载目录的完整命令,直接复制即可):
# 默认下载目录 (共享工作区) 的白名单示例:
echo 'dsh ALL=(root) NOPASSWD: /usr/local/bin/appcenter-cli install-fpk /vol*/@appshare/dsh/dsh_home/update/*' | sudo tee /etc/sudoers.d/dsh-hotfix
sudo chmod 440 /etc/sudoers.d/dsh-hotfix白名单是永久生效的精确路径授权:仅允许 appcenter-cli install-fpk 安装该目录内的 fpk,无法执行其他命令。授权状态面板会自动探测显示;若下载目录换到其他授权目录,按面板提示更新白名单路径即可。不授权则按钮提示失败,可改用应用中心手动安装(fpk 已下载在工作区 update/ 或所选下载目录)。
由于 fnOS 架构限制每个 fpk 安装包仅允许注册一个桌面启动图标(desktop_applaunchname),为了让用户在飞牛桌面上拥有独立的 DSH 管理面板 快捷窗口(类似 Hermes Agent),本项目提供了独立的伴生桌面窗口应用:
dsh-dashboard(桌面名称「DSH 管理面板」)platform = all,单个 fpk 支持 x86_64 与 ARM64)microApp: true)与 DDNS 远程访问,自动将路径重写与 Host 回环映射,透明代理至本机 127.0.0.1:28001dashboard-app/ 目录,由独立的 GitHub Actions 工作流(.github/workflows/build-dashboard-app.yml)按需手动打包,无需频繁与上游 dsh 同步安装主程序 dsh 后,直接在 Releases 下载 dsh-dashboard-v1.0.2.fpk 在应用中心手动安装,即可在飞牛桌面获得独立的管理面板窗口图标。
旧版本 fpk 加装管理面板
把仓库中的 cmd/dashboard.js 与最新 cmd/main 拷到 /var/apps/dsh/cmd/,重启 dsh 即可。从 Windows 拷贝时注意把 CRLF 转成 LF(否则报 $'\r': command not found)。
dsh_home/.env:DEEPSEEK_API_KEY=sk-xxx.env 权限每次启动自动修正为 600在安装向导或应用设置页填写代理 IP + 端口,写入 dsh_home/proxy.conf:
PROXY=http://127.0.0.1:7890启动时据此设置 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY 并写入 git 全局代理,dsh 的出站请求(git / npm / API)走该代理;没有 proxy.conf 或没有 PROXY= 行则不走代理。启动环境已带 HTTP_PROXY 时以环境变量为准;上游 0.1.2 起也遵循 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY。
dsh_home/trusted_hosts.conf,每行一个主机名,# 开头为注释;http(s):// 前缀和结尾 / 会被自动去掉。可在安装向导或应用设置页修改:
.fnos.net、dsh..fnos.net、fnos.net应用设置页的字段留空表示保留当前值;修改后重启应用生效。
服务 · 端口 / 路径 · 说明 dsh web · 0.0.0.0:28000 · DeepSeek Harness 浏览器 UI(TRIM_SERVICE_PORT 可覆盖) 管理面板 · 0.0.0.0:28001 · dashboard.js 网关 socket · /var/apps/dsh/target/app.sock → proxy.py · 统一网关 /app/dsh(DDNS / HTTPS 入口,见 访问方式)
数据分两处存放 —— 工作空间放共享目录(文件管理器可见、SMB 可共享、卸载不删),凭据留在数据区(不对外暴露):
位置 · 路径 · 内容 共享目录 · /vol/@appshare/dsh/dsh_home · dsh 的 HOME:profiles/web/(插件与 cordis.patch.yml)、会话 / 工作空间文件、update/(热更新下载)、.npm-global / .npm / .corepack 数据区 · /vol/@appdata/dsh · 生命周期日志(app.log / dsh.log / proxy.log / dashboard.log)、install.log / config.log、pid、dsh-web-url.txt 数据区 · /vol/@appdata/dsh/dsh_home · 凭据类:.env(API Key)、.credentials.yaml、proxy.conf、trusted_hosts.conf、迁移标记 .migrated-to-share
凭据以软链形式接入共享 HOME(dsh 仍从同一 HOME 读取),真实文件始终留在数据区。卸载行为:@appshare是config/resource声明的共享目录,fnOS 卸载时不清理——工作空间与会话得以保留;@appdata会被清理,凭据随之移除(重装后重填,符合预期)。
老版本(数据全部在 @appdata/dsh/dsh_home)首次启动会自动迁移到上述布局:逐文件校验大小,任一文件不符即整体回退旧布局并保留原数据,下次启动重试。安装后可在 dsh 的 Agent / bash 工具里直接使用以下命令(来自 fnOS 依赖应用,启动时自动加入 PATH):
命令 · 来源 · 版本验证 · 数据落点 node · nodejs_v24 依赖 · node -v · — npm / npx · nodejs_v24 · npm -v · 全局安装 → 数据区 dsh_home/.npm-global pnpm / yarn · corepack(nodejs_v24) · pnpm --version · corepack 缓存 → 数据区 dsh_home/.corepack bun · bunjs 依赖 · bun --version · — corepack · nodejs_v24 · corepack --version · —
# 一键验证全部命令
node -v && npm -v && pnpm --version && yarn --version && bun --version完整命令兼容矩阵与实测版本号见 docs/dsh-nodejs-commands.md。
deepseek-harness-fnos/
├── app/
│ ├── server/ package.json 只声明 @deepseek-ai/dsh 版本;打包时 npm install 成离线 node_modules
│ └── ui/ 桌面入口配置 config(iframe / url)与图标
├── cmd/
│ ├── main start / stop / status / restart:运行时补丁、信任域、启动 dsh + proxy + 面板
│ ├── install_* · upgrade_* 安装 / 升级:写 .env / proxy.conf / trusted_hosts.conf、settings 补丁、离线包检查
│ ├── config_* 应用设置页保存(代理 / FN ID / 自定义域名)
│ ├── uninstall_* 停止进程、清理日志与 pid
│ ├── dashboard.js 28001 管理面板
│ ├── proxy.py 统一网关代理(app.sock → 127.0.0.1:28000)
│ └── patch_settings_memory.py 设置页 memory→host 补丁
├── dashboard-app/ DSH 管理面板独立桌面窗口应用(伴生 fpk 包,platform = all 通用架构)
│ ├── app/ui/config 桌面入口配置(iframe / microApp: true / app.sock)
│ ├── cmd/main · proxy.py 生命周期脚本与网关代理(/app/dsh-dashboard → 127.0.0.1:28001)
│ └── manifest · VERSION dsh-dashboard 应用清单与版本
├── config/ privilege(run-as package)· resource(data-share 声明)
├── wizard/ install(安装向导)· config(应用设置页)
├── scripts/ 离线打包、ARM node_modules 构建、补丁注入、401 热修、Release 通知、临时测试脚本
├── docs/ 打包 / 访问 / 回环限制 / Node 环境 / 上游同步文档,forum-templates/ 论坛发帖模板
├── release-0.1.7-rc.2/ 该版本 Release 正文
├── .github/workflows/ build-fpk.yml(在线打包 + 上传 Release)· build-arm-node-modules.yml
├── manifest · VERSION fpk 清单与版本号
├── ICON.PNG · ICON_256.PNG 应用图标
├── CHANGELOG.md · test log.md 更新日志 / 各版本测试报告
└── LICENSE开发者:打包、补丁与发版
两条打包路径产出一致的 fpk(url 版 + iframe 版),详见 docs/packaging-fpk.md。