☰
企业级AI智能体开发:人机协同与架构设计实战
2026/10/17 13:27:30 网站建设 项目流程

在企业里做AI智能体,我踩过最大的坑不是模型不够聪明,而是"全自动"三个字把业务部门全吓跑了。智能体一旦自己决策、自己执行、自己给出结论,中间没有任何人来把关,出了问题谁都担不起这个责任。我参与DeepMiner这个企业级AI智能体平台的开发时,从一开始就明确了方向:不做全自动黑盒,而是做人机协同。所谓人机协同,不是把AI当作一个独立工作的"员工",而是把它设计成一个随时可以被人类介入、检查、纠正、兜底的"协作者"。

这篇文章想跟你聊聊DeepMiner在企业级场景下做智能体开发的整体思路、架构设计、人机协同机制的具体落地方式,以及我们在实操中遇到的各种问题和排查经验。内容偏实战,既讲为什么这么设计,也讲怎么一步步实现,适合正在做企业级AI应用、想把AI Agent落到业务里但又担心失控风险的技术团队参考。

1. DeepMiner项目:我们到底在解决什么问题

1.1 企业引入AI智能体的三个现实困境

先说背景。DeepMiner这个项目最初是因为业务侧的一个具体需求被拉起来的:数据部门每天要花大量时间做重复性的数据查询、指标解释和报表解读,大量人力被消耗在"查一下上周的转化率为什么跌了"这类高频但相对标准的问题上。团队想用大模型来替代这部分工作,但真往企业里落地的时候,我们发现事情远不是接一个模型API、写一段Prompt那么简单。

第一个困境是模型的不确定性。大模型生成的SQL可能语法正确但逻辑错误,生成的结论可能看起来成立但口径跟业务定义不一致。这种不确定性让业务部门不敢直接把AI的输出用于决策,因为一旦数据错了,最终背锅的仍然是业务团队。

第二个困境是数据权限和合规问题。企业数据有严格的分级管理制度,不是所有员工都能看所有数据。智能体如果拥有过大的工具权限,一个普通运营人员通过智能体就能查询核心收益数据,这就是严重的安全事故。权限控制必须从设计之初就嵌入系统,而不是事后补救。

第三个困境是信任问题。用户不信任一个"黑盒"给出的结论。人机协同的核心价值也在这里——AI把活干完,人在关键节点把方向,然后双方对结果达成一致共识。这个共识过程,本质上是把AI从"输出结论"变成"给出建议并接受校验"。

1.2 为什么是"人机协同"而非"全自动"

做企业级产品时,"全自动"是一个看起来很诱人但实际很难落地的目标。全自动意味着系统要在无人干预的情况下独立完成所有环节,这对模型的准确性要求是99.99%,而当前大模型即使配合工程手段也很难达到这个级别。

人机协同的思路完全不同:我们不追求AI在所有环节都正确,而是把整个任务流程拆解成多个节点,在关键节点设置"人机握手"。AI负责那些高密度、低风险、标准化的工作,比如数据检索、初步分析、报告草稿撰写;人负责那些高风险、高判断成本的工作,比如目标确认、口径校准、最终决策。

我在DeepMiner里把这种协同拆成三个层面来落地。第一层是分工协同,明确人和AI各自负责哪些环节;第二层是校验协同,AI给出结果后,人有权检查、修改、驳回;第三层是反馈协同,人的每一次纠正都会转化为系统后续优化的依据。这三层合在一起,才构成一个完整的"人机协同"闭环。

2. 系统架构与核心设计思路

2.1 DeepMiner的整体架构

DeepMiner的整体架构可以拆成四层。最上面是会话接入层,负责对接企业内部的IM、Web端、办公套件,让用户能以自然语言的方式发起任务。这一层本身不承担复杂的业务逻辑,只负责把用户的输入标准化,传给下一层。

