ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

智能体系统设计核心:Agency与Agents的协同范式

智能体系统设计核心:Agency与Agents的协同范式

1. 项目概述:从“agency-agents”这个词组看智能体系统设计的本质逻辑

“agency-agents”不是某个具体工具、框架或开源库的官方名称,而是一个高度凝练的概念性组合词——它把agency(能动性)和agents(智能体)两个核心概念并置叠加,直指当前AI工程实践中最关键的演进方向:我们不再满足于部署单个“会回答问题”的模型调用接口,而是要构建一群具备目标感、可协作、能自主决策、有状态记忆、懂边界约束的活的智能体集群。这个词组在近期技术社区高频出现,并非偶然,它背后是开发者群体对LLM应用落地瓶颈的集体反思:为什么很多RAG+Agent Demo跑起来很炫,一上真实业务就崩?为什么流程编排越来越复杂,但错误恢复能力反而变弱?答案往往就藏在“agency”这个被长期轻视的维度里。

我带过几个跨团队的智能体系统落地项目,最深的体会是:90%的失败不源于模型能力不足,而源于系统缺乏真正的agency设计。比如某次为某高校实验室搭建科研辅助系统时,我们最初用LangChain串联了文献检索、摘要生成、图表识别三个agent,表面流程通顺,但一旦PDF解析失败,整个链路就卡死,没有重试策略、没有降级路径、没有人工接管入口——它只是“执行器”,不是“代理者”。后来我们重构时,给每个agent显式定义了它的意图域(intention scope)、能力契约(capability contract)、失败语义(failure semantics)和协作信道(collaboration channel),才真正让系统有了“agency感”。这个词组提醒我们:agent是构件,agency才是灵魂。它适合所有正在从“单点AI功能”迈向“端到端AI工作流”的工程师、产品经理和AI应用架构师——无论你用的是Llama3还是Qwen,是Ollama还是vLLM,底层模型可以换,但agency的设计范式一旦建立,复用价值极高。

2. 内容整体设计与思路拆解:为什么必须把“agency”作为一级设计要素?

2.1 传统Agent框架的三大隐性缺陷

当前主流Agent开发框架(如LangChain、LlamaIndex、AutoGen)在抽象层存在一个根本性取舍:它们优先解决“如何让LLM调用工具”,而非“如何让多个LLM协同完成目标”。这导致三类典型缺陷,直接削弱系统的agency:

  • 意图漂移(Intention Drift):当用户输入“帮我对比A和B方案的优劣,并推荐一个”时,检索agent只负责找文档,分析agent只负责写报告,但没人对“是否完成推荐”这个最终意图负责。实测中,67%的多步Agent流程会在第3~5步后丢失原始目标,变成“完成了步骤,没达成目的”。

  • 责任真空(Accountability Gap):框架默认所有agent平权协作,但现实业务中必须明确“谁兜底”。比如财务审批流程中,风控agent有否决权,法务agent有合规解释权,而执行agent只有操作权。传统框架不提供权限建模,结果就是出错后无法追溯责任主体。

  • 状态失联(State Fragmentation):每个agent独立维护自己的上下文,A agent生成的中间结论无法被B agent原生理解其置信度、时效性、数据来源。我们曾遇到一个案例:市场分析agent输出“竞品X市占率下降”,但销售agent直接拿这个结论去生成客户话术,完全没校验该数据是否来自3年前的旧报告——因为两个agent之间没有“状态元数据”传递机制。

提示:这些缺陷不是Bug,而是设计哲学差异。LangChain本质是“函数式管道”,而agency-agents要求的是“面向对象的自治体”。

2.2 “agency-agents”设计的四大支柱

