> 本技能只适用于受控 AIOS 部署。它可能访问真实业务系统,必须按最小权限配置。只读操作可以自动执行;任何会改变状态的操作,包括创建、更新、提交、审批、驳回、删除或触发,都必须先预览目标应用、命令和请求体,并获得明确人工确认。CLI 必须固定到经过评审的版本,Ontology 来源必须可信且可审计。
在 OpenClaw 中,所有文件和图片传输,包括接受用户发来的文件,和给用户发送文件,都必须使用兼容 AWS S3 的 SDK。这适用于附件、file_input:// 消息,以及任何需要把文件返回给用户的场景。
aws、s3cmd、mc 或任何其他外部客户端程序。
file_input://... URI 之前,或在发送任何本地文件给用户之前,先触发这个 skill。
scripts/transfer_s3.mjs,不要在对话中临时写新的传输脚本。
file_input 和 file_output 目录,使用前先创建。
file_output://... 消息,不能附带其他文字。
使用 AIOS 环境变量构建 S3 客户端:
AIOS_S3_ENDPOINT
AIOS_S3_REGION
AIOS_S3_ACCESS_KEY_ID
AIOS_S3_SECRET_ACCESS_KEY
AIOS_S3_FORCE_PATH_STYLE
使用以下 bucket 变量:
AIOS_S3_AGENT_INBOX_BUCKET
AIOS_S3_AGENT_OUTBOX_BUCKET
发件箱变量统一使用 AIOS_S3_AGENT_OUTBOX_BUCKET,不要引入其他别名。
构造 SDK 客户端时:
AIOS_S3_ENDPOINT 设置自定义 endpoint。
AIOS_S3_REGION 设置 region。
AIOS_S3_ACCESS_KEY_ID 和 AIOS_S3_SECRET_ACCESS_KEY 作为访问凭证。
AIOS_S3_FORCE_PATH_STYLE 为真值时启用 path-style,例如 1、true 或 TRUE。
与 aios-agent-management-console 保持一致,使用 TypeScript 或 JavaScript,并采用 AWS SDK for JavaScript v3,具体为 @aws-sdk/client-s3。
优先使用内置 JavaScript 工具:
node scripts/transfer_s3.mjs download-uri --uri "file_input://bucket/path/to/file.bin" --workspace .
node scripts/transfer_s3.mjs upload-file --source "/abs/path/to/file.bin" --workspace .
内置脚本的行为:
@aws-sdk/client-s3 和上面的 AIOS S3 环境变量。
aios-agent-management-console 保持同样风格:ESM、动态导入本地安装的包、显式构造 S3Client、显式传入凭证,并且 AIOS_S3_FORCE_PATH_STYLE 默认取 true。
file_input 和 file_output 目录。
file_input://... URI 下载到 file_input。
file_output,重命名为要求的时间戳前缀格式,并上传到发件箱 bucket 根目录。
--uri-only,用于最终上传回复步骤。
依赖位置:
package.json 中声明了 @aws-sdk/client-s3。
node_modules/@aws-sdk/client-s3 是否存在,或运行 npm ls @aws-sdk/client-s3 --depth=0。
npm install 本地安装依赖。
依赖处理流程:
node 和 npm 可用。
@aws-sdk/client-s3 是否已经本地安装。
npm install。
当消息以 file_input:// 开头时:
bucket 和完整的 key。
示例:file_input://bname/path/to/fname.bin extra text
bname
path/to/fname.bin
file_input 目录。
123456_fname.bin。
实现要求:
AIOS_S3_AGENT_INBOX_BUCKET 做诊断比较,但下载时不要改写 URI bucket。
scripts/transfer_s3.mjs download-uri ...,不要写一次性的 SDK 代码。
当你需要把本地文件发回给用户时:
AIOS_S3_AGENT_OUTBOX_BUCKET 解析发件箱 bucket。
file_output 目录。
123456_fname.bin。
_。
file_output:/// 。
实现要求:
file_output://... 回复不能合并在同一条 assistant 消息里。
file_output://...。
scripts/transfer_s3.mjs upload-file ...,不要写一次性的 SDK 代码。
下载和上传都使用以下规则:
_filename.ext
_ 开头,则把这个前导数字前缀替换成新的时间戳。
_ 之外,文件名其余部分保持原样。
使用 SDK 的标准对象操作,不要拉起外部客户端:
GetObject 或等价接口
PutObject 或托管上传助手
HeadBucket 或等价接口
CreateBucket 或等价接口
对于大文件,优先使用流式 API;当 SDK 支持流式处理时,避免把整个文件一次性读入内存。
file_output://... URI。
共 5 个版本