墨墨墨墨墨宝の宝藏之地
首页项目归档照片墙音乐灵境说说杂谈友链关于

云端杂谈

“ 代码、学术、提瓦特与泰拉大陆的碎片记录 ”

cover
2026-09-11 23:51:08

从“再优化一下”开始,AI 项目就很难结束了

做 AI 项目越久,我越觉得,自己以前对“现场实施”这件事的理解可能有点过于理想化。 我以前一直觉得,现场实施应该是一件很明确的事情。 公司总部先提供一套基础可用的产品。这里的“可用”不代表一定多先进,也不要求什么能力都做到行业顶尖,但至少核心功能得是完整的、稳定的、经过验证的。 知识库能不能用,文件解析能不能跑,通用问答到底适合什么场景,Agent 能做到什么程度,这些东西总部自己应该先心里有数。 然后销售和售前基于这些已经验证过的能力去谈项目。 客户有需求,可以定制,可以适配,也可以在现有能力上做一定程度的扩展,但前提应该是:这个东西公司知道怎么做,技术上验证过,也知道最后怎么验收。 而不是销售为了把单子签下来,先把能力吹出去。 “这个可以。” “那个也能做。” “AI 很智能的。” 最后合同签完,项目进场,真正开始做的时候才发现: 这个产品其实根本没有这个能力。 这个需求以前也没人做过。 这个所谓的“标准能力”只是 Demo 跑通过。 甚至连最后做到什么程度算完成,都没人知道。 然后现场就开始了真正意义上的擦屁股。 我以前理解的现场,应该更多负责部署、系统对接、小功能定制和环境适配。 比如客户那边有一套内部系统,需要接接口;或者他们的文件格式比较特殊,需要做一点解析适配;再或者某些场景的 Prompt、检索策略需要根据业务稍微调一下。 这些我觉得都很正常。 因为现场最接近客户,本来就应该承担最后一公里的工作。 甚至现场发现产品有问题,我也觉得正常。 比如知识库召回有问题、PDF 解析效果不好、模型回答某一类问题经常出错。 现场收集日志、收集 Case、分析原因,然后反馈给总部。 总部研发再根据这些真实问题改产品,发一个新的版本回来,现场继续验证。 如果来回几轮以后,效果达到合同里提前约定好的标准,那项目就结束。 我原来一直以为,正常的 AI 项目应该是这么推进的。 后来才发现,现实可以完全反过来。 最开始基线产品本身就不好用。 合同里的能力,也不一定真的经过技术团队验证。 很多时候就是销售为了签单,先答应下来。 等真正进场以后,现场才第一次认真思考: 这个东西到底该怎么做? 于是现场开发慢慢就不再是“实施”。 你开始做产品设计。 做技术选型。 补底层能力。 和客户梳理需求。 甚至帮客户想,他真正需要的东西到底是什么。 有时候挺荒谬的。 客户自己也不知道自己想要什么。 他只是觉得: 这个不行。 那个不好用。 这个怎么不够智能? 你能不能像某某产品一样? 于是你做一版。 客户用了两天,说这里还差一点。 你再改。 然后客户又发现另外一个场景满足不了。 继续改。 慢慢地你就会发现,这种需求其实是没有终点的。 尤其是 AI 项目。 传统软件至少很多东西比较明确。 一个按钮有没有。 一个流程能不能走通。 一个接口有没有返回。 这些都比较容易定义。 但 AI 不一样。 “回答得好不好”,本身就是一个很模糊的事情。 同一句回答,在一个人看来可能已经够用了,另一个人可能觉得完全不行。 知识库也一样。 到底什么叫知识库效果好? 是不是每个问题都能找到正确答案? 那碰到文档本身没有答案怎么办? 碰到问题表达模糊怎么办? 碰到需要跨文档推理怎么办? 碰到用户上传文件以后,又希望系统自动结合知识库怎么办? 再往下,就会一路走到 Agent、Memory、规划、工具调用、多轮任务。 这时候“效果问题”和“功能问题”的边界其实已经开始消失了。 客户说: “这个问题为什么回答不了?” 技术上可能不是模型回答错了。 而是这个问题本来就需要系统先查文件,再查知识库,再做一次推理。 那到底算“效果不好”,还是“缺一个多步规划功能”? 很难说。 而一旦项目一开始没有明确的验收标准,后面就会非常危险。 客户只需要说一句: “这个效果我们不能接受。” 乙方就会继续退。 因为项目要验收。 现场想撤。 领导也想把项目关掉。 于是原来不属于当前范围的东西,也开始往里加。 本来只做固定工作流。 后来变成自主规划。 本来只是知识库。 后来要加记忆。 本来只支持文本。 后来图片、表格、扫描件也全都要。 最后每一个问题看起来好像都合理。 但所有合理的问题加在一起,就是一个没有边界的系统。 所以现在我越来越觉得,一个真正好的 AI 项目,最重要的可能根本不是用了什么模型,也不是用了什么框架。 而是这个项目有没有边界。 总部知不知道自己的产品到底能做到什么。 销售知不知道什么东西不能乱承诺。 客户知不知道最后应该用什么标准判断项目完成。 项目中途如果需求变化了,有没有人敢说: “这个已经不是优化了,这是一个新的能力,需要重新评估。” 我幻想中的优质项目,其实也没有那么完美。 产品可以有 Bug。 知识库效果也可以不好。 客户当然也可以改需求。 AI 本身也一定会存在大量不可控的问题。 这些我都能接受。 我不能接受的是,所有这些不确定性最后全部变成: “现场你想办法解决一下。” 真正健康的状态应该是: 客户提供真实业务问题。 现场负责理解和定位。 总部负责产品和技术方案。 大家一起用真实 Case 验证。 哪些做到了,哪些没做到,原因是什么,都说清楚。 达到双方提前约定的标准以后,就验收。 剩下的需求进入下一阶段。 而不是一个项目永远处于: “再优化一下。” “再改一点。” “这个应该也能支持吧?” 这种状态里。 我以前以为现场实施的价值,是连接产品和客户。 现在越来越觉得,一个不成熟的公司里,现场实施更像是一块缓冲垫。 销售吹出去的能力,它来补。 产品没做完的能力,它来补。 项目管理没挡住的需求,它来补。 客户模糊的想法,它也得想办法落地。 最后所有人的风险,都一路传递到现场。 然后现场的人开始怀疑: 是不是自己能力不够? 是不是自己还应该再多做一点? 但后来想想,其实很多时候根本不是技术问题。 只是这个项目从一开始,就没有设计好应该怎么结束。 所以如果以后再让我判断一个 AI 公司或者 AI 项目靠不靠谱,我可能不会先问: “你们用什么模型?” “你们 Agent 做得怎么样?” 我反而更想问: 合同里的能力是谁评审的? 项目验收标准是谁定的? 客户中途加需求怎么办? 总部和现场的边界是什么? 如果线上效果不好,是现场自己改,还是总部有人负责? 因为技术差一点,其实还能慢慢补。 但如果公司从销售到交付都没有边界意识,那现场最后一定会变成无底洞。 我现在所谓“理想中的 AI 项目”,说到底其实也没什么特别高的要求。 我只是希望: 产品不一定完美,但至少能用。 需求不一定不变,但变了有人管。 客户可以不满意,但得说清楚哪里不满意。 现场可以解决问题,但不用替整个公司兜底。 而项目最重要的一点是—— 大家都知道,做到什么程度以后,这件事就算结束了。
#项目现场
cover
2026-09-11 00:10:54

AI 时代,“差一点”可能差的是一套架构

这段时间做 AI 项目,我越来越觉得一句话特别危险: “这个功能其实已经差不多了,再优化一下就行。” 如果放在传统软件时代,这句话很多时候还真没什么问题。 比如一个 Java 系统接口慢了,可能优化一下 SQL。 页面体验不好,调一下前端。 某个流程不顺,改一下业务逻辑。 因为传统软件大部分行为都是确定性的。 输入是什么,流程怎么走,输出应该是什么,通常都比较清楚。 系统出了问题,也比较容易沿着模块边界去定位。 所以传统软件工程一直强调: 稳定。 谨慎。 最小改动。 核心链路能不碰就不碰。 如果一个系统已经上线,结果为了一个小问题把整个底层架构重做,在传统项目里往往会被认为是非常不成熟的行为。 但 AI 项目越来越让我觉得,这套经验虽然仍然有价值,却不能完全照搬。 因为 AI 系统里经常会出现一种很奇怪的现象: **用户看到的只是差一点,工程上可能差的是一整层架构。** 比如客户会说: “这个通用问答其实已经能用了,就是有些问题不够灵活。” 听起来像是小优化。 但你真正往下分析,可能会发现问题根本不在 Prompt。 原来的系统可能是: 用户问题 → 固定工作流 → 知识库检索 → 模型回答 只要问题落在预设流程里,效果还可以。 可一旦用户的问题需要: 先读文件, 再查知识库, 根据结果决定还要不要继续调用别的能力, 甚至需要动态组合多个工具, 固定工作流马上就会暴露边界。 这时候客户看到的是: “有些问题回答不了。” 工程师看到的却是: “现有架构缺少动态决策能力。” 如果真的想解决,那就不是再加两个判断条件那么简单。 可能需要从: 固定 Workflow 升级成: 动态路由 * Tool Calling * 多步执行 * 状态管理 * 上下文管理 * 终止条件 这已经不叫优化。 这叫换了一套运行逻辑。 知识库更明显。 客户可能只是说一句: “这个 PDF 的回答效果再优化一下。” 听起来甚至比通用问答还小。 结果你一查: 文本解析不完整。 那就加 OCR。 加完 OCR 以后发现表格结构丢了。 那就做 Layout Analysis。 表格能识别了,图片语义又丢了。 那就做多模态解析。 内容解析出来以后,Chunk 切分又破坏了上下文。 那就做父子节点、层级切分。 检索命中了一个局部片段,但完整语义还不够。 那就继续改召回、Rerank、上下文组装。 最后回头一看。 最开始客户说的是: “优化一下 PDF。” 最后做出来的却快变成一套 Document Intelligence 系统。 这就是 AI 项目里很反直觉的一点: **用户体验上的小差距,和工程改造成本之间,经常不是线性关系。** 有时候甚至可以粗暴地理解成: 效果从 70% 到 80%,可能只需要调调参数。 80% 到 90%,可能要改策略。 90% 到 95%,可能就得重新思考底层架构。 客户看到的是: “不就再提高几个点吗?” 工程师看到的是: “这几个点可能要把半套系统重做。” 这也是为什么现在很多 AI 项目特别容易出现需求失控。 因为需求表面看起来很小。 “回答再聪明一点。” “检索再准一点。” “记住用户之前说的话。” “自动判断该用哪个工具。” 每一句听起来都像优化项。 但真正拆下去,很可能分别对应: RAG 架构调整, Memory 系统, Agent Runtime, Context Management, 规划与执行机制。 这几个东西单独拎出来,都足够做成一个完整模块。 所以我现在越来越觉得,AI 项目里的需求评估不能只问: “这个功能改起来要多久?” 而应该先问: **这个差距到底属于哪一层?** 我大概会把它分成三类。 第一类是参数级问题。 比如: TopK 不合适, Prompt 表达不好, 温度参数有问题, 某个阈值需要调整。 这种确实可以叫优化。 第二类是策略级问题。 比如: 检索方式不对, 切分策略不合适, 上下文组织有问题, 工具路由逻辑需要调整。 这种已经不是简单调参数了,而是在修改系统行为。 第三类是架构级问题。 比如: 固定工作流根本无法覆盖需求, 系统缺少长期记忆, 知识库缺少多模态解析, 单轮调用无法支持多步任务。 这时候再说“优化一下”,其实是在掩盖真正的改造成本。 而现实项目里最麻烦的地方,就是这三种问题在客户看来往往没有区别。 客户只会看到: “现在不好用。” 至于为什么不好用,是参数问题、策略问题还是架构问题,他通常不会关心。 这其实也很正常。 客户本来就不应该理解你的系统架构。 真正应该判断这件事的人,是产品、架构、研发和项目团队。 所以 AI 项目里一个很重要的能力,可能不是“怎么快速改”,而是: **怎么判断一个看起来很小的问题,背后到底需要多大的工程动作。** 这也是我现在越来越警惕“先做出来再说”的原因。 因为 AI 系统很多时候并不是简单地往上堆功能。 每增加一层能力,都可能改变之前的设计假设。 最早可能只是: Prompt + LLM。 后来发现知识不够,就加 RAG。 再后来发现单次检索不够,就加 Rerank。 再后来发现固定流程不够,就加 Agent。 Agent 跑多轮以后上下文越来越长,又开始做 Context Management。 希望跨会话记住用户,又开始做 Memory。 系统就这样一点点长大。 有时候并不是团队喜欢过度设计。 而是随着能力边界不断往外扩,之前那套架构本身就开始不够用了。 所以我现在反而能理解,为什么 AI 产品的架构演进速度会这么快。 传统系统很多时候是在一个稳定业务模型里不断迭代。 而现在大量 AI 产品,其实还在不断验证: 这个系统到底应该长成什么样。 但这里还有一个非常重要的前提。 **AI 项目经常需要重构,不代表这些重构应该发生在客户现场。** 这是两回事。 产品研发阶段因为验证出了新的能力边界,重新设计底层架构,我觉得完全正常。 甚至很多时候是必须的。 但一个成熟的交付体系,应该尽量让这种探索发生在总部。 总部负责: 验证方案, 演进架构, 形成稳定基线, 再把成熟能力交给现场。 而不是: 产品本身还没想清楚, 销售先卖出去, 然后现场一边交付,一边替总部探索下一代架构。 如果所有产品研发阶段应该解决的问题,都被推迟到了客户现场,那现场当然会越来越像救火。 客户只是说: “这里再优化一下。” 现场的人脑子里可能已经开始想: “是不是得把整个流程重写了?” 这也是我现在觉得 AI 交付特别累的一个原因。 很多时候真正累的不是代码量。 而是你永远不知道客户口中的“一点点”,最后会不会一路挖到底层。 所以如果以后再有人对一个 AI 功能说: “这个应该不用怎么改吧,再优化一下就行。” 我大概会先问一句: **你说的这个‘一下’,到底是参数级、策略级,还是架构级?** 因为在 AI 时代,这三者之间的差距,可能比功能本身大得多。 而我现在越来越相信一句话: **AI 项目里最危险的需求,往往不是那些一看就很复杂的需求,而是那些看起来只差一点的需求。**
#项目现场
cover
✨ 激动
2026-09-07 22:47:12

小墨个人博客正式营业啦!

搞了一天时间,也是把域名、图床什么的都配好了,接下来该上传些什么呢,得好好想想。 不过,耽搁了这么久,个人博客终于还是给我搞出来啦!