123 lines
10 KiB
Markdown
123 lines
10 KiB
Markdown
# aichat 上下文管理 — 派工与决策单
|
|
|
|
> 日期: 2026-09-29 | 统筹: AI-Ops | 编码: devflow bot | 决策: 用户
|
|
> 依据: 《05-代码审查/aichat知识库与记忆走查-2026-09-29.md》(代码事实已于 09-29 二次实核,全部成立)
|
|
> 分工约定: 可信度高的批次 devflow bot 直接按单执行;决策卡(C1-C4)等用户拍板后转派工。
|
|
|
|
---
|
|
|
|
## 一、确定性批次(可信度高,直接派工)
|
|
|
|
### B0 提交固化(前置,最先做)
|
|
|
|
工作区 22 文件 +699 行(T4/T5 生产侧 + G2 破坏性回环检测 + provider 温度覆盖 + 前端工具卡折叠)已过编译门禁未提交。
|
|
|
|
- 操作: 按主题拆分提交(禁一提交混多类型): ①T4/T5 WorkingContext+工作流 DAG 注入 ②G2 破坏性回环检测+温度覆盖 ③前端工具卡折叠与交互
|
|
- 验收: `git log --oneline -3` 三笔提交各自主题单一;`cargo check --workspace` 0 错误
|
|
- 风险: 无(纯固化,不改行为)
|
|
|
|
### B1 知识检索关键词化(原 P0-1)
|
|
|
|
整句 LIKE 命中≈0(`crates/df-storage/src/crud/idea_repo.rs:642` 用 `%末条用户消息全文%` 匹配短语标题)。
|
|
|
|
- 操作: `KnowledgeRepo::search` 入口前加关键词抽取(零依赖: 按标点/空白切分 + 停用词过滤 + 长度≥2 保留,取前 5-8 个词),SQL 改多条件 OR(`title LIKE ?kw1 OR content LIKE ?kw1 OR ...`),任一词命中即入选,reuse_count 排序不变
|
|
- 边界: 关键词抽取放 df-storage 侧纯函数+单测;调用方 `knowledge_inject.rs:364-384` 传参不变(仍传整句,抽取在 repo 内做,后续语义检索接入时上游复用)
|
|
- 验收: ①`cargo test -p df-storage` 含新单测(中文句子→关键词列表) ②手动: 取真实会话一条用户消息原文检索,改造前 0 命中的知识现在能命中
|
|
- 回滚: 单函数回退,2 处
|
|
|
|
### B2 视图裁剪补滚动摘要(原 P0-3)
|
|
|
|
超预算淘汰单元无声丢弃(`crates/df-ai/src/context/mod.rs:216-227` 只打 `context_trimmed` 日志)。
|
|
|
|
- 操作: 裁剪发生时,把被淘汰单元压成一条滚动补偿摘要(零依赖先做关键词级: 每个被淘汰单元取 user 消息首句+工具名聚合),以 system 附加块注入发送视图(如 `[早前摘要] 本会话已处理: ...`),不落 session.messages(与"裁剪只动发送副本"铁律一致);后续可升级为 T3 JSON 卡片复用
|
|
- 验收: ①单测: 超预算裁剪后返回视图首部含摘要块,`self.messages` 全量不变 ②手动: 大会话触发 `context_trimmed` 日志后,下轮请求 system 含摘要
|
|
- 回滚: 摘要块生成处加开关或删拼接,1 处
|
|
|
|
### B3 存量测试修复(4 个挂)
|
|
|
|
`anthropic_compat::anthropic_full_stream_accumulates_usage`(assert usage.is_none() 失败)等 4 个,疑似 6bafdcd 流式 usage 语义变更后断言未同步。
|
|
|
|
- 操作: 先核实 4 个失败根因是"断言过期"而非"行为回归",是则同步断言;发现真回归则修复行为并单独说明
|
|
- 验收: `cargo test --workspace` 全绿
|
|
- 风险: 低(只动测试;若发现真回归先报告再动)
|
|
|
|
### B4 candidate 自动晋升机制(原 P0-2,机制先行)
|
|
|
|
962 条存量知识全 `status='candidate'`,检索只认 `published`(`idea_repo.rs:651`),断链铁证。
|
|
|
|
- 操作: ①存量一次性晋升: SQL 将现有 candidate 按 confidence=high 晋升(971 行已有按 confidence 语义排序的先例) ②增量机制: 自动提炼产物 confidence=high 直接 published / medium 保持 candidate+reuse_count≥N 自动晋升 / low 留审核;阈值走配置带开关,默认值等 C3 拍板(未拍板前默认保守: 全部保持现状,只做存量 high 晋升)
|
|
- 验收: 存量晋升后 `SELECT status, count(*) FROM knowledges GROUP BY status` 分布合理;普通对话自动注入从空转变为有产出
|
|
- 互踩标注: 本批与 B1 同文件 knowledge_inject.rs(不同段: B1 动检索 364-384,本批动提炼/晋升 441+),**串行执行,先 B1 后 B4**
|
|
|
|
### B5 LLM 知识工具注册(P1,可后置)
|
|
|
|
`tool_registry.rs` 73 工具无 knowledge 注册;df-mcp 的 search/insert_knowledge 只服务外部客户端。
|
|
|
|
- 操作: tool_registry 注册 `search_knowledge`/`insert_knowledge`,实现复用 df-mcp 同逻辑(检索走 B1 改造后的关键词检索;写入产出现有 candidate 通道,受 B4 晋升机制管辖)
|
|
- 验收: agentic 会话内让 agent "查一下关于 X 的知识"能调到工具并返回;`cargo test --workspace` 绿
|
|
- 依赖: B1(检索质量)、B4(写入通道闭环);建议排在最后
|
|
|
|
**执行顺序**: B0 → B1 → B2/B3(可并行,零文件交集) → B4 → B5。每批独立提交,带验收证据。
|
|
|
|
---
|
|
|
|
## 二、决策卡(决策性问题,等用户拍板)
|
|
|
|
### C1 跨会话召回(L3)走轻还是重
|
|
|
|
- 背景: L3 现为零召回(新会话全空),是"丢历史"主观感受最大来源,但完全是空壳无现成代码。
|
|
- 选项: **A 轻量** — 项目级记忆: 复用知识表 `source_project` 字段(已有未用)+会话结束提炼进知识库(B5 工具成为跨会话通道),改动小,1-2 批派工; **B 重量** — 对齐 u-claw 分身养成层四层架构(L1 轮内/L2 跨轮/L3 跨会话/L4 跨重启+目标快照机制),体系完整但工程量大数倍,且 u-claw 铁律"L3 召回严禁进 system prompt(走工具按需查)"需一并继承。
|
|
- 建议: 先 A 后 B——A 是 B5 的自然延伸(基建已铺),用 3 个月自用期验证 A 是否够用再决定要不要 B。
|
|
|
|
### C2 语义检索默认开与"数据不出门"定位冲突
|
|
|
|
- 背景: 混合检索代码已存在(knowledge_inject.rs:231-287 双信号加权),但 embedding 需调外部 API——把知识内容发出去,与 pivot 定位"本地优先,数据不出门"直接冲突。
|
|
- 选项: **A 维持默认关**(关键词化后 LIKE 够用,需要语义时用户自行配 embedding); **B 引入本地 embedding**(如 ONNX 本地模型,零外呼但引依赖+占资源); **C 默认开+明确告知**(接受数据出门,定位让步)。
|
|
- 建议: A。中文关键词化后 LIKE 命中率可解决大头,先跑起来看真实命中率再议。
|
|
|
|
### C3 candidate 晋升把关策略默认值
|
|
|
|
- 选项: **A 全自动**(high 直接 published,零人工); **B 阈值+开关**(默认 high 自动/medium 复用晋升,提供保守开关回到全人工); **C 保留人工审核为默认**。
|
|
- 建议: B。C2 未决前 candidate 质量未经验证,默认值定保守些,开关给激进留门。(B4 机制先行不阻塞,等此拍板定默认值)
|
|
|
|
### C4 图片默认上传外部域名(9-28#17,可用性报告单列)
|
|
|
|
- 背景: 图片处理链路默认传外部域名,涉开源边界(工具代码零业务信息铁律)与隐私定位双重问题。
|
|
- 建议: 倾向改手动确认+默认本地处理;需用户对开源边界表态后转派工。
|
|
|
|
---
|
|
|
|
## 二B、UI/UX 扩展批(2026-09-29 增补,依据《05-代码审查/整体UIUX三维走查-2026-09-29.md》)
|
|
|
|
> 三维走查结论: 08-02 基线 P0/P1 已全部修复清零;增量集中在可靠性竞态/假成功、视觉 token 漂移、AI 触点空白。
|
|
|
|
### U 系(可靠性+易用性,确定性高,直接派工)
|
|
|
|
- **U1 反馈真实性与竞态守卫**(走查#1-6+#14+#15,8 条): Knowledge 创建失败仍弹成功 toast(:384 补 `if (!r) return`)、AuditLog 翻页竞态(:289 补 seq 守卫)、TaskDrawer 切任务慢响应覆盖(:249 捕获 taskId 校验)、GitChanges 双源竞态+三处静默 catch(:352 seq+moduleId 双校验)、回收站 purge 双击(:83 busy 禁用)、灵感状态切换零反馈(:452 补 catch)、FileExplorer 失败仅 console(:464/529/545 补 Message)、Dashboard 故障渲染成空态(:81 消费 store.error 补 banner)。修法模式已给,照抄各页已有守卫先例
|
|
- **U2 溢出与可见性**(纯 CSS 低风险,#7-10): FilePreview diff 长行改 pre-wrap、TaskDetail/TaskOutputCard 宽表格补 overflow-x、ConfirmDialog 加 overflow-wrap:anywhere、global.css 滚动条色抽 --df-scrollbar token+light 覆写
|
|
- **U3 视觉 token 收敛**(#11-13): 阶段徽章 6 色(ProjectDetail:1430/ProjectCard:140)、优先级色(Tasks:1247/TaskDetail:877/TaskBatchBar:272)、git untracked #999(GitChanges:671/FilePreview:658)全部对齐已有 --df-* token,延续 9753a6f 收敛工作
|
|
- **U4 小清理**(易用性 3 条): Tasks.vue:828 alert 换 ConfirmDialog+i18n、FileExplorerDetached 坏参数补错误态、router /dev/x6 加 DEV 守卫
|
|
- 执行顺序: U1 → U2/U3 可并行(文件少交集,U2 动 FilePreview 与 U3 同文件注意先后) → U4 随批。每批 vue-tsc+手动验证对应页面
|
|
|
|
### S 系(智能化触点,接线类确定性高先做)
|
|
|
|
- **S1 知识库「立即提炼」按钮**: 后端/API/store 三层全就绪零调用(knowledge_extract_now 已注册,stores/knowledge.ts:191),Knowledge 收件箱头部加按钮+embedding failed 批量重试入口。**纯接线**
|
|
- **S2 想法批量评估接线**: evaluate_ideas_batch(idea.rs:318)闲置,Ideas 过滤栏加「批量评估 pending」,复用 IdeaDetail 渲染。**纯接线**
|
|
- **S3 业务页带上下文开 AI 面板**(最大架构缺口): useAiPanel.openWithAugmentation({kind,id}) 预填 @提及+模板,复用 augmentation/resolvers.rs;TaskDetail 先落「AI 分析」首个按钮。中等工作量
|
|
- **S4 AI 触点通用组件**: 统一入口样式/失败提示/结果卡槽,与 S3 同批落(否则每页复制新样式)
|
|
|
|
### A 系(授权体验,用户需求)
|
|
|
|
- **A1 「信任所有目录」总开关**: `check_file_tool_auth`(audit/path_auth.rs)读 Settings KV,bypass 开启时 NeedsAuth→Authorized;Settings AI 面板加开关;开启时对话区常驻横幅「授权已放行」防静默裸奔。**黑名单保留硬拒**(凭据目录自保护,见决策 D2)
|
|
|
|
### 新增决策卡
|
|
|
|
- **D1 智能化功能取舍**: S 系接线类(S1/S2)已派工;产品类空白待拍板优先级 — 工作流失败 AI 诊断/Dashboard AI 周报(真实进度替换硬编码映射表)/任务推进风险检查/对话转任务草稿/项目健康度。建议先做「Dashboard 进度真实化」(非 AI 也该修,constants/project.ts:52-59 硬编码百分比)再挑 1-2 个 AI 触点
|
|
- **D2 授权总开关是否连黑名单一起放行**: 建议否(黑名单是 .ssh/.aws/凭据自保护非体验问题);若确要全放,须二次确认+风险自担提示
|
|
|
|
## 三、留痕
|
|
|
|
- 本单与走查报告、执行计划(上下文管理演进-执行计划-2026-07-20.md,T1-T5)构成同一工作线的三层文档: 设计→诊断→派工。
|
|
- UI/UX 走查依据: 《05-代码审查/整体UIUX三维走查-2026-09-29.md》(三路子代理+主代理抽查核验 4 条属实)。
|
|
- 各批完成后在 docs/todo.md 对应条目销账,验收证据(命令+结果)写进提交 body。
|