使用插件 Hooks
部分插件会在开始会话、发送消息或启动子代理时自动提供指令。它们使用生命周期 Hooks:Ghast 会在相应时点执行本地命令,不需要你为每次执行选择 Tool。
例如,开发类插件可以在会话开始时加载审查规则,并在请求前自动压缩上下文后重新提供这些规则。插件自己的命令还可能允许你为当前会话选择工作模式。
使用前检查插件
- 打开 **Chat(聊天)**或 Coding(编程),选择左侧的 Plugins(插件)。
- 搜索插件并打开详情。
- 查看 Lifecycle hooks(生命周期钩子),阅读说明和准备要求。
- 在 **Information(信息)**中核对作者、版本、来源和安装状态。
- 如果提供了 **Source repository(源代码仓库)**或 Documentation(文档),打开并查看。安装前检查 Hook 命令及其启动的脚本。

详情不会逐条列出命令和触发条件。没有显示这项说明,也不代表本地安装包一定不含 Hooks。如果无法检查配置和脚本,请向发布者索取。
开始使用带 Hooks 的插件
- 检查安装包,按插件安装指南完成安装。新安装的插件会自动启用。
- 打开已安装插件的详情,确认 Status → Enabled(状态 → 已启用)。如果插件已停用且出现 Enable(启用),可通过该按钮重新启用。
- 完成插件要求的准备工作,例如安装需要的命令行运行环境。
- 如果提供了 **Try now(立即试用)**或示例提示词,选择其中一项。Ghast 会创建会话并填入草稿;发送前先检查内容。
- 发送一个不包含敏感信息的小请求,验证插件说明的行为。检查回复和错误提示后,再用于重要工作。
Hooks 跟随已启用的插件及其匹配事件运行,不由输入区的工具选择控制。已启用插件中符合条件的 Hooks 即使没有 @插件 提及也可能运行。提及其他插件或关闭某个 Skill,都不会停止这些命令。
Hook 可以提供指令而不出现单独的工具调用卡片。模型声称“Hook 已运行”不能可靠证明命令确实执行。自定义插件作者应按本地测试步骤验证命令和输出。
何时执行 Hooks
| 时点 | 插件可以做什么 |
|---|---|
| 每个会话的首次生成请求,包括重启 Ghast 或重新加载插件后该会话的首次请求 | 提供本会话复用的指令 |
| Ghast 在请求前自动压缩上下文 | 重新建立会话指令 |
| 提交新的用户消息 | 为该消息提供指令 |
| 启动子代理 | 为受支持的委派任务提供指导 |
仅重新打开已有会话,不会重新运行 SessionStart。本版本手动压缩会话也不会刷新其 SessionStart 指令。
具体运行哪些事件由插件配置决定。这些是会话生命周期事件,不是计时器。需要稍后执行的任务,参见后续任务。
这些 Hooks 不提供逐个 Tool 的执行前拦截规则。工具访问和审批请使用权限设置。
停止插件的 Hooks
先查看插件是否提供自己的 off 命令或设置。此类模式可以让插件停止提供指令,但 Hook 命令本身仍可能运行,以读取当前模式。
要停止插件的 Hook 命令:
- 完成或停止依赖该插件的任务。
- 打开 Plugins → Installed(插件 → 已安装),选择对应插件。
- 如果提供 Remove(移除),点击并核对确认框中的插件名称。
- 确认移除。
- 新建会话,再测试不使用该插件的情况。已有会话历史中仍可能保留早先的消息和指令。
本版本没有为已启用插件提供整体 **Disable(停用)**按钮。只有已处于停用状态、且可管理的插件才显示 Enable(启用)。部分系统插件无法移除。
移除会停止后续 Hook 执行,但不会撤销文件修改,也不会收回已发送的信息。断开外部账户是另一项操作;断开前应确认授权是否由多个服务共享,参见管理已安装插件。
了解权限边界
Hook 以你的操作系统账户权限运行。它可以读取或修改文件、启动程序、访问网络,而不经过 Ghast 的 Tool 选择和命令审批提示。Ask 模式不是 Hook 脚本的沙箱。
Hook 输入可能包含你的消息和工作目录路径。脚本会继承 Ghast 进程的大部分环境信息。输出可能被放入发给所选模型 Provider 的请求中。
只安装你信任的代码。更新前检查新增网络请求、文件写入和凭据处理。不要因为输出没有显示成聊天消息,就把秘密放进输出。Hook 返回的指令不会赋予模型额外 Tool 或账户权限。
处理异常
- **Hook 阻止了请求:**阅读原因,检查插件要求的前置条件。不要为了强行执行操作而绕过有意设置的检查。
- **指令没有生效:**确认插件已启用、依赖已安装、插件自身模式正确;新建会话重试。作者还应检查事件和输出格式。
- **发送消息变慢:**Hook 可能正在等待命令或网络请求。每条命令的超时上限为 30 秒;多条命令可能顺序执行。
- **移除后似乎仍然生效:**在新会话中测试。移除无法抹去早先的消息、回复或文件。
- **问题持续:**记录插件名称、版本、错误提示和复现步骤。分享诊断信息前删除秘密和私人消息。
要编写自己的插件,请继续阅读编写插件 Hook。