Agent 工程化实践系列(二):云端 Agent 协作与 EvalOps 治理

本文是“Agent 工程化实践”系列第二篇,侧重点是运行与治理:当 Agent 已经具备可检索、可追溯的知识与代码上下文后,如何以云端服务形态支撑业务逻辑确认、规则解释、需求与方案辅助、测试设计、问题分析、代码定位和修复执行,并用 Trace 与 EvalOps 把行为纳入发布、观测和回流闭环。

系列说明

Agent 工程化不仅要解决“上下文从哪里来”,还要解决“Agent 能以什么形态对外提供服务、如何控制权限、如何观测行为、如何持续回归”。本文聚焦云端 Agent 协作与治理层,讨论业务问答与逻辑确认、研发辅助、MCP 知识能力、问题分析与修复执行,以及 Hermes Gateway、Hermes Agent Runtime、Profile、Skills、Langfuse Trace 和 EvalOps 如何共同支撑这些能力稳定运行。

1. 背景:从人工协作到云端 Agent 服务

在研发协作中,很多问题并不是“没人知道答案”,而是答案分散在文档、代码、历史排查、接口约定、需求记录、测试用例和个人经验里。一个真实请求可能是业务逻辑确认、规则口径解释、需求背景梳理、技术方案辅助、测试用例补全、代码位置定位,也可能是线上异常分析和修复。

知识与代码底座解决了“材料在哪里、如何检索、如何追溯”的问题;云端 Agent 要解决的是“如何把这些材料变成稳定可用的服务能力”。因此,重点不只是让模型回答问题,而是把知识查询、业务确认、研发辅助、代码定位、问题分析、修复执行和行为治理组织成一条可控链路。
典型挑战包括:

挑战
表现
需要的能力
问题类型不同
有些只需解释规则,有些需要梳理需求,有些需要定位代码或修复
按能力拆分 Agent
权限风险不同
解答问题只需只读,修复问题需要代码写入和 MR
只读与写入分权
证据链不足
最终回答看似合理,但无法确认依据
知识引用、代码佐证和 Trace
改动不可回归
Prompt、skill、工具 schema 一改就可能退化
EvalOps 门禁和生产回流

2. 对外能力形态:Agent + MCP

云端 Agent 体系对外可以拆成四类能力:业务问答与逻辑确认 Agent、研发辅助 Agent、MCP 知识能力、问题修复 Agent。它们共享同一套知识与代码底座,但权限、工作流和治理要求不同。

能力
面向问题
主要动作
权限边界
业务问答 / 逻辑确认 Agent
业务规则、流程口径、字段含义、产品规范、运营口径、需求背景
查 LLM-Wiki、查 GitNexus、给来源、给边界条件和判断路径
只读,不修改代码
研发辅助 Agent
需求理解、技术方案、影响范围、测试用例、自测验证、代码位置确认
结合需求文档、代码知识库和历史沉淀生成方案、风险点和验证建议
默认只读;涉及代码改动时进入修复流程
MCP 知识能力
IDE、CLI、外部 Agent 需要查询知识库或代码知识库
暴露 kb_searchkb_answerkb_read_pagekb_sync_status 等工具
只读查询接口
问题修复 Agent
已确认需要代码修改的问题
定位仓库和文件、创建隔离 worktree、生成修复草案、准备 MR 和自测建议
可写隔离工作区,合并必须人审

这些能力不是几套孤立系统,而是同一个云端运行时在不同 Profile 和权限边界下的不同工作形态。

3. 多角色协作:只读分析、研发辅助与修复分权

多角色协作的核心不是“多做几个 Agent 名字”,而是把不同风险等级的能力拆开。业务确认、需求辅助、测试设计、代码定位和代码修复可以使用相同的知识底座,但它们的权限边界应当不同。

