0x01 成绩
拿到了 (64/681) 前 10%,token 消耗 1800 rmb ,当然前十的梦不是没想过,但是现实就是这样,能力的积累不是我一个 agent 开发的小白开发 3 天能比过的,所以只能这样安慰安慰自己。
0x02 差距
在跟第一名的交流中,他告诉我他的并发 设置在了 8 而我的设置是在 16 并且我的瓶颈也不是说题目解的不够快,而是难题解不出来,如图可见我的增量到后半段速度明显停滞,所以我认为差距在知识库的积累和决策上。
本次成绩–
并且第一名的 token 量也保持在 10 亿左右,而我是他的 1.5 倍,这足以说明我的上下文管理堪称灾难,所以,下次加油。
0x03 改动
3.1从零建起编排层 —— tsec/,6,335 行
Cairn 本身只调度“相位任务”,它不知道“靶机”是什么。这一层是补上它不管的部分:
| 改动 | 解决的问题 |
|---|---|
| 预算阶梯 300→600→1200→2400→3600→5400s,按题升档 | 短了做不完、长了占着名额空转。分档让便宜先试、有苗头再加时 |
| 升档后排到队尾 | 让还没轮到过的题先跑,避免少数难题长期占住所有名额 |
| 最后一档改为循环(原来越过末档返回 None,等于不限时) | 三道题可以永远锁死全部名额 |
| 靶机 start / close / 复用 / 迁移 | 名额绑在靶机上,不管理靶机就等于不管并发 |
3.2让“模型能解”变成“能连续解” —— Cairn 侧的改造
| 改动 | 解决的问题 |
|---|---|
| 黑板跨会话持久化 + 方向(intent)续跑 | 每档都是新会话,没有黑板就每次从头侦察 |
| 项目重建时迁移黑板 + 迁移未结案方向 | 换了靶机地址就要新建项目,不迁移等于前功尽弃 |
| 方向寿命 3600 → 21600 秒 | 原来是按“每档 300 秒”标定的,阶梯改成多档后会在中途把方向作废 |
| 规则合并成 1 个文件下发 + 带版本戳 | 原来是 8 个文件;且续跑时“既要便宜、又要最新” |
3.3最后一晚修的五个稳定性缺陷(这是最有价值的部分)
| # | 缺陷 | 后果 | 修法 |
|---|---|---|---|
| 1 | 升档不释放靶机 | 3 个名额只剩 1~2 个真正在用 | 升档时关靶机让位 |
| 2 | 迁移事实不带 source_intent ⇒ 分片判据认为“零产出” | 深题永远被限制在 300 秒(实测 execute_ms=30003x 连续三次) | 迁移时写一条 id=migrated 标记,判据只认它 |
| 3 | close 失败后无人重试 | 一个瞬时网络错误 ⇒ 容器被遗弃 40 分钟,导致吞吐下降 1/3 | _pending_close 每轮补关,放在补位之前 |
| 4 | 平台调用无总时限 | requests 的 timeout 是每次读超时 ⇒ 卡死时 runner 静默冻死,整轮报废 | SIGALRM 实际总时限(镜像内实测 1.0s 拦停 30s 调用) |
| 5 | 日志管道在关键路径上 | 平台不读日志 ⇒ tee 卡 ⇒ runner 卡 | 直写文件 + 独立 tail -F + 看门狗(480s 无增长就杀掉重启) |
因为改动很零碎,关键改动我就让 ai 帮忙写了,大多数是题目的优先级的问题,比如遇到一道难题,我不会啃 1h 而是先给他 6m 试水,等所有题都试过 6m 之后再去继承原会话接着做。
0x04 总结
所以说,这次参赛还是给我带来了不错的经验的,如果不用烧掉我 1800 的 token 的话,也让我看明白了,我比多少人强,又有多少人比我更厉害,差距在哪,所以期待自己再接下去时间的进步,看看下次能不能有更好的成绩!