Skip to content

Beta v0.4.34

Pre-release
Pre-release

Choose a tag to compare

@li-xiu-qi li-xiu-qi released this 16 Jul 13:31
37121c2

Changelog v0.4.34 - 2026-07-11

修复 (Bug Fixes)

修复新建对话后 tokens/llm-selection 404、界面回退到旧会话的问题(issue #147

问题描述

  • 现象:工作区内点击“新建对话”后,新会话界面短暂出现又回退到旧会话;新会话的 tokensllm-selection 接口返回 404;连续点击会在后端遗留多个草稿会话。
  • 原因:v0.4.34 的 release merge(0448e6b)在解决 useSessionOrchestrator.ts 冲突时取了功能分支上的旧版本,把主干上 4 个新建会话修复(2a72168847e1f25f8e4e678547fc)静默回退;同一次合并还删除了后端回归测试 test_execute_stream_binds_unbound_draft_to_workspace

改动内容

  • 恢复 handleNewSession 调用 POST /api/sessions/create 创建后端会话元数据(失败不阻塞 UI,前端继续乐观切换)。
  • 恢复“新建对话总是创建全新 session”:不再复用 available-draft 预热草稿,空会话时也不复用当前 sessionId。
  • 补回被合并删除的后端回归测试 test_execute_stream_binds_unbound_draft_to_workspace

文件变更

  • apps/web/src/pages/WorkspacePage/hooks/useCodeExecutor/useSessionOrchestrator.ts
  • apps/backend/tests/test_agent_execute_stream_lazy_create.py

修复手动压缩被反增检测静默丢弃的问题

问题描述

  • 现象:用户手动触发上下文压缩(/compact)后无任何效果,history.json 不产生压缩快照与摘要。
  • 原因:压缩的反增检测要求压缩后总 token 至少降低 5%,但检测口径包含 system prompt 等不参与压缩的固定开销;当固定开销占比高时(日常会话的常见情况),可压缩内容占比小,总降幅必然达不到 5%,导致 LLM 摘要已生成却被静默回滚。

改动内容

  • 手动强制压缩(force=True)跳过反增检测:用户显式触发且摘要已产出,不再因降幅不显著而丢弃。
  • 自动触发(达到上下文阈值)保持原有反增检测不变,仍用于避免无效压缩循环。
  • 补充单元测试覆盖两条路径:force 跳过检测、自动触发仍被拦截。

文件变更

  • apps/backend/app/services/agent/runtime_backends/aiasys/session_compaction.py
  • apps/backend/tests/test_compaction.py

功能 (Features)

安装脚本 Windows 分支改为优先 NSIS exe

问题描述

  • 现象:apps/desktop/scripts/install.cjs 的 Windows 分支一直走绿色版 zip 解压逻辑,与桌面打包产物的实际主推格式(NSIS exe)不一致;本地验证时经常出现 Agent 生成 zip 安装命令而不是 exe。
  • 影响:规范文档、脚本行为、打包产物三者口径不统一,增加人工确认成本。

改动内容

  • apps/desktop/scripts/install.cjs Windows 分支改为优先识别 .exe NSIS 安装包并静默安装,.zip 绿色版降级为 fallback。
  • 更新 docs/guides/getting-started/desktop-app.mdAGENTS.md 中"桌面打包优先"的表述,统一为 NSIS exe 优先。

文件变更

  • apps/desktop/scripts/install.cjs
  • docs/guides/getting-started/desktop-app.md
  • AGENTS.md

功能 (Features)

新增文件编辑保存快捷键(Ctrl+S / Cmd+S)

问题描述

  • 现象:在代码编辑器、Markdown/HTML/Code 预览的源编辑模式下修改文件后,只能通过点击“保存”按钮提交,缺少用户熟悉的全局保存快捷键。
  • 影响:与 VS Code、Obsidian 等工具的交互习惯不一致,频繁点击保存按钮降低编辑效率。

改动内容

  • 新增通用 hook useSaveShortcut,统一拦截 Ctrl+S(Windows/Linux)和 Cmd+S(macOS),在满足条件时调用保存回调。
  • CodeEditorPanel 接入快捷键:仅当文件可编辑、存在未保存修改且不在保存中时响应。
  • FilePreviewPanel 的 Markdown / HTML / Code 源编辑模式接入快捷键:仅在源编辑模式、可编辑且有未保存修改时响应。
  • 保存中状态自动忽略重复触发,避免重复提交。

文件变更

  • apps/web/src/hooks/useSaveShortcut.ts(新增)
  • apps/web/src/components/editor/CodeEditorPanel.tsx
  • apps/web/src/components/layout/WorkspaceSidebar/preview/FilePreviewPanel.tsx

新增保存快捷键单元测试

改动内容

  • 新增 useSaveShortcut 单测文件,覆盖以下场景:
    • Ctrl+S 触发保存
    • Cmd+S 触发保存
    • 仅修饰键(无 S)不触发
    • enabled=false 时不触发
    • isSaving=true 时不触发

文件变更

  • apps/web/src/hooks/__tests__/useSaveShortcut.test.mjs(新增)

新增保存快捷键端到端测试

改动内容

  • 新增 Playwright e2e 测试,验证在代码编辑器和 Markdown 预览源编辑模式下按下 Ctrl+S 后文件内容正确持久化。
  • 测试覆盖创建文件、进入编辑模式、修改内容、快捷键保存、API 回读验证的完整链路。

文件变更

  • apps/web/e2e/lifecycle/workspace-file-save-shortcut.spec.ts(新增)

新增 PowerShell 版本感知与提示词注入

问题描述

  • 现象:Windows 上 Agent 默认按 PowerShell 7(pwsh)语法生成命令,但用户系统实际是 PowerShell 5.1(powershell.exe),&&、三元运算符、?? 等写法在 5.1 直接报错;经 WSL 互操作时语法混用报错更多。
  • 影响:Agent 生成 shell 命令时无法感知宿主真实 PowerShell 版本,命令执行反复失败。

改动内容

  • 后端自动检测宿主 PowerShell 环境(pwsh 与 powershell 的路径、版本),生成 ${POWERSHELL_SECTION} 提示词段落注入 system prompt:检测到 5.1 时明确禁用 && / 三元 / ?? 等 7+ 专属语法,检测到 7+ 时提示经 WSL/旧版互操作需使用 5.1 兼容写法。
  • 设置页「环境增强」面板新增 PowerShell 目标版本选择(自动 / 强制 5.1 / 强制 7+),偏好持久化到 DATA_DIR/shell_preferences.json,固定 5.1 时提示词中的路径与规则同步切换。
  • 新增 PUT /api/system/shell-environment/powershell-target 接口保存目标版本。

文件变更

  • apps/backend/app/services/shell_environment.py
  • apps/backend/app/services/agent/config.py
  • apps/backend/app/agents/local_sandbox_agent_config/general_host_prompt.md
  • apps/backend/app/api/routes/system.py
  • apps/web/src/config/api.ts
  • apps/web/src/components/settings/ShellEnvironmentPanel.tsx

代码质量 (Code Quality)

  • 移除 apps/web/src/components/editor/CodeEditorPanel.tsx 中替换为 hook 后遗留的未使用 useEffect 导入。
  • 优化 FilePreviewPanel 中编辑模式启用条件,统一为 canEditScope && sourceViewMode === "source" && hasUnsavedChanges && !isSaving,避免在阅读模式下无意义监听快捷键。

架构重构 (Architecture)

前端弹窗底层从 Radix UI 迁移到 Base UI

问题描述

  • 现象:版本管理弹窗等场景下,点击详情后关闭弹窗,后续界面全部无法点击,页面处于卡死状态。
  • 影响:Radix Dialog 的 overlay 清理与路由切换存在竞态,document.body.style.pointerEvents 等样式可能残留,导致全局交互失效。

改动内容

  • dialogalert-dialogsheetdropdown-menu 四个封装组件从 Radix UI 迁移到 Base UI。
  • 保留原有业务代码 import 路径不变,通过封装层映射 Base UI 的 DialogRoot / DialogPopup / DialogBackdrop 等 primitive。
  • DropdownMenuTrigger 增加 asChild 兼容,对 DialogContent 增加 onEscapeKeyDown / onPointerDownOutside / onOpenAutoFocus 兼容,避免业务代码大面积修改。
  • 前端构建通过,TypeScript 类型检查无错误。

文件变更

  • apps/web/src/components/ui/dialog.tsx
  • apps/web/src/components/ui/alert-dialog.tsx
  • apps/web/src/components/ui/sheet.tsx
  • apps/web/src/components/ui/dropdown-menu.tsx

测试 (Tests)

新增 PowerShell 提示词注入单元测试

改动内容

  • 新增 17 个用例,覆盖:pwsh / powershell 检测与优先级、目标版本偏好持久化与校验(auto / 5.1 / 7+)、5.1 与 7+ 两种提示词段落内容、模板 ${POWERSHELL_SECTION} 占位符注入、env_info 注入渲染链路。

文件变更

  • apps/backend/tests/test_powershell_prompt_section.py(新增)

新增新建会话回归端到端测试(issue #147

改动内容

  • 新增 Playwright lifecycle 测试:工作区内点击「新建对话」后,断言新会话的 tokens / llm-selection 接口返回 200、URL 停留在新 session、界面不回退到旧会话。
  • 已在回退代码(修复前)上验证测试失败、在修复后代码上验证通过,双向确认有效。

文件变更

  • apps/web/e2e/lifecycle/conversation-create-flow.spec.ts(新增)

重写过期的新建工作区端到端测试

问题描述

  • workspace-create-flow.spec.ts 写于 v0.4.2 时期,断言的「工作区启动面板」「资产」按钮等入口在产品改版后已不存在,4 个用例全部失败但长期未被发现,新建工作区核心旅程实际处于无有效 e2e 覆盖状态。

改动内容

  • 按当前 UX 重写为 2 个用例:
    • 弹窗基本信息校验:任务名称/任务说明、空名称禁用创建按钮、无历史沙盒控件。
    • 创建核心旅程:弹窗创建工作区 → 路由进入新工作区 → 输入框可用 → 新会话 tokens 接口 200 → 侧边栏出现新工作区。
  • 无 id 访问 /workspace 的工作区首页场景由既有 workspace-home.spec.ts 覆盖,不再重复。

文件变更

  • apps/web/e2e/lifecycle/workspace-create-flow.spec.ts(重写)

What's Changed

  • fix(session,backend,desktop): 修复同一工作区新建会话 400 及 Bug Swarm 首轮 P0/P1 问题 by @li-xiu-qi in #141
  • docs(readme): 将社区与联系图片替换为飞书文档 by @RachelJ-Li in #144
  • release: v0.4.34 Base UI migration and workspace improvements by @li-xiu-qi in #145
  • release: v0.4.34 强制重新发布 by @li-xiu-qi in #149
  • fix(backend): PowerShell auto 检测同时存在 7+ 和 5.1 时按 5.1 兼容 by @li-xiu-qi in #150
  • fix(web): 删除全部工作区后停留在零工作区页面 by @li-xiu-qi in #151
  • fix(ui): 统一 DropdownMenuItem 高亮/悬停背景色 by @li-xiu-qi in #152
  • release: v0.4.34 补丁合集(PowerShell / 删除工作区 / 下拉菜单样式) by @li-xiu-qi in #153
  • release: v0.4.34 强制重新发布 - PowerShell 检测策略修正 by @li-xiu-qi in #154

Full Changelog: v0.4.33...v0.4.34