fix: 合并 Query Agent 的连续 system messages

This commit is contained in:
mmhh256
2026-09-19 14:01:39 +08:00
parent 9b82d29037
commit b441287d54
3 changed files with 30 additions and 5 deletions
+23 -1
View File
@@ -1,5 +1,8 @@
import { describe, expect, it, vi } from 'vitest'
import { QueryAgentService, type QueryAgentProvider } from '../../src/main/services/query-agent-service'
import {
QueryAgentService,
type QueryAgentProvider
} from '../../src/main/services/query-agent-service'
function capturingProvider(configured = true): {
provider: QueryAgentProvider
@@ -54,6 +57,25 @@ describe('QueryAgentService — 历史上下文不改变毕业语义', () => {
])
})
it('传 conversationScope 时把范围说明合并进唯一的 system message', async () => {
const { provider, calls } = capturingProvider()
const service = new QueryAgentService(provider, vi.fn())
await service.run('这个群最近聊了什么', {
conversationScope: {
scope: { kind: 'current', conversationId: 'fixture-conversation' },
label: '当前会话:fixture-group'
}
})
expect(calls[0].messages.map((message) => message.role)).toEqual(['system', 'user'])
expect(calls[0].messages.filter((message) => message.role === 'system')).toHaveLength(1)
expect(calls[0].messages[0]).toMatchObject({
content: expect.stringContaining('当前搜索范围(由应用界面决定):当前会话:fixture-group。')
})
expect(String(calls[0].messages[0].content)).toContain('你是 TraceMemo 的本地聊天查询助手')
})
it('失败分类是 additive 字段:成功时不存在', async () => {
const { provider } = capturingProvider()
const service = new QueryAgentService(provider, vi.fn())