feat: complete WorkBuddy parity and Windows release workflow
This commit is contained in:
1 parent
143516b3a8
commit
d5512df549
434 files changed
+54977
-1854
No files matched your search
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* TODO 13:个性化提示词拼装的离线回归。
|
||||
* 覆盖默认值不产生多余上下文、身份/风格/指令/人设/长期记忆分别进入提示词、超长截断与非法风格回退。
|
||||
* 覆盖默认人设生效、身份/风格/指令/人设/长期记忆分别进入提示词、超长截断与非法风格回退。
|
||||
*/
|
||||
import assert from 'node:assert/strict'
|
||||
import { buildPersonalizationPrompt, DEFAULT_PERSONA, normalizePersonalization } from '../src/shared/personalization'
|
||||
@@ -10,13 +10,13 @@ assert.equal(base.tone, 'default')
|
||||
assert.equal(base.loadingTips, true)
|
||||
assert.equal(base.showFileChanges, false)
|
||||
assert.equal(base.persona, DEFAULT_PERSONA)
|
||||
assert.equal(buildPersonalizationPrompt(base), '', '默认设置不应把原版人设注入每轮提示词')
|
||||
assert.ok(buildPersonalizationPrompt(base).includes(`### 人设设定\n${DEFAULT_PERSONA}`), '默认人设应在 UI 显示生效时进入提示词')
|
||||
|
||||
const identity = buildPersonalizationPrompt(normalizePersonalization({ userCallName: ' 小明 ', aiName: ' YCode 助手 ' }))
|
||||
assert.match(identity, /^## 个性化偏好(用户设置,始终遵守)/)
|
||||
assert.ok(identity.includes('- 用户希望被称呼为:小明'))
|
||||
assert.ok(identity.includes('- 你的名字是:YCode 助手;自我介绍时使用这个名字。'))
|
||||
assert.ok(!identity.includes(DEFAULT_PERSONA), '默认人设不应进入提示词')
|
||||
assert.ok(identity.includes(DEFAULT_PERSONA), '默认人设应与其它生效的人设字段一致进入提示词')
|
||||
|
||||
const tone = buildPersonalizationPrompt(normalizePersonalization({ tone: 'professional' }))
|
||||
assert.ok(tone.includes('- 回复风格:专业严谨——清晰、准确、值得信赖。'))
|
||||
@@ -32,11 +32,15 @@ assert.ok(memory.includes('### 长期记忆\n用户偏好 TypeScript。'))
|
||||
|
||||
const long = buildPersonalizationPrompt(normalizePersonalization({ customPrompt: 'x'.repeat(8100) }))
|
||||
assert.ok(long.includes('(内容过长,已截断)'))
|
||||
assert.ok(long.length < 8100, '超长字段应被截断')
|
||||
assert.ok(long.includes('x'.repeat(8000)), '超长用户指令应保留允许的前 8000 字符')
|
||||
assert.ok(!long.includes('x'.repeat(8001)), '超长用户指令应在 8000 字符后截断')
|
||||
|
||||
const fallback = normalizePersonalization({ tone: 'not-a-tone' as never })
|
||||
assert.equal(fallback.tone, 'default')
|
||||
assert.equal(buildPersonalizationPrompt(fallback), '')
|
||||
assert.ok(buildPersonalizationPrompt(fallback).includes(DEFAULT_PERSONA))
|
||||
|
||||
const noPersona = buildPersonalizationPrompt(normalizePersonalization({ persona: '' }))
|
||||
assert.equal(noPersona, '', '明确清空人设后不应回填默认文本')
|
||||
|
||||
const tips = normalizePersonalization({ loadingTips: false, showFileChanges: true })
|
||||
assert.equal(tips.loadingTips, false)
|
||||
|
||||
Reference in new issue
Block a user