未来飞马 FmodeAgent · skill-storage
AI Agent 的对象存储技能

对象存储 · 公开分享 · 大文件传输

个人级云存储 · 企业级云存储 · 大文件网关 —— 一个技能,三套能力。零配置、开箱即用、密钥永不落盘。

☁️

个人级云存储

任何二进制文件(图片/音视频/HTML 报告)一键上传对象存储,拿到公网 URL 即分享即嵌入。本地零长期占用。

user/<你的ID>/… → https://s3.fmode.cn/…
🏢

企业级云存储

项目级 Storage:注册项目后签发项目专属 STS,发布到 app.fmode.cn/dev/<项目>/,项目间隔离、权限收敛。

dev/<ProjectID>/… → https://app.fmode.cn/…
📦

大文件传输网关

当通道限制挡住大文件(如企微 20MB),生成接收页让用户拖拽直传对象存储,再用 collect 取回。

拖拽直传 · 进度条 · 槽位取回

🚀 三行命令跑通

安装 skill-storage 后,无需任何 AK/SK 配置(依赖登录态,云函数签发临时上传地址):

# 1. 自检通道
node uploader.mjs test
# 2. 上传任意文件 → 拿公开 URL
node uploader.mjs put ./report.html --key report/202610/report.html
# → https://s3.fmode.cn/user/<你的ID>/report/202610/report.html
# 3. 大文件被通道挡住?生成接收网关页发给对方
node uploader.mjs gateway ./out   # 自动部署 → 输出页面 URL
💡 上传即 public-read;可用 --mime 指定类型(HTML 直接浏览器渲染);覆盖同名 key 后 CDN 缓存 30 天,建议换新路径发布。

📦 一键全局安装(npm)

技能已发布到 npm,装一次即可在任何工具里调用;也支持从 Gogs 仓库直接 clone。

# npm 全局安装
npm i -g @fmode/skill-storage
# 或从仓库获取(fmode/skill-storage · Gogs)
git clone https://git.fmode.cn/fmode/skill-storage

🔧 切换不同工具,让 AI 自主安装

把下面任意一段提示词丢给对应工具,它会自己为当前工具全局安装并验证 skill-storage:

工具提示词
FmodeCode / Claude Code请安装 skill-storage 技能到全局(npm i -g @fmode/skill-storage),并把它的 SKILL.md 与 scripts/ 放入你读取技能的全局位置,然后运行自检 node …/uploader.mjs test 确认通道可用,再告诉我安装结果。
Codex CLI请把 @fmode/skill-storage 的全局技能安装到我的 Codex 技能目录(npm 包解包后放入 ~/.codex/skills 或对应 AGENTS.md 引用),并执行 test 自检,汇报总 URL 能力。
WorkBuddy / Trae / 千问请在我的工作台安装 skill-storage 技能:从 https://git.fmode.cn/fmode/skill-storage 获取,把它注册为全局技能,并跑通「上传一个测试文件拿到公开 URL」的完整实测。
FmodeAgent / Hermes请把 /opt/data/skills/fmode-storage 或 npm 包 @fmode/skill-storage 加入我的全局技能库(skills/ 目录),并执行 node …/uploader.mjs test 自检,汇报 ok/via。
Gemini CLI / 其他请安装 skill-storage(npm i -g @fmode/skill-storage),将该技能的 SKILL.md 按你的技能格式注册,并用 uploader.mjs 上传一个小文件验证公开链接可访问。
🎯 技巧:让 AI 自安装时,告诉它「完成后自己实测一次(上传小文件拿 URL)」——它会自己验证而不是假装成功,避免装了个空壳。

🛡️ 安全边界

密钥零落盘

AK/SK/sessionToken/STS 永不进仓库、日志、对话。第 0 级通道由云函数保管密钥,容器只拿 5 分钟预签名地址。

权限收敛

个人级强制 user/<你的ID>/ 前缀;项目级 STS 作用域仅 dev/<ProjectID>/,禁止 List/Delete。

大文件网关安全

接收页不含任何密钥;每个文件独立槽位、独立预签名 URL;STS 1h 过期后页面自动失效,不沿用旧页。

诚实失败

通道全失败时打印初始化向导并 exit 2,绝不伪装成功;生成页面后必须实测一次再发用户。

📖 大文件网关:什么时候用、怎么用

平时完全不需要;只有「通过当前通道发文件被上限挡住」时才触发。

1
识别触发主通道报超限(如企微入站 20MB / 出站文件 20MB)→ 启用网关。
2
生成接收页node uploader.mjs gateway ./out → 自动部署,输出页面 URL(含当次 1h 授权)。
3
发给对方把 URL 发给对方,对方浏览器拖拽/选择文件直传 OBS(不占聊天通道)。
4
取回bash collect.sh --list 看槽位;--out ~/inbox 下载并登记台账。

🔗 相关链接

资源地址
技能仓库(Gogs)https://git.fmode.cn/fmode/skill-storage
npm 包@fmode/skill-storage
大文件网关经验页https://app.fmode.cn/dev/GErSoNNP6j/bigfile-gateway.html
本技能官方页https://fmode.cn/skills/skill-storage/