第二层是编排调度层,这是整个智能体的"大脑"。这一层负责理解用户意图、拆解任务步骤、决定调用哪些工具、管理任务状态。DeepMiner在这里内置了一个轻量的工作流引擎,可以把一个复杂任务拆成多个子任务,并且支持人工审批节点的插入。编排层就像餐厅里的传菜主管,他决定哪个菜先做、哪个厨师负责、什么时候上桌,而不是自己亲自炒菜。

第三层是能力组件层,包括SQL执行器、Python代码执行器、报表生成器、文档检索器等一系列工具。每个工具都被封装成标准的接口,模型通过函数调用的方式来使用它们。第四层是数据安全与治理层,统管权限控制、数据脱敏、操作审计、敏感词过滤。

这里想强调一下"工具"这个概念。很多第一次做智能体的人会以为工具就是把API给模型调用就行了,但企业级场景下,工具必须有非常明确的使用边界。我们的SQL执行器在底层做了两层防护:第一层是权限过滤,根据当前用户的数据权限自动改写查询条件;第二层是只读设置,绝不允许智能体执行任何写操作。这两层防护确保了即便模型意图理解出错,也不会造成数据越权或者数据损坏。

2.2 模型选型与能力组件设计

模型选型上,DeepMiner采用的是"主模型+辅助模型"的混合方案。主模型负责复杂推理、任务规划、结论生成,选择的是参数规模较大、中文理解能力强、工具调用稳定的通用大模型;辅助模型负责一些简单但高频的任务,比如意图分类、实体抽取、敏感信息识别,这类任务用轻量模型就能完成,响应速度更快、成本也更低。

举个例子:用户在对话框里输入"帮我查一下华东区上周的销售额环比变化",主模型负责把任务拆成"定位数据表—生成SQL—执行查询—计算环比—生成解读"这几个步骤,而辅助模型则在一开始就完成"销售数据类问题"的分类标注,方便系统快速匹配对应的提示词模板和工具集。

能力组件这一层,我们的设计原则是"最小可用但可扩展"。第一版上线时只做了四个核心工具:SQL查询器、指标计算器、报表生成器、知识库检索器。每个工具都有明确的入参、出参、错误码。后续业务方提出新需求时,我们只需要在能力组件层新增一个工具,不需要改动编排层的逻辑。

2.3 为什么企业级必须"可插拔"

企业级智能体和普通个人助手的最大区别,在于需要对接企业内部各种异构系统。不同部门的数据口径不同,不同系统的数据表命名风格不同,不同业务线的指标定义也不同。如果把这些差异全部塞进模型的Prompt里,很快就会发现上下文被撑爆,而且维护困难。

DeepMiner采用"可插拔"设计来解决这个问题。我们把每个业务域的知识封装成独立的"领域包",包括数据字典、指标口径、常用查询模板、权限规则。当用户发起一个任务时,编排层先做领域识别,然后只把相关的领域包加载进模型的上下文。这样既保证了专业度,又控制了Token消耗。

这种设计带来的直接好处是:新业务域接入时不需要重新训练模型,只需要配置一套新的领域包。我们最快的一次上线只花了两天时间,就是因为业务域的知识沉淀完全走配置化路径。这也是企业级落地时一个非常关键的设计决策,后期你会省无数的事。

3. 人机协同机制:把"人"设计进系统里

3.1 人在环中的四个关键节点

人机协同不是一句口号,它需要落实到具体的技术机制上。DeepMiner在设计时确定了四个必须有人参与的节点,我逐个说一下。

第一个节点是任务启动前确认。当AI理解完用户意图、准备执行任务时,如果任务涉及敏感数据、批量操作或跨部门数据查询,系统会先把AI的"行动计划"展示给用户,由用户确认后再继续。这个机制有效地避免了因为一句含糊的指令就引发一串错误操作。

第二个节点是高风险操作审批。这里特指那些超出当前用户权限、或者会对业务产生直接影响的操作。DeepMiner把审批通道跟企业现有的审批流打通,AI执行到这一步时会自动暂停,生成一条审批请求,推送给该业务域的数据负责人。负责人批了,AI才继续执行;不批,任务直接终止并通知发起人。

