老板用AI三天写到90%,让我明天上线:Java 团队怎么接这10%的烂摊子?

老板用AI三天写到90%,让我明天上线:Java 团队怎么接这10%的烂摊子?

昨天在掘金发了篇《Java 团队落地 AI 的三道坎》,评论区有位兄弟说了句:

让老板来。

我回他:

老板用 AI 一把梭哈,开发到了 90%,剩下 10% 自己搞不定,然后交给员工说:你看我三天就弄到 90% 了,剩下这点东西交给你了,抓紧收个尾,明天咱们上线!这肯定不是段子,这是真实的段子,哈哈哈。

发完我笑了半天,笑着笑着又有点笑不出来。

因为这个场景,我上个月才刚经历过一次。老板周一丢过来一个演示视频,说「人家 AI 三天搭了个 Agent,你这周也搞一个上线」。周三他拿着一段 cursor 生成的代码找我:「已经 90% 了,你补补安全、审计、部署就行。」

我打开代码一看:接的是公开 GPT-4 接口,日志里躺着客户手机号,工具调用链藏在某个 prompt 里,出错了没有回调。

所谓 90%,是能跑 demo 的 90%。离能上线,差的是生产级的灵魂。

这篇文章就从评论区这个真实段子出发,聊聊 Java 团队怎么把那 10% 的烂摊子,补成能上线的工程能力。


一、先看清楚:那 10% 到底藏在哪

AI 写代码确实快。一个 CRUD、一个 Agent 骨架、一段 MCP 调用,cursor / copilot / claude code 分分钟能跑出来。

demo 能跑 ≠ 生产能上。中间至少差着五个维度:

维度 90% 的 Demo 100% 的生产级
模型 直接调 OpenAI / 云 API 私有化 / 网关 / 限流熔断
数据 为了跑通,客户信息直接传 不出域、脱敏、可审计
工具 能调用就行 调用要可追溯、可回滚、有超时
错误 报错重试,不行刷新 异常处理、降级、人工兜底
合规 先上线再说 安全评审、审计日志、数据治理

发现没?AI 最擅长的是把「能跑通的那 90%」写出来。

它不擅长的,恰恰是决定能不能上线的那 10%:边界 case、数据安全、可观测、可审计、可回滚

而这些,刚好是后端工程师的老本行。


二、Java 团队落地 AI,三道坎怎么补

上篇文章拆了三道坎,今天套进这个「90% vs 10%」的场景,你一眼就能知道自己该补哪。

坎 1:Python 鸿沟

很多老板 demo 是用 cursor + Python 脚本跑出来的,但你们公司的 ERP、权限、MyBatis、Dubbo 全是 Java。

那 10% 就是:怎么把 demo 接进现有 Java 体系,而不是推倒重来。

路线 A:Spring AI(贴合 Spring 生态)
java 复制代码
// 最小骨架:把现有 Service 注册成 Agent 可调用的工具
@RestController
public class AgentController {
    private final ChatClient chatClient;

    public AgentController(ChatClient.Builder builder, OrderService orderService) {
        this.chatClient = builder
                .defaultTools(new OrderTools(orderService))
                .build();
    }

    @PostMapping("/agent/chat")
    public String chat(@RequestBody String question) {
        return chatClient.prompt().user(question).call().content();
    }

    public record OrderTools(OrderService svc) {
        @Tool("根据订单号查询订单状态")
        public String queryOrder(@ToolParam("订单号") String orderNo) {
            return svc.status(orderNo);
        }
    }
}
路线 B:LangChain4j(更轻,零 Spring 也能跑)
java 复制代码
public interface OrderAgent {
    @UserMessage("客户问:{{it}}")
    String answer(String question);

    @Tool("查询订单状态")
    String queryOrder(String orderNo);
}

