mid

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package mid 是工具中间件链(guard / errFeed):业务错误回喂模型自纠、 防死循环提醒、单工具执行硬上限。全部在契约层包装(自产品 internal/agent interrupt.go 的通用件迁入,语义不变——参照 dsh packages/guard[MIT])。

Index

Constants

This section is empty.

Variables

View Source
var ToolDeadline = 10 * time.Minute

ToolDeadline 单工具执行硬上限(guard 截止;超时以结果信封回喂。测试可缩)。

Functions

func ArgsDigest

func ArgsDigest(args string) string

ArgsDigest 审批卡参数摘要:JSON 展开为「k: v, …」人类可读——数组取首项 title/name 与数量,对象省略。非 JSON 原样截断 120 runes。

func ErrFeed

func ErrFeed(t contract.Tool) contract.Tool

ErrFeedTool 工具错误转结果包装:参数校验、业务规则等可恢复错误以 {"ok":false,"error":…} 工具结果回喂模型自纠——Go error 会被引擎包装成 NodeRunError 终止整轮,模型不可见即不可调整。生命周期错误(取消/超时) 与挂起哨兵(*contract.Suspend)原样上抛——后者转信封会吞掉挂起语义。

func Guard

func Guard(t contract.Tool) contract.Tool

Guard 防死循环包装:同参连续第 3 次起在结果前注入提醒;执行超时强制截止。 计数器随组装实例存续(轮内有效——死循环场景即轮内);有状态故持锁—— eino ToolsNode 并发执行同批多个 tool_call 时同一实例被并发 Invoke。

func ToolArgsDigest

func ToolArgsDigest(args string) string

ToolArgsDigest tool_call 参数摘要:单字段值即摘要(k 冗余);多字段取主 识别字段;无命中回退 k: v 全展开(ArgsDigest——审批卡同源可读化); 空/{} → ""(零参工具不显参数)。

func ToolResultDigest

func ToolResultDigest(content string) (ok bool, digest, preview string)

ToolResultDigest tool_result 语义摘要 → (ok, digest, preview):

  • 失败信封 {"ok":false,"error"} 或 run_command 的非零 exit_code → ok=false, 摘要 = 错误消息(前端红显)
  • 成功 → 计数语义(「首项标题」等 N 个需求)或行数语义(N 行)
  • 提取不出 → 摘要 ""(只留状态点,零噪音)
  • preview = 原始内容头 400 字(展开查看用;全文不进事件流——大结果会撑爆)

func Validate added in v0.2.0

func Validate(t contract.Tool) contract.Tool

Validate 参数校验包装(Params 为 nil 的工具零开销透传)。

func ValidateJSON added in v0.5.0

func ValidateJSON(sc *contract.Schema, data json.RawMessage) error

ValidateJSON 通用 schema 校验(T8 输出契约 / spawn 结构化回传共用):与 入参校验同子集纪律(type/enum/min/max/items/properties 递归),另校验 required 在场——根层与嵌套(properties 子对象 / items 数组元)递归全覆盖 (值为 map/数组即深查,不要求子 schema 显式标 type——与 validateValue 同 门槛):输出 schema 是应用手写的显式声明,嵌套必填是自然形态;与入参 「eino 反射必标 required」的豁免场景(2026-08-29 实锚裁决,入参面不校验 required——见 Validate 注释)不同。

func ValueDigest

func ValueDigest(v any) string

ValueDigest 值摘要:字符串/布尔/数字原样(截 40);数组取首项 title/name 与数量;嵌套对象省略。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL