Skip to content

feat(ai): 重构聊天助手,完善并行分析、连续上下文、模型配置与桌面体验 - #144

Open
xiaoshengbao wants to merge 5 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/ai-agent-pr-20260914
Open

xiaoshengbao wants to merge 5 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/ai-agent-pr-20260914

Conversation

@xiaoshengbao

@xiaoshengbao xiaoshengbao commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

改动目标与交付范围

本 PR 将聊天 AI 助手迁移到 DeepAgents 执行图,并配套调整任务规划、连续对话、长上下文、资料来源、模型配置、流式界面和本地检索。用户可以围绕聊天资料持续追问,查看答案依据与实际执行进度;较长的分析在停止、版本修订或上下文整理后,可以使用已保存的原文、发现和检查点继续。

这是一批累积更新,包含执行引擎迁移及后续修复。以下说明以 39fec6a 的实际生产调用链为准;仓库保留的早期验收文档、旧执行器和过渡实现另行标明。

差异规模

相对原仓库 main 的共同祖先:5 个提交、281 个文件,新增 30,529 行、删除 3,379 行。按文件用途分组如下,每个文件只计入一组:

分组 文件数 新增行 删除行 主要内容
AI 后端 55 10,471 693 执行图、工具合同、并行计划、上下文、模型适配及历史兼容
其他后端 9 454 65 AI/检索接口、本地索引、实时消息及导出读取
前端代码与配置 46 1,783 303 对话组件、来源与图片、模型入口、上下文展示和构建配置
测试与测试页面 80 9,715 620 后端、前端、桌面回归及隔离预览夹具
验收和诊断工具 41 3,822 0 模拟/真实模型验收、原文核对、浏览器/Electron 检查和耗时诊断
文档与证据记录 40 3,227 7 架构、修复原因、分阶段验收、计量和 UI 检查
依赖锁文件 2 984 1,668 Python 与前端依赖调整
桌面、CI 与项目配置 8 73 23 启动、打包、工作流和忽略配置
合计 281 30,529 3,379

1. 执行引擎:接入官方 DeepAgents 图

  • AgentService 的生产继承关系调整为 DeepAgentRuntime + DeepProjection + AgentTimeline。服务层负责账号、对话、任务生命周期与可见状态;模型循环、工具调用和子图使用官方 create_deep_agent
  • 固定 deepagents==0.7.13,通过 uv.lock 锁定依赖;DeepChatModel 将已有供应商客户端接入执行图,统一模型调度、计量和异常处理。
  • 保留原生工具调用与 JSON 协议适配。只有上游明确拒绝相关工具参数时才进入兼容处理;工具参数完整并通过 JSON 校验后才交给执行图,避免使用流中尚未拼完的参数。
  • 初始工具与已选范围、待提交页、现有证据关联;问候和能力说明可以直接回答,查询资料时再提供对应工具和范围状态。
  • 普通问答允许依据足够的证据结束;用户明确要求完整分析时,必须满足范围、分页和提交状态要求。生成正文后直接交付,当前生产主链不再追加独立的引用修复、证据复核或遗漏核查模型调用
  • agent_continuous.pyagent_events.pyagent_report.py、旧子任务执行器及部分校验实现仍存在于这批差异中,用于历史实现保留、共享能力或回归;不能据其存在认定新任务仍运行旧主循环。

主要入口:ai/agent_service.pyai/deep_runtime.pyai/deep_model.pyai/deep_projection.py。本说明中 ai/src/wechat_decrypt_tool/ai/

