Releases: Yongchu-Yitao/Cyrene
Releases · Yongchu-Yitao/Cyrene
Release list
v0.6.1
[0.6.1] - 2026-07-01
0.6.1 是 0.6.0 之后的正式维护版本,重点补齐浏览器自动化能力、桌面 Quick Chat 常驻体验、文档站与若干运行时稳定性修复。本版本为稳定 release,不是 beta / prerelease。
Added
- 浏览器自动化工具扩展 — 新增按坐标点击、按元素引用点击、按文本点击、按元素引用输入、等待、网络日志、结构化快照与多标签页管理等工具;Workbench / Legacy UI 中的浏览器实况说明与工具注册同步更新。
- 桌面 Quick Chat 常驻入口 — 增强 Electron 后台驻留、托盘入口、窗口复用和主进程消息契约;补充托盘图标资源与背景运行测试。
- 文档站资源 — 新增
docs/web静态文档站、Logo、交互脚本和样式,方便发布包外独立浏览项目说明。
Changed
- 元素交互更稳 — Electron / BrowserTabManager 的元素操作改为更可靠的页面级交互路径,减少受页面自定义 JS click 限制影响的失败。
- Chat-only 流式回复路径简化 — 流式请求不再额外发起一次 final reply LLM 调用,直接复用 phase-1 回复并保留用量统计,降低延迟与 token 消耗。
- 行为学习遥测后台化 — 工具执行后的
record_action记录改为后台任务,不再阻塞工具结果返回;失败只记录 debug 日志。 - 发布版本元数据统一 — Python 包、Electron 应用、lockfile、README、文档站、WeChat client 标识、WebUI cache-busting 参数与前端断言统一到
0.6.1。
Fixed
- 命令行生成的交付物提示 — Workbench 任务提示词明确要求 Bash / shell 生成最终文件后也必须调用
send_file,避免文件已生成但不进入「产物」面板。 - 地图 pin 视觉 — Leaflet pin 改为自定义可主题适配的地图标记,修复默认 marker 资源在部分打包场景下不稳定的问题。
- 设置页侧栏交互 — 调整设置浮层 tab 的 hover、active 与 focus-visible 样式,降低视觉抖动并改善键盘焦点反馈。
- 测试环境依赖 mock — Quick Chat 和 runtime tests 对 PIL / pypdf 的处理更稳,避免真实依赖存在时被 MagicMock 污染。
Tests
- 新增 / 更新浏览器会话、Quick Chat、托盘图标、后台驻留、行为学习、更新器平台匹配、Workbench 初始化计划、运行时修复与前端 cache-busting 等测试。
v0.6.0
[0.6.0] - 2026-06-29
首个正式版本,汇总自 v0.5.1 以来的累积更新。0.6.0 的主线是全新的 Workbench 工作台——以项目为中心的桌面工作环境,以及围绕它的可恢复任务执行、并发对话、记忆 / 知识体系,加上大量提示词缓存与稳定性优化。本版本把 feat/workbench 分支的全部工作合并进 main,并将版本号正式定为 0.6.0。
各
0.6.0-beta.*预发布的逐版本明细见下方 beta 段。
🏗️ Workbench 工作台(全新)
- 以项目为中心的工作台 — 全新桌面 UI:每个项目独立的看板、日程、知识、记忆、对话与个人资料页,与经典单 agent UI 并存、共享后端。
- 诚实的逐步任务执行 — 计划基于工作区实况生成(计划模式提交前可只读预探索),任务按步骤推进、可跟随可干预、可中途修订并保留进度;意图分流(问题 / 指令 / 任务)与「任务完成」收尾(finalize)。
- 可恢复的对话运行 — Chat 运行由进程级运行管理器持有,断线、切页或网络抖动后 agent 仍在后台继续并持久化结果,前端经独立只读接口重连追上;支持并发多会话。
- 对话编辑与分叉 — 可编辑已发送消息并从该点分叉新对话(原对话保留、标注 Forked),也可从任意位置重新生成回复(事务式替换,失败不丢旧回复)。
- SQLite 事务存储 — 以 SQLite 为单一真相源(
BEGIN IMMEDIATE+ 三方合并 + WAL),并发消息 / 会话 / 通知 / 记忆互不覆盖,取代旧的整文件 JSON 读改写。 - 工作区隔离与安全 — 每个项目限定到自身
workspacePath(主 agent 与 subagent 一致),新建项目走空工作区引导;workspace 路径安全校验防穿越。 - 产物与文件变更 — Artifact 一键下载(服务端校验不逃逸 workspace);即使非 Git 仓库也能记录有界文本快照生成统一 diff;
send_file显式产物信号优先于 git 推断。 - 上下文可视化 — 上下文分段 token 仪表 + 手动压缩对话;Settings 浮层、平台感知的全局快捷键管理器、subagent 状态 / 载荷面板。
💬 Quick Chat 全局快捷对话(全新)
- 全局快捷键唤起 —
Ctrl/Cmd+Shift+Space任意界面呼出浮动窗口,支持活跃窗口截图粘贴、独立窗口复用、常驻托盘生命周期。 - 完整对话体验 — 与主对话页共享运行管理器与消息卡片:工具调用轨迹、生成附件、实时思考卡片;运行服务端持久化,关窗后 agent 仍在后台继续。
🧠 记忆与知识
- 三层记忆 + 退场 — 上下文 → 短期跨会话摘要 → 长期
SOUL.md;短期与项目记忆均可按精确 ID 退场(retire_short_term_memory/retire_project_memory),退场条目留档但不再注入与召回。 - 记忆分类重构 — 区分
habit(如何做事)/conversation(如何沟通)/preference(静态喜好),新增内部reflection分类(agent bookkeeping,不在用户页显示);多词记忆召回支持分词 OR 匹配。 - 检索工具 — 新增
RecallConversation(按关键词 / session / 日期检索历史对话)与search_project_memory(项目内记忆搜索);RecallMemory为每条短期记忆返回稳定memory_id。 - 知识库 —
ListKnowledgeDocuments枚举文档与索引状态;Workbench 步骤摘要自动归档进项目知识库供后续检索;按 workspace 隔离;支持图片 vision 索引。 - 实体优先 — 涉及任务 / 计划 / 待办 / 决策的回答先查实体、以记录为准,执行计划前先拉取活跃事务与决策以复用。
🌐 浏览器自动化
- 实时直播不堵流 — 画面经
/ws/browser以二进制 JPEG 帧传输,SSE 只走轻量元数据,避免 base64 截图挤占事件流。 - 面板内实时控制 + 登录接管 — 用户可在直播面板内经 CDP 注入鼠标 / 键盘 / IME 直接操作 headless 页面(agent 动作自动让位);遇登录墙 / 验证码 / 2FA 可经
browser_request_takeover或切换有头窗口完成,再回到同一已登录会话继续;Workbench 自动打开浏览器侧栏。
⚙️ Agent 运行时与提示词缓存
- 提示词缓存优化 — 静态系统块前缀化(
static_system_extra)、run 级上下文前置于用户消息(fixed_ephemeral_system)、temporal 上下文移到尾部、统一 phase1/2 工具集、quit(reply=)直接交付(消除收尾重建——曾占缓存 miss 约 53%),显著提升前缀缓存命中。 - 运行打断 — 跟踪当前运行任务,打断时连同在跑的 subagent 一并取消。
- 稳定性 — LLM 瞬时错误有限重试、蒸馏上限与压缩阈值预检、SSE 心跳保活;DSML 流式工具标记抑制,防止泄露到 UI。
- 跨平台 Shell 与破坏性操作确认 — 自动识别 Shell 类型并调整执行策略;
rm/git reset --hard/dd等高危命令即使 full/auto 模式也强制二次确认,外发文件纳入不可逆副作用确认。
📦 平台、打包与更新器
- Windows on ARM — CI 同时构建 ARM64 与 x64 安装包;Release 默认捆绑 Workbench UI。
- 运行时目录治理 — 新增
cyrene.app_paths统一解析数据 / 缓存 / 临时目录,打包后不再把运行时数据写入只读资源或系统临时目录。 - 更新器 — 按平台 / 架构正确匹配安装包(修复 Windows 被推 macOS
.dmg)、读取 release asset 的 sha256 校验、可选 beta 更新通道、后台检查并在工作台提示新版本与体积。 - 启动不阻塞 — 知识迁移 / vision 索引后台化,修复打包桌面端 30s 启动超时;修复更新重启的 launch guard。
🔒 安全
- HTML artifact 隔离 — 用户生成的 HTML 仅在沙盒
srcDociframe 预览,不允许在继承后端 session 的子窗口打开。 - 路径校验与敏感信息脱敏 — workspace 路径穿越防护;错误文本中的 token / 密钥自动脱敏。
✅ 测试
- 全周期新增 / 更新数十个测试套件,覆盖 Workbench 任务 / 计划 / 对话 / 记忆 / 知识 / 存储并发、Quick Chat、浏览器接管与实时控制、更新器平台匹配、提示词缓存、Shell 守卫与破坏性操作确认等。前端 cache-bust 断言与各处版本元数据统一为
0.6.0。
v0.6.0-beta.16
[0.6.0b16] - 2026-06-29
Added
- 应用路径集中管理 — 新增
cyrene.app_paths,统一解析安装资源目录、用户数据目录、缓存目录和应用临时目录。打包运行时写入Application Support/%APPDATA%/ XDG data,临时与缓存产物写入平台缓存目录,避免把运行时数据混入安装资源。 - 破坏性操作二次确认 — Bash / SendShell / StartShell 现在会识别
rm、git reset --hard、git clean -f、dd、truncate、强制覆盖等高风险命令;即使处于 full access 或 auto 模式,也必须由用户确认。外发 WebUI / Telegram / WeChat 文件也纳入不可逆副作用确认。 - Workbench 浏览器侧栏 — Workbench Chat 会在浏览器自动化或登录接管时自动打开 Browser 侧栏,并允许直接在侧栏点击“我已完成登录”继续任务。
Fixed
- 打包应用运行时目录污染 — 配置、数据库、workspace、备份暂存、代码格式化暂存、技能安装暂存、通知脚本、SearXNG 日志、浏览器截图和更新下载现在都使用统一的用户数据 / 临时目录,减少 macOS / Windows 打包后写入只读资源目录或系统临时目录残留的问题。
- 浏览器直播不再堵塞 SSE —
browser_frameSSE 事件改为只发送 URL、title、action、target 等轻量元数据;实时画面通过/ws/browser发送二进制 JPEG 帧,前端用 object URL 渲染并及时释放,避免 base64 截图挤占共享事件流。 - 更新重启启动保护 — 修复更新重启路径的 launch guard,避免重启后误判已有实例或丢失启动状态。
Changed
- 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta16。 - 版本元数据统一 — Python 包、Electron 应用、Electron lockfile、README badge、WeChat client 标识与
uv.lock统一到 beta16。
Tests
- 新增/更新
test_app_paths、test_browser_session、test_runtime_fixes、test_workbench_frontend_logic,覆盖平台路径解析、临时产物清理、二进制浏览器帧传输、登录接管确认和破坏性操作确认。 - 前端 cache-bust 断言同步到 beta16。
v0.6.0-beta.15
[0.6.0b15] - 2026-06-28
Added
- Workbench 无 Git diff 捕获 — Workbench 运行前后现在会记录有界 UTF-8 文本快照;即使项目目录不是 Git 仓库,也能为新增、修改、删除文件生成统一 diff,并把 diff 写入 run、step related files 与 artifact,避免后续查看文件变化时只能看到“整文件快照”或空 diff。
- Workbench 会话召回进入项目 workspace —
RecallConversation在 Workbench 任务/聊天上下文中优先搜索当前项目conversations/*.md,返回scope=workbench_workspace、session id 和 source file,避免跨项目或 legacy archive 召回不相关对话。
Fixed
quit(reply=...)历史不再丢失最终回复 — 直接通过quit(reply=...)收尾的回答现在会同步写入 assistant history content,确保用户可见 transcript 与下一轮 LLM 读取的会话历史一致。- 多词记忆召回过窄 —
RecallMemory与 Workbench 项目记忆搜索支持空格分词 OR 匹配并按短语/term 命中排序,像“照片 人物 头像 识别”这类查询不再要求整段完全连续命中。 - 文件 diff 查看更稳 — Workbench diff API 会优先使用 recorded diff;Git diff 为空时补查 staged diff,对无内容变化的 timestamp-only 变动返回记录原因,避免误导性地把当前整文件当作变更。
Changed
- 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta15。 - 版本元数据统一 — Python 包、Electron 应用、Electron lockfile、README badge、WeChat client 标识与
uv.lock统一到 beta15。
Tests
- 新增/更新
test_quit_reply、test_runtime_fixes、test_workbench_init_plan、test_workbench_memory_language覆盖 quit reply 持久化、workspace conversation recall、记忆 OR 查询和 Workbench diff 记录。 - 前端 cache-bust 断言同步到 beta15。
v0.6.0-beta.14
[0.6.0b14] - 2026-06-28
Fixed
- Electron 30s 启动超时(知识迁移阻塞) —
migrate_default_project_knowledge现在以asyncio.create_task后台化运行,不再在 lifespanstartup钩子里同步等待。迁移涉及逐文档的 vision/embedding LLM 调用,耗时无上界;之前它阻塞 uvicorn 全部 startup 事件,PORT=迟迟无法打印,桌面端因超 30s 超时无法启动。现在服务器立即就绪,迁移在后台继续进行。 - Vision 候选链顺序反转 —
_resolve_vision_candidates修复:视觉专属模型(用户配置的视觉端点)现在排在候选链首位,文本主模型(如 DeepSeek)作为兜底降级。此前文本主模型被先尝试,每张图片必然 400 失败一次再回落视觉模型,在大批量文档分析时累积拖慢启动。 - 反思记忆污染
factbucket — goal loop 反思产生的excluded_paths(死路)和promising_directions(有效方向)现在写入内部reflection分类,而非fact,不再虚增用户记忆页的"事实信息"计数,且不在记忆页展示。反思条目仍注入每次 agent run(跨 session 传递学习成果)。
Changed
- 记忆分类体系重构 —
conversation分类从"对话记忆"重定义为"对话习惯"(用户希望 agent 如何与其沟通的重复偏好,例如"用中文回复"、"直接给结论"),现在会注入每次 agent run(之前因认为高噪低价值而被排除)。新增内部reflection分类(agent bookkeeping 专用,不在用户页显示)。_EXTRACT_PROMPT和save_project_memory工具描述同步重写,区分habit(如何做事)、conversation(如何沟通)、preference(对产物/工具的静态喜好),提示模型选到最精确的分类。 - Agent 实体查询铁律 — 提示词新增明确约束:"任何涉及用户任务 / 项目 / 待办 / 决策 / 日程的回答,一律先查实体、以记录为准,不得凭记忆或印象作答。"同时新增规则:生成或执行项目任务计划前,先
list_entities(status="active")+ 相关query_entities拉活跃任务与决策,复用已有结论、避免与既有事务冲突。 - Cyrene 品牌按钮 — Workbench 顶栏 Cyrene Logo 按钮由跳转任务页改为打开"设置 → 关于"页。
Tests
- 前端 cache-bust 断言同步到 beta14。
v0.6.0-beta.13
[0.6.0b13] - 2026-06-28
Added
- Workbench 项目共享上下文(
workbench_task_context) — 新模块,专为 Workbench 任务 session 提供项目级共享上下文。sharedContext字段挂载在 project 对象上,记录任务描述、最终目标和当前成果(currentOutcome)。主 agent 运行时自动注入项目固定块 + session 任务/计划/验收标准;子代理(subagent)同样获得项目上下文,并在完成后把最终回复追加到currentOutcome.entries供同一项目下所有 session 共享。 - 计划模式预探索 — 计划模式下,主 agent 在提交计划前现在可以调用只读探索工具(读文件、搜索项目记忆、查询外部信息),完成后再调用
enter_plan_mode。规划器接收到压缩后的工具调用摘要(_history_context_text),计划将真正基于工作区实际状态生成,而不再是纯推断。 - 项目记忆 Session 基线快照 — Session 启动时记录当前记忆 ID 集合作为固定前缀(cache-stable),Session 期间新增的记忆条目自动进入 volatile 尾部独立渲染,不影响已缓存的固定前缀。下一个新 Session 开始时再次快照,把 volatile 条目提升为固定块。
Fixed
- 对话分段渲染 — 多文件交付顺序 —
_reorder_tool_produced_replies修复:同一回合内多个文件分段交付时,每段交付回复现在都能正确排列到其对应工具卡片之后(而不仅限于单文件场景)。 - 知识 workspace 隔离 —
_resolve_workspace_id修复:默认项目记忆不再跨项目泄漏;新增启动事件将默认项目知识从旧版共享数据库中解耦,写入项目专属存储。 - Subagent 收尾超时 — goal loop 等待 subagent settle 时现在带超时,不再因 subagent 意外挂起而无限阻塞。
Changed
- Prompt 缓存优化 —
fixed_ephemeral_system—run_agent/ coordinator /_run_main_agent新增fixed_ephemeral_system参数。Run 级上下文(Workbench 任务简报、项目记忆快照、temporal context、conversation identity)现在插入到当前用户消息之前,而非 prompt 尾部;工具回合通过纯 append 演进,前一轮请求是下一轮请求的完整前缀,缓存命中显著提升。原ephemeral_system仅保留给真正需要每轮变化的 volatile 尾部内容。 - Phase 1 首轮也使用完整工具集 — 移除首轮使用轻量 phase1 工具集的例外:常规对话的第一轮 Phase 1 decision 现在与后续轮次一样使用
wire_tool_defs,利用 DeepSeek 工具敏感前缀缓存,首轮不再因工具集差异导致额外 cache miss。 - 记忆注入 API 增强 —
render_memory_for_injection新增include_ids、exclude_ids、preserve_id_order、header参数,支持精确控制哪些记忆条目注入、以什么顺序、使用什么标题头部;新增memory_injection_ids辅助函数返回当前可注入的 ID 有序列表。 - macOS 流量灯间距修复 — Workbench UI 在 macOS 上正确保留 traffic light 按钮空间,避免布局重叠。
- 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta13。 - 版本元数据统一 — Python 包、Electron 应用、Electron lockfile、README badge、WeChat client 标识统一到 beta13。
Tests
- 新增
test_workbench_task_context(共享上下文构建与 outcome 写入)、test_workbench_chat_plan(计划模式预探索与修订)、test_cache_fixes(fixed ephemeral 注入位置、首轮 phase1 工具集)。 - 更新
test_runtime_fixes;前端 cache-bust 断言同步到 beta13。
v0.6.0-beta.12
[0.6.0b12] - 2026-06-27
Added
- Quick Chat 升级为完整对话体验 — 快捷对话窗口改用与主对话页相同的共享运行管理器(
WorkbenchChatRuntimes)和消息卡片渲染。回复现在带工具调用轨迹(trace)、生成的文件附件,以及实时“思考 / 调用工具”卡片,与主界面完全一致,不再是简化的文本气泡。运行在服务端持久化:关闭或重新唤起快捷窗口只停止本地流消费,Agent 仍在后台继续执行,进度可在主窗口查看。 - Quick Chat 窗口尺寸与滚动优化 — 空闲时保持紧凑但留足上方权限 / 命令菜单空间;首次发送后窗口一次性增高到对话所需高度,之后用户可自由调整、布局随之自适应。滚动具备粘性:仅在贴近底部时跟随最新消息,向上翻阅历史不再被拽回底部。
Fixed
- 默认项目记忆数显示为 0 — 记忆页用项目
dataKey作 workspace,但记忆按项目 id 存储;旧版默认项目两者不同(dataKey = default、id = project_…),仅按 id 匹配会落空到空的 “default” store。现先按 id、再按 dataKey 解析,任一标识都能命中同一项目记忆库。 - WebUI / Workbench 通道误报“已发送微信文件” — 当前通道不具备
send_file能力时不再向模型暴露send_wechat_file工具,避免一次必然失败的调用、浪费一个回合并留下误导性的“已发送”卡片。 send_file把整段回答塞进 caption — 明确send_file的text只是文件旁的简短说明,模型仍需另写完整最终回复,避免一回合塌缩成裸 “Done.”。- 心跳间隔被强制为 60 的倍数 — 设置项允许输入任意秒数(step 改为 1),不再在输入时强制取整或回退默认值。
Changed
- Agent 事务追踪:主动检索 — Agent 现在会在对话涉及用户个人事务、计划、项目时主动调用
list_entities/query_entities获取当前状态再作答,而非等待用户明确要求查询。新增五条具体触发规则:首轮个人话题自动扫描活跃事务、指代词/项目名触发关键词检索、延续性工作开始前先确认待办、更新事务前先检索 ID、记录前去重检查。 - Prompt 缓存优化 #7 —
quit(reply=)—quit工具新增reply参数承载最终回复文本。模型收尾时把答案写进reply直接交付,省去原先 tools=None 的“收尾重建”调用——该调用因tools数组不在前缀最前端,与主链零共享缓存、需重处理整段历史,是此前缓存 miss 的头号来源(约占 53%)。各阶段 prompt 与工具定义同步更新,引导模型把完整答案写进reply。 - 对话分段渲染改进 — 中途“让我查一下…”这类既有正文、又调用工具的回合现在单独成块呈现(此前正文被丢弃);失败的工具调用在 trace 卡片中以 ✕ 标记;
send_file/send_wechat_file交付的文件回复被重排到其工具卡片之后,渲染顺序固定为 [工具卡片] → [交付文件]。 - Chat 流式渲染性能 — 回复增量(reply delta)的重渲染按
requestAnimationFrame合并,每帧最多一次;已完成消息的 Markdown 解析做记忆化,实时消息仅在文本变化时重解析,避免长回复每帧 O(n²) 重新解析整段会话。 - 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta12。 - 版本元数据统一 — Python 包、Electron 应用、Electron lockfile、README badge、WeChat client 标识统一到 beta12(并补齐 beta.11 遗漏的 README badge 与
uv.lock)。
Tests
- 新增
test_quit_reply(quit reply 直接交付、跳过收尾重建)、test_workbench_chat_segments(中途前导语成块、失败 trace 标记、交付回复重排序)、test_workbench_memory_resolve(默认项目按 id / dataKey 双重解析)。 - 更新 Quick Chat 契约测试以匹配共享 run-manager 架构;前端 cache-bust 断言同步到 beta12;WebUI 42 个 JSX 全量编译通过。
v0.6.0-beta.11
[0.6.0b11] - 2026-06-26
Added
- 全局快捷键快速对话(Quick Chat) — 新增
Ctrl+Shift+Space(macOSCmd+Shift+Space)全局快捷键,任意界面一键呼出浮动 Quick Chat 窗口。支持截图粘贴、独立窗口复用、常驻系统托盘的 app 生命周期(Electron)。由独立window.WbcComposer实例渲染,与主 Workbench 互不干扰。 - Quick Chat 截图支持 — 快捷键唤起后自动捕获活跃窗口截图并粘贴到输入框;可粘贴多条后续截图,按发送自动清空。
- 更丰富的思考短语列表 — Agent 思考状态从 20 条扩展到 25 条随机短语,覆盖 more deliberate / 系统性推理表达。
Fixed
- Quick Chat 首轮消息带失效的先决条件 —
is_quick_chat标记与scene = 'quick_chat'对齐,确保初轮消息不走 workbench project 锚定路径。 - Quick Chat 重复 target 匹配 —
/api/quick-chat/targets端点对同 socket 的去重返回,避免浮动窗口重复初始化。
Changed
- 版本号更新至 0.6.0-beta.11 — Python 包、Electron 应用、lockfile、前端 cache-busting 参数统一更新。
- 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta11。
Tests
- 新增 Quick Chat targets 端点测试、全局快捷键前端测试覆盖。
v0.6.0-beta.10
[0.6.0b10] - 2026-06-24
Added
- 可恢复的 Workbench Chat 运行 — Chat Agent 运行由进程级
ChatRunManager持有,不再依赖单个 HTTP 流的生命周期。浏览器断线、切换页面或短暂网络中断后,Agent 仍会继续执行并持久化结果;前端通过独立只读重连接口恢复事件流。 - 手动压缩对话上下文 — Workbench Chat 概览新增“压缩对话”操作,可在自动阈值前显式执行现有上下文折叠流程,并显示压缩前后的 context 占用比例。
- 项目记忆退役工具 — 新增
retire_project_memory,Agent 可按精确 memory ID 将错误、过时或已被取代的项目记忆标记为 retired。记录仍可在 Memory 页面恢复,但不会继续注入 Agent 上下文或出现在普通搜索结果中。 - 回复期间继续编辑草稿 — Agent 回复期间输入框保持可编辑,用户可提前准备下一条消息;发送仍被锁定,停止当前运行后才可提交。
Fixed
- 新消息被错误当作运行重连而静默丢弃 —
POST /messages现在只负责创建新运行;已有运行时统一返回409 chat_run_in_progress。重连改走独立GET /run-stream,从协议层区分“发送新消息”和“恢复旧事件流”。 - 非流式请求可绕过单聊天运行锁 — 流式与非流式 Chat 请求现在都先在同一个运行注册表中原子占位,防止同一聊天并发启动多个 Agent、覆盖状态或打乱 transcript 顺序。
- 重试失败会删除旧回复 — 重新生成改为事务式替换:旧回复在新回复持久化前保持不动;模型调用失败时恢复原 Agent state,只有成功或进入 awaiting-user 状态后才提交截断。
- 重复附件上传导致当前会话文件失效 — Knowledge Base 内容去重不再删除 Chat transcript 正在引用的上传路径;缺失的 canonical KB 路径可由新的同内容文件恢复并重新索引。
- 附件缺失后误扫本机文件系统 —
AnalyzeAttachment对文件缺失返回终止型结构化错误,提示重新上传,并明确禁止使用 Glob/Grep/Bash/find 扫描设备寻找替代文件。 - 图片附件预览破图与溢出 — Composer 和历史消息中的图片加载失败时自动降级为文件 chip,预览容器限制溢出。
- 系统主动轮次可能调用
ask_user— proactive/system-initiated 轮次不再暴露或执行ask_user,必须自主完成检查或静默结束。 - 未知 context window 时按消息数丢历史 — 无法确定模型上下文窗口时不再执行有损的固定条数裁剪;仅在 token budget 可确定时压缩。
- 短期记忆提取长期停留在最早消息 — 记忆压缩窗口改为最近 20 条用户/助手消息,并过滤 retired 条目。
- 内部 task report 污染 Memory 页面和全局搜索 —
task_report继续作为内部规划上下文保存,但不再计入用户可见记忆列表、统计、来源图和 Workbench 搜索。
Changed
- 静态资源缓存版本统一 — WebUI 所有 JS/CSS cache-busting 参数统一为
beta10,确保升级后加载同一版本的完整前端资源。 - 版本元数据统一 — Python 包、Electron 应用、Electron lockfile、README badge、WeChat client 标识统一到 beta 10。
Tests
- 新增 Chat 运行断线继续执行、显式重连、非流式运行注册、重试回滚、重复附件保留、缺失附件终止、手动上下文压缩、记忆退役、内部记忆隐藏和 proactive 工具限制等回归测试。
- WebUI JSX 全量编译通过;相关 Python 测试覆盖 session persistence、runtime、knowledge、Workbench chat/memory/search 和前端逻辑。
v0.6.0-beta.9
[0.6.0b9] - 2026-06-23
Added
- Workbench API 封装层(
workbench_chat_runs.py) — 新增独立模块封装 chat run 生命周期:创建/恢复 run、sse 心跳、中止、轮次历史与 run 元数据路由。前端通过workbench-api.jsx统一客户端调用,替换原先散落在workbench-chat.jsx里的fetch调用,降低耦合。 - Chat 心跳(Heartbeat) — Workbench Chat 流式响应新增 SSE 心跳帧,保持长连接活跃、防止中间代理/网关因空闲超时断流;前端在心跳到达时更新「正在思考」指示而不写入消息。
- LLM 蒸馏上限与阈值预检 —
call_llm.py引入压缩块蒸馏最大尝试次数,防止增量压缩无限重试;新增exceeds_compaction_threshold预检,仅在消息上下文真正超过压缩阈值时才触发蒸馏。 - LLM 瞬时错误重试 — 对 LLM 调用中的瞬时服务器错误加入有限次数自动重试,超限后才失败;新增针对瞬时错误与重试行为的测试。
- Workbench 初始化任务优先级指示 — 初始化 UI 增加任务管理与优先级视觉指示,更清晰展示 init 阶段任务队列。
Fixed
- Workbench Chat 代码块语法高亮与复制按钮丢失 — marked v5+ 移除
highlight选项后highlight.jsx沦为死代码,代码块不再带 hljs span。改用 marked v13 正确的渲染器经marked.use输出完整<pre><code>块(含行号与语言标签)。actions.jsx原先只扫描.msg-list(legacy chat),复制/编辑按钮无法触达 workbench 的.wbc-thread;现同时监听.msg-list、.wbc-thread、.wbc-side-body,并在 SPA 导航后以 2s 轮询重新挂载观察器。highlight.css选择器由.msg-body-only扩展到.wbc-msg-body.markdown,行号、语言标签、操作栏与 hljs 主题在 workbench 全部生效。渲染器顶层 try/catch 在 hljs 失败时回退为纯转义文本,避免marked.parse崩溃。 - Workbench Profile 仪表盘统计数据不实时刷新 — Profile 页消费
DATA.dashboard(KPI、活跃度热图、insights、top tools),但该数据仅在 bootstrap 时获取一次,SSE 事件总线与 15s 轮询均未触及。新增轻量GET /api/dashboard?tz=路由只返回_build_dashboard,避免重建完整ui-data;refreshDashboard()带请求序列守卫与 JSON 指纹跳过无变化重渲,经 3s 防抖订阅 SSE 事件并纳入 15s 全局轮询。 - 默认 Workbench 项目可被删除 —
DELETE /api/projects/{id}端点对默认项目(dataKey === "default")缺少守卫,会清空其 sessions、chats、memory。现对默认项目返回400 default_project_protected,前端隐藏默认项目的删除按钮并在调用失败时给出友好提示。
Changed
- Workbench 路由 JSON 响应与错误分类 —
routes.py统一处理 JSON 响应格式,并对解析失败加入错误分类,便于前端区分瞬时错误与永久错误。
Tests
- 新增
tests/test_call_llm_candidates.py瞬时服务器错误用例 — 覆盖重试行为与失败处理。 - 更新
tests/test_workbench_api_validation.py— 覆盖默认项目删除保护(default_project_protected)。 - 更新
tests/test_workbench_init_plan.py— 覆盖 init 任务管理与优先级指示。
Docs
- README / .gitignore 与项目状态同步 — Quick Start 切换到 uv(lock file 已提交)并附 pip 回退;补充 WebUI JSX 预编译步骤(
compiled/被 gitignore、由index.html加载)与 Node.js 20+ 前置;列出browser/dev可选 extras、细化 Testing 限制说明,tech stack 加入 uv + Ruff。.gitignore不再忽略uv.lock,新增.ruff_cache/、backups/与根锚定/db.sqlite3[-*];移除误提交的根db.sqlite3(真正运行时 DB 在store/cyrene.db)。