关于 patterns
patterns 是面向 Langroid 开发者的 Agent 与任务设计模式索引,帮助将常见实现需求对应到含代码示例的参考文档。内容涵盖工具处理、任务控制、批量处理、MCP 集成和输出管理。
主要功能
- 01Agent 与任务模式
- 02有状态及验证型工具处理器
- 03任务终止控制
- 04并发批量处理
- 05MCP 工具集成
- 06静默输出模式
适用场景
- 01从 Agent 任务返回结构化结果
- 02验证工具输出并重试错误
- 03并发处理多个输入
- 04让 Langroid Agent 连接 MCP 工具
MCP 相关
介绍将 Langroid Agent 连接到外部 MCP 服务并使用全部或选定 MCP 工具的模式,也包括在结果传给大模型前进行定制处理。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pchalasani/ claude-code-tools --skill patterns安装后在 Claude Code 中输入/patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agent-handler-validation-with-state.mdagent-tool-handler-with-state.mddone-sequences-specific-tool.mdmcp-tool-integration.mdquiet-mode.mdrun-batch-tasks.mdtask-return-tool.md详细介绍
Langroid 模式
说明
下面是按类别整理的设计模式索引。每个条目都会介绍你可能想实现的功能,并附上一个包含完整代码示例的参考文档。
浏览此索引,找到符合你需求的模式,然后查阅对应文档。
Agent 和任务基础
-
任务直接返回工具
创建一个配备单个工具(ToolMessage)的 Langroid Agent,并将其包装在 Task 中,使运行任务时直接返回该 ToolMessage。当你想要一个返回结构化响应的简单大模型 Agent 时,可使用此模式。
- 参考:
./task-return-tool.md
- 参考:
工具处理程序
-
Agent 上的有状态处理程序
将有状态工具处理程序定义为 Agent 的方法(而非定义在 ToolMessage 内)。在以下情况下可使用此模式:(a)工具处理程序需要执行外部操作(API 调用、数据库查询、文件 I/O);(b)你需要在重试期间跟踪状态(例如,失败计数器);(c)处理程序需要访问 Agent 级别的资源(连接、配置);或(d)你希望 Langroid 自动将错误反馈给大模型以进行自我纠正。方法名称必须与 ToolMessage 的
request字段一致。出错时返回字符串(大模型会看到它并可重试),成功结束时返回 DoneTool(content=result)。- 参考:
./agent-tool-handler-with-state.md
- 参考:
-
带验证的处理程序
在接受工具输出之前,根据 Agent 状态对其进行验证。在以下情况下可使用此模式:(a)大模型的工具输出必须保留输入中的某些内容(例如占位符、必填字段);(b)验证失败时你希望自动重试;(c)你需要将工具输出与大模型接收的上下文进行比较。在自定义 Agent 类中定义一个处理程序方法,将输入上下文存储为状态,验证工具输出,并在需要重试时返回错误字符串,成功时返回 AgentDoneTool(注意:使用 AgentDoneTool,而非 DoneTool)。使用
done_sequences=["T[ToolName], A"],确保处理程序在任务终止前运行。- 参考:
./agent-handler-validation-with-state.md
- 参考:
任务控制
-
在特定工具处终止
仅在调用特定工具时终止 Task。使用
TaskConfig(done_sequences=["T[ToolName]"]),在发出该工具时立即退出;或者使用TaskConfig(done_sequences=["T[ToolName], A"]),在发出该工具并由 Agent 处理后退出。当 Agent 有多个工具,但你只希望某个特定工具触发任务终止时,可使用此模式。- 参考:
./done-sequences-specific-tool.md
- 参考:
-
批处理
使用
run_batch_tasks()并发地对多个输入运行同一个任务。在以下情况下可使用此模式:(a)你需要使用相同的 Agent/任务逻辑处理许多条目;(b)你希望并行处理,而无需手动使用 asyncio/threading;(c)你需要隔离各条目的状态(每个条目都会获得一个具有全新消息历史记录的克隆 Agent);(d)你希望避免手动创建过多 Agent 导致连接耗尽。每个条目都会获得一个克隆的任务和 Agent,独立运行,并按顺序收集结果。支持使用 batch_size 限制并发数。- 参考:
./run-batch-tasks.md
- 参考:
集成与输出
-
MCP 工具集成
让 Langroid Agent 使用来自外部 MCP 服务(例如 Claude Code)的 MCP(Model Context Protocol)工具。适用于以下场景:(a) 希望 Agent 使用 Claude Code 的文件编辑工具(Read、Edit、Write);(b) 需要通过 stdio 传输连接到任意 MCP 服务;(c) 希望启用 MCP 服务的所有工具,或有选择地启用特定工具;(d) 希望在将 MCP 工具结果返回给大模型之前对其进行自定义处理或后处理。使用
@mcp_tool装饰器来指定工具,或使用get_tools_async()获取所有工具。- 参考:
./mcp-tool-integration.md
- 参考:
-
静默模式
隐藏冗长的 Langroid Agent 输出(流式内容、工具 JSON、中间消息),同时显示自定义进度消息。适用于以下场景:(a) 希望命令行输出简洁,只显示关键事件;(b) 运行多步骤工作流时,希望显示进度而不受 Agent 输出干扰;(c) 需要线程安全地控制输出。使用
quiet_mode()上下文管理器包裹 Agent 的 task.run() 调用,然后在上下文外打印自定义消息。- 参考:
./quiet-mode.md
- 参考: