添加会话级固定预设

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-17 12:06:13 +08:00
co-authored by Claude
parent 0b48dc0d7d
commit 2c4d4af070
5 changed files with 154 additions and 15 deletions
+21 -5
View File
@@ -30,11 +30,16 @@ func (s *Store) path(id string) string {
}
func (s *Store) Create() (*message.Conversation, error) {
return s.CreateWithPreset("")
}
func (s *Store) CreateWithPreset(preset string) (*message.Conversation, error) {
conv := &message.Conversation{
ID: utils.NewUUID(),
Title: "新对话",
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
ID: utils.NewUUID(),
Title: "新对话",
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
PresetPrompt: strings.TrimSpace(preset),
}
if err := s.Save(conv); err != nil {
return nil, err
@@ -124,7 +129,7 @@ func SaveMessages(store *Store, id string, messages []message.ChatMessage, assis
if err != nil {
return err
}
conv.Messages = append([]message.ChatMessage(nil), messages...)
conv.Messages = filterPresetMessages(messages)
conv.Messages = append(conv.Messages, message.ChatMessage{Role: "assistant", Content: assistantContent})
if conv.Title == "" || conv.Title == "新对话" {
conv.Title = GenTitle(conv.Messages)
@@ -132,6 +137,17 @@ func SaveMessages(store *Store, id string, messages []message.ChatMessage, assis
return store.Save(conv)
}
func filterPresetMessages(messages []message.ChatMessage) []message.ChatMessage {
filtered := make([]message.ChatMessage, 0, len(messages))
for _, msg := range messages {
if msg.Hidden && strings.EqualFold(msg.Role, "system") {
continue
}
filtered = append(filtered, msg)
}
return filtered
}
func GenTitle(messages []message.ChatMessage) string {
for _, m := range messages {
if m.Hidden {