修复: aichat上下文管理与信息组织P1批

逐件(证据:深查-aichat质量/信息UX-2026-10-17):
- 恢复链套娃:RECOVERY_ARTIFACT_PREFIX双侧过滤+单点拦截(E1)
- message_repo全量重写保留原created_at(E11,治1750条时间线污染)
- search_files/grep 0命中附阴性存疑提示(E6,共享negative_hit_hint)
- 项目清单三源活跃度排序+system prompt指纹对齐(E4跑题)
- 会话列表活跃/归档offset分页+侧栏加载更多(F4-1,治50硬上限)
- inject消息source标记(轮次分桶不误计发起,V52同源)
- 提示词回复风格条款中英双语(反口水话,含测试断言)
- i18n补键:复制/折叠量/发送title/历史定位提示(F1-1/F2-1/F6-1)

验收:cargo test --workspace 2281 passed 0 failed;vue-tsc EXIT 0
This commit is contained in:
lxy
2026-10-18 23:15:45 +08:00
parent a273a86a7d
commit 05d0f89c16
10 changed files with 570 additions and 57 deletions
+10
View File
@@ -133,6 +133,8 @@ export default {
queueSave: 'Save',
queueCancel: 'Cancel',
queueSendNow: 'Send now',
// UX walk panel-2 F2-1: send button title/aria (was mis-bound to queueSendNow)
send: 'Send',
// 3c UX batch addition (I4 queue backfill: pull a queued item back into the input box)
queueBackfill: 'Backfill',
@@ -185,6 +187,10 @@ export default {
copyMsg: 'Copy message',
copied: 'Copied',
copyFailed: 'Copy failed',
// F1-1: code block copy button (injected at v-html render layer via decorateCodeHtml)
copyCode: 'Copy',
// F1-1: collapsed long-message summary toggle (expanded state reuses collapse key)
foldedSummary: '{chars} chars collapsed / ~{tokens} tokens — click to expand',
// Copy bubble as image (html2canvas → clipboard; falls back to download)
copyAsImage: 'Copy as image',
copiedAsImage: 'Copied as image',
@@ -287,6 +293,8 @@ export default {
recoverNow: 'Resume',
viewHistory: 'View history messages',
viewSummary: 'View context summary',
// UX walk panel-6 F6-1: inline hint when a history/summary jump misses (target inside a collapsed segment)
historyLocateInSegment: 'This message is inside a collapsed segment (archived/compressed). Expand the divider in the message flow first',
viewContext: 'View AI context',
contextSystemPrompt: 'System Prompt',
contextEnvironment: 'Environment',
@@ -342,6 +350,8 @@ export default {
editEmptyBlocked: 'Edit content is empty, submission cancelled',
skillNoMatchQuery: 'No skill matches "{q}", send blocked',
backfillOverwriteConfirm: 'The input box has an unsent draft; backfilling will overwrite it. Continue?',
// UX walk panel-2 F2-4: example-card overwrite confirm (aligned with backfill confirm)
exampleOverwriteConfirm: 'The input box has an unsent draft; the example will overwrite it. Continue?',
// ── Outbox / scheduled messages (OutboxDrawer + ChatInput clock entry, design 2026-10-10 §3.4) ──
outboxEntry: 'Scheduled messages',