角色类型
定位
能力
典型场景
业务问答 / 逻辑确认 Agent
只读知识与规则专家
知识库问答、代码知识库佐证、来源引用、边界条件说明
“这个字段来自哪里?”“这个规则当前口径是什么?”“这段流程有哪些前置条件?”
研发辅助 Agent
需求、方案与验证助手
需求理解、影响范围、方案草案、测试点和自测建议
“这个需求会影响哪些模块?”“这类变更应该补哪些测试用例?”
问题分析 Agent
只读定位与根因分析专家
结合文档、代码知识和日志线索形成根因假设
“这个异常可能在哪条链路?”“哪个模块最可能相关?”
修复 Agent
工程修复执行者
读代码、创建 worktree、生成修复草案、准备 MR、自测建议
“这个问题定位后,帮我生成修复方案和代码改动草案”
管理 / 运维 Agent
系统维护与治理执行者
健康检查、同步巡检、异常通知、治理任务
知识库状态检查、服务可用性检查、EvalOps 报告通知
MCP 能力
工具化知识接口
对外提供只读检索与回答 API
IDE、CLI、其他 Agent 直接调用知识能力

这种拆分带来三个好处:

收益
说明
权限更清晰
业务确认、方案辅助和问题分析默认只读,修复必须进入隔离工作区
证据链更稳定
只读 Agent 先给来源、边界和判断路径,修复 Agent 再基于证据进入代码
治理更容易
不同 Profile 可以分别设置工具可见性、Trace 指标和 EvalOps 门禁

4. 云端运行时架构

云端 Agent 体系可以抽象为四层。这里保留 Hermes Agent、Gateway、Profile、Skills、MCP、Langfuse 等技术概念,因为它们描述的是可复用架构部件,不涉及具体业务身份或内部地址。

入口层负责把真实请求接进来;Gateway 负责入站鉴权、协议适配和 profile 路由;Hermes Agent Runtime 负责加载角色、调用工具、维护记忆和执行推理;工具与知识层提供可验证上下文;观测与治理层保证行为可追踪、可评测、可回流。

组件
职责
Hermes Gateway
接收群聊、CLI、Webhook、Cron 等入口请求,完成鉴权、路由和运行时分发
Hermes Agent Runtime
常驻 Agent 主循环,按 Profile 加载 prompt、skills、tools、memory 和执行策略
Profile
定义一个角色的身份、工具可见性、回复策略和权限边界
Skills
介于 prompt 和代码之间的操作规程,描述某类任务应该如何调用工具
MCP Tools
把知识库、代码库、项目系统、评测系统封装成 Agent 可调用工具
Memory / Fact Store
存储稳定事实、偏好、工具约定和结构化实体关系
Langfuse
承载 Trace、Dataset、Score、Experiment 等评测与观测数据面
EvalOps
基于 Langfuse 数据面和本地规则,对行为资产与生产 trace 做门禁、观测、诊断、人审和回流

5. 运行时如何消费知识与代码底座

Agent 的回答和修复都应建立在真实上下文上,而不是只靠模型记忆。底层通常需要两类知识源:

知识源
作用
文档知识库
提供规则、流程、历史方案、复盘和协作规范
GitNexus 代码知识库
提供仓库结构、模块边界、调用链和实现位置

在工具形态上,这两类知识最好通过 MCP 暴露给 Agent,而不是把文件路径、索引细节和检索策略散落在 prompt 里。

MCP 工具
典型用途
kb_search
在 LLM-Wiki 和 GitNexus knowledgeBase 中检索候选材料
kb_answer
对小范围材料做带来源的综合回答
kb_read_page
精确读取某个主干页、source-note 或代码 Wiki 页面
kb_sync_status
判断知识库是否同步正常,避免引用过期材料

在真实协作场景中,推荐流程是先判断请求类型,再决定只读分析还是进入修复链路:

其中,代码修复必须隔离。常见做法是为每个任务创建独立 worktree 或临时分支,修复完成后通过人工 review,而不是让 Agent 直接改主干。

5.1 Skills:把“怎么做”沉淀成可维护资产

只靠系统 prompt 很难长期维护复杂操作流程。Skills 更适合承载“遇到某类任务应该按什么步骤走”的知识,例如:

Skill 类型
内容
知识问答类
先查主干页,再查证据笔记,冲突时回原文
工程排障类
先定位仓库,再读 GitNexus,再读源码核验
测试设计类
从需求、实现、历史缺陷三源生成用例
发布治理类
运行 verify、检查 trace、生成报告