2. 对话、查询范围与消息读取

  • AI 对话以微信账号隔离,历史列表、草稿和当前 AI 对话不随微信聊天切换而被清空;保留新建、重命名、删除和历史来源读取能力,子任务不会混入普通对话列表。
  • 支持当前聊天、点名会话、跨聊天、人物、日期和最近 N 条等查询条件。同一对话后续轮次继承仍有效的上下文;新轮范围由当前要求重新校验,历史范围句柄不直接复用为新执行权限。
  • scope_handle 由服务端绑定账号、运行和输入版本。跨账号、跨运行、过期句柄,以及越过指定聊天、日期或发送者范围的读取会被拒绝。
  • 明确的日期和时刻由程序处理,保留固定截止时间和左闭右开区间;最近 N 条表示选定范围内的总量,分页大小单独管理,避免把每个聊天各 N 条误当成总共 N 条。
  • 阅读保留时间游标、同秒消息身份和长消息字符位置;根据输入容量调整读取批次,失败时不推进尚未成功提交的游标。
  • 完整分析按页先保存原文,再提交带真实来源的发现;无相关发现也要提交空结果。待提交页可以重放,已完成页和相同范围的已有成果可以复用。
  • 统计与内容分析维护不同的完成状态。消息数量及分布由程序计算;“计数完成”不代表“内容全部分析完成”。关键词命中、已读取、已提交分析、已引用也分别记录。
  • 实时来源不可用、快照落后或原锚点 404/410 时返回明确缺口。可回退到已保存原文时保留原文并说明缺少上下文;完整任务保留阶段结果与继续入口,不将缺口标记为全量完成。

主要入口:deep_tools.pyagent_reading.pymessages.pyrecent_bounds.pyagent_workspace.py

3. 主模型先取证、再规划并行工作

新任务使用 subtask_plan_version=2

  • 选择范围、写待办或数据量较大本身不会启动子 Agent。主模型必须先取得实际搜索、读取或统计回执,并给出初步发现与值得并行的理由。
  • plan_parallel_work 同时要求填写主线工作、分支范围、具体任务说明、预期交付和依赖;主线不能只有“等待”或“汇总”。
  • 每轮最多三个子分支。程序检查资料归属重叠、重复分支、未完成依赖、无效句柄和未经计划的委派;子任务不递归创建子任务。
  • 仍通过官方 task 入口启动,立即返回任务句柄;主模型继续分析并用 record_main_analysis 保存有来源的主线成果,再按需要等待结果。
  • 分支支持指定原文清单、明确完整分析的独立范围,以及带固定检索目标的独立范围。一个分支可处理多页,分页不会额外创建 Agent,检索结果不会伪装成全量覆盖。
  • 首次请求注入待分析正文和提交编号;无命中页由程序处理;最后一页成功提交后直接结束子图,减少重复读页和仅为收尾报告增加的调用。
  • 主模型通过 read_results 分页读取事实,使用 finish_parallel_work 确认结果已读、关系已整合及失败缺口;跨分支最终判断仍由主模型承担。
  • calculate_values 提供十进制计算,金额等计算建立在已确认的事件和方向之上,不让子分支各自猜测跨分支总额。
  • 主任务和子任务共用应用级四路模型调度。停止或补充要求会取消相关后台工作,旧版本迟到结果不能写入新版本;继续任务复用完成的分支和检查点。
  • 移除了普通问答固定三次资料操作、固定核查轮数后强制收尾的限制。需要继续核查时可继续搜索和读取,完整覆盖仍由用户要求决定。

主要入口:deep_planning.pydeep_dispatch.pydeep_partition.pydeep_subtasks.pydeep_calculation.py

4. 连续上下文与可恢复压缩

