给 NAS 装个 AI 管家:fnOS CLI 接上 Agent,用说话的方式管文件
NAS 有个很奇怪的地方:它的能力全在图形界面里,而所有自动化工具都在命令行里。
于是过去几年我的操作是这样的——为了批量重命名一批下载的剧集,SSH 进去敲 find + mv;为了看哪个容器在吃内存,开网页点进 Docker 面板再点进容器;为了确认相册备份有没有卡住,翻三层菜单。每件事都不难,但每件事都要我本人到场。
飞牛在 9 月底的 1.2.0800 版本里放出了 fnOS CLI:官方命令行客户端 + 配套的 Agent Skill,Agent 通过 OAuth 授权接入,能碰文件、相册、下载、网盘、应用中心、Docker、日志、系统与用户管理、存储空间。不是社区逆向的 API 封装,是官方给 Agent 开的一扇门。
这篇写清整条链路:怎么装、怎么授权、怎么验证、能干什么,以及哪几条线不能越。
一、它到底是什么
拆开看是三层:
| 层 | 是什么 | 谁在用 |
|---|---|---|
| CLI | fnos-cli,原生二进制,Win/macOS/Linux 的 x64 与 arm64 都有 |
你,或者 Agent 调用 |
| Skill | 一份 SKILL.md + 参考文档,告诉 Agent 有哪些能力、参数怎么填 |
Agent 读 |
| 授权 | OAuth 一次性码换凭据,凭据按 profile 隔离 | 你本人确认 |
关键点在于安装不等于登录。install 只是把 CLI 放到位、把 Skill 放进 Agent 的技能目录;真正能不能碰你的 NAS,取决于后面那一步授权。这个设计比「填个 API Key 就永久有效」要好——凭据可以撤销,权限可以按 profile 切分,比如给一个只读的 home profile 和一个能改文件的 work profile。
系统要求不复杂:NAS 侧系统版本不低于官方验证基线(1.2.0800 起),控制端 Node.js 18+ 和 npm。
二、装:一条 npx
在你要跑 Agent 的那台机器上(Mac、Linux、Windows 都行,不一定是 NAS 本身):
1 | npx -y --package=@fnnas-labs/fnos-cli@latest fnos-cli install |
这条命令做两件事:装同版本的全局 CLI,并把 Skill 装到 ~/.agents/skills/fnos-cli。
几个变体,按需要挑:
1 | # 只装 Skill,不装全局 CLI(CLI 走 npx 临时调用) |
装完重启你的 Agent。已经很在跑的进程不会自动发现新技能,这一步漏了,后面所有「它说没这个能力」的对话都是白费。
三、授权:把密码留在自己手里
这是整篇最该看仔细的一段。手动跑一遍,知道它长什么样:
1 | export NAS_HOST='nas.example.com' |
--no-open 是不让 CLI 自己拉起浏览器(服务器环境没图形界面)。它会打印一个授权链接,你做三件事:
- 浏览器打开链接,登录 fnOS;
- 看清楚它申请了哪些权限,确认;
- 拿到一次性授权码,粘回正在等待的终端。
如果要让 Agent 自己发起这个流程(你在聊天框里说「登一下 NAS」),走的是另一组参数:
1 | fnos-cli login --authorize-only --agent-name "<你的 Agent 名字>" |
Agent 拿到码之后写入凭据,然后跑一次只读请求验证:
1 | fnos-cli --profile home system info |
这条能返回系统信息,才算真的通了。先跑只读请求验证,再让它做任何写操作——不然你会在一个没授权的会话里,看到 Agent 用很自信的语气编造 NAS 的状态。
四、三个真的会用的场景
装完不是为了炫技。我留下的三个用例,都是过去要开网页点半天的:
1. 存储与健康巡检
「看一下三个存储空间的使用率,有没有硬盘 SMART 有警告,最近一周系统日志里有没有 I/O 错误。」
以前要分别进存储管理、硬盘管理、日志三个页面。现在一句话,Agent 自己挑命令、汇总成一段话。这类只读查询是 CLI 最舒服的地方——它不会改任何东西,出错了也就是答得不准。
2. 收拾下载目录
「把 /vol1/downloads 里已经完成的、有中文字幕的剧集按剧名+季集重命名,先列出重命名计划给我看,别动文件。」
注意后半句。让它先出计划、你确认、再执行,是这套东西的正确用法。真让它一把梭,它有能力在三十秒内把你三个月的整理工作重排一遍,而且没有 Ctrl+Z。
3. Docker 与相册的日常问答
「相册备份任务上次成功是什么时候?哪个容器最近重启过三次以上?」
这是最不值钱、但最省时间的部分:不用记哪个面板在哪,问就行。前提还是那个——只读。
五、权限边界:四条线
官方把能力开到「文件读写」这一档,等于把家门钥匙递出去了。四条线我建议一直守着:
- 只读优先。 能用
system info、列表、查询解决的,就不要走写操作。给 Agent 的默认 profile 建议就是只读的那个。 - 写操作保留确认。 Agent 不会替你自动加写确认参数——这句话反过来读就是:它可能直接执行。所有删除、移动、批量重命名,都要求它先输出计划。
- 一次性码和凭据当密码对待。 它们会出现在聊天记录、命令历史、进程参数里。授权完把终端历史清一下;发现码被别人看到,立刻在 NAS 侧重授权。
- 别把管理端口映射到公网。 出门要用就走 Tailscale 之类的组网,别开公网 443 直连管理面。授权链做得再好,暴露面大也一样白搭。
还有一条不算安全但同样重要:先备份,再自动化。 让 Agent 管文件之前,restic 或者别的方式得先跑起来。不是为了防它,是为了防你自己那句「顺便把重复的也删了」。
六、踩到的坑
四个,都是公开文档里一句话带过、实际会卡住人的:
- 官网裸链接 403。 直接请求安装包的下载直链会被拒,得走官网正常的下载流程。看到 403 别反复改 NAS 密码,那不是授权问题。
- npm 的 latest 可能滞后。 发布窗口内
@latest有时还指向上一个版本,装完先--version对一下,不然你会拿旧版去试新能力。 - 旧凭据不迁移。 新版只提供
fnos-cli一个入口,旧的兼容入口取消了,配置变量也只认FNOS_CLI_*。升级后要重新授权一次,这不是 bug。 - 没有 TTY 的环境。 在纯后台跑 Agent(无终端)时,用 CLI 自带的启动器包装调用,别直接调二进制等它弹交互。
七、值不值得
先说结论:它解决的是「到场成本」,不是「能力上限」。
以前所有事你都能做,只是每次都要本人出现、开网页、点五层菜单。现在你可以在地铁上说一句「看一下存储还剩多少」,回家就有答案。这个提升对一个人维护一台 NAS 的场景是实打实的。
但它不改变另一件事:Agent 的判断力取决于你给的信息。 你说「清理一下空间」,它不知道哪份是你要留的童年照片,哪份是能删的安装包。CLI 把动手的门槛降到零,也把「一句话造成的破坏」的门槛降到了零。
所以我的用法很保守:只读放开,写操作先看计划,删除类永远人工确认。 这套组合下来,它是个很好的管家,而不是一个需要你时时提防的室友。
顺带说一句:fnOS 这半年在存储底层也补了课——1.2.0701 上了自研 RAID 加速(RAID5/6 顺序读写提升 30% 以上,盘越多优势越大)和阵列保护(硬盘瞬间掉线后自动重投读写请求);ARM 版本 10 月 12 日开公测,RK3588、RK3399 那批板子和盒子能刷了。国产 NAS 系统这轮的迭代速度,确实比前两年快。
如果你手上正好有台闲置小主机,值得花半小时把 CLI 接上试试。玩明白了再决定要不要把主力数据交给它——这个顺序,比反过来安全得多。
常见问题
fnOS CLI 是什么?和 SSH 有什么区别?
它是一套官方出的命令行客户端 + Agent Skill,把 fnOS 的常用能力(文件读写、相册、下载、网盘、应用中心、Docker、日志、系统与用户管理、存储空间)包装成结构化命令。跟 SSH 的区别在于:SSH 给你一个 shell,你得自己拼命令、自己解析输出;CLI 给 Agent 的是一份带说明的接口清单,Agent 知道有哪些操作、参数怎么填,也更适合做权限收窄。
授权会不会把 NAS 密码给出去?
不会,流程里根本没有密码。CLI 发起登录后打印一个授权链接,你自己在浏览器里打开、登录 fnOS、确认权限,再把一次性授权码粘回终端。Agent 全程只碰到那个一次性码,换来的是一个可撤销的访问凭据。密码永远不进入聊天记录、命令历史或工具日志。
装完 Agent 说找不到 fnOS 的技能怎么办?
两个常见原因。一是装完没重启 Agent,Skill 装到 ~/.agents/skills/fnos-cli 后需要重新加载才被发现;二是 npm 上的 latest 在发布窗口内可能还指向上一个版本,装完先跑 fnos-cli --version 和 --help 确认版本,再让它干活。
让 AI 管 NAS,最该防的是什么?
不是黑客,是你自己的一句「帮我把重复文件删一下」。写操作一定要保留确认环节,先让它列出「打算删哪些」,你核过再执行;只读能力优先用,能查就别给改。另外别为了远程方便把 NAS 管理端口直接映射到公网,授权链再安全也挡不住暴露面。
ARM 设备能不能用?
能,但要分开看。fnOS 的 ARM 版本 2026 年 10 月 12 日才开公测(当前 1.2.0701),支持 RK3588、RK3399 等一批板子和盒子;CLI 本身也提供 arm64 包。不过 ARM 版还在公测期,功能完整度和稳定性不如 x86,拿它当主力机放重要数据之前,先用一块闲置盘跑两周。





