版本 15
2026/6/3 11:23:16
pref: 优化了整体代码逻辑
1. 请求生命周期更稳了
把原来容易悬空的 `async void` 风格链路收紧成了可控的异步流程,补上了请求超时兜底,避免“页面没回包时客户端一直挂住”。
2. 收尾逻辑加了防重入保护
针对 `NETWORK_DONE`、超时、失败回调这些可能同时发生的路径,加了“只允许完成一次”的门闩,避免重复关闭响应流、重复清状态。
3. 注入失败不再静默挂死
现在消息注入、新建对话这些关键步骤如果失败,会明确走失败收尾,而不是只记日志然后让上游一直等。
4. 新建对话流程适配了页面跳转
之前把“跳到聊天页”误判成失败;现在改成允许导航发生,等页面重新就绪后再继续发送消息。
5. 修正了 `sendPrompt()` 返回值误判
WebView 端明明已经找到输入框并发出请求,但 C# 侧之前会因为脚本返回值格式问题提前判失败。现在只要脚本成功执行且没显式返回 `false`,就继续等待真实网络回包。
6. 网络拦截范围收窄
不再把 `/samantha/user/...` 之类初始化接口误当成聊天流,避免这些无关请求先触发 `NETWORK_DONE`,把真正的会话提前结束。
7. 给请求加了 token,避免串流
现在每次请求都会生成一个 token,注入到页面侧;网络拦截回传 `[NETWORK_DATA]`、`[NETWORK_DONE]`、图片消息时也带 token。这样旧请求晚到的数据不会再串到新请求上。
8. 错误响应语义更合理
内部 relay 错误不再伪装成 assistant 文本内容,避免客户端把“消息注入失败”这种内部错误当成模型回答写进会话历史。
9. 清理了一些重复和死代码
比如重复的新建对话脚本调用路径做了统一,没在用的状态字段也顺手去掉了,后面维护会轻一点。
|
操作人
|
时间
|
分值
|
意见及建议
|
状态变更 |
|
CL |
7天20小时前
|
|
(管理员审核)
|
已提交,待审核
→
已发布
|
|
*系统*
|
7天22小时前
|
|
(发布或更新动作)
|
已发布
→
已提交,待审核
|