尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于Hermes与云信IM构建企业级AI Agent:架构、实战与协作场景应用

基于Hermes与云信IM构建企业级AI Agent:架构、实战与协作场景应用 1. 从“单机AI”到“群聊AI”为什么我们需要AI Agent进入IM最近在折腾一个挺有意思的事儿把AI Agent具体来说是Hermes给接进了我们团队正在用的云信IM里。这事儿听起来可能有点技术宅但背后的逻辑其实特别简单——我们受够了在AI工具和团队聊天软件之间来回切换的割裂感。想想看现在哪个团队不用几个AI工具写代码有Copilot写文档有Claude做图有Midjourney。但问题来了这些AI都是“单机版”的。你需要一个答案得先打开网页或者某个客户端把问题复制粘贴过去等它生成结果再复制粘贴回IM里相关同事。一来一回沟通的“心流”被打断了无数次。更别提那些需要AI实时参与讨论的场景比如产品评审会大家正在群里热火朝天地讨论一个功能逻辑突然有人问“这个交互的数据埋点方案AI有什么建议吗”这时候所有人都得停下来等某个人去问AI再把答案搬回来。效率低不说讨论的连贯性也毁了。所以我们的核心需求就变成了让AI成为一个“隐形”的团队成员自然地存在于我们日常的Watercooler Chat茶水间闲聊和正式的工作讨论中。它不应该是一个需要被“召唤”的外挂工具而应该像某个同事一样随时可以被提及、被询问并且它的回答能直接呈现在对话上下文中所有人都能看到并能基于它的回答继续讨论。这就是我们选择将Hermes接入云信IM的初衷。Hermes本身是一个开源的、功能强大的AI Agent框架它不像一些闭源的AI服务只提供简单的问答而是允许你为AI定义复杂的技能Skill让它能调用工具、处理工作流、甚至基于长期记忆进行对话。而云信IM作为我们团队内部和与部分客户沟通的主阵地拥有稳定的消息通道、完善的群组管理和用户体系。两者的结合目标就是打造一个“智能工作流中枢”——所有需要AI介入的协作都在IM这个最自然的场景里无缝完成。2. 选型背后的逻辑为什么是Hermes 云信IM在做技术选型时我们对比过几种方案最终敲定Hermes和云信IM这个组合是经过一番考量的。这里把我们的思考过程拆开讲讲或许能帮你避开一些坑。2.1 为什么不是直接调用大模型API最直接的想法是不是在服务器上写个机器人直接调用OpenAI或者国内大模型的API然后通过IM的机器人接口收发消息我们一开始也这么想过但很快发现了问题。首先功能太单一。一个大语言模型API本质上是一个“超级文本补全器”。你问它答。但对于协作场景我们需要的是“智能体”。比如群里有人说“帮我把‘项目复盘会纪要.docx’里的TODO项提取出来创建一个飞书任务分配给对应负责人。” 这是一个典型的跨工具、多步骤的指令。纯API调用无法理解“提取TODO”、“创建飞书任务”、“分配负责人”这些具体动作更无法串联执行。你需要自己写大量的逻辑代码去解析指令、调用不同服务的API、处理异常这相当于重新造一个Agent框架的轮子。其次缺乏记忆和状态管理。在群聊中AI需要理解上下文。比如同事A先问“我们Q3的OKR进度如何” AI回答后同事B接着问“那针对落后项有什么风险预案” AI必须能记住刚才讨论的是“Q3 OKR进度”才能正确理解B的问题。纯API调用通常是“无状态”的你需要自己维护和传递冗长的对话历史成本很高。2.2 为什么选择Hermes框架Hermes恰恰解决了上述痛点。它是一个Agent框架而不仅仅是一个模型封装。技能Skill体系这是Hermes的核心。你可以为AI定义各种技能比如“读取Confluence文档”、“查询Jira工单”、“发送邮件”、“执行一段Python脚本进行数据分析”。每个技能都是一个可插拔的模块。当用户在IM中说“查一下BUG-1234的状态”Hermes能识别出这是调用“查询Jira”技能并自动提取参数“BUG-1234”然后执行对应的代码逻辑最后将结果组织成自然语言回复。这种能力让AI从“聊天机器人”变成了“数字员工”。记忆与上下文管理Hermes内置了对话历史管理机制可以配置短期记忆当前会话和长期记忆向量数据库存储。这意味着AI能记住跨轮次的对话内容甚至能记住更早之前讨论过的项目背景让协作对话更连贯。开源与可定制性作为开源项目Hermes的代码完全可控。我们可以根据团队需求深度定制技能、修改Agent的决策逻辑、或者集成内部私有工具。这对于有安全合规要求或特殊工作流的企业场景至关重要。活跃的社区与清晰的架构Hermes项目有相对活跃的社区和持续的更新其代码结构也比较清晰基于它进行二次开发的心智负担较小。2.3 为什么选择云信IM作为载体市面上IM产品很多钉钉、飞书、企业微信、Slack、Discord等等。选择云信IM主要是基于以下几点私有化部署与数据安全对于许多企业尤其是金融、政务类客户聊天数据必须留在内网。云信支持完整的私有化部署方案从消息服务器到存储都可以放在自己的机房满足了最高级别的安全合规要求。这是很多SaaS类IM无法提供的。强大的机器人BotAPI云信提供了非常完善的机器人接口。不仅支持普通的收发消息还支持发送富文本图文、文件、消息已读回执、特定用户、以及接收各种事件回调如被加入群聊、有人机器人等。这为我们构建一个交互体验良好的AI Agent提供了基础。与现有系统的整合度我们团队的其他系统如OA、CRM已经基于云信的用户体系做了不少集成。将AI Agent接入云信可以天然地继承这套用户身份和关系网络AI在回复时可以直接说“张三 你负责的模块...”而不需要我们再去做一套复杂的账户映射。可控的运维成本作为一款成熟的商业IM云信的SDK成熟、文档齐全运维团队也有现成的经验。相比于自研IM网关或适配多个IM平台集中精力在云信上实现AI能力性价比更高。注意这里的选择是基于我们团队的具体情况强安全需求、已有云信生态。如果你的团队主要使用飞书或钉钉并且对数据安全没有私有化要求那么直接使用飞书机器人或钉钉机器人接入Hermes可能是更快捷的路径。核心思路是一样的用IM做通道用Hermes做大脑。3. 架构设计与核心组件拆解把Hermes和云信IM连起来不是简单写个转发脚本就行。我们需要设计一个稳定、可扩展的架构。下图展示了我们最终采用的核心架构编者注此处原为Mermaid图表已转换为文字描述整个系统可以分为三个核心层3.1 接入层云信机器人服务这一层是AI与真实世界对话的“嘴巴”和“耳朵”。我们部署了一个独立的微服务姑且称之为nim-bot-service。它的职责非常明确消息接收与解析监听云信服务器通过Webhook推送过来的消息事件。当有人在群聊或私聊中机器人或者向机器人发送私信时云信服务器会将消息内容、发送者信息、会话上下文等以HTTP POST请求的形式推送到我们预设的nim-bot-service回调地址。指令预处理与路由不是所有机器人的消息都需要劳烦Hermes大脑。nim-bot-service会先做一层过滤和预处理。例如基础指令如“/help”、“/ping”直接由本服务响应返回机器人使用说明或状态检测减轻后端压力。消息格式化将用户凌乱的自然语言指令进行初步清洗去除多余的符号、表情等并封装成结构化的请求体准备发送给Hermes。会话管理维护一个简单的映射表将云信的会话ID频道ID或用户ID与Hermes的会话ID关联起来确保对话上下文不串。消息下发与渲染收到Hermes处理完返回的响应后nim-bot-service需要将结构化的响应可能是纯文本、Markdown、甚至是包含按钮的交互式卡片转换成云信API支持的消息格式并调用云信的“发送消息”API将消息投递到对应的会话中。3.2 智能中枢层Hermes核心服务这是整个系统的大脑我们基于Hermes开源项目进行了部署和定制。这一层的关键在于技能Skill的加载与执行。技能仓库我们为团队常用的工具开发了对应的Hermes Skill。例如ConfluenceSearchSkill根据关键词搜索团队知识库。JiraQuerySkill查询、创建、更新Jira工单。CalendarSkill查询团队日历安排会议。DataReportSkill连接内部数据库执行预定义的SQL查询生成数据简报。CodeReviewSkill接收一个GitHub PR链接调用大模型对代码变更进行概要分析注意不涉及核心代码泄露仅分析公开的变更描述和文件结构。Agent推理引擎这是Hermes的核心。当接收到来自nim-bot-service的用户请求时Agent会根据当前对话历史和已加载的技能进行以下推理意图识别用户到底想干什么是提问、还是命令AI执行某个技能技能匹配与参数提取如果识别出是命令那么应该调用哪个技能并从用户指令中自动提取出技能所需的参数。例如用户说“查一下项目‘北极星’的燃尽图”Agent需要匹配到DataReportSkill并提取参数project_name‘北极星’report_type‘燃尽图’。技能执行与结果整合调用对应的技能函数技能函数内部会去调用真正的工具API如Jira API、数据库接口获取原始数据。然后Agent再利用大模型的语言能力将这些原始数据组织成一段通顺、易读的自然语言回复。记忆模块我们为Hermes配置了向量数据库如Chroma或Weaviate作为长期记忆存储。这样AI不仅能记住当前对话还能在知识库中搜索相关的历史讨论或文档片段让它的回答更有依据。例如当讨论到某个技术方案时AI可以主动说“关于这个问题去年8月在‘架构设计讨论群’里李四 曾分享过一个类似案例的文档链接要点是...”。3.3 支撑层基础设施与模型服务这一层是默默提供能量的“发电厂”。大模型服务Hermes本身不提供模型它需要一个“思考源”。我们通过API连接了多个大模型服务。通常复杂的任务规划和技能调用推理我们会使用能力更强的模型如GPT-4而简单的对话回复则使用成本更低的模型如国内的一些高性能开源模型。Hermes支持灵活配置模型路由。向量数据库用于存储和检索Hermes的长期记忆以及团队知识库的嵌入向量。内部工具API网关所有技能在调用真实的Confluence、Jira、GitLab等内部系统时都通过一个统一的API网关进行网关负责认证、限流、日志记录保证了安全性和可观测性。这个架构的核心思想是解耦。nim-bot-service只关心IM协议Hermes只关心AI推理和技能执行。任何一方需要升级或替换比如换个IM平台或者升级Hermes版本对另一方的影响都最小化。4. 实战接入从零到一的详细步骤与避坑指南理论讲完我们来点实在的。如何一步步把Hermes和云信IM接起来以下是我们趟过坑之后总结的步骤。4.1 第一步搭建与配置Hermes核心服务这是最基础的一步。假设你有一台Linux服务器。环境准备确保服务器有Python 3.9、Docker和Docker Compose。Hermes官方推荐使用Docker部署能避免很多环境依赖问题。# 克隆Hermes仓库假设你使用Git git clone https://github.com/some-org/hermes.git cd hermes配置文件修改Hermes的核心配置在config.yaml或环境变量中。你需要重点关注model.provider和model.api_key设置你的大模型供应商如OpenAI, Anthropic, 或国内服务商和API密钥。skills.enabled在这里列出你需要启用的内置技能或者自定义技能的路径。memory.vector_store.url配置你的向量数据库连接信息。server.host和server.port设置Hermes服务监听的地址和端口例如0.0.0.0:8000方便后续nim-bot-service调用。一个常见的坑是模型API的可用性与网络。如果你使用国内服务器调用海外模型API可能会超时。务必测试网络连通性或者考虑使用国内大模型的API并在配置中做好相应的模型名称映射。启动服务docker-compose up -d使用docker logs -f hermes查看日志确保服务正常启动没有报错。4.2 第二步创建并配置云信机器人登录云信开发者平台在云信控制台中找到“机器人管理”或类似功能创建一个新的机器人。获取关键凭证AppKey你的应用标识。AppSecret用于计算请求签名的密钥务必保密。RobotAccid机器人的唯一账号ID。配置消息回调这是最关键的一步。在机器人配置页面找到“消息回调”或“事件订阅”设置。回调URL填写你将要部署的nim-bot-service的公网可访问地址例如https://your-bot-service.com/nim/callback。启用事件至少需要勾选“接收消息”、“被消息”等。这样当有人给机器人发消息时云信才会通知你的服务。重大避坑点签名验证。云信服务器向你的回调URL发送POST请求时会在HTTP Header中携带一个由AppSecret和请求内容计算出来的签名checksum。你的nim-bot-service在处理请求前必须用同样的算法验证这个签名。如果验证失败云信会认为回调不可用导致消息无法送达。很多初次接入的同学都在这里栽了跟头一直收不到消息就是因为签名验证逻辑没写对。务必仔细阅读云信官方文档的签名计算部分并编写单元测试进行验证。4.3 第三步开发与部署nim-bot-service这个服务可以用任何你熟悉的语言编写Python/Node.js/Go等。这里以Python Flask框架为例勾勒核心逻辑。项目初始化与依赖mkdir nim-bot-service cd nim-bot-service python -m venv venv source venv/bin/activate pip install flask requests核心代码结构# app.py from flask import Flask, request, jsonify import hashlib import hmac import json import requests app Flask(__name__) # 配置信息应从环境变量读取 NIM_APP_SECRET your_app_secret HERMES_API_URL http://your-hermes-server:8000/v1/chat/completions # Hermes的API地址 def verify_nim_signature(body, checksum): 验证云信回调签名 app_secret NIM_APP_SECRET.encode(utf-8) md5 hashlib.md5(body).hexdigest() sign_str (app_secret md5.encode(utf-8)).decode(utf-8) sha1 hmac.new(app_secret, sign_str.encode(utf-8), hashlib.sha1).hexdigest() return sha1 checksum app.route(/nim/callback, methods[POST]) def nim_callback(): # 1. 获取签名并验证 checksum request.headers.get(Checksum, ) raw_body request.get_data() if not verify_nim_signature(raw_body, checksum): return jsonify({code: 414}), 414 # 签名错误 # 2. 解析消息体 event request.json msg_type event.get(type) if msg_type 1: # 文本消息 from_accid event.get(from) to_accid event.get(to) msg_body event.get(body, ) text msg_body.get(msg, ) # 3. 判断是否是机器人或私聊逻辑简化 # 实际需根据to_accid是个人还是群以及消息中是否包含机器人Accid来判断 if is_message_to_bot(event): # 4. 预处理消息去除信息提取纯指令 clean_text preprocess_message(text, event) # 5. 构建请求调用Hermes服务 hermes_payload { model: hermes, # 或你配置的模型名 messages: [ {role: user, content: clean_text} ], session_id: f{from_accid}_{to_accid} # 用发送者和会话生成唯一会话ID } try: resp requests.post(HERMES_API_URL, jsonhermes_payload, timeout30) resp.raise_for_status() ai_response resp.json()[choices][0][message][content] except Exception as e: ai_response f抱歉处理你的请求时出了点问题{str(e)} # 6. 调用云信API将AI回复发送回去 send_nim_message(to_accid, from_accid, ai_response) return jsonify({code: 200}) def send_nim_message(to, from_accid, content): 调用云信服务端API发送消息 # 这里需要构造云信API要求的格式并计算新的请求签名 # 具体实现参考云信文档 pass if __name__ __main__: app.run(host0.0.0.0, port5000, debugFalse)部署与测试将服务部署到服务器如使用Gunicorn并确保云信配置的回调URL能访问到。然后在云信IM里给机器人发条消息查看服务日志和Hermes日志进行端到端测试。4.4 第四步开发自定义技能Skill这是让AI真正融入你团队工作流的关键。以开发一个“查询本周团队会议”的CalendarSkill为例。在Hermes的skills目录下创建新文件例如my_calendar_skill.py。定义技能类继承自Hermes的BaseSkill并实现run方法。# my_calendar_skill.py from hermes.skills import BaseSkill, skill from datetime import datetime, timedelta import some_calendar_api # 假设的日历API客户端 skill class CalendarSkill(BaseSkill): name query_calendar description 查询当前用户或指定成员在指定时间范围内的日历事件如会议安排。 async def run(self, arguments: dict): arguments 可能包含 - user: 要查询的用户默认当前用户 - start_time: 开始时间ISO格式默认本周一 - end_time: 结束时间ISO格式默认本周日 user arguments.get(user, me) start_str arguments.get(start_time) end_str arguments.get(end_time) # 处理默认时间逻辑 today datetime.now() start_of_week today - timedelta(daystoday.weekday()) end_of_week start_of_week timedelta(days6) start datetime.fromisoformat(start_str) if start_str else start_of_week end datetime.fromisoformat(end_str) if end_str else end_of_week # 调用真实的日历API events some_calendar_api.get_events(user, start, end) # 将结果组织成自然语言 if not events: return f{user} 在 {start.date()} 到 {end.date()} 期间没有安排会议。 else: event_list \n.join([f- {e[title]} ({e[time]}) for e in events]) return f{user} 在 {start.date()} 到 {end.date()} 期间的会议安排如下\n{event_list}在Hermes的配置中启用这个技能然后重启Hermes服务。测试在IM中向机器人发送指令“查一下我这周的会议安排”。Hermes的Agent应该能识别出这是调用query_calendar技能并自动将“我这周”解析为时间参数最终返回你的会议列表。5. 效果实测与协作场景深度应用系统跑起来之后我们把它扔进了几个真实的团队协作场景里“蹂躏”了一番。效果和预想的有差距但惊喜更多。5.1 场景一每日站会Scrum Stand-up的智能助理我们有一个专门的“项目进展”群。以前开站会大家轮流文字汇报“昨天做了什么、今天计划做什么、有什么阻塞”。现在流程变了早上机器人会在群里自动发一条消息“各位早站会时间到。大家可以像平时一样说出你的进展或者直接对我说‘同步进展’来快速生成格式。”开发同学A在群里说“HermesBot 同步进展”。机器人会立刻私聊他一个表单利用云信的互动消息功能让他快速勾选或填写Jira任务号、今日计划、阻塞问题。同时机器人基于JiraQuerySkill自动去Jira拉取A名下“进行中”状态的任务生成一个建议的汇报草稿“你正在处理BUG-1234和FEAT-567。需要我帮你基于这些生成站会发言吗” A确认后机器人将格式规范的发言发布到群内。最实用的部分当所有人发言完毕机器人会主动调用DataReportSkill基于刚才同步的Jira任务生成一张简单的“今日团队负载与阻塞视图”图片发到群里一目了然。实测心得不要追求全自动最初我们想让机器人自动抓取每个人Jira的昨日更新日志来生成汇报但发现日志粒度太细比如提交代码的注释噪音很大。后来改为“人机协作”模式——人提供意图和关键信息任务号AI负责整理格式和补充上下文效果最好。私聊与群聊结合像填写表单这种交互复杂、涉及个人隐私如个人工作安排细节的操作一定要放在私聊里完成最后只把汇总的、脱敏的结果发到群聊。这符合实际协作习惯。5.2 场景二技术方案讨论中的“知识库外脑”在技术评审群里经常会出现这样的对话同事B“这个方案是不是和去年我们做‘用户画像系统’时遇到的性能问题类似” 大家沉默努力回忆... 同事C“有点印象但具体怎么解决的忘了。”现在只需要有人机器人问一句“HermesBot 找一下去年关于‘用户画像系统’性能优化的讨论记录和文档。” 机器人会调用ConfluenceSearchSkill和基于向量数据库的长期Memory Skill在几秒内回复“找到3份相关材料12023年8月‘架构组周会纪要’中关于‘画像系统查询慢’的讨论核心结论是引入了Redis缓存层。2Confluence上的‘画像系统性能优化方案’文档。3当时解决该问题的Jira工单PERF-889链接。需要我总结一下要点吗”实测心得记忆的准确性至关重要向量检索可能会返回相关性不高或过时的文档。我们通过优化文档切分策略按章节/会议纪要分片和给搜索结果增加“来源”与“时间戳”显示让用户能自行判断信息的有效性。AI的总结能力是放大器单纯扔出几个链接价值有限。但AI能基于这些材料生成一段“背景-问题-解决方案”的概要极大提升了信息消化效率。我们训练了一个专门的提示词Prompt让AI在总结时务必注明“根据XX文档XX部分”增加可信度。5.3 场景三新员工入职的“随身向导”新同事加入后会被拉入一个“新人护航”群群里有HR、导师和这个AI机器人。 新同事可以随时在群里问“公司报销流程是什么”“项目代码库在哪里”“申请测试机要找谁” 机器人会结合ConfluenceSearchSkill搜索公司制度文档和预设的FAQ Skill回答固定问题给出准确回答。如果问题涉及具体负责人它会对应的导师或HR。实测心得降低重复性问题负担将HR和导师从回答“洗手间在哪”“WiFi密码多少”这类重复问题中解放出来。但必须有“真人兜底”我们给机器人设置了规则当它连续两次无法回答用户问题或用户明确表示“转人工”时它会自动群内的护航导师。AI是辅助不是替代。6. 遇到的坑与稳定性优化策略理想很丰满现实很骨感。在将近一个月的试运行中我们踩了不少坑也总结出一套让系统更稳的策略。6.1 坑一IM消息的“洪水”与上下文混乱问题在活跃的百人大群里消息刷得很快。机器人可能会在短时间内收到大量消息。如果每条消息都新建一个Hermes会话会导致资源浪费每个会话都加载技能、初始化记忆消耗大量计算资源。上下文割裂用户连续问两个相关的问题可能因为其他消息的插入被分配到两个不同的会话中AI就“失忆”了。解决方案在nim-bot-service层实现会话合并与超时管理。会话合并为每个(用户, 群)对维护一个会话ID。在短时间内如2分钟来自同一用户的连续消息都路由到同一个Hermes会话。超时销毁如果一个会话超过30分钟没有新消息则主动在服务端清理该会话释放资源。下次用户再发言时创建新会话。上下文窗口控制在调用Hermes API时我们只传递最近10轮对话历史避免因历史过长导致API调用缓慢或超出Token限制。6.2 坑二技能执行的“超时”与“失败”问题JiraQuerySkill在查询一个特别复杂的JQL时可能因为Jira服务慢而超时DataReportSkill连接的内网数据库可能临时宕机。这些外部依赖的故障会导致整个AI回复卡住或报错用户体验极差。解决方案实现技能执行的熔断、降级与异步化。熔断机制为每个调用外部API的技能设置熔断器。如果连续失败N次则在一段时间内自动跳过该技能直接向用户回复“XX服务暂时不可用”。降级回复当核心技能失败时不要直接抛出技术异常给用户。而是让AI回复一个友好的降级信息并提供替代方案。例如“暂时无法从Jira获取最新数据但我可以基于昨天的缓存为你分析一下趋势...”。异步处理对于耗时长预计10秒的任务如生成复杂的数据报告我们改造了流程。机器人会先回复“收到你的请求正在生成报告请稍等...”然后在后台异步执行技能完成后再通过云信的“消息更新”API将“正在生成”替换为最终结果。6.3 坑三AI的“幻觉”与“废话”问题即使接入了真实技能大模型在组织回复时仍可能“捏造”一些不存在的功能或者用冗长的套话回答简单问题。比如用户问“今天星期几”AI可能开始长篇大论地解释如何计算星期而不是直接说“星期三”。解决方案精细化提示词工程与输出后处理。系统提示词约束在给Hermes的系统指令System Prompt中我们加入了非常强的约束“你是一个严谨的助手。如果用户询问的信息需要调用技能你必须且只能使用已定义的技能。如果技能返回了明确结果请直接、简洁地呈现该结果不要添加额外的解释除非用户明确要求。对于简单的事实性问题如日期、时间请直接给出最简短的答案。”输出过滤器在nim-bot-service收到AI回复后增加一个简单的后处理模块。例如检测到回复以“根据您的问题...”等套话开头时自动去除这些前缀。对于“今天星期几”这类问题甚至可以设置一个规则直接由服务端计算并返回不经过大模型。6.4 坑四安全与权限边界问题AI能查Jira、能看Confluence那是不是群里任何人都能让它查任何信息这显然不行。解决方案基于IM身份的技能权限控制。身份映射nim-bot-service在收到消息时能从云信回调事件中获取发送者的accid。我们将这个accid与内部的员工账号体系进行映射得到用户的部门、角色等信息。技能权限表为每个技能配置权限规则。例如JiraQuerySkill所有人可查询“公开”项目只有项目成员可查询“内部”项目只有管理员可查询“保密”项目。DataReportSkill仅数据团队和项目经理可用。执行前鉴权在将请求转发给Hermes前nim-bot-service会根据用户身份和请求的意图通过简单的关键词匹配或调用一个轻量级意图分类模型判断是否允许执行。如果无权直接回复“抱歉你没有权限执行此操作”。这个鉴权逻辑放在nim-bot-service而不是Hermes内部是因为服务端更易于集成统一的企业权限中心。7. 未来展望从“工具”到“同事”的演进目前这个系统已经成为了我们团队日常协作中一个“好用”的工具。但我们的设想远不止于此。下一步我们计划从以下几个方向尝试让这个AI Agent真正从一个“工具”进化成一位“智能同事”。7.1 从“被动应答”到“主动感知”现在的模式是“你问我答”。未来我们希望AI能具备一定的主动感知和提醒能力。这需要更深度地集成各类系统的事件流。构建企业事件总线将代码仓库的Push事件、CI/CD流水线的成功/失败事件、线上监控的告警事件、日历的会议开始事件等统一接入一个事件总线。定义“触发式技能”在Hermes中开发一种新的技能类型它不由用户消息触发而是由外部事件触发。例如当生产环境错误日志突增时AI自动在运维群中相关负责人并附上错误摘要和可能的原因分析调用LogAnalysisSkill。当某个重要的Pull Request被合并时AI自动在项目群中通知并生成变更摘要调用CodeDiffSkill。在每周一上午AI自动在团队群中发布“本周重点会议与截止日期提醒”数据来自日历和项目管理系统。7.2 从“单技能”到“工作流”目前用户一次只能触发一个技能。但真实的工作场景往往是多步骤的。例如“分析上周的销售数据找出异常点生成摘要并邮件发送给销售总监”。实现技能编排我们正在探索让Hermes Agent具备“规划”能力。用户给出一个复杂目标Agent能够自动将其分解为多个子任务调用不同的技能并管理这些子任务之间的依赖关系和数据传递。这需要增强Hermes的规划模块或者集成类似LangChain的Agent Executor框架。可视化工作流编辑器为不太熟悉编程的产品、运营同学提供一个低代码界面让他们可以通过拖拽的方式将“读取A表格”、“过滤条件B”、“生成图表C”、“发送消息到群D”这几个技能节点连成一个工作流并保存为一个新的“复合技能”。这样他们就可以通过一句简单的指令来运行整个工作流。7.3 从“通用”到“个性化”目前的AI Agent对所有人都一视同仁。但不同角色、不同习惯的人对AI的期待是不同的。用户偏好学习记录用户与AI的交互历史学习其偏好。例如开发同学喜欢简洁的技术性回答产品经理喜欢附带背景分析和多种选项的回答。AI可以在回复风格上做出调整。个人知识库增强结合企业网盘或笔记软件如Notion、语雀为每个员工构建一个私人的向量化知识库。当员工向AI提问时AI不仅能搜索公共知识库还能在获得授权后搜索该员工的个人笔记给出更贴合其个人上下文和习惯的回答。例如“帮我找一下我上个月记的关于‘用户体验度量指标’的笔记”。7.4 体验优化更自然的交互多模态输入输出支持用户直接发送截图、文档让AI“看懂”图片中的图表或文档里的内容进行分析。同时AI的回复也可以不仅仅是文字而是直接生成图表、思维导图等富媒体内容通过IM的消息能力发送出去。语音交互在移动端或会议场景中支持语音唤醒和语音对话让协作更无缝。这条路还很长挑战也很多尤其是主动感知的边界、工作流的可靠性、以及个性化带来的隐私问题。但看着这个最初只能简单问答的机器人一步步融入团队的血液开始处理一些实实在在的事务这种成就感是巨大的。它不再是一个冷冰冰的工具而是一个逐渐成长、不断学习的数字协作者。
返回列表