文件和行号
独立复核(grep len(fields) < 全族扫描)确认,#1370-B/C 修复只落在 feishu/matrix/mattermost/slack/tg/wecom,以下 7 个 panel 缺失双重修复:
- internal/tui/dingtalk_panel.go:315 — 仅
len(fields) < 3,无 >3 拒绝;无回滚
- internal/tui/discord_panel.go:316 — 仅
< 2,无 >2 拒绝;无回滚
- internal/tui/qq_panel.go:358 — 仅 <3
- internal/tui/irc_panel.go:279 — 仅 <4
- internal/tui/signal_panel.go:437 — 仅 <3
- internal/tui/twitch_panel.go:279 — 仅 <4
- internal/tui/nostr_panel.go:299 — 仅 <1(多词场景弱,低优先)
问题描述(复现 #1370 两类缺陷)
#1370-C 类(静默截断):create 面板用 strings.Fields 按空白切分,多余 token 静默丢弃。粘贴两行 token / secret 带尾随词时,被截断的 secret 持久化为必然失败的凭据。
#1370-B 类(失败不回滚):next() 中 startXXXAdapterIfNeeded 失败直接返回错误,无 feishu 的 rollback 闭包(configMutationMsg → RemoveIMAdapter → saveConfig)。明文坏 secret 永久落盘 + 占用 adapter 名(重试同名报 already exists,面板无删除键)。
触发场景(dingtalk 为例)
面板按 i,输入 mybot dingxxxxx secret-word1 word2(粘贴时混入第二个词)→ fields[3] 被丢弃 → AddIMAdapter 持久化截断 secret → StartNamedAdapter 鉴权失败 → 坏凭据留盘,重试同名报 IM adapter "mybot" already exists。
预期行为 vs 实际行为
- 预期:与 feishu 一意——多余字段报错拒绝;start 失败经 Update loop 回滚删除
- 实际:静默截断 + 持久化 + 无补偿
修复建议
在各 create cmd 补 len(fields) > N 拒绝(错误信息照抄 feishu #1370-C 形态),next() 失败分支照抄 feishu_panel.go L352-374 的 rollback 闭包。
严重程度
medium(有 "e" 编辑键事后兜底,与 #1370 修复时判定的严重度一致)
独立复核证据
subagent 确认真实 bug 非误报:(a) 逐文件核实当前代码;(b) 全族 grep 扫描定位 7 处缺失;(c) 缓解因素(编辑键、换名重试)存在但 #1370 判例已认定不足以替代回滚。
文件和行号
独立复核(grep
len(fields) <全族扫描)确认,#1370-B/C 修复只落在 feishu/matrix/mattermost/slack/tg/wecom,以下 7 个 panel 缺失双重修复:len(fields) < 3,无 >3 拒绝;无回滚< 2,无 >2 拒绝;无回滚问题描述(复现 #1370 两类缺陷)
#1370-C 类(静默截断):create 面板用 strings.Fields 按空白切分,多余 token 静默丢弃。粘贴两行 token / secret 带尾随词时,被截断的 secret 持久化为必然失败的凭据。
#1370-B 类(失败不回滚):next() 中 startXXXAdapterIfNeeded 失败直接返回错误,无 feishu 的 rollback 闭包(configMutationMsg → RemoveIMAdapter → saveConfig)。明文坏 secret 永久落盘 + 占用 adapter 名(重试同名报 already exists,面板无删除键)。
触发场景(dingtalk 为例)
面板按 i,输入
mybot dingxxxxx secret-word1 word2(粘贴时混入第二个词)→ fields[3] 被丢弃 → AddIMAdapter 持久化截断 secret → StartNamedAdapter 鉴权失败 → 坏凭据留盘,重试同名报IM adapter "mybot" already exists。预期行为 vs 实际行为
修复建议
在各 create cmd 补
len(fields) > N拒绝(错误信息照抄 feishu #1370-C 形态),next() 失败分支照抄 feishu_panel.go L352-374 的 rollback 闭包。严重程度
medium(有 "e" 编辑键事后兜底,与 #1370 修复时判定的严重度一致)
独立复核证据
subagent 确认真实 bug 非误报:(a) 逐文件核实当前代码;(b) 全族 grep 扫描定位 7 处缺失;(c) 缓解因素(编辑键、换名重试)存在但 #1370 判例已认定不足以替代回滚。