news 2026/10/17 8:12:44

多模态Agent实战:从感知到行动的闭环架构与生产落地

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多模态Agent实战:从感知到行动的闭环架构与生产落地

1. 为什么“多模态Agent”这么容易变成“会传图的聊天机器人”

最近两年做Agent的人越来越多了,但我发现一个现象:很多人嘴上说着“多模态Agent”,实际做出来的东西,本质上就是个支持传图片的聊天机器人——用户丢一张图进去,大模型识别一下,再吐一段描述出来。至于“听完指令再去执行动作”“看一眼现场就能调用工具处理问题”这些真正属于Agent的部分,反而没有落地。

我在实战营里反复跟学员强调一个观点:多模态Agent不是“大模型能看图”,而是一个完整的闭环——感知(看懂图像、听懂语音、读懂文字)→ 认知(理解当前任务、拆解执行步骤)→ 行动(调用工具、操作API、写入数据)→ 反馈(把结果通过多模态形式交还给用户)。四个环节缺一个,都不能叫Agent,只能叫“多模态聊天机器人”。

那为什么大家总容易停在“传图聊天”这个层面?根子在于上手难度。感知层有视觉模型、语音转写模型;认知层要接大模型;行动层要自己设计工具注册和调用的机制。这些模块各有各的坑,串联起来更是处处埋雷。很多教程只教你“怎么调用某个多模态接口”,不教你“如何把不同模态的信息结构化之后喂给推理层”,也不教你“工具返回的数据千奇百怪时怎么兜底”。所以学完只能跑通Demo,换个真实场景就歇菜。

这篇文章,我想把个人做过的一些多模态Agent项目的实战经验完整拆解一遍。从架构怎么分层、技术选型怎么定,到最小闭环怎么跑通,再到真实场景里那些高频翻车现场,以及评测和生产化要注意的事,都梳理成可直接参考的体系。适合有Python基础、想往多模态Agent方向进阶的开发者,也适合已经在做单模态Agent、准备扩展多模态能力的同学。如果你刚好被“能传图但干不了活”的问题卡住,这篇应该能帮你把链路彻底打通。

2. 架构搭建:把感知、推理、行动彻底解耦

2.1 分层架构为什么是多模态Agent的第一要务

我第一次做多模态Agent的时候,没有分层意识,所有逻辑塞在一个主流程里:先调视觉模型得到图片描述(如果用户传了语音,还要先转成文字),然后拼成一段超长的Prompt丢给大模型,大模型返回结果后再去调工具。看起来没什么问题,实际跑起来非常痛苦——因为每一个环节都可能出错,一旦出错,你很难定位是视觉模型的问题、语音转写的问题,还是大模型意图识别的问题。而且各种模态数据混在一个流程里传参,代码很快就变成一团乱麻。

后来我参考了业界比较成熟的Agent框架思路,把整个系统拆成了四个独立的层:

层级核心职责典型组件(虚构代称)
感知层将图像、语音、文本文档等原始输入转换为结构化内容视觉理解模块、音频转写模块、OCR模块
推理层理解任务、规划步骤、决定调用哪些工具多模态大模型、提示词引擎、步骤规划器
行动层真正执行工具调用、操作外部系统工具注册表、函数执行器、权限过滤器
表达层把执行结果以文字、生成图片、语音播报等形式返回回复渲染模块、语音合成模块

每一层之间只通过标准的数据结构通信,不直接互相调函数。比如感知层输出统一为PerceptionResult,包含modality_type(图像/语音/文本)、content(结构化内容)、confidence(置信度)三个字段。推理层只认这个结构,不关心它来自视觉模型还是语音转写模型。一旦后面换了更好的视觉模型,我只改感知层内部逻辑,推理层、行动层完全不动。这就是解耦的价值。

2.2 感知层选型的几个现实考虑

感知层做得好不好,直接决定上层推理是否可靠。选型时我一般从四个维度衡量:识别准确率、响应延迟、单次调用成本、设备兼容性。

以视觉理解为例,我第一次用的是通用闭源多模态接口,识别准确率确实高,但有两个问题:一是价格按图像分辨率阶梯计费,客户现场拍摄的高清图纸一个月能烧掉不少预算;二是离线环境下完全没法用。后来换成开源视觉模型做底座,部署在公司内网GPU服务器上,虽然准确性略降几个点,但批量处理速度更快,单张成本几乎是电费。所以在选型上我建议先想清楚部署环境:To B客户现场,多模态模型哪怕准确率差一点,也要优先能私有化部署的;纯线上C端产品,闭源API更省心,准确率优先。