第三个节点是结果复核。AI生成数据分析结论后,不会直接推送给业务方,而是会附带完整的"数据溯源信息"——包括查询了哪些表、使用了什么过滤条件、计算口径是什么、引用了哪些文档。用户可以点开查看,如果有疑问可以直接修改条件后重新生成。这个节点保证了最终结论的可靠性,而不是盲目信任AI。

第四个节点是反馈闭环。每次用户对AI结果做出修改、驳回、追问的时候,系统都会自动记录这次的交互内容,沉淀到反馈池中。这些反馈数据有专人定期分析,用来优化提示词、调整领域包或者补充工具能力,形成一个持续改进的循环。

3.2 可解释性与决策依据展示

企业级场景里,可解释性不是可选项,而是必选项。用户之所以愿意把自己的判断与AI的结论融合,前提是他能看懂AI为什么要这么回答。DeepMiner在生成最终结论之前,会让模型先输出一个"推理摘要",也就是用自然语言简述它的分析思路。

我们以"可见步骤"的方式,把AI执行任务的全过程记录展示在界面上:意图理解结果、任务规划步骤、每一步执行的状态、工具返回的原始数据摘要。整条链路像流水线一样清晰可见,用户可以逐段检查。某一次我们发现业务团队对AI结论的采纳率不高,后来调查发现原因是大家看了结论但看不到依据,心理上总觉得不踏实。加上逐步可见的链路后,采纳率明显提升。

可解释性还有一个附带价值,它天然就是调试工具。开发阶段,工程师可以凭执行记录快速定位是意图识别错了、SQL写错了还是工具执行报错,不需要靠猜。

3.3 协同模式:从"助手"到"协作者"

在实际使用中,我们发现不同团队对人机协同的接受度不一样,需要的协同模式也不一样。DeepMiner最终沉淀了三种模式,分别应对不同成熟度的用户群体。

第一种是"人主导、AI辅助"。AI负责信息检索和初步整理,所有的判断和决策都由人来完成。这种模式适合对AI信任度还比较低的团队。

第二种是"AI执行、人监督"。AI独立完成大部分任务,但在关键节点向人汇报,人只需要做确认操作。大部分数据分析类任务采用的是这种模式,效率和安全兼顾。

第三种是"AI自治、人抽查"。这个模式下,AI对低风险、标准化的任务自动闭环执行,系统定期抽样检查执行结果。我们只在特定业务域、对系统已经充分信任的情况下才开放这种模式。

这三种模式并不是在系统里锁死的,而是可以针对不同的任务类型和用户角色动态切换。这个灵活性也是人机协同框架区别于传统工作流自动化的重要特征。

4. 实操记录:从零搭建一个DeepMiner分析智能体

4.1 环境与基础配置

接入开发环境时,我给团队定了一套标准的基础配置。核心服务用Python编写,FastAPI作为接口框架,任务队列用的是Redis Streams,向量数据库存知识库切片和记忆数据,业务数据库用PostgreSQL。模型我们接的是统一的模型网关,底层替换模型时上层服务不需要改动。

配置的核心是"领域包"文件。下面是一个简化版的领域包配置示例,一个领域包包含数据字典、指标口径、权限级别和常用查询模板。

domain_name: sales_analysis tables: - table_name: order_flow_daily alias: 每日订单流水 columns: - name: order_dt desc: 订单日期 - name: region desc: 销售区域 - name: gmv desc: 成交金额,单位元 metrics: - metric_name: 销售额环比 formula: (本期gmv - 上期gmv) / 上期gmv * 100% alias_list: [环比, 销售环比] permission_level: L2 query_templates: - tag: 区域销售额查询 template: "SELECT region, SUM(gmv) FROM order_flow_daily WHERE order_dt >= {start_date} AND order_dt <= {end_date} GROUP BY region"

