一次模型调用的失败由内到外经过五层重试:建连(SDK)、空响应(SDK)、同 provider 安全窗口、轮询熔断、意图重跑。此前五层的次数与间隔全是写死的常量,遇到脾气各异 的中转站只能改代码。现在都能在 LLM 页配置,不配就是原来的默认值。 配置语义五层统一(db.RetryRule):次数 0=内置默认 / -1=关掉这层 / >0=该值; 间隔 0=原本的指数退避 / >0=改用固定间隔。0 被"未配置"占用,故关闭用 -1。 写库前夹紧到 次数 [-1,20]、间隔 [0,1h],DB 另有 CHECK 兜底。 粒度按层的性质分:前三层跟着端点走,可在每个模型配置里逐字段覆盖全局默认(只钉 间隔的仍继承全局次数);熔断与意图重跑是进程级语义,只有全局一份。 生效路径:①②是 provider 构建参数,保存后重建缓存;③随每次 hooks.current() 解析,故障转移换配置时重试节奏跟着换;④在失败路径上每次都要读,由 applyRetryPolicy 推给 llmpool.Registry;⑤每条意图收尾读一次。全部热生效,无需重启。 连接测试刻意不带这些参数——它有 30s 硬超时,叠上用户配的重试只会把本来能用的 端点测成超时失败。 norma 升 v0.3.5(llm.Config 新增 RetryInterval / EmptyResponseRetries / EmptyResponseInterval)。旧库升级后行为逐字节不变:新列默认 0,settings 键不 存在即全默认。设计见 docs/LLM重试设计.md。
63 lines
2.6 KiB
AMPL
63 lines
2.6 KiB
AMPL
module github.com/Autumn-27/artex
|
|
|
|
go 1.26.3
|
|
|
|
require (
|
|
github.com/Autumn-27/norma v0.3.5
|
|
github.com/golang-jwt/jwt/v5 v5.3.1
|
|
github.com/jackc/pgx/v5 v5.10.0
|
|
github.com/klauspost/compress v1.18.6
|
|
github.com/lqqyt2423/go-mitmproxy v1.9.2
|
|
github.com/miekg/dns v1.1.72
|
|
github.com/projectdiscovery/dnsx v1.2.3
|
|
golang.org/x/crypto v0.55.0
|
|
golang.org/x/net v0.58.0
|
|
golang.org/x/text v0.41.0
|
|
modernc.org/sqlite v1.52.0
|
|
)
|
|
|
|
require (
|
|
github.com/andybalholm/brotli v1.2.1 // indirect
|
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
|
github.com/aymerick/douceur v0.2.0 // indirect
|
|
github.com/creack/pty v1.1.24 // indirect
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/gaissmai/bart v0.26.0 // indirect
|
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/gorilla/css v1.0.1 // indirect
|
|
github.com/gorilla/websocket v1.5.3 // indirect
|
|
github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02 // indirect
|
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
|
github.com/jackc/puddle/v2 v2.2.2 // indirect
|
|
github.com/kr/pretty v0.3.1 // indirect
|
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
github.com/microcosm-cc/bluemonday v1.0.27 // indirect
|
|
github.com/ncruces/go-strftime v1.0.0 // indirect
|
|
github.com/pkg/errors v0.9.1 // indirect
|
|
github.com/projectdiscovery/blackrock v0.0.1 // indirect
|
|
github.com/projectdiscovery/cdncheck v1.2.13 // indirect
|
|
github.com/projectdiscovery/retryabledns v1.0.111 // indirect
|
|
github.com/projectdiscovery/utils v0.7.3 // indirect
|
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
|
|
github.com/satori/go.uuid v1.2.0 // indirect
|
|
github.com/sirupsen/logrus v1.9.4 // indirect
|
|
github.com/tidwall/gjson v1.18.0 // indirect
|
|
github.com/tidwall/match v1.2.0 // indirect
|
|
github.com/tidwall/pretty v1.2.1 // indirect
|
|
github.com/weppos/publicsuffix-go v0.40.3-0.20250408071509-6074bbe7fd39 // indirect
|
|
go.uber.org/atomic v1.11.0 // indirect
|
|
go.uber.org/multierr v1.11.0 // indirect
|
|
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
|
|
golang.org/x/mod v0.40.0 // indirect
|
|
golang.org/x/sync v0.22.0 // indirect
|
|
golang.org/x/sys v0.47.0 // indirect
|
|
golang.org/x/tools v0.49.0 // indirect
|
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
modernc.org/libc v1.72.3 // indirect
|
|
modernc.org/mathutil v1.7.1 // indirect
|
|
modernc.org/memory v1.11.0 // indirect
|
|
)
|