语音转写这层也有类似问题。市面上大多数转写接口对标准普通话识别率很高,但对带口音、有环境噪音的音频,效果落差很大。有一回我做厂区巡检Agent,工人用对讲机说话,背景是机器轰鸣声,转写结果几乎没法用。后来我把音频先做降噪预处理,再输入转写模型,识别率才提上来。这个经验也说明:感知层不要直接拿原始数据丢给模型,前面加一道信号处理的小步骤,往往比换模型更划算。

2.3 推理层与行动层的边界划分

推理层的核心任务有两个:意图识别和步骤规划。意图识别要回答“用户想干什么”,步骤规划要回答“为了完成这个目标,按什么顺序做哪些事”。这两个能力本质上依赖大模型的指令遵循能力,所以我不太喜欢在推理层堆砌复杂的规则逻辑,而是把精力花在提示词设计和工具描述上。

行动层则在推理层之下,负责真正把模型说的工具调用请求执行掉。这里最容易踩的坑是让推理层直接返回一段JSON然后自己手写解析逻辑,一旦模型输出格式不稳定,JSON解析失败,整个流程就崩了。我现在的做法是给推理层定义严格的工具调用协议,模型只能输出结构化的函数调用请求,比如{"tool": "search_order", "args": {"order_id": "xxx"}},行动层再做参数校验、权限检查,最后执行并返回执行结果。推理层和行动层中间加一层“协议适配器”,专门负责格式校验和错误兜底,而不是把解析逻辑散落在各层。

3. 最小可跑闭环:一个能看图、听语音、执行动作的Agent

3.1 场景定义与闭环设计

理论讲完,来搭一个可以真正跑起来的最小闭环。我建议的案例场景是:一个“看图查库存”的小Agent。用户拍一张货架照片,语音说“这个货架上的A区商品还有多少库存?帮我查一下,如果有货就标记为可售”。这个场景同时包含了图像理解(识别货架编号和商品)、语音转写(处理用户语音指令)、意图解析(把任务拆成两步:查库存、把缺货商品标记为不可售)和工具调用(查询库存接口、修改销售状态接口),非常适合作最小闭环的教学原型。

整个闭环的数据流是这样走的:

  1. 用户上传图片和语音文件。
  2. 感知层:核心业务视觉模型识别出货架编号(如“A-03”)和商品名称(如“某种饮品”),语音转写模块输出用户指令文字。
  3. 推理层:把识别结果+指令文字整理成结构化上下文,多模态大模型负责拆分任务,输出两步工具调用计划。
  4. 行动层:执行query_stock(rack_id, product_name),判断库存是否充足;如果需要,再执行update_sale_status(product_id, status)。
  5. 表达层:把查询结果以文字摘要并附一张标注图返回。

3.2 环境准备与依赖最小集

老规矩,先列环境。我这里默认你用的是Python 3.10以上版本,建议单独的虚拟环境,避免和其他项目互相污染:

python3 -m venv mm_agent_env source mm_agent_env/bin/activate pip install requests pillow soundfile numpy

感知层的视觉模型调用、语音转写调用,以及推理层的多模态大模型调用,我在这里都封装成统一的函数接口,不绑定具体某一家服务。你自己跑的时候,只要在对应函数里填入你手头可用模型的API配置就行。这样代码结构清晰,也方便以后换模型。

项目结构建议这样组织:

mm_agent/ ├── main.py # 主流程编排 ├── perception/ │ ├── visual.py # 图像识别 │ └── audio.py # 语音转写 ├── reasoning/ │ ├── planner.py # 任务规划 │ └── prompts.py # 提示词模板 ├── action/ │ ├── registry.py # 工具注册表 │ └── executor.py # 工具执行器 └── common/ └── schemas.py # 统一数据结构

3.3 感知层代码实现要点

visual.py里,核心函数接受图片路径和一个“任务提示词”,返回结构化的识别结果。我在实际项目里习惯把视觉模型的输出JSON约束得很死——只允许返回固定的几个键,多余的不要。比如:

