DeepSeekHarness-NAS
agent
Basarisiz
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 13 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in .github/actions/ci-clean/action.yml
- rm -rf — Recursive force deletion command in build/FPK/pack-fpk.sh
- rm -rf — Recursive force deletion command in build/SPK/pack-spk.sh
- rm -rf — Recursive force deletion command in build/build-common.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
DeepSeek Harness (DSH) —— DeepSeek AI 开源的 Agent 智能体框架,群晖 Synology DSM / 飞牛 fnOS NAS 原生打包(SPK/FPK),无需 Docker,开箱即用。Web UI 管理、多模型、内置反向代理与局域网安全限制。
README.md
DeepSeekHarness-NAS
DeepSeek Harness(dsh)的 NAS 适配包:群晖 DSM .spk / 飞牛 fnOS .fpk,在 NAS 原生运行,无需容器。
功能
| 功能 | 做什么 | 入口 |
|---|---|---|
| 套件安装 | 群晖装 spk、飞牛装 fpk,装完即用 | 套件中心 / install-remote-spk.sh |
| Web UI | 多模型配置、自定义 OpenAI 兼容端点 | http://<NAS-IP>:30800(spk)/ :3080(fpk) |
| 反向代理 | 反代端口对外,dsh 原生端口仅本机 | http://<NAS-IP>:<反代端口> |
| 门户免密 | 套件图标打开带 token,认证后免密 | DSM/fnOS 桌面图标 |
| 局域网限制 | 公网 IP 一律 403 提示页 | 内置,无需配置 |
命令行 dsh / pnpm |
装完 SSH 直接敲,无需进套件目录 | /usr/bin/dsh、/usr/bin/pnpm |
| 网页安装工具 | 远程探测系统并装/卸/检/修,带历史 | http://<NAS-IP>:8765 |
| 自动构建发布 | 官方更新自动对齐构建,发 Release 双产物 | GitHub Actions |
| 架构参数化 | 同一脚本出 x86_64 / arm64 包 | build/build-config.yaml 的 defaults.arch |
访问地址与端口
| 平台 | 反代端口(唯一入口) | dsh 原生端口(仅本机) | 容器页端口 |
|---|---|---|---|
| 群晖 DSM(spk) | 30800 | 30801 | 30802 |
| 飞牛 fnOS(fpk) | 3080 | 3081 | 3082 |
权威值在 build/build-config.yaml 的 defaults / spk / fpk 三段;改端口只改这里。
http://<NAS-IP>:30800 # 群晖入口(<NAS-IP> 用 `hostname -I` 取主网卡局域网地址)
http://<NAS-IP>:3080 # 飞牛入口;容器页:群晖 30802 / 飞牛 3082
./start.sh --proxy-port 31800 --dsh-port 31801 --container-port 31802 start # 运行时改端口(写入 <数据目录>/<版本>/ports,跨升级保留)
安装与卸载
- 群晖:套件中心 → 手动安装 → 选
.spk;DSM 7.0-40851 起,x86_64。 - 飞牛:应用中心 → 手动安装 → 选
.fpk;fnOS 1.1.0 起。 - 安装向导可留空端口(用打包默认);卸载向导默认保留数据,选「彻底删除」才清数据。
- 卸载走 Web UI,命令行卸载会被平台拒绝。
- 回退旧版:Web UI 卸载(保持默认「保留数据」)→ 装旧版包 → 直接启动。数据按版本目录隔离,各版本用各自的配置与会话。
常用操作(start.sh)
./start.sh start # 启动(拉起 dsh → 反代 → 容器页 → 校验端口)
./start.sh stop # 停止;卸载流程下输出「已卸载」
./start.sh restart # 重启(未启动时相当于 start)
./start.sh status # 查状态:0=运行中,3=未运行
./start.sh fix-deps # 启动报缺包时的补齐兜底
./start.sh gen-portal --token # 重新生成门户入口并写入当次 token
synopkg start DeepSeekHarness-NAS # 群晖启停(stop/restart/status 同名)
appcenter-cli start DeepSeekHarness-NAS # 飞牛启停(stop/status/check 同名)
配置模型
Web UI 设置 → Models → 添加提供方;或直接改文件。
/var/packages/deepseek-harness-nas/target/var/data/.dsh/settings.yaml # 群晖 provider 配置
/var/packages/deepseek-harness-nas/target/var/data/.dsh/.credentials.yaml # 群晖 API Key
providers:
myprovider:
id: myprovider
name: My Provider
type: openai-completions
base_url: https://api.example.com/v1 # Bearer Token 类端点
models:
- id: my-model
name: my-model
API_KEYS:
DEEPSEEK_API_KEY: "<你的 API 密钥>"
构建与发布
./build/build-common.sh # 公共预编译 → target(全量约 15-20 分钟)
./build/build-common.sh "" 1 # 复用已有 target,秒级
./build/SPK/pack-spk.sh # → build/staging/DeepSeekHarness-NAS_x86_64-<版本>.spk
./build/FPK/pack-fpk.sh # → build/staging/DeepSeekHarness-NAS_x86-<版本>.fpk
./scripts/promote-release.sh # 验证通过的产物提升到 release/
发版走 GitHub Actions:推 tag、手动 workflow_dispatch(有 arch、dsh_tag 入参)、或由看门狗自动对齐官方 tag。
脚本与环境变量索引
构建与打包
| 名称 | 作用 |
|---|---|
build/build-common.sh |
公共预编译(install + build + 裁剪 → target);参数 [SRC] [SKIP_BUILD] [--dry-run] |
build/build-lib.sh |
打包公共函数库(gen_start_sh()、resolve_arch()) |
build/prune-target.sh |
白名单裁剪,三模式:--before-install <SRC> / --node-modules <SRC> / <TARGET> [WHITELIST] |
build/gen-prune-whitelist.sh |
从 npm 锁文件生成 lockfileDeps;[锁文件] / --dry-run |
build/build-npm-app.sh |
FPK npm 链路应用体构建;[VERSION],可空 = 取当前版本 |
build/build-test-fpk.sh |
测试版 FPK 构建;无参数 |
build/fix-runtime-deps.sh |
打包期运行时依赖补齐;<TARGET> <BUILD_SRC> <NODE> [--max-rounds N] |
build/fix-node-links.py |
pnpm 三层链接补全与错链纠正;<应用体或 target> [--quiet] |
build/prune_common.py |
裁剪公共模块(依赖闭包计算);由 PRUNE_COMMON_DIR 定位 |
scripts/learn-prune-whitelist.sh |
白名单自动学习(--scan <SRC> / --log <FILE>),写入 _autoLearned |
scripts/prepare-build-env.sh |
构建环境准备(幂等、不 mount);无参数 |
scripts/fetch-dsh-latest.sh |
拉官方源码到 src/deepseek-ai/<tag>;[--token <ghp>],--print-tag 只出 tag |
scripts/fetch-release-mt.sh |
下载本仓 Release 资产;[--tag <tag>] [--only spk|fpk] [--threads N] |
scripts/promote-release.sh |
staging → release 提升;D_REL=<dir> 可覆盖输出目录 |
scripts/prune-release-assets.py |
清理 Release 改名残留资产;--tag <tag> --keep-from <dir> [--dry-run] |
scripts/update-release-note.sh |
单独刷新某个 Release 正文(不重新构建);--tag <tag> [--trigger <名>] [--dry-run],--tag 可空=最新 |
scripts/collect-failure-fixtures.py |
采集历史 CI 失败日志做回归夹具;[--limit N] [--out <dir>] [--dry-run] |
scripts/fetch-official-docs.py |
抓官方文档快照;无参数 |
scripts/generate-diff-report.sh |
正式版 / 测试版 FPK 差异报告;无参数 |
运行与维护
| 名称 | 作用 |
|---|---|
scripts/dsh / scripts/pnpm |
dsh、pnpm 命令包装器(打进包 bin/) |
scripts/fix-login-shell.sh |
登录 shell 悬空探测修复;--check / --patch [文件] / --passwd / --shell PATH / --dry-run |
scripts/fix-pnpm-store.sh |
修复 pnpm storeDir 记录;<目标树>,可空 = 当前实例 |
scripts/fix-dsh-settings-namespace.sh |
修复 alpha 版 settingsNamespace 缺失导致的插件加载失败;无参数,幂等带备份 |
scripts/fix-dsh-bundle-patch-insert.py |
修复 bundle patch 插入问题;<目标树> |
scripts/set-dsh-cpu-quota.sh |
设置 DSH CPU 配额;无参数 |
scripts/verify-dsh-cpu-quota.sh |
验证 CPU 配额生效;无参数 |
scripts/migrate-session.sh |
会话跨版本迁移;--list / --check <文件> / --fix-layout / --cwd <新cwd> --in <源> --id <id> / --rollback [备份名] |
scripts/clean-dsm-residue.sh |
DSM 卸载残留清理;<套件名> [主机] [SSH用户],--keep-data(缺省)/ --delete-data |
scripts/clean-build-artifacts.sh |
清理失败/中间构建;--caches / --dry-run / --force |
scripts/lib/common.sh |
全仓唯一公共函数库(日志、安全删除、端口读取、running_dsh 等) |
网页安装工具(web-install/)
| 名称 | 作用 |
|---|---|
web-install/install-server.py |
服务端(端口 8765):配置保存、系统探测、远程执行、安装历史 |
web-install/install-server-ctl.sh |
服务端启停;start / stop / restart / status |
web-install/install.html |
网页前端:探测 → 匹配包 → 安装/卸载/检查/修复 |
web-install/install-remote-spk.sh |
群晖远程装;install / uninstall / check / repair,--keep-data(缺省)/ --delete-data |
web-install/install-remote-fpk.sh |
飞牛远程装;install / uninstall / check |
守卫与测试
| 名称 | 检查内容 |
|---|---|
scripts/check-readme-coverage.py |
代码里的脚本名/开关名必须在 README 出现;--list 只列不失败 |
scripts/check-workflow-yaml.py |
.github/** YAML 结构、步骤缩进、needs 引用悬空 |
scripts/check-build-config.py |
build/build-config.yaml 的 defaults/spk/fpk 必须是映射;--file <path> / --list |
scripts/check-build-naming.py |
命名规范 + 全部 .sh/.py 语法与可执行位 |
scripts/check-common-functions.py |
公共函数不得在其它脚本重复定义 |
scripts/check-destructive-ops.py |
敏感路径 rm -rf 必须 --one-file-system;web-install/ 不得分叉实现 |
scripts/check-html-inline-js.py |
HTML 内联 JS 用 node --check 真解析;--glob '<pattern>' / --list |
scripts/check-packaging-invariants.py |
打包不变量(含生成函数自包含、按声明范围选版本、出货裁剪并入 _autoLearned);--verbose 列出每条检查 |
scripts/check-package-parity.py |
两包结构比对(软链/悬空/manifest);<基准包> <候选包> [--verbose] [--baseline-self] |
scripts/check-fpk-payload.py |
FPK 载荷(app.tgz 不含软链、权限);<包路径> [--expect-pkg <名>] |
test/learner-dryrun.test.sh |
白名单学习器 dry-run 回归;bash test/learner-dryrun.test.sh |
test/prune-release-assets.test.sh |
Release 资产清理回归;bash test/prune-release-assets.test.sh |
test/safe-rm-rf.test.sh |
含挂载点目录绝不被删的回归;bash test/safe-rm-rf.test.sh |
环境变量
| 变量 | 默认 | 含义 |
|---|---|---|
PRUNE_BEFORE_INSTALL / PRUNE_BEFORE_BUILD |
1 |
install 前剥非白名单 devDeps / build 前裁 .pnpm;0 关闭 |
PRUNE_COMMON_DIR |
脚本同级 | prune_common.py 所在目录 |
BUILD_STAGE / SKIP_BUILD |
all / 0 |
分阶段(install/build/prune/all);SKIP_BUILD=1 复用已有 target |
NPM_MODE / DRY_RUN |
0 / 0 |
FPK 走 npm 链路(产物后缀 -npm)/ 只打印计划不执行 |
DSH_PROXY_PORT / DSH_VERSION |
30800 / 空 |
反代端口覆盖(等价 --proxy-port)/ 指定拉取的官方源码版本 |
DSH_NODE_DIST / DSH_GIT_BIN / DSH_TSC_MEM |
自探测 / 自探测 / 可用内存 75% | node 发行版目录 / git 可执行路径 / tsc 堆上限(MB) |
DSH_NPM_REGISTRY / DSH_TOKEN_FILE / DSH_GIT_PUSH_CONFIG |
国内镜像 / 自动探测 / 工作区 config.json |
补包 registry / GitHub token 文件 / 取 githubToken 的配置路径 |
DSH_KEEP_DATA / DSH_UNINSTALLING / DSH_DEPS_RETRIED |
1 / 空 / 空 |
远程卸载 0=连数据删 / 卸载语境(stop 输出「已卸载」)/ fix-deps 防递归标记 |
DSH_HOME / DSH_HOME_PARENT / DSH_PORT |
套件数据目录 / 其父目录 / 运行时端口 | dsh 数据与 profile 根(wrapper 尊重已导出值)/ PID 与 dsh-proxy.log 落点 / 生成物端口运行时值 |
DSH_CLIENT_VERSION / DSH_CLIENT_COMMIT_HASH / DSH_CLIENT_TITLE |
打包注入 | 名牌小字版本与标题 |
DSH_SLIM_SKIP_NATIVE / DSH_REPAIR_DRY_RUN |
0 / 0 |
跳过 native 构建(留档脚本用)/ 守护只打印将停的 PID 不真停 |
DS_FETCH_TOKEN / DS_FETCH_GIT_URL / DSH_GIT_MIRROR_PREFIX |
空 / 官方仓库 / 空(关) | 拉源码 token(等价 --token)/ git 远端覆盖 / GitHub 镜像前缀(如 https://gh-proxy.com/) |
NPM_REGISTRY_CANDIDATES |
内置清单 | npm 源并发探测候选数组 |
ARCH / BUILD_ARCH |
x86_64 |
目标架构覆盖(x86_64 / arm64) |
APP_NAME D_SRC D_BUILD D_STAGING D_REL D_SCRIPTS D_ASSETS |
读 config | 名称与工作区目录临时覆盖 |
vars.BUILD_SPK / vars.BUILD_FPK / vars.PRUNE_OLD_ASSETS(Actions) |
空 | 前两者 false 跳过对应产物;后者 false 关闭残留清理 |
排查
见 docs/故障排查指南.md(症状 → 判据 → 处置)。
文档索引
- 使用指南 — 安装、访问、端口、配置、常用操作
- 构建与发布指南 — 三脚本流程、CI、看门狗、架构参数
- 打包规范 — SPK/FPK 结构与打包不变量
- 故障排查指南 — 症状 → 判据 → 处置
- CHANGELOG — 版本记录
许可证
MIT License - Copyright (c) 2026 DeepSeek AI
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi