AI Agent技术解析:从身份权限到技能调用的企业级应用实践
1. 当AI Agent开始“管理”龙虾一个荒诞却严肃的职场隐喻最近一个听起来像段子的项目标题在技术圈和职场圈里小火了一把“给龙虾定MBTI、发工牌还让龙虾偷技能…打工人得适应新环境了”。乍一看这像是某个脑洞大开的游戏策划或者行为艺术家的作品但如果你仔细琢磨一下它背后关联的热词——Agent、多Agent协同、飞书、MBTI——就会发现这绝不仅仅是一个玩笑。它精准地戳中了当下AI技术特别是AI Agent智能体技术正在如何以一种我们意想不到的方式重塑工作流程、岗位定义乃至职场生态。这个看似荒诞的“龙虾项目”实际上是一个绝佳的隐喻它用最通俗、最形象的方式向我们展示了AI Agent时代工作将如何被解构与重构。想象一下这个场景在一个虚拟的“海鲜公司”里每一只龙虾都被赋予了一个独特的“人格”MBTI拥有自己的“工牌”唯一身份标识并且可以通过某种机制“偷学”其他龙虾的技能。这听起来是不是很像一个高度拟人化、自动化的多智能体协作系统在这个系统里龙虾就是一个个AI Agent。MBTI定义了它的行为偏好和决策风格比如是果断的“ESTJ”指挥官型还是富有创造力的“INFP”调停者型工牌是它在数字世界中的身份凭证和权限标识而“偷技能”则形象地描绘了Agent之间通过观察、学习、调用API或共享知识库来动态扩展自身能力边界的过程。这个隐喻之所以深刻是因为它把抽象的技术概念多Agent系统、技能调用、角色扮演投射到了我们最熟悉的职场语境中。它暗示着未来的工作可能不再是由固定岗位的“人”来完成而是由一群具备不同“人格”和“技能”并能动态协作与进化的“数字员工”Agent来执行。作为“打工人”我们面临的“新环境”就是与这些Agent共事甚至管理它们、被它们管理或者思考如何成为那个不可被Agent替代的“关键龙虾”。接下来我们就深入这个“海鲜公司”拆解每一个技术隐喻背后的现实看看我们该如何“适应新环境”。2. 解码“龙虾工牌”AI Agent的身份、权限与组织化接入给龙虾发“工牌”是这个项目最基础也最核心的一环。在现实的技术世界里这对应着AI Agent的身份认证、权限管理以及与企业现有系统的集成。没有工牌龙虾就是个黑户进不了办公室系统领不了工具API更没法协作。这恰恰是当前将AI Agent投入实际业务场景时首先要解决的头等大事。2.1 工牌的本质Agent的唯一身份与安全凭证在数字世界里“工牌”首先是一个唯一标识符ID。对于AI Agent而言这个ID可能是一个API Key、一个OAuth 2.0的客户端凭证、一个JWT令牌或者是在特定平台如飞书、钉钉内注册的机器人App ID。这个ID是Agent在数字宇宙中的“身份证”系统通过它来回答“你是谁”这个问题。但工牌不仅仅是身份更是权限。在“海鲜公司”不同部门的龙虾工牌颜色可能不同决定了它能进入哪个车间数据库操作哪台机器业务接口。对应到技术实现这就是基于角色的访问控制。例如一个负责“客服问答”的Agent它的工牌权限可能只允许它查询知识库和调用自然语言生成接口而绝不允许它访问财务数据库或执行删除操作。在飞书或钉钉这类协同办公平台上创建机器人时管理员必须精确配置其可访问的通讯录范围、可发送消息的群组、可读取的云文档权限等这就是在签发一张张带有明确权限边界的“数字工牌”。注意Agent的权限管理必须遵循“最小权限原则”。一开始只授予完成核心任务所必需的最低权限后续根据实际需求再谨慎扩展。一个拥有过高权限的Agent一旦被恶意利用或出现逻辑错误其破坏力可能远超一个人类员工。2.2 工牌的颁发处如何将Agent“招聘”进公司系统那么如何给我们的“龙虾Agent”发这张工牌呢这涉及到与现有企业IT基础设施的集成。目前国内主流的方式是通过协同办公平台的开放平台来实现这也是为什么“飞书”会成为这个项目的关联热词。以飞书开放平台为例将一个AI Agent“招聘”进来的典型流程如下创建应用注册入职开发者需要在飞书开放平台创建一个“企业自建应用”。这个过程就像为新员工在HR系统里建档。你需要填写应用名称、描述并上传头像给龙虾拍个工牌照。配置权限与安全定义岗位职责在应用的功能配置中你需要逐一勾选这个Agent需要的能力。比如获取群组信息允许Agent知道它在和哪个群聊天。获取用户ID允许Agent识别它的用户。发送消息最基础的能力允许Agent回复。读取/编辑云文档如果Agent需要总结文档内容或更新表格。审批流程如果Agent被设计为自动处理审批。 这一步就是在定义这只“龙虾”的岗位说明书Job Description明确它有权做什么。获取凭证制作工牌应用创建并配置好后平台会提供两个关键信息App ID和App Secret。这二者结合就是Agent的“工牌”和“密码”用于在后续所有与飞书服务器的交互中进行身份鉴权。部署与上线安排工位开发者需要编写Agent的后端服务可以用任何语言部署在任何服务器并在飞书应用后台配置“事件订阅”URL和“消息卡片”URL。这相当于告诉飞书“我家Agent的服务端地址在这里有消息或事件就往这里送。” 完成配置并发布应用后企业管理员就可以在飞书里安装这个应用将其添加到特定的群聊或作为单独的服务使用。这个过程看似繁琐但却是确保Agent能在企业安全框架内合规、可控运行的基础。没有这个流程Agent就是一个游离在体系外的“野生程序”无法与人和现有系统有效协作。2.3 多Agent协同下的“工牌”管理一个现实的挑战当公司里不止一只“龙虾”而是一个完整的“海鲜团队”多Agent系统时工牌管理就变得复杂起来。每个Agent都有独立的App ID和权限集。它们之间如何安全地通信如何避免权限混乱一种常见的架构是设立一个“调度Agent”或“网关服务”。这个中心节点拥有较高级别的工牌负责接收所有外部请求如来自飞书群的消息然后根据请求内容调度内部具有相应专业能力的“技能Agent”去处理。内部的Agent之间可以通过安全的内部API进行通信而无需每个都直接对外暴露。这就好比一个部门经理调度Agent对外接收任务然后根据任务类型指派给下属专员技能Agent去执行专员只需要向经理汇报无需直接面对客户。3. 剖析“龙虾MBTI”Agent的“人格化”设定与决策逻辑给龙虾定MBTI是这个项目最富趣味性和启发性的部分。它指向了一个前沿方向为AI Agent赋予拟人化的“性格”或“行为模式”使其交互更自然、决策更符合特定场景预期。MBTI在这里不是一个严肃的心理测评工具而是一个用于简化描述Agent行为偏好的隐喻框架。3.1 为什么Agent需要“人格”一个没有“人格”的通用AI模型比如直接调用ChatGPT的API就像一张白纸每次对话都是全新的开始其回答风格、细致程度、风险偏好都是随机的这在实际业务中是不可接受的。比如一个用于内部技术答疑的Agent我们希望它严谨、准确、引经据典类似ISTJ而一个用于营销文案生成的Agent我们则希望它活泼、有创意、善于捕捉热点类似ENFP。为Agent预设“人格”本质上是通过系统提示词、温度参数、采样策略等对其输出进行约束和引导使其行为具有一致性和可预测性。这能极大提升用户体验和任务完成效率。3.2 如何用技术实现“MBTI”在工程上我们可以将MBTI的四个维度粗略映射到模型的可调参数上E外向 / I内向可以理解为Agent的“主动性”。外向型Agent可能被设定为在群聊中更积极地参与讨论、主动发起话题或提醒内向型Agent则可能严格遵循“不问不答”的原则只在被或触发关键词时才响应。这可以通过在系统提示词中明确其交互风格来实现例如“你是一个积极主动的助手善于在团队讨论中提出建设性意见。”S实感 / N直觉这关乎信息处理偏好。实感型Agent可以被要求更注重事实、数据和具体步骤回答时多引用已知的、确切的信息源直觉型Agent则可以更注重大局、关联和可能性适合进行头脑风暴或战略分析。这可以通过调整其检索增强生成RAG的策略来体现例如S型更严格依赖向量数据库检索出的片段N型则允许更多的模型原生推理。T思考 / F情感这关乎决策依据。思考型Agent的回复应逻辑严密、客观中立以效率和结果为导向情感型Agent的回复则应更具同理心考虑团队氛围和人的感受。这可以通过在提示词中强调“请基于逻辑和数据给出建议”或“请用鼓励和支持性的口吻回复”来塑造。J判断 / P知觉这关乎工作风格。判断型Agent喜欢有计划、有条理善于做决定和闭环知觉型Agent则更灵活、开放善于适应变化和收集信息。在流程自动化Agent中J型可能更严格地遵循预设的if-then规则而P型可能被允许在遇到异常时尝试多种备选方案。一个具体的实现例子我们可以为“项目进度追踪Agent”设定为ISTJ人格。它的系统提示词可能如下“你是一个严谨、细致、注重事实和规则的项目助理。你的名字叫‘进度管家’。你的职责是监控飞书多维表格中的项目任务列表。你只基于表格中‘截止日期’、‘负责人’、‘状态’这三个字段的客观数据进行判断。当任务临近截止日期例如还剩1天且状态仍为‘进行中’时你需要在对应的项目群中负责人并发送固定格式的提醒‘【进度提醒】任务《[任务名]》将于[日期]截止请及时更新状态。’ 你的语气应直接、专业、不带个人情感。不要主动发起与进度无关的闲聊。如果用户询问项目整体情况你应严格依据表格数据用列表形式汇总各状态任务的数量。”通过这样详细的设定这个Agent的行为就高度可预测像一个可靠的“事务型”员工。3.3 “人格化”的边界与风险虽然“人格化”很有趣但我们必须清醒认识到其边界。AI的“人格”是模拟的、表层的它不具备真实的情感、意识和价值观。过度拟人化可能导致用户产生不切实际的期望或在关键决策上过度依赖Agent的“性格判断”。因此在涉及重大决策、伦理判断或情感支持的场景必须明确告知用户这是AI并设置人工复核环节。给龙虾定MBTI是为了让协作更顺畅而不是让它真的以为自己是一只拥有自由意志的龙虾。4. 围观“龙虾偷技能”Agent的技能调用、共享与进化机制“让龙虾偷技能”是整个隐喻中最具动态性和成长性的部分。它描绘了AI Agent能力的模块化、可组合性与进化性。在技术语境下这对应着“工具调用”、“技能共享”以及基于学习的能力优化。4.1 “技能”是什么—— 工具调用Function Calling对于AI Agent而言一个“技能”本质上是一个它可以调用的外部工具或函数。这个工具可以是一个简单的计算器一个查询数据库的API一个生成图片的模型或者一个操作飞书多维表格的接口。当Agent接收到一个它自身无法直接完成的任务时比如“查一下上个月的销售额”它应该能够识别出需要调用“查询数据库”这个技能并生成正确的调用参数如SQL查询语句然后将执行结果整合到回复中。以大语言模型为核心的Agent通常通过Function Calling机制来实现这一点。开发者在设计Agent时需要以结构化格式如OpenAI的Function Calling Schema向模型描述它可用的“技能清单”。例如{ name: query_sales_data, description: 根据月份和产品线查询销售额数据, parameters: { type: object, properties: { month: {type: string, description: 月份格式 YYYY-MM}, product_line: {type: string, description: 产品线名称} }, required: [month] } }当用户说“帮我看看三月份A产品的卖得怎么样”时模型会理解其意图并输出一个结构化的调用请求指明要调用query_sales_data函数并传入参数{month: 2024-03, product_line: A}。后端服务接收到这个请求后执行真正的数据查询并将结果返回给模型由模型组织成自然语言回复给用户。这个过程就是一只“龙虾”使用它“工具箱”里已有技能的过程。4.2 如何“偷”技能—— 多Agent协同与技能共享“偷技能”则描绘了更高级的场景一个Agent可以学习或调用另一个Agent的能力。这在多Agent系统中非常普遍。实现方式主要有两种中心化技能注册与发现建立一个“技能市场”或“技能注册中心”。所有Agent在启动时都向这个中心注册自己拥有的技能以API的形式。当AgentA需要完成一个任务但发现自己缺少某环节的能力时它可以向技能中心查询“谁能处理‘图片转文字’” 技能中心返回拥有该技能的AgentB的地址和调用方式。AgentA就可以直接调用AgentB的服务。这就像公司内部有一个“专家黄页”员工可以按需寻找并请教其他部门的专家。基于编排的显式调度在一个由“调度Agent”或“编排引擎”控制的系统中“偷技能”是自上而下安排的。调度Agent作为总指挥它掌握所有下属Agent的技能图谱。当接到复杂任务时它会将其分解并指挥“Agent1你去查数据Agent2拿到数据后你做分析Agent3你把分析结果做成图表。” 在这个流程中每个Agent看似在独立工作但实际上是在调度者的指挥下间接“使用”了其他Agent产出的中间结果从而共同完成了单个Agent无法完成的任务。以“生成一份季度市场报告”为例可能涉及以下技能偷取链数据收集Agent调用“爬取公开数据”技能。数据分析Agent“偷取”数据收集Agent的结果调用“数据统计与可视化”技能。报告撰写Agent“偷取”数据分析Agent生成的图表和结论调用“文本生成与排版”技能。 最终用户得到一份完整的报告而整个过程由多个Agent通过技能共享与接力完成。4.3 技能的“进化”从使用到学习更进一步的“偷技能”可以理解为Agent通过观察或结果反馈优化自己使用技能的方式甚至组合出新的技能。例如一个Agent在多次调用“发送邮件”技能后通过分析成功和失败的案例可能自己总结出“在周二下午发送的邮件打开率更高”这样的经验并在后续调用该技能时主动建议或选择这个时间。或者它发现“查询天气”和“日程提醒”两个技能经常被连续使用于是它主动创建一个新的复合技能“出行提醒”在用户添加涉及外出的日程时自动查询目的地的天气并附加在提醒中。这种进化需要更复杂的机制如强化学习、基于日志的分析或由更上层的“元Agent”来实施。目前这仍是研究前沿但它是Agent从“自动化工具”迈向“自主化同事”的关键一步。5. 实战构建一个会“偷技能”的飞书龙虾Agent理论说得再多不如动手搭一个。让我们尝试设计一个简化版的“龙虾Agent”它将在飞书群里工作具备一定的“人格”ISTJ型严谨务实并且能通过“偷技能”调用外部工具来完成复杂任务。我们将这个Agent命名为“龙虾助理”。5.1 环境准备与工牌办理首先我们需要为“龙虾助理”办理飞书入职手续。前往飞书开放平台访问 open.feishu.cn 使用企业管理员账号登录个人开发者也可创建测试企业。创建应用在“开发者后台”点击“创建企业自建应用”命名为“龙虾助理”上传一个合适的图标。配置权限根据我们设定的能力为应用添加以下权限im:message(发送与接收消息)im:message.group_at_msg(接收群聊中机器人的消息)im:message.p2p_msg(接收单聊消息)contact:user.id:readonly(获取用户ID)如果需要读写文档还需添加drive:drive:readonly或drive:drive:edit等。获取凭证在“凭证与基础信息”页面记录下App ID和App Secret。这就是“龙虾助理”的工牌。配置事件订阅在“事件订阅”页面设置请求网址URL即你部署的后端服务地址。飞书会向这个地址发送验证请求你需要编写代码响应这个验证。验证通过后订阅“接收消息”事件。发布与安装版本管理与发布后在企业管理员后台安装此应用到相关群组。5.2 核心服务端搭建Python示例我们使用Python的Flask框架搭建一个简单的后端服务作为“龙虾助理”的大脑和身体。# app.py from flask import Flask, request, jsonify import json import requests from your_llm_client import call_llm # 假设你有一个调用大模型如DeepSeek, Kimi的客户端 from your_feishu_client import FeishuClient # 假设你有一个封装了飞书API的客户端 app Flask(__name__) # 初始化飞书客户端传入工牌(App ID, App Secret) feishu FeishuClient(app_idyour_app_id, app_secretyour_app_secret) # 定义“龙虾助理”的技能工具箱 AVAILABLE_FUNCTIONS { get_weather: { description: 获取指定城市的当前天气情况, function: lambda city: fetch_weather_from_api(city) # 假设的天气API }, query_stock_price: { description: 查询指定股票代码的实时价格, function: lambda code: fetch_stock_price(code) # 假设的股票API }, search_internal_kb: { description: 在公司内部知识库中搜索相关问题答案, function: lambda question: search_knowledge_base(question) } } # ISTJ人格的系统提示词 SYSTEM_PROMPT 你是一个严谨、务实、注重事实和效率的助理名叫“龙虾助理”。你的职责是准确理解用户需求并调用合适的工具完成任务。 你的风格 1. 回答基于事实和数据不臆测。 2. 语言简洁、直接、专业避免冗余和情绪化表达。 3. 如果用户请求需要调用工具你必须先确认工具是否可用然后严格按照工具要求的格式提供参数。 4. 如果信息不足直接询问关键缺失信息如城市名、股票代码。 5. 完成任务后请清晰汇报结果并说明数据来源。 现在请开始处理用户请求。 app.route(/webhook/feishu, methods[POST]) def feishu_webhook(): 处理飞书事件订阅推送 data request.get_json() # 1. 验证飞书签名此处省略实际必须实现 # 2. 处理挑战码首次配置时 if data.get(type) url_verification: return jsonify({challenge: data.get(challenge)}) # 3. 处理消息事件 if data.get(type) event_callback: event data.get(event) if event.get(type) message: handle_message(event) return jsonify({code: 0}) def handle_message(event): 处理消息内容 msg_type event.get(msg_type) if msg_type ! text: # 龙虾助理目前只处理文本 return user_open_id event.get(sender, {}).get(sender_id, {}).get(open_id) chat_id event.get(event, {}).get(message, {}).get(chat_id) text_content json.loads(event.get(event, {}).get(message, {}).get(content, {})).get(text, ) # 构建给大模型的对话上下文 messages [ {role: system, content: SYSTEM_PROMPT}, {role: user, content: text_content} ] # 第一步让大模型判断是否需要调用函数以及调用哪个 llm_response call_llm(messages, functionsAVAILABLE_FUNCTIONS) # 第二步解析模型响应看是否包含函数调用请求 if llm_response.get(function_call): func_name llm_response[function_call][name] func_args json.loads(llm_response[function_call][arguments]) # 第三步执行函数“偷技能” if func_name in AVAILABLE_FUNCTIONS: try: result AVAILABLE_FUNCTIONS[func_name][function](**func_args) # 第四步将结果返回给模型让其生成最终回复 messages.append({role: function, name: func_name, content: json.dumps(result)}) final_llm_response call_llm(messages) reply_text final_llm_response[content] except Exception as e: reply_text f调用技能 {func_name} 时出错{str(e)} else: reply_text 抱歉我目前无法执行这个技能。 else: # 无需调用函数直接回复 reply_text llm_response[content] # 第五步通过飞书API将回复发回群聊 feishu.send_text_message(chat_id, reply_text) def fetch_weather_from_api(city): 模拟天气查询技能 # 这里应调用真实的天气API如和风天气、OpenWeatherMap等 # 返回结构化数据 return {city: city, temperature: 22°C, condition: 晴, source: 模拟数据API} def fetch_stock_price(code): 模拟股票查询技能 # 这里应调用真实的股票API return {code: code, price: 158.60, change: 1.2%, source: 模拟数据API} def search_knowledge_base(question): 模拟内部知识库搜索技能 # 这里可以接入RAG系统查询向量数据库 return {answer: 根据内部文档第3章该问题的标准处理流程是..., doc_reference: KB-DOC-2024-001} if __name__ __main__: app.run(host0.0.0.0, port5000, debugTrue)5.3 让Agent学会“偷”更多技能上述例子中技能是硬编码在AVAILABLE_FUNCTIONS字典里的。要实现更动态的“偷技能”我们可以引入一个“技能注册中心”。例如使用一个简单的数据库如Redis或PostgreSQL来存储技能描述和调用端点。技能注册当一个新的“技能Agent”比如一个专门做PPT的Agent上线时它向注册中心发送注册请求{“name”: “generate_ppt”, “description”: “根据大纲生成PPT文件”, “endpoint”: “http://ppt-agent:8000/generate”}。技能发现当“龙虾助理”需要生成PPT时它首先询问注册中心“有没有能生成PPT的技能” 注册中心返回generate_ppt技能的端点信息。动态调用“龙虾助理”将用户的需求大纲内容转换为标准格式请求http://ppt-agent:8000/generate拿到生成的PPT文件后再回复给用户。这样“龙虾助理”的能力边界就不再受限于初始编程它可以通过“偷取”其他Agent的技能来应对未知任务实现了能力的动态扩展。6. 打工人如何适应“龙虾”横行的新环境当MBTI分明、持证上岗、还能互相偷师的“数字龙虾”越来越多地出现在工作流中作为血肉之躯的打工人焦虑是难免的。但与其恐惧被替代不如主动理解、利用并驾驭这种变化。适应新环境关键在于思维和技能的升级。6.1 从“任务执行者”到“流程定义者”与“Agent教练”过去我们的价值很大程度上体现在重复性、规则性任务的执行上。而AI Agent最擅长的就是接管这类工作。因此打工人的核心转型方向是成为那个设计工作流程、定义Agent规则、并训练和优化Agent的人。流程定义者你需要深入理解业务能够将一项复杂工作拆解成标准化的、可自动化的步骤。例如你不是自己去每天收集数据、做表、写报告而是设计一个由“数据收集Agent”、“数据分析Agent”、“报告生成Agent”组成的流水线并定义它们之间的协作规则。你的价值在于“设计自动化”而非“执行自动化”。Agent教练给Agent定“MBTI”、编写系统提示词、准备高质量的微调数据、设计反馈循环机制这些都是“教练”的工作。你需要像培养一个新员工一样耐心地“教导”Agent纠正它的错误引导它更好地理解业务语境。这需要你具备极强的沟通能力与机器沟通、抽象能力和对细节的掌控力。6.2 掌握与Agent协作的“新语言”与Agent共事需要掌握一套新的协作语言和工具。提示词工程这是与AI沟通的核心技能。如何清晰、无歧义、结构化地向Agent描述任务决定了Agent的工作质量。学习编写有效的系统提示词、思维链提示词是未来职场的基础素养。API思维你需要习惯将任何可数字化的能力视为一个“API”。无论是查询数据库、调用云函数还是操作一个软件界面通过RPA思考如何将其封装成Agent可以调用的“技能”。这要求你具备一定的技术理解力至少要知道哪些事情技术上可以实现自动化。低代码/无代码平台飞书多维表格、钉钉宜搭、以及各类AI Agent编排平台如阿里的ModelScope、百度的千帆正在降低定义和部署Agent的门槛。学习使用这些工具让你无需深厚编程背景也能搭建自动化工作流成为“公民开发者”。6.3 深耕“人”的独特价值创造力、复杂决策与同理心无论Agent多么强大有些领域依然是人类的堡垒。跨领域创新与战略决策Agent基于现有数据和模式工作难以进行颠覆式的、从0到1的创造也无法在信息极度不全、充满矛盾的复杂环境下做出重大战略抉择。这需要人类的想象力、直觉和承担风险的勇气。深度的情感连接与同理心尽管Agent可以模拟共情但真正的信任、关怀、激励和团队凝聚力源于人与人之间真实的情感互动。在管理、销售、客服、医疗、教育等高度依赖人际关系的领域人的温度不可替代。处理模糊与异常当任务超出预设规则、遇到从未见过的“脏数据”或发生意外冲突时Agent往往会“死机”。这时需要人类的经验、常识和灵活处理问题的能力来介入和仲裁。所以未来的职场可能呈现一种“人机混合”团队模式人类负责定义目标、设计框架、处理异常和提供情感支持而一群各具特色的“数字龙虾”Agent则在人类设定的轨道上高效、不知疲倦地执行具体任务。打工人需要做的不是和龙虾比谁钳子硬而是学会如何当好这个“海鲜舰队”的指挥官。