Skip to content

Hermes Plugin & 扩展系统

核心文件

text
hermes_cli/plugins.py

Plugin 来源

python
# 四层来源
1. bundled plugins      # hermes-agent/plugins/
2. user plugins         # ~/.hermes/plugins/<name>/
3. project plugins      # ./.hermes/plugins/<name>/
4. pip entry-points     # hermes_agent.plugins

Plugin 结构

text
my-plugin/
├── plugin.yaml          # 插件 manifest
└── __init__.py          # register() 函数
yaml
# plugin.yaml
name: my-plugin
version: 1.0.0
description: 我的插件
author: OvO
python
# __init__.py
def register(ctx: PluginContext):
    # 注册工具
    ctx.register_tool(name='my_tool', schema={...}, handler=...)

    # 注册 hooks
    ctx.add_hook('pre_tool_call', on_pre_tool_call)
    ctx.add_hook('post_tool_call', on_post_tool_call)

    # 注册 provider
    ctx.register_provider('my_provider', MyProvider)

    # 注册 platform adapter
    ctx.register_platform('my_platform', MyPlatform)

可用 Hooks

Hook触发时机
pre_tool_call工具执行前
post_tool_call工具执行后
transform_tool_result工具结果转换
transform_llm_outputLLM 输出转换
pre_llm_callLLM 调用前
post_llm_callLLM 调用后
pre_api_requestAPI 请求前
post_api_requestAPI 请求后
api_request_errorAPI 请求失败
on_session_startSession 开始
on_session_endSession 结束
on_session_finalizeSession 清理
on_session_resetSession 重置
subagent_start子 agent 启动
subagent_stop子 agent 停止
pre_gateway_dispatchGateway 发送前
pre_approval_request审批请求前
post_approval_response审批响应后
kanban_task_claimedKanban 任务认领
kanban_task_completedKanban 任务完成
kanban_task_blockedKanban 任务阻塞

Plugin 可注册的组件

register_tool()
register_toolset()
register_provider()
register_platform()
register_middleware()
register_hook()

三种 Plugin 系统对比

维度PiOpenCodeHermes
类型Extension APIPlugin ServicePlugin Context
注册方式AgentSessionRuntime 注入Effect Serviceregister() 函数
Hooks 数量3~621+
工具注册Extension.toolsPlugin.toolsctx.register_tool()
Providerctx.register_provider()
Platformctx.register_platform()
来源代码内npm/dir/gitbundled/user/project/pip
隔离Effect forkPython module

Hermes 的 plugin 系统是最丰富的。 它不仅支持工具扩展,还能注入 provider、platform、middleware,覆盖了 Hermes 的几乎所有扩展点。

Powered by VitePress