mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-10-03 23:54:12 +00:00
docs(sdk): 补全自动重启的真实约束(退避 / 上限 / 非无感)
原文只说「插件崩溃时平台自动拉起,保障服务可用性」,读起来像 无感瞬时恢复。实测与源码都不是这样: ## 补齐的默认参数(内核 internal/plugin/registry.go) | 参数 | 值 | 含义 | |---|---|---| | procRestartBackoff | 1s | 第 n 次重启前等 n × 1s(线性退避) | | procMaxRestarts | 3 | 窗口内重启次数上限 | | procCrashWindow | 5min | 窗口内无新崩溃则计数归零 | 即实际序列 1s → 2s → 3s;同一 5 分钟窗口内第 4 次崩溃(n > 3)不再 自动拉起,交人工介入。首次重启就要等 1s,期间该插件的工具是缺席的、 调用会报错 —— 需要秒级就位的插件应在 OnStart 里自建重连与状态重建。 ## 顺带改准一处混淆 `SetAutoRestart` 的文档写「崩溃后自动重载」—— 把「重启」说成了 「重载」。重载是换 plugin.bin 后重新加载那条路径(ReloadOne), 与崩溃自愈不是一回事。已在文档里写清,并附上退避与上限。 这个混淆与内核侧 HEAD 修正的 README/官网是同一处(源码注释里 「足够快到用户感知不到工具缺席」也是同一类无实测支撑的主观断言, 已在主仓同批改掉)。 中英双版同步更新。
This commit is contained in:
@ -775,8 +775,12 @@ func (s *PluginSDK) SetToolBlocks(blocks []ContentBlock) {
|
||||
}
|
||||
}
|
||||
|
||||
// SetAutoRestart 设置插件是否允许内核自动重启(崩溃后自动重载)。
|
||||
// SetAutoRestart 设置插件崩溃后内核是否自动重启它。
|
||||
// 默认 true。如果插件有无法恢复的状态(如外部连接),应设为 false。
|
||||
//
|
||||
// 重启是有限度的:线性退避(第 n 次等 n×1s,即 1s→2s→3s),
|
||||
// 且同一 5 分钟窗口内第 4 次崩溃就停下不再拉起(详见 README)。
|
||||
// 注意这与「重载」(换 plugin.bin 后重新加载)是两回事。
|
||||
func (s *PluginSDK) SetAutoRestart(enabled bool) {
|
||||
s.apiMu.Lock()
|
||||
s.autoRestart = enabled
|
||||
|
||||
Reference in New Issue
Block a user