先说我为什么对这东西感兴趣。
这两年我折腾 AI 工具折腾得有点多,有个小事一直挺烦:让助手写出来的报告、生成的图、改好的代码,基本都活在对话框里。关掉页面,下次再想找,要么翻聊天记录,要么干脆找不着了。它们缺一个正经住处。
腾讯云前阵子出的 Agent Bucket(智能体桶)就是冲着这个来的——给每个智能体一块长期的云端空间,存用户给它的资料,也存它产出的东西,开发者拿标准 S3 接口就能读写,不用自己搭多租户和权限。正好社区在招首批体验官,我就开了个号,从开通一路测到用脚本读写。坑踩了两个,其中一个还挺隐蔽:脚本写进去 123 字节的文件,读回来变成了 165 字节。
第一步就卡住了。我的社区账号没做实名认证,控制台一进来就弹认证,什么都看不到。活动规则里其实写了要「已完成实名认证的国内站用户」,我图省事,最后换了一个早就认证过的账号才进去。这一步没什么技术含量,但它决定了后面一切,准备参加的朋友先把认证备好。
进去之后点「创建智能体桶」,弹窗意外地简单:桶名不用起,系统自动生成;地域没得选,只有成都;备注选填。真正拦人的是弹窗底部一行橙色提示——「SMH 智能体桶服务角色未授权」,确认按钮是灰的。得先去访问管理里,给腾讯云的 SMH 服务授一个服务角色,回来刷新,按钮才亮。授权这事我自己去点的,页面会把要授予的策略列出来,扫了一眼没看出异常才确认。

创建弹窗:服务授权没做之前,「确认创建」是灰的
还有个顺序问题。活动页上有个「新客零元礼」,是三个资源包的组合:5 个空间的服务包、50GB 存储包、10GB 外网下行流量包,原价合计 37.50 元,新用户 0 元领,有效期一个月。我是先把这个领了才建的桶,这样实测那点用量直接走资源包抵扣。领的时候它会正经生成一笔订单,要勾服务协议、点确认支付,实付 0.00 元。顺序反过来的话,先产生的用量能不能被后领的包抵扣,规则里写的是「新购资源包不可抵扣已出账用量」,所以别嫌麻烦,先领包,再建桶。

新客零元礼:三个资源包,合计 37.50 元,全额优惠
授权完点确认创建,桶就出来了,名字长这样:smh3fhq8dslst3tx-1308366410,尾巴是账号的 APPID。这会儿它还只是个空壳,真正干活的概念是桶下面的「空间」——可以理解成给某个智能体或某个项目划的一间独立屋子,资源包里的「5 个空间」指的就是这个的数量。

桶建好了,列表里的第一项
建空间的表单就三个字段:空间 ID、存储配额、备注。第一坑在这儿等着我:我按平时起名的习惯写了个带连字符的,一提交就被拦下来——「空间 ID 只支持英文字母和数字」,连字符不行。最后老老实实建成 agentworkspacetest。配额选填,留空是不限制;页面有行小字提醒,配额一旦设上只能改不能取消,要设的人想好再填。
往空间里传文件,我准备了两个样本:一份 Markdown 文档(模拟智能体写的纪要,360 字节)和一张 PNG 图表(37.90 KB,模拟它生成的图)。第一次我把两个文件一起挂上上传控件,结果转了半天超时了,列表还是空的。一个个传就都成了,页面提示「成功 1 个,失败 0 个」。不知道是批量的问题还是我当时网络的问题,反正逐个传很稳。传完刷新空间列表:文件数 2、已用容量 38.25 KB,和两个文件的实际大小对得上,统计没虚报。


空间里的两个文件
槽点也有一个,而且我觉得对这类产品还挺要命的:控制台里没法在线预览文件。文件列表里每个文件只有「下载」和「删除」两个操作,点文件名是复制路径。一份主打存报告和图片的产品,在它自己的控制台里连图都看不了,还得下载下来看,有点说不过去。顺便说一句,下载这个动作在我的浏览器环境里没能完整验通——按钮点下去没报错,但下载产物没被抓到,所以控制台这条取回链路我不下结论。不过取回这件事本身,我在后面用 S3 读回来验过哈希,是通的。
控制台再顺手,也只是个给人用的网盘。这东西说到底是给程序用的——让智能体那一侧自己存、自己取。所以我写了个小脚本,拿最普通的 boto3(AWS 的 Python SDK)去打它的 S3 接口,看官方那句「标准 S3、AWS SDK 无缝兼容」到底是不是那么回事。
接入参数在桶概览的「开发者指引」里写得很清楚:桶域名就是 桶名.cos.ap-chengdu.myqcloud.com,地域 ap-chengdu,签名用腾讯云的 API 密钥。还有个结构上的发现:空间在 S3 这边不是独立的桶,就是对象键的第一层前缀。我控制台传的那份文档,在 S3 里就是 agentworkspacetest/agent-output-sample.md,图是 agentworkspacetest/chart1.png,一目了然。

