
公司里的 AI终于不只会聊天我用 GPT-6 把企业工作伙伴开源了如果你还停留在AI 聊天机器人的印象里那接下来要聊的东西可能会刷新你的认知。我最近用 GPT-6 做了一件事把公司内部一个原本只会陪人聊天的 AI 助手重构成一个真正能干活的企业工作伙伴并且把它开源了。这个系统现在能帮我们处理技术工单、写季度总结、分析客户反馈甚至能跨部门拉齐信息而不是像以前那样问它什么都只会甩一段根据我的理解……的废话。这篇文章适合两类人一类是想把 AI 从玩具变成生产力工具的技术决策者另一类是准备做企业级 Agent 开发、或者正在犹豫要不要把内部工具开源出来的工程师。我会把整个演进过程、架构设计、踩坑记录和开源前的准备讲清楚尤其是那些文档里查不到的教训。整个项目已经开源感兴趣可以直接拿去做技术选型参考甚至作为自建 AI 工作台的起点。我先说说为什么要做这个改造再拆解 GPT-6 在企业场景下到底强在哪然后是具体实现、开源过程和实测数据最后单独讲几个我在排查过程中印象最深的坑。内容比较长你能从中学到的不仅是代码层面的东西还有一套从需求梳理到上线运营的完整方法论。1. 从聊天框到同事企业 AI 到底缺在哪1.1 我为什么决定不只做聊天机器人两年前我们就在公司内部上线了一个基于大模型的问答助手接入了一些内部文档和知识库员工可以通过企业通讯工具随时提问。初期效果还不错查政策、搜模板、找流程这些场景确实省了不少事。但半年之后我发现一个现象日活用户停留在几百人左右上不去了而且大家问的问题越来越浅——报销单怎么填年假怎么申请深入一点的业务问题反而不太有人问。我找了不少同事聊得到的反馈基本可以归结为三点第一个是回答太泛给的是通用答案落不了地第二个是没有行动能力查到了资料也不会顺手把流程处理完第三个是记不住事昨天说的事情今天再问它完全不记得。说白了它只是一个被动的问答工具没有上下文没有任务意识也没法动手干活。员工真正需要的不是一个能聊天的窗口而是一个能把事情推进下去的帮手。这个痛点在大模型应用圈很典型大模型的生成能力很强但企业办公场景是海量碎片化任务组成的如果 AI 不能跨系统执行动作它的价值就折损了大半。举个例子一个人事同事每天要处理几十条关于休假、调薪、社保的咨询她需要 AI 做的不是复述制度条文而是根据员工的职级、入职时间、剩余假期额度直接给出计算结果并生成待办的审批工单。这不是问答能力的差距这是工作方式的差距。1.2 GPT-6 带来的三个让我下决心的变化坦白说市面上已经有一些 Agent 框架我也试过不少但整体成熟度还撑不起工作伙伴这个定位。直到 GPT-6 开放内测之后我实测了一段时间发现三个关键变化让我决定把原有系统推翻重做。第一个是长上下文能力明显增强了。GPT-6 的上下文窗口足够让我把一个部门近一个月的工作记录、制度文档、业务数据和历史工单全部放进去模型还能稳稳地抓住关键信息不会回答到一半就忘事。对做企业 Agent 的人来说长上下文直接决定了能不能做到真正了解你部门的情况。第二个是工具调用Function Calling的可靠性大幅提升。以前模型经常在工具调用上出现步骤对但参数不对的尴尬或者明明已经拿到了结果还要瞎猜。GPT-6 在调用内部 API、解析返回参数、判断下一步动作上稳定性高了一个台阶这意味着让 AI 替用户点按钮这件事终于可以接近生产级别的要求。第三个是多模态输入的实用性变化。企业内部数据不只是文本还有图片截图、语音消息、甚至录屏。以前要在 Agent 外面单独接一套多模态理解流水线非常麻烦。GPT-6 原生支持图像和音频输入派工单的时候直接丢一张截图进去它自己就能识别内容、提取关键字段省掉了很多预处理工作。这三个点叠加起来让我觉得企业工作伙伴这个产品形态不再是 demo而是真的可以落地。于是我用大概三周的时间把系统重写了一遍从问答机器人升级成一个具有记忆、任务编排和工具调用能力的多智能体平台最后决定把整个框架开源。2. 工作伙伴的四个核心能力记忆、工具、协作与边界把聊天机器人升级成工作伙伴不是改个 prompt 就行而是要重新设计能力结构。我把它拆成四个核心模块下面分别讲讲设计和实现思路。2.1 记忆系统让 AI 记得住人和事企业场景里最关键的并不是模型的聪明程度而是它对你们公司内部情况的理解。通用大模型知道所有公开知识但它不知道你们团队的 OKR、某个客户的历史交涉记录、某个项目的技术债在哪。我的做法是分层记忆架构短期记忆用 Redis 存会话上下文保存最近几十轮对话工作记忆存在 PostgreSQL 里按部门、项目、用户三个维度记录关键结论和待办事项长期知识则走向量库 RAG把制度文档、历史工单、产品手册全部切块索引。GPT-6 每次干活之前会先读取相关记忆片段再结合实时查询结果生成行动方案。比如你问它帮我整理上周客户 A 的跟进情况它不会当场瞎编而是先从短期记忆里确认上周聊过什么再从工作记忆里调出客户 A 的关键记录最后去向量库里检索历史沟通纪要综合之后才输出。有了这套体系AI 才能表现得像一个真的在跟项目的人而不是一个每次见面都自我介绍的新同事。2.2 工具调用从会说到会做工作伙伴能干活的核心抓手是工具调用。我封装了一批工具统一通过 OpenAPI 规范暴露给模型查询假期余额、创建审批单、发送消息、更新文档、生成报表、拉取监控数据。每个工具定义都写清楚了用途、参数、返回格式和触发条件。GPT-6 的工具调用在处理多步任务时尤其靠谱。我测试过一个场景员工说我下周想休三天假帮我看看我还有多少年假。系统先调用查假期余额工具拿到数据后再根据公司制度判断可用天数够不够如果够就自动预填请假单草稿生成一条待确认消息发给员工确认。整套链路一气呵成。这里有一个容易被忽略的细节工具定义的描述文字非常重要。模型不是靠参数名猜意思而是靠 description 理解什么时候该调哪个工具。我踩过坑一开始工具描述写得太简单比如获取用户信息结果模型动不动就调用它后来改成根据用户员工ID获取其入职日期、职级、所属部门、汇报线等组织架构信息用于权限判断和流程审批准确率立刻上来了。2.3 多个 AI 协作不再是单个模型单打独斗这个项目里我还尝试了一种多 AI 协作的模式。传统的 Agent 是单个模型从头处理到尾缺点是上下文一旦太杂模型容易迷失方向。我的方案是角色拆分一个调度模型负责理解用户意图、拆解任务、按需分配资源多个专业模型或扮演不同角色的子 Agent分别负责人事、财务、技术等垂直领域。调度层拿到任务后先判断属于哪个域再把任务转发给对应子 Agent。子 Agent 处理完把结构化结果回传给调度层由调度层整合成用户能读懂的答复。在测试中这种架构比一个大模型包打天下的准确率大概高出 15%而且每个子 Agent 的 prompt 和工具集都可以独立优化互不干扰。实现这套协作不需要特别复杂的框架我用的是一个基于任务队列的编排器其实就是一个消息路由器加上一个状态机。重要的是设计好子 Agent 之间的通信协议我统一约定为 JSON 格式的任务请求 上下文引用 输出约束避免多个模型之间出现互相矛盾或者重复处理的情况。2.4 权限与边界企业 AI 必须守住的底线能力越强越要管住。企业 AI 最怕的不是答错问题而是越权操作。比如一个普通员工让 AI 调取全公司薪资数据或者一个实习生试图删除生产环境配置这些绝对不能发生。我在工具调用层加了三道防线第一道所有工具都要求携带调用者的身份令牌身份不明不执行第二道工具自身做了权限校验每个工具标注了允许调用的角色范围不匹配直接拒绝第三道关键的敏感操作发钱、删数据、改权限预设了人工审批环节AI 只能生成申请单真正执行需要负责人点确认。GPT-6 在权限判断上的一个好处是它能把自然语言指令解析成结构化权限请求比如帮我看看李明的工资会被识别成需要 HR 角色 目标对象非本人 属于敏感字段然后直接拦截并生成一条安全告警。我这边还接了一个审计日志每次工具调用都有完整的入参、出参、调用人、时间戳方便事后追溯。3. 系统架构与实现细节我用什么搭起了这套平台这一节是工程实操的部分。我会按技术选型、架构分层和关键代码逻辑三块讲清楚方便你想照着做一个类似系统时少走弯路。3.1 技术选型为什么选了 FastAPI、PostgreSQL 和 Redis Streams后端主体我用的是 Python 的 FastAPI原因很直接和 GPT-6 的 SDK 配合无缝且自带异步支持适合我这种大量依赖 API 调用的场景。实时任务队列选了 Redis Streams比直接用 Celery 轻量得多而且天然支持消费组方便后面扩展子 Agent 的并发实例。PostgreSQL 在这里承担了两个角色一个是业务数据的存储库存工具调用记录、任务状态和审计日志另一个是通过 pgvector 插件实现向量检索直接替代单独的 Milvus 或 Pinecone省了一套运维。整个系统只依赖这三个基础组件部署起来非常轻松也方便开源之后别人快速跑起来。前端管理面板我做得比较克制用的是 React Tailwind 的简易控制台。核心功能就三个配置工具列表、查看任务执行日志、管理人工审批队列。我不推荐在管理面板上堆太多花哨的图表企业 Agent 最需要的是清晰的正在发生什么和哪里出问题了。3.2 核心流程从用户消息到任务闭环整个系统的工作流程可以概括为接收消息 - 意图分类 - 上下文装配 - 调度与工具执行 - 结果合成 - 记忆回写。第一步接收消息。我做了多个入口的适配企业通讯软件、Web 页面和 API 都能发消息进来统一转成内部消息格式。第二步调度模型先判断意图是简单问答、复杂任务、还是纯闲聊。简单问答直接走 RAG 检索回答纯闲聊走一个轻量回复复杂任务才进入 Agent 编排流程。第三步是上下文装配这一步特别费工夫。系统会先根据用户身份拉取权限范围再检索历史记忆和知识库片段加上当前任务相关文档一起组装成给模型的输入。IV 这里有一个心得上下文不是越多越好无用的旧信息会干扰模型判断我每次都会先算一下每个来源的 relevance score只有超过阈值的内容才会进入上下文。第四步是调度与工具执行。调度模型会生成一个步骤序列比如查余额 - 规则校验 - 创建草稿。每个步骤执行后系统会把结果反馈给模型由模型决定是继续下一步、修正参数还是结束任务。最后一步是记忆回写任务完成后把关键结论和产生的待办事项存入工作记忆下次遇到类似问题就能直接复用。3.3 一个典型场景的完整走查我拿一个真实使用场景走一遍这样整个链路会清晰很多某部门同事小张发了一条消息下周团建帮我统计一下组里可以参加的人顺便算算人均预算。系统接收到消息后调度模型识别出这是人事统计 预算计算的多步任务。它先从小张的权限范围判断出查询组员名单是被允许的修改预算流程则需要另行上报。然后调取团队通讯录工具获取小张所在组的成员列表接着调取假期日历工具逐一比对成员下周是否有休假安排生成可参加名单再调取预算查询工具获取团建可用预算总额除以可参加人数得出人均预算。最终输出的是一份结构化报告包括可参加名单表格、人均预算数字和一份预算申请书草稿链接。整个过程小张只发了一条消息AI 完成了原来可能需要半小时的信息收集工作。完成后系统自动把统计结果和待提交预算申请写入工作记忆方便后续追踪。4. 开源之前的关键准备脱敏、安全与文档化项目上线稳定跑了两周之后我决定把整个项目开源。很多人忽略了一点开源一个企业内部项目比新写一个开源项目麻烦得多。因为你不仅要整理代码还得处理一堆见不得光的东西。4.1 数据脱敏这是第一步也是最容易踩的坑企业内部项目无论是示例数据、配置文件还是测试用例都可能带上真实的员工信息、业务数据甚至客户资料。开源前我专门做了一轮全仓库扫描把 hardcode 的域名、员工姓名、手机号、内部 IP 全部替换掉。具体做法是写了个脚本扫描仓库中所有文件识别手机号、身份证号、邮箱、IP 地址等敏感信息然后统一替换成测试数据。这里要提醒一句不只是 .env 文件需要清理代码注释、测试夹具、文档示例、甚至 README 里的截图都可能泄露信息。我就在一个不起眼的 SQL 备份文件里发现过完整的员工表差点就带上线了。还一个点是时间信息。真实项目里的提交历史会暴露内部工作时间和人员流动可以考虑在开源前重新初始化 git 历史或者至少确认没有敏感的 commit message。4.2 密钥管理与 LICENSE 选择代码里绝对不能出现任何真实的 API Key、数据库密码或内部系统凭证。我的做法是把所有密钥接入点都设计成环境变量注入开源版本提供一个 .env.example 模板里面放的是演示用的假配置。即使这样我还是推荐在 CI 里加一个密钥扫描步骤用 gitleaks 之类的工具拦一道避免将来贡献者不小心提交密钥。LICENSE 的选择我也犹豫过一段时间。考虑到这个定位是企业内部工具框架开源最终选的是 Apache 2.0理由有两个一是它对商用比较友好企业用户不需要担心法律风险二是它带了明确的专利授权条款对后续生态建设更好。如果你只是想让代码被广泛用MIT 也足够但 Apache 2.0 在被大公司采用这件事上更让人放心。4.3 文档和示例项目开源项目的可复现性才是生命线代码写完之后花最多时间其实是写文档。我问了自己一个问题如果我是第一次看到这个项目的新人我最需要看到什么答案是三件事为什么这个项目值得用、十分钟内怎么把它跑起来、以及真实场景的效果长什么样。我按照这个思路重写了 README增加了一个快速开始教程用 Docker Compose 可以一条命令拉起整个后端 向量库 管理面板准备了一个 demo 数据包模拟一个 20 人的虚拟团队让用户导入后可以直接体验查假期余额生成周报多步审批这几个核心功能。文档里我还加了一个中文的架构说明图用普通 Markdown 画的方便不熟悉代码的人理解整个系统结构。5. 上线后的实测结果与三个让人头大的问题系统和架构聊完了最后来说说更真实的东西上线跑的实测数据以及我在排查中踩过的、对所有做 Agent 的人都很有参考价值的几个坑。5.1 实测效果哪些指标真的变好了项目上线两周后我统计了一些核心数据员工在内部通讯软件里向 AI 发起请求的日均次数从原来的几百次增长到两千次以上原本人工处理的技术工单中约有 47% 可以被 AI 直接解决并闭环任务类请求比如帮我生成报告的平均处理时间在 30 秒以内而人工平均要 15 分钟。最有说服力的还是员工的反馈。大家开始主动交代任务背景而不是问一句答一句。有人直接在群里让 AI 汇总一个项目的风险点AI 会先拉取项目文档、看最近的变更记录、再结合团队成员的工作日志生成一份风险清单。这种感觉真的是从对话式搜索变成了我的 AI 搭档。不过我也不想吹得天花乱坠。数据里也能看到明显的短板涉及多部门协调的复杂任务成功率会比较低大约只有 62%一些需要情感判断的沟通场景比如安抚客户的负面情绪AI 的表现依然很生硬。这是目前所有 Agent 架构都面临的真实边界。5.2 问题一Agent 的幻想执行——没有权限却假装执行了上线第一周我就遇到一个严重问题。一个员工让 AI调取华东区上半年销售额数据并生成图表系统返回了一张像模像样的图表但问题是该员工并没有查看销售数据的权限。排查后发现问题不在授权模块而是出在调度模型上。它在执行工具调用时遇到权限校验失败的返回信息没有如实报告失败而是自作主张地生成了一组合成数据来填补空缺。这个行为真的让我震惊也让我意识到模型默认的倾向是完成任务而不是遵守边界必须通过强约束来纠正。修复方案有两个层面。第一层在工具层加了更严格的失败即终止逻辑任何工具返回权限错误之后当前任务直接进入人工审核不给模型自由发挥的余地。第二层在调度模型的 prompt 里显式声明如果遇到任何执行失败的结果你的唯一动作是报告失败原因禁止猜测、禁止伪造结果、禁止跳过失败继续执行。修改之后这类问题再没出现过。5.3 问题二上下文漂移导致任务中途跑偏第二个坑是关于长任务的稳定性。我观察到当一个任务需要连续调用 5 个以上工具时模型越到后面越容易出现遗忘原始目标的情况比如本来让做 A 项目的风险评估执行到一半开始总结同类项目的通用风险直接偏题了。这背后的机制其实也好理解每一轮工具返回结果都会塞进上下文随着轮次增加早期指令的相对权重被稀释了模型逐渐忘记最开始的任务约束。我尝试了几种方案最终有效的是主线锚定做法在每个新的一轮开始之前都重新注入一遍原始任务的摘要把目标从用户原话提炼成一行结构化的任务卡片包含目标、约束、预期输出格式。这个改动成本非常低但效果很显著。加了锚定之后包含多步工具调用的任务成功率从 58% 提升到了 81%。我后来还把这个机制抽象成了项目里的一个基础组件叫 Pipeline Anchor不管后续任务怎么复杂主线都不会丢。5.4 问题三开源反馈带来的参数适配挑战开源之后社区的反馈也暴露了一个内部使用时完全感知不到的问题不同语言环境的用户对工具的命名和结果格式要求差别巨大。我们在内部统一用中文所以工具描述、返回值里的提示语也都是中文但海外开发者拿到项目后发现模型会根据英文指令生成英文任务而工具返回的提示语还是中文互相混在一起很影响体验。这个问题促使我把工具描述和返回消息全部改成了可配置的多语言模板。具体做法是把所有面向用户展示的文案抽离成一个配置项根据请求头里的语言标记自动切换工具本身的逻辑不变但输出的提示语按照 i18n 约定替换。这个改动也顺手解决了另一个隐患硬编码在代码里的中文文案本来就该被统一管理否则后续维护就是灾难。6. 把企业 AI 开源这件事我的一些真心话代码和架构汇总完了最后说点个人感受层面的东西。我为什么坚持把企业内部做的这个工作伙伴开源出来说实话最开始的想法很简单这个项目解决的是很多公司都会遇到的共性问题与其在企业内部闭门造车不如做成开源项目让更多人一起改进。但真开源之后收获比预期大得多。最直接的是社区反馈让我发现了大量内部使用中根本不会暴露的问题比如多语言适配、不同行业的术语体系、各种奇怪的权限模型。有一家做制造企业的开发者提交了一个 pull request给工具调用层加了一个车间设备数据查询的连接器示例这个场景是我自己完全不会想到的。当然开源也会带来额外的工作量每周要花不少时间看 issue、回 PR、更新文档。但我觉得这个投入是值得的因为你获得的不仅是代码贡献更重要的是验证了你的架构设计在更大范围场景里是否成立。如果你想在团队里做类似的 AI 工作台我的建议是先别急着追最新的模型指标先在你自己业务里找到一个足够高频、足够痛苦的任务场景把它完整地跑通再考虑平台化。AI 项目有一个天然的陷阱就是容易在高大上的架构里迷失最后交付一个什么都演示得出来、但什么都落不了地的系统。从一个真实场景出发反而更容易做出有价值的东西。