做技术选型这么多年,我最大的感受是:真正难的不是技术本身,而是在一片模糊里做决定。你手上有二十个方案,每个方案都有人站台,每个方案都有翻车案例,最后往往拼的是谁的嗓门大,或者谁更熟悉某个技术。后来我开始把AI当作选型副驾驶,让AI辅助决策,这套方法帮我省下了大量查资料和撕扯的时间。这篇文章把我踩过的坑、用过的提示词和决策模板一起整理出来,希望能让你的下一次技术选型少一点玄学,多一点可追溯的判断依据。
1. 为什么技术选型需要AI辅助决策
1.1 传统选型流程的三个痛点
先说痛点,不然你不知道为什么非要用AI。
第一个痛点是信息收集成本高。你以为你熟悉某个技术,其实你熟悉的是它三年前的模样。我去选型的时候最怕的从来不是“没方案”,而是“不知道自己不知道”。数据库选型可能漏掉新的云原生方案,消息队列选型可能漏掉自带流处理的中间件,等开会开到一半突然有人翻出一个冷门方案,整个评估又要重来。
第二个痛点是决策维度太多,人脑算不过来。功能、性能、社区活跃度、许可协议、团队熟悉度、运维复杂度、未来扩展性,这些维度叠在一起,靠一张Excel表硬比,很容易比着比着就开始凭感觉打分。尤其当多个方案分数接近的时候,谁更会讲故事,谁就赢了。
第三个痛点是团队偏见和路径依赖。人是有惯性的,用Java的人天然觉得Java生态才是正道,用Go的人觉得Go的并发才是未来。这种偏见放在个人身上没问题,放在技术选型里就是大坑。因为选型一旦定下来,后面三年所有人都在为这个决策买单。
这三个痛点不是简单多搜两篇资料就能解决的,你需要一个没有情绪、能快速整理信息、愿意被反复追问的助手。AI辅助决策正好把这块短板补上。
1.2 AI不是决策者,是信息整理器和“杠精”
我要先说清楚一个立场:AI辅助决策,重点在“辅助”,不在“决策”。
AI做得好的是信息整理、候选方案枚举、对比维度补全、风险点反向提醒。比如你问“作业系统用定时任务还是消息队列”,AI可以把两种方案在可靠性、时效性、运维成本、故障恢复上的差异列成表格,让你一目了然。这个过程效率极高,比你自己翻十篇博客快得多。
但AI做不好的是对你们团队实际情况的理解。它不知道你们有多少人能维护这套系统,不知道你们的生产环境有多老,也不知道你们老板对工期有多敏感。这些信息只在你脑子里,你得主动喂给它。
所以我的用法是:把AI当成一个非常博学但没有工作经验的顾问,我先告诉它完整的背景,然后让它输出结构化对比,最后我把它的结论当成参考输入,而不是最终答案。这种方式能帮团队把所有候选方案拿到桌面上,避免“看谁顺眼就选谁”的尴尬。
2. 技术选型的AI辅助决策方法论
2.1 先写决策上下文,而不是直接问“选什么”
很多人用AI做选型的姿势,上来就是一句“微服务用什么数据库”。这种问法不是不行,但得到的答案一般很水,因为AI没有足够的信息判断你的真实场景。
我习惯先写一份“决策上下文”,把项目情况说清楚,再让AI给建议。你可以把它理解成给医生描述病情,你说得越具体,诊断越靠谱。
一份合格的技术选型上下文至少应该包含这些信息:
| 上下文项 | 需要写清楚的内容 |
|---|---|
| 业务目标 | 这次选型要解决什么业务问题,是拉新、转化、还是内部提效 |
| 用户规模 | 当前用户量、预期增长量、峰值并发大概是多少 |
| 流量模型 | 读写比例、实时性要求、有没有明显的波峰波谷 |
| 技术约束 | 现有技术栈、云环境/自建机房、必须兼容的旧系统 |
| 团队情况 | 团队人数、主力语言、对候选技术的熟悉程度 |
| 时间窗口 | 多久必须上线,有没有试错空间 |
| 许可与合规 | 是否允许开源协议变更、是否需要私有化部署 |
这个表我每次选型都会填。填完之后,把它一起贴给AI,得到的答案质量会完全不同。
比如你问“Java后端实时推送选什么”,AI可能会直接说WebSocket。但如果你告诉它“移动端为主、弱网环境多、需要省电”,AI就会把MQTT列进前排。背景信息不同,结论就不同,这不是AI在端水,而是问题本身需要更多约束才能收敛。
2.2 让AI生成候选清单和对比维度
上下文写完之后,第一轮对话不要急着要结论,先让AI列候选清单。
我会用下面这种提示词模板:
我们团队是Java技术栈,维护在K8s集群上,需要做一个面向Web端和移动端的实时消息推送服务。单机预计10万在线连接,消息延迟希望控制在1秒以内,要求自部署,不依赖商业云产品。请先不要给最终结论,帮我列出技术方案候选清单,按适用场景、优势、劣势、团队学习成本、运维复杂度这五个维度做对比。这个提示词的关键在最后一句:“先不要给最终结论”。一旦你说了这句话,AI就会老老实实做对比,而不是急着给你打分排名。
我实测下来,AI一般会把WebSocket、SSE、MQTT、RSocket、WebRTC DataChannel、短轮询、长轮询都列出来。里面有一些方案你可能一开始根本没考虑过,比如RSocket,它在Java生态里其实很能打,只是平时存在感不高。这个“查漏补缺”的作用,就是AI辅助决策最直观的价值。
拿到第一版对比表之后,我还会追问一句:“有没有被低估的方案?哪些冷门方案在特定场景下反而更合适?”这一步能逼着AI跳出主流视野,把边缘方案也暴露出来。
2.3 把“感觉”变成可评分的决策矩阵
候选清单出来之后,下一步是建立评分模型。
先说一个常见错误:让AI直接打分,但你没给权重。AI默认会给每个指标同样的权重,这跟现实严重不符。对某些业务来说实时性就是一切,运维复杂度可以往后放;对另一些业务来说,运维复杂度才是决定项目能不能长期活下去的关键。
所以我建议先定权重,再让AI打分。权重总和是100%,这样分数可解释、可回溯。
拿前面的实时消息推送场景举例,我可能会这样设置:
| 评分维度 | 权重 | 说明 |
|---|---|---|
| 实时性 | 30% | 核心业务要求端到端延迟低 |
| 并发连接能力 | 25% | 单机10万在线是硬指标 |
| 团队熟悉度 | 15% | 决定上手和排障速度 |
| 运维复杂度 | 15% | 没人愿意天天处理连接风暴 |
| 生态成熟度 | 15% | 社区活跃,坑少,文档全 |
然后我会对AI说:
请按上表权重,对这五个候选方案进行加权评分,每个维度打1到10分。不要只给总分,要把每个维度的分值和计算过程列出来,最后说明为什么某个方案得分更高。让AI列出计算过程这个动作很重要。因为AI可能会算错,也可能为了迎合你的措辞而调分。你把计算过程摊开,至少能确认它的逻辑是否自洽。算完之后,AI给的很可能是WebSocket以8.9分微弱领先SSE的8.8分。这个差距小到没有统计意义,但没关系,真正的价值是它让团队看到了分数接近背后的维度差异,接下来就该做原型验证了。
2.4 用AI做反向校验
我最后一步不是让AI“帮我选”,而是让它“骂骂我的选择”。
一旦团队有了倾向性方案,我会把倾向方案和理由发给AI,然后加一句:
我们目前倾向于选择WebSocket方案,理由是实时性强、生态成熟、团队熟悉。请从反面攻击这个选择:在什么情况下它会变成错误决定?如果要推翻这个选择,最可能的原因是什么?这招非常有用。AI会列出WebSocket的短板,比如网关层连接管理复杂、移动端弱网断线重连困难、长时间连接对负载均衡不友好等等。这些问题不一定都会发生,但至少逼着团队提前准备应对方案。
反向校验的本质是把选型从“证明我对”改成“证明我不会错”。很多时候团队选型失败,不是选了个烂技术,而是只看了优点没看缺点,结果上线之后被缺点反噬。AI辅助决策能把这个反噬提前到成本最低的阶段。
3. 实战:用AI辅助选一个实时消息推送方案
3.1 项目背景和约束条件
为了更好地说明这套方法怎么落地,我拿一个我实际参与过的场景举例,细节做了脱敏处理。
当时我们要给一个内部业务平台做实时消息推送,业务方提的需求很模糊:订单状态变了要通知前端,后台操作要实时同步,偶发跨区域通知。我们团队是Java技术栈,服务已经跑在K8s上,没有专职运维,希望方案别太折腾。
我先把这些背景整理成决策上下文,写清楚几个关键约束:
- 在线连接数峰值约5万到10万,主要来自Web端,少部分来自移动端H5。
- 实时性要求中等偏上,秒级延迟能接受,但不能出现大规模消息堆积。
- 不能引入商业云推送服务,需要自部署。
- 团队对WebSocket有基础了解,对MQTT几乎没有生产经验。
- 上线时间窗口只有三周,不允许做超过两周的架构改造。
这个背景一摆出来,其实已经把很多方案淘汰掉了。比如短轮询虽然简单,但5万连接下会产生大量无效请求,运维压力很大;RSocket虽然性能好,但团队不熟,三周内很难保证交付质量。AI的作用不是替我做这些判断,而是把这些“我脑子里知道但没说出口”的约束变成显性对比条件。
3.2 三轮AI对话的过程与关键提示词
第一轮,我让它列候选方案。我用的是前面那套“先不要给结论”的提示词,最终拿到了六七个候选方案。我没有要它一次性把所有细节都讲完,而是让它先给对比表格,控制信息量。
第二轮,我让它按维度打分。分数表出来之后,我特意追问了一句:
SSE和WebSocket在这个场景下分数很接近,请指出它们各自在什么情况下会崩,以及崩之前有没有预警信号。AI给出的回答是:SSE在HTTP/2连接被代理层断开时容易静默重连,而WebSocket在客户端断网时会不断触发重连风暴,需要设计指数退避。这些点看起来是常识,但放在决策表里就能帮助团队提前写设计文档。
第三轮,我做了反向校验。我说“我们比较倾向WebSocket”,让AI列举推翻这个倾向的理由。它提到了网关层超时配置、移动端iOS Safari对WebSocket的限制、以及长连接内存泄漏需要压测验证。这些问题我们后来在原型验证阶段真的遇到了,而且都在可控范围内。
三轮对话结束后,我没有要求AI给一个“最终结论”。因为到了这个阶段,团队已经知道该验证什么了,再让AI给结论反而容易导致甩锅。
3.3 打分结果与实际选择
最终的打分结果大致是这样的:
| 维度 | 权重 | WebSocket | SSE | MQTT | RSocket |
|---|---|---|---|---|---|
| 实时性 | 30% | 10 | 9 | 8 | 10 |
| 并发连接 | 25% | 8 | 7 | 9 | 8 |
| 团队熟悉度 | 15% | 9 | 10 | 6 | 5 |
| 运维复杂度 | 15% | 7 | 10 | 8 | 5 |
| 生态成熟度 | 15% | 10 | 9 | 8 | 5 |
| 加权总分 | 100% | 8.9 | 8.8 | 7.95 | 7.25 |
可以看到WebSocket和SSE总分非常接近,SSE在运维复杂度上明显占优,WebSocket在实时性和生态上占优。团队最后选择WebSocket,并且用Spring WebSocket加上Redis Pub/Sub做了一个轻量原型。为什么这么选?不是因为总分高那0.1分,而是因为我们认为“实时性可以更高”和“团队已有熟悉度”在这个项目里比“运维简单”更不能妥协。
这个结论不是AI下的,是我们根据AI提供的信息人工下的。但AI辅助决策帮我们节省了很多时间,至少大家不用再花三天去争论“SSE到底算不算推送技术”这种话题。
4. AI辅助技术选型中常见的坑和对策
4.1 AI信息幻觉:推荐了一个不存在的组件
AI模型是按照训练数据生成的,它会把一些概念拼凑在一起,产出一个看起来合理但实际不存在的方案。我遇到过AI推荐了一个叫“Spring Messaging Gateway”的组件,听着挺像回事,但查下来发现没有这个官方项目。
对策很简单:拿到AI给出的每一个关键结论,都必须去官方文档或GitHub仓库确认。我现在的习惯是要求AI在输出中标注“这个结论建议去xx官方页面复核”,并把复核结果作为选型材料的一部分存档。AI可以当信息索引,但不能当最终信息来源。
4.2 知识过期:只看热闹没看版本生命周期
大模型的训练数据有截止时间,它对最近一年的版本变化并不敏感。比如某些开源软件换了许可证,某些组件从stable变成maintenance模式,这些信息AI不一定能及时反映出来。
所以我做选型时会再补一个动作:单独问AI“请列出这些方案最近一年的重要版本变化和license变更”,然后自己快速核对changelog。这两个信息对选型的长期影响很大,因为一个正在调整许可证的数据库,可能在第二年就让公司法务发来一封信。
4.3 “端水式回答”和“墙头草式结论”
不带约束条件问AI,它很容易给你一堆“各有优势,看具体场景”的废话。不是AI想逃避,是因为你给的信息太少,它只能端水。
如果你需要它给出倾向性意见,就把约束条件加满,然后明确指令:
如果必须在这几个方案里选一个,且团队只有三周时间上线,请选一个你认为风险最低的方案,并说明你愿意承担什么样的代价。这个提示词会逼着AI做取舍。它一旦做出取舍,你就能看到取舍逻辑,然后判断这个逻辑是否符合团队现实。如果不符合,你自己也能想清楚哪里不符合。
4.4 把AI输出当最终决策,责任无人承担
技术选型最大的风险不是选错,而是没人敢为选错负责。如果团队把AI推荐的结论直接拿去做决策,出了事之后大家都可以说“这是AI说的”,这就很危险了。
我的经验是:AI辅助决策的全过程必须留痕。你和AI的对话、生成的对比表、会议讨论纪要、最终选型理由,全部归档。归档不是走流程,而是让三周后、三个月后的人回头看,还能知道当时的约束条件是什么,为什么没有选另一个方案。这种可追溯性,才是AI辅助决策最有价值的地方。
5. 从辅助决策到落地闭环:让选型结果可追踪
5.1 让AI生成ADR(架构决策记录)草稿
选型结束之后,不要急着写代码,先写一份ADR。ADR是架构决策记录,用来描述“我们决定用什么、为什么、放弃了什么、代价是什么”。
AI很适合写ADR草稿,因为它刚参与完决策过程,对上下文掌握得很全。我会给它一个模板:
请基于前面的对比表和我们最终选择的方案,帮我写一篇ADR草稿。包含背景、决策、理由、备选方案、被否决原因、预期风险和后续验证指标。语言要克制,不要夸大,不要写“显著提升”“完美解决”这种词。AI生成的草稿可能有点空,但骨架已经有了,我再把团队讨论中的真实细节填进去。这样ADR不会变成一篇没人看的文档,它会成为团队后续排障时的参考地图。
5.2 用AI Agent持续跟踪选型后的技术指标
选型不是一天完成的,很多问题要等系统上线后在真实流量下才会暴露。我后来会把一些跟踪工作也交给AI Agent来做。
最简单的用法是让AI定期对比选型时的预期指标和线上真实指标。比如当时我们预期WebSocket单机连接数是10万,实际压测能达到8万,那AI Agent就可以帮你从监控数据中抓出连接数趋势,标注出哪个时段有连接泄漏的嫌疑。再进一步,它可以把这些数据和原来的ADR关联起来,形成一个“预期和实际偏差记录”。
这个动作的意义在于:技术选型的决策质量不是看选型当天谁说得对,而是看系统运行半年后,当初的约束条件是否还成立,当时的取舍是否换来应有的收益。AI辅助决策如果只停留在“聊天出表”阶段,价值会打折扣。真正让我觉得这方法有用的,是它把选型从一个一次性的会议,变成了一个可以复盘、可以修正的工程过程。
我个人现在做选型,都会把AI生成的对比表、评分过程和反向校验记录放进项目文档库。遇到团队争论,我就把文档打开,让大家对着当时的权重聊。很多分歧在看完原始背景之后就自然消失了。技术选型没有完美的答案,但可以有不留遗憾的决策过程。