agent-Specialization/server
JOJO 478d24c4dd feat(versioning): 重构版本控制为对话级浅备份 + 可选完全备份
本次变更是对版本控制功能的大范围重构,核心目标:
- 默认使用浅备份(只追踪 write_file/edit_file 实际修改的文件),避免大工作区首次初始化耗时十几秒;
- 保留可选的完全备份(git write-tree),不污染 git log;
- 回溯时统一选择范围(仅对话 / 对话+工作区)和模式(覆盖 / 复制);
- 修复复制对话、侧边栏同步、新建对话延迟、diff 统计与渲染等连锁问题。

后端改动:
- modules/shallow_versioning.py(新增)
  - 实现 ShallowVersioningManager:track_edit、make_snapshot、rewind、list_snapshots。
  - 基于 difflib.SequenceMatcher 计算真实 insertions/deletions,replace 场景正确显示 +N/-M。
  - diff 详情使用结构化 add/remove/context 行,不再解析 unified_diff 文本。
- modules/versioning_manager.py
  - 完全备份从 git commit 改为 git write-tree,字段 commit/parent_commit 改为 tree_hash/parent_tree_hash。
  - 恢复改用 read-tree + checkout-index;create_checkpoint 支持 diff_summary 参数。
  - get_checkpoint_detail 保留 API 字段名 last_commit/restored_commit 以兼容前端。
- core/main_terminal_parts/tools_execution.py
  - write_file/edit_file 在执行前调用浅备份 track_edit,保留编辑前状态。
- server/chat_flow_task_main.py
  - 消息轮次结束时根据 backup_mode 选择完全备份 create_checkpoint 或浅备份 make_snapshot。
  - 浅备份模式下同时写入 ConversationVersioningManager 检查点行,让前端能统一展示。
- server/conversation.py
  - restore/detail/list API 支持 shallow 模式;list/detail 对浅备份实时重新计算统计。
  - 创建对话时读取 personalization 的 versioning_backup_mode,shallow 模式固定 tracking_mode 为 conversation_only。
- core/web_terminal.py
  - _ensure_conversation_versioning_enabled 读取默认备份模式并写入 versioning meta。
- modules/file_manager/crud_mixin.py / replace_mixin.py
  - write_file / edit_file 返回 original_file / new_file / replacement_details(真实旧行/新行)。
- modules/personalization_manager.py
  - 新增 versioning_enabled_by_default、versioning_backup_mode(shallow/full)。
- utils/perf_log.py(新增)
  - 创建新对话全链路性能日志,用于定位延迟瓶颈。
- utils/conversation_manager/{index,list_search,crud}_mixin.py
  - 加性能日志;index_mixin 主动检查新增对话文件,修复侧边栏不同步。

前端改动:
- static/src/components/overlay/VersioningDialog.vue
  - 去掉顶部管理范围下拉;底部新增回溯范围与回溯模式选择。
  - diff 详情改为 div.diff-line 网格布局(marker + content),支持横向滚动,状态显示缩写 A/M/D。
  - 修复 pre 标签空白黑行、容器被挤窄导致折行等问题。
- static/src/app/methods/versioning.ts
  - 移除 mismatch 弹窗逻辑;支持 copy 模式;selectVersioningCheckpoint 增强错误捕获。
- static/src/components/personalization/PersonalizationDrawer.vue
  - 「工作区与权限」新增版本控制默认开关与备份方式选择。
- static/src/stores/personalization.ts
  - 新增 versioning_enabled_by_default、versioning_backup_mode 字段。
- static/src/components/chat/actions/ToolAction.vue / toolRenderers.ts
  - edit_file / write_file 工具展示基于 result.details / result.new_file 的真实替换结果。
- static/src/app/state.ts / watchers.ts / App.vue
  - 新增 versioningInitializingBackupToastId,完全备份初始化时显示 toast。
- static/src/app/methods/conversation/action.ts / message/send.ts
  - host + 完全备份 + 默认开启时,创建新对话/从 /new 发送首条消息显示「正在初始化备份」toast。