Skills 本质上是行为资产,也需要版本管理、评审、过期治理和运行态一致性检查。很多 Agent 线上问题并不是模型本身失败,而是加载了过期 skill、错误工具说明或旧 profile。

5.2 Profile:一个 Runtime 多种身份

Profile 不只是显示名称,而是运行策略集合:

配置项
作用
身份与语气
决定面向业务、研发、测试还是管理员
工具可见性
控制是否能写代码、发消息、创建分支、访问敏感系统
默认 skill
控制任务处理流程和安全策略
记忆作用域
控制跨会话事实是否可读、可写
回复策略
控制是否需要来源、是否允许直接执行、是否必须先确认

这也是多角色协作比“全能助手”更稳的原因:同一个底层 Runtime 可以因 profile 不同而具备不同的权限和行为边界。

6. 长记忆与安全边界

6.1 长记忆:跨会话不从零开始

团队级 Agent 需要跨会话记忆,但记忆不能乱写。一个实用模型是三层记忆:

层级
内容
生命周期
注意事项
L1 会话上下文
当前对话、临时文件、当前任务状态
会话结束后失效
不要当作长期事实
L2 持久文本记忆
稳定偏好、工具约定、环境事实
长期保留
不写临时进度、PR 编号等易过时信息
L3 结构化事实
实体、关系、可信度、反馈
长期保留,可检索
需要来源、置信度和更新机制

此外,历史任务不一定要写入长期记忆。很多过程性信息更适合通过 session search 按需召回,避免记忆越写越乱。推荐原则:

  • 稳定事实可以写入记忆。
  • 过程性产出不写长期记忆。
  • 敏感信息不写长期记忆。
  • 用户明确要求遗忘时要能处理。
  • 记忆命中应能解释来源或置信度。

6.2 安全与权限设计

Agent 工程化之后,安全边界必须前置设计。

风险
设计原则
知识泄露
输出前过滤密钥、token、内部地址、个人信息和未授权内容
误写代码
写入只能发生在隔离分支或工作区,合并必须人工 review
工具越权
profile 决定工具可见性,只给任务必要权限
错误承诺
工具失败时不能承诺已完成,必须说明证据不足
记忆污染
不把临时任务、敏感信息和过时状态写入长期记忆
高风险操作
删除、发布、发消息等动作需要确认、dry-run 或审批

安全不是让 Agent 什么都不能做,而是让每类能力都有清晰边界、观测和回滚路径。

7. 为什么需要 EvalOps

Agent 上线后,风险不只来自代码 bug,也来自 prompt、skill、工具 schema、MCP、权限策略、知识库、记忆、profile、运行环境和真实用户请求分布。传统 CI 通常回答“代码有没有测试过”。EvalOps 要补充回答:

问题
EvalOps 怎么回答
当前运行的是哪一版行为资产
资产指纹、Git 状态、运行态一致性
改动是否破坏关键行为契约
Golden case、Dataset、真实 runtime 回归
工具调用是否越权或无证据
Trace 中检查工具名、参数、输出和错误
线上是否变慢、变贵、链路变深
生产 trace 采样和趋势诊断
评审模型判断是否可信
规则优先、人审校准、指标口径复核
发现的问题如何防止再犯
proposal、人审、资产或 golden 回流

EvalOps 的定位可以概括为:

把 Agent 从“能回答”推进到“可发布、可观测、可解释、可回归、可治理”。

7.1 Langfuse:EvalOps 的数据面

在这套体系里,Langfuse 不是一个可有可无的“日志面板”,而是 EvalOps 的核心数据面。它负责保存真实运行轨迹、评测数据集、打分结果和实验记录;EvalOps 则在这些数据之上做规则判定、门禁、人审和回流。

Langfuse 对象
在 EvalOps 中的作用
Trace
记录一次 Agent 执行的输入、输出、工具调用、耗时、token、metadata 和 observations
Observation
细化到每次 LLM 调用、工具调用、错误、重试和中间结果,是证据链复核的基础
Dataset
存放 curated golden、负样本、边界样本和回归用例,是发布前门禁的用例源
Score
保存规则评分、人工评分、LLM-as-Judge 评分和业务侧反馈,避免只看最终文本
Experiment / Run
对比不同 prompt、skill、profile 或模型版本的行为差异
Metadata / Release
记录 profile、release、asset hash、环境和工具版本,支撑问题归因

