Quanta

← 返回 Quanta 简报

高调用量团队的三道闸门:用 Claude Code 结对维护老旧 Java 服务

编码 Agent 规模化ZH3 次阅读

01 · 先把维护任务缩到一个可验证的行为

对长期运行、调用密集的 Java 服务,最大的风险往往不是代码难看,而是没人能完整说清它为什么这样运行。一个看似多余的空值判断,可能维持着旧客户端的兼容性;一次事务边界调整,也可能改变重试后的结果。让 Claude Code 参与结对编程,起点不应是整包重构,而应是一个边界明确、能够验证的维护任务。

团队负责人可以先选一处重复逻辑、一条异常分支,或一个已有缺陷的修复。由工程师定义预期行为,工具负责辅助定位、解释和提出补丁。人掌握验收标准,工具提供候选方案,比要求它“全面优化服务”更适合遗留系统。

02 · 第一道闸门:先证明现有行为,再允许改动

开始前,准备一份简短的仓库说明:构建命令、实际使用的运行环境、测试入口、模块依赖,以及禁止修改的区域。明确提醒工具关注事务传播、序列化字段、数据库映射和公共接口;这些地方不能仅凭代码风格判断对错。

  • › 先要求 Claude Code 列出调用链、涉及文件和不确定事项,不立即写代码。
  • › 对缺少覆盖的路径补充特征测试,记录当前输入、输出和副作用。
  • › 把当前行为与期望行为分开说明,避免测试无意中固化已确认的缺陷。
  • › 使用脱敏样本,不把生产凭据、客户数据或完整日志直接交给工具。

构建失败时,先区分环境问题、历史失败与本次修改造成的回归。没有跑通的测试必须标记为未验证,不能把工具的解释当作执行证据。

03 · 第二道闸门:一次补丁只承担一种风险

结对过程可以采用固定节奏:工程师描述问题,Claude Code 提出计划,双方确认范围,再生成最小补丁。把“修复超时处理”和“整理整个服务层”拆成两个任务,也把行为变更与格式调整分开,减少审查噪声。

每轮都要求工具说明修改依据、兼容性影响和遗漏的测试。审查者重点检查异常是否被吞掉、资源是否关闭、重试是否保持幂等,以及并发访问是否引入共享状态。对于数据库变更,还应单独审查锁范围、迁移顺序与回退条件。

给工具的权限也要保持最小化。读取代码、执行本地测试和修改文件可以分阶段开放;删除文件、访问外部网络或执行数据库操作,应另设人工确认。不要让一次维护任务顺带获得生产操作权限。

04 · 第三道闸门:验证结果必须能支持小流量发布

通过单元测试只是起点。涉及框架配置、数据访问或远程调用时,还要执行相应的集成测试与接口契约检查。性能敏感路径应使用可重复的负载比较,观察延迟、资源消耗和数据库访问变化,而不是接受“这段代码应该更快”的判断。

合并前要求提交说明包含修改范围、测试命令、实际结果和残余风险。发布时保留小流量验证与回退路径;涉及数据写入的改动,必须确认旧版本能否读取新数据。工具可以起草检查单,但放行责任仍属于团队。

05 · 把持续调用成本纳入结对流程

高调用量团队需要管理的不只是单次回答费用,还有反复读取仓库、失败重试和无效长对话带来的消耗。优先提供相关模块与必要上下文,阶段结束后保存简短交接记录,避免每次重新扫描整个项目。

如果团队同时使用多种模型和编程工具,可以考虑 Quanta:它采用按量付费方式,以一个余额覆盖多种模型,并可配合 Claude Code 使用。例如,在确认任务适配后,分别试用 Claude Sonnet 5.5 与 Claude Haiku 4.5,比较复杂分析和边界清晰任务的实际效果,而不是仅凭模型定位分配工作。

Quanta 按实际词元计量,缓存写入与缓存读取分别计价,因此预算应拆开观察首次上下文投入、后续读取和输出消耗。可为试点任务设置调用预算与人工停止条件;当工具反复修改同一处却无法通过验证时,应转交工程师定位,而不是继续堆叠调用。

准备开展受控试点的团队,可以开通 Quanta 账户,把调用消耗与验证结果一起记录。最终评估应看每个被接受补丁的总成本、审查负担和上线风险,而不是生成代码的数量。

06 · 用一次完整维护闭环决定是否扩大使用

先让一个维护小组跑完定位、补测试、修改、审查和发布的完整流程,再决定是否推广。记录工具在哪些环节节省时间、哪些地方需要返工,并据此调整任务模板和权限。对遗留 Java 服务而言,成熟的结对方式不是让模型接管更多代码,而是让每一次改动都有边界、有证据,也能安全撤回。