验证:
- /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/bin/python3.9 -m unittest test.test_server_refactor_smoke 通过。
- npm run build 通过。
- 宿主机与 docker 模式新建对话、编辑文件、回溯、复制对话均验证通过。
2026-07-07 12:07:44 +08:00
..
chat fix(android): 修复App文件下载、PDF卡片展示与本地媒体发送 2026-06-24 00:59:48 +08:00
status fix(server): 修正/api/app/version的project_root路径计算 2026-06-24 01:33:04 +08:00
tasks fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池 2026-06-25 04:16:44 +08:00
__init__.py refactor: split web_server into modular architecture 2026-01-22 09:21:53 +08:00
admin.py feat(admin): 管理员密码管理功能,支持搜索用户名/邮箱重置密码 2026-06-10 17:41:21 +08:00
api_auth.py feat: add api admin ui and container status fix 2026-01-25 10:49:52 +08:00
api_v1.py feat: add json-based extensible model registry and dynamic model UI 2026-04-09 20:56:54 +08:00
app_legacy.py fix(goal): 停止对话后清理工作区目标状态,避免继承到新对话 2026-06-20 13:06:37 +08:00
app.py refactor: split web_server into modular architecture 2026-01-22 09:21:53 +08:00
auth_helpers.py fix: persist onboarding prompt status and bump android app to 1.0.20 2026-04-07 20:08:33 +08:00
auth.py feat(docker): support isolated projects in web mode 2026-05-29 19:49:48 +08:00
chat_flow_helpers.py refactor(config): 统一配置源,迁移数据到 ~/.agents/agents/ 2026-06-13 21:37:02 +08:00
chat_flow_runner_helpers.py refactor: split terminal and server chat flow modules 2026-03-07 18:38:30 +08:00
chat_flow_runner.py refactor: further split runner and tools mixins 2026-03-07 20:25:58 +08:00
chat_flow_runtime.py refactor: further split runner and tools mixins 2026-03-07 20:25:58 +08:00
chat_flow_stream_loop.py refactor(models): use dynamic api model registry 2026-05-29 00:20:54 +08:00
chat_flow_task_main.py feat(versioning): 重构版本控制为对话级浅备份 + 可选完全备份 2026-07-07 12:07:44 +08:00
chat_flow_task_runner.py refactor: isolate chat task main pipeline module 2026-03-07 20:32:02 +08:00
chat_flow_task_support.py fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池 2026-06-25 04:16:44 +08:00
chat_flow_tool_loop.py feat: 宿主机模式网络沙箱 2026-06-19 00:22:30 +08:00
chat_flow.py fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池 2026-06-25 04:16:44 +08:00
context.py fix(models): preserve session model selection 2026-06-02 20:36:51 +08:00
conversation_stats.py feat(memory): refactor proactive memory and conversation recall 2026-05-27 03:09:42 +08:00
conversation.py feat(versioning): 重构版本控制为对话级浅备份 + 可选完全备份 2026-07-07 12:07:44 +08:00
deep_compression.py fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池 2026-06-25 04:16:44 +08:00
extensions.py refactor: split web_server into modular architecture 2026-01-22 09:21:53 +08:00
files.py feat(input): support file mentions 2026-07-04 22:58:58 +08:00
goal_flow.py fix(ui): refine message visibility and goal approval flow 2026-05-30 16:30:05 +08:00
monitor.py refactor: split web_server into modular architecture 2026-01-22 09:21:53 +08:00
security.py feat: add api v1 bearer auth and polling docs 2026-01-24 02:35:07 +08:00
socket_handlers.py fix(frontend): 修复刷新后AI等待提示与终端侧边栏重复问题 2026-06-22 20:35:00 +08:00
state.py refactor(config): 移除硬编码模型残留,部署级配置外置到 ~/.agents 2026-06-01 16:59:34 +08:00
usage.py refactor: split web_server into modular architecture 2026-01-22 09:21:53 +08:00
utils_common.py refactor(runtime): 运行态数据迁出源码树到 ~/.agents,日志默认关并加轮转,清理实验残留 2026-06-01 13:17:32 +08:00
work_timer.py fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池 2026-06-25 04:16:44 +08:00