lxy
|
11f4978ec1
|
优化: aichat效率剩余(压缩后台化防阻塞/审计批量事务/只读缓存轮内去重/流式增量渲染/AiCommandOutput合批/双渲染合并) + 跨端加固(df-project路径保留大小写/tunnel文档更正supervisor重连/relay固定时间比较与帧上限/启动校验) + 销账
|
2026-08-09 21:35:59 +08:00 |
|
lxy
|
cad76ffdf2
|
修复: @任务联想源隔离 store.tasks 污染 + DirAuthDialog 拒绝二次确认 + 看板销账(AC弱模型机制 3/5 已落地核对)
|
2026-08-09 21:34:52 +08:00 |
|
lxy
|
6ba6daf188
|
优化: aichat 打磨收尾(切换信任保留 + save并发串行 + 后台授权守卫 + 分离窗口失效 + 气泡截图复制)
|
2026-08-08 21:08:25 +08:00 |
|
lxy
|
65c0f6b2b6
|
优化: aichat 体验收尾(useAiEvents拆分4子域 + AIC-FIX P1队列/mutex/缓存 + i18n残留抽取)
|
2026-08-08 20:38:33 +08:00 |
|
lxy
|
4092a8d5bb
|
优化: 前端体验批次(Knowledge持久化+流式缓存失效 + dfnodes节点注册 + delta 50ms合批 + MCP schema必填校验+bind_directory对齐)
|
2026-08-08 20:19:19 +08:00 |
|
lxy
|
d19784a414
|
新增: 跨端图片上传(file.1216.top URL 优先,失败回退 base64,协议对齐)
|
2026-08-08 14:19:26 +08:00 |
|
lxy
|
e68d283651
|
优化: UI/UX遗留批(审计/AI命令层/前端组件,会话前基线收尾)
- AuditLog +298(筛选/详情/i18n)+ audit 后端 record/mod
- AI 命令层:generate_image +81 / fetch_url / fetch_search / skills / tool_registry / tools/file / provider / conversation
- 前端组件:AiChat/TopBar/ConversationSidebar/GitChanges/ApprovalPopup/Dashboard/ProjectDetail 等 30+ + composables + i18n
- 诊断文档: aichat历史会话实证诊断-2026-08-04 + project_soft_delete 测试
|
2026-08-05 22:15:34 +08:00 |
|
lxy
|
c480627ba6
|
优化: 批A前端(timer所有权+会话族+审批conv-scoped+FilePreview+失败反馈)
A1-B1 timer所有权:新建 useTimerOwnership composable(每实例独立ref+onUnmounted清理)+ useToast _timer 下沉 + Ideas debounce 补清理(治跨实例串扰)
A1-B2 FilePreview:reqSeq 双计数器守卫(loadFile/loadDiff 最新seq才写,防乱序覆盖)+ mermaid securityLevel strict + filePath 比对(防跨文件SVG注入)
A1-B3 会话族:load_more 滚顶加载接线(switch透传has_more/earliest_seq+prepend去重+scrollTop恢复)+ switch失败保留视图+报错(仅对话不存在才create-new)+ new/delete失败反馈(withConvOp helper收敛)+ delete清ai_messages孤儿
A1-B5前端契约:isToolFailure 三处加 success===false 判定(useToolCard/ToolResultBody/ToolCard,git只读失败不再绿框)
A2-B10 审批conv-scoped:pendingApprovals 补conversationId + cleanup 按convId filter + 移除全局清(AiError不再误清其他conv)+ :676 dir auth filter方向修
usage打标前端:is_estimated 字段+事件透传+MessageList『估算』角标(详情面板说明)
A2-B9前端:clearChat try/catch 错误气泡
|
2026-08-05 22:10:50 +08:00 |
|
lxy
|
a031521776
|
优化: token分项显示(in/cache/out/reasoning)+ 详情面板 + base前置
token分项(各计费不同,不显 total):df-ai 解析 provider cache/reasoning(openai_compat prompt_cache_hit/miss/reasoning_tokens + anthropic cache_read/creation)+ TokenUsage 加字段(全构造点)+ AiMessage/AiCompleted/DB V39(ai_messages 加 cache_hit/miss/reasoning 列)+ message_repo 映射(持久化)+ 前端 MessageList 显 in·cache·out·reason(in=cache_miss 全价,reasoning 有才显)+ 点击 token 弹详情面板(完整 usage+缓存命中率+model)+ df-miniapp 同步
base前置(提升 prompt cache 命中率):chat.rs aug 拼 base 后(4处)+ knowledge_inject 知识拼 base 后(固定 base 前缀,cache 命中)
附修:replace_conversation 原 13 列 INSERT 丢消息级 token → 改 18 列
|
2026-08-03 01:22:30 +08:00 |
|
lxy
|
864c696b70
|
优化: token消息级持久化 + 技能注入修复 + TopBar减法/UI调
token持久化(方案A,治压缩/切会话后历史token不显):ChatMessage/AiMessageRecord 加 prompt_tokens/completion_tokens(serde + DB V38 迁移 + message_repo 映射);agentic push_assistant_message 设本轮 token + provider/title 构造默认 None;前端 AiMessage 加字段 + switchConversation reload 映射 tokenUsage(双轨:消息级新+会话级旧累计保留)
技能注入修复:read_skill_content_stripped 改 skills_cached 扫盘(防御 SKILLS None 致不注入)+ 细化诊断(缓存/path/fs 各步)
TopBar减法/UI:删铅笔新建(与侧栏+重复)/删垃圾桶clear-chat(危险,clear-context归档替代)/删系统就绪装饰占位;更多菜单popout CSS补全(修样式错乱);provider绿点有信息化(绿/红/灰基于AI请求成败)+垂直居中;goals面板补top:100%(修位置飘)+dot/check/remove CSS+goals/history item统一+history index边距;4面板互斥(点一个收其他)
MessageList token v-if 去 !streaming(修发新消息历史token消失)
|
2026-08-02 18:17:30 +08:00 |
|
lxy
|
f736f435bc
|
优化: 所有剩余UI/UX待办一批完成(持久化+AuditLog+解耦+total+原12大改+P2)
持久化(P1-c):新建 usePersistedRef composable,Tasks/AuditLog/ProjectDetail 等接入 localStorage
AuditLog(P1-d):后端 list_tool_executions 加 WHERE 筛选+返 {items,total,has_more},前端对接+长列折叠+筛选持久化
数据源解耦(P1-g):ProjectDetail projectTasks 按 project_id 独立加载 + ChatInput @项目联想独立加载(不读 store.tasks 当前页)
GitChanges(12a):后端 get_module_commits 加 git rev-list --count 返 total,前端显真实总数
原12大改:Dashboard 统计卡压底行(1)/Projects 列表卡片视图(2)/project_event 埋点排序(3)/TaskDetail 重设计(4)/IdeaDetail 重设计(5)/KnowledgeDetail 重设计(6)/界面持久化+侧栏Ctrl+B+审批数字键(7)/ProjectDetail 三栏改两栏(10)
P2打磨:文件浏览器(FileTree去重/FilePreview行号.md Diff/selectedFilePath归位)/settings反馈(假保存/端口校验)/AI会话(try-catch/scrollIntoView)/后端计数(move_queue事件/timeline total/workflow分页/import_batch分块)/杂项(TopBar/ConfirmDialog键盘/CIStatus i18n/ToolResultBody/ModuleNode/ApprovalDialog全选)
|
2026-08-02 13:11:06 +08:00 |
|
lxy
|
caaabf0c15
|
优化: 前端批(审批体系一致 + GitChanges UI + token/控件统一 + 死代码)
审批体系一致:ApprovalPopup 浮窗加挂起时长提示(H1)+session 按钮+path deny 二次确认(M4/M5);ToolCard/useToolApproval 加 session+onDeny 确认(对齐 DirAuthDialog 四按钮)+ToolCardList decision 类型加 session;ApprovalDialog 失败显 toast(治 store 吞错 M31);ApprovalOverlay dismiss 改响应式(L26)
GitChanges UI(问题12 前端 12b-12h):showCommitFileDiff 精确匹配(12b)+去重 git log(12c)+详情滑出不挤压(12d)+双行提交行(12f)+搜索过滤(12g)+历史 Tab 显分支(12h)+diff 侧边栏内更宽可折叠面板(12e:FilePreview 不支持任意提交 diff,折中)
token+控件:global.css 定义 --df-primary(治幽灵变量 M26)+settings.css 加 .setting-number/.setting-input/.setting-textarea+4 Section 套用(问题8)
死代码:删 PlanProgress.vue(零引用)+PlanLayerInfo 类型+i18n 孤儿 key(L1)
|
2026-08-02 12:42:52 +08:00 |
|
lxy
|
9e85cadb3f
|
优化: P1-a 长内容折叠(AI文本气泡+多冲突+错误堆栈)
- MessageList: assistant文本气泡>1500字符折叠(max-height 400px+渐变遮罩+展开按钮),流式中不折叠避免delta重排抖动(M1)
- ConflictResolver: 多冲突(>=3)默认折叠,点击展开diff(M6)
- HelpRequiredCard: context堆栈max-height 200px滚动+等宽字体(M7)
|
2026-08-02 12:24:20 +08:00 |
|
lxy
|
7f0edced01
|
修复: UX扩展审查P0批(后端git/路径确定性bug + 前端UI + 编译阻断)
后端(src-tauri):
- project.rs: 4处空if目录校验补return Err(import/relocate/scan_directory/scan_project_with_ai),目录不存在不再静默放行
- ai/tools/git.rs: exec_git改返(String,bool)治git_commit·git_branch create/switch假成功 + git_merge补失败分支 + 加CREATE_NO_WINDOW
- module.rs: run_git_cmd加CREATE_NO_WINDOW,治Windows cmd黑窗闪烁(原问题9)
前端:
- DependencyGraph.vue: 环检测高亮注入renderGraph,原被fromJSON重建抹除致功能失效
- FileExplorer.vue: 工程下拉closeDropdown加closest判定,原打不开
附(预存编译阻断顺带修):
- df-nodes ai_node_helpers.rs: extract_first_json_object临时值借用悬垂E0716
- MessageList.vue: 删isLastUser死代码(vue-tsc TS6133)
审查产出: docs/05-代码审查/UIUX扩展审查-2026-08-02.md(80条发现,8高grep核验全属实)+ docs/todo.md批次段
|
2026-08-02 12:19:40 +08:00 |
|
lxy
|
f1773dde4f
|
优化: 前端走查 P2+UX(status union + ApprovalPopup hack消除/拖动JS API/Esc)
- status union: AiMessage 加 status 字面量联合,删 AiChat/MessageList AiMessageWithStatus 重复+cast
- ApprovalPopup: 删 _placeholder hack(toolDisplayName 提纯函数) + dispatchApprovalIPC 共享分派消除三套重复 + always 按钮语义对齐 + closeWithFallback 兜底 + 拖动 JS API startDragging(避子元素覆盖) + Esc 快捷键
|
2026-08-02 10:43:30 +08:00 |
|
lxy
|
f719546b12
|
优化: 前端走查 P1(MessageList/MessageItem 两套渲染收敛)
MessageItem 删 AI/system/error 死分支(301→175 行,仅 user 角色)+ 删悬空 regenerate/retry emits + 清孤立 props/isLastAi;MessageList 挂载清理。消除两套 AI 消息渲染并存(死代码+职责混乱)。
|
2026-08-02 03:11:44 +08:00 |
|
lxy
|
e4f7b432aa
|
新增: 多模态图片 URL 转 image part + 修复 / 技能联想浮层定位
前端发送前扫图片扩展 URL 转 ContentPart image(模型原生视觉,非工具下载);
SkillMention 移入 .ai-input-wrap relative 内(治 / 浮层定位错位不可见)。
|
2026-08-02 02:21:32 +08:00 |
|
lxy
|
3afaff9efe
|
新增: obscura 安装引导(prompt AI 看 hint 帮装 + 前端工具卡片 AI 帮装按钮)
|
2026-08-01 18:07:56 +08:00 |
|
lxy
|
bd9031d35d
|
重构: 巨函数拆分 + 清理历史标记注释 + custom_prompt/停止按钮/tunnel 改进
|
2026-07-31 21:36:12 +08:00 |
|
lxy
|
365af554da
|
修复: max_iterations 不收敛卡死 + stopBtnState 残留红
|
2026-07-21 00:31:59 +08:00 |
|
lxy
|
e9e3578d26
|
修复: DeepSeek 400 全量扫描 + 队列 per-conv 隔离
- openai_compat: 扫描所有 assistant 消息剥离 orphan tool_calls(原仅查末条)
- queue 加 conversationId 字段,按会话精准 drain
- regenerate/editMessage 只清本会话排队消息
- newConversation 保留旧会话排队消息
- AiError 只清出错会话的队列项
|
2026-07-20 00:19:50 +08:00 |
|
lxy
|
0dfaeb0f5b
|
优化: AI Chat 体验全面升级(图标/审批/目标提取/窗口管理)
- AI 入口图标:灯泡→星花 sparkles+发光,与灵感入口区分
- 目标提取根本性改造:用户消息规则→工具调用推理(infer_goal_from_tool_calls)
- Vec<String>→Vec<GoalEntry>(text+status),active→completed 状态流转
- 多条/轮提取,system_prompt 仅注入 active 目标
- 代码拆分到 helpers.rs(解决 brace 嵌套致 pub(crate) 不可见)
- 审批修复:patch_file 全档位自动放行,批量审批防抖,乐观更新竞态保护
- 审批通知浮层:全局右上角 ApprovalOverlay,窗口遮挡时可见
- 设置导入导出移除:价值低占用空间,跨设备同步建议复制 SQLite
- 分离窗口默认置顶+置顶状态持久化(刷新后保持)
- header 菜单聚合:清空/压缩上下文收入 ... popout
- LLM 文字重叠防御:delta 重复检测+丢弃
- 置顶图标:星→大头针 pushpin
- 文档/注释更新:过期 Vec<String>/chat.rs 提取描述修正
|
2026-07-03 13:07:03 +08:00 |
|
lxy
|
3d8b755229
|
重构: 前端DRY收口+后端测试类型对齐
- 新增 useToast composable: 消除 AiChat/Settings/Projects 4处 toast 重复
统一默认3000ms(Projects原4000ms为操作类提示保留参数覆盖)
- 新增 utils/json.ts parseJsonArray: 消除 parseStack/parseTags/ModuleNode
3处JSON字符串数组解析重复
- 新增 utils/html.ts escapeHtml: 消除 useMarkdown/FilePreview 2处重复
- ProjectDetail score-bar 内联三元改用 scoreTier(消除最后一处阈值硬编码)
- ConversationSidebar 删除 formatTime 透传包装(直接用 formatRelative)
- 清理死代码: parseTs/stringifyError/ErrorSink/_Unused 改私有或删除
wrapNakedDiff 改私有(无外部 import)
- ModuleNode shortPath 改名 truncatedPath(与 useToolCard.shortPath 语义不同)
|
2026-07-03 00:18:21 +08:00 |
|
lxy
|
249b3b9ea8
|
重构: 跨模块样式DRY收口+审批列表增强+灵感模块优化
- 全局样式收口: page-header/btn/modal/filter-bar/back-link/empty-state
等通用类从12个视图的scoped重复定义提取到global.css/components.css
- 审批列表增强: 筛选栏(状态/风险/工具搜索)+行展开查看完整参数结果
+审批耗时显示+刷新spinner+硬编码颜色全部改用CSS变量
- 灵感模块: scoreTier统一评分阈值+score-bar/assessment-badge提取全局
+statusLabelKey消除重复+i18n状态文案对齐+eval-report--muted统一空态
- Dashboard: df-panel/df-link提取全局(修scoped不渗透)+统计卡可点击跳转
+活跃项目面板只显示active状态+灵感列表按分数排序+刷新spinner
- 修复: intent.rs tool_type类型对齐(newtype)+ToolCardList补ai-btn定义
+SkillMention/ImageInput样式不渗透修复(提取全局)
|
2026-07-02 23:24:11 +08:00 |
|
lxy
|
8fa3a93eec
|
修复: 用户消息气泡头像位置(MessageItem提取后scoped样式缺失)
- MessageItem.vue 提取时未带 scoped CSS,MessageList 的 scoped 样式不穿透子组件
- 补齐用户消息 flex-direction:row-reverse(头像靠右)+ 完整 scoped 样式
|
2026-07-02 13:22:32 +08:00 |
|
lxy
|
3f22fd3673
|
优化: i18n硬编码清扫(8文件20+处中文字符串替为i18n)
- ToolCard: 已等待 → aiTool.waitTime
- ErrorBoundary: 堆栈详情 → error.stackDetails
- TopBar: 10处硬编码(tooltip+section标签+单位) → aiChat.* keys
- FileExplorer: 4处工程操作title → fileExplorer.*
- Tasks: 快捷菜单4处 → tasks.*
- EnrichmentPanel: 取消关联 → aiChat.enrichmentDismiss
- PlanProgress: 复用已有 aiChat.conflictsPending
- WorkflowDagDisplay: 删除中文fallback(已有i18n key)
- vue-tsc + vite build 通过
|
2026-07-02 12:19:57 +08:00 |
|
lxy
|
c3b47b5771
|
修复: 前端UI审查问题(项目状态badge+confirm替换+加载态+CSS修正)
- ProjectDetail: 加载态/不存在态 + stage badge CSS 类名修正(7个实际状态)
- Tasks: confirm()替换为useConfirm + 死代码清理 + priority CSS去重
- Knowledge: 列表加载态
- Projects: CSS变量名拼写修正(--df-mono→--df-font-mono)
- EmptyState: opacity从容器移到图标(对比度修复)
- Ideas: 5处内联style替换为modal-field class
- ProjectDetail: 删除注释stages死代码
|
2026-07-02 12:12:29 +08:00 |
|
lxy
|
acf0ed091d
|
重构: 前端God文件拆分(StreamRenderer+EmptyState+MentionPopover+EnrichmentPanel)
- useStreamRenderer.ts: 流式Markdown块级渲染提取为composable(220行)
- EmptyState.vue: 空状态独立组件(无provider引导+示例问题)
- MentionPopover.vue: @实体联想浮层独立组件
- EnrichmentPanel.vue: @项目enrichment预览面板独立组件
- MessageList.vue: 1386→1148行, ChatInput.vue: 1155→1007行
- AiChat进度条: completedTools计数器(AiToolCallCompleted+1,AiAgentRound重置)
- i18n: 进度条文案加已完成工具数(中英文)
|
2026-07-02 10:11:15 +08:00 |
|
lxy
|
d5b0459a8a
|
新增: DockerNode+CI状态读取+模板CRUD+CIStatus面板
- DockerNode: 环境检测(docker --version)+授权+容器内执行(12个测试)
- ci_status.rs: Gitea commit status API 读取(7个测试,失败返回空不阻塞)
- CIStatus.vue: CI检查面板(通过/失败/pending 汇总+可点击跳转)
- 模板CRUD IPC: list/save/delete templates(内置只读+自定义KV持久化)
- TemplateInfo 结构体(IPC传输用)
- 零编译警告,vue-tsc+vite build 通过
|
2026-07-02 01:02:39 +08:00 |
|
lxy
|
1d580dccc3
|
新增: 仲裁合并(冲突检测+ConflictResolver+reviewer仲裁基础)
- Coordinator.merge: 跳过失败SubTask+同文件冲突检测+extract_written_files
- ConflictResolver.vue: 双栏diff展示+接受A/接受B/合并/手动按钮
- i18n: 冲突相关翻译键(中英文)
- 7个merge测试全绿(含4个新增冲突检测)
|
2026-07-01 22:32:27 +08:00 |
|
lxy
|
3c9077b043
|
新增: 并行调度+Token预算池+事件协议+前端类型+编译警告清理
- Coordinator.dispatch_with_budget: JoinSet层内并行+层间串行+预算超限降级串行
- TokenBudgetPool: AtomicU64 CAS无锁并发安全,0=不限制
- 4个新事件: AiPlanCreated/AiSubTaskStatusChanged/AiMergeCompleted/AiConflictResolved
- 前端类型: PlanRecord/SubTaskRecord/ConflictRecord/PlanLayerInfo/ConflictInfo
- PlanProgress.vue: 接入真实状态+persona徽章+冲突徽章+i18n
- 编译警告全部清零(audit子模块allow+事件allow+record allow)
- Coordinator测试27个全绿(含4个Token预算+4个并行调度)
|
2026-07-01 22:25:18 +08:00 |
|
lxy
|
91d80841ea
|
新增: 多 ReAct 执行骨架(PlanExecutor 运行时门控+DAG 进度组件) - PLAN_EXECUTION_ENABLED 改为 AtomicBool 运行时开关 - 新增 set/get_plan_execution IPC 前后端通路 - 新增 PlanProgress.vue 层状执行进度展示组件 - feature flag 默认关, 翻 true 后 process_tool_calls 可并行执行同层工具
|
2026-07-01 12:59:37 +08:00 |
|
lxy
|
3abdfb489f
|
重构: ChatInput 拆分(提取 SkillMention+ImageInput, 1183->1155行)
- 提取 SkillMention.vue(/ 技能联想浮层+已选 chip)
- 提取 ImageInput.vue(待发送图片预览+移除)
- ChatInput 模板内联技能浮层替换为子组件
|
2026-07-01 12:27:58 +08:00 |
|
lxy
|
2c2b2d710e
|
重构: MessageList 拆分(提取 MessageItem+useMessageScroll, 1552->1386行)
- 提取 useMessageScroll.ts(滚动跟随/锁存/回底按钮)
- 提取 MessageItem.vue(按 role 渲染单条消息)
- 清理 MessageList.vue 中已移至子组件/ composable 的死代码
|
2026-07-01 12:21:40 +08:00 |
|
lxy
|
9839935782
|
新增: AI 上下文信息面板(系统提示/增强上下文可见)
|
2026-06-28 14:13:20 +08:00 |
|
lxy
|
ad1821bc14
|
修复: 审批不超时+重启恢复 + 其他小改
- APPROVAL_TIMEOUT_MS=Infinity(已决策:审批不做超时)
- V33 迁移: ai_conversations 加 pending_approvals 列
- save_conversation 持久化 pending_approvals
- ai_conversation_switch 从 DB 恢复 pending_approvals
- switchConversation 加 try/catch(对话不存在→建新)
- @项目 关联添加取消按钮(×)
- TopBar 底部无标题时图标右对齐
- TaskDetail.vue 删除重复 case
|
2026-06-28 13:09:55 +08:00 |
|
lxy
|
8723075360
|
重构: TopBar 布局 — header 中间区 + 底部工具区(标题/目标/历史/摘要)
|
2026-06-28 03:31:41 +08:00 |
|
lxy
|
53e1c1da77
|
重构: 对话透明化 L1 + ③.2 审批拆分 + ⑥.4 @展开 + DAG 展示
修复 tool_result 压缩零效果(BUG-260628-01):单行/少行/JSON 大字符
串字段逃逸压缩的问题,基于实测数据(53/94 次迭代零节省)调参,
增加字符级保底截断,压缩有效率从 8% 提升至 ~85%+
|
2026-06-28 03:31:40 +08:00 |
|
lxy
|
4c54288a8d
|
重构: 移除 AI 消息重新生成入口及配套调整
- MessageList: 移除末条 AI 消息重新生成操作栏入口
- package.json: build:dev 改 tauri build --debug --no-bundle(只编译不打包)
- 文档: workspace_root 弱化决策 + BUG-260625-01/02 工具修复记录
|
2026-06-25 01:03:52 +08:00 |
|
lxy
|
24c3fa08f1
|
新增: 路径授权三档化 once/session/always
Phase B 弹窗 once/always → once/session/always 三档(本次单次执行后清/当前会话切会话清/始终落KV)。修 once 原写 session 致本次实为本会话名实不符。AllowedDirs 加 once 层 + ai_authorize_dir decision 改 match 四分支 + 执行后 clear_once。
|
2026-06-25 00:23:07 +08:00 |
|
lxy
|
ebba9735ed
|
修复: BUG-260624-01残留(scrollToFirstPending return过早+listener props过滤)
|
2026-06-24 17:38:40 +08:00 |
|
lxy
|
1ffa023f3d
|
修复: 消息重叠与审批卡死
|
2026-06-24 01:44:46 +08:00 |
|
lxy
|
cdb227f999
|
优化: L2统一状态机完整(ConvState持久化+事件暴露+前端status联合)
1a PerConvState.conv_state持久化(入口/reset/drop写收敛,CONV_STATE_ENABLED门控)
1b AiChatEvent加AiConvStateChanged变体,guard持app_handle在迁移点emit
1c 前端convStates真相源+停止按钮三态(status union)+MaxRoundsCard读conv_state
双轨过渡:enum视图与generating bool并行,off降级可回退
|
2026-06-22 00:34:43 +08:00 |
|
lxy
|
d2cada97cd
|
重构: aichat agent 能力系统化(L1元能力+L2/L3后端+list去重)
L1 agent 元能力层(治痛①死循环零交付):
- env_profile 环境姿势注入 + shell 默认 PowerShell(防引号地狱)
- 断路器:同类工具失败≥3熔断 + guard.reset
- detect_environment 主动探测工具(python/node/shell)
- 求助协议 AiHelpRequired 事件 + 前端求助卡
L2 统一状态机后端(治痛②,前端批2):
- ConvState enum 5态 + 合法转换守卫(conv_state.rs)
- GeneratingGuard 接入视图层(guard.rs)
L3 事件总线后端骨架(治痛③④⑤,接入批2):
- EventBus pub-sub + AiBusEvent 8变体(event_bus.rs)
list 工具调用重复治理第一步:
- build_system_prompt_with_excluded 去重被@实体 + 清单注明语
|
2026-06-22 00:04:14 +08:00 |
|
lxy
|
bd6a41fe6e
|
新增: 批次工作落地(推进链/评估闭环/事件总线/并发/加固) + 技术债清理 + 文档整理
后端:
- 工作流推进链(D-03):advance_task/状态机/闸门走 df-nodes Node trait,conditions 条件引擎扩展
- 想法评估闭环:启发式评分+对抗评估,df-ideas/scoring + df-storage/idea_eval_repo + idea 前端打通
- 全局事件数据总线:df-ai/context+context_helpers+augmentation 跨模块解耦
- AI planner/plan_hint/intent:aichat B 路线并行多轮基础
- patch_file 加固(TD-03/04):读改写整体锁防 lost update,expected_hash 合约闭环
- 压缩超时兜底(F-15 卡死根治)
- F-09 多会话并发:LlmConcurrency per-conv + streamingGuard 前端守护 + verify 脚本
- 知识注入 DRY/skills/audit 扩展
清理:
- aichat 技术债(误报 allow/死导入/过时注释 30 项)
- URGENT.md 删除(11 项加急全解决/迁 todo)
- 文档整理(todo/待决策/待审查/ARCHITECTURE/INDEX + 总线/技术债审查新文档)
|
2026-06-21 20:51:26 +08:00 |
|
lxy
|
126bee5b24
|
优化: F-09生成中新建对话不中断(决策e)
去中断弹窗+去generatingConvs.clear(对齐switchConversation真并发)+死key清理;vue-tsc✅
|
2026-06-20 15:54:51 +08:00 |
|
lxy
|
4e3a11f925
|
修复: 主菜单点不开 + 对话列表样式/菜单 + 标题卡死/弹回/updated_at(God 拆分遗漏 + 多 bug 合并)
主菜单点不开(7f1242c):c38cefe ErrorBoundary 嵌 transition 内部,slot 透传非元素根 →
mode="out-in" 过渡卡死 → 点主菜单 URL 变页面不切换。修:ErrorBoundary 移 transition 外 +
根固定 div.error-boundary-root + display:contents
对话列表样式/菜单(God 拆分遗漏 4f8f1cf + 脉冲点 5c395f4 + 审查 agent 菜单):
- God 拆分样式没移子组件,AiChat scoped 不匹配子元素 → 列表/输入框样式丢。修:样式移
ConversationSidebar/ChatInput scoped + 复用抽 components.css
- 脉冲点 vertical-align/margin-left 冲突。修:移除用 flex gap 统一
- 4 操作按钮窄宽撑高 → 收进"..."下拉菜单(置顶/归档/删除)+ 移除导出(后端 IPC 保留)
标题 3 重根因(8192cd2 合并):
- 卡死:ensure :40 title.is_some() return,"新对话"占位永远跳过;switch need_title_regen
仅 None 不触发。修:排除"新对话"占位 + need_title_regen 含"新对话"
- 弹回::121 无条件落 LLM 结果,clean_title 空兜底"新对话"覆盖 extract。修:非空非"新对话"才落
- updated_at 跳变:update_field 强制 SET updated_at=now,标题生成致时间分组跳。修:set_title 不动 updated_at
CR-20/21 审查登记(待审查.md)
cargo check + vue-tsc + vite build EXIT 0
|
2026-06-20 01:29:20 +08:00 |
|
lxy
|
4f8f1cf794
|
重构: AiChat 样式同步到子组件 scoped + 复用抽取(God 拆分遗漏修复)
根因:AiChat God 拆分(抽 ConversationSidebar/ChatInput/MessageList)时样式没移子组件,
留 AiChat <style scoped>。Vue scoped 不匹配子组件内部元素(子元素无父 data-v)→
对话列表/输入框样式丢失 → 布局塌陷(主导航被覆盖点击无反应 + 样式乱)。
修复(纯样式移动,不改选择器/属性/值):
- AiChat <style scoped> 886→151 行(瘦身 83%)
- 侧栏 .ai-conv-* 47 选择器 → ConversationSidebar <style scoped>(新建)
- 输入框 .ai-input-*/.ai-skill-*/.ai-mention-*/.ai-send-btn 40 → ChatInput <style scoped>(新建)
- 复用 .ai-btn-icon* 6 处 → components.css(全局,TopBar+ConversationSidebar 共用)
- 容器 .ai-panel/.ai-chat-area/.ai-queue-*/.ai-toast* 32 → AiChat 保留 scoped
- 清理 TopBar 重复块(AiChat 漏删死代码,零视觉变更)+ 删 TEMP DEBUG 参考线
自验: vite build ✓ + vue-tsc EXIT 0 + AiChat scoped CLEAN(0 子组件类)
|
2026-06-20 00:28:14 +08:00 |
|
lxy
|
7d5402951b
|
新增: 多会话并发前端 UI 阶段3/4(F-09 收尾)
后端 per-conv 并发已就绪(d899c58 + CR-03~07),前端呈现层收尾:
阶段3 多会话生成态:
- stores/ai.ts generatingConvId 单值 → generatingConvs:Set + add/remove/isGenerating helper
- useAiEvents 5 处迁移(Completed/Error/路由标记改 per-conv Set 操作,
AiError 精确清出错会话非全局清空,修原 = null 误清其他会话)
- ConversationSidebar 多会话并行生成脉冲指示(isGenerating 各会话独立)
阶段4 独立窗口多会话:
- useAiWindow label ai-detached → ai-detached-{convId}(per-conv 独立窗口)
- localStorage 单 key → per-conv key(防多会话串扰,读路径兼容旧 key 回退)
vue-tsc EXIT 0 + generatingConvId 零代码残留(仅注释)
|
2026-06-19 20:15:37 +08:00 |
|
lxy
|
8da6bdcec2
|
新增: AI 工具意图识别层 + 文件访问权限模型 Phase B+C
会话意图识别层(intent.rs / df-ai crate):
- Intent 枚举 11 态 + recognize 规则识别(关键词+权重+优先级)+ tool_subset_for 工具子集映射
- 模态接口预留 None,独立模块待接入 loop,36 单测
文件访问权限模型 Phase B+C(F-260619-03):
- Phase B 会话临时白名单 + 循环挂起 + DirAuthDialog 弹窗(仅本次/未来都允许/拒绝)
- Phase C 系统目录黑名单(Win System32/Program Files;Unix /etc /usr...)分段匹配 + 写操作约束
- 已审 CR-260619-09 ✅ PASS
|
2026-06-19 18:58:48 +08:00 |
|