Files
Cyrene_v2/internal/services/gateway/session_tail.go
T
AskaEth 074ffc4ebf
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled
docs(gateway): gateway 剩余文件注释改中文(逐行 1:1,代码零字节改动)
主人 2026-10-03 拍板「注释一律中文」;gateway 至此整包注释中文化完成(本会话共 3 批:
已推库 16 个文件 + 本批剩余文件)。
校验:机械校验(非注释改动行)= 空;剥注释后代码文本逐行比对全等(不一致文件数 0);
全树 go test ./... 58 包 ok / 0 FAIL;交叉编译绿。
2026-10-03 22:28:25 +08:00

47 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package gateway
import "git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/model"
// 本文件拥有会话编排器的对话尾部辅助件
// (design/15 §2.2/§4):续跑所依据的有界窗口,以及
// 防止空洞回合把会话标记为忙碌的空判定。它们是
// 作用于 []model.Message 的纯函数,与状态机分开
// 放置,使编排器文件保持小。
// boundedTail 返回最后 maxTail 条消息的全新副本,使续跑
// 保持增量且有界(design/15 §2.2、§4),且绝不与输入
// 切片或另一个状态的尾部共享底层数组。
func (o *Orchestrator) boundedTail(msgs []model.Message) []model.Message {
if len(msgs) <= o.maxTail {
return append([]model.Message(nil), msgs...)
}
out := make([]model.Message, o.maxTail)
copy(out, msgs[len(msgs)-o.maxTail:])
return out
}
// messagesEmpty 报告回合是否不携带可用文本或图片,使
// 编排器不会因空洞消息把会话标记为忙碌。
func (o *Orchestrator) messagesEmpty(msgs []model.Message) bool {
for _, m := range msgs {
for _, c := range m.Content {
if c.Type == model.ContentTypeText && c.Text != "" {
return false
}
if c.Type == model.ContentTypeImage && c.ImageURL != "" {
return false
}
}
}
return true
}
// concatMessages 返回合并 a 与 b 的新切片(绝不复用 a 或 b
// 的底层数组),因此续跑尾部可以安全地交给并发运行。
func concatMessages(a []model.Message, b ...model.Message) []model.Message {
out := make([]model.Message, 0, len(a)+len(b))
out = append(out, a...)
out = append(out, b...)
return out
}