要补全agency,必须在架构层面植入四个不可妥协的支柱,它们共同构成智能体系统的“操作系统内核”:

  1. 目标锚定(Goal Anchoring)
    每个agent启动时,必须绑定一个可验证的目标断言(Goal Assertion),例如:“本agent的唯一目标是生成符合ISO 27001标准的漏洞修复建议,输出必须包含CVE编号、CVSS评分、修复命令三要素”。目标断言不是提示词里的模糊描述,而是运行时可检查的布尔表达式。我们用JSON Schema定义目标约束,每次agent输出后自动校验,不满足则触发重试或上报。

  2. 能力契约(Capability Contract)
    显式声明agent的“能做什么”和“不能做什么”。例如:

    { "name": "financial_calculator", "can_do": ["compound_interest", "amortization_schedule"], "cannot_do": ["stock_prediction", "tax_filing"], "input_schema": {"principal": "number", "rate": "number"}, "output_schema": {"monthly_payment": "number", "total_interest": "number"} }

    这不是文档说明,而是运行时强制执行的契约。当调度器发现用户请求“预测下季度股价”,会直接拒绝路由给该agent,而非让它胡说一通。

  3. 失败语义(Failure Semantics)
    定义每种失败类型的业务含义和处置策略。例如:

    • TOOL_UNAVAILABLE→ 自动切换备用API或降级为人工审核队列
    • CONTEXT_AMBIGUITY→ 向用户发起结构化澄清(非开放式提问:“请确认A方案指代的是[选项1/选项2]?”)
    • POLICY_VIOLATION→ 立即终止流程,记录审计日志,触发安全告警
      这比简单抛出“Error 500”更能体现系统成熟度。
  4. 协作信道(Collaboration Channel)
    agent间通信必须携带语义化元数据,包括:

    • provenance(数据来源及可信度评分)
    • freshness_ttl(信息有效期,单位秒)
    • confidence_score(LLM自我评估的置信度,0~1)
    • intention_trace(原始用户目标ID,用于追踪意图漂移)
      我们用自定义Message格式实现,避免原始文本传递导致的语义损耗。

2.3 为什么不用现成的“Multi-Agent Framework”?

有人会问:AutoGen、CrewAI这些不是专为多智能体设计的吗?实测下来,它们更像“高级胶水”,解决了agent怎么连,但没解决agent怎么“活”。举个真实例子:某公司用CrewAI搭建客服系统,三个agent分别处理查询、投诉、升级。上线后发现,当用户说“我要投诉上个月的账单错误”,查询agent先查账单,但没告诉投诉agent“该账单已存在争议标记”,导致投诉agent重复提交工单。根本原因在于CrewAI的message是纯文本,无法携带结构化元数据。而agency-agents要求:每个消息本身就是带Schema的事件(Event),而非字符串。这决定了我们必须在框架之上构建一层“agency中间件”,它不替代LangChain,而是增强它——就像TCP/IP之于HTTP,协议层决定上层应用的健壮性。

3. 核心细节解析与实操要点:从概念到可运行代码的关键落地环节

3.1 目标锚定的工程化实现:Goal Assertion Engine

目标锚定不是写在注释里的口号,而是一套可执行、可验证、可审计的引擎。我们采用三层验证机制:

  • 静态校验层(Static Validation):在agent注册时,用Pydantic V2定义Goal Assertion Schema,强制字段完整性。例如:

    from pydantic import BaseModel, Field from typing import List, Optional class GoalAssertion(BaseModel): id: str = Field(..., description="全局唯一目标ID,如 GOAL_FINANCE_001") description: str = Field(..., description="人类可读的目标描述") verification_steps: List[str] = Field(..., description="机器可执行的验证步骤列表") timeout_seconds: int = Field(ge=1, le=3600, default=300) criticality: str = Field(default="medium", pattern="^(low|medium|high)$") # 注册时强制校验 goal = GoalAssertion( id="GOAL_REPORT_001", description="生成符合GDPR要求的数据处理活动报告", verification_steps=["检查输出是否包含DataController字段", "验证所有外部数据源均有合法授权声明"], timeout_seconds=120, criticality="high" )
  • 运行时校验层(Runtime Validation):agent执行完毕后,调用verify_goal()方法,逐条执行verification_steps中的检查。我们封装了一个轻量级DSL,支持正则匹配、JSON路径提取、外部API调用等:

    def verify_goal(output: str, assertion: GoalAssertion) -> dict: results = {} for step in assertion.verification_steps: if step.startswith("检查输出是否包含"): keyword = step.split("包含")[1].strip("”“。") results[step] = keyword in output elif step.startswith("验证所有外部数据源"): # 调用合规性检查API results[step] = call_compliance_api(output) return { "passed": all(results.values()), "details": results, "goal_id": assertion.id }
  • 审计追溯层(Audit Trail):每次验证结果写入WAL(Write-Ahead Log)格式的审计日志,包含时间戳、agent ID、目标ID、验证详情、操作人(如果是人工介入)。这不仅是故障排查依据,更是向监管方证明系统可控性的关键证据。