OrderAgent agent = AiServices.builder(OrderAgent.class)
        .chatLanguageModel(OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_KEY")).modelName("gpt-4o").build())
        .build();

核心思路:不要为 AI 换语言,把你的 Service 变成 AI 的工具箱。

坎 2:数据出域

老板 demo 为了快,大概率接的是云上大模型。你接过来那 10%,首先要改的就是模型网关。

java 复制代码
@Configuration
public class LocalModelConfig {
    @Bean
    public ChatClient localChatClient(ChatClient.Builder builder) {
        OpenAiApi localApi = OpenAiApi.builder()
                .baseUrl("http://192.168.10.20:11434/v1") // 内网 Ollama
                .apiKey("ollama")
                .build();
        return builder
                .model(OpenAiChatModel.builder().openAiApi(localApi).build())
                .build();
    }

    @Bean
    public ChatClient rateLimitedClient(ChatClient client) {
        return client.mutate()
                .defaultAdvisors(new RateLimitAdvisor(100))
                .build();
    }
}

数据不出域是底线,限流熔断是体面。

坎 3:黑箱无法审计

这是那 10% 里最值钱的一块。AI 调用工具、传参、纠错全是黑箱,出了问题没法复盘。

Spring AI 2.0 把工具调用逻辑放到了 Advisor 链,正好插桩:

java 复制代码
public class AuditAdvisor implements Advisor {
    private static final Logger audit = LoggerFactory.getLogger("agent-audit");

    @Override
    public AdvisedResponse adviseCall(AdvisedRequest request, CallAroundAdvisorChain chain) {
        long start = System.currentTimeMillis();
        audit.info("AGENT_REQ ts={} user={} tools={}",
                start, request.userText(), request.toolNames());

        AdvisedResponse response = chain.nextAroundCall(request);

        audit.info("AGENT_RES ts={} costMs={} contentLen={}",
                start, System.currentTimeMillis() - start,
                response.response().getResult().getOutput().getText().length());
        return response;
    }
}

确定性、可审计、可回滚------这些是企业级后端的看家本领,现在把它焊到 Agent 上,就是你的护城河。


三、收尾清单:下次遇到这 10%,直接照着打勾

  1. 补语言桥接:用 Spring AI / LangChain4j 把 demo 接进现有 Java 栈。
  2. 补模型网关:私有 Ollama / vLLM,统一 baseUrl,加限流熔断。
  3. 补审计链路:Advisor 记录每次工具调用入参、出参、耗时。
  4. 补异常兜底:工具调用失败、模型超时、结果格式错误,要有降级策略。
  5. 补数据治理:敏感字段脱敏,日志不落原始数据,权限按业务角色隔离。
  6. 补发布流程:安全评审、压测、回滚演练,走完再谈上线。

记住:能上线 ≠ 能跑通。


四、写在最后

AI 不会让后端失业,但会淘汰那些只会写 demo 的后端。

老板用 AI 三天干到 90%,不是坏事。坏的是有人真觉得剩下 10% 只是「收尾」。

那 10%,是生产级的灵魂:安全、审计、稳定性、可维护性。而这恰恰是后端十年的老本行。

所以下次老板再让你「收个尾」,你可以回他:

哥,AI 写的 90% 我一天就能接过来。但后面这 10%,才是真正值钱的活儿。

你们有没有被 AI demo 丢过烂摊子?评论区聊聊,我挑真实的下篇拆。


想系统跟一遍「后端转 AI Agent 的实战路线」,完整资料见:wangzhongyang.com

#AI Agent #Java #后端开发 #Spring AI #LangChain4j #大模型落地 #程序员转AI #Agent工程化

相关推荐
gugucoding1 小时前
55. 【Java】Maven:项目构建的“管家”
java·maven
郑州光合科技余经理2 小时前
海外版多语言团购系统架构:主数据互通与核销边界
java·开发语言·前端·后端·系统架构·php·ai编程
Jesse_EC3 小时前
为什么我设置的 contentLength 到了消费端变成了 0?
java
vipxieliang3 小时前
ValidX 的 Date 和 DateTime vs JPA 的 Temporal 对比
java·后端
杜touch3 小时前
Spring框架的AnnotationConfigApplicationContext类启动的流程
java
AI人工智能+电脑小能手4 小时前
大白话说Java设计模式-26-策略模式(业务实战篇)
java·spring·设计模式·策略模式·支付系统·算法切换
不是光头 强4 小时前
Java 后端 AI 技术选型与学习路线
java·人工智能·学习
paopaokaka_luck5 小时前
基于springboot3+vue3的文山民族文化资源展示与推广平台(协同过滤算法、Echarts 图形化分析)
java·前端·spring boot·学习·echarts