阶段钩子(Stages)¶
在消息处理管道的固定点位插入自己的逻辑。阶段比工具更底层:工具是模型主动调用的,阶段是流程经过时必然触发的。
StageContext.IsResponded¶
plugin.go:172
StageContext.Lock¶
示例插件里的真实用法
| 插件 | 位置 | 代码 |
|---|---|---|
a2a |
example/a2a/plugin.go:158 |
p.sessMu.Lock() |
acp |
example/acp/plugin.go:128 |
p.srvMu.Lock() |
browser |
example/browser/plugin.go:427 |
p.mu.Lock() |
calendar |
example/calendar/plugin.go:433 |
p.mu.Lock() |
plugin.go:170
StageContext.RLock¶
示例插件里的真实用法
| 插件 | 位置 | 代码 |
|---|---|---|
acp |
example/acp/plugin.go:267 |
p.mu.RLock() |
calendar |
example/calendar/plugin.go:649 |
p.mu.RLock() |
memo |
example/memo/plugin.go:224 |
p.mu.RLock() |
qq |
example/qq/plugin.go:1152 |
ctx.RLock() |
plugin.go:168
StageContext.RUnlock¶
示例插件里的真实用法
| 插件 | 位置 | 代码 |
|---|---|---|
acp |
example/acp/plugin.go:273 |
p.mu.RUnlock() |
calendar |
example/calendar/plugin.go:650 |
defer p.mu.RUnlock() |
memo |
example/memo/plugin.go:229 |
p.mu.RUnlock() |
qq |
example/qq/plugin.go:1155 |
ctx.RUnlock() |
plugin.go:169
PluginSDK.RegisterStage¶
RegisterStage registers a handler for a pipeline stage.
scope: StageScopeGlobal (default) — receives all stage events.
StageScopeOwnTools — only before_toolcall/after_toolcall for this plugin's tools.
示例插件里的真实用法
| 插件 | 位置 | 代码 |
|---|---|---|
memo |
example/memo/plugin.go:152 |
s.RegisterStage(sdk.StagePreAction, p.stagePreAction) |
qq |
example/qq/plugin.go:719 |
s.RegisterStage(sdk.StageOnInput, p.onInputAuthContext, sdk.StageScopeGlobal) |
sanitizer |
example/sanitizer/plugin.go:52 |
s.RegisterStage(sdk.StageOnInput, func(ctx *sdk.StageContext) error { |
weather |
example/weather/plugin.go:94 |
s.RegisterStage(sdk.StageAfterToolcall, func(ctx *sdk.StageContext) error { |
plugin.go:467
Stage¶
Stage represents a point in the message processing pipeline.
plugin.go:26
StageContext¶
type StageContext struct { mu sync.RWMutex RawMessage string UserID string GroupID string ContextMsgs []map[string]interface{} L …
StageContext provides context for stage handlers.
plugin.go:148
StageHandler¶
StageHandler is a function that handles a pipeline stage event.
plugin.go:23
StageRegistrar¶
StageRegistrar registers a stage handler.
plugin.go:308
StageScope¶
StageScope controls which events a stage handler receives.
plugin.go:294
StageContext.Unlock¶
示例插件里的真实用法
| 插件 | 位置 | 代码 |
|---|---|---|
a2a |
example/a2a/plugin.go:164 |
p.sessMu.Unlock() |
acp |
example/acp/plugin.go:129 |
defer p.srvMu.Unlock() |
browser |
example/browser/plugin.go:432 |
p.mu.Unlock() |
calendar |
example/calendar/plugin.go:523 |
p.mu.Unlock() |
plugin.go:171