# common/schemas.py @dataclass class PerceptionResult: modality_type: str # "image" / "audio" / "text" content: dict # 结构化内容 confidence: float # 0.0 ~ 1.0
# perception/visual.py import base64 def encode_image(image_path: str) -> str: with open(image_path, "rb") as img_file: return base64.b64encode(img_file.read()).decode("utf-8") def parse_rack_image(image_path: str, task_prompt: str) -> PerceptionResult: """ 调用视觉模型,识别货架编号、商品名称,返回结构化结果。 这里替换成你自己的模型调用即可。 """ prompt = ( "请识别这张图片中货架的编号(如 A-03)、每一层的主要商品名称和数量," "以JSON格式返回。JSON必须包含 rack_id、products 两个字段。" + task_prompt ) # resp = your_vision_model_call( # image=encode_image(image_path), # prompt=prompt, # response_format="json" # ) resp = None if resp is None: # 模拟返回,便于在没有模型时也能跑通流程 resp = { "rack_id": "A-03", "products": [{"name": "某种饮品", "quantity": 5, "status": "正常"}], } return PerceptionResult( modality_type="image", content=resp, confidence=0.92, )

语音转写模块audio.py类似,核心函数接受音频路径,返回转写文本。转写后的文本不要直接扔给推理层,我建议加一道轻量级的“指令清洗”:去掉语气词、把口语化的表达转成简洁祈使句。这一步看着不起眼,实际能明显提升大模型的意图识别成功率。

3.4 推理层:提示词设计的坑与经验

推理层的任务规划器planner.py,作用是接收感知层的结构化内容,让大模型输出工具调用计划。提示词模板我一般这样设计:

# reasoning/prompts.py PLANNER_PROMPT = """你是一个库存管理Agent。根据以下环境信息,拆解用户指令并生成工具调用计划。 【环境信息】 当前货架编号:{rack_id} 商品信息:{products} 用户指令:{instruction} 【可用工具】 - query_stock(rack_id, product_name): 查询商品库存数量。返回数字。 - update_sale_status(product_id, status): 更新商品销售状态,status 可选值:可售、不可售。 【输出要求】 - 严格按照步骤执行,每一步输出一个工具调用JSON。 - 格式:{"steps": [{"tool": "工具名", "args": {}}, {"tool": "工具名", "args": {}}]} - 如果信息不足,输出:{"steps": []} 请开始。 """

这个模板里有三个关键设计:一是“环境信息”单独一块,把感知层的输出和用户指令分开,避免模型混淆;二是“可用工具”描述严格定义好参数格式,让模型不会自由发挥;三是“输出要求”明确规定了JSON结构,并且给了信息不足时的兜底输出。这三个设计缺一不可,我最初少写了最后一条兜底,结果模型中有一半概率在信息不足时胡编一个工具参数,后来加上之后明显稳定了。

3.5 行动层:工具注册表与执行器

行动层我设计了一个简单的工具注册表,每个工具是一个字典:

# action/registry.py TOOLS = { "query_stock": { "description": "查询商品库存数量", "schema": { "type": "object", "properties": { "rack_id": {"type": "string"}, "product_name": {"type": "string"}, }, "required": ["rack_id", "product_name"], }, "handler": "handle_query_stock", }, "update_sale_status": { "description": "更新商品销售状态", "schema": { "type": "object", "properties": { "product_id": {"type": "string"}, "status": {"type": "string"}, }, "required": ["product_id", "status"], }, "handler": "handle_update_status", }, }

执行器拿到模型输出的计划后,先做参数校验,再做权限检查,最后才真正调用handler。权限检查和参数校验是行动层的两条生命线。我在客户现场踩过一次大坑:模型把“查询库存”误触发成了“修改状态”,把某个商品的销售状态改错了,事后费了很大功夫才恢复。从那以后,我在行动层所有写操作前面强制加人工确认逻辑——参数校验通过后,如果检测到是写操作,弹出一道确认。这个虽然是Demo里的代码,但你在生产环境也必须保留同样的护栏。

最终main.py把四层串起来的效果大致是这样:

# main.py from perception.visual import parse_rack_image from perception.audio import transcribe_audio from reasoning.planner import plan_tool_calls from action.executor import execute_tool_plan def run_agent(image_path: str, audio_path: str): # 1. 感知 vision_result = parse_rack_image( image_path, task_prompt="特别关注A区商品的数量情况。" ) audio_text = transcribe_audio(audio_path) cleaned_instruction = clean_instruction(audio_text) # 2. 推理 steps = plan_tool_calls( rack_id=vision_result.content["rack_id"], products=vision_result.content["products"], instruction=cleaned_instruction, ) # 3. 行动 final_answer = execute_tool_plan(steps) # 4. 表达 return render_response(final_answer)