当前策略由 SawtoothSummarization 执行,持久化分段整理复用 DurableSummarization

  • 同一对话跨轮、重启继承有效消息、工具结果和已提交摘要。通过官方图 API 还原增量检查点,生成当前版本的 context:seed,不将数据库中最新一行检查点直接当成完整历史。
  • 默认达到模型窗口的 80% 才整理,实际输入容量更小时先保护请求;保留约模型窗口 16% 的近期完整交互,切点向前对齐工具调用及返回。压缩后不追求固定 50% 水位。
  • 当前生产策略保留低压力下的原始消息;不会再因为旧工具结果超过 2 KB 就自动换成目录,也关闭了框架对长用户输入、工具参数和结果的自动移出。
  • 优先使用同一模型、系统提示、工具定义和待整理前缀发起一次摘要请求,禁止摘要调用工具;只有完整摘要请求放不下时才进入有界、持久化的分段整理。
  • 摘要保留用户目标与纠正、有效范围、带来源的发现、完成/未完成工作、下一步和归档入口。空摘要、截断、非文本、虚构来源或路径以及没有缩小历史的结果不提交。
  • 先写入完整历史归档,再将摘要、绝对切点、前缀指纹、归档路径与作业完成状态通过事务提交。主请求随后失败、图状态尚未回写时,也能恢复已成功提交的整理结果。
  • 同一对话的历史虚拟资料以只读方式继承,原文证据进入当前任务资料库,以支持后续引用和定位。取消、版本变化或事务失败不会覆盖原投影。
  • 空间仍够时,暂时无法摘要可保留原历史继续;实际超限时必须确实缩小上下文才重试,无法恢复则保存现场与继续入口。当前策略不以归档目录代替有效摘要
  • 请求预算预留实际申请的输出容量,主模型和摘要请求的计量、校准分离。校准锚点必须匹配完整旧请求前缀;更换模型、工具或改写消息不能沿用旧锚点降低估算。

deep_context.py 和较早的上下文修复文档保留了过渡机制;当前行为以 deep_sawtooth.pydeep_conversation.py连续上下文说明 为准。归档可还原原文,不代表摘要语义必然无遗漏。

5. 模型选择、思考参数和供应商适配

  • 输入框统一为“模型 · 强度”入口,在同一浮层切换模型列表和强度配置;服务分组、上游列表、手动模型 ID 与全局选择记忆保留。
  • 新增持久化的 selected_model,按轮保存配置快照;切换模型清除不适用的显式思考参数,恢复默认会删除覆盖值。运行中补充和停止后继续使用原快照,新轮采用新选择。
  • 从 models.dev、上游能力和手动配置合并模型信息,按供应商、准确接口地址和模型 ID 匹配。区分同主机 Coding Plan,未知代理不直接继承官方同名模型的请求格式。
  • 根据实际能力提供离散等级、开关或 Token 预算;只有笼统 reasoning=true 或能力未知时显示说明,不生成通用档位。
  • 获取上游列表后重新解析能力,避免早期空缓存遮住后来获取的信息;设置读取的目录刷新转到后台,降低远程目录对常规设置读取的阻塞。
  • 补充 Xiaomi MiMo 服务预设,以及多轮工具调用需要的 reasoning_content 透传;内部思考字段不作为回答正文显示。
接口类型 对应参数处理
OpenAI 兼容等级 reasoning_effort
Claude output_config.effort 或预算形式的 thinking
DeepSeek / MiMo / Kimi / 智谱 / 火山 对应能力下的 thinking.type
百炼 / 硅基流动 enable_thinking / thinking_budget
OpenRouter reasoning
Gemini 兼容接口预算 extra_body.google.thinking_config

参数映射以已确认能力和校验结果为前提。模型、辅助摘要、媒体及重试请求统一调度和记录用量;上游未提供用量时保留未知,不据保守字节估算补造账单。

主要入口:model_selection.pymodel_reasoning.pymodel_catalog.pyproviders.pyreasoning_client.pymodel_scheduler.py

6. 来源引用、人物身份与媒体资料

  • 来源绑定稳定消息身份,保留会话、发送者、时间、原文与检索来源,支持分页查看及定位原消息。
  • 区分消息发送者和正文中被谈论的人物。人物与图片引用使用保存的映射;人物身份链接不等同于消息证据。
  • 增强流式 Markdown 引用处理,避免半截标记闪现;新增引用和对应身份随正文事件一起发送,减少正文已显示而来源仍等待快照的情况。
  • 来源侧栏保留原文、附近上下文及节选说明;普通检索和完整分析使用不同的读取/分析提示。
  • 回答中的图片使用该轮真实资料集合,提供切换、缩放、旋转、拖动、还原和原消息定位;查看已保存图片不需要重新请求视觉分析。
  • 媒体解析与当前运行的模型选择、能力和配置快照衔接;已保存解析可复用。缺失、损坏、加密、超限或不支持的附件返回明确失败分类,不能当成已分析资料。

