mcpField
P
patterns

patterns

github.com/pchalasaniAgent 工作流2.0k40 次安装今天更新
代码仓库

关于 patterns

patterns 是面向 Langroid 开发者的 Agent 与任务设计模式索引,帮助将常见实现需求对应到含代码示例的参考文档。内容涵盖工具处理、任务控制、批量处理、MCP 集成和输出管理。

主要功能

  1. 01Agent 与任务模式
  2. 02有状态及验证型工具处理器
  3. 03任务终止控制
  4. 04并发批量处理
  5. 05MCP 工具集成
  6. 06静默输出模式

适用场景

  1. 01从 Agent 任务返回结构化结果
  2. 02验证工具输出并重试错误
  3. 03并发处理多个输入
  4. 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.md
agent-tool-handler-with-state.md
done-sequences-specific-tool.md
mcp-tool-integration.md
quiet-mode.md
run-batch-tasks.md
task-return-tool.md

详细介绍

Langroid 模式

说明

下面是按类别整理的设计模式索引。每个条目都会介绍你可能想实现的功能,并附上一个包含完整代码示例的参考文档。

浏览此索引,找到符合你需求的模式,然后查阅对应文档。


Agent 和任务基础

  1. 任务直接返回工具

    创建一个配备单个工具(ToolMessage)的 Langroid Agent,并将其包装在 Task 中,使运行任务时直接返回该 ToolMessage。当你想要一个返回结构化响应的简单大模型 Agent 时,可使用此模式。

    • 参考:./task-return-tool.md

工具处理程序

  1. Agent 上的有状态处理程序

    将有状态工具处理程序定义为 Agent 的方法(而非定义在 ToolMessage 内)。在以下情况下可使用此模式:(a)工具处理程序需要执行外部操作(API 调用、数据库查询、文件 I/O);(b)你需要在重试期间跟踪状态(例如,失败计数器);(c)处理程序需要访问 Agent 级别的资源(连接、配置);或(d)你希望 Langroid 自动将错误反馈给大模型以进行自我纠正。方法名称必须与 ToolMessage 的 request 字段一致。出错时返回字符串(大模型会看到它并可重试),成功结束时返回 DoneTool(content=result)。

    • 参考:./agent-tool-handler-with-state.md
  2. 带验证的处理程序

    在接受工具输出之前,根据 Agent 状态对其进行验证。在以下情况下可使用此模式:(a)大模型的工具输出必须保留输入中的某些内容(例如占位符、必填字段);(b)验证失败时你希望自动重试;(c)你需要将工具输出与大模型接收的上下文进行比较。在自定义 Agent 类中定义一个处理程序方法,将输入上下文存储为状态,验证工具输出,并在需要重试时返回错误字符串,成功时返回 AgentDoneTool(注意:使用 AgentDoneTool,而非 DoneTool)。使用 done_sequences=["T[ToolName], A"],确保处理程序在任务终止前运行。

    • 参考:./agent-handler-validation-with-state.md

任务控制

  1. 在特定工具处终止

    仅在调用特定工具时终止 Task。使用 TaskConfig(done_sequences=["T[ToolName]"]),在发出该工具时立即退出;或者使用 TaskConfig(done_sequences=["T[ToolName], A"]),在发出该工具并由 Agent 处理后退出。当 Agent 有多个工具,但你只希望某个特定工具触发任务终止时,可使用此模式。

    • 参考:./done-sequences-specific-tool.md
  2. 批处理

    使用 run_batch_tasks() 并发地对多个输入运行同一个任务。在以下情况下可使用此模式:(a)你需要使用相同的 Agent/任务逻辑处理许多条目;(b)你希望并行处理,而无需手动使用 asyncio/threading;(c)你需要隔离各条目的状态(每个条目都会获得一个具有全新消息历史记录的克隆 Agent);(d)你希望避免手动创建过多 Agent 导致连接耗尽。每个条目都会获得一个克隆的任务和 Agent,独立运行,并按顺序收集结果。支持使用 batch_size 限制并发数。

    • 参考:./run-batch-tasks.md

集成与输出

  1. 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
  2. 静默模式

    隐藏冗长的 Langroid Agent 输出(流式内容、工具 JSON、中间消息),同时显示自定义进度消息。适用于以下场景:(a) 希望命令行输出简洁,只显示关键事件;(b) 运行多步骤工作流时,希望显示进度而不受 Agent 输出干扰;(c) 需要线程安全地控制输出。使用 quiet_mode() 上下文管理器包裹 Agent 的 task.run() 调用,然后在上下文外打印自定义消息。

    • 参考:./quiet-mode.md

评论

支持 Markdown