Repository navigation
EchoFlow Code v0.7.1
EchoFlow Code v0.7.1
本次更新聚焦 桌面视觉系统重做、手机 / 平板触屏体验、轨迹视图与提示词重跑,并带来 ChatGPT OAuth Fast 模式、SubAgent 并发上限、语音听写快捷键、CSV / TSV 表格预览,同时覆盖运行时管理、官方账户、插件市场与会话归档,以及一批稳定性修复。
核心功能
- 全新桌面视觉系统「素 Porcelain」:所有页面重做在同一个视觉系统上——浅色主题、工具调用读成时间线、用户消息用气泡、输入框是悬浮卡片;六个主题统一圆角(4/6/8/12/16/20)和字号(11/12/13/14/15/18/22/26)阶梯,字重不超过 semibold;状态色按语义取(运行中 = info、等待 = warning、完成 = success、失败 = error);图标全部来自 lucide。
- 手机 / 平板 H5 按触屏重做:抽屉式布局换成单层导航栈,首页是按状态分组的会话列表(「等你处理」置顶),系统返回手势回上一层;输入框只留一行(+ / 模型 / 发送),其余收进「+」底部面板;审批、提问和计划直接占用输入框位置,不再弹窗遮挡;消息长按出菜单;每轮工具调用折成一张卡;首页右下角悬浮「新任务」。平板保留左列表右详情。
- 输入框「+」菜单重组:一级分为「给这次任务用」(技能 / 连接器 / 文件)和「运行方式」(Agent Teams、操作电脑两个开关),其余进「更多工具」;连接器按「已连接 / 需要处理 / 推荐」列出并显示各自 logo;技能列出最近用过、全部技能和两个可一键安装的市场热门。
- 编辑已发送的提示词并重跑:悬停已发送的提示词出现「编辑并重发」,气泡变成内联编辑器,发送前会先试算回滚、在影响后续轮次或文件时确认,然后原地重跑;回滚失败不改动任何东西并保留草稿。当前无法编辑时(轮次运行中、有后台任务、检查点加载中)按钮保持可见并给出禁用原因。
- 会话「轨迹」视图:会话头部新增聊天 / 轨迹切换。轨迹是每行一个事件的高密度账本(系统提示、用户消息、注入的上下文、助手回复、工具调用),配三轨小地图、按轮折叠、搜索和逐行详情面板,也能钻进子 Agent。设置里原来的 Trace 列表、trace 标签页和独立窗口取消,已保存的 trace 标签会迁移成会话标签。
- ChatGPT OAuth Fast 模式:使用 ChatGPT OAuth 时,可在模型的推理强度面板中开启 Fast 模式;选中后模型选择器会显示 Fast 标记,重新打开会话也会保留选择。提速效果因模型而异,可能增加额度消耗。
- 普通 SubAgent 并发上限:在「设置 → 通用」限制同一会话内普通 SubAgent 的并发数,前台、后台和恢复的子任务共用上限;达到上限时拒绝新启动,已有任务完成后可继续启动。默认不限,留空保存即可恢复不限;设置对运行中的会话生效,无需重启。主 Agent、Agent Teams 和 Workflow 不计入,也不是跨会话的全局配额。
- 语音听写快捷键:应用窗口在前台时,按一下开始录音、再按一下结束,也支持按住说话、松开结束。macOS 默认右 Option,Windows / Linux 默认右 Ctrl;可在「设置 → 语音输入」开关或自定义。录音进入当前或最近聚焦的聊天输入框,在其他文本框、终端、弹窗和输入法组词期间不会触发;组合键不会误开麦克风。
- CSV / TSV 表格预览:工作区里的
.csv和.tsv可直接按表格查看,并通过「表格 / 源码」切换回原文,继续使用行评论和选区引用。支持 UTF-8、UTF-16 和 GB18030 解码,保留单元格原始值;回合改动中的 CSV 仍可打开差异审查。 - 安全的数据目录迁移:在「设置 → 通用」更改数据目录不再直接搬文件,而是走暂存 → 校验 → 迁移凭据 → 重启的流程,写迁移日志以便中断后恢复;同时会先让 IM sidecar 停稳再动盘。Windows 上被系统扫描程序短暂占用的文件会重试(最多六次、约 3 秒退避),仍失败则原样回滚。
- 自动更新开关:在「设置 → 关于」控制是否自动检查和后台下载更新,关闭后仍可手动检查与安装。选择稍后安装后,不再在退出时替你安装。
运行时、账户与插件
- 运行时管理独立成页:新增「设置 → 运行时管理」页面,会检查 EchoFlow 自带的 Agent,以及当前系统中能从常见命令路径找到的 Claude Code、Codex;Windows 用户还可主动检查 WSL 发行版,也可手动选择 Claude Code 或 Codex 的可执行文件。检查只读取版本信息,不会安装或更新第三方工具,也不会自动把会话切换到这些工具。旧入口(DeepSeek Harness 页面)兼容跳转到该页。
- EchoFlow 官方账户登录:新增站点账户登录与会话桥接,可在桌面端直接登录 EchoFlow 官方账户;侧栏新增账户 dock 显示余额与状态。相关 IPC 通道按最小权限校验,登录窗口仅限主窗口调用。
- 令牌按需读取完整 Key:创建 EchoFlow Provider 时,桌面端默认只展示脱敏预览;只有点击显隐切换时才按「账户 + 令牌 ID」单独向服务端取回完整 Key,取回后即从内存丢弃并记录失败重试提示。
- 插件市场发现接口:新增已注册市场、预设、市场发现和插件详情接口,复用缓存与来源策略校验。市场预设必须经过调用方验证后才能注册,默认不内置未经独立验证的厂商来源。
- 计划审批支持自动模式:计划执行确认时可以选择自动模式;首次使用会明确请求授权,并沿用既有权限持久化流程。
- 模型选择更稳定:新会话默认推理强度根据模型支持范围和模型默认值选择合适的推理强度;模型选择器补充服务商信息展示。
- 会话归档:会话可归档与取消归档,侧栏和全局搜索可切换是否显示已归档会话;归档状态进入本地索引,重启后保持。
- 单实例深链路由:应用已有实例时,新的
echoflowcode://启动请求会转交给已有窗口处理;深链处理日志不再输出原始 URL。 - 空白会话体验:更新空白会话引导文案和布局,减少装饰性效果,让输入区更突出。
Android 移动端
- 原生包名迁移:Android 原生代码迁移到 EchoFlow 包名目录,保留 WebView、权限会话和连接能力。
- 最近服务器:移动端保存最多 5 个服务器地址,不保存 H5 Token;凭据仍使用 Android Keystore 加密。
- 二维码与工具链更新:移除不再需要的相机权限,接入 Google ML Kit 条码扫描依赖,并更新 Android Gradle Plugin、Gradle 与 JDK 构建配置。
稳定性与性能
- 更快的上下文压缩与实时进度:压缩摘要减少可重新读取的文件正文,改用路径和必要信息,缩短摘要生成时间。压缩时显示已用时间和已生成的字符数;重试共用次数预算,避免单次失败时多层重试反复发送整段上下文。
- 长任务流式输出不再卡住整个窗口:减少流式输出时工具列表、会话标签和侧栏的重复计算与渲染,让长会话运行期间的新建会话、切换标签和输入操作更流畅。
- 修复 Bash 命令被误杀:修复进程守护管道与 Bun 文件描述符复用冲突,避免健康命令随机被终止、反复出现空的
Exit code 1,以及 Grep 明明有结果却显示「No files found」。 - 减少服务端内存增长与轨迹写入开销:搜索索引复用后台 worker,避免每次写入新建线程;轨迹超过索引窗口后不再每追加一行就重扫整个窗口,减少长会话的内存累积和写入延迟。
- 回收关闭会话的 CLI 与 MCP 进程:桌面、手机和平板不再长期保留无人查看且已空闲会话的连接;只有后台任务的会话也能按上限收尾。Windows 停止 CLI 时一并清理 MCP 子进程树;IM 聊天在无运行任务、无待审批且双向静默 30 分钟后释放连接,下一条消息仍回到原会话。
- Agent Teams 动画更流畅:修复团队关系图流动连线的卡顿。
Agent Teams
- 长任务可恢复:成员回合被截断的流会自动重发;服务端托管成员,停下的成员收到消息后从自己的 transcript 重启,瞬时失败按 15s/45s/2m/5m/10m 自动续跑,只有重试耗尽才上报队长;停止现在是暂停整组,队长的下一条用户消息会带上停止成员的清单和未完成任务;队长重启(切模型、崩溃)不连带成员,服务端重启会重新接管团队。邮箱改为原子写入、按身份标记已读。
- 停止后保持停止:按下停止后队长不再继续轮询邮箱,队员在停止前发出的汇报不会偷偷把团队唤醒,只有用户的下一条消息能解除;因用量超限、计费、网络或崩溃停下的成员,无论是否按过停止,都会在用户下一条消息里逐个列出其失败原因和未完成任务。
- 强制执行任务依赖:依赖未完成的成员只在依赖就绪时才收到指令,之前收到的消息在收件箱里等待;TaskUpdate 拒绝队员在依赖未完成时开始或完成自己的任务(队长不受此限);每个成员会被告知谁在等它的结果,并在完成前把结果发过去。
- 成员任务状态:成员停下或失败后,它的任务不再显示「进行中」的动画条;成员抽屉把任务分成「当前 / 下一个 / 已完成」,标出被阻塞任务缺哪个依赖,时长测量不到时不再打印
+0:00。
后台任务与运行时
- 停止与运行时丢失时收敛后台任务:按停止会一并收掉本会话的后台 shell 任务(
run_in_background、Dream、workflow),不再只断前台轮;没有客户端、只靠后台任务续命的会话有 31 分钟的硬上限,到期停掉运行时并写终态;运行时已经没了但任务记录还在时直接写终态,不再让重连把「运行中」灌回来。 - 桌面没运行过的会话也能收敛:别的 CLI 跑完的会话里,后台 shell 任务不再永久「运行中」——任务终态在 transcript 里有四种落盘形态,现在全部读取;没有 CLI 进程时,停止一个只存在于历史里的任务会收敛为已停止而不是报错。
模型与供应商
- OpenAI Chat 代理默认发图:不再按主机名和模型名猜图片能力,图片一律先发给模型;模型明确以「不支持图片输入」拒绝时,去掉图片重发一次,只有这次成功才会把该端点和模型记为纯文本 30 分钟。这样每个新的视觉模型都能直接用,也覆盖了 vLLM 和 OpenAI 的措辞。
- 新会话默认推理强度:服务端与桌面 store 的全局默认同步调整,已保存过偏好的人不变;不在 provider 列表里的 ChatGPT Official、Grok Official 也会按模型目录解析强度,不再出现选择器显示全局值、实际跑模型默认值的情况。
- 自定义 provider 预设的语言:自定义预设不再固定显示英文「Custom」,按当前语言显示并在预填名称里一致。
修复
- 思考和回复重复显示:冷加载历史与实时输出合并时,同一段思考或回复不再同时显示实时版本和落盘版本;思考中的空白片段也会保留,保证回读一致。
- 完整回复被误判为流中断:部分 Anthropic 兼容网关漏掉最后的
message_stop帧时,只要已收到终止原因且所有内容块完整关闭,就正常接受回复;真正截断的内容仍会报错并重试。 - 项目路径大小写导致实时记录丢失:项目目录仅大小写不同时,仍能找到正在运行的会话 transcript。
- 中文文件名被截断:正文和内联代码里的中文文件名按整个 token 读取,
测试文档1.docx不再变成1.docx;文案无法自行界定的名字(报告v2.docx、无空格粘连的名字、全角括号、纯中文加扩展名)交给磁盘确认,优先取最长的已存在文件。 - 不存在的图片报红卡:文件路由返回 400/403/404/413 时视为图片本就不存在,内联卡片静默消失、Markdown 图片退回 alt;只有服务出错、连接断开、凭据被拒或字节无法解码才显示可重试的错误。
- 硬编码文案没走翻译:把组件里直接写死的界面文字接入
t()(回复里的图片标题、Mermaid 的错误与加载文案、侧栏「未命名」、Computer Use 的状态检查、/context的 token 数、轨迹视图标签和读屏标签等),补齐五个语种。 - provider 流中断的报错:在
message_stop之前关闭 200 流且所有重试都失败时,错误会指明是模型服务商的问题、明确不是上下文超限,并记录这次收到的证据(事件数、最后一个事件、stop_reason、是否缺message_stop、未闭合块、耗时和重试次数)。 - 文件卡片和链接乱弹:回复里只是「提到」的路径不再当成产出的文件;输出卡片需要本回合确实产出过该文件(或有改动记录),链接要等磁盘确认文件存在且在本回合之后被改过才渲染,没有依据的名字保持为普通代码。
- 会话查找每次全量解析:只有一个候选文件时不再解析整个 transcript 去比对内容,多文件时也在第一条会话记录处停止,长会话分页重开的开销不再随文件大小平方增长。
- 工作区浏览器改用
<webview>:不再用永远盖在 DOM 之上的原生WebContentsView,网页放进会话面板内的一层<webview>,其他页面、菜单和弹窗能正常盖在上面,选择元素的截图不再拍到已关闭的气泡或闪白。 - 虚拟占位符在分数缩放下抖动:非整数缩放时消息列表的占位高度稳定,不再跳动。
- 技能市场首页像两页拼接:标题、免责声明、分类和搜索与卡片网格回到同一个页面表面,切换首页和详情不再闪色。
- Agent Teams 头部在窄栏被挤扁:控件改为换行排布,按钮和时长不再被压成竖排文字。
- 空白会话的侧边聊天:还没开始对话的会话不再显示侧边聊天入口,避免每次点击只弹一句「先开始一段对话」。
- 重启后无法批准 Agent Teams 计划:批准计划时会先启动已断开的队长,启动失败则保留计划供再次审阅,避免只能新建会话重来。
- Windows 升级被安全软件拦截:安装辅助脚本无法写入或运行时,改用进程检查后备路径;从受同类问题影响的旧版本升级时也能继续安装,同时保留真实写入错误和其他卸载失败的诊断。
- Windows 启动错误更清楚:Bun 在执行代码前因内存提交失败崩溃时,给出系统内存提交上限的提示并保留原始输出;sidecar 无法执行时显示文件路径和重装建议。
- 轨迹视图可用高度:打开轨迹视图时隐藏聊天输入框,让轨迹占满可用高度。
- 权限下拉菜单超出窗口:设置里的权限菜单会保持在窗口内。
- Unicode 文件名预览:Windows / Linux 上,文件名看起来相同但 Unicode 编码形式不同时,也能找到工作区文件并预览。
- 只读目录的数据迁移:修复 macOS / Linux 迁移只读目录时发布失败、回滚后暂存目录无法清理的问题。
- 停止后重新压缩:停止任务后再执行
/compact,压缩进度和完成结果能正常恢复显示。 - 工作区文件更新遗漏:补偿漏掉的文件监听事件,恢复目录后刷新相关缓存;搜索内容不变时,结果也会随文件更新刷新。
- 并发上限输入校验:保留非法输入供保存时校验,避免被输入控件清空后误保存为「不限」。
- 第二实例启动时深链请求无法传递给已有窗口:应用已有实例时,新的
echoflowcode://启动请求现在会转交给已有窗口处理。 - 外部运行时选择和运行时状态入口分散:Claude Code 内置/外部运行时与 DeepSeek Harness 统一放入「设置 → 运行时管理」,状态、启动、停止、重启和更新操作更集中。
- 模型切换时推理强度回退不符合模型支持范围:按模型支持范围和模型默认值选择合适的推理强度。
- Android 原生目录与移动端 contract test 路径不一致:迁移后两者路径保持一致。
其他
- PR 质量门禁补齐无真实模型的 Agent 端到端检查,改进测试发现、超时和产物诊断。
- README 采用中英双语结构(
README.md英文 +README.zh-CN.md中文),首页换上产品宣传片封面。
安装
请在下方 Assets 中下载对应平台和架构的安装包:
- macOS:
EchoFlow-Code-0.7.1-mac-arm64.dmg/EchoFlow-Code-0.7.1-mac-x64.dmg - Windows:
EchoFlow-Code-0.7.1-win-x64.exe/EchoFlow-Code-0.7.1-win-arm64.exe - Linux x64:
EchoFlow-Code-0.7.1-linux-x86_64.AppImage、EchoFlow-Code-0.7.1-linux-amd64.deb或EchoFlow-Code-0.7.1-linux-x86_64.rpm - Linux ARM64:
EchoFlow-Code-0.7.1-linux-arm64.AppImage、EchoFlow-Code-0.7.1-linux-arm64.deb或EchoFlow-Code-0.7.1-linux-aarch64.rpm
版本号、Git tag 与本更新日志保持一致后再执行正式发布流程。