一、缘起:部落统计之痛
玩部落冲突的首领们或许都体会过,四五十人的部落,让成员打部落战和对死鱼的清理都是一项令人头疼的工作。
平时的部落战加上每月一次的联赛,每场几十人参战。打完要想要知道成员的进攻情况是很麻烦的,一场两场还好说,时间长了几个月到底谁经常不打部落战很难统计。想要统计靠 Excel 手抄或群里人肉报数,费时、易错,历史数据更是留不下来——想知道某位成员上半年的参战率走势?只能翻聊天记录,很多时候历史数据根本无法统计。
于是我决定给部落写个 App:战报数据进去,统计结论出来,历史留痕,多端同步。它就是 COC War Tool,前些天刚发布 v4.9.0 正式版——36 个 version code、30 多次发布之后。
二、现在它能做什么
产品是一个原生 Android 应用(Kotlin + Jetpack Compose + Material 3),底部导航四个页面:战报、统计、成员、设置。
统计是核心。 月度总览(满星率、三星率、进攻率)、成员逐场明细、未进攻人员公示、积分制月度最佳(每颗星 +1、单场满 6 星 +2、空刀和未参战都要扣分),以及联赛赛季的 7 轮聚合视图与出战轮换统计。
数据进来有三条通道。 一是 JSON 战报,粘贴或选文件即可,解析器对残缺字段做了大量兜底,乱一点的 JSON 也不至于崩;二是 CSV 表格(推荐格式,简洁),给习惯用表格维护数据的人;三是 AI 截图识别——截图交给视觉大模型,转成 CSV 走同一条导入链路。识图这条路的准确率有明显缺陷,成员名的模糊误读、个别数值偏差都要求人工核对,所以它只是辅助入口,不承诺全自动,推荐使用软件内的自动截图然后交由豆包app进行文字提取,实测准确率95以上,哪怕有些许误差,经过软件处理都可以直接使用。
这里展示部分页面效果,提供了多种配色可选:

周边能力:花名册管理(Levenshtein 模糊匹配导入建议、连续缺席统计、离队标记)、WebDAV 双向云同步(坚果云可用)、游戏内悬浮球一键截屏、内置版本更新检查。
三、AI 结对开发:这个项目真正的主角
开发这个项目对我而言首先是为了解决一个部落管理的痛点,其次是最近vibecoding很热门,作为一个外行,我想验证在真实项目里,AI 能把一个完整 Android App 扛到什么程度?
最后效果比我想象的要好一些,迭代最密集的时候,v4.0、v4.1、v4.2 在同一天连发;发布 v4.9.0 时,alpha、beta、rc、stable 四个阶段在同一天走完。30 多个版本里,代码几乎全部由 AI 主导实现,我的角色逐渐收敛成三件事:定口径、做取舍、验收。
这个app能够顺利完成开发离不开的是文档先行的约束。仓库里最重要的两份文件:
- agents.md,项目约定。 架构地图、模块职责、构建命令、编码规范,全部写给 AI 看。任何一次新会话,AI 靠它冷启动:不会把模块名写错,不会用 kapt 代替 KSP,不会在统计口径上自由发挥。
- docs/RULES.md,统计口径的权威定义。 满星率的分母是什么、联赛每人几个进攻槽位、离队成员算不算未参战扣分……先在这里裁决、写清,然后才轮到代码。文件开头那句「改口径必须先改此处」,是踩坑踩出来的。
效果:232 个单元测试、22 个测试文件守护统计核心——StatsCalculator 被刻意写成纯函数,就是为了可测;detekt 与 lint 挂了门禁;上千行的旧统计页让 AI 拆成五个文件,一次通过。AI 特别擅长这类边界清晰的活儿:大重构、补测试、写数据库迁移。这个项目 Room 一路升到 v8,7 个手写 Migration 全部靠它完成并通过链式测试。
短处也一样清楚。审美和交互取舍,AI 给不了答案——下拉刷新要不要做成悬浮胶囊、卡片渐变是深是浅,来回试了很多版,最后都得我自己盯着屏幕定。口径更是如此:AI 能很快实现任何一种口径,正因如此口径必须由人先想清楚写下来,否则它会高效地把错误实现三遍。
四、几个印象深刻的坑
统计口径反复横跳。 满星率的理论最大星数,v3.4 按进攻槽位算,v3.5 改成参战人数×3,v4.0 才最终确认——依据是游戏机制:重复进攻同一对手不再产星。口径错了,界面再漂亮也是错的数字。这也是 RULES.md 和那 232 个测试存在的理由。
APK 从 61MB 瘦到 13MB。 前期没开代码缩减,包体一路膨胀。启用 R8 与资源压缩后掉到 13MB,代价是补一堆 ProGuard keep 规则——Gson DTO、Room Entity、备份格式类,漏一个就是运行时崩溃。
安全存储的静默降级。 WebDAV 密码原先用官方 security-crypto 加密,后来发现该库已停止维护,而且加密存储不可用时会静默降级成明文落盘。最后自己用 AndroidKeyStore + AES/GCM 实现了 SecurePrefs:旧明文自动迁移,加密不可用直接拒绝写入,而不是装作没事。
五、结语
现在这个 App 在部落里日常运行:战报导入、月度公示、最佳评选,从人工统计变成了两分钟的事。源码在 Gitee 开源,APK 走七牛云 CDN 分发,应用内更新检查按标准 SemVer 四阶段通道推送。
回头看,最大的收获可能不是工具本身,而是跑通了一套 AI 结对开发的工作流:人负责口径、取舍和验收,AI 负责实现、重构和守护回归。分工清楚了,一个人也扛得动一个完整的产品。
最后,感谢大家能够花时间看到这里,如果您对这个软件有兴趣可以在下方链接下载体验。