主要入口:agent_references.pymedia.pyAgentAnswer.vueAgentSourceInspector.vueAgentImageViewer.vueagentMarkdown.js

7. 前端对话、执行过程与断线恢复

  • 对话容器从 @assistant-ui/vue 适配切换为按需引入的 AI Elements Vue 组件和 vue-stick-to-bottom,按后端消息 ID 保持节点生命周期;保留上游固定提交及 Apache-2.0 许可文件。
  • 侧栏和展开视图共享对话状态,保留草稿、阅读位置及步骤展开状态。中文输入法确认不会误发送,Shift+Enter 换行;运行时 Enter 提交补充,主按钮保持停止用途。
  • 过程展示覆盖工具状态、已读取量、主线工作、并行理由、各分支目标与交付;停止后不继续显示虚假的运行数量。子任务详情和事实结果按需分页加载。
  • 上下文圆环显示模型窗口比例,浮层分别解释已用估算、输入容量和模型窗口;历史预算字段兼容读取。
  • 压缩节点作为可保留的对话分隔,展示前后占用、状态和完成摘要;通过精确任务版本与作业 ID 读取记录,避免把下一次摘要误显示为上一次摘要。
  • SSE 从每 0.5 秒轮询调整为事件通知与 15 秒空闲心跳;首次连接固定事件游标,每批最多 100 条并持续排空,减少高频流式事件积压。
  • 前端区分首次连接、断线和恢复;恢复后补取快照。事件按运行、输入版本及修订号合并,重复或迟到事件不能覆盖较新状态,关闭的流也不能再更新界面。
  • 正文不再同时经状态补丁和时间线重复传输完整累计文本;流式引用映射随新增标记发送。

主要入口:ChatAgentPanel.vueAssistantThread.vueAgentRun.vueAgentSubtasks.vueAgentContextCompaction.vueuseAiApi.jsagentTimeline.jsrouters/ai_agent.py

8. 本地检索与实时消息读取

  • 新增全账号渐进索引模式,按会话和时间分段保存进度及覆盖。已经提交的部分可以查询,未完成部分保持明确的 partial 状态。
  • 任务创建和配置变更共用锁,暂停、继续、增量更新及查询处理保持一致;前台查询期间后台读取和编码主动让出。
  • 合并已提交原文的关键词命中与语义结果,补上旧全文索引尚未覆盖的新消息;语义索引不可用时保留基础搜索和原因说明。
  • 向量检索按片段计算距离,再展开符合过滤条件的消息,保留稳定排序和重叠消息去重,减少重复计算。
  • 实时读取跨会话复用数据库表目录缓存,保留命中 30 秒、缺失 2 秒的失效边界;二级命中沿用原始时间戳,避免不断延长过期缓存。
  • AI 读取链路保留 source/msg_source 中的原始 @ 身份;旧库缺少该字段时兼容读取。相关消息和联系人 SQLite 读取改为 mode=ro

主要入口:local_search/progressive.pylocal_search/index.pylocal_search/service.pychat_realtime_reader.pychat_export_service.pychat_helpers.py

9. 桌面启动、构建及外围修复

  • 静态桌面 UI 跟随实际就绪的后端端口,并支持指定静态产物目录,避免继续使用已失效的开发服务地址。
  • 启动导航加入总截止时间,loadURL 挂起也能被中断并进入明确失败处理;同源首次使用页跳转继续保留。
  • 静态开发模式也按 UI build ID 清理旧缓存;清理失败时不提前记录新 build ID。主窗口首次就绪后显式显示,调试工具仅在显式调试启动时自动打开且不抢焦点。
  • 前端升级到 Tailwind 4,使用 Vite 插件并调整自动组件导入、样式入口和两个年度统计组件的 @reference;更新依赖及锁文件。
  • 补充朋友圈头像加载失败后的文字回退、独立预览场景的 API 基址兼容,以及验收用 Vite/流代理入口。
  • 冻结打包收集 DeepAgents、LangChain 相关动态模块;AI 跨平台工作流使用 uv 管理的 Python 3.11,发布检查设置 WDA_REQUIRE_NSIS_TEST=1

