如何设计一个OpenHarness风格的智能体运行时:包含工具、记忆、权限、技能和多智能体协调
本教程从头构建一个OpenHarness风格的智能体框架,涵盖工具使用、权限控制、记忆、技能、上下文压缩、重试逻辑、成本跟踪和多智能体协调,所有代码均可直接运行。
在本文中,我们将从零开始构建一个OpenHarness风格的智能体运行时。该框架包括核心构建模块:工具使用、类型化工具模式、权限管理、生命周期钩子、记忆、技能、上下文压缩、重试逻辑、成本跟踪以及多智能体协调。我们不将智能体框架视为黑盒,而是暴露完整控制流:接收用户任务、让模型决定下一步动作、验证并执行工具调用、返回观察结果,然后循环直至任务完成。实现完全可运行,无需API密钥或额外基础设施。
首先,我们设置核心数据结构。例如,定义Usage和ToolCall数据类,以及AssistantTurn表示模型输出。Message用于对话历史。使用简单的token估算函数count_tokens来近似计算成本。CostMeter类累计token使用并转换为美元成本。通过PRICE_BOOK字典可以为不同模型设定价格。
然后,我们实现工具系统。通过fld函数声明工具输入字段,并自动构建JSON Schema。BaseTool基类提供schema和run方法,子类只需实现execute。ToolRegistry管理所有注册的工具。VirtualFS提供内存文件系统,确保教程安全且确定。
权限系统通过PermissionKind枚举区分工具危险等级(读、写、执行、元)。PermissionChecker根据模式和路径规则做出允许/拒绝/询问决策。生命周期钩子(HookManager)允许在工具调用前后添加自定义逻辑,例如实现PreToolUse和PostToolUse。
此外,支持技能(skills)聚合多个工具,上下文压缩处理长对话,重试逻辑处理失败调用,成本跟踪监控开销。最后,多智能体协调允许多个智能体实例协作完成复杂任务。
本教程提供完整代码示例,读者可以在Colab中直接运行实验。通过这种透明实现,深入理解智能体框架的内部工作机制。