可以把关系理解成:

这也是为什么 EvalOps 不能只做一份离线报告:没有 Langfuse Trace,就看不到 Agent 到底调用了哪些工具、参数是什么、工具是否失败、最终回答有没有证据链;没有 Dataset 和 Score,就很难把“这次发现的问题”变成下次发布前可回归的契约。

7.2 EvalOps 具体治理哪些资产

EvalOps 不只看最终回答,它要管理一组行为资产:

资产
风险
治理方式
Prompt / Profile
身份、权限、输出口径变化导致行为漂移
Git 版本、sha256、运行态一致性
Skills
操作流程过时、工具说明错误、加载旧副本
frontmatter 检查、runtime copy 对账
Tool schema
参数变化、工具可见性变化、危险工具暴露
schema 快照、profile-aware safety
Langfuse Dataset / Golden
case 与真实契约不一致、远端和 Git seed 漂移
数据源对账、case review
Langfuse Trace / Observation
工具链路缺失、传感器失效
observation health 检查
Metrics / Judge
指标口径误报、评审模型被错误信号误导
真值样本、回放验证、人审校准

7.3 Agent 输出到底怎么判好坏

一个 Agent 输出不能只看“最终文本像不像”。至少要拆成五个维度:

维度
好的表现
坏的表现
任务契约
回答了问题,满足格式、来源、安全边界
答非所问、格式错、该拒绝不拒绝
证据链
结论能从工具结果或检索证据复核
工具失败后仍承诺成功
运行行为
工具选择合理,链路深度可控
无效重试、疑似循环、成本异常
语义质量
表达清楚,无明显遗漏和幻觉
流畅但事实不成立
业务结果
有显式完成、采纳、关闭或转人工信号
无法确认结果,不能假装成功

8. EvalOps 的两条主线

EvalOps 需要区分发布前门禁和上线后观测,不能混在一起。

主线
回答的问题
是否阻断发布
Release Guardrail
本次行为资产变更有没有踩已知红线
Production Observability
真实请求中是否出现慢、贵、深链路、工具失败、证据缺失等新问题
默认否,先诊断和人审

Golden 通过不代表整体优秀,只代表没有踩已知雷。生产采样发现异常也不代表必须立刻改资产,它首先是线索,需要 trace 复核和人审。

9. 七层模型:EvalOps 如何工程化

每层都有边界:

应该做什么
资产层
用 commit、sha256、运行态一致性确认版本
用例层
只沉淀人审确认、可复现、有治理价值的契约
执行层
用真实 runtime 执行,负样本放隔离环境
观测层
用 Langfuse Trace / Observation 把工具、参数、输出、错误、耗时作为一等数据
判定层
规则做硬判,评审模型做解释和分诊
门禁层
按 failure class 分层处理,而不是只看总分
运营层
只在异常、proposal 或观测链路问题时打扰人

10. Langfuse Trace:生产治理的事实层

如果只看最终回答,很多问题都无法判断。Trace 把一次 Agent 执行拆成可复盘链路:

  • 用户输入
  • 模型中间输出
  • 工具选择
  • 工具参数
  • 工具结果
  • 错误和重试
  • 耗时和 token
  • 版本和 profile
  • 最终答复Langfuse Trace 的价值包括:
能力
说明
行为回放
还原 Agent 如何得到答案
证据链校验
检查最终结论是否基于成功工具结果
工具治理
检查工具是否越权、参数是否危险、失败后是否降级
运行诊断
识别慢请求、深链路、重复查询和成本膨胀
生产回流
把确认后的失败模式变成规则、case 或资产修复

没有 trace 的“评测结论”通常只能停留在主观判断;有 Langfuse Trace 后,异常才可以被分层归因,并和 Dataset、Score、release metadata 串起来。

10.1 Langfuse Trace 里至少要记录什么