主要入口:desktop/src/main.cjsdesktop/src/renderer-startup.cjsdesktop/scripts/ai-packaging.cjsfrontend/nuxt.config.ts.github/workflows/

10. API、持久化与旧版本兼容

接口或记录 变化与用途
GET /api/ai/settings 返回 selected_model,模型目录在后台刷新
PUT /api/ai/selected-model 校验并保存服务、模型和思考参数选择
GET /api/ai/profiles/{id}/model-capabilities 按指定模型查询合并后的能力,不返回密钥
Agent 轮次输入 增加模型选择、thinking_modethinking_budget,保留 reasoning_effort 兼容
POST /api/ai/agent/runs/{id}/restart 使用新引擎重新运行旧任务,支持请求幂等
旧引擎任务的 continue 返回 409 legacy_restart_required,明确指向重新运行;不混用旧检查点
GET .../runs/{id}/subtasks / subtasks/{task_id} 获取指定版本的子任务列表和分页事实
GET .../runs/{id}/context-compactions/{job_id} 读取同账号、同任务、精确版本的压缩状态及完成摘要
GET .../threads 增加 unassigned 过滤,隐藏内部子任务对话
本地检索设置 增加 agent_global,由服务端解析全账号聊天范围
context_budget 增加 window_percenttrigger_capacityretain_capacitycontext_revisioncompaction,保留旧字段
  • 新任务使用 engine=deepagentsengine_version=3checkpoint_schema=2。检查点存放在独立的 deepagents_checkpoints.sqlite3,命名空间包含账号、AI 对话、运行和输入版本。
  • 并发父子图共享官方检查点连接和写锁,最后一个使用者退出后关闭连接,减少并发写入互相等待。
  • 原文、分支、摘要作业和内部虚拟文件通过现有应用资料存储持久化;账号和版本检查同时作用于工具、资料接口及历史读取。虚拟路径不连接宿主文件系统。
  • 旧 v3 对话可恢复已有检查点;缺少完整检查点的历史只能恢复实际保存的问答和归档入口。主动继续旧规划任务时建立新执行版本、保留原文并重新规划。
  • 删除对话清理关联资料和各版本检查点。模型配置页未提交 compaction_policy 时保留旧值,旧上下文策略字段保留兼容,但不继续作为新策略的独立触发器。
  • 旧额度字段不再作为整轮工具数、模型数或运行时长上限;单次请求重试和上下文保护仍然存在。

11. 验证结果与覆盖边界

39fec6a 提交前重新执行