这个配置文件的用意,是让模型在生成SQL时不是靠猜,而是从明确的字段定义和模板出发。我们把"AI自由发挥写SQL"变成"AI根据数据字典组装SQL",准确率提升非常明显。

4.2 核心流程代码实现

DeepMiner的核心任务执行流程分为四步:意图解析、任务规划、工具调度、结果生成。下面是一段简化后可以说明思路的伪代码。

def handle_task(user_input, user_context): # 1. 意图解析 intent = intent_classifier.classify(user_input) if intent.risk_level == "high": pending_actions.append(await build_action_plan(intent, user_input)) return ask_user_confirm(action_plan) # 2. 任务规划 plan = planner.create_plan(intent, user_context) exec_records = [] for step in plan.steps: # 权限校验 if not permission_checker.verify(user_context, step.tool, step.params): trigger_approval_flow(step) return wait_approval() # 3. 工具调度 result = tool_registry.execute(step.tool, step.params) exec_records.append(result) # 风险节点自动暂停 if step.requires_review: review_result = request_human_review(result) if review_result.rejected: return generate_rejection_feedback(review_result.reason) # 4. 结果生成与溯源 answer = generator.synthesize(plan, exec_records) return attach_trace(answer, exec_records)

这段代码把前面讲的人机协同机制全部串起来了:高风险任务先展示行动计划,工具执行前做权限校验,执行过程中遇到需要人工复核的节点会自动暂停,最终生成答案时带上完整的溯源记录。

关于审批超时,我们实际设的是30分钟。这个时间需要根据业务场景来调,太短了审批人来不及看,太长了发起人的体验又很差。后来我们加了一个超时提醒机制,15分钟未审批时会给审批人推一条自动提醒。

4.3 工具调用时机的设计细节

设计工具调用时机,是我们踩坑最多的地方。一开始我们把工具权限放得很宽,模型可以根据自己的判断决定什么时候调用哪种工具,结果经常出现模型在不需要查数据的时候强行调用SQL工具、或者在需要查知识库的时候不做调用的情况。

后来我们换了一个策略:在任务规划阶段,先由编排层根据领域包中的标签和模板生成一个大致的工具调用路径,把候选工具限定在2-3种之内,模型只能从候选集合里选取,不能自行调用未授权的工具。这种方式有效降低了误调用率。使用范围限定工具后,误调用率大概下降了六成。

还需要特别处理的是工具调用结果过长的问题。SQL查询可能返回上千行数据,全量塞给模型既浪费Token又容易导致模型注意力被无关数据干扰。我们在工具层加了一个自动化摘要模块,当结果集过大时会对数据进行预聚合和排序,只把TOP-N条汇总结果和统计指标返回给模型。这样模型看到的永远是最关键的信息,生成结论的质量也更稳定。

4.4 反馈数据的回收与利用

每次人工干预,我们都是当作一次珍贵的标注数据来对待的。用户修改了AI生成的SQL,说明这条SQL有逻辑问题;用户驳回了一个结论,说明结论的推理链条有问题;用户在追问里补充了一个定义,说明领域包里缺了这个口径。

DeepMiner把这些反馈统一记录到一个反馈表中,每条数据包含:原始请求、AI生成的中间结果、用户的修改内容、修改后的结果、触发节点。每周我们会跑一个分析脚本,把这些反馈聚合成几个指标:各工具的错误率、各节点的驳回率、各业务域的问题分布。这些指标直接决定下一迭代的优化优先级。

比如有一段时间,华东区销售数据查询的驳回率特别高,脚本把驳回记录汇总后发现,问题出在"区域"字段的划分口径上。业务方说的华东区和数据表里的region字段值不完全一致,AI按照表里的原始值查询,结果自然对不上。我们随后在领域包里补充了口径映射规则,这类驳回率立刻降下来了。没有反馈数据的回收机制,这种问题可能过了很久都发现不了。

5. 常见问题与排查技巧实录

5.1 问题速查表

把实操中遇到频率最高的问题整理成一张速查表,方便大家对照排查。

症状根本原因解决方案
AI生成的SQL执行结果为空查询条件过于严格,或者表分区选择错误在执行层加入自动放宽条件的兜底逻辑,并提示用户当前使用的过滤条件
同一个问题反复被用户驳回领域包中的指标口径与实际业务不符聚类分析驳回记录,定位口径冲突字段,更新领域包映射规则
智能体不调用工具直接回答意图分类被误导,模型判断不需要访问数据调整提示词约束,对数据类问题强制绑定工具调用前置条件
任务执行到一半卡住无响应审批节点超时或者工具调用死循环增加审批超时自动通知机制,任务编排加入最大步数限制
AI结论与数据明细不一致模型生成了超出数据范围的结论在模型输入端加入数据范围约束,要求结论明确基于给定的摘要数据
多轮对话后上下文混淆对话历史过长导致模型丢失关键信息引入上下文压缩机制,每轮对话后自动生成会话摘要

这张表里每一条背后都有真实的调试过程。拿"AI不调用工具直接回答"来说,我们最初以为是模型能力问题,后来抓取完整链路日志才发现,是意图分类器把"销售数据"类问题误分类成了"常识问答"。修正方式是增加了一个预检规则:所有包含数据表关键词的问题,必须先经过工具调度模块,不允许模型直接回答。

5.2 踩坑记录:那些文档里不会写的事

第一个坑是提示词不是越详细越好。我们第一版给模型写的系统提示词长达3000多字,把各种规则、边界、示例都塞进去了。实际效果反而差,因为模型在长上下文中容易遗忘早期信息,而且详细规则之间存在冲突时模型无法自动取舍。后来我们把提示词精简到800字左右,把更多规则移到编排层的代码逻辑里用硬编码方式执行。要注意,能用代码约束的规则尽量不要放提示词里,提示词只用来引导风格和流程。

第二个坑是会话记忆不能无脑保留。企业级场景下的数据会话经常涉及敏感信息,而且对话轮数多了之后,早期内容可能已经过期。DeepMiner最终采用了"摘要式记忆"方案,每轮对话结束后由轻量模型生成一轮摘要,记忆池里只保留摘要和最近两轮的完整内容。这样既保留了上下文连贯性,又避免Token浪费和敏感信息滞留。

第三个坑是模型反馈给用户的语言风格需要约束。早期版本里AI会用"您"这样的敬语,业务方使用起来有距离感,后来调整为简约直接的书面语风格,并限制每段回复不超过200字,AI只输出结论和关键数据,其余细节放进折叠区域。这个细节看起来不起眼,但对日常使用体验的影响很大。

6. 写在最后:一些个人体会

以我个人在DeepMiner项目里的实际体会来说,企业级AI智能体开发的重心,早就从"模型选型"转移到了"行为设计"上。模型能力已经不是最大的瓶颈,怎么让模型在企业这个复杂环境里负责任地工作,才是真正需要投入精力的地方。

人机协同的本质,概括起来一句话:在数据密集、标准化程度高的环节放给AI做,在判断密集、责任边界清的环节留给人来做。把这句话变成可执行的工程机制,需要的是任务编排、权限控制、审批流打通、反馈回收这些看起来有点"不性感"但极其重要的基础工作。这部分工作没有炫酷的界面,但它决定了智能体到底是一个能稳定产出的生产力工具,还是一个偶尔惊艳但不敢依赖的玩具。

最后再分享一个小技巧:设计人机协同系统时,可以先画一个"任务失败树"。把每个环节可能出错的方式列出来,然后针对每个错误方式设计人类的介入方式。你会发现,所有该介入的节点都是自然涌现的,而不是拍脑袋想出来的。这套方法论从一开始就是DeepMiner项目能顺利走下去的关键,也建议所有做企业级智能体的团队都试一下。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询