开发者指引里的接入参数:左边 COS 入口,右边 SMH 入口
发密钥这一步有个插曲。我的主账号名下已经有两把 API 密钥,到达上限了,新建不了;而且其中一把当天还在被别的东西使用,不能动。想想这其实是所有人都会遇到的真实场景:主账号密钥哪能随便给一个智能体用?正确做法是去访问管理新建一个子用户,只给它对象存储的读写权限,单独发一对密钥,测完把子用户整个删掉。我就是这么办的——子用户叫 agent-bucket-s3-test,只开了编程访问。写这篇文章的时候它已经被删干净了,密钥作废。
脚本跑起来,前半段顺得很。先 LIST 了一下空间前缀,两个文件都在,大小跟控制台一致;又把控制台传的那份文档经 S3 读回来,跟本地原文件比了 SHA-256,一模一样。行,控制台和 API 用的是同一份数据。
然后就撞上坑了。
我用 boto3 的默认配置 PUT 了一个 123 字节的测试文本,接口返回成功。手贱多做了一步校验:GET 回来一算哈希,对不上。再看大小,123 字节变成了 165 字节。把内容按字节打出来才看明白,多出来的 42 字节是 HTTP 分块传输的帧:开头一个 7b\r\n(7b 是十六进制,正好 123),结尾拖着一行校验和的尾巴。新版 boto3 默认开启一种叫 aws-chunked 的校验和流式上传,AWS 自家的 S3 能认这个格式,但 COS 这边的 S3 兼容层没把这层帧剥掉,原封不动当成文件内容存了。最麻烦的是它不报错——写入显示成功,你不读回来校验,永远不知道文件已经脏了。智能体每天不知道要往里写多少报告和代码,写坏了还不吭声,这个才麻烦。
把读回来的内容按原始字节打印出来,是这个样子的(节选):
b'7b\r\nAgent Bucket S3 test object\n...(中间是我写的正文)...\r\n0\r\nx-amz-checksum-crc32:S8gOtA==\r\n\r\n'
# 实际存入 165 字节;开头的 7b 是十六进制的 123,也就是我原本内容长度的分块帧头修法倒不难,在 boto3 的 Config 里把校验和计算改成按需就行:
from botocore.config import Config
config = Config(
signature_version="s3v4",
s3={"addressing_style": "virtual"},
# 关键就这两行:关掉默认的校验和流式模式
request_checksum_calculation="when_required",
response_checksum_validation="when_required",
)
s3 = boto3.client(
"s3",
endpoint_url="https://cos.ap-chengdu.myqcloud.com",
region_name="ap-chengdu",
config=config,
)改完重写同一个文件:PUT 123 字节,GET 回来还是 123 字节,SHA-256 一致,HEAD 看到的长度和 ETag 也都正常了。再回控制台刷新空间列表,脚本写进去的 s3-roundtrip-test.txt 躺在另外两个文件旁边,空间统计变成 3 个文件、38.37 KB。到这一步我才敢说两边是通的:控制台里能看到脚本写进去的文件,脚本也读得到控制台传的文件。
修正后的那次往返,脚本输出原样是这样的:
PUT agentworkspacetest/s3-roundtrip-test.txt (123 B), checksum streaming OFF
put ok
GET bytes=123 sha256_match=True
HEAD ContentLength: 123
第三个文件是脚本经 S3 写进去的,控制台里能直接看到
资源包是 10 月 8 日下午生效的,到 11 月 8 日到期,页面明确写了不可续费,到期或用尽之后自动转按量计费。我去查用量的时候发现,空间包和存储包的用量数据要次日才展示,流量包显示已用 0%。抵扣到底抵没抵,要等第二天才看得到,它出数是 T+1 的。这次实测总共就用了 1 个空间、不到 40 KB 存储,全在资源包覆盖范围里,理论上不该有额外账单,这点我第二天还会再去确认一次。
测完之后的清理路线,我也顺手摸了一遍:删文件、删空间、删桶,控制台都有现成入口。费用只来自存量、请求和流量,数据删光、桶删掉,就没有继续计费的由头了。那把临时子用户的密钥,测完当天就连账号一起删了——给智能体用的密钥就该是这种用完能随时作废的东西,别拿主账号的长期密钥去凑合。
说到底,Agent Bucket 底下就是 COS,空间就是对象键的第一层前缀。不用学新东西,AWS 的 SDK 拿过来就能打,控制台传的和程序写的互通,我都用哈希验过。开通要实名、要授权,控制台连个预览都没有,这些毛边新产品刚上线倒也不意外。
但如果你打算让自己的智能体往里写东西,先把我踩的那个坑填了:新版 boto3 默认配置写进去的对象会多出几十字节的分块帧,接口还不报错。把校验和那两行配置加上,再养成「写完读回来验一次哈希」的习惯,这块存储才算是真能托付给智能体的地方。
我这边的实测就到这儿。后面就看你自己的智能体往里放点什么了,先用它一个月——反正第一个月有免费资源包,不用白不用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。