# 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)(0929 后拍板改向:黑名单一并放行,见 D2 留痕) ### 新增决策卡 - **D1 智能化功能取舍**: S 系接线类(S1/S2)已派工;产品类空白待拍板优先级 — 工作流失败 AI 诊断/Dashboard AI 周报(真实进度替换硬编码映射表)/任务推进风险检查/对话转任务草稿/项目健康度。建议先做「Dashboard 进度真实化」(非 AI 也该修,constants/project.ts:52-59 硬编码百分比)再挑 1-2 个 AI 触点 - **D2 授权总开关是否连黑名单一起放行**: 建议否(黑名单是 .ssh/.aws/凭据自保护非体验问题);若确要全放,须二次确认+风险自担提示 → 0929 后拍板:改为连黑名单一并放行(体验优先),二次确认+常驻横幅已落地 ## 三、留痕 - 本单与走查报告、执行计划(上下文管理演进-执行计划-2026-07-20.md,T1-T5)构成同一工作线的三层文档: 设计→诊断→派工。 - UI/UX 走查依据: 《05-代码审查/整体UIUX三维走查-2026-09-29.md》(三路子代理+主代理抽查核验 4 条属实)。 - 各批完成后在 docs/todo.md 对应条目销账,验收证据(命令+结果)写进提交 body。