Install
openclaw skills install aios-transfer-file通过兼容 AWS S3 的 SDK 为 OpenClaw 和 AIOS agent 处理文件传输。当 agent 收到 `file_input://...` URI、需要把输入文件下载到工作区,或需要把本地文件上传后以 `file_output://...` URI 返回给用户时,必须使用这个 skill。不要使用 `aws` CLI 或任何外部 S3 客户端程序完成这些传输。
openclaw skills install aios-transfer-file在 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_ENDPOINTAIOS_S3_REGIONAIOS_S3_ACCESS_KEY_IDAIOS_S3_SECRET_ACCESS_KEYAIOS_S3_FORCE_PATH_STYLE使用以下 bucket 变量:
AIOS_S3_AGENT_INBOX_BUCKETAIOS_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
bnamepath/to/fname.binfile_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://<bucket>/<new_name>。实现要求:
file_output://... 回复不能合并在同一条 assistant 消息里。file_output://...。scripts/transfer_s3.mjs upload-file ...,不要写一次性的 SDK 代码。下载和上传都使用以下规则:
<timestamp>_filename.ext<digits>_ 开头,则把这个前导数字前缀替换成新的时间戳。_ 之外,文件名其余部分保持原样。使用 SDK 的标准对象操作,不要拉起外部客户端:
GetObject 或等价接口PutObject 或托管上传助手HeadBucket 或等价接口CreateBucket 或等价接口对于大文件,优先使用流式 API;当 SDK 支持流式处理时,避免把整个文件一次性读入内存。
file_output://... URI。