|
|
f026880fa7
|
重构: 拆AiChat God第二批ChatInput(strategy)
- 新建 ai/ChatInput.vue(641行): 输入框+图片粘贴/拖拽+技能/联想+@mention+发送/停止(4块独立逻辑)
- AiChat.vue 3663→3128行(-535): ChatInput template+script迁移, store共享(useAiStore/useProjectStore单例)
- props editingMsgId + emit sent/error/cancel-edit + expose focus/startEditFocus/clearInput/hasUnsentInput/sendExamplePrompt
边界: scrollToBottom/showToast/editingMsgId留父(emit回调); ChatInput 641>500(4块逻辑, 后续可拆useImageInput/useSkillMention composable)
主代兜底: vue-tsc 0 + grep ChatInput抽离/AiChat emit绑定印证
strategy: 单批1-2文件原子; AiChat余3128行(后续MessageList核心/TopBar/QueueList)
|
2026-06-19 04:04:35 +08:00 |
|
|
|
63fe0a6375
|
重构: 拆context.rs核心库(strategy自底向上·纯函数抽离)
- 新建 df-ai/context_helpers.rs(195行): 纯函数/类型/常量(TokenEstimator/ContextConfig/MessageGroup/TrackedMessage/classify_group/EvictionUnit/PROTECT_COUNT/TOOL_MISSING_PREFIX)
- context.rs 1332→1178行: 保留ContextManager struct+impl, pub use重导出(外部agentic.rs/mod.rs路径不变)
- lib.rs: pub mod context_helpers
Rust impl块约束: ContextManager方法未动一个字符, 纯函数搬迁零行为变更
主代兜底: cargo check --workspace 0 + test df-ai 119 + grep抽离项/pub use印证
strategy: 自底向上核心库优先, 单批1-2文件原子操作
|
2026-06-19 03:31:50 +08:00 |
|
|
|
e6dbb14c5d
|
重构: commands.rs拆分chat域(strategy单批1-2文件)
- commands.rs → commands/mod.rs(1829→725行) + 新建 commands/chat.rs(1147行, 13 chat IPC + finalize_pending_placeholders + PendingToolCallInfo)
- re-export三级透传: chat::* → commands::* → ai::*(lib.rs invoke_handler 9处零改动 + 前端零改动)
- 签名/行为原样搬迁(F-09 batch4 conv_id 决策e保留);零调用方预留保留
strategy: 单批1-2文件防上下文溢出 + 原子(新文件→旧改→编译验证)
主代兜底: cargo check --workspace 0 + test 98 + grep 13IPC/re-export三级印证
杂项销账: B-260617-11 tauri.conf.json ["nsis"]已入库关闭(WATCH跨平台) + CR-07 batch4待审登记
|
2026-06-19 03:15:03 +08:00 |
|
|
|
2c8764abee
|
重构: crud.rs按表拆分(SMELL-P1-9) + F-09批1 PerConvState数据结构
- SMELL-P1-9: crud.rs 2212行→crud/6文件(mod/settings/project_repo/task_repo/conversation_repo/idea_repo)
re-export pub use *_repo::* 零调用方改动,宏 pub(crate) use + 子模块 use super::impl_repo
基线测试锁12表白名单+13Repo构造
- F-09 批1: PerConvState struct(9字段对齐AiSession::new)+AiSession.per_conv HashMap+conv()/conv_read()访问器+3单测
纯新增无行为变化,b-1主代自主裁决采纳,批2迁移承接
主代统一兜底: cargo check --workspace 0 + df-storage 35+11 + devflow 96 passed
|
2026-06-19 01:34:59 +08:00 |
|
|
|
60b01d03ee
|
重构: tool_registry拆分及多批改进
|
2026-06-19 00:10:14 +08:00 |
|
|
|
a2871a66e0
|
优化: AI Chat全栈多批审查修复与架构清理(risk_level清理/路由解耦/工具渲染/测试补测/死代码)
|
2026-06-18 22:57:19 +08:00 |
|
|
|
f6e4e824fa
|
修复: 补提 adversarial+project CompletionRequest reasoning_content 字段(74003bc 遗漏)
|
2026-06-17 18:44:28 +08:00 |
|
|
|
74003bc04f
|
修复: DeepSeek reasoning_content 全链路透传(跨6 crate补字段+映射+agentic loop累积回传)
|
2026-06-17 18:08:04 +08:00 |
|
|
|
a622bdca61
|
修复: 队列发送失败回填不丢消息+池权重revert+lang解析DRY+注释变量名修正
|
2026-06-17 03:55:30 +08:00 |
|
|
|
bac3c76fa2
|
修复: B-03b-R10③工作流事件补execution_id治本并发串扰(emit填+消费exec_id守卫)
|
2026-06-17 03:36:38 +08:00 |
|
|
|
e3cd44802a
|
新增: F-05多模态Phase2a后端(ContentPart+parts字段+provider图片块+truncate防撑爆)
|
2026-06-17 03:09:10 +08:00 |
|
|
|
4be15912cd
|
重构: df-core改名df-types(类型库语义准+全workspace机械改名54处)
|
2026-06-17 02:44:34 +08:00 |
|
|
|
e16d038bb2
|
新增: AiNode自审闸门阶段3(gate_should_block+verdict=fail阻断下游)
|
2026-06-17 02:36:54 +08:00 |
|
|
|
79b6a43095
|
新增: F-04多Provider负载均衡池(数据层+选择器+并发原语)+CR-52白项
|
2026-06-17 02:04:58 +08:00 |
|
|
|
63bff8bf96
|
新增: F-15上下文压缩基础(compress_prompt四段式+compress_via_llm+context辅助方法)
|
2026-06-17 00:50:47 +08:00 |
|
|
|
2ddfea67c7
|
新增: F-01阶段5模型路由调用点接入
|
2026-06-17 00:33:44 +08:00 |
|
|
|
8a142c212c
|
优化: F-15上下文基础(is_active正面白名单+push token仅active计入 零行为变化)
|
2026-06-17 00:14:38 +08:00 |
|
|
|
8dad15ecc1
|
新增: F-01模型能力阶段4路由器(ModelRouter+select 7步过滤链)
|
2026-06-16 23:59:09 +08:00 |
|
|
|
107b8486ae
|
新增: F-01模型能力阶段3厂商模型列表拉取(model_fetch+协议分派+噪音过滤)
|
2026-06-16 23:47:56 +08:00 |
|
|
|
b3e78e6061
|
新增: F-01模型能力阶段1+2(ModelConfig数据模型+model_probe探测器+df-storage兼容V18)
|
2026-06-16 23:33:45 +08:00 |
|
|
|
84a6fc41d1
|
新增: AiNode provider_id注入链(resolve_provider三路径+FR-S1 api_key不进config)
|
2026-06-16 23:07:39 +08:00 |
|
|
|
766f235ab7
|
重构: secret纯密钥逻辑下沉df-storage(方案B避循环依赖,12调用点零改)
|
2026-06-16 22:57:43 +08:00 |
|
|
|
c10adaf0b0
|
新增: AiNode自审ai侧(AiNode持db写产出+ai_self_review节点+DAG透传)
|
2026-06-16 22:40:55 +08:00 |
|
|
|
539b5ed63e
|
新增: TaskRecord加output_json产出字段+V17迁移(决策a AiNode自审闭环)
|
2026-06-16 22:29:21 +08:00 |
|
|
|
129f0f0156
|
优化: 对抗评估clamp去冗余+JSON提取正则兜底+update_task注释对齐status收口
|
2026-06-16 22:20:14 +08:00 |
|
|
|
4bdaac5983
|
修复: df-nodes测试回归(status收口fixture改advance_status_atomic)
|
2026-06-16 21:30:56 +08:00 |
|
|
|
b94e74a96d
|
新增: 推进链阶段3收口(advance_task/run_workflow工具+status状态机收口)
|
2026-06-16 21:20:41 +08:00 |
|
|
|
dfe0096498
|
新增: F-03对抗评估接LLM+F-02纯技能调用标题+i18n@转义
|
2026-06-16 21:07:42 +08:00 |
|
|
|
2069f79198
|
重构: df-ai-core trait下沉拆crate+导入历史项目批量扫描
|
2026-06-16 20:19:55 +08:00 |
|
|
|
ba7f35552b
|
重构: AI流式断线保文StreamResult三分支+重试对齐决策a1,推进链落df-nodes
|
2026-06-16 19:11:19 +08:00 |
|
|
|
7d5cd4c89a
|
新增: AI Chat多项增强(审批去重/编辑重发/导出/实体引用/会话置顶搜索)+任务推进链df-nodes落地
|
2026-06-16 12:41:13 +08:00 |
|
|
|
fc767e1db6
|
优化: R-PD-10 storage_err DRY统一 + FR-D3 migrations if链转数组循环
- crud.rs 110处 .map_err(|e| Error::Storage(e.to_string())) 统一 storage_err helper(R-PD-10 DRY)
- migrations.rs run() 15个 if current_version<N 块改 step 数组循环,零行为变更(FR-D3),新增版本追加一行即可
|
2026-06-16 03:27:01 +08:00 |
|
|
|
4dc5219a3c
|
修复: CR-01审查待修项①类7项(CSS补testing/blocked徽章+CAS防回收站推进+DRY+注释+测试改名+advancing接文案)+新增待审查.md审查队列(职责分离:主会话写/审查agent读)+todo销账
|
2026-06-16 03:12:24 +08:00 |
|
|
|
10e4945e5a
|
优化: AI模块(provider重试兼容+aichat交互+工具卡片可读化+diff高亮)
|
2026-06-16 02:33:16 +08:00 |
|
|
|
d2cb38cdac
|
新增: 任务推进链(7态状态机+advance_task CAS原子写)+软删除+前后端7态对齐
|
2026-06-16 02:33:15 +08:00 |
|
|
|
2196c7748f
|
优化: P0 shell stdout修复+灵感路由+3工具新增+ai-md全局CSS+import路径统一
P0 修复:
- B-260615-37: shell.rs 补 Stdio::piped() 修复 run_command stdout/stderr 恒空
(tokio 默认 inherit 导致 wait_with_output 读不到 pipe)
P1 功能:
- B-260615-36: 路由加 /ideas/:id + Ideas.vue 接 route.params.id + watch
(修复项目详情点「来源灵感」跳空白页)
- F-260615-08: 新增 file_info 工具(元信息: exists/size/lines/binary/dir)
- F-260615-09: 新增 append_file 工具(追加写入, RiskLevel::Medium)
- F-260615-12: 新增 search_files 工具(文件名 glob 搜索,递归,限50条)
+ search_files_recursive 辅助函数 + i18n zh/en 3工具×2命名空间
DRY/重构:
- CR-260615-09: .ai-md 样式5份→全局 src/styles/ai-md.css(75行)
AiChat.vue 删71行重复 + main.ts 引入 + typo修正(.a-md→.ai-md)
- 全量 import 路径统一为 @/ 别名(stores/composables/views ~28文件)
vite.config.ts 加 resolve.alias.{ '@': '/src' }
- i18n 批量改进: store error fallback 11处中文→t() / ToolCard ARG_LABEL
/ useAiSend queue文案 / Dashboard 空态 / Ideas.vue null守卫
- cargo check 0 error / vue-tsc 0 error
|
2026-06-15 16:40:09 +08:00 |
|
|
|
2de0c6ecb7
|
重构: 后端 df-ai/commands 拆分+df-nodes/workflow 改造+P0 bug 修复
- df-ai: context 历史中毒三档自愈 sanitize_messages(AC3)+anthropic_compat tool_use_id None 跳过(AC1/AC2)+删 router/stream 死码
- df-core: events 加 select_type+decisions 多选审批契约(F-260615-01)
- df-execute: shell run_command 工具复用(F-260615-05)
- df-nodes: human_node 多选校验+2 端到端测(F-01)+取消跳 set_failed(B-03b-R1/R2/R8)
- df-workflow: executor/dag/state cancel 闭环(B-06/07/03a/b)+provider approve options(R-PD-5)
- df-storage: find_path_conflict 抽公共(R-PD-11)+COLS 常量断言
- df-ideas: 删 IdeaPromoter/PromotionPolicy 死码(R-PD-14)
- src-tauri/commands/ai: secret keyring 迁移(FR-S1/R-PD-4)+GeneratingGuard RAII+disarm(B-09/26)+newConversation 软复位(B-10)+stream 心跳/stop select/空回复判错(B-02/04/05/15)+run_command(F-05)+mask audit(AR-3)
- src-tauri/commands/{project,task,workflow,mod,lib,state}: task detail IPC(F-02)+approve decisions+task list 联动(B-29)
- Cargo.lock+Cargo.toml 依赖同步
|
2026-06-15 05:14:42 +08:00 |
|
|
|
4b5f096d1c
|
优化: dag拓扑O(V+E)+前端findToolCall反向遍历
- FR-D1 dag.rs topological_layers + executor.rs run 建 adjacency 索引, O(V·E)→O(V+E)(14测试全绿, 含executor3测)
- FR-R5 useAiEvents findToolCall 正向 O(n²) 改反向遍历(命中最近, 放弃Map索引防陈旧引用)
- AR-6 核查确认已于 f82dd8b 落地(Low失败emit AiToolCallCompleted), 零改动
|
2026-06-14 22:56:06 +08:00 |
|
|
|
4a95f6a1e2
|
重构: confirmDialog抽composable+tool_result反向查找+search列限定
- FR-D5 抽 useConfirm 收敛 4 视图(Projects/ProjectDetail/Ideas/Settings)确认弹层重复
- FR-D4 replace_tool_result_content 正向 O(n) 改反向 rposition(审批替换命中最近,调用低频)
- FR-D2 search_vector SELECT * 改显式 14 列(消除隐式依赖,字段级精简待单独立项)
|
2026-06-14 22:50:59 +08:00 |
|
|
|
36d68ddb26
|
修复: AI工具调用健壮性+审批卡片可读化+任务工具补全
- AC1/AC2 anthropic_compat tool_use_id None/空时跳过或占位(防GLM端500卡死)
- AR-3 审批卡片 id→项目名回显(前端白名单特化) + 后端查不到友好提示
- FR-D6 补 delete_task/update_task 工具(防误用 delete_project 清理孤儿任务)
- FR-D7 抽 bind_dir_to_project 消除 create_project/bind_directory 重复
- FR-D8 create_idea schema 补 priority 契约对齐
- FR-S4 SKILL.md 注入加头尾隔离标注防 prompt injection 混淆
- FR-R4 complete() 加 60s 单请求超时(不影响 stream)
|
2026-06-14 22:48:04 +08:00 |
|
|
|
f82dd8ba90
|
新增: Wave8 F-06 导入项目 + F-02 技能联想 + AR-6 Low 失败语义
- F-06 导入历史项目:scan.rs extract_description(README 首段 200 字) + import_project 命令(合并 create+bind,spawn_blocking 探测栈) + 前端 ProjectDetail 导入按钮 + store action;主代理补 lib.rs invoke_handler 注册(agent 未注册)
- F-02 技能联想使用:核对发现 sendMessage→ai_chat_send skill 调用链已完整(联想选中→带 skill→注入 SKILL.md),补 Esc 取消选中兜底
- AR-6 Low 失败语义统一(定向B):audit.rs Low 失败 emit AiToolCallCompleted(错误 result) 替代 AiError,消除前端 false/后端 loop 续紊乱,错误回填 tool_result 让 LLM 自处理
cargo/vue-tsc 0 err
|
2026-06-14 22:13:51 +08:00 |
|
|
|
b195a38d64
|
修复: FR-S6 validate_column_name 未登记表放行→保守拒绝
None 分支 Ok(放行)→Err(拒绝),与 is_allowed_column 的 None=>false 对齐;防未来未登记表走通用查询路径列名直进字符串拼接致 SQL 注入(当前 12 表全登记无影响,防御性)
来源 fullstack-review §2(待复核→确认);df-storage test pass / cargo 0 err
|
2026-06-14 17:19:45 +08:00 |
|
|
|
cf18678634
|
修复: 全栈审查 FR-C1~C5 五项正确性 bug
- FR-C1 formattedEvents 时间漂移:事件入数组固 _ts 时间戳(project.ts push + ProjectDetail 用 _ts),computed 重算不再刷历史时间为当前时刻
- FR-C2 sentiment 三档统一:模板 >0/<0/===0 + sentimentClass 同源 + i18n neutral(zh/en),原模板>0 与 class>=0 矛盾
- FR-C3 Settings timer 泄漏:onUnmounted 清全部三个(原仅 _concurrencyTimer)
- FR-C4 MIGRATION_VERSION 死常量:删(零代码引用,run() if 链自管版本)
- FR-C5 AiConversationDetail 缺 readonly:加 readonly?: boolean(后端 generating 时返回)
来源 fullstack-review §3(已核实);cargo/vue-tsc 0 err
|
2026-06-14 17:00:33 +08:00 |
|
|
|
3e1f119003
|
修复: Wave5 审批子系统收尾(R7补 types.ts + R9⑪ failed_node + R8 Request 测试)
- R7补: types.ts event.type string→WorkflowEventType 字面量联合(11 变体 snake_case),静态拦截写错 type
- R9⑪: workflow.rs WorkflowFailed failed_node String::new()→状态机取首个 Failed/Cancelled 节点
- R8: human_node 加 request_is_emitted_to_bus 测试,验证 R6(Request 真发到 EventBus)
cargo/vue-tsc 0 err / df-nodes 15 test pass
|
2026-06-14 16:40:43 +08:00 |
|
|
|
0bb96fc509
|
修复: B-03b-R6 human_node send 缺 await + R7 前端契约失配(P0 审批链断裂)
R6: human_node.rs:41 发 HumanApprovalRequest 缺 .await(async fn send 的 Future 被 let _ = 丢弃未 poll,Request 从未进 channel,审批链最上游断裂,B-03a 重写引入,7 单测不覆盖 Request 发出故漏)
R7: project.ts:214 type 'HumanApprovalRequest'→'human_approval_request'(serde rename snake_case) + :215 payload.event.data→payload.event 扁平取字段(WorkflowEvent 无 data 包装)
来源: workflow-approval-review-2026-06-14.md §0/§1(31-agent 审查头号 P0);cargo/vue-tsc 0 err / df-nodes 14 test pass
|
2026-06-14 16:32:14 +08:00 |
|
|
|
d6cd2805be
|
修复: B-03b-R1 取消节点跳 set_failed + R2 取消测试(补完 B-03b 复核)
R1: executor Err 处理加 is_cancelled 检测,已取消节点跳 set_failed(Cancelled→Failed transition 非法会 bail 致工作流崩溃),状态保 Cancelled,emit NodeFailed 仍发
R2: test_cancelled_node_skips_set_failed 验证取消传播链(CancelSelfNode 共享 node_status 自取消→Err→executor 不 bail→状态 Cancelled)
补完 B-03b 端到端:4aa689e 只通 IPC→set_cancelled→HumanNode→Err 链,漏验 HumanNode→executor Err 处理与 Cancelled 冲突;df-workflow 14 test pass
|
2026-06-14 16:10:10 +08:00 |
|
|
|
9e2aeffbe4
|
修复: aichat AR-5/7/9(stop 兜底 + clean UI 真删 + friendlyError i18n)
- AR-5 stopChat 本地先复位 streaming + clearStreamWatchdog(防审批态看门狗已 clear + AiCompleted 竞态丢失致 streaming 永真卡死)
- AR-7 clean UI + 后端真删:crud.rs 加 AiConversationRepo::clear_messages(置空 messages JSON + 清零 token,保留对话壳)+ commands.rs ai_chat_clear 调之真删 DB + AiChat 垃桶按钮二次确认。**主代理补完 agent 半成品**:agent impl 声称改 commands.rs 实际 diff 零改动(self_boundary_check 造假),审查 semantic_check 正确抓到此 gap
- AR-9 friendlyError 全走 i18n.global.t + zh/en 双语补 4 key(TS2589 用 as any 规避 vue-i18n 深度泛型)
- cargo check / vue-tsc 0 error
|
2026-06-14 16:07:21 +08:00 |
|
|
|
89da9fad9a
|
优化: 立项回滚级联删 + df-ideas 死代码清理
- T-09: idea.rs:149 立项失败回滚 delete→purge_with_descendants(防孤儿子记录)
- T-12: capture.rs 删 CaptureInput/IdeaCapture 死代码,保留 Idea/IdeaScores 共享实体
- T-10: 无改动(normalize_path 已含 canonicalize,判定已解决)
|
2026-06-14 15:19:41 +08:00 |
|
|
|
4aa689e110
|
新增: 工作流审批取消端到端(StateMachine Arc 共享 + 取消 IPC 注册表)
- StateMachine 内部 HashMap→Arc<Mutex<HashMap>>,clone 共享底层
- DagExecutor 加 state_machine() 访问器
- AppState 加 workflow_state_registry(execution_id→StateMachine)
- run_workflow 注册执行器状态机 + 完成清理
- cancel_workflow_node IPC 经 execution_id 取共享引用 set_cancelled,直达 HumanNode 轮询
- 前端取消按钮 + cancelHumanApproval store 方法
- 加 clone_shares 单测验证共享语义
|
2026-06-14 15:19:36 +08:00 |
|
|
|
22964a2e20
|
修复: 工作流审批闭环(execution_id 下沉 + 共享状态机 + HumanNode 真审批)
- B-06: DagExecutor 接收 execution_id 下沉到 NodeContext,消除 dummy-execution-id 硬编码
- B-07: NodeContext.node_status 共享 self.state_machine.clone()(is_cancelled 可工作)
- B-03a: HumanNode execute 重写为 subscribe→send→select! 循环(响应/超时/取消 + execution_id+node_id 双键 + Lagged 容忍),删假返回"同意"
- eventbus.rs 删 try_recv_human_approval 死代码
- 新增 human_node 7 单测(正常/双键过滤/超时/非法决策/自由文本)
照 B-03-人工审批响应机制.md 设计。cargo check 0 error,df-nodes 14 + df-workflow 11 test 全过
|
2026-06-14 14:27:08 +08:00 |
|