cd60b01cf3
DevTools (新增): - 进程管理器: 启动/停止/重启/编译 + 端口自动释放 - 服务接管 (tryAdopt): 检测已运行服务,健康检查通过则直接接管 - 一键启动 (startAllSequential): 按 ai-core→gateway→frontend 顺序启动 - 日志布局切换: 标签页模式 ↔ 三栏并列模式 - 性能监控: CPU/内存采样 + SVG 折线图 - Web UI + WebSocket 实时推送 前端修复: - tailwind.config.ts: 修复空配置导致 CSS 不加载 (增加 content/colors/fontFamily) - postcss.config.js: 新建缺失的 PostCSS 配置 - App.tsx: 移除注册功能,仅保留管理员登录 (admin / cyrene-dev-admin) 后端新增: - config.go: AdminUsername/AdminPassword/RegistrationEnabled 环境变量 - auth_handler.go: 管理员登录 + 注册邮箱验证码 + 注册开关控制 - 管理员凭据: admin / cyrene-dev-admin (默认) 其他: - .gitignore: 新增 devtools/node_modules/ devtools/logs/ devtools/package-lock.json - devtools.sh: DevTools 一键启动脚本
71 lines
2.1 KiB
Go
71 lines
2.1 KiB
Go
package context
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/yourname/cyrene-ai/ai-core/internal/memory"
|
|
"github.com/yourname/cyrene-ai/ai-core/internal/model"
|
|
"github.com/yourname/cyrene-ai/ai-core/internal/persona"
|
|
)
|
|
|
|
// Builder 对话上下文构建器
|
|
type Builder struct{}
|
|
|
|
type BuildParams struct {
|
|
UserID string
|
|
SessionID string
|
|
UserMessage string
|
|
Persona *persona.PersonaConfig
|
|
Memories []memory.MemoryEntry
|
|
HistoryLimit int
|
|
}
|
|
|
|
// Build 构建发送给LLM的完整消息列表
|
|
func (b *Builder) Build(ctx context.Context, params BuildParams) ([]model.LLMMessage, error) {
|
|
messages := []model.LLMMessage{}
|
|
|
|
// 1. 系统消息 —— 昔涟的人格Prompt
|
|
systemPrompt := params.Persona.BuildSystemPrompt(
|
|
params.UserID, // 后续可替换为真实用户名
|
|
1, // 初始好感度
|
|
)
|
|
messages = append(messages, model.LLMMessage{
|
|
Role: "system",
|
|
Content: systemPrompt,
|
|
})
|
|
|
|
// 2. 记忆注入 —— 相关记忆以系统消息形式注入
|
|
if len(params.Memories) > 0 {
|
|
memoryPrompt := "【以下是关于开拓者的一些重要记忆,请在合适的时机自然地提及】\n"
|
|
for _, m := range params.Memories {
|
|
memoryPrompt += fmt.Sprintf("- %s\n", m.Content)
|
|
}
|
|
messages = append(messages, model.LLMMessage{
|
|
Role: "system",
|
|
Content: memoryPrompt,
|
|
})
|
|
}
|
|
|
|
// 3. 历史对话
|
|
history, err := b.loadHistory(ctx, params.SessionID, params.HistoryLimit)
|
|
if err == nil {
|
|
messages = append(messages, history...)
|
|
}
|
|
|
|
// 4. 当前用户消息
|
|
messages = append(messages, model.LLMMessage{
|
|
Role: "user",
|
|
Content: params.UserMessage,
|
|
})
|
|
|
|
return messages, nil
|
|
}
|
|
|
|
// loadHistory 加载会话历史 (MVP阶段返回空,后续对接数据库)
|
|
func (b *Builder) loadHistory(_ context.Context, sessionID string, limit int) ([]model.LLMMessage, error) {
|
|
log.Printf("[context] 加载会话 %s 历史 (限制 %d 条) - 暂未实现持久化", sessionID, limit)
|
|
return nil, nil
|
|
}
|