pub struct HookContext {
pub event: HookEvent,
pub messages: Option<Vec<ChatMessage>>,
pub system_prompt: Option<String>,
pub model: Option<String>,
pub user_input: Option<String>,
pub assistant_output: Option<String>,
pub tool_name: Option<String>,
pub tool_arguments: Option<String>,
pub tool_result: Option<String>,
pub tool_error: Option<String>,
pub session_id: Option<String>,
pub cwd: String,
}Expand description
Hook 执行上下文(通过 stdin JSON 传给脚本)
各字段按事件类型有选择性地填充,未填充的字段序列化时会被跳过(skip_serializing_if)。
脚本可通过 stdin 读取此 JSON 来获取当前事件的上下文信息。
Fields§
§event: HookEvent当前触发的事件类型
messages: Option<Vec<ChatMessage>>当前对话的完整消息列表
- 可读事件:PreSendMessage, PostSendMessage, PreLlmRequest, PostLlmResponse, SessionStart, SessionEnd
system_prompt: Option<String>当前系统提示词
- 可读事件:PreLlmRequest
model: Option<String>当前使用的模型名称
- 可读事件:PreLlmRequest
user_input: Option<String>本轮用户输入的消息文本
- 可读事件:PreSendMessage(发送前,可通过 HookResult 修改)、PostSendMessage(发送后,只读)
assistant_output: Option<String>本轮 AI 回复的完整文本
- 可读事件:PostLlmResponse(可通过 HookResult 修改最终展示内容)
tool_name: Option<String>当前工具调用的工具名
- 可读事件:PreToolExecution, PostToolExecution
tool_arguments: Option<String>当前工具调用的参数 JSON 字符串
- 可读事件:PreToolExecution(可通过 HookResult 修改)
tool_result: Option<String>工具执行的结果内容
- 可读事件:PostToolExecution(可通过 HookResult 修改)
tool_error: Option<String>工具执行失败原因
- 可读事件:PostToolExecutionFailure(可通过 HookResult 修改)
session_id: Option<String>当前会话 ID
- 可读事件:所有事件
cwd: String当前工作目录
Trait Implementations§
Source§impl Debug for HookContext
impl Debug for HookContext
Source§impl Default for HookContext
impl Default for HookContext
Auto Trait Implementations§
impl Freeze for HookContext
impl RefUnwindSafe for HookContext
impl Send for HookContext
impl Sync for HookContext
impl Unpin for HookContext
impl UnsafeUnpin for HookContext
impl UnwindSafe for HookContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.