Files
smartmate/backend/inits/eino.go
Losita d47a8bcabd Version: 0.9.25.dev.260417
后端:
1. AIHub 模型分级从 Worker/Strategist 两级重构为 Lite/Pro/Max 三级
- AIHub 结构体从 Worker + Strategist 改为 Lite + Pro + Max,分别对应轻量(标题生成)、标准(Chat 路由/闲聊/交付总结)、高能力(Plan 规划/Execute ReAct)三个能力层级
- config.example.yaml 新增 liteModel / proModel / maxModel 三个模型配置项,替代原 workerModel / strategistModel
- 启动层 InitEino 改为创建三个独立模型实例,抽取公共 baseURL 和 apiKey 减少重复
- pickChatModel 统一返回 Pro 模型,旧 strategist 参数不再生效;pickTitleModel 从 Worker 切到 Lite
- runNewAgentGraph 按 Plan/Execute→Max、Chat/Deliver→Pro 分级注入;Graph 出错回退也切到 Pro
- Memory 模块初始化从 Worker 改为 Pro
2. Plan 节点从"两阶段评估"简化为"单轮深度规划",thinking 开关改为全配置化
- 移除 Phase 1(快速评估 1600 token)+ Phase 2(深度规划 3200 token)的两轮调用逻辑,改为单轮不限 token 深度规划
- PlanDecision 移除 need_thinking 字段,prompt 规则和 JSON contract 同步删除该字段
- 各节点(Plan / Execute / Deliver)thinking 开关从硬编码改为从 AgentGraphDeps 读取,由 config.yaml 的 agent.thinking 段按节点注入
- 新增 agent.thinking 配置段(plan / execute / deliver / memory 四个独立布尔开关),config.example.yaml 补齐默认值
- 新增 resolveThinkingMode 公共函数,plan / execute / deliver 和 memory 决策/抽取链路统一使用
3. Memory 模块 LLM 调用支持 thinking 开关
- Config 新增 LLMThinking 字段,config_loader 从 agent.thinking.memory 读取
- LLMDecisionOrchestrator.Compare 和 LLMWriteOrchestrator.ExtractFacts 的 thinking 模式从硬编码 Disabled 改为读取配置
前端:
1. 移除助手输入区模型选择器及全部偏好持久化逻辑
- 删除 ModelType 类型、selectedModel ref、MODEL_PREFERENCE_STORAGE_KEY 常量
- 删除 isModelType / loadModelPreferenceMap / persistModelPreferenceMap / savePreferredModel / resolvePreferredModel / applyPreferredModelForConversation 六个函数及 modelPreferenceMap ref
- 删除 selectedModel watch 监听、发送消息时的 savePreferredModel 调用、切会话时的 applyPreferredModelForConversation 调用、会话迁移时的模型偏好迁移
- fetchChatStream 的 model 参数硬编码为 'worker'
- 删除模板中"模型"下拉选择器(标准/策略)及对应的全局样式 .assistant-model-select-panel
2. 上下文窗口指示器简化为仅显示总占用
- ContextWindowMeter 移除 msg0~msg3 四段彩色分段逻辑(ContextSegment 接口、segments computed、v-for 渲染)
- 进度条改为单一蓝色条,按 total/budget 比例填充;超预算时变红
- Tooltip 简化为仅显示"总计 X / 预算 Y(Z%)"

仓库:无
2026-04-17 12:27:04 +08:00

61 lines
1.7 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 inits
import (
"context"
"os"
"github.com/cloudwego/eino-ext/components/model/ark"
"github.com/spf13/viper"
)
// AIHub 存储三级模型的实例,按能力分级调度。
//
// 分级策略:
// 1. Lite轻量模型用于标题生成等低复杂度、低延迟场景
// 2. Pro标准模型用于 Chat 路由/闲聊/深度回答/Deliver 总结;
// 3. Max高能力模型用于 Plan 规划和 Execute ReAct 等需要深度推理的场景。
type AIHub struct {
Lite *ark.ChatModel // 轻量模型:标题生成等低复杂度任务
Pro *ark.ChatModel // 标准模型Chat 路由、闲聊、交付总结
Max *ark.ChatModel // 高能力模型Plan 规划、Execute ReAct
}
func InitEino() (*AIHub, error) {
ctx := context.Background()
baseURL := viper.GetString("agent.baseURL")
apiKey := os.Getenv("ARK_API_KEY")
// 1. Lite 模型:标题生成等低复杂度场景,优先控制成本和延迟。
lite, err := ark.NewChatModel(ctx, &ark.ChatModelConfig{
Model: viper.GetString("agent.liteModel"),
BaseURL: baseURL,
APIKey: apiKey,
})
if err != nil {
return nil, err
}
// 2. Pro 模型Chat 路由/闲聊/交付总结等标准复杂度场景。
pro, err := ark.NewChatModel(ctx, &ark.ChatModelConfig{
Model: viper.GetString("agent.proModel"),
BaseURL: baseURL,
APIKey: apiKey,
})
if err != nil {
return nil, err
}
// 3. Max 模型Plan 规划和 Execute ReAct 等需要深度推理的场景。
maxModel, err := ark.NewChatModel(ctx, &ark.ChatModelConfig{
Model: viper.GetString("agent.maxModel"),
BaseURL: baseURL,
APIKey: apiKey,
})
if err != nil {
return nil, err
}
return &AIHub{
Lite: lite,
Pro: pro,
Max: maxModel,
}, nil
}