跑通这个闭环,你就有了一版可用的多模态Agent骨架。我建议你自己动手把感知层、行动层的函数替换成真实模型和真实接口,然后放几张真实照片测试一下,会很快找到手感。

4. 实测中的意外情况:五种高频翻车现场与排查思路

4.1 图片分辨率过高,上下文直接爆掉

第一个意外是我在实战营里印象最深的一次。学员拿了一张手机拍摄的高清照片,分辨率大约是4000x3000像素,直接喂给视觉模型。模型本身没说什么,但到了推理层串联时,token数激增,响应时间从1秒暴增到8秒,甚至部分请求直接报了“上下文超限”。

排查链路是这样:先看日志,发现视觉模型返回的图片描述文字并不长,问题出在很多视觉模型内部会把图片切成多块patch,每块patch换算成token,整张图总token数是固定的,不会因为压缩而减少。所以不是描述文字过长,而是图片本身分辨率太高导致内部处理量大增。解决思路不是让用户压图片,而是在感知层入口加一道“图片标准化”:把超过2000像素的长边等比压缩。压缩后模型对货架、文字区域的识别几乎无损,但整体响应时间降了一半以上。

4.2 语音转写结果带标点,意图识别直接走偏

语音转写模块返回的文本是带标点符号的,比如“查一下这个货架上的A区商品还有多少库存帮我查一下”这句话,转写结果是“查一下这个货架上的A区商品,还有多少库存?帮我查一下。”标点和问号混在一起,推理层的意图识别经常把“查一下”和“帮我查一下”当成两个独立任务,然后工具调用计划多出一倍。

这个问题排查起来最迷惑,因为你很难想到是标点的锅。日志里看到的明明是模型多规划了一步,但提示词、工具定义都没问题。后来我把指令清洗逻辑加上去,把转写文本中的问号、感叹号全部替换成逗号,再把“帮”“我们”“我”这类无意义的主语代词去掉,最后只剩“查库存,A区商品数量”,计划立刻稳定了。语音转写和意图识别之间一定要有清洗层,这句话我在实战营里说了无数遍。

4.3 工具返回的数据结构不统一,崩溃来得毫无预兆

行动层最经典的问题发生在执行器解析工具返回时。我一开始设计query_stock返回整数,update_sale_status返回布尔值,没有统一格式。后来加了一个新工具,返回了字典类型,执行器直接报TypeError,整个流程中断。如果发生在用户面前,体验非常差。

排查链路:先看报错位置,execute_tool_plan里直接访问result["status"],但新工具返回的是{"code": 200, "data": {"status": "ok"}},取不到值。根因是工具之间的返回协议没有统一。我后来给所有工具handler增加了一个统一的ActionResult结构,包含success、message、data三个字段,执行器只认这个结构,外部工具返回的任何杂格式都在handler内部先转换一遍。从那以后,新增工具再也没有炸过主流程。经验就是:行动层对外部工具的输出要默认不信任,所有返回值必须过一道格式转换关卡。

4.4 上下文里塞了太多图片,模型开始“复读机”

有一次做会议纪要Agent,用户连续上传了12张PPT截图,推理层的多模态模型在生成了前两张图的分析之后,从第三张开始就把内容描述得和前面重复,输出的文字几乎一样,但事实是完全不同的图表页面。这其实是多模态大模型的上下文干扰问题。图片patch token量大,在长上下文中,后面的内容容易被前面的注意力稀释。

排查链路:先怀疑是提示词问题,换了好几种描述方式都没解决;再看是不是模型版本问题,版本也换过,依旧如此。最后尝试把连续图片分批处理,每批最多3张,批次间做一次汇总总结,再拼接最终摘要,问题明显缓解。真实场景里如果遇到“不知道哪张图对应哪段文字”的输出异常,先别急着怀疑模型能力,优先检查是不是上下文里图片太多、注意力被稀释了。

4.5 异步任务超时后状态丢失,Demo秒变事故现场

多模态Agent里有些工具调用是很慢的,比如查询一个复杂的库存报表接口,或者调用外部系统同步数据。为了不阻塞,我在主流程里加了异步处理,用任务队列调度。听起来很正常,但有一回现场演示时,用户点完按钮,Agent半天没回复。查日志发现是任务在队列里跑了一分多钟,然后不幸超时,任务状态在内存里被清掉了,执行结果永远回不来。

根因是我把任务状态全放在进程内变量里,没有持久化。排查链路:先看日志确认任务执行到了哪一步,执行已经完成,但查询状态时发现状态键不存在。解决思路是把任务状态写入共享存储(比如简单的SQLite文件),至少保留最后N小时的任务状态。对于生产环境,异步任务的状态持久化是必须的,这是我在客户现场学到的教训。

