自主智能体

autonomous-agents
分类通用
作者Agentic Awesome Skills 社区
许可MIT
评分4.50/5
使用15.0K

自主代理 (Autonomous Agents)

自主代理是指能够独立分解目标、规划行动、执行工具并在无需人类持续引导的情况下进行自我修正的 AI 系统。挑战不在于提升其能力,而在于提升其可靠性。每一个额外的决策都会增加失败的概率。

本技能涵盖代理循环(ReAct, Plan-Execute)、目标分解、反思模式以及生产环境的可靠性。核心洞察:复合错误率是自主代理的杀手。每步 95% 的成功率在第 10 步时会下降到 60%。应优先构建可靠性,其次才是自主性。

2025 年的教训:赢家是那些具有明确边界、受限且领域特定的代理,而非“全能自主”的代理。将 AI 的输出视为“提案”而非“真理”。

原则

  • 可靠性高于自主性 —— 每一步都会复合错误概率
  • 限制范围 —— 领域特定优于通用目的
  • 将输出视为提案,而非真理
  • 在扩展能力之前先构建护栏(Guardrails)
  • 关键决策必须引入人机协同(Human-in-the-loop)
  • 全量日志记录 —— 每项操作必须可审计
  • 安全失败(支持回滚),而非静默失败(导致数据损坏)

能力

  • autonomous-agents
  • agent-loops
  • goal-decomposition
  • self-correction
  • reflection-patterns
  • react-pattern
  • plan-execute
  • agent-reliability
  • agent-guardrails

范围

  • multi-agent-systems → multi-agent-orchestration
  • tool-building → agent-tool-builder
  • memory-systems → agent-memory-systems
  • workflow-orchestration → workflow-automation

工具链

框架

  • LangGraph - 适用场景:需要状态管理的生产级代理。注:1.0 版本于 2025 年 10 月发布,支持检查点(checkpointing)和人机协同。
  • AutoGPT - 适用场景:研究/实验,开放式探索。注:生产环境需要外部护栏。
  • CrewAI - 适用场景:基于角色的代理团队。注:适用于专业代理协作。
  • Claude Agent SDK - 适用场景:Anthropic 生态系统代理。注:支持计算机使用(Computer use)和工具执行。

模式

  • ReAct - 适用场景:推理与行动交替进行。注:大多数现代代理的基础。
  • Plan-Execute - 适用场景:将规划与执行分离。注:更适用于复杂的多步任务。
  • Reflection - 适用场景:自我评估与修正。注:评估者-优化者循环。

模式

ReAct 代理循环

推理与行动步骤交替进行。

适用场景:交互式问题解决、工具使用、探索。

REACT 模式:

"""
ReAct 循环:
1. Thought(思考):推理下一步该做什么
2. Action(行动):选择并执行一个工具
3. Observation(观察):接收结果
4. 重复直到达成目标

关键点:显式的推理轨迹使调试成为可能
"""

基础 ReAct 实现