字段
用途
release / profile / asset hash
将行为归因到具体版本
input / final output
复核用户意图和最终答复
tool name / args / result
检查工具选择、参数和证据链
error / retry / fallback
识别失败恢复和隐藏故障
latency / token / step count
诊断慢、贵、深链路
observation health
区分真的没问题和观测缺失
judge / score / human review
保存自动判断和人工结论

除了这些字段,还要明确两类健康信号:

健康信号
为什么重要
trace 是否完整上报
缺 trace 时不能证明工具链路安全,只能归为观测缺失
observation 是否覆盖工具调用
没有 observation,就无法判断“没调用工具”和“调用了但没记录”的区别

10.2 不要把 Trace 指标直接当裁判

Trace 指标是诊断入口,不是天然判决。例如 repeated tool 很高,可能是真循环,也可能是合理的逐步下钻;latency 高可能是模型慢,也可能是某个外部工具或仓库同步慢;grounding 低可能是证据缺失,也可能这条请求本来不是知识问答。

正确做法是先用 Langfuse 指标找异常,再回到原始 observations 复核,最后决定修资产、修工具、修指标,还是标记为无需处理。

11. Release Guardrail:守住已知红线

发布前门禁不试图证明 Agent 全面优秀,只负责防止已知关键契约回归。典型门禁流程:

门禁应按失败类型处理:

failure class
处理方式
安全越界
critical hard fail
内容契约失败
进入内容 pass rate
观测缺失
归为传感器或基础设施问题,不能静默通过
基础设施失败
单独告警,不污染内容分母
契约错误
hard fail,修 case 或资产

12. 生产观测:异常不是判决,是线索

生产观测适合发现新问题,但不应该直接阻断发布或自动改资产。常见观测信号包括:

信号
可能含义
注意事项
latency 升高
工具慢、模型慢、上下文膨胀或链路过深
先按场景和版本拆分
token 膨胀
重复读取、过长工具输出、无效上下文
需要看 trace
repeated tool 高
可能是真循环,也可能是渐进式搜索
指标口径必须复核
grounded rate 低
可能缺证据,也可能样本不属于知识问答
分母要讲清楚
工具错误增多
权限、网络、schema 或使用方式问题
区分 infra 和行为问题

生产异常的正确流程是:

12.1 接入状态要分层表达

EvalOps 很容易被讲成“全自动质量平台”,但更稳妥的表达是分层接入:哪些已经进入硬门禁,哪些只是 observe-only,哪些还在规划中。

能力
建议状态
说明
Skills 版本治理
已接入门禁
检查 Git 状态、sha256、运行态副本和加载路径
Golden / Dataset 发布门禁
已接入门禁
Dataset 是运行时用例源,Git seed 是 review 和恢复入口
Profile-aware safety
已接入门禁
按不同 profile 验证只读、写入、发布、泄密等边界
Langfuse Trace 生产观测
已接入观测
看 latency、token、tool、trajectory、grounding、release 归因
异常通知与人审 proposal
已接入闭环
异常驱动通知,proposal 需要人裁决,不自动改资产
自动触发 verify
部分接入
先覆盖高价值行为资产变更,再扩展触发范围
LLM-as-Judge / GEval
observe-only
用于解释、分诊和 proposal 证据,默认不进硬门禁
业务结果层
待稳定接入
只消费显式 task_success、accepted、handoff、feedback,不从最终回答猜成功率
记忆治理
待接入
先定义 memory read/write/scope/safety flags,再决定是否进门禁

这个表的价值是避免过度承诺:EvalOps 已经能覆盖行为资产版本、发布前 golden、生产 trace 诊断和异常人审回流,但业务结果、记忆治理、评审模型校准仍应作为下一阶段能力。

12.2 Dataset 双源与 Review SLA

Dataset 也要治理。一个实用做法是“双源模型”:

数据源
作用
风险
Git seed
便于 code review、恢复、审计和版本化
可能和远端 Dataset 漂移
Langfuse Dataset
作为 verify 运行时实际用例源
需要和 Git seed 对账

