toolfail

package
v0.31.0 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package toolfail 工具失败的错误分类契约(门面)。

核心已下沉 `github.com/oagentkit/guardx/toolfail`:失败分类与处置判定是 跨宿主一致的语义,与编排无关,故归 guardx(tier 0 安全层)。本包只做一件事—— 保住调用路径稳定,宿主的 `toolfail.Classify(err)` / `toolfail.ClassifyAs(...)` 调用点一行不动。

为什么归上游而不是留在本仓:判定口径必须**全局一致**。各宿主各判一套必然漂移, 漂移的后果是重试策略静默错乱(对永久失败死循环重试,或对瞬时失败一次就放弃)。 而「同一机制在本仓与上游并存两份实现」正是 docs/OAGENTKIT-OVERLAP.md 警告的事—— 散文说「保持门面」不够,门禁(archcheck 的 facade 判定)才真的守着这条。

本包与任何宿主领域无关:它是 LLM 应用的通用失败处置面。

与上游 mcpkit/mcp.ErrorKind 的分工(互补,不重复):后者判**协议层事实** (连不上/协议错/工具不存在/参数错),本包判**处置层语义**(该不该重试、 能不能原样重发、要不要人工、模型下一步该干什么)。

Index

Constants

View Source
const (
	ClassTransient        = upstream.ClassTransient
	ClassPermanent        = upstream.ClassPermanent
	ClassAuthentication   = upstream.ClassAuthentication
	ClassNotFound         = upstream.ClassNotFound
	ClassPermissionDenied = upstream.ClassPermissionDenied
	ClassInvalidArgument  = upstream.ClassInvalidArgument
	ClassRateLimited      = upstream.ClassRateLimited
	ClassSelfReported     = upstream.ClassSelfReported
	ClassUnknown          = upstream.ClassUnknown
)

类别常量别名(可成块)。

View Source
const (
	IdempotencyUnset = upstream.IdempotencyUnset
	IdempotencyYes   = upstream.IdempotencyYes
	IdempotencyNo    = upstream.IdempotencyNo
)

幂等性三态常量别名。

Variables

View Source
var (
	ErrTransient        = upstream.ErrTransient
	ErrPermanent        = upstream.ErrPermanent
	ErrAuthentication   = upstream.ErrAuthentication
	ErrNotFound         = upstream.ErrNotFound
	ErrPermissionDenied = upstream.ErrPermissionDenied
	ErrInvalidArgument  = upstream.ErrInvalidArgument
	ErrRateLimited      = upstream.ErrRateLimited
)

哨兵错误别名:工具侧可原样返回它们,由 Classify 归类。

Functions

func Retryable

func Retryable(err error) bool

Retryable 判断任意错误是否值得原样重试。

Types

type Class

type Class = upstream.Class

Class 失败类别(机读值)。

func AllClasses

func AllClasses() []Class

AllClasses 全类别集合。

func Classify

func Classify(err error) Class

Classify 归类:链上已有 *Failure → 错误自报 → 哨兵 → unknown。

type Failure

type Failure = upstream.Failure

Failure 结构化失败:类别 + 稳定机读码 + 人读文案 + 可选等待时长 + 可选根因。

func As

func As(err error) (*Failure, bool)

As 从错误链上取出 *Failure。

func ClassifyAs

func ClassifyAs(c Class, err error) *Failure

ClassifyAs 按调用方给定的类别归类。

func New

func New(c Class, code, msg string) *Failure

New 构造失败(类别为空按 unknown 处理;码为空时取类别值)。

type Idempotency

type Idempotency = upstream.Idempotency

Idempotency 幂等性声明(未表态 / 明确幂等 / 明确有副作用)。

type Policy

type Policy = upstream.Policy

Policy 单个失败类别的重试处置策略。

func PolicyOf

func PolicyOf(c Class) Policy

PolicyOf 取某类别的策略。

type RetryableReporter

type RetryableReporter = upstream.RetryableReporter

RetryableReporter 错误自报的「可重试」结论。

Jump to

Keyboard shortcuts

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