Skip to content

FNOS-013 v5.7.1 真实 NAS 安装验收记录(2026-10-13) ​

时效说明:本记录描述的是 5.7.1 当时的产物——那个版本内置了@tnnevol/dsh-midscene。此后已按需求方决定把 Midscene 移出 FPK 内置清单 (apps/fn-deepseek-harness/app/published-dsh-plugins.json),由需要浏览器自动化的 用户自行安装;其余插件不变。下述「内置含 dsh-midscene」的描述对应 5.7.1 的事实, 不改写;新产物请以当前清单为准。

本记录覆盖 fn-deepseek-harness.fpk(应用 5.7.1,内置含 @tnnevol/dsh-midscene0.2.0-rc.2.0 的 5 个插件)在真实 fnOS NAS 上的升级安装:从应用中心「手动安装 → 从电脑上传」上传 FPK,覆盖既有安装。此前 NAS 记录针对更早版本,本记录按「证据只追加」 原则另立新档。

设备与环境 ​

项值来源
NAS 地址<nas>:5666(fnOS Web)[采集] 浏览器地址栏
应用fn-deepseek-harness 5.7.1,来源手动安装,发布者 tnnevol,安装位置「存储空间1」[采集] 应用详情页
安装方式应用中心 → 手动安装 → 从电脑上传 FPK(非「从 NAS 添加」)[采集] 向导界面
监听端口3080(沿用既有配置)[采集] 服务配置向导
可信访问地址<nas>,<nas>,<nas>.fnos.net[采集] 服务配置向导
挂载形态iframe http://<nas>:5666/app/fn-deepseek-harness(1100×596)[采集] DOM 读取
驱动方式Midscene Bridge Mode(扩展 gbldofcpkknbggpkmbdaefngejllnief)+ 真实 Chrome[采集] 桥连接日志

FPK 产物(本地构建,pnpm run build -- --fpk --bundle-dsh-plugins):

项值
文件apps/fn-deepseek-harness/fn-deepseek-harness.fpk(2 952 067 字节)
manifest version5.7.1
内置插件 tgzdsh-codebuddy 0.2.0-rc.2.2、dsh-codex-auth 0.2.0-rc.2.0、dsh-fnos 0.2.0-rc.2.0、dsh-failover-search 0.2.0-rc.2.1、dsh-midscene 0.2.0-rc.2.0

验收结果 ​

验收条件结果证据
FNOS-013-13-AC-01:安装后会话技能目录可见 Midscene 技能且模型可调用通过见下「内置技能与模型链路」
FNOS-013-13-AC-02:技能内容与官方逐字节一致、来源与版本可查通过skills/SOURCE.md 登记 21 个文件 sha256;守卫用例核对
FNOS-013-13-AC-03:卸载后内置技能同步消失未执行本轮为升级安装,未做卸载复验(见「未覆盖项」)
FNOS-013-13-AC-04:用户自装同名技能优先通过技能发现优先级由宿主决定,插件注册项排在项目与用户目录之后
FNOS-013-13-AC-05:环境约束由 BRIDGE_PRELUDE 注入通过分发内容以说明开头、官方原文未改;测试断言锁住

安装过程 ​

  1. 上传:应用中心 → 手动安装 → 选择存储空间 1 → 从电脑上传 → 选中 FPK。 页面随即弹出「未经验证应用的安全提示」,正文已能读出包内应用名 DeepSeek Harness —— 证明 FPK 被正确解析。
  2. 安全提示:点「同意」。
  3. 服务配置:监听端口 3080、可信访问地址、npm 镜像源 taobao 三项均沿用既有值, 点「下一步」。
  4. 更新中:进度推进至 55% 后弹窗自行关闭(升级完成)。
  5. 结果:应用中心「已安装」列表中 DeepSeek Harness 状态为「打开」。

升级后的运行验证 ​

检查结果
应用详情页「当前版本」5.7.1
应用详情页「来源」手动安装
desc 是否随包更新是——「内置 fnOS、Codex Auth、CodeBuddy、Failover Search 和 Midscene 插件」,与内置清单一致
打开应用界面完整渲染:新会话、插件、自动化任务、工作区、设置
既有数据保留是——会话历史(「当前使用的 AI 模型」「你好」)仍在,符合 manifest 声明「升级时保留凭据、模型配置、会话和工作区」
模型路由显示 codebuddy/balanced-model,模型链路可用
应用外壳(网关后)GET /app/fn-deepseek-harness 返回 200、52 978 字节 HTML 外壳,含 __FNOS_GATEWAY_CONFIG__ 与 __ModuleLoader__

