lxy
|
ffb202e2e9
|
文档: UX审查P1-a/P1-b销账 + P1-c~g剩余批次 + 延伸登记(ProjectDetail/ChatInput同源store.tasks污染)
|
2026-08-02 12:30:17 +08:00 |
|
lxy
|
d1321af880
|
修复: P1-b Dashboard统计源解耦(治翻页/筛选后统计数字错乱 H6/H7)
- 统计走后端 count_tasks 独立通道,不再 filter(state.tasks) 当前页数据
- state 加 activeTaskCount/projectTaskCounts 缓存,loadStats action 并发 count 填充 + df-data-changed task 分支联动刷新
- Dashboard loadAll 删 loadTasks 改 loadStats(不再消费 state.tasks 全量)
- ActiveProjectsPanel getProjectTaskCount 改读 store.projectTaskCounts
- 后端零改(复用已注册 count_tasks IPC + count_by_query)
|
2026-08-02 12:29:44 +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
|
a28c00b1e5
|
文档: docs 整理收尾(INDEX 走查条目 + todo 待办梳理 + 待审查登记 + 修复摘要)
- INDEX: 加 claude 走查 5 + 本次修复摘要条目(05-代码审查)
- todo: P2/P3/专项/技能注入 待办登记(B-260801-01 实证不存在关闭)
- 待审查: CR-2026-08-01 13 agent 改动登记
- 修复摘要: 5 根因 + 13 agent + 提交链 + 专项 + 推翻假设 + 教训
|
2026-08-02 10:51:57 +08:00 |
|
lxy
|
b7111fcabc
|
整理: docs 走查报告归档(walkthrough-2026-08 合并到 05-代码审查,删重复/空目录)
- 我的走查 5 文件(summary/nodes/ai_storage/ideas_frontend/infra)移 05-代码审查/(claude- 前缀区分 DevFlow AI)
- DevFlow AI 重复 3(00/04/05,与 05-代码审查/00-05 同主题)删
- walkthrough-2026-08/ + architecture/(空)删
|
2026-08-02 10:49:46 +08:00 |
|
lxy
|
8eb689af37
|
文档: 全库走查报告(docs/05-代码审查 00-05)+ 规范更新
|
2026-08-02 10:44:10 +08:00 |
|
lxy
|
3f2cf5fa3a
|
重构: agentic 架构(run_agentic_loop 抽 finish_round_exit + router 调用点 + provider_pool 亲和 enabled)
- run_agentic_loop: 抽 finish_round_exit + emit_ai_completed_once(6 退出点收敛)
- compress/title/knowledge_inject/project: router estimated_context+tier 调用点对齐
- provider_pool: 亲和加 model.enabled 过滤
|
2026-08-02 10:44:09 +08:00 |
|
lxy
|
ea309c607b
|
修复+重构: 全库走查真bug+架构+P1/P2 后端 crate
- df-nodes: schema required 对齐 + docker POSIX 注入防御 + HumanNode timeout 1800 + parse_review_json(verdict规范/score clamp/正则兜底)
- df-mcp: update 实体校验(防跨实体 B-260801-01)
- df-storage: keyring 迁移失败达阈值清除明文
- df-ai: router estimated_context+tier tiebreak+DataReadOnly 兜底 + sanitize step4 显式不制造 orphan
- df-ideas: adversarial tier:None 对齐
|
2026-08-02 10:44:09 +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
|
ef77120912
|
文档: 全库走查报告(walkthrough-2026-08,summary + 4 分方向)
4 workflow/35 维度走查产出:P0(2 已修)+ P1(4 修 + 2 专项登记)+ P2/P3 清单 +
推翻假设(AiChat 798 非 God / human_node 测试 76% 无债)。每发现 file:line 源码佐证。
|
2026-08-02 03:19:25 +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
|
fc249adf17
|
修复: 全库走查 P0+P1(df-mcp 数据丢失/evaluate 拆 + df-execute probe_pwsh 死缓存/超时/单源 + ai_self_review 注入隔离)
- df-mcp P0: update_idea/project/task 缺省回退 existing(治部分更新清空 title 丢数据)+ P1: evaluate_idea 拆只读(Low)+score_idea(Medium 写),read-only 不再改库
- df-execute P0: probe_pwsh 死缓存(两 OnceLock 合并 PWSH_CACHE 单源,治 Windows 永走 PS5)+ P1: probe_pwsh 3s 超时防挂起 + detect_shell 复用 shell.rs 单源(探测与执行对齐)
- df-nodes P1: ai_self_review prompt 注入隔离(truncate + XML 标签 <task_output> 数据/指令隔离 + system 声明)
- generate_image: SSRF 集成测试 + b64 OOM 估算纯函数测试(走查测试增强)
|
2026-08-02 03:11:44 +08:00 |
|
lxy
|
dffc4e4851
|
修复: 走查发现(空 id 跨轮全局唯一 + generate_image SSRF/OOM + 技能日志 + fallback 测试)
- 空 tool_call id fallback 改全局 AtomicU64 计数器(跨轮跨 assistant 唯一,治空气泡+
L1 误熔断+三元组错位,实证 af2fab4e);fallback 测试硬编码改 starts_with(解耦计数器)
- generate_image provider POST 补 SSRF 防护(复用 http.rs validate_url/resolve_and_check_host,
治 base_url 用户可配打内网)+ b64_json 解码前估算长度防 OOM
- SkillResolver 加 tracing 日志(定位技能发送后未注入:name 匹配/read 失败)
|
2026-08-02 02:42:02 +08:00 |
|
lxy
|
953a3fbba1
|
优化: prompt 策略(obscura 失败重试 + 精确不猜 + 工具职责 + get_app_config 引导)
obscura render 失败 2 次换方案 + 成功即收手;精确提取链接不臆造 URL;fetch_url/download_file
/http_request 职责区分;get_app_config 引导(禁 run_command 查配置)。
|
2026-08-02 02:21:33 +08:00 |
|
lxy
|
50c232643d
|
新增: provider 支持(11 厂商预设 + modalities 修正 + defaultModel 更新 + 噪音过滤 + UI 提示)
providerPresets 扩展 6 厂商(Qwen/Kimi/ERNIE/Spark/Doubao/Gemini)+ SenseNova base_url 修正;
modalities 预设表补 SenseNova flash-lite vision;defaultModel 过时更新;sensenova-u1 图像生成
噪音过滤;ProviderPanel defaultModel UI 提示。
|
2026-08-02 02:21:33 +08:00 |
|
lxy
|
b999f79fdf
|
新增: AI 工具(download_file + http output_file + grep 窗口 + fetch_search 搜索 + get_app_config + generate_image)
download_file 跨平台 URL 到文件流式下载;http_request output_file 落盘 + 截断可配;
grep context_chars 大单行窗口;fetch_search DuckDuckGo 免 key 搜索;get_app_config
只读返当前配置(治 AI 查配置绕 PowerShell);generate_image SenseNova 图像生成。
|
2026-08-02 02:21:32 +08:00 |
|
lxy
|
e4f7b432aa
|
新增: 多模态图片 URL 转 image part + 修复 / 技能联想浮层定位
前端发送前扫图片扩展 URL 转 ContentPart image(模型原生视觉,非工具下载);
SkillMention 移入 .ai-input-wrap relative 内(治 / 浮层定位错位不可见)。
|
2026-08-02 02:21:32 +08:00 |
|
lxy
|
023377ab24
|
修复: read_file 可靠性 + obscura 渲染(压缩豁免 + UTF-16 闭环 + stdout 救回)
read_file 压缩豁免(AI 定向读代码不折叠)+ UTF-16 BOM 闭环(read_file/read_symbol/patch_file);
obscura 非零退出码救回 stdout + fetch markdown 空壳 fallback scrape --eval + 探测日志。
|
2026-08-02 02:21:31 +08:00 |
|
lxy
|
57d6a2d066
|
修复: AI 对话/工具可靠性(sanitize 三元组 + G2 签名重复 + handshake 不杀 loop + 空 tool_call id 兜底)
治 5 个对话停止/工具失败根因:sanitize 三元组按 id 配对治 400;G2 探索熔断从结果空
改签名重复判定(治误停正常探索);handshake 删越权强杀活 loop(generating 归 guard 单源);
空 tool_call id 兜底 gen_<index>(治 SenseNova 工具结果路由错位)。
|
2026-08-02 02:21:30 +08:00 |
|
lxy
|
c76e77bd3c
|
修复: 审批挂起关不了(None分支补emit+恢复对账) + obscura检测区分未装/失败(防误弹)
|
2026-08-01 22:26:23 +08:00 |
|
lxy
|
31aba79512
|
修复: fetch_url obscura spawn 加 CREATE_NO_WINDOW(治 CMD 窗口闪烁)
|
2026-08-01 20:48:50 +08:00 |
|
lxy
|
3afaff9efe
|
新增: obscura 安装引导(prompt AI 看 hint 帮装 + 前端工具卡片 AI 帮装按钮)
|
2026-08-01 18:07:56 +08:00 |
|
lxy
|
d664bdc309
|
优化: run_command 实时流式 + 审批浮窗修复 + 文档探索闭环(fetch_url+obscura引导+model_fetch兼容+prompt策略+厂商预设)
|
2026-08-01 17:58:47 +08:00 |
|
lxy
|
0e0c6862ba
|
优化: Provider 配置体验(测试读表单值 + 保存反馈 + 报错友好 + 厂商预设,部分完成)
|
2026-08-01 16:35:49 +08:00 |
|
lxy
|
1a5d543fa1
|
修复: 消息三元组完整性(sanitize 补头自愈 orphan tool_result,治 AI 看不到工具结果致静默停)
|
2026-08-01 16:34:33 +08:00 |
|
lxy
|
2b08e32c26
|
修复: 审批浮窗 3 bug(打开面板权限/审批后空转自关/关闭顺序)
|
2026-08-01 16:05:44 +08:00 |
|
lxy
|
7193901bc4
|
修复: IPC update_project/task 实体校验(false→Err 治假成功)+ status 白名单确认(B-260801-01)
|
2026-08-01 16:04:31 +08:00 |
|
lxy
|
8c0ff80cd4
|
新增: aichat Plan-driven Phase1(LLM 出 Plan + 开关默认关 + 三重兜底 + emit AiPlanCreated)
|
2026-08-01 16:01:11 +08:00 |
|
lxy
|
a69057a1ef
|
新增: aichat Plan-driven 设计文档(对话探讨成果固化)
|
2026-08-01 15:54:53 +08:00 |
|
lxy
|
dbd226b403
|
修复: 审批浮窗 reason 字段缺失(push 补 reason)+ 空态文案
|
2026-08-01 15:54:32 +08:00 |
|
lxy
|
1ddf48d40f
|
新增: 审批系统级浮窗(WebviewWindow 自定义样式 + 内容/直接操作 + 点击回审批)
|
2026-08-01 15:30:03 +08:00 |
|
lxy
|
7d33442199
|
修复: extract_key_info 截断标记统一 + 断路器 key 滑动窗口 + 桌面跨端 4 路由 + dead_code 预留标 allow
|
2026-08-01 15:17:24 +08:00 |
|
lxy
|
db99e7107c
|
修复: OpenAI SSE error 识别 + 条件引擎 warn + MidStream stop_flag 优先 + 双窗口 listener 时序加固
|
2026-08-01 14:53:03 +08:00 |
|
lxy
|
ba578dfe6c
|
修复: 灵感 CRUD 工具补齐 + handler 透传 affected(B-260801-01)
|
2026-08-01 14:43:27 +08:00 |
|
lxy
|
6b68aa63e8
|
重构: tool_registry 剩余 21 工具迁声明式(task_graph/git/http/workflow/idea/trash)
|
2026-08-01 13:30:05 +08:00 |
|
lxy
|
c27fd75d20
|
重构: tool_registry file 工具迁声明式(13 工具→tools/file.rs,tool_registry 减 1091 行)
|
2026-08-01 13:20:36 +08:00 |
|
lxy
|
b68dc363d4
|
重构: tool_registry task 工具迁声明式(6 工具→tools/task.rs)
|
2026-08-01 13:10:16 +08:00 |
|
lxy
|
1920bcbd38
|
重构: tool_registry 项目工具迁声明式(7 工具→tools/project.rs)
|
2026-08-01 13:05:33 +08:00 |
|
lxy
|
c002f0b352
|
重构: tool_registry 声明式注册基础设施(declare_tool! 宏 + list_projects 试点,零回归)
|
2026-08-01 12:56:19 +08:00 |
|
lxy
|
438f9692f2
|
新增: 任务创建关联灵感下拉(F-260619-01 补创建入口)
|
2026-08-01 12:47:12 +08:00 |
|
lxy
|
c34ad062e7
|
优化: 消息落库增量写(Phase1:全量 DELETE+INSERT → 增量 INSERT + dirty 标记)
|
2026-08-01 12:42:49 +08:00 |
|
lxy
|
484080ac12
|
修复: unwrap 吞错 + lock 中毒 panic 高危项(数据吞 warn 跳过 / lock 降级返 Err)
|
2026-08-01 12:21:52 +08:00 |
|
lxy
|
143b859727
|
新增: 迁移全量测试(覆盖 V1-V37 + 关键表/列/schema_version)
|
2026-08-01 12:13:56 +08:00 |
|
lxy
|
d7e2845881
|
修复: 断路器失败判定纯结构化(失败 content 包 JSON envelope,is_failure_content 只读字段不解析内容文本)
|
2026-08-01 12:00:23 +08:00 |
|
lxy
|
20ec571dbb
|
修复: checkpoint 参数化 + 压缩 permit 死锁降级 + 密钥归一化 + SSE CRLF/多字节
|
2026-08-01 11:30:05 +08:00 |
|
lxy
|
c4ba920cf5
|
修复: spawn panic 兜底 + namespace 淘汰提示 + run_command 超时与破坏命令信任门控
|
2026-08-01 11:10:28 +08:00 |
|
lxy
|
468950616b
|
修复: namespace 占位符发 LLM 前未展开 + key 含斜杠丢原文
|
2026-08-01 10:42:09 +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
|
0b68c5bed9
|
修复: AI 回复以好问题等开场 + 达 max_iterations 不收敛卡死
日志分析发现:
- 零条 AiCompleted/AiError: agentic loop 达 max_iterations 后进入暂停态
(F-260616-03), generating 保持 true 致前端卡在等待+发送队列
- LLM 持续调工具不收敛输出文本, 10 轮耗尽后不自动完成
system prompt 修复:
- 新增「直接回答用户问题,不要以评论开头」严禁用好问题等无信息开场白
- 新增「及时收敛」指令:目标达成后立即输出结果, 停止调无用工具
- concat! 重构 behavior_prompt 避免单行长字符串
|
2026-07-20 13:08:27 +08:00 |
|
lxy
|
7594a5b7f3
|
新增: MemoryAdapter trait + ContextManager 默认实现
crates/df-ai/src/memory_adapter.rs:
- MemoryAdapter trait: 15 个核心方法(写入/读取/压缩/生命周期)
- ContextManager 作为默认实现(行为零变化)
- 预留 VectorMemoryAdapter 接入点
lib.rs: pub mod memory_adapter 导出
|
2026-07-20 09:51:12 +08:00 |
|
lxy
|
c8f35a7211
|
新增: V37 migration + T6 版本化快照(自动 checkpoint)
迁移 V37:
- conversation_checkpoints 表: id/conv_id/snapshot/token_total/label/created_at
- 索引: (conv_id, created_at DESC)
save_conversation_inner:
- 每 20 轮自动创建 checkpoint(snapshot = JSON 全量消息)
- 防撑爆: snapshot < 1MB 才写
- checkpoint ID: ck_{conv_id}_{token_total}(幂等,INSERT OR IGNORE)
- 为 T6 后续的 IPC list/restore 准备数据基础
|
2026-07-20 09:10:47 +08:00 |
|
lxy
|
e222d38e7c
|
新增: T4 工作流 DAG 注入完整实现
PerConvState:
- workflow_id: Option<String> — 关联的工作流 ID
- workflow_dag_summary: Option<String> — 预计算 DAG 摘要
system_prompt 注入:
- 检测 workflow_dag_summary,非空时注入 [工作流] 块
workflow_context.rs:
- build_dag_summary: 从 DagDef 构建可读 DAG 摘要文本
- extract_active_path: 提取从根到当前节点的活跃路径
- topological_layers: 拓扑分层排序(含环检测)
- 3 个单元测试覆盖线性 DAG / 中途路径 / 空 DAG
|
2026-07-20 08:58:37 +08:00 |
|
lxy
|
1eb2ca7dc5
|
新增: 上下文管理演进 Wave3(T5 WorkingContext 层注入)
PerConvState: 新增 working_context 字段
- 初始化 WorkingContext::new() 默认空
system_prompt 注入:
- L1a: 当前步骤(每轮必带,调用 build_injection)
- L1b: 脏标记条件注入(dirty_window=3,有变更才带)
- 拼入「## 工作上下文」段
T3 联动: compress 成功后的 reset_all 占位已在 context_lifecycle.rs 预埋
T4: 工作流注入点保留为独立段(待 workflow_id 字段落地)
L1c (read_context 工具): 待注册(依赖 tool_registry 接线)
|
2026-07-20 08:11:40 +08:00 |
|
lxy
|
3943d68430
|
新增: 上下文管理演进 Wave2(T3结构化摘要 + T4工作流DAG占位)
T3: 压缩摘要双格式(向后兼容)
- compress_via_llm 返回类型 Result<String> → Result<CompressedSummary>
- 新增 parse_sections_to_json: 从四段式 Markdown 摘要解析 JSON 卡片
- context_lifecycle: 插入 NL 摘要(向后兼容),预留 WorkingContext 联动
- manual compress IPC (chat.rs): 适配新返回类型
T4: 工作流 DAG 注入(占位)
- workflow_context.rs: 空壳函数,待 PerConvState.workflow_id 落地后接入
- mod.rs: 注入点已就位(日志占位)
- 后续需补: DAG 加载 + 活跃路径裁剪 + system_prompt 注入
|
2026-07-20 08:01:34 +08:00 |
|
lxy
|
faa61a9ba5
|
新增: 上下文管理演进 Wave1(契约定义 + T1动态阈值 + T2命名空间)
Agent 3: 共享契约类型定义
- CompressedSummary(T3输出格式)
- WorkflowContextBlock(T4工作流DAG上下文)
- WorkingContext + GoalItem/DecisionItem/StepInfo(T5常驻上下文)
- 脏标记版本追踪 + reset_all 压缩联动
T1: 动态压缩阈值
- maybe_auto_compress 加 sys_tokens 参数,触发条件从 budget*0.6 改为 available*0.6
- 调用处传 sys_tokens(loop顶部已缓存)
- 3 行核心改动
T2: 工具命名空间存储
- crates/df-ai/src/namespace_store.rs: 完整实现 + 单元测试
- process_tool_calls: Low/Med/High 路径 namespace 路由
- save_conversation: namespace 引用展开为原文再落 DB
- AiSession 新增 namespace_store 字段
|
2026-07-20 01:05:20 +08:00 |
|
lxy
|
b1d7deece1
|
新增: 上下文管理演进设计文档(发散思考 + 任务技术设计)
发散思考文档涵盖:
- ContextManager 三维评估(效率/合理性/成本)
- 业界方案对标(Claude Code/OpenAI SDK/Mem0/LangGraph 等)
- 融合设计: 结构化分层上下文引擎(L1常驻/L2历史/L3摘要)
- 9 种方法交叉论证(决策矩阵/ROI/帕累托/Kano/风险矩阵等)
- 7 个发散方向与冲突分析,推荐派系 A 路线
任务技术设计文档涵盖:
- T2 工具命名空间: 大工具结果不进主队列,NamespaceStore 详细设计
- T4 工作流 DAG 注入: 活跃路径裁剪,结构化 DAG 进 system prompt
- T3 L3 结构化摘要: JSON+NL 双格式压缩摘要
- T1 动态压缩阈值: 精确到行的 3 处改动
- 4 种边界情况推演,AI coding 多 agent 并行策略
|
2026-07-20 00:53:53 +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
|
42efb31bbf
|
优化: Zed 编译卡死治理(musl 隔离 + rust-analyzer 配置)
- musl 交叉编译: 文档化 CARGO_TARGET_DIR=target-musl 隔离方案, 删除现有 349M 产物
- gitignore: 新增 target-musl/ 规则
- .zed/settings.json: 新建项目级 rust-analyzer 配置
- 关闭 check.onSave (Zed 卡死主因: 每次保存触发全 workspace check)
- check.workspace=false (即便手动也只查当前 crate)
- cargo.allTargets=false (跳过 musl/交叉 target 解析)
- files.excludeDirs 排除 target/node_modules 等
- 保留 procMacro/tauri-codegen enable (否则宏会报红)
|
2026-07-04 00:53:58 +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
|
aa0701a2ea
|
优化: 响应式布局走查修复(断点统一+窄屏适配)
- 统一断点: Dashboard/Ideas/Projects/ProjectDetail 的响应式断点
从 900px 改为 768px,与 AppLayout/AppSidebar 对齐(消除中间区间挤压)
- filter-bar 全局加 flex-wrap:wrap(窄屏自动换行,Ideas/Tasks/AuditLog 受益)
- IdeaDetail debate-container 窄屏双栏堆叠(@media 760px 切单列)
- modal-box min-width 改用 min(360px,90vw)(超小窗口不撑破)
- Tasks search-input 改 flex 布局(窄屏自适应宽度)
|
2026-07-03 02:35:14 +08:00 |
|
lxy
|
89cfbc7499
|
新增: 左侧导航支持收缩展开(手动+小窗口自动)
- 手动收缩:brand 区右侧收缩按钮,收缩后底部展开按钮
- 小窗口自动收缩:窗口宽度≤768px 自动切换为图标模式
- 状态持久化:用户偏好存 appSettings(df-sidebar-collapsed)
- 收缩态:仅显示图标,hover 显示 tooltip 文字
- 过渡动画:width/min-width 0.2s ease 平滑收缩
|
2026-07-03 02:17:26 +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
|
eee0f06e1a
|
新增: 合并产出落回主对话(Coordinator 接线)
- agentic/mod.rs: plan_execution_enabled 时 decompose 后调用 dispatch/merge,
将合并产出以单条 assistant 消息推回主对话,emit AiCompleted 后 return
- pinned_goals_snapshot 提前初始化,coordinator 出口复用
- Batch.md: 新增 Batch 38 记录,更新 Batch 37 提交 hash
|
2026-07-02 20:19:39 +08:00 |
|
lxy
|
46246880b3
|
重构: String→newtype 强类型 + 工程清理
- df-types: ExecutionId/ToolCallType 从 type 别名改为 newtype 结构体
- df-ai-core: 新增 ToolType newtype / MessageStatus 枚举,
ChatMessage.status 从 Option<String> 改为 Option<MessageStatus>
- provider: is_active() 改用 MessageStatus::Active 模式匹配
- context/chat/conversation: 构造站点更新为枚举变体
- .gitignore: 添加分析脚本排除项,清理根目录临时文件
- Batch.md: 更新最新提交与新增 Batch 37 记录
|
2026-07-02 20:11:52 +08:00 |
|
lxy
|
b18740405c
|
修复: run_command 空路径报错 + 隧道日志洪水 + 启动残留清理
- tool_registry: run_command working_dir 空字符串 "" → None,修 Windows os error 123
- lib: tunnel subscriber 从频率压制(suppress_until)改为连接状态感知(is_connected),
断开时静默丢弃事件,重连后恢复透传,记 INFO 状态变迁(治本)
- conversation_repo: 新增 cleanup_stale_pending(),超 24h 残留 pending 标记 interrupted
- restore: 启动时先清理过期 pending 再恢复审批
- state: 实现 cleanup_orphan_pending_messages(),启动时清理对应已决/超时 tool 的
__PENDING__ 占位消息
|
2026-07-02 15:47:47 +08:00 |
|
lxy
|
d99a65f034
|
优化: 任务分页watcher+设置页确认弹窗复用+进展文档更新
- Tasks.vue: 补全 page/pageSize watcher,翻页触发后端查询(原翻页只改前端切片)
- Settings.vue: 自建确认弹窗替换为 ConfirmDialog 组件,删除重复 CSS
- PROGRESS.md: 更新项目速览(多Agent架构+40+工具+人设系统)
|
2026-07-02 13:27:49 +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
|
34944df764
|
修复: 预存测试编译错误+快捷键绑定+批次记录同步
- df-types: augmentation 测试 5 处缺 extra 字段补齐(17 测试全绿)
- AiChat: Ctrl+N(新建对话)+Ctrl+R(重新生成)快捷键绑定(Tauri 下 preventDefault 可靠)
- Batch.md: 标记已完成项,仅剩合并产出落回主对话待接线
|
2026-07-02 12:16:55 +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
|
54ffc868b2
|
重构: context.rs拆分(sanitize独立子模块)+架构文档节点状态同步
- context.rs(1956行)拆分为 context/mod.rs(538行)+sanitize.rs(761行)+manager_tests.rs(719行)
- sanitize 函数移至子模块,ContextManager 保留委托方法(零行为变更)
- 46个 context 测试全绿(11 sanitize + 35 manager)
- ARCHITECTURE.md: 8节点全部标记已实现,Coordinator 标记已实现
|
2026-07-02 01:33:56 +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
|
f1fb8655c3
|
更新: 批次记录同步(审批策略+小程序核验完成+散项进度)
|
2026-07-02 00:21:48 +08:00 |
|
lxy
|
d10d7ff330
|
新增: 审批策略Persona维度(reviewer/analyst全auto+扩展点)
- should_auto_for_persona: 叠加在 classify_risk_and_auto 之上的人设维度判定
- reviewer/analyst 人设工具调用全 auto(只读工具审批无意义)
- 预留 Phase 2 工具维度扩展点(函数内加 if 分支即可)
- 零编译警告
|
2026-07-02 00:20:48 +08:00 |
|
lxy
|
61d3e9c148
|
新增: Reviewer仲裁+命令互斥锁+冲突解决IPC(批次C散项)
- coordinator: arbitrate_conflicts 方法(规则仲裁:成功方优先/双方成功推荐合并/都失败手动)
- coordinator: ConflictItem 加 subtask_a/subtask_b/recommendation 字段 + ConflictResolution 枚举
- command_lock.rs: CommandLockRegistry (dir+cmd首词 Semaphore 串行化,5个测试全绿)
- resolve_conflict IPC: 解决冲突→更新DB→emit AiConflictResolved 事件闭环
- 3个仲裁测试 + 5个互斥锁测试全绿
- 零编译警告
|
2026-07-02 00:17:00 +08:00 |
|
lxy
|
840949ad05
|
修复: 代码审查发现的安全与兼容性问题
- git_worktree: commit config 改用 --local 避免污染全局 git config
- git_worktree: merge-tree 改用旧版兼容语法(三参数替代 --write-tree)
- coordinator: executor 'static 约束加注释说明(JoinSet spawn 要求)
- coordinator: Token reserve 按层 SubTask 数累加(原固定 10k 不准确)
- coordinator: 更新结构体注释(反映当前并行实现而非 Phase 1 串行)
- 39 个测试全绿,行为零回归
|
2026-07-01 23:37:58 +08:00 |
|
lxy
|
3e93a2cd70
|
更新: 批次记录同步(仲裁合并+模板系统+节点补齐完成)
|
2026-07-01 23:20:46 +08:00 |
|
lxy
|
6e44878021
|
重构: agentic主循环拆分(提取自动压缩逻辑到context_lifecycle)
- context_lifecycle.rs: F-15自动压缩触发逻辑(maybe_auto_compress)
- title_lifecycle/knowledge_lifecycle: 文档说明(已在之前拆分到title.rs/knowledge_inject.rs)
- mod.rs从2222行降至2071行,行为零变更
- cargo check零警告通过
|
2026-07-01 23:19:34 +08:00 |
|
lxy
|
27b4268acb
|
新增: SubflowNode嵌套子工作流 + 3个内置模板
- SubflowNode: 加载子DagDef递归执行,深度限制防无限递归,5个测试全绿
- 内置模板: 代码审查(analyze→report→notify)
- 内置模板: Bug修复(locate→fix→verify→notify)
- 内置模板: 功能开发(design→implement→test→review→notify)
- 模板含persona分配(reviewer/analyst/coder/tester/architect)
|
2026-07-01 23:10:13 +08:00 |
|
lxy
|
f40287bb00
|
新增: 模板系统+工作流节点(YAML加载器+GitNode/HTTPNode/NotifyNode)
- template_loader.rs: YAML→DagDef加载器+校验(空节点/未知类型/依赖环/边引用)
- GitNode: 分支/checkout/commit/merge/push/status/log(git CLI封装)
- HTTPNode: GET/POST/PUT/DELETE(reqwest,30s超时)
- NotifyNode: 桌面通知(日志)+ Webhook(飞书/钉钉/自定义)
- 8个模板加载器测试+37个节点测试全绿
|
2026-07-01 22:45:56 +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
|
9947e6c1fe
|
更新: 批次记录同步(数据层+worktree+并行执行完成)
|
2026-07-01 22:26:12 +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
|
4483358f6b
|
新增: Git worktree生命周期管理(创建/提交/合并/冲突检测/清理)
- create_plan_worktree: 创建Plan级工作分支
- create_worktree: 创建SubTask专属worktree(天然文件隔离)
- commit_worktree: worktree内提交改动(含user.email兜底)
- merge_branch: merge-tree预检+merge实际合并,返回Clean/Conflict
- remove_plan_worktrees: 批量清理Plan所有worktree+分支
- 7个集成测试全绿(隔离/并行/提交/无冲突合并/冲突检测/非Git降级/清理)
- 使用真实Git+tempdir测试(参考df-execute/tests/shell.rs模式)
|
2026-07-01 21:54:30 +08:00 |
|
lxy
|
ae6d3d0043
|
新增: 多Agent数据层(V36迁移+3新表+Repo CRUD+7个测试全绿)
- V36: ai_plans/ai_subtasks/ai_conflicts 3 新表 + ai_messages/ai_tool_executions 加 subtask_id
- models: PlanRecord/SubTaskRecord/ConflictRecord 结构体
- PlanRepo/SubTaskRepo/ConflictRepo CRUD(insert/get/list_by_*/update_status/resolve)
- 7个 Repo 单元测试全部通过(内存 SQLite + 全迁移)
- 顺带修复 task_repo.rs 预存测试编译错误(trec_full 参数类型+缺失 await)
|
2026-07-01 21:50:16 +08:00 |
|
lxy
|
f4fc0feff5
|
新增: 测试落地实施方案(Rust单元+集成+vitest+E2E手动验证)
- 落地方式:Rust单元(mod tests) / Rust集成(tests目录+tempdir) / 前端vitest(需引入) / E2E手动检查清单
- 每个用例类别的文件位置和执行命令
- Mock策略:LLM闭包注入/Git真实tempdir/DB内存SQLite
- 批次验证流程:编码→cargo test→vue-tsc→vite build→手动E2E→SQL验证→提交
- CI自动化远期路径(cargo test + bun test)
|
2026-07-01 21:37:07 +08:00 |
|
lxy
|
6833792de2
|
新增: 后续批次测试用例设计 + 批次规划同步worktree方案
- 测试用例:8大类共70+用例(迁移/Repo/拆解/worktree/并行/仲裁/模板/CI/审批/拆分/端到端/边界)
- 批次同步:数据层+worktree+并行(12项)/仲裁+冲突UI+编译检查(10项)/模板+节点(10项)/Git-CI+DockerNode(6项)/审批政策+小程序+收尾(8项)
- INDEX注册两份设计文档
|
2026-07-01 21:30:58 +08:00 |
|
lxy
|
af2e085bea
|
更新: 多Agent隔离机制改用Git worktree替代自建暂存区
- 隔离:git worktree天然分支隔离,复用diff/merge/conflict能力
- 合并:git merge-tree三方合并预检+git merge实际合并到plan分支
- 冲突:四层防线(层间串行/worktree隔离/编译检查/命令互斥)
- 展示:合并产出落回主对话采用可展开单条(方案C)
- 类型:SubTaskRecord加branch字段,ConflictRecord加conflict_type
- 降级:非Git工程串行执行(无worktree隔离)
- 实施分批同步更新(含git_worktree.rs+编译检查+命令互斥锁)
|
2026-07-01 21:26:55 +08:00 |
|
lxy
|
583058acd6
|
新增: 多Agent并行执行与仲裁合并设计文档
- 数据模型:混合方案(messages加FK列 + Plan/SubTask/Conflict独立表)
- 并行策略:层间串行+层内并行,写SubTask降级串行,token预算池
- 上下文隔离:子Agent独立ContextManager+fork快照,合并产出落回主对话
- 事件协议:4个新事件(Plan创建/SubTask状态/合并完成/冲突解决)
- UI交互:PlanProgress发送即展示+工具卡分组+冲突徽章非阻塞
- 状态机:Plan/SubTask/Conflict各自状态流转图
- 前端类型:PlanRecord/SubTaskRecord/ConflictRecord TypeScript定义
- INDEX.md注册 + 批次记录同步明细
|
2026-07-01 17:08:46 +08:00 |
|
lxy
|
f04d47b09d
|
更新: 批次推进记录同步(Coordinator+audit拆分)
|
2026-07-01 14:29:53 +08:00 |
|
lxy
|
fa410e6843
|
重构: Coordinator 接入 agentic loop + audit 拆分(approval/record)
- audit/approval.rs: 审批门控(风险分类+自动执行+挂起审批)
- audit/record.rs: 审计记录写入+历史查询
- coordinator.rs: 移除 deprecated,正式作为 P0 骨架可用
- run_agentic_loop: plan_execution_enabled 时 Coordinator 分解意图→记录 Plan
- audit/mod.rs 从 ~500 行精简至 ~200 行(编排层)
|
2026-07-01 14:29:34 +08:00 |
|
lxy
|
a9ee9b1f74
|
更新: 批次推进记录同步(人设系统完成)
|
2026-07-01 13:11:15 +08:00 |
|
lxy
|
0a65ea2c5a
|
新增: 人设系统(P0 AgentPersona+PersonaRegistry+5内置人设)
- AgentPersona 数据结构(能力/工具白名单/prompt模板)
- PersonaRegistry 含5内置人设:coder/reviewer/architect/tester/analyst
- 按意图关键词推荐人设(review→reviewer,设计→architect等)
- 10个单元测试覆盖注册/默认/推荐/白名单/build_prompt
|
2026-07-01 13:10:16 +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
|
c89742cb9a
|
更新: 批次推进记录同步(搜索索引/编译警告/i18n核验/类型重构/MessageList拆分/ChatInput拆分/白名单打通)
|
2026-07-01 12:50:12 +08:00 |
|
lxy
|
2af24f0db8
|
新增: ScriptNode 白名单跨 crate 配置打通(IPC+OnceLock) - 新增 set_script_safety / get_script_safety IPC - ScriptNode.check_command_policy 优先读运行时配置 - 前端设置页保存时同步注入后端运行时 - 核验确认小程序心跳/文件树刷新/项目分页三项已就绪
|
2026-07-01 12:38:21 +08:00 |
|