Agent从Demo到上线:踩过的权限日志坑,暴露的3个错误假设

📅 2026/8/11 5:13:32
Agent从Demo到上线:踩过的权限日志坑,暴露的3个错误假设
《岗位变化这么快程序员职业规划真正该补的是什么》看起来是个大话题但真落到项目里常常就是几个具体选择。下面我尽量按实际开发时会遇到的问题来讲。摘要去年年底我带着一个Agent项目去面试几家大厂Demo在现场跑得很顺用户问问题模型调工具返回结果流程完整。面试官没问太多代码细节而是问了三个问题——权限怎么控制、日志怎么追、异常怎么回滚。我当时的回答基本是用API默认权限打印点logtry-catch兜底。结果很明显没过。后来我复盘了一下发现自己当时有三个错误的假设而这三个假设恰恰是现在市场上很多人共有的认知盲区。---目录岗位变化从会调API到能接生产我之前犯的3个错误假设能力分层你现在缺的是哪一块短期学习计划先把工程化补齐中期项目沉淀把Demo变成可交付项目长期竞争力解决真实问题的能力总结岗位变化从会调API到能接生产2024年到2025年大模型岗位招聘要求的变化非常清晰。年初看JD大部分要求是熟悉LangChain/LlamaIndex能搭建RAG应用到了年中同样的岗位开始出现有生产环境经验了解权限控制和可观测性的要求到最近很多团队已经把Demo能跑直接排除在筛选条件之外。这不是招聘方变苛刻了是市场变了。之前两年大模型应用大部分停留在内部工具和Demo阶段能跑通就是一个完整的项目。但现在越来越多的团队开始把Agent接入真实业务——客服、运维、数据分析。接入之后问题不是模型能不能回答而是权限会不会越界、出问题能不能追到原因、响应时间稳不稳定。这些问题的解决不靠调参不靠换模型靠的是工程化能力。我面试没过的那次面试官后来跟我聊了一句你Demo做得不错但我们现在招的人要能接住上线后的事情。这句话我记到现在。---我之前犯的3个错误假设假设一API调通了应用就能用。我的Agent项目核心逻辑确实是调API。用户提问→构建prompt→调模型→解析返回→展示结果。这套流程在本地跑通我以为是完整的应用。但实际上这只是一个请求链路不是生产系统。生产系统需要处理什么权限控制这个Agent能操作哪些资源、输入校验用户输入可能包含恶意内容、输出过滤模型可能返回敏感信息、限流熔断模型API有调用频率限制、错误处理超时、模型返回异常、工具调用失败。这些在我当时的代码里几乎没有。假设二团队能跑就行不用太在意日志。我当时觉得日志嘛打印一下关键节点出了问题看控制台不就行了。但真实生产环境里一个Agent可能同时处理几十个并发请求每个请求涉及多个工具调用和多次模型交互。如果日志没有结构化、没有trace_id串联出了问题根本追不到具体是哪个请求、哪一步出的问题。后来我接了一个内部项目要求每个请求都有完整的调用链路日志包括输入、输出、耗时、工具调用详情。我当时花了一周时间重构日志系统才把这个补齐。假设三个人能跑通团队协作没问题。这是我的Demo项目最大的问题。代码在我本地能跑换一台机器要改配置没有文档别人看不懂流程没有测试改了代码不知道有没有破坏原有逻辑没有部署脚本上线全靠手动。这种项目个人学习没问题但团队接不住。我后来意识到Demo能跑和项目能交付之间差的不是一行代码而是一整套工程化规范。---能力分层你现在缺的是哪一块把大模型应用开发的能力拆成三层对照一下自己现在在哪一层。第一层应用开发。 会用LangChain、LlamaIndex能搭建RAG能调工具能写prompt。这是入门门槛也是现在市场上最卷的一层。第二层工程化能力。 权限管理、日志追踪、错误处理、限流熔断、监控告警。这是从Demo到生产的分水岭也是现在招聘方真正看重的部分。第三层系统设计。 多Agent协作、工作流编排、状态管理、性能优化。这是进阶能力决定你能做多大的项目。大部分人的问题在第一层和第二层之间卡住了。第一层已经会了第二层没系统学过遇到生产问题不知道从哪下手。---短期学习计划先把工程化补齐如果你现在想补工程化能力我的建议是按这个顺序来不要一上来就学复杂的框架。第一步权限控制1周。先理解最小权限原则。Agent调工具每个工具应该有明确的权限范围。比如一个客服Agent能查订单状态但不能修改订单能查用户信息但不能删除用户。实现上可以在工具调用前加一层权限校验。伪代码大概是这样class PermissionChecker: def check(self, agent_id: str, tool_name: str, action: str) - bool: # 从权限配置中查询agent是否有该工具的该操作权限 config load_permission_config(agent_id) allowed_tools config.get(tool_name, {}) return action in allowed_tools.get(actions, []) # 工具调用前校验 if not permission_checker.check(agent_id, tool_name, action): raise PermissionError(fAgent {agent_id} has no permission for {tool_name}.{action})第二步结构化日志1周。不要用print打日志用结构化日志。每个请求分配一个trace_id所有日志都带上这个id方便后续追踪。import logging import uuid logger logging.getLogger(agent) def run_agent(user_input: str): trace_id str(uuid.uuid4()) logger.info(start, extra{trace_id: trace_id, input: user_input}) try: result call_model(user_input) logger.info(model_response, extra{trace_id: trace_id, latency_ms: 120}) return result except Exception as e: logger.error(error, extra{trace_id: trace_id, error: str(e)}) raise第三步可观测性基础1周。可观测性不只是日志还包括指标和追踪。先了解基本概念metricsQPS、延迟、错误率、traces调用链路、logs事件记录。不需要一上来就上复杂的监控系统用现成的方案就行。比如用OpenTelemetry做链路追踪用Prometheus暴露指标用ELK或Loki做日志收集。---中期项目沉淀把Demo变成可交付项目学完上面的内容回到你的项目上。不要做一个新的Demo而是把已有的项目补全。我当时的做法是把去年那个Agent项目重新改造一遍加上权限控制每个工具调用前校验权限加上结构化日志每个请求有trace_id加上错误处理工具调用失败有重试和兜底加上简单的监控暴露QPS和延迟指标写一份README说明项目架构和部署方式改造之后这个项目才真正像一个可交付的项目而不是一个能跑的Demo。简历上写这个项目不要写搭建了RAG应用要写实现了权限控制、结构化日志和监控告警支持生产环境部署。前者是学习项目后者是工程能力。---长期竞争力解决真实问题的能力职业规划说到底不是学多少框架、追多少热点而是你能解决什么级别的问题。大模型时代初级问题——调API、写prompt、搭RAG——正在被自动化工具快速解决。中高级问题——权限控制、日志追踪、系统稳定性、团队协作——才是真正有价值的部分。你的长期竞争力不在于你会不会用最新的框架而在于你能不能把Demo变成生产系统能不能在团队协作中承担责任能不能解决那些跑通了但上线就崩的问题。这些能力不是看几篇文章就能学会的需要在真实项目中踩坑、复盘、修正。---总结我面试那次没过后来反思了很久。不是我的Demo不够好而是我当时的认知还停留在能跑就行的阶段。但市场已经往前走了招聘方要的是能接住生产环境的人。权限、日志、可观测性这三样东西现在看是大模型应用的工程化基础但也是很多开发者的盲区。补上这一块你的项目才能从Demo变成真正可交付的产品。职业规划不是画一条线往前冲而是根据市场变化不断调整方向。大模型时代变化很快但有些东西是不变的解决真实问题、交付可靠系统、在团队中承担责任。把这三样做到你的路会越走越宽。资料展示下面是我整理的AI大模型学习资料和工具包预览适合收藏后按主题逐步学习。如果你想看完整资料目录可以在评论区留言「资料」也欢迎告诉我你更关注AI大模型里的哪类内容。