Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LoopState ¶
type LoopState struct {
Input string
Messages []Message
Tools *ToolRegistry
Iteration int
MaxIterations int
// PendingToolCalls 是本轮模型响应中待执行的调用,由引擎填充。
PendingToolCalls []ToolCall
LastResponse *ModelResponse
Usage Usage
// ForkID 非空表示这是 fork 子循环(core.Fork)的状态:引擎发出的事件
// 带上它,hook(如 localsession)按它分流归属;主循环为空串。
ForkID string
// SeedLen 是 fork 子循环携带的上下文快照长度(Messages 前 SeedLen 条
// 为 seed)。持久化层据此剥离 seed 只存分身增量;主循环为 0。
SeedLen int
// Metadata 供 hook 之间共享任意数据。
// 并发契约:除 OnToolStart / OnToolEnd(跨调用并发)外,引擎串行执行
// hook 回调;这两个回调内写 Metadata 须自行加锁。
Metadata map[string]any
// Emitter 由引擎注入:hook 通过它发送自定义事件到 OnEvent 回调。
// OnToolStart / OnToolEnd 跨调用并发,其中发事件须遵守 OnEvent 的
// 并发契约(快速返回、并发安全)。
Emitter event.OnEvent
// Stop 置 true 后,当前节点收尾完毕即终止 loop。
Stop bool
StopReason StopReason
StartedAt time.Time
EndedAt time.Time
}
LoopState 是贯穿整个 loop 的统一结构体,hook 可读写任意字段。
context.Context 按 Go 惯例作为独立参数传递,不放入 State。
func (*LoopState) AppendMessage ¶
AppendMessage 追加一条消息到历史。
type Message ¶
type Message struct {
Role Role `json:"role"`
Content string `json:"content"`
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
ToolCallID string `json:"tool_call_id,omitempty"` // RoleTool 消息关联的调用 ID
Err string `json:"err,omitempty"` // 工具执行失败时的错误文本
// 推理模型的思考过程(reasoning_content),仅展示与持久化回放——
// 协议要求请求不回传,Provider 构造请求时丢弃。
Reasoning string `json:"reasoning,omitempty"`
}
Message 是消息历史的原子单元,可序列化、可直接作为下一轮历史。
type ModelChunk ¶
ModelChunk 是流式输出的增量:正文与思考过程分开通出。
type ModelRequest ¶
ModelRequest 是引擎调用 Provider 时的完整输入。
type ModelResponse ¶
type ModelResponse struct {
Content string
ToolCalls []ToolCall
Usage Usage
// 推理模型的思考过程,入史到 Message.Reasoning(不回传 Provider)。
Reasoning string
}
ModelResponse 是模型单次响应:纯文本,或附带 tool calls 触发下一轮循环。
type StopReason ¶
type StopReason string
StopReason 是 loop 终止原因。
const ( StopCompleted StopReason = "completed" StopMaxIteration StopReason = "max_iterations" StopAborted StopReason = "aborted" StopError StopReason = "error" StopCancelled StopReason = "cancelled" )
type Tool ¶
type Tool interface {
Name() string
Description() string
ArgsSchema() json.RawMessage
Invoke(ctx context.Context, args json.RawMessage) (string, error)
}
Tool 是工具节点接口:schema 供模型发现,Invoke 执行(可并发,碰不到 state)。
type ToolCall ¶
type ToolCall struct {
ID string
Name string
Args json.RawMessage
}
ToolCall 是模型发起的一次工具调用请求。
type ToolRegistry ¶
type ToolRegistry struct {
// contains filtered or unexported fields
}
ToolRegistry 持有已注册工具。List 按工具名排序返回——排序是工具集的
确定函数,与注册顺序、组装路径无关(resume、重新 New、hook 注册时机变化 都不会打散),tools 序列化顺序因此跨请求稳定,前缀缓存(KV cache)才可能 命中。同名注册直接覆盖(同名 = 同一工具的新版本,幂等重注册与热加载语义)。
func NewToolRegistry ¶
func NewToolRegistry(tools ...Tool) *ToolRegistry
NewToolRegistry 创建注册表并注册初始工具。
func (*ToolRegistry) Lookup ¶
func (r *ToolRegistry) Lookup(name string) (Tool, error)
Lookup 按名解析工具;找不到返回 error——模型幻觉调用会走到这里,
错误作为工具结果回传模型自纠,不终止 loop。
func (*ToolRegistry) Register ¶
func (r *ToolRegistry) Register(t Tool)
Register 注册工具:经 warp 壳包装后按名存入,同名覆盖。
func (*ToolRegistry) SetWarp ¶
func (r *ToolRegistry) SetWarp(warp func(Tool) Tool)
SetWarp 设置注册拦截:之后所有 Register 的工具都会被包装(含 hook 运行时
注入的工具,如 mcp router)。已注册的不受影响。
type ToolResult ¶
ToolResult 是一次工具调用的执行结果(toolEnd hook 可改写后入史)。