清理: 移除代码注释中的走查编号前缀(UX/B/SW/CR/ID/P0-P2-26xxxx,共102处)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
//!
|
||||
//! 审批链(approveToolCall/batchApprove)已拆分到 useAiApproval.ts(fe-arch P0-1)。
|
||||
//!
|
||||
//! B-260616-02 L2 发送韧性:三级降级
|
||||
//! L2 发送韧性:三级降级
|
||||
//! L0 normal:后端 idle → 直接发送
|
||||
//! L1 queued: 后端 busy → 入队等待(≤30s 正常排队)
|
||||
//! L2 force: 排队>30s → 弹 confirm → 用户确认后调 ai_chat_force_send 复位残留并强制发出
|
||||
@@ -510,7 +510,7 @@ async function stopChat() {
|
||||
flushCurrentText()
|
||||
setStreaming(false, { convId: state.activeConversationId, reason: 'stopChat' }) // 本地先复位,不依赖后端 AiCompleted(审批态看门狗已 clear,竞态丢失则卡死)
|
||||
clearStreamWatchdog() // 清残留看门狗
|
||||
// UX-260616-05 决策 a(逐条续发):不再清队列,保留供 AiCompleted 链式触发 drainQueue 续发。
|
||||
// 决策 a(逐条续发):不再清队列,保留供 AiCompleted 链式触发 drainQueue 续发。
|
||||
// 后端 agentic/mod.rs emit AiCompleted 注释明确「保证前端收事件时后端已可接下一条,队列续发不被拒」;
|
||||
// 当前未完成回复已入库(agentic/mod.rs save_conversation)保留为截断回复。
|
||||
try {
|
||||
@@ -540,8 +540,8 @@ export function useAiSend() {
|
||||
drainQueue,
|
||||
cancelQueued,
|
||||
clearQueue,
|
||||
editQueued, // UX-260616-06
|
||||
sendQueuedNow, // UX-260616-07
|
||||
editQueued, //
|
||||
sendQueuedNow, //
|
||||
stopChat,
|
||||
isQueueTimedOut,
|
||||
tryForceSend,
|
||||
|
||||
@@ -188,7 +188,7 @@ export function useToolApproval(tc: Ref<AiToolCallInfo>, emit: ToolApprovalEmit)
|
||||
|
||||
/**
|
||||
* 拒绝按钮处理(risk 类专用)。
|
||||
* loading + 超时兜底复用 B-260616-08 机制。拒绝不做 High 风险二次确认(无害,加确认反增摩擦)。
|
||||
* loading + 超时兜底复用 机制。拒绝不做 High 风险二次确认(无害,加确认反增摩擦)。
|
||||
*/
|
||||
async function onReject() {
|
||||
if (approving.value) return // 防重入
|
||||
|
||||
@@ -70,7 +70,7 @@ export interface ToolResult {
|
||||
has_more?: boolean
|
||||
warning?: string
|
||||
review_rounds?: number
|
||||
// UX-260618-05~12:补全后端返回前端消费的字段(review_rounds/truncated/bytes_moved/has_more/total/entries 已存在)
|
||||
// ~12:补全后端返回前端消费的字段(review_rounds/truncated/bytes_moved/has_more/total/entries 已存在)
|
||||
task_id?: string
|
||||
execution_id?: string
|
||||
target_status?: string
|
||||
@@ -146,7 +146,7 @@ export function shouldKeepOpen(tc: AiToolCallInfo): boolean {
|
||||
* - 通用工具 raw 文本:AR-6 路径后端塞 serde_json::Value::String("工具 X 执行失败: ..."),
|
||||
* 前端 parseResult 返回 null(非 JSON 对象)→ 走 raw 文本兜底,无结构信号
|
||||
* 此时按行首前缀 "执行失败"/"Error:"/"Failed:" 启发式判定(对齐后端 err_msg 格式,
|
||||
* 行首锚定避免误伤含这些子串的正常产出,见 UX-260617-18)。
|
||||
* 行首锚定避免误伤含这些子串的正常产出,见 )。
|
||||
*
|
||||
* 注意:status==='rejected'(用户拒绝)走独立分支,不算工具失败,不进此函数。
|
||||
* running/pending_approval 自然 false(无 result 或 result 未稳定)。
|
||||
@@ -631,7 +631,7 @@ export function formatFetchUrl(r: ToolResult): string {
|
||||
|
||||
/** list_* summary 版:n=0 返空串(折叠态无噪音),按 name 选 i18n key */
|
||||
function summaryList(r: ToolResult, name: string): string {
|
||||
// UX-260618-10/12: 后端返 {items,total,has_more} 对象(非数组),原 Array.isArray(r) 恒 false→折叠态无计数
|
||||
// 后端返 {items,total,has_more} 对象(非数组),原 Array.isArray(r) 恒 false→折叠态无计数
|
||||
const n = Array.isArray(r) ? r.length
|
||||
: (typeof r.total === 'number' ? r.total
|
||||
: (Array.isArray(r.items) ? r.items.length : 0))
|
||||
|
||||
@@ -21,7 +21,7 @@ export interface DiffLine {
|
||||
/**
|
||||
* 解析 unified diff 文本 → DiffLine[]。
|
||||
*
|
||||
* 来源(AE-2025-03 / UX-260618-06):后端 generate_diff 输出 '+新行/-旧行/(空格)上下文',
|
||||
* 来源(AE-2025-03 / ):后端 generate_diff 输出 '+新行/-旧行/(空格)上下文',
|
||||
* 逐行拆 → {kind, text} 供模板按 kind 着色(add 绿/del 红/ctx 灰)。
|
||||
*
|
||||
* - 空行过滤(generate_diff 末尾保留单尾换行 → split 末尾有空串元素)
|
||||
|
||||
@@ -37,7 +37,7 @@ import shell from 'highlight.js/lib/languages/shell'
|
||||
import java from 'highlight.js/lib/languages/java'
|
||||
import csharp from 'highlight.js/lib/languages/csharp'
|
||||
import cpp from 'highlight.js/lib/languages/cpp'
|
||||
// B-260616-11(②子项): diff 语言注册,```diff 代码块 +/- 行获 hljs-addition/deletion 红绿(github-dark.css 自带)
|
||||
// (②子项): diff 语言注册,```diff 代码块 +/- 行获 hljs-addition/deletion 红绿(github-dark.css 自带)
|
||||
import diff from 'highlight.js/lib/languages/diff'
|
||||
// 主题:github-dark 与现有深色 UI(#0c0e1a)贴合;亮色主题下 code 块仍可读(深底浅字)。
|
||||
// 注意:该 CSS 在 ai-md.css 之前/之后导入均可,hljs 用 .hljs/.hljs-* token class 着色,
|
||||
@@ -185,7 +185,7 @@ function renderMd(text: string): string {
|
||||
if (!mdReady.value || !_marked || !_purify) {
|
||||
return escapeFallback(text)
|
||||
}
|
||||
// B-260616-11(①子项): 裸 diff 文本预处理。渲染前将无围栏的连续 +/- 行包成 ```diff
|
||||
// (①子项): 裸 diff 文本预处理。渲染前将无围栏的连续 +/- 行包成 ```diff
|
||||
// 围栏代码块,复用②子项已注册的 diff 语言 hljs 红绿样式,零额外 CSS。
|
||||
// 防御性:即使现网 AI 多带围栏,裸行也正确处理(围栏内整段不动)。
|
||||
const wrapped = wrapNakedDiff(text)
|
||||
@@ -198,7 +198,7 @@ function renderMd(text: string): string {
|
||||
}
|
||||
|
||||
/**
|
||||
* B-260616-11(①子项,方案A wrapNakedDiff): 裸 +/- diff 文本预处理。
|
||||
* (①子项,方案A wrapNakedDiff): 裸 +/- diff 文本预处理。
|
||||
*
|
||||
* 现网 AI(尤其 deepseek/glm/qwen 等)在描述「改动/对比」时常直接吐裸 -/+ 行而忘记
|
||||
* 围栏(或仅用普通文本),导致 marked 当成普通段落/list 渲染,丢失 diff 视觉语义。
|
||||
|
||||
Reference in New Issue
Block a user