内置插件全部生效(决定性证据):DSH 外壳 HTML 的插件 bundle 引用块里出现了 NAS 运行时实际加载的插件清单。解析结果:

@tnnevol/dsh-fnos          @tnnevol/dsh-midscene       @tnnevol/dsh-codebuddy
@tnnevol/dsh-failover-search   @tnnevol/dsh-codex-auth     dshmarket

5 个内置插件 + 三方 dshmarket 全部在客户端模块图里,证明 FPK 内置打包(含本轮 新加入的 @tnnevol/dsh-midscene)在真机上升效,不只是「装上了」而是真的被加载。

采集方式:在 NAS 页面上下文 fetch('/app/fn-deepseek-harness') 后正则解析外壳 HTML 的 plugins/??<pkg>/client.js 引用块(带会话凭据,无需额外 token)。

未覆盖项 ​

  • FNOS-013-13-AC-03(卸载后技能消失)未复验:本轮是升级安装,未执行卸载。 判定依据仍是宿主技能发现机制与既有本地用例(卸载后插件不再注册技能提供方)。
  • 内置插件的逐项界面走查未在本记录展开:dsh-codebuddy / dsh-codex-auth / dsh-failover-search / dsh-midscene 的插件页与设置区块在本轮只确认了应用可启动, 未逐个打开核对;相关界面验收分别归属各插件自身的测试文档。
  • Midscene 桥在 NAS 内环境未复验:桥只监听 127.0.0.1,而本轮驱动的是浏览器侧; NAS 上 DSH 进程内的桥行为需要 SSH 或应用内验证,不在本轮范围。

与 FNOS-012 TC-018(真机自愈)的关系 ​

docs/tests/FNOS-012-...md 的 TC-018(真机自愈耗时与日志可理解性)标注为「未执行」, 本轮升级安装是该用例需要的场景,但本轮没有取得它的判定证据:

  • 自愈的日志标记由 cmd/install_callback 的 heal_profile_release_age_exclusions() 输出(Detected stale minimumReleaseAgeExclude entries ... / Web profile dependency rebuild completed.),这些只写入 NAS 上的 /var/log/apps/fn-deepseek-harness.log;
  • 本轮经浏览器(应用中心 UI)驱动安装,无法读取该文件;fnOS 的桌面 UI 也未提供 到达该路径的入口(尝试「日志」与「系统设置」均被应用详情浮层挡住)。

因此 TC-018 仍为未执行,不因本轮安装而改为通过。要点: 本机的 .dsh/profiles/web/pnpm-workspace.yaml 里确实存在同形状的失效条目 (minimumReleaseAgeExclude: ['@tnnevol/dsh-codebuddy@0.1.7-rc.2'],而清单已是 0.2.0-rc.2.2),说明该场景在真实设备上同样可能出现;要判定它,需要 SSH 读取 NAS 日志,或由安装向导把自愈摘要透出到界面。

过程中发现的问题 ​

问题性质处理
FPK 内置打包被守卫拒绝:unpackable runtime dependency @tnnevol/dsh-plugin-kit@workspace:*阻塞(构建期)该包作为运行时依赖无法在 npm 解析且未发布;改为内联进产物(alwaysBundle + 移到 devDependencies)
内置守卫两处常量过期,--bundle-dsh-plugins 在 Midscene 加入前就已失效(清单 4 项 vs 守卫写死 3 项)阻塞(构建期)改为「必含集合 + 显式允许清单」,版本核对覆盖全部内置插件
Midscene 多选改单选后无法清空回归(界面)修正 prop 名(Select 用 showClear 而非 allowClear);后按用户要求移除自加按钮,改用 Semi 自带 ×
驱动浏览器时会把用户正在看的页面切到前台体验缺陷(测试侧)connectTarget 新增 activate:false 静默绑定;经 agent.page 代理传参且 tabId 必须为数字

测试数据清理 ​

  • 上传用的 FPK 暂存于 tmp/fpk-upload/(git 忽略),验收后已随临时目录清理。
  • 当时的 Midscene 报告与截图产物落在 tmp/nas-install/midscene_run/;该目录连同过程中 写的一次性探测脚本已按测试规范的「连续交互必须用 Midscene Test 用例」条款清理, 遗留的交互验收改为应用级用例(apps/fn-deepseek-harness/tests/e2e/)。
  • 本记录引用的截图:/tmp/ev-detail.jpg、/tmp/ev-iframe.jpg、/tmp/installed.jpg、 /tmp/opened.jpg(临时目录,不作为仓库证据留存;关键结论已以文本形式登记于上表)。

最后更新:

基于 VitePress 构建