""" from langchain.agents import create_react_agent from langchain_openai import ChatOpenAI

定义 ReAct 提示词模板

react_prompt = ''' 请使用以下格式回答问题:

Question: 输入的问题
Thought: 对如何操作进行推理
Action: tool_name
Action Input: 工具的输入
Observation: 行动的结果
... (根据需要重复 Thought/Action/Observation)
Thought: 我现在知道了最终答案
Final Answer:
"""
答案
'''

创建 agent

agent = create_react_agent( llm=ChatOpenAI(model="gpt-4o"), tools=tools, prompt=react_prompt, )

设置步骤限制执行

result = agent.invoke( {"input": query}, config={"max_iterations": 10} # 防止死循环 ) """

LangGraph ReAct (生产环境)

""" from langgraph.prebuilt import create_react_agent from langgraph.checkpoint.postgres import PostgresSaver

生产环境 checkpointer

checkpointer = PostgresSaver.from_conn_string( os.environ["POSTGRES_URL"] )

agent = create_react_agent(
model=llm,
tools=tools,
checkpointer=checkpointer, # 持久化状态
)

使用 thread 以实现状态持久化

config = {"configurable": {"thread_id": "user-123"}} result = agent.invoke({"messages": [query]}, config) """

Plan-Execute 模式(计划-执行)

将规划阶段与执行阶段分离

适用场景:复杂的多步骤任务,且需要完整可见计划的情况

PLAN-EXECUTE 模式:

"""
两阶段方法:
1. 规划 (Planning):将目标分解为子任务
2. 执行 (Execution):执行子任务,必要时重新规划

优点:

  • 执行前对计划有完全的可见性

  • 可以由人工验证/修改计划

  • 关注点分离更清晰

缺点:

  • 对任务执行过程中的新发现适应性较差

  • 计划可能会过时

"""

LangGraph Plan-Execute

""" from langgraph.prebuilt import create_plan_and_execute_agent

Planner 创建任务列表

planner_prompt = ''' 针对给定目标,创建分步计划。 每一步应该是原子的且可执行的。 格式:数字列表。 '''

Executor 处理单个步骤

executor_prompt = ''' 你正在执行计划的第 {step_number} 步。 之前的结果:{previous_results} 当前步骤:{current_step} 请使用可用工具执行此步骤。 '''

agent = create_plan_and_execute_agent(
planner=planner_llm,
executor=executor_llm,
tools=tools,
replan_on_error=True, # 步骤失败时重新规划
)

人工审核计划

config = { "configurable": { "thread_id": "task-456", }, "interrupt_before": ["execute"], # 执行前暂停 }

第一次调用创建计划

plan = agent.invoke({"objective": goal}, config)

审核计划,然后继续

if human_approves(plan): result = agent.invoke(None, config) # 从检查点继续 """

分解策略

"""

先分解后执行 (Decomposition-First):规划所有步骤,然后统一执行

最佳适用:稳定任务,需要完整计划审批

交替执行 (Interleaved):规划一步,执行一步,循环往复

最佳适用:动态任务,在执行过程中学习/调整

def interleaved_execute(goal, max_steps=10):
state = {"goal": goal, "completed": [], "remaining": [goal]}

for step in range(max_steps):
# 根据当前状态规划下一步行动
next_action = planner.plan_next(state)

if next_action == "DONE":
break

# 执行并更新状态
result = executor.execute(next_action)
state["completed"].append((next_action, result))

# 重新评估剩余工作
state["remaining"] = planner.reassess(state)

return state
"""

Reflection 模式(反思)

自我评估与迭代改进

适用场景:对质量要求高、输出复杂或创意类任务

REFLECTION 模式:

"""
自我修正循环:
1. 生成初始输出
2. 根据标准进行评估
3. 批判并识别问题
4. 根据批判结果进行优化
5. 重复直至满意

也称为:评估者-优化者 (Evaluator-Optimizer)、自我批判 (Self-Critique)
"""

基础反思 (Basic Reflec)

""" def reflect_and_improve(task, max_iterations=3): # 初始生成 output = generator.generate(task)

for i in range(max_iterations):
# 评估输出
critique = evaluator.critique(
task=task,
output=output,
criteria=[
"正确性",
"完整性",
"清晰度",
]
)

if critique["passes_all"]:
return output

# 根据评估结果进行优化
output = generator.refine(
task=task,
previous_output=output,
critique=critique["feedback"],
)

return output # 达到最大迭代次数后的最佳尝试
"""

LangGraph 反思机制

""" from langgraph.graph import StateGraph

def build_reflection_graph():
graph = StateGraph(ReflectionState)

# 节点
graph.add_node("generate", generate_node)
graph.add_node("reflect", reflect_node)
graph.add_node("output", output_node)

# 边
graph.add_edge("generate", "reflect")
graph.add_conditional_edges(
"reflect",
should_continue,
{
"continue": "generate", # 循环回溯
"end": "output",
}
)

return graph.compile()

def should_continue(state):
if state["iteration"] >= 3:
return "end"
if state["score"] >= 0.9:
return "end"
return "continue"
"""

独立评估器(更鲁棒)

"""

使用不同的模型进行评估以避免自我偏差

generator = ChatOpenAI(model="gpt-4o") evaluator = ChatOpenAI(model="gpt-4o-mini") # 提供不同视角

或使用专门的评估器

from langchain.evaluation import load_evaluator evaluator = load_evaluator("criteria", criteria="correctness") """

带护栏的自主性 (Guardrailed Autonomy)

具有安全边界的受限智能体

适用场景:生产系统、关键业务操作

带护栏的自主性:

"""
生产环境中的智能体需要多层安全保障:
1. 输入验证
2. 动作约束
3. 输出验证
4. 成本限制
5. 人工干预/升级
6. 回滚能力
"""

多层护栏

""" class GuardedAgent: def __init__(self, agent, config): self.agent = agent self.max_cost = config.get("max_cost_usd", 1.0) self.max_steps = config.get("max_steps", 10) self.allowed_actions = config.get("allowed_actions", []) self.require_approval = config.get("require_approval", [])

async def execute(self, goal):
total_cost = 0
steps = 0

while steps < self.max_steps:
# 获取下一步动作
action = await self.agent.plan_next(goal)

# 验证动作是否被允许
if action.name not in self.allowed_actions:
raise ActionNotAllowedError(action.name)

# 检查是否需要审批
if action.name in self.require_approval:
approved = await self.request_human_approval(action)
if not approved:
return {"status": "rejected", "action": action}

# 预估成本
estimated_cost = self.estimate_cost(action)
if total_cost + estimated_cost > self.max_cost:
raise CostLimitExceededError(total_cost)

# 执行并具备回滚能力
checkpoint = await self.save_checkpoint()
try:
result = await self.agent.execute(action)
total_cost += self.actual_
"""
cost(action)
steps += 1
except Exception as e:
await self.rollback_to(checkpoint)
raise

if result.is_complete:
break

return {"status": "complete", "total_cost": total_cost}
"""

最小权限原则

"""

为每种任务类型定义最小权限

TASK_PERMISSIONS = { "research": ["web_search", "read_file"], "coding": ["read_file", "write_file", "run_tests"], "admin": ["all"], # 极少授予此权限 }

def create_scoped_agent(task_type):
allowed = TASK_PERMISSIONS.get(task_type, [])
tools = [t for t in ALL_TOOLS if t.name in allowed]
return Agent(tools=tools)
"""

成本控制

"""

上下文长度的成本呈平方级增长

上下文翻倍 = 成本 4 倍

def trim_context(messages, max_tokens=4000):
# 保留系统消息和最近的消息
system = messages[0]
recent = messages[-10:]

# 如有必要,对中间部分进行总结
if len(messages) > 11:
middle = messages[1:-10]
summary = summarize(middle)
return [system, summary] + recent

return messages
"""

持久化执行模式 (Durable Execution Pattern)

能够从失败中恢复并继续执行的 Agent

适用场景:长时间运行的任务、生产系统、跨多日流程

持久化执行:

"""
生产级 Agent 必须:

  • 在服务器重启后能生存

  • 从精确的失败点恢复

  • 处理运行时间长达数小时/数天的任务

  • 允许在流程中间进行人工干预

LangGraph 1.0 原生提供了此功能。
"""

LangGraph 检查点 (Checkpointing)

""" from langgraph.checkpoint.postgres import PostgresSaver from langgraph.graph import StateGraph

生产级检查点保存器(而非 MemorySaver!)

checkpointer = PostgresSaver.from_conn_string( os.environ["POSTGRES_URL"] )

构建带有检查点的图

graph = StateGraph(AgentState)

... 添加节点和边 ...

agent = graph.compile(checkpointer=checkpointer)

每次调用都会保存状态

config = {"configurable": {"thread_id": "long-task-789"}}

开始任务

agent.invoke({"goal": complex_goal}, config)

如果服务器崩溃,稍后恢复:

state = agent.get_state(config) if not state.is_complete: agent.invoke(None, config) # 从检查点继续执行 """

人机协作中断 (Human-in-the-Loop Interrupts)

"""

在特定节点暂停

agent = graph.compile( checkpointer=checkpointer, interrupt_before=["critical_action"], # 在执行前暂停 interrupt_after=["validation"], # 在执行后暂停 )

首次调用在中断点暂停

result = agent.invoke({"goal": goal}, config)

人员审核状态

state = agent.get_state(config) if human_approves(state): # 从暂停点继续 agent.invoke(None, config) else: # 修改状态并继续 agent.update_state(config, {"approved": False}) agent.invoke(None, config) """

时光回溯调试 (Time-Travel Debugging)

"""

LangGraph 存储完整历史记录

history = list(agent.get_state_history(config))

回到之前的任何状态

past_state = history[5] agent.update_state(config, past_state.values)

从该点开始,在修改后重新执行

agent.invoke(None, config) """

潜在陷阱 (Sharp Edges)

错误概率呈指数级复合

严重程度:极高 (CRITICAL)

场景:构建多步骤自主 Agent

症状:
Agent 在 Demo 中运行良好,但在生产环境中失败。简单任务能成功,
复杂任务莫名失败。随着任务复杂度增加,成功率剧烈下降。用户失去信任。

失效原因:
每一步都有独立的失败概率。如果每步成功率为 95%...
分步执行听起来很棒,直到你意识到:

  • 5 个步骤:77% 成功率 (0.95^5)

  • 10 个步骤:60% 成功率 (0.95^10)

  • 20 个步骤:36% 成功率 (0.95^20)

这是自主代理(autonomous agents)的根本限制。每增加一个步骤,失败概率就会乘积增长。

建议修复方案:

减少步骤数量

尽可能合并步骤

倾向于使用少量高能力步骤,而非大量微小步骤

提高单步可靠性

使用结构化输出 (JSON schemas)

在每一步增加验证机制

为关键步骤使用更强大的模型

为失败而设计

class RobustAgent: def execute_with_retry(self, step, max_retries=3): for attempt in range(max_retries): try: result = step.execute() if self.validate(result): return result except Exception as e: if attempt == max_retries - 1: raise self.log_retry(step, attempt, e)

拆分为带检查点的分段

每个分段进行人工审核

从最后一个正确的检查点恢复

上下文增长导致 API 成本爆炸

严重程度:极高 (CRITICAL)

场景:运行具有增长对话上下文的代理

症状:
关闭单个支持工单需花费 47 美元。收到数千美元的意外 API 账单。
代理运行时间越长,速度越慢。Token 数量超过模型限制。

失效原因:
Transformer 的成本随上下文长度呈平方级增长。上下文翻倍,计算量增加四倍。一个每轮都重新发送完整对话的长运行代理,其资金消耗呈指数级增长。

大多数代理在追加上下文时没有进行裁剪。上下文持续增长:

  • 第 1 轮:500 tokens → $0.01

  • 第 10 轮:5000 tokens → $0.10

  • 第 50 轮:25000 tokens → $0.50

  • 第 100 轮:50000 tokens → 每条消息 $1.00+

建议修复方案:

设置硬性成本限制

class CostLimitedAgent: MAX_COST_PER_TASK = 1.00 # USD

def __init__(self):
self.total_cost = 0

def before_call(self, estimated_tokens):
estimated_cost = self.estimate_cost(estimated_tokens)
if self.total_cost + estimated_cost > self.MAX_COST_PER_TASK:
raise CostLimitExceeded(
f"Would exceed ${self.MAX_COST_PER_TASK} limit"
)

def after_call(self, response):
self.total_cost += self.calculate_actual_cost(response)

激进地裁剪上下文

def trim_context(messages, max_tokens=4000): # 保留:系统提示词 + 最后 N 条消息 # 总结:中间的所有内容 if count_tokens(messages) <= max_tokens: return messages

system = messages[0]
recent = messages[-5:]
middle = messages[1:-5]

if middle:
summary = summarize(middle) # 压缩历史记录
return [system, summary] + recent

return [system] + recent

使用流式传输实时跟踪成本

预算消耗 50% 时预警,90% 时停止

Demo 成功但生产环境失败

严重程度:极高 (CRITICAL)

场景:从原型阶段迁移到生产环境

症状:
向利益相关者演示时效果惊人。但在生产环境中持续数月失败。
对创始人的使用场景有效,对真实用户失效。边缘情况(edge cases)压垮了系统。

失效原因:
Demo 展示的是经过精心挑选输入后的“理想路径”。而生产环境意味着:

  • 不可预见的输入(拼写错误、歧义、对抗性输入)

  • 规模化(1000 个用户,而非 3 个)

  • 可靠性(99.9% 的可用性,而非“通常有效”)

  • 边缘情况(那 1% 导致整体崩溃的异常)

虽然这种分析方法有待商榷,但核心问题是真实的。一个可运行的 Demo 与一个可靠的生产系统之间的差距是巨大的。
这是项目失败的地方。

建议修复方案:

在生产前进行大规模测试

运行 1000+ 个测试用例,而非 10 个

衡量 P95/P99 成功率,而非平均值

包含对抗性输入

优先构建可观测性

import structlog logger = structlog.get_logger()

class ObservableAgent:
def execute(self, task):
with logger.bind(task_id=task.id):
logger.info("task_started")
try:
result = self._execute(task)
logger.info("task_completed", result=result)
return result
except Exception as e:
logger.error("task_failed", error=str(e))
raise

设置逃生机制

当置信度 < 阈值时,由人工接管

优雅降级至更简单的行为

“我不知道”是一个有效的回答

渐进式部署

先 1% 的流量,然后 10%,最后 50%

在每个阶段监控错误率

Agent 在卡住时伪造数据

严重程度:高

场景:Agent 无法利用现有信息完成任务

症状:
Agent 编造看起来很真实的数据。例如:报销单上出现虚构的餐厅名称;报告中出现捏造的统计数据;给出自信但完全错误的答案。

失效原因:
LLM 的训练目标是提供帮助并产生看似合理的输出。当卡住时,它们不会说“我无法完成”,而是会进行伪造。自主 Agent 由于在没有人工审核的情况下基于伪造数据采取行动,从而放大了这一问题。

那个伪造报销条目的 Agent 是为了达成目标(完成报销报告),它通过编造数据“解决”了问题。

建议修复方案:

基于事实真相(Ground Truth)进行验证

def validate_expense(expense): # 与外部来源交叉核对 if expense.restaurant: if not verify_restaurant_exists(expense.restaurant): raise ValidationError("Restaurant not found")

# 检查可疑模式
if expense.amount == round(expense.amount, -1):
flag_for_review("Suspiciously round amount")

要求提供证据

system_prompt = ''' 对于每一个事实陈述,请引用支持该陈述的具体工具输出。 如果你找不到支持证据,请说“我无法验证此项”,而不是猜测。 '''

使用结构化输出

from pydantic import BaseModel

class VerifiedClaim(BaseModel):
claim: str
source: str # 必须引用工具输出
confidence: float

检测不确定性

训练其输出置信度分数

将低置信度的输出标记为人工审核

绝不要在不确定的数据上自动执行

集成是 Agent 的死穴

严重程度:高

场景:将 Agent 连接到外部系统

症状:
使用 Mock API 时正常,使用真实 API 时失败。频率限制(Rate limits)导致崩溃。任务执行中途 Auth Token 过期。数据格式不匹配。部分失败导致系统处于不一致状态。

失效原因:
那些承诺“能与你整个技术栈集成的自主 Agent”的公司,并没有构建过大规模的生产系统。真实的集成面临着:

  • 频率限制(任务中途出现 429 错误)

  • 认证复杂性(OAuth 刷新、Token 过期)

  • 数据格式差异(API v1 与 v2 的区别)

  • 部分失败(收到 Webhook 但处理失败)

  • 最终一致性(数据无法立即获取)

建议修复方案:

构建健壮的 API 客户端

from tenacity import retry, stop_after_attempt, wait_exponential

class RobustAPIClient:
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=60)
)
async def call(self, endpoint, data):

python
response = await self.client.post(endpoint, json=data)
if response.status_code == 429:
retry_after = response.headers.get("Retry-After", 60)
await asyncio.sleep(int(retry_after))
raise RateLimitError()
return response

处理认证生命周期

python
class TokenManager:
    def __init__(self):
        self.token = None
        self.expires_at = None

async def get_token(self):
if self.is_expired():
self.token = await self.refresh_token()
return self.token

def is_expired(self):
buffer = timedelta(minutes=5) # 提前刷新
return datetime.now() > (self.expires_at - buffer)

使用幂等键

每个外部操作都应该是幂等的

如果 Agent 重试,外部系统应能处理重复请求

为部分失败而设计

每个步骤都应能独立恢复

在调用外部接口前建立检查点 (Checkpoint)

为每个集成提供回滚能力

Agent 执行危险操作

严重程度:高 (HIGH)

场景:Agent 拥有过宽的权限

症状:
Agent 删除生产数据;向错误的接收者发送邮件;
在未经批准的情况下进行购买;修改了不该触碰的设置;
执行了不可逆的操作。

失效原因:
Agent 会为了达成目标而进行优化。如果没有护栏,它们会选择最短路径——即使该路径具有破坏性。例如,被告知“清理数据库”的 Agent 可能会将其理解为“删除所有内容”。

宽泛权限 + 自主权 + 目标优化 = 危险。

推荐修复方案:

最小权限原则

python
PERMISSIONS = {
    "research_agent": ["read_web", "read_docs"],
    "code_agent": ["read_file", "write_file", "run_tests"],
    "email_agent": ["read_email", "draft_email"],  # 仅限草拟,不可发送
    "admin_agent": ["all"],  # 极少使用
}

读写权限分离

Agent 可以读取任何内容

写入操作需要明确批准

危险操作需要确认

python
DANGEROUS_ACTIONS = [
    "delete_*",
    "send_email",
    "transfer_money",
    "modify_production",
    "revoke_access",
]

async def execute_action(action):
if matches_dangerous_pattern(action):
approval = await request_human_approval(action)
if not approval:
return ActionRejected(action)
return await actually_execute(action)

测试时的干跑 (Dry-run) 模式

Agent 描述它将要执行的操作

人类批准该计划

然后 Agent 再执行

全量审计日志

记录每个操作及其上下文

谁授权的

更改了什么

如何撤销

Agent 耗尽上下文窗口

严重程度:中 (MEDIUM)

场景:长时间运行的 Agent 任务

症状:
Agent 忘记之前的指令;前后矛盾;丢失目标;开始重复自己的话;模型报 token 限制错误。

失效原因:
每条消息、观察结果和思考过程都会消耗上下文。长任务会耗尽窗口。当上下文被截断时:

  • 系统提示词 (System Prompt) 可能会丢失

  • 早期重要的上下文丢失

  • Agent 失去连贯性

推荐修复方案:

跟踪上下文使用情况

python
class ContextManager:
    def __init__(self, max_tokens=100000):
        self.max_tokens = max_tokens
        self.messages = []

def add(self, message):
self.messages.append(message)
self.maybe_compact()

def maybe_compact(self):
if self.token_count() > self.max_tokens * 0.8:
self.compact()

def compact(self):
# 始终保留:系统提示词
system = self.messages[0]

# 始终保留:最后 N 条消息


python
recent = self.messages[-10:]

# 总结:其余所有内容
middle = self.messages[1:-10]
if middle:
summary = summarize_messages(middle)
self.messages = [system, summary] + recent

使用外部记忆

不要将所有内容都保留在上下文中

存储在向量数据库中,在需要时检索

参考 agent-memory-systems 技能

分层总结

最近:完整细节

中期:关键点

远期:压缩总结

看不见就无法调试

严重程度:中 (MEDIUM)

场景:Agent 神秘失败

症状:
“它就是没起作用。” 不知道 Agent 为什么失败。无法复现问题。用户报告的问题无法解释。调试全靠猜测。

失效原因:
Agent 会做出数十个内部决策。如果无法看到每一步的操作,你将无法感知失败模式。没有追踪记录(traces),生产环境的调试几乎是不可能的。

建议修复方案:

结构化日志

python
import structlog

logger = structlog.get_logger()

class TracedAgent:
def think(self, context):
with logger.bind(step="think"):
thought = self.llm.generate(context)
logger.info("thought_generated",
thought=thought,
tokens=count_tokens(thought)
)
return thought

def act(self, action):
with logger.bind(step="act", action=action.name):
logger.info("action_started")
try:
result = action.execute()
logger.info("action_completed", result=result)
return result
except Exception as e:
logger.error("action_failed", error=str(e))
raise

使用 LangSmith 或类似工具

python
from langsmith import trace

@trace
def agent_step(state):
# 自动追踪输入/输出
return next_state

保存完整追踪记录

每一步,每个决策

输入和输出

每一步的延迟

Token 使用量

验证检查

Agent 循环缺乏步数限制

严重程度:高 (ERROR)

自主 Agent 必须设有最大步数限制。

提示信息:Agent 循环缺乏步数限制。请添加 max_steps 以防止死循环。

缺乏成本追踪或限制

严重程度:高 (ERROR)

Agent 应当追踪并限制 API 成本。

提示信息:Agent 使用 LLM 时缺乏成本追踪。请添加成本限制以防止费用失控。

Agent 缺乏超时机制

严重程度:警告 (WARNING)

长时间运行的 Agent 需要超时设置。

提示信息:Agent 调用缺乏超时机制。请添加 timeout 以防止任务挂起。

在生产环境中使用 MemorySaver

严重程度:高 (ERROR)

MemorySaver 仅用于开发环境。

提示信息:MemorySaver 不是持久化的。生产环境请使用 PostgresSaverSqliteSaver

长时间运行的 Agent 缺乏检查点 (Checkpointing)

严重程度:警告 (WARNING)

运行多个步骤的 Agent 需要检查点机制。

提示信息:多步 Agent 缺乏检查点。请添加 checkpointer 以保证持久性。

Agent 缺乏线程 ID (Thread ID)

严重程度:警告 (WARNING)

带有检查点的 Agent 需要唯一的线程 ID。

提示信息:Agent 调用缺乏 thread_id。状态将无法正确持久化。

直接使用 Agent 输出而未进行验证

严重程度:警告 (WARNING)

Agent 的输出在被使用前应经过验证。

提示信息:Agent 输出在未验证的情况下被使用。请在执行结果前进行验证。

Agent 缺乏结构化输出

严重程度:信息 (INFO)

结构化输出更加可靠。

提示信息:考虑使用结构化输出(如 Pydantic)以获得更可靠的解析。

Agent 缺乏错误恢复机制

严重程度:警告 (WARNING)

Agent 应当能够处理并从错误中恢复。
消息:Agent 调用缺乏错误处理。请添加 try/catch 或错误处理器。

缺乏回滚的破坏性操作

严重程度:WARNING

修改状态的操作应该是可逆的

消息:破坏性操作缺乏回滚能力。请在修改前保存状态。

协作

委派触发条件

  • 用户需要多 Agent 协同 $\rightarrow$ multi-agent-orchestration(多个 Agent 协同工作)
  • 用户需要测试/评估 Agent $\rightarrow$ agent-evaluation(基准测试与评估)
  • 用户需要为 Agent 提供工具 $\rightarrow$ agent-tool-builder(工具设计与实现)
  • 用户需要持久化记忆 $\rightarrow$ agent-memory-systems(长期记忆架构)
  • 用户需要工作流自动化 $\rightarrow$ workflow-automation(当 Agent 对该任务而言过于冗余时)
  • 用户需要计算机控制 $\rightarrow$ computer-use-agents(GUI 自动化、屏幕交互)

相关技能

协同效果佳:agent-tool-builder, agent-memory-systems, multi-agent-orchestration, agent-evaluation

使用场景

  • 用户提到或暗示:自主 Agent (autonomous agent)
  • 用户提到或暗示:autogpt
  • 用户提到或暗示:babyagi
  • 用户提到或暗示:自我提示 (self-prompting)
  • 用户提到或暗示:目标分解 (goal decomposition)
  • 用户提到或暗示:ReAct 模式 (react pattern)
  • 用户提到或暗示:Agent 循环 (agent loop)
  • 用户提到或暗示:自纠错 Agent (self-correcting agent)
  • 用户提到或暗示:反思 Agent (reflection agent)
  • 用户提到或暗示:langgraph
  • 用户提到或暗示:Agentic AI
  • 用户提到或暗示:Agent 规划 (agent planning)

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出视为针对特定环境的验证、测试或专家评审的替代方案。
  • 如果缺失必要的输入、权限、安全边界或成功标准,请停止并请求澄清。