5. 评测是开发的另一半:没有评测集的Agent迭代等于盲改

5.1 为什么多模态Agent尤其需要评测集

文本Agent迭代起来相对快,改改提示词就能直接看效果;多模态Agent不一样,感知层一个模型参数变化、行动层一个工具返回格式改动,都可能引起连锁反应。我见过很多团队在开发后期陷入“今天调好了,明天又崩了”的循环里,就是因为没有一套固定的评测集。

我建议一开始就建一个20到30个典型case的评测集,每个case包含:输入图片、输入音频/指令、期望行为(工具调用步骤)和期望输出(回复要点)。这些case覆盖正常场景、边缘场景和异常场景,比如:模糊照片、超长语音、带口音语音、多商品货架、缺货商品、工具超时、意图不明确等。有了这个评测集,每次改动之后跑一遍,谁把效果削弱了立刻暴露出来。

5.2 评测维度怎么定

多模态Agent的评测,我从四个维度来做,每个维度都有明确的量化指标:

评测维度核心指标我常用的通过线
感知准确率可视化区域识别是否正确、语音转写字错率常规场景≥90%,边缘场景≥70%
意图识别准确率模型是否拆出了正确任务计划≥85%
工具调用成功率行动层执行计划时是否出现解析或执行错误≥95%
端到端体验总耗时、回复是否符合预期格式常规任务≤10秒,异常任务有兜底

写一个评测脚本,最简单的方式就是把每个case的标准答案存成JSON,脚本自动读取、跑Agent、对比输出关键字段、统计通过率。这个脚本可以放在CI里,也可以每次手动跑一遍。我在团队内部演示过这套流程的价值:有一次只把提示词里“商品信息”改成“商品描述”四个字,看起来无关紧要,结果评测集里3个case的步骤规划变了,通过率从88%掉到76%。要不是有评测集,这个问题可能会在生产环境里变成用户的真实困惑。

5.3 人在回路的必要性

评测集能兜住大部分回归问题,但多模态场景是开放式的,评测集覆盖不了所有真实输入。所以我在开发中一直保留一个“人在回路”的环节:每个迭代版本,拿10个真实用户的新鲜case跑一遍,人工检查Agent的输出质量。这个环节不需要自动化,也不需要很大的量,但价值很高。因为评测集更新得再勤,也追不上真实输入的野路子程度。人工查看这些case时,往往能发现新的失败模式,再把它们加入评测集,形成正向循环。

6. 从工位Demo到客户现场:生产化的五个现实问题

6.1 缓存:多模态调用费用的止损线

Demo阶段没人关心成本,生产环境必须关心。多模态调用的费用通常是纯文本调用的数倍,尤其是图片和视频输入。我自己的经验是,感知层加两级缓存:一级是图片级别的内容哈希缓存,同一张图片短时间内重复调用直接走缓存,不再送视觉模型;二级是结构化结果级别的缓存,只要感知结果没变化,推理层的步骤规划也可以直接复用。库存系统这种业务场景里,货架照片往往几分钟内不变,缓存命中率能到60%以上,成本直接砍半。

6.2 安全:写操作默认拦一道

前面在行动层说过权限检查,生产环境还要进一步收紧。给工具定义操作级别,读操作自动放行,写操作需要额外的人确认;涉及资金、状态变更、删数据之类的操作,必须走审核接口。不要高估大模型的稳定性和可信度,它规划工具调用计划时本质是在做概率生成,偶尔生成出越权操作一点都不奇怪。你必须在行动层拦住。

6.3 回退机制:多模态模型挂了,系统不能跟着死

客户现场最怕的不是功能不好用,而是功能突然不可用。多模态模型服务可能出现限流、超时、甚至断连,所以生产环境中要准备回退链路:视觉模型识别失败时,回退到提示用户重新拍照,或者降低识别要求;语音转写失败时,允许用户手动输入文字;推理层异常时,直接返回一个“暂时无法处理,请稍后再试”的兜底模板。这些回退逻辑不复杂,但能大幅度提升系统的可用性感知。我在客户现场遇到过图像服务限流,因为没有回退链路,整个系统在业务高峰期瘫痪了20分钟,很痛的教训。

6.4 日志与可观测性:没有Trace,出了问题只能干瞪眼

