优化: 清理无意义注释(走查编号前缀/过时历史标注/死代码注释)

This commit is contained in:
lxy
2026-08-15 18:05:43 +08:00
parent 5a4c821629
commit 5ac815b9ca
137 changed files with 735 additions and 737 deletions
+2 -2
View File
@@ -86,7 +86,7 @@ import SettingRow from './SettingRow.vue'
const { t } = useI18n()
const appSettings = useAppSettingsStore()
// F-260620: 接共享 toast 通道(Settings.vue showToast),替代 console.error/warn 用户零反馈
// 接共享 toast 通道(Settings.vue showToast),替代 console.error/warn 用户零反馈
const emit = defineEmits<{ (e: 'toast', msg: string, type: 'error' | 'warning' | 'info' | 'success'): void }>()
// F-260619-03 Phase A: AI 工具文件访问授权目录白名单 UI
@@ -126,7 +126,7 @@ async function pickDir() {
const selected = await open({ directory: true, multiple: false })
if (!selected || Array.isArray(selected)) return
newDir.value = selected as string
// F-260620: 选完即加(消除选目录后需二次点"添加"的摩擦)
// 选完即加(消除选目录后需二次点"添加"的摩擦)
await addDir()
} catch (e) {
console.error('选择目录失败:', e)
+1 -1
View File
@@ -88,7 +88,7 @@ const { t } = useI18n()
const appSettings = useAppSettingsStore()
const emit = defineEmits<{
// P0-2: 对齐 ToastType 加 'success'(本面板暂未用,保类型一致)
// 对齐 ToastType 加 'success'(本面板暂未用,保类型一致)
(e: 'toast', msg: string, type: 'error' | 'warning' | 'info' | 'success'): void
}>()
@@ -67,9 +67,9 @@ const appSettings = useAppSettingsStore()
const settings = reactive({
llmGlobalConcurrency: appSettings.get<number>('df-llm-global-concurrency', 3),
llmPerConvConcurrency: appSettings.get<number>('df-llm-per-conv-concurrency', 2),
// F-260616-01: Agentic 循环最大轮次,默认 10(与后端 DEFAULT_MAX_AGENT_ITERATIONS 对齐)
// Agentic 循环最大轮次,默认 10(与后端 DEFAULT_MAX_AGENT_ITERATIONS 对齐)
agentMaxIterations: appSettings.get<number>('df-ai-agent-max-iterations', 10),
// F-260616-07: 流式失败重试次数,默认 3(与后端 DEFAULT_MAX_AGENT_RETRIES 对齐)
// 流式失败重试次数,默认 3(与后端 DEFAULT_MAX_AGENT_RETRIES 对齐)
agentMaxRetries: appSettings.get<number>('df-ai-agent-max-retries', 3),
})
@@ -148,7 +148,7 @@ function onRetryChange() {
}
// 同步 Agentic 最大轮次到后端(debounce 300ms)
// F-260616-01: 后端 loop 入口 load 快照锁定边界——热改后当前 loop 不受影响,
// 后端 loop 入口 load 快照锁定边界——热改后当前 loop 不受影响,
// 下次发消息才生效(与 llm_concurrency 传 Arc 实时反映的区别)。
// 双 clamp:此处 1-50 + 后端 command 再 clamp 1-50,防越界输入致 loop 失效/失控
let _agentIterTimer: ReturnType<typeof setTimeout> | null = null
@@ -184,7 +184,7 @@ const unlimited = computed({
})
// 同步流式失败重试次数到后端(debounce 300ms)
// F-260616-07: 后端 loop 入口 load 快照锁定边界——热改后当前 loop 不受影响,
// 后端 loop 入口 load 快照锁定边界——热改后当前 loop 不受影响,
// 下次发消息才生效。双 clamp:此处 0-10 + 后端 command 再 clamp 0-10
let _agentRetryTimer: ReturnType<typeof setTimeout> | null = null
function syncAgentMaxRetries() {
@@ -206,12 +206,12 @@ function syncAgentMaxRetries() {
onMounted(() => {
// 启动同步一次 LLM 并发配置(防刷新页面后后端未恢复用户设定值)
syncConcurrencyConfig()
// F-260616-01: 启动同步一次 Agentic 最大轮次(防刷新页面后后端未恢复用户设定值)
// F-260618-23: App.vue 根 onMounted 已在应用启动时恢复(覆盖用户没先进 Settings 直接用 AI Chat 的场景),
// 启动同步一次 Agentic 最大轮次(防刷新页面后后端未恢复用户设定值)
// App.vue 根 onMounted 已在应用启动时恢复(覆盖用户没先进 Settings 直接用 AI Chat 的场景),
// 此处保留双保险(IPC 幂等值相同无害)
syncAgentMaxIterations()
// F-260616-07: 启动同步一次流式失败重试次数(防刷新页面后后端未恢复用户设定值)
// F-260618-23: 同上,App.vue 根 onMounted 已恢复,此处双保险保留
// 启动同步一次流式失败重试次数(防刷新页面后后端未恢复用户设定值)
// 同上,App.vue 根 onMounted 已恢复,此处双保险保留
syncAgentMaxRetries()
})
+13 -13
View File
@@ -185,7 +185,7 @@ import type { AiProviderConfig, ModelConfig, Modality, Capability, ProbeSource }
import { PROVIDER_PRESETS, CUSTOM_PRESET_ID, findPreset } from './providerPresets'
// ============================================================
// AI 提供商域 — 真实后端 CRUD + F-04c 负载均衡池(enabled / weight)
// AI 提供商域 — 真实后端 CRUD + c 负载均衡池(enabled / weight)
// ============================================================
const { t } = useI18n()
@@ -200,7 +200,7 @@ async function syncAiStoreProviders() {
}
const emit = defineEmits<{
// P0-2: 加 'success'(保存成功绿色 toast)
// 加 'success'(保存成功绿色 toast)
(e: 'toast', msg: string, type: 'error' | 'warning' | 'info' | 'success'): void
(e: 'providers-changed'): void
}>()
@@ -229,7 +229,7 @@ const providerForm = reactive({
// F-01 阶段6:模型拉取 + 列表
fetching: false,
models: [] as ModelConfig[],
// P0-2: 保存失败的持久错误横幅(非自隐 toast)。
// 保存失败的持久错误横幅(非自隐 toast)。
// toast 3s 自隐易被忽略,保存失败时表单内常驻错误条 + 可操作建议,
// 直到下次保存尝试/重开表单才清除。null=无错误。
saveError: null as string | null,
@@ -401,7 +401,7 @@ function openProviderForm(p?: AiProviderConfig) {
providerForm.models = []
}
providerForm.fetching = false
providerForm.saveError = null // P0-2: 重开表单清旧错误横幅
providerForm.saveError = null // 重开表单清旧错误横幅
providerForm.visible = true
// L19/M32: 记初始快照(在 visible=true、字段回填完成后),isFormDirty 据此比对。
providerForm.savedSnapshot = formBusinessSnapshot()
@@ -426,7 +426,7 @@ function onPresetChange() {
}
/**
* 测试连接按钮可用条件(P0-1):
* 测试连接按钮可用条件
* - baseUrl 必填(无论新建/编辑,表单值都要有)
* - 新建态(editId 空):api_key 必填(无已保存配置可沿用)
* - 编辑态(editId 有):api_key 可空(留空=沿用已保存密钥)
@@ -438,7 +438,7 @@ const canTestConnection = computed(() => {
})
/**
* 测试连接并拉取模型列表(P0-1)。
* 测试连接并拉取模型列表。
* 用**表单当前值**测试(非 DB 值):新建态直接传表单值;编辑态传表单值 + editId,
* apiKey 留空时后端从已保存配置沿用密钥。一次性测试不写库。
*
@@ -486,7 +486,7 @@ async function fetchModels() {
}
/**
* P0-2: 把后端返回的错误文本分类成「用户可操作的建议」。
* 把后端返回的错误文本分类成「用户可操作的建议」。
*
* 后端 commands/provider.rs 已对密钥相关失败返回友好中文 Err(含原因+建议),
* 这里只做轻量分类挂上"建议下一步",避免裸 Err 文本吓到用户:
@@ -526,14 +526,14 @@ async function saveProvider() {
defaultModel: providerForm.defaultModel,
modelConfigs: providerForm.models,
})
// P0-2: 成功明确反馈——清错误横幅 + 关表单 + 绿色「已保存」toast
// 成功明确反馈——清错误横幅 + 关表单 + 绿色「已保存」toast
providerForm.saveError = null
providerForm.visible = false
providerForm.savedSnapshot = '' // L19: 关表单清快照
await loadProviders()
emit('toast', t('settings.toastSaved'), 'success')
} catch (e) {
// P0-2: 失败时①表单保持编辑态(不关)②表单内常驻错误横幅(分类建议,非自隐)
// 失败时①表单保持编辑态(不关)②表单内常驻错误横幅(分类建议,非自隐)
// ③仍发 error toast(用户视线不在表单时仍可见),双通道确保反馈不被忽略。
const raw = errMsg(e)
console.error(t('settings.toastSaveFail', { msg: raw }), e)
@@ -570,10 +570,10 @@ async function setDefaultProvider(id: string) {
}
// ============================================================
// F-260614-04c: 负载均衡池可编辑层(enabled / weight)
// c: 负载均衡池可编辑层(enabled / weight)
// 卡片即时调 IPC(对齐 syncConcurrencyConfig 模式);落库后后端 reload_provider_caps
// 重建 per_provider caps,下条消息即按新配置 acquire。
// 不走 saveProvider(全量 INSERT OR REPLACE 会触发 R-PD-1 密钥迁移分支,与 F-04c 轻量 UPDATE 路径冲突)。
// 不走 saveProvider(全量 INSERT OR REPLACE 会触发 R-PD-1 密钥迁移分支,与 c 轻量 UPDATE 路径冲突)。
// ============================================================
let _poolTimer: ReturnType<typeof setTimeout> | null = null
@@ -693,7 +693,7 @@ onMounted(loadProviders)
}
.detail-value.mask { color: var(--df-text-dim); letter-spacing: 1px; }
/* Provider 卡片 disabled 态(F-260614-04c:enabled=false 视觉弱化) */
/* Provider 卡片 disabled 态(c:enabled=false 视觉弱化) */
.provider-card--disabled { opacity: 0.6; }
.pool-badge {
font-size: 10px;
@@ -718,7 +718,7 @@ onMounted(loadProviders)
.form-field-hint { flex-basis: 100%; margin-left: 82px; font-size: 11px; color: var(--df-text-dim); line-height: 1.5; }
.form-actions { display: flex; justify-content: flex-end; padding-top: 4px; }
/* P0-2: 保存失败持久错误横幅(常驻 form-actions 上方,醒目于自隐 toast) */
/* 保存失败持久错误横幅(常驻 form-actions 上方,醒目于自隐 toast) */
.save-error-banner {
background: var(--df-danger-bg);
border: 0.5px solid var(--df-danger);
+2 -2
View File
@@ -60,7 +60,7 @@ export const PROVIDER_PRESETS: readonly ProviderPreset[] = [
baseUrl: 'https://api.deepseek.com',
defaultModel: 'deepseek-v4-flash',
// 重要:deepseek-chat / deepseek-reasoner 旧名已于 2026-07-24 停用,
// 现分别指向 deepseek-v4-flash 的非思考/思考模式(V4-Flash 2026-07-31 发布)。
// 现分别指向 deepseek-v4-flash 的非思考/思考模式(lash 2026-07-31 发布)。
// 思考模式改 deepseek-v4-flash(传 thinking 参数)或 deepseek-v4-pro。
},
{
@@ -74,7 +74,7 @@ export const PROVIDER_PRESETS: readonly ProviderPreset[] = [
baseUrl: 'https://token.sensenova.cn/v1',
// 官方文档(platform.sensenova.cn/docs)核实:Token Plan API 仅 3 个模型 ——
// sensenova-6.7-flash-lite(多模态对话主力)/ sensenova-u1-fast(图像生成,不能对话)/ deepseek-v4-flash(纯文本对话)。
// 无 U1 / U1-Pro 对话模型(那是官网产品名,API 不提供);旧 SenseNova-Turbo 已退役。
// 无 U1 / ro 对话模型(那是官网产品名,API 不提供);旧 SenseNova-Turbo 已退役。
// 默认填对话主力 sensenova-6.7-flash-lite(文档所有工具接入示例的 Model ID)。
defaultModel: 'sensenova-6.7-flash-lite',
},