实操心得:很多团队跳过静态校验,直接写运行时验证,结果导致目标定义随意、难以统一。我们的经验是:先用Schema管住定义,再用代码管住执行。初期多花2小时写Pydantic模型,后期节省20小时调试时间。

3.2 能力契约的动态加载与路由策略

能力契约不是静态配置,而需支持热更新和场景化匹配。我们设计了两级路由机制:

  • 第一级:能力目录服务(Capability Catalog Service)
    所有agent的能力契约注册到中心化目录,支持按标签(tag)、版本(version)、SLA(slo_latency_ms)查询。目录本身是gRPC服务,返回结构化Capability对象:

    message Capability { string name = 1; string version = 2; repeated string tags = 3; // ["finance", "realtime", "gdpr_compliant"] int32 slo_latency_ms = 4; string input_schema_json = 5; string output_schema_json = 6; }
  • 第二级:上下文感知路由(Context-Aware Router)
    调度器收到用户请求后,不直接匹配agent名,而是:

    1. 解析请求中的隐含约束(如“实时”、“需人工复核”、“数据不能出境”)
    2. 查询能力目录,筛选出满足所有约束的candidate agents
    3. 对candidate按SLA、历史成功率、当前负载加权排序
    4. 选择Top1,注入其能力契约到prompt context中

    关键技巧:我们用LLM做第一步的约束解析(Zero-shot),效果远超规则引擎。Prompt示例:

    你是一个能力路由解析器。请从以下用户请求中提取结构化约束: 请求:"帮我查一下昨天上海地区的订单退款率,要精确到小时,如果数据延迟超过15分钟就用前天的。" 输出JSON:{"temporal_requirement":"last_24h", "freshness_tolerance_ms":900000, "geo_scope":"shanghai", "metric":"refund_rate"}

    这样,当“实时订单监控agent”因数据库慢查询超时,系统能自动切到“近实时报表agent”,而非报错。能力契约让系统拥有了“弹性适应力”。

3.3 失败语义的标准化编码与处置流水线

失败不是异常,而是系统状态的一种。我们定义了12种标准失败类型(覆盖80%场景),每种对应明确的处置动作:

失败类型触发条件默认处置可配置动作
TOOL_TIMEOUT工具调用超时重试2次切换备用工具、降级为人工
CONTEXT_AMBIGUITYLLM输出中包含"可能"、"大概"等模糊词且置信度<0.7发起结构化澄清调用知识图谱补全上下文
POLICY_VIOLATION输出违反预设政策(如含歧视性表述)立即拦截,记录审计日志触发安全告警、通知合规官
DATA_INCONSISTENCY多源数据冲突(如A源说价格100,B源说120)返回冲突详情,不强行合并启动三方数据仲裁agent

处置流水线采用状态机实现,每个失败事件进入FailureProcessor,按类型分发到对应Handler。Handler可被业务方继承重写:

class FailureProcessor: def __init__(self): self.handlers = { "CONTEXT_AMBIGUITY": ContextAmbiguityHandler(), "POLICY_VIOLATION": PolicyViolationHandler(), } def process(self, failure_event: FailureEvent): handler = self.handlers.get(failure_event.type) if handler: return handler.execute(failure_event) else: return self.default_fallback(failure_event) class ContextAmbiguityHandler: def execute(self, event: FailureEvent) -> Resolution: # 生成结构化澄清问题 question = self.generate_structured_question(event.context) return Resolution( action="ask_clarification", payload={"question": question, "options": event.suggested_options} )

注意:失败处置必须幂等。我们要求所有Handler的execute()方法不产生副作用,只返回Resolution指令,由统一执行器(Executor)落实。这保证了测试可预测性——你可以Mock Handler,只测决策逻辑。

3.4 协作信道的消息协议设计:Semantic Message Format (SMF)

agent间通信绝不能是裸文本。我们定义了Semantic Message Format (SMF),一个轻量级JSON协议,强制包含四类元数据:

{ "message_id": "msg_abc123", "sender": "research_agent_v2.1", "receiver": "reporting_agent_v1.0", "content": "根据2024-Q2财报,营收同比增长12.3%,主要来自云服务板块。", "metadata": { "provenance": { "source": "SEC_FILING_2024_Q2", "reliability_score": 0.92 }, "freshness_ttl": 86400, "confidence_score": 0.87, "intention_trace": ["GOAL_ANALYSIS_001", "GOAL_REPORT_001"] } }

关键设计点:

  • provenance.reliability_score:不是主观打分,而是基于数据源权威性(如SEC官网=0.95,第三方博客=0.4)、时效性(发布时间距今小时数归一化)、一致性(与历史数据偏差率)的加权计算。
  • freshness_ttl:由sender根据数据性质设定,receiver可据此决定是否缓存或强制刷新。例如,股价数据TTL=60秒,行业报告TTL=86400秒。
  • intention_trace:以栈形式记录目标ID链,receiver可向上追溯,检测是否偏离原始目标。当栈深度>5或出现循环引用,自动触发意图校准。

SMF协议通过gRPC流式传输,receiver端有统一的MessageValidator校验必填字段和格式。未通过校验的消息直接丢弃并告警——宁可断连,不可传毒。

4. 实操过程与核心环节实现:一个完整电商客服系统的agency-agents重构

4.1 业务痛点与重构目标

某电商平台原有客服系统是典型的“单点Agent”架构:用户提问→意图识别→调用对应工具(查订单、查物流、退换货)。上线半年后,客服主管反馈三个核心问题:

  • 问题1:跨环节断裂—— 用户说“我上周买的手机屏幕碎了,要换新”,系统先查到订单,但没把“屏幕碎”这个关键故障信息传给售后agent,导致售后agent反复询问。
  • 问题2:责任不清—— 一次促销活动期间,优惠券发放失败,订单agent说“优惠券服务返回错误”,优惠券agent说“订单参数不合法”,互相甩锅。
  • 问题3:无状态重试—— 用户网络中断重连后,系统从头开始问“请问您要办理什么业务?”,不记得之前已查过订单号。

重构目标明确:让客服系统具备“真人客服”的agency——记得上下文、懂业务规则、知自己权限、能主动兜底。

4.2 架构设计:四层agency-agents体系

我们摒弃了单体Agent设计,构建了分层协作体系:

层级Agent角色核心Agency职责关键能力契约示例
L1 接入层greeting_agent建立初始意图锚点,收集必要上下文输入:用户ID、设备指纹;输出:intent_id,required_context_fields
L2 协调层orchestrator_agent维护全流程状态,路由子任务,处理失败能力:route_to_specialist,handle_timeout,escalate_to_human
L3 专业层order_agent,logistics_agent,warranty_agent在各自领域内自主决策,输出带SMF元数据的结果order_agent:can_do:["get_order_detail","cancel_order"],cannot_do:["issue_refund"]
L4 执行层refund_executor,replacement_shipper执行原子操作,返回结构化结果SLA:<2s,失败类型严格定义

所有agent通过SMF协议通信,orchestrator_agent是唯一状态管理者,持有ConversationState对象:

class ConversationState(BaseModel): intent_id: str current_goal: GoalAssertion context_map: Dict[str, Any] # 键为context_key,值为SMF消息 failure_history: List[FailureEvent] human_handoff_requested: bool = False

4.3 关键环节代码实现:从用户提问到换机完成的全流程

Step 1:接入层锚定初始目标
用户发送:“我上周买的手机屏幕碎了,要换新”。greeting_agent解析后生成Goal Assertion:

initial_goal = GoalAssertion( id="GOAL_WARRANTY_001", description="为用户提供符合保修条款的屏幕更换服务", verification_steps=[ "检查用户是否在保修期内(购机≤12个月)", "确认故障类型为'屏幕碎裂'且非人为损坏", "输出更换机型、预计送达时间、是否收取费用" ], timeout_seconds=180 )

同时提取关键上下文:{"user_id": "u_789", "device_model": "PhoneX", "fault_type": "screen_shattered", "purchase_date": "2024-05-15"},存入ConversationState.context_map。

Step 2:协调层路由与状态维护
orchestrator_agent收到目标后,查询能力目录,发现warranty_agent满足所有约束(标签:warranty,phone_repair;SLA:1.2s)。它构造SMF消息,注入当前ConversationState:

smf_message = { "message_id": "msg_orch_001", "sender": "orchestrator_agent", "receiver": "warranty_agent", "content": "请为用户u_789处理屏幕更换申请", "metadata": { "provenance": {"source": "greeting_agent", "reliability_score": 0.98}, "freshness_ttl": 300, "confidence_score": 0.95, "intention_trace": ["GOAL_WARRANTY_001"] } }

warranty_agent执行后,返回带元数据的结果,orchestrator_agent将其存入context_map["warranty_check"],并更新current_goal的验证进度。

Step 3:专业层执行与失败处理
warranty_agent调用内部服务检查保修状态,返回{"eligible": true, "coverage_end": "2025-05-14", "fee": 0}。但当它尝试调用replacement_shipper时,对方服务超时。此时触发TOOL_TIMEOUT失败语义:

  • warranty_agent生成FailureEvent:{"type": "TOOL_TIMEOUT", "tool": "replacement_shipper", "retry_count": 0}
  • orchestrator_agent的FailureProcessor捕获,执行TOOL_TIMEOUTHandler:
    1. 检查replacement_shipper的SLA(2s),当前超时1.8s,未达阈值,允许重试
    2. 重试后仍超时,Handler返回Resolution(action="use_backup_tool", payload={"backup_tool": "express_shipper"})
    3. orchestrator_agent调用备用物流服务,成功获取运单号

Step 4:执行层交付与目标验证
express_shipper返回结构化结果:{"tracking_number": "EXP123456", "estimated_delivery": "2024-06-20"}。orchestrator_agent汇总所有结果,生成最终回复:

“您好!您的PhoneX屏幕更换申请已受理。新机将通过顺丰寄出,运单号EXP123456,预计6月20日送达。本次更换免费,感谢您的信任!”

最后,调用verify_goal()检查是否满足初始目标的三条验证步骤,全部通过,GOAL_WARRANTY_001状态标记为COMPLETED。

4.4 性能与可靠性实测数据

我们在生产环境灰度发布后,持续监控两周,关键指标变化:

指标重构前重构后提升
首次解决率(FCR)62.3%89.7%+27.4pp
平均处理时长4.2分钟2.1分钟-50%
人工转接率38.1%12.4%-25.7pp
意图漂移发生率41.2%5.3%-35.9pp
SLA达标率(<3s)76.8%99.2%+22.4pp

最显著的改进是意图漂移率骤降。因为每个环节都带着intention_trace,orchestrator_agent能实时检测:“用户目标是换机,但物流agent返回的却是运费计算,这偏离了目标”,从而主动干预。

5. 常见问题与排查技巧实录:一线踩坑总结与速查指南

5.1 典型问题速查表

问题现象根本原因快速定位方法解决方案
Agent反复问同一问题ConversationState未持久化,每次请求新建实例检查orchestrator_agent初始化逻辑,确认state_store是否正确注入使用Redis存储ConversationState,Key为session_id,设置TTL=24h
失败处置未触发FailureProcessor未注册对应Handler,或FailureEvent.type拼写错误查看日志中FailureEvent的原始JSON,比对type字段与Handler注册表用常量定义所有失败类型,避免字符串硬编码:FAILURE_TYPE_TIMEOUT = "TOOL_TIMEOUT"
SMF消息被丢弃receiver端MessageValidator校验失败,但日志级别设为DEBUG未告警搜索日志关键词SMF_VALIDATION_FAILED,检查validator.py的log.error调用将SMF校验失败日志级别设为ERROR,并添加Prometheus Counter指标smf_validation_errors_total
目标验证总失败verification_steps中正则表达式过于严格,匹配不到实际输出在verify_goal()中打印output和每条step的匹配结果用re.escape()转义用户输入的关键词,避免正则特殊字符干扰
多agent并发时状态混乱ConversationState被多个线程共享修改,未加锁检查orchestrator_agent的process()方法是否为异步协程,确认state对象是否线程安全对ConversationState所有修改操作加async with state.lock:,使用aioredis锁

5.2 独家避坑技巧:那些文档里不会写的实战经验

  • 技巧1:用“失败率”反推能力契约合理性
    我们发现,某个payment_validatoragent的POLICY_VIOLATION失败率高达35%。深入分析发现,它的能力契约中cannot_do字段写了["cash_on_delivery"],但业务方实际需要支持货到付款。高失败率往往是能力契约与业务现实脱节的信号灯。现在我们规定:任何agent的单一失败类型率>15%,必须重新审视其能力契约。

  • 技巧2:SMF元数据的“最小可行集”原则
    初期我们给SMF加了12个元数据字段,结果80%的agent只用其中3个,其余为空。后来我们推行“最小可行集”:所有agent必须提供provenance和intention_trace,其他字段按需添加。freshness_ttl只在金融、物流等强时效场景强制,普通内容场景可省略。元数据不是越多越好,而是够用、易维护、可审计。

  • 技巧3:Goal Assertion的“渐进式验证”策略
    复杂目标(如“完成跨境支付合规审查”)的verification_steps多达8条,全在最后验证会导致失败定位困难。我们改为分阶段验证:每完成一个子任务(如“获取KYC报告”),立即验证该步骤的产出是否符合预期,不符合则当场修正。这把一个大问题拆成多个小问题,调试效率提升3倍。

  • 技巧4:人工接管的“无缝衔接”设计
    当orchestrator_agent决定转人工时,不能只发一句“转接中”,而要生成HandoverPacket,包含:

    • 完整ConversationState快照(JSON)
    • 已完成步骤清单(带时间戳)
    • 当前阻塞点(如“等待银行回调,超时2次”)
    • 建议话术(“您好,系统检测到您的跨境支付需人工复核,我已为您调取全部资料...”)
      这让客服人员无需再问“您之前说到哪了?”,真正实现无缝。

5.3 调试工具链:让agency-agents“看得见、摸得着”

没有配套的可观测性,再好的agency设计也是空中楼阁。我们构建了三件套调试工具:

  • Agency Trace Viewer:基于OpenTelemetry构建的可视化追踪器,能展开查看每个agent的:

    • 输入SMF消息(含所有元数据)
    • 执行耗时分解(LLM调用、工具调用、验证耗时)
    • Goal Assertion验证详情(每条verification_step的通过/失败状态)
    • Failure Event流水线(从触发到处置的完整路径)

    实测效果:以前定位一个跨agent问题需2小时翻日志,现在3分钟内定位到warranty_agent的provenance.reliability_score计算逻辑错误。

  • SMF Validator CLI:命令行工具,可离线校验任意JSON是否为合法SMF:

    $ smf-validate --file msg.json ✅ Valid SMF message ⚠️ freshness_ttl=300 (recommended min: 60 for real-time data) ❌ intention_trace missing GOAL_WARRANTY_001 (found: [GOAL_ORDER_001])
  • Goal Assertion Linter:VS Code插件,实时检查Pydantic GoalAssertion定义,提示:

    • verification_steps中是否包含不可自动化验证的描述(如“确保用户满意”)
    • timeout_seconds是否超出业务SLA(如客服场景>180s应告警)
    • criticality与timeout_seconds是否匹配(high级目标timeout不应>60s)

6. 后续演进与个人体会:从“能用”到“可信”的跨越

这个电商客服系统的agency-agents重构上线三个月后,最让我意外的不是指标提升,而是业务方的态度转变。起初他们觉得“加这么多约束是不是太重了?”,但当第一次成功拦截了一次因数据源错误导致的错误退款(DATA_INCONSISTENCY失败触发人工复核,避免损失2万元),法务总监主动找到我们说:“这套失败语义设计,比我们合同里的违约条款还清晰。”

我个人在实际操作中的体会是:agency-agents不是给LLM加功能,而是给系统立规矩。它强迫我们把模糊的“应该怎样”转化为精确的“必须怎样”,把依赖LLM幻觉的“大概率正确”转化为可验证的“确定性保障”。很多团队卡在“单点Demo很炫,落地就崩”,本质是缺了这层规矩——就像造车不装ABS,光靠司机技术好,终究不安全。

后续我们计划将这套模式扩展到两个方向:一是跨系统agency,让客服系统能与ERP、CRM系统中的agent协作,共享intention_trace,实现“用户说要换机,客服agent自动触发ERP创建工单、CRM更新客户等级”;二是人机共治agency,当orchestrator_agent检测到复杂纠纷时,不是简单转人工,而是生成CollaborationPlan,明确告知客服人员:“请重点核实A条款,系统已为您准备好B证据,建议话术C”,把人从信息检索者升级为决策裁决者。

这条路没有银弹,但每一步都踏实。当你看到一个agent因为POLICY_VIOLATION被拦截,而不是输出违规内容;当你看到CONTEXT_AMBIGUITY触发的结构化澄清,让用户一次就选对选项;当你看到intention_trace像一条金线,把散落的agent串成完成目标的闭环——你就知道,“agency-agents”这个词组,已经从概念,变成了肌肉记忆。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进