多模态Agent涉及多个外部服务调用,任何一环慢或挂,都会影响整体体验。生产环境的日志至少要做到以下几点:每一个请求生成唯一的trace_id;每个阶段(感知、推理、行动、表达)记录开始和结束时间;感知层的模型输出原文和结构化结果都要留存;推理层的计划JSON和工具调用结果完整记录;错误日志要能精确到具体是哪一层、哪个函数、哪个参数出了问题。我见过最多的情况是,线上出了问题,但我手里只有一段残缺的日志,既不知道模型输出了什么,也不知道工具执行情况,排查效率极低。后来我在所有外部调用处加上日志装饰器,统一收集到日志中心,这类问题才彻底解决。

6.5 灰度发布与小流量验证

很多Agent系统的改动不像Web服务可以秒级回滚,因为意图识别和工具调用计划是概率性的,新版提示词可能导致一批case行为完全改变。所以生产环境改提示词、换模型、调参数,我都建议先灰度:先让10%的流量走新配置,对比成功率、平均耗时和用户反馈,没有异常再逐步放量。这套做法在传统后端领域很常见,但多模态Agent团队反而容易忽略。有一次我调整了推理层提示词,离线评测过了,灰度到5%流量后,发现了一个只出现在真实长对话里的bug——多轮对话中工具输出被当成历史用户输入,引发循环调用。有了灰度机制,才没酿成更严重的线上事故。

写到这里,我不禁想起那个困扰很多人的现象:多模态Agent的Demo很好做,一条主线串完就能演示。但真正决定它能走多远的,恰恰是那些Demo不会告诉你的细节——感知层的异常输入处理、工具协议的格式统一、评测集的持续积累、以及生产环境里你愿意为安全、缓存、回退付出多少设计成本。这些都不是炫技的东西,是每一个想把Agent从“演示品”做成“生产力工具”的人,都绕不开的功课。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 8:12:12

VC MFC 集成 QRDECODE:二维码识别从配置到调优实战

简介:这是一份面向Windows平台C开发者的二维码识别与解析工程源码,基于VC与MFC框架,借助开源ZBar库完成QR Code等二维码的解码,适合需要为桌面程序添加扫码能力的初中级开发者参考。压缩包共23个文件,约34KB&#xff0…

作者头像 李华
网站建设 2026/10/17 8:11:03

Kafka Cruise Control原理与实战:自动化负载均衡治理

1. 什么是Kafka Cruise Control:它不是“巡航”而是“自动驾驶式集群治理”你可能在某次线上事故复盘会上听到运维同事说:“这次磁盘打满,要是Cruise Control能自动把大Topic的分区挪走就好了。”也可能在Kafka调优文档里瞥见一行小字&#x…

作者头像 李华
网站建设 2026/10/17 8:11:00

YOLOv8犀牛检测系统:从数据集到Web部署的全流程解析

做目标检测这几年,我测过不少“看起来高大上”的动物识别Demo,但真正能跑通数据、训练、部署全流程的犀牛检测系统,反而比想象中稀有。这不是因为模型本身难,而是很多人在数据处理、工程化交付、前端联动这些环节上栽了跟头。今天…

作者头像 李华
网站建设 2026/10/17 8:09:02

从零搭建Agent与LLM技术日报:信息聚合与筛选系统实战

1. 从一份日报说起:Agent 与 LLM 技术雷达的搭建思路每天早上花十五分钟翻一遍 Agent 和 LLM 领域的新动态,这个习惯我坚持了快两年。最开始是手动刷各种信息源,后来信息量爆炸,手动根本看不过来,就开始琢磨怎么把这件…

作者头像 李华
网站建设 2026/10/17 8:07:22

Cursor 深度使用指南:从重构到日常开发的最佳实践

1. 为什么我最终把主力编辑器换成了 Cursor先说结论:我不是那种“新工具一出就立刻迁移”的人。在把 Cursor 当成主力编辑器之前,我在传统编辑器加插件这条路上已经折腾了好几年,配置目录里躺着几百行快捷键绑定、几十个插件、一堆自定义脚本…

作者头像 李华
网站建设 2026/10/17 8:03:42

Spring Boot招生就业管理系统:从招生录入到就业跟踪的完整实现

简介:这是一套面向高校教务与就业管理场景的「招生与就业信息管理系统」完整源码工程,适合计算机专业学生做课程设计、毕业设计,也适合开发者参考 Spring Boot 项目落地。系统分为招生管理与就业服务两大模块:招生侧覆盖在线申请、…

作者头像 李华