检查 结果 范围
后端 pytest 343 项通过,427.93 秒 ed8a35d..39fec6a 中改动的 18 个后端测试文件
Node 前端测试 62 项通过 frontend/tests/*.test.mjs,使用 Node 24
Vitest 26 文件、326 项通过 前端组件与交互回归
git diff --check 通过 提交内容格式检查
合并预检查 无文本冲突 PR 分支与核查时原仓库 main;不代表运行时集成已验证

上述后端 343 项是本次重新执行的相关集合,不是整个仓库全部后端测试数。首次使用本机 Node 18 遇到测试通配符及模块兼容问题,之后用 Node 24 完成前端验证。后端输出两条 LangChain v3 流协议实验性警告。

CI 首轮反馈与修复(016efd4

首轮 macOS 检查 在后端回归阶段得到 714 通过、4 失败,后续前端及冻结构建因此跳过。四项均已在 Windows 本地复现,修复仅涉及测试与 pytest 配置:

失败原因 修复
媒体分页测试桩不接受新增 include_images 关键字参数 对齐测试桩签名,并验证启用图片解析;保留中断后复用前两页的断言
CI 使用 pytest 入口时,仓库根目录不在模块搜索路径,无法导入 tools pyproject.toml 配置 pythonpath = [".", "src"],统一直接 pytest 与模块入口
MiMo 旧断言要求显式 high 档位不发送 thinking 更新为验证 thinking.type=enabled 且 high 保留,确保辅助请求不会关闭用户的显式思考配置
数量查询用例的 32K 模拟窗口触发与用例目标无关的压缩,固定模拟摘要无法继续缩小 为该用例配置 128K 窗口,严格断言读取 100 条、仅 3 次业务请求;小窗口与压缩恢复仍由专项测试覆盖

修复前四项全部失败,修复后四项全部通过;随后使用直接 pytest 入口运行媒体、数量范围、MiMo 回归、思考参数、模型媒体选择和锯齿压缩等 7 个文件,107 项通过(58.46 秒)。没有修改生产执行逻辑或放宽压缩保护。新提交另经 Gitleaks 检查,0 告警。新一轮跨平台 CI 已触发,完整结果以检查页为准。

Windows CI 超时修复(5f71a3a

上一轮跨平台检查 的 macOS 全部通过;Windows 后端为 717 项通过、1 项失败。唯一失败是 test_multiple_plans_share_parent_slots_and_queue_is_bounded:真实 SQLite 读写在 Windows runner 上较慢,触发整段并发执行的 45 秒期限。

  • 使用本地诊断夹具,在每次真实数据库连接前增加 4 毫秒延迟,复现旧测试的 TimeoutError;该夹具仅用于诊断,未提交。
  • 新测试通过事件先占满 4 个工作槽,再让共享队列填满 8 个位置,然后释放并等待排空。显式验证四路并发、队列上限、50 条资料完整覆盖和无重复处理。
  • 将整体防死锁期限改为 180 秒;取消或失败时释放等待者并回收任务。保留并强化功能断言,没有跳过测试或修改生产调度逻辑。
  • 相同慢速读写条件下,新测试通过(63.14 秒,8,596 次数据库连接);正常环境下整份并行分析回归 24 项通过(134.26 秒)
  • CI 输出最慢的 15 项测试耗时,以便区分逻辑失败与运行环境耗时。新提交的 Gitleaks 扫描 0 告警
  • 本地 Windows 补测桌面通知、启动和打包合同 11 项通过;PyInstaller 单文件构建成功,冻结运行检查返回 ok: true,覆盖 DeepAgents 执行图、SQLite 向量扩展、ONNX Runtime 与文档/图片媒体读取。首次启动因本机 C 盘无剩余空间导致解压失败,改用 D 盘临时目录后通过;未为此修改仓库配置。

新一轮完整跨平台检查 已在提交 5f71a3a 上全部通过,PR 的 5 项检查均为成功

当前提交的 CI 验证 Windows 2022 macOS 14
AI 与本地检索后端回归 718 项通过,1005.16 秒 718 项通过,199.48 秒
本次修复的共享队列测试 通过,51.74 秒 通过,6.34 秒
前端 Vitest 326 项通过 326 项通过
前端静态构建 通过 通过
桌面通知、启动和打包合同 11 项通过 11 项通过
冻结 AI 运行包 构建并运行通过,ok: true 构建并运行通过,ok: true

两平台后端仅有相同的 2 条 LangChain 实验性接口警告,无失败。其余 3 项 SNS 媒体跨平台检查和 Windows 安装器 Unicode 路径检查也全部通过。Windows 该测试的实际耗时超过旧 45 秒限制,进一步支持本次超时诊断。

重点回归对应关系

主题 测试入口
执行图、工具参数、范围与版本合同 test_ai_deepagents.pytest_ai_deep_contracts.pytest_ai_deep_reliability.py
先规划后并行、停止及恢复、分页不增加分支 test_ai_planned_work.pytest_ai_parallel_analysis.py
答案检查点、追问范围与连续上下文 test_ai_answer_checkpoint.pytest_ai_followup_scope.pytest_ai_sawtooth.py
压缩作业、旧记录恢复、来源及事务失败 test_ai_context_recovery.pytest_ai_deep_context.pytest_ai_compaction_records.py
模型选择、思考参数、媒体选型 test_ai_model_selection.pytest_ai_reasoning_selection.pytest_ai_selected_model_media.py
供应商和模型能力目录 test_ai_providers.pytest_model_catalog.pytest_ai_deep_mimo_regressions.py
界面、流合并、来源和工具错误 chat-agent.test.jsagent-timeline.test.jsagent-references.test.jsagent-tool-errors.test.js
模型浮层、子任务、压缩摘要 agent-model-config.test.jsagent-model-selection.test.jsagent-subtasks.test.jsagent-compaction.test.js

历史证据与尚未覆盖的部分

  • 仓库文档记录了多个阶段的隔离模拟、真实模型和 UI 验收,包含失败记录与后续修复;它们对应的版本、数据源和参数不同,测试数存在重叠,不在这里累加,也不视为当前最终版本全量通过。
  • ai-planned-work-cost-2026-09-14.json 的固定单页模拟对比显示,分支模型调用由 3 次降至 1 次、输入文本估算由 23,355 降至 3,346 Token。该对比只衡量分支固定开销,未包含主线规划整合,也不是供应商账单或整任务性能保证。
  • ai-context-recovery-live-verification-2026-09-14.json 记录了恢复修复阶段一次真实任务完成的状态与用量;后续连续上下文策略还有调整,不能把该历史样本当作新策略所有场景的真实验收。
  • 本次提交前未重跑完整跨平台安装包构建、全部真实模型矩阵和所有历史工具。相关验证应结合 CI 与明确版本的验收记录。
  • 原文归档、来源归属、分页覆盖与十进制计算有程序约束;这些检查不能保证任意模型生成的摘要、关系判断及结论完全正确。

12. 密钥与敏感配置检查

针对本次推送执行了独立检查,未向外部服务上传待检查源码或凭据:

  • 使用 Gitleaks 8.30.1 扫描 origin/main..main4 个新增提交,包含本 PR 的 3 个提交及独立动画提交,并展开合并提交差异;历史扫描 0 告警。覆盖已提交后又在后续版本删除的新增内容。
  • main1,296 个已跟踪文件导出完整快照扫描,得到 41 处告警;逐项核对来自 13 个与原仓库相同 blob 的文件,属于固定测试/模拟密钥和样例校验哈希,不是此次新增的真实服务凭据。
  • 补查新增/修改文件中的硬编码 api_key、token、password、Authorization 和私钥相关字段,核对命中的模拟测试值与普通配置值;未发现真实 API Key、访问 Token 或私钥。
  • 检查被跟踪文件名,未发现 .env、私钥文件、私钥证书包、SQLite 数据库或真实 wechat_db_config.json。本地 tmp/、运行备份和数据目录未推送。

因此本次未删除功能代码或重写提交历史。代码中的密钥配置字段、读取逻辑和固定测试夹具继续保留;扫描未检出真实凭据不等于对任意未知格式提供绝对保证。扫描报告只留在本地,未在 PR 中回显匹配值。

建议审阅顺序

  1. 生命周期与范围边界agent_service.pydeep_runtime.pydeep_tools.py
  2. 并行计划deep_planning.pydeep_dispatch.py / deep_partition.py → 相关确定性回归。
  3. 上下文与恢复deep_conversation.pydeep_sawtooth.pydeep_context.py / deep_backend.py / deep_checkpoints.py
  4. 供应商、媒体与来源:模型配置/适配模块 → media.pyagent_references.py
  5. 接口与前端routers/ai_agent.py / routers/ai.py → 时间线合并 → 对话、模型、子任务和压缩组件。
  6. 检索与交付local_search/、实时读取、桌面启动、Tailwind 和工作流;最后核对测试、验收工具及对应版本的文档。

当前行为的补充说明:任务规划连续上下文模型与思考参数。早期 DeepAgents 迁移记录上下文故障修复记录 用于解释演进背景,具体压缩及委派策略以上述最终实现为准。

@xiaoshengbao xiaoshengbao changed the title feat(ai): 集成 DeepAgents,完善任务规划、上下文恢复与模型选择 feat(ai): 重构聊天助手,完善并行分析、连续上下文、模型配置与桌面体验 Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant