后端: 1. execute 节点继续拆职责——超大 execute.go 下沉为 node/execute 子包,按决策流、动作路由、上下文锚点、工具执行、状态快照、工具展示与参数解析拆分;顶层 execute.go 收敛为桥接导出,降低单文件编排/业务/模型/工具逻辑混写 2. 节点公共能力继续沉到 shared——抽出 LLM 纠错回灌、完整上下文调试日志、thinking 开关、统一上下文压缩、可见 assistant 文本持久化等 node_* 公共件,减少 execute 独占实现并为其他节点复用铺路 3. speak 文本整理能力独立收口——新增 speak_text 辅助文件,补齐正文归一化的独立承载,继续收缩 execute 主文件体积 前端: 4. NewAgent 时间线接入 business_card 业务卡片协议——schedule_agent.ts 新增 task_query / task_record 卡片载荷类型与 business_card kind;AssistantPanel 增加业务卡片事件存储、时间线恢复、块渲染分支与 BusinessCardRenderer 接入,同时保留 interrupt / status / tool / reasoning 多块并存 5. 新增任务查询卡片与任务记录卡片组件,并补充 DesignDemo 设计预览页与路由,前端可先行验证 business_card 的视觉与交互落点 文档: 6. 新增 newagent business card 前后端对接说明,明确 timeline kind、payload 结构、卡片分类、前后端发射/渲染约束
22 lines
510 B
Go
22 lines
510 B
Go
package newagentnode
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// listItemRe 匹配被粘连在一起的列表序号,用于正文归一化时自动补换行。
|
|
var listItemRe = regexp.MustCompile(`([^\n])([2-9][\.、]\s)`)
|
|
|
|
// normalizeSpeak 统一整理要展示给用户的正文。
|
|
func normalizeSpeak(speak string) string {
|
|
speak = strings.TrimSpace(speak)
|
|
if speak == "" {
|
|
return speak
|
|
}
|
|
if !strings.Contains(speak, "\n") {
|
|
speak = listItemRe.ReplaceAllString(speak, "$1\n$2")
|
|
}
|
|
return speak + "\n"
|
|
}
|