【AI】叙界S3备份需求,多Agent赛马
同一份叙界S3备份需求,拉一群编程Agent现场赛马。
欢迎来到叙界赛博斗蛐蛐系列,本系列目录如下:
1. 起因
现在各种编程Agent越出越多,模型上下文也是从200K一路卷到1M。平时拿它们修个小Bug,大家看起来都挺像那么回事;但任务一复杂,工具调用、需求理解、数据库迁移、前端交互和测试全搅在一起,差距就出来了。
所以这次不看宣传页,直接拿叙界 Scriverse的S3备份需求来跑一轮赛马。
为了尽量公平,所有Agent使用相同的git worktree skill、相同的任务prompt和同一套人工验收用例。模型能不能主动发现问题、会不会被无关skill带偏、最后交出来的代码到底能不能用,都算测试的一部分。
2. 参赛选手
| 参赛选手 | 模型 / 模式 | 上下文 | 软件版本 |
|---|---|---|---|
| CatPaw | LongCat-2.0 | 1M | 2026.0729.1946 |
| WorkBuddy | Hy3 | 192K | 5.3.8 |
| QoderCN IDE,Quest | Qwen-3.8-Max-Preview | 1M | 1.9.1 |
| TRAE SOLO | Seed-2.1-Turbo | 200K | 3.3.83 |
| TRAE SOLO | Seed-2.1-Pro | 200K | 3.3.83 |
| Cursor Agent View | Grok 4.5 High | 256K | 3.14.7 |
| Cursor Agent View | Composer 2.5 | 256K | 3.14.7 |
| Codex | GPT-5.6 Sol Max | 373K(设置里手动开) | 26.727.51351 |
| Codex | GPT-5.6 Luna Max | 373K | 26.727.51351 |
| Claude Code | DeepSeek V4 Flash 0731 | 1M | 2.1.220 |
| Claude Code | DeepSeek V4 Pro Preview | 1M | 2.1.220 |
| Cursor Agent View | GLM-5.2 | 1M | 3.14.7 |
| Cursor Agent View | Kimi K3 | 1M | 3.14.7 |
还有几个没参赛的:
| 模型 | 原因 |
|---|---|
| GLM-5.2 | 订阅账号已经出售回血,而且我觉得Pro的5小时额度也跑不完这个任务 |
| Kimi K3 | 199元Plan的5小时额度不足以跑完整个prompt,周额度已经被前面的测试用完了 |
| MiniMax | 无人在意 |
3. 测试方式
- 先使用相同的skill创建git worktree。很多工具没有自带worktree功能,这样能让每个Agent在独立目录里干活。
- 测试前已经确认所有Agent工具都支持读取项目根目录下的
AGENTS.md,并关闭记忆功能,避免出现项目知识偏差。 - 所有Agent都使用最大思考强度和最大上下文模式,并开启yolo模式。
- 测试前没有刻意清空各个Agent工具的skill目录,但也没有安装superpower、front-design之类的编程skill。如果模型在相同prompt下自己跑进毫不相干的skill里,这也属于要展示的bad case。
3.1. 首个prompt
所有选手使用同一份git worktree skill,然后发送下面这句话:
1 | 使用 git-worktree skills 创建一个 worktree,等待我的下一步指示 |
这份skill会要求Agent先询问用户选择基础分支,这也算测试的一部分,看看有没有选手不问就直接开干。
3.2. 任务prompt
任务基于Scriverse的v0.6.6版本,commit为91f9189e5bb34e1bbf6bcaa8442e6a1ac61be5c2。
不知道会不会有人觉得这个 prompt 还不够详细,我想说的是这已经是算是不写 plan 的情况下非常详细的一个 prompt 了,如果是我要让 sol 来写这个需求,我绝对不会写这么多,只会写一句话……
1 | 为当前项目加上数据库和图片的 s3 备份能力: |
4. 验收方式
4.1. 测试材料
最终人工验收统一使用同一份演示数据库,公开复现材料已经上传到 scriverse-llm-racing:
1 | ~/document/scriverse-version-comparison/scriverse-demo-db-with-setting-images-20260802.zip |
测试时统一用跳过登录的命令启动server:
1 | NODE_ENV=development APP_DEV_SKIP_AUTH=true npm run dev |
七牛云S3测试配置如下,正式使用时换成自己的AK和SK:
1 | scriverse-test |
4.2. 打分规则
所有测试用例都可以从首个prompt和AGENTS.md中推断出来。
功能用例满分200分,P00用例不通过扣30分,P0用例不通过扣10分,P1用例不通过扣5分,P2用例失败不扣分。因此最低得分是 30 分。
| 编号 | 优先级 | 测试场景 |
|---|---|---|
| TC-01 | P00 | 设置页面存在S3配置入口。 |
| TC-02 | P00 | 在系统仍有数据写入时执行数据库备份。下载S3中的备份文件后,数据库必须能够正常打开,刚刚保存的数据完整存在,且不存在数据库损坏、事务数据缺失或外键关系异常。不限制具体的数据库快照实现方式。 |
| TC-03 | P0 | 能够正常新增、修改、启用、停用和保存多个S3配置;前端请求包含系统鉴权、CSRF等必要参数。 |
| TC-04 | P0 | S3备份作为独立模块接入,不影响作品、章节、图片、AI对话及其他已有功能。 |
| TC-05 | P0 | 指定的旧数据库能够平滑升级;已有数据完整,迁移可重复执行,数据库结构正确。 |
| TC-06 | P0 | AK/SK通过现有凭证保险库加密处理,不得明文落库;查询配置时不返回已保存的SK,修改其他字段且未填写新SK时仍能保留原凭证。 |
| TC-07 | P0 | 多个启用目标按照配置顺序执行,停用目标不执行。某个目标超时或返回错误时,后续目标仍继续备份;日志记录该目标的非敏感完整配置和服务端结果,前端显示明确Toast。 |
| TC-08 | P0 | 模拟db/下超过1000个分页对象,清理后只保留配置数量的最新数据库快照;不得删除图片、其他子目录、其他配置前缀或不符合快照命名规则的对象。 |
| TC-09 | P0 | 至少使用一个自定义S3兼容endpoint验证上传。不同目标必须分别使用自己的endpoint、region、bucket、凭证和子目录,不得错误复用其他目标的客户端或配置。 |
| TC-10 | P1 | 存在独立的“是否备份图片”选项;关闭后只上传数据库,不产生图片上传请求。 |
| TC-11 | P1 | 能够通过设置两分钟后的定时任务完成一次S3同步,数据库和图片备份结果符合配置。 |
| TC-12 | P1 | 保存定时备份配置后,系统能够在用户选择的触发时间自动执行备份,并在后续符合该配置的触发时间继续执行。 |
| TC-13 | P1 | 增量同步正常:已存在的图片跳过上传;每次数据库备份生成带时间戳的新对象,不覆盖历史数据库快照。 |
| TC-14 | P1 | UI与全局样式一致,没有明显样式错乱、缺失CSS、异常溢出、遮挡或不可操作控件。 |
| TC-15 | P1 | 按AGENTS.md更新静态资源缓存版本,浏览器能够加载更新后的JavaScript和CSS。 |
| TC-16 | P1 | 服务重启后定时配置能够恢复;重复初始化或重复保存不会注册多个相同任务;某次执行失败不会导致进程退出或后续周期永久停止。 |
| TC-17 | P1 | 同步图片时,远端图片已存在则跳过,确认不存在则上传;如果检查远端图片是否存在的请求因权限、限流、服务端异常或网络问题失败,必须将本次同步判定为失败并进行提示,不得将检查失败误认为图片不存在,也不限制具体的对象检查实现方式。 |
| TC-18 | P1 | AK/SK不得出现在普通日志、错误日志、Toast或审计记录中。 |
| TC-19 | P2 | 在S3设置页面遇到服务重启或会话失效时,能够正常重定向到登录页面。 |
| TC-20 | P2 | 按AGENTS.md完成测试和独立Git commit,提交信息符合Angular Commit Message规范。 |
除了功能用例,还会单独让观众用问卷给不同模型实现出来的UI打分,满分10分。
场外还有两个观察项:
- 版本
91f9189e5bb34e1bbf6bcaa8442e6a1ac61be5c2存在一个因为修改不完整导致的版本号检查报错,看看有没有谁能主动修复。 - Agent在任务期间不能被无关skill误导,也不能读取其他选手创建的worktree。可不能偷看别人答案。
5. The end
这篇先把参赛名单、统一prompt和20项验收规则摆出来,省得后面有人看完结果再说规则是临时改的。
从下一篇开始再让选手分批进场。跑得快只是第一步,数据库迁移、在线备份、S3分页清理、凭证加密、定时任务恢复和UI都得一个个验过去。到时候再看看谁是真的能打,谁只是先把“任务完成”四个字打出来。



