mirror of
https://github.com/RuoJi6/ARTEX.git
synced 2026-10-28 17:13:50 +08:00
fix: 自动标题取消语义、清洗循环与拒绝占位回写
spawn_task 标题 20s 超时且父 ctx 取消不建任务;清洗循环剥前缀内外引号; 异步标题拒绝「新对话」并用条件更新防手改竞态;会话 profile 失败回退全局。
This commit is contained in:
1 parent
6c781f21f4
commit
3d3ee8827e
6 files changed
+93
-39
No files matched your search
+16
-15
@@ -51,22 +51,23 @@ func cleanAutoTitle(raw string) string {
|
||||
if i := strings.IndexAny(title, "\r\n"); i >= 0 {
|
||||
title = strings.TrimSpace(title[:i])
|
||||
}
|
||||
for len(title) >= 2 {
|
||||
first, firstSize := utf8.DecodeRuneInString(title)
|
||||
last, lastSize := utf8.DecodeLastRuneInString(title)
|
||||
if (first == '"' && last == '"') || (first == '\'' && last == '\'') || (first == '“' && last == '”') || (first == '「' && last == '」') {
|
||||
title = strings.TrimSpace(title[firstSize : len(title)-lastSize])
|
||||
continue
|
||||
for {
|
||||
previous := title
|
||||
if len(title) >= 2 {
|
||||
first, firstSize := utf8.DecodeRuneInString(title)
|
||||
last, lastSize := utf8.DecodeLastRuneInString(title)
|
||||
if (first == '"' && last == '"') || (first == '\'' && last == '\'') || (first == '“' && last == '”') || (first == '「' && last == '」') {
|
||||
title = title[firstSize : len(title)-lastSize]
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
lines := strings.FieldsFunc(title, func(r rune) bool { return r == '\r' || r == '\n' })
|
||||
if len(lines) > 0 {
|
||||
title = strings.TrimSpace(lines[0])
|
||||
}
|
||||
for _, prefix := range []string{"标题:", "标题:"} {
|
||||
if strings.HasPrefix(title, prefix) {
|
||||
title = strings.TrimSpace(strings.TrimPrefix(title, prefix))
|
||||
for _, prefix := range []string{"标题:", "标题:"} {
|
||||
if strings.HasPrefix(title, prefix) {
|
||||
title = strings.TrimPrefix(title, prefix)
|
||||
break
|
||||
}
|
||||
}
|
||||
title = strings.TrimSpace(title)
|
||||
if title == previous {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,15 @@ func TestGenerateAutoTitleCleansResponse(t *testing.T) {
|
||||
if p.req.Thinking != "disabled" || p.req.MaxTokens != 96 || len(p.req.Tools) != 0 {
|
||||
t.Fatalf("request options: %+v", p.req)
|
||||
}
|
||||
|
||||
quoted := &autoTitleProvider{reply: `标题:"整理项目设置"`}
|
||||
got, err = GenerateAutoTitle(t.Context(), quoted, "整理项目设置")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != "整理项目设置" {
|
||||
t.Fatalf("nested quote/prefix cleanup: got %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateAutoTitleProviderError(t *testing.T) {
|
||||
|
||||
Reference in new issue
Block a user