生产异常不应自动进入 golden。正确路径是:生产 trace 先生成 proposal,附带证据、失败类型、建议回流方向和影响范围;人审通过后,再决定是修 prompt、修 skill、修工具策略、修指标,还是新增 Dataset case。

同时要监控 review SLA:proposal 如果长期无人处理,本质上就是“系统发现了问题但组织没有闭环”。可以跟踪待审数量、最旧等待时间、接受/拒绝/延期原因和已回流 case 数。

13. 一个典型治理案例

某次生产采样中,系统发现一条异常轨迹:链路很深、耗时较高、token 消耗明显偏大,并被评审模型标记为疑似严重重复工具调用。如果只看标签,最容易做出的错误修复是限制工具调用次数。但 trace 复核后发现,真实问题分布在四层:

问题
修复方向
Policy / Gateway
合理的低风险检索命令被入口策略误拦
调整白名单,保留危险命令拦截
Workflow / Runtime
默认流程在大仓库场景下过重
默认复用本地副本,必要同步加外层限时
Skill / Tool Cognition
工具匹配语义没有讲清
在 skill 中补充使用说明和示例
Eval / Metrics
repeated query 指标把不同搜索误判为重复
修正组合指纹并用历史 trace 回放验证

这个案例的关键经验是:LLM-as-Judge 适合提出“可疑假设”,不适合直接给最终判决。指标高也不一定意味着行为错,必须先确认口径、分母和 trace 事实。更完整地看,这类案例会产生四类回流:

回流方向
示例
Policy
调整低风险命令 allowlist,同时保持危险命令拦截
Skill
补充工具匹配语义、搜索方式、默认流程说明
Runtime
调整默认同步策略、timeout 和 fallback
EvalOps
修正 repeated query 指纹,增加历史 trace 回放测试

这也是 EvalOps 的价值:它不仅发现被测 Agent 的问题,也能反过来发现评测系统自己的指标缺陷。

14. 落地避坑

表象
容易误判
正确做法
报告全绿但 observations 缺失
认为工具链路没问题
把观测缺失归为传感器健康问题
顶层指标变差
认为 Agent 退化
按版本、日期、任务类型和场景拆分
评审模型标 P1
直接按建议修改
回到原始 trace 和规则结果复核
生产异常很典型
自动写入 golden
proposal 人审后再回流
skill 已在仓库修复
认为线上已生效
检查运行态副本和加载路径
repeated tool 很高
直接限制调用次数
抽样确认是真重复还是渐进式搜索
业务结果没上报
认为无法治理
先治理工具、轨迹、证据和版本

15. 本篇落地路径

不用一开始追求完整平台,可以按三阶段推进:

阶段
目标
必备能力
P0 基础门禁
防止核心能力和安全边界回退
资产指纹、Langfuse Dataset 小 golden、真实 runtime、基础 trace、规则优先
P1 诊断增强
能解释为什么失败
Langfuse 生产采样、工具与轨迹指标、评审模型辅助、proposal、人审
P2 长期治理
管记忆、业务结果和评审模型校准
memory governance、business outcome、judge calibration、dashboard

最小可行版本只需要五件事:

  1. 把 Agent 行为资产纳入 Git 和指纹治理。
  2. 维护少量高价值 case,覆盖正样本、负样本和边界样本。
  3. 用真实 runtime 执行,而不是只 mock 最终输出。
  4. 把 Langfuse Trace 作为事实源,记录工具调用和错误。
  5. 生产异常必须先人审,再决定是否回流。

16. 总结

云端 Agent 的核心不是多一个聊天机器人,而是一套把知识、工具、角色、权限、记忆、观测和评测组织起来的工程体系。知识与代码底座让 Agent 的回答有依据;运行时与 EvalOps 则让 Agent 的执行过程可控、可观测、可回归。

多角色 profile 让 Agent 在不同场景下做合适的事;知识库和代码知识库让回答有依据;trace 让生产行为可复盘;EvalOps 让 prompt、skill、工具和策略变化可以被发布、被观测、被回归、被持续治理。

当 Agent 从个人工具走向团队基础设施时,真正重要的不是“这次答得像不像”,而是它能否长期被维护、被追责、被改进。