-
v0.3.16 Stable
released this
2026-07-22 13:18:40 +08:00 | 0 commits to master since this releasev0.3.16 发行版
概述
本次版本包含 v0.3.16 主提交及两个后续补丁修复,共计 56 个文件改动(+1975 / -341 行),涉及安全加固、Provider 适配器优化、Agent 引擎增强、工具系统扩展、数据层重构、前端体验改进等核心模块,并修复了工作空间切换配置丢失、选择文件夹按钮无响应、上传图片被内容审核拦截等关键问题。
一、v0.3.16 主提交(commit 2c2ca4a)
工单修复 51 项 + 审查修复 30 项,涉及 43 个文件(+1462 / -309 行)。
1. 安全加固
- Sandbox 权限系统增强(
sandbox/permissions.ts+75 行):完善路径校验、命令白名单、符号链接防护 - Prompt 注入防御增强(
security/prompt-injection-defense.ts+113 行):扩展检测规则、增强系统提示词隔离 - 审计服务增强(
audit.service.ts+45 行):完善操作日志记录、敏感操作追踪 - Sandbox 执行环境增强(
sandbox/sandbox.ts):隔离边界加固
2. Provider 适配器优化
- base-adapter 错误处理增强(+53 行):HTTP 错误解析、status code 精准识别、abort signal 管理
- Ollama 适配器大幅优化(+80 行):本地模型连接稳定性、超时处理
- MiMo / DeepSeek / Agnes-AI 适配器调优:流式解析、工具调用兼容性
- 共享层优化:
openai-format.ts格式标准化、sse-stream.tsSSE 解析增强
3. Agent 引擎增强
- engine.ts 状态机与错误处理(+78 行):
- 死循环检测(DeadLoopError)
- abort 信号注入 adapter,支持用户中断正在进行的 fetch
- context window 从 adapter 同步,避免压缩阈值计算错误
- runId 机制防止旧 run 事件污染新 run
- waitForAbort 超时保护,防止 abort 后立即重发卡死
4. 工具系统扩展
- command 工具大幅增强(+127 行):命令执行、超时控制、输出处理
- http-request 工具大幅增强(+136 行):请求方法、头管理、响应解析
- filesystem / file-editor / git / code-search 工具优化:路径校验、权限控制
- browser-window-manager 工具增强(+39 行):窗口管理能力
- 工具注册表增强(
registry.ts+31 行):动态注册、权限策略
5. 数据层重构
- database.service 重构(126 行改动):连接管理、事务、迁移
- session.service 优化(75 行改动):会话生命周期管理
- session-recorder.service 增强(+72 行):会话录制、回放
- 新增 mcp-manager.service(+82 行):MCP 协议管理器
6. 前端体验改进
- ConfirmationDialog 增强(+53 行):批量审批、ESC 防穿透
- MessageItem 精简优化(-60 行):移除冗余逻辑
- ErrorBoundary 增强:错误边界捕获
- OnboardingWizard 增强(+47 行):引导流程优化
- SettingsModal 增强:工作空间配置管理
- 新增 useKeyboardShortcuts hook(+16 行):键盘快捷键支持
7. 其他优化
- 内存管理器优化(
memory/manager.ts) - 编排器优化(
orchestration/orchestrator.ts) - 提示词上下文构建器增强(
context-builder.ts) - 钩子系统增强(
confirmation-hook/post-tool) - Token 估算器优化(
token-estimator.ts)
二、补丁 1(commit 9af9984)
构建修复
- 修复
electron/harness/tools/built-in/command.ts中 JSDoc 注释GIT_*/被解析为注释结束符(*/)导致后续中文被当作代码,构建失败 - 修改为
GIT_* /(*与/之间加空格分隔)
三、补丁 2(commit 3e5ddea)
1. Sandbox 兼容性修复
- 问题:
sandbox: true不兼容 ESM 格式(.mjs)的 preload 脚本,导致 preload 不执行、window.metona为undefined,引导弹框"选择文件夹"按钮点击无反应 - 修复:
sandbox: true → false,并添加注释说明 ESM preload 不兼容 sandbox 的限制
2. 全局配置层(新功能)
解决切换工作空间后 LLM / Agent 配置全部丢失的问题。
- 新增 GlobalConfigService(
global-config.service.ts+247 行):全局配置存储于userData/global-config.json - 三层回退读取:工作空间 DB 非空值 → 全局 JSON → 默认值
- 双写机制:全局配置 key 同时写入工作空间 DB 和全局 JSON
- 首次启动迁移:扫描工作空间 DB 的
app_config表,将非默认值的全局 key 同步到全局 JSON - SEED_DEFAULTS 默认值映射表:30 个 key 的默认值,值等于默认值时视为"未配置"并回退全局层
3. 工作空间继承修复
- 继承选项显示条件放宽:当目标
SOUL.md缺失或.metona/agent.db不存在时才显示继承面板 - push 前校验:继承 SOUL.md 前检查
missingFiles.includes('SOUL.md'),继承 agent.db 前检查!dbExists,避免覆盖目标已有文件
4. 配置实时刷新
- config:changed IPC 广播:后端配置变更后通知前端
- 前端监听(
useAgentStream.ts):收到agent.maxIterations变更时调用store.setMaxIterations - 效果:修改 Agent 配置最大迭代数后,详情栏 Token 用量和 Agent 状态实时刷新
5. 附件提示注入
- 问题:用户上传图片后,AI 先在本地工作空间查找图片,没找到才意识到是用户直接上传的
- 修复:在 System Prompt 的
dynamicReminders注入附件提示,明确告知 AI 上传的文件是 inline 附件(非工作空间文件),并提供类型特定指引(图片走 vision、文本已内联、其他为直接上传)
6. content_filter 错误处理
- 问题:上传图片发消息被 Provider(如 MiMo)安全审核拦截,返回 "The request was rejected because it was considered high risk",项目将错误映射为
UNKNOWN并透传原始 JSON 错误体 - 修复:
- 新增
ContentFilterError类(base-adapter.ts) throwHttpError解析 JSON 错误体,识别content_filter错误码mapError优先识别ContentFilterError,映射为MetonaErrorCode.CONTENT_FILTEREDengine.tsfinish 方法区分 content_filter 错误,发射友好消息- 前端显示
⚠️ 内容被 Provider 安全审核拦截,请修改图片或文本后重试
- 新增
7. 构建修复
- 修复
config.service.ts中 JSDoc 注释llm.*/agent.*/onboarding.completed的*/被解析为注释结束符 - 修改为
llm.* / agent.* / onboarding.completed(加空格分隔)
升级说明
- 直接安装新版本即可,首次启动会自动迁移旧工作空间配置到全局层
- 切换工作空间后 LLM / Agent 配置将自动继承,无需重新配置
- 如遇内容审核拦截,请修改图片或文本内容后重试
Downloads
- Sandbox 权限系统增强(