Releases: HNGM-HP/opencode-bridge
Releases · HNGM-HP/opencode-bridge
v3.0.7
版本变更摘要(v3.0.7)
1. 全平台非多模态模型识图能力(核心新功能)
- 新增 src/services/vision-ocr.ts:当主模型不支持 image 输入时,借用 opencode 已配置的多模态模型做 OCR / 图片描述,把结果注入- - 为文本 part 后转发给主模型
- 新增 preprocessVisionParts() 共享入口,飞书、QQ、Telegram、企业微信、微信、WhatsApp、Chat API 统一接入
- OCR 流程:创建临时 session → 发送图片+提示词 → 提取文本 → 删除临时 session;任何失败自动降级为"直发原图"
- 新增 opencodeClient.getModelCapabilities() 能力嗅探:查询主模型是否支持 image 输入
- 新增 opencodeClient.listVisionModels() 枚举所有支持 image 的模型,供 Web UI 下拉选择
- 新增配置项:IMAGE_VISION_PREPROCESS(开关)、VISION_OCR_MODEL(OCR 模型)、VISION_OCR_PROMPT(引导提示词)
- Web UI 配置页新增"非多模态模型图片预处理"卡片,支持开关、模型选择、提示词编辑
2. Windows 黑窗彻底修复
- process-manager.mjs 和 opencode-restart.ts 均改用 PowerShell Start-Process -WindowStyle Hidden 启动 opencode
- 解决 Node windowsHide:true(CREATE_NO_WINDOW)导致孙进程弹黑窗的问题
- 通过 -PassThru 获取真实 PID,确保进程管理可靠
3. Windows 前台 attach 窗口优化
- OPENCODE_AUTO_START_FOREGROUND Windows 下默认开启
- 弹出前轮询 TCP 端口就绪(最多 15s),避免空窗口
4. 飞书私聊绑定修复
- 飞书 session 绑定 API 现在额外返回已有绑定的私聊/群聊(即使飞书 API 无法枚举)
- Sessions 页面会话类型改为下拉选择(支持手动指定私聊/群聊)
- 提示文案更新,说明飞书私聊需手动输入 ID
5. AI 工作区 UI 优化
- uiRunning 状态计算优化:综合判断 sending、aborting、activePermission、streamingMessage、runningTool、runningTask,避免状态不同步
- 新增 finalizeStreamingMessages():session idle 时收口残留的 streaming 消息
- Session 侧边栏排序调整:session 节点优先于 folder 节点
6. Electron 打包与稳定性
- config-store.ts 对 better-sqlite3 原生模块加载失败增加详细诊断提示(macOS 架构不匹配、安全隔离等)
- Electron 主进程增加后端入口文件存在性检查
- 启动失败对话框增加平台/架构信息和 native module 诊断提示
- package.json:将 @hapi/boom、axios、ws 从 devDependencies 移至 dependencies;electron-builder 打包排除更多开发依赖减小体积
7. 其他
- OpenCode client 新增 knownSessionDirectories 记忆:跨 project API 聚合时补充已知目录,避免会话丢失
- README 更新:新增 Star History 图表,调整许可证段落顺序
- 新增测试用例:finalizeStreamingMessages 单元测试
v3.0.6
版本变更摘要
1. Windows 黑窗修复
- 核心问题:Node 的 windowsHide: true(CREATE_NO_WINDOW)导致 opencode 的孙进程 opencode-windows-- x64\bin\opencode.exe 弹出可见黑色 CMD 窗口
- 修复方案:Windows 下改用 PowerShell Start-Process -WindowStyle Hidden 启动,分配隐藏 console,孙进程继承不弹窗
- 新增 startHiddenOnWindows() 和 invokeHiddenPowershell() 工具函数(scripts/process-manager.mjs + src/reliability/opencode-restart.ts)
- 通过 -PassThru 获取真实 PID,写入 PID 文件供进程管理使用
2. Windows 前台 attach 窗口优化
- OPENCODE_AUTO_START_FOREGROUND 配置 Windows 下默认开启(之前默认关闭)
- 弹出 attach 窗口前增加 TCP 端口就绪探测(最多轮询 15s),避免连不上时弹空窗口
- 非 Windows 平台始终关闭该选项
3. 首条消息自动重命名会话
- 新增 autoRenameSessionFromFirstPrompt():首次发消息时,若会话标题为默认值("新对话"),自动取消息前 24 字符作为标题
4. 新增 uiRunning 计算属性
- ChatWorkspace 中合并 sending 和 running 状态为 uiRunning,统一 Escape 快捷键判断
Full Changelog: v3.0.5...v3.0.6
v3.0.5
版本变更摘要(v3.0.5)
1. 新增 AI 工作区附件/图片能力
- 新增 chat-upload.ts 文件上传 API(POST /api/chat/upload),基于 multer,支持所有 MIME 类型,默认 50MB 限制
- 上传文件自动内联为 base64 data URL 发送给 OpenCode(inlineLocalUploadParts / inlineUploadParts)
- 前端 MessageInput 支持粘贴图片、拖拽文件、点击添加附件,含上传进度和预览
- MessageItem / TurnItem 支持展示图片和文件附件,图片支持点击预览
- 新增 opencode.json 配置文件
2. 新增任务计划预览面板(TaskPlanPreview)
- 新增 TaskPlanPreview.vue 组件,在聊天区域展示 AI 执行计划(任务步骤列表)
- 自动展开/收起,显示执行进度(正在执行/已完成/已规划)
3. 优化回退机制
- 回退操作从"丢弃单条消息"升级为"丢弃整轮对话"(discardConversationFromMessage)
- 新增 retainMessages 方法,精确保留指定消息
- 新增 waitForRevertSettled 轮询等待后端回退完成,确保消息一致性
- 回退时恢复附件草稿(draftAttachments)
- 消息列表隐藏计数改为基于"轮次"而非"条数"
4. UI 界面优化
- 发送/终止按钮合并为单一主操作按钮,running 状态下显示脉冲动效
- Session ID 和会话 ID 不再截断显示
- running 状态独立管理,流式光标仅在活跃时显示
- 头部状态徽章区分"响应中"和"已连接"状态
- 依赖更新:新增 multer + @types/multer
5. 修复
- 进程管理器(process-manager.mjs)修复 Unix 下 spawn 参数传递方式,使用 shell: true 解决 PATH 解析问题
- 修复打包问题
v3.0.3
v3.0.3 更新日志
🐛 Bug 修复
平台兼容性
- Windows 路径修复 - 修复 Windows 系统下文件路径处理问题
- macOS 兼容性修复 - 修复 macOS 系统下的相关问题
聊天工作区
- UI 修复 - 修复聊天 AI 工作区界面问题
📝 其他
- 新增平台兼容性文档
- 增加相关测试用例
- 优化事件处理逻辑
Full Changelog: v3.0.2...v3.0.3
v3.0.2
主要变更内容
1. 🔄 权限模型架构调整
核心变更:统一目录访问控制
影响文件: src/utils/directory-policy.ts, src/admin/routes/workspace-utils.ts, web/src/views/CoreRouting.vue
- 移除 AI 工作区权限分离机制:撤销了之前将 AI 工作区与平台接入权限解耦的设计
- 恢复统一白名单验证:所有路径访问(包括 AI 工作区)都需要通过
ALLOWED_DIRECTORIES白名单验证 - 删除作用域概念:移除
DirectoryPolicyScope类型及scope参数
技术细节:
// 之前的设计(已撤销)
DirectoryPolicy.resolve({
explicitDirectory: path,
scope: 'workspace' // AI 工作区脱钩白名单
})
// 现在的设计
DirectoryPolicy.resolve({
explicitDirectory: path // 统一验证
})2. 🧹 日志系统简化
影响文件: electron/main.ts
变更前:复杂的三级轮转机制
- 单文件上限 1MB,保留
.1、.2两个备份(总 3 份) - 运行时实时监控写入量,动态轮转
- 代码量约 30+ 行
变更后:简化的双文件轮转
// 滚动:文件超过 2MB 时重命名为 .1,保留一份历史
if (st.size > 2 * 1024 * 1024) {
fs.renameSync(logFilePath, logFilePath + '.1');
}优势:
- 代码更简洁,减少约 25 行
- 降低运行时开销(无需实时监控写入量)
- 单文件容量翻倍,减少轮转频率
3. 📝 文档与测试清理
删除文件:
assets/docs/Windows-ALLOWED_DIRECTORIES.md(64 行)
测试用例清理:tests/directory-policy.test.ts
- 删除
resolve - AI 工作区脱钩白名单整个测试组(85 行) - 包括 6 个测试用例:
scope=workspace 时 explicit 路径不再要求白名单scope=workspace 时 explicit 路径可在白名单之外scope=workspace 仍应拦截危险路径scope=workspace 仍应拒绝相对路径scope=workspace 仍应拒绝不存在的目录默认 scope=platform 保持原有强制行为(回归)
4. 🎨 前端路径处理优化
影响文件: web/src/views/chat/ChatWorkspace.vue
路径规范化简化:
// 变更前:复杂的 Windows 盘符处理
if (/^[A-Za-z]:$/.test(normalized)) {
return `${normalized}/`
}
// 变更后:统一处理
return normalized.replace(/\/+$/, '')绝对路径判断简化:
// 变更前
function isAbsolutePath(value: string): boolean {
if (value.startsWith('/')) return true
return /^[A-Za-z]:(?:\/|$)/.test(value) // 支持 "C:" 形式
}
// 变更后
function isAbsolutePath(value: string): boolean {
return value.startsWith('/') || /^[A-Za-z]:\//.test(value) // 仅支持 "C:/" 形式
}5. 🔧 构建与部署优化
影响文件: .github/workflows/build-release.yml
- Python 检测优化:
# 变更前 PYTHON_BIN=$(command -v python3 || command -v python) echo "Python: $PYTHON_BIN" "$PYTHON_BIN" --version # 变更后 PYTHON_BIN=$(which python3 || which python) echo "Python: $PYTHON_BIN — $($PYTHON_BIN --version)"
- 移除不必要的
shell: bash声明 - 合并输出语句,减少一次命令调用
6. 🧩 代码清理
影响文件: src/index.ts
- 移除内嵌模式特殊处理:删除了
EMBEDDED_STOP信号处理逻辑(约 15 行) - 简化信号处理器:从具名函数改为内联箭头函数
- 代码对比:
// 变更前 const sigintHandler = () => { void gracefulShutdown('SIGINT'); }; process.on('SIGINT', sigintHandler); // 变更后 process.on('SIGINT', () => { void gracefulShutdown('SIGINT'); });
v3.0.1-beta1
📊 总览
本次更新主要聚焦于稳定性和用户体验两个方面:
- 修复了关键的跨平台兼容性问题,确保应用在 Windows 和 macOS 上都能正常运行
- 完善了文档体系,让用户能够自行解决常见问题
- 添加了国际化支持,为项目的国际化推广打下基础
🎯 主要改进点
1. 稳定性提升
- ✅ 修复了部分 Windows 电脑上的崩溃问题
- ✅ 修复了 macOS 上的"已损坏"提示问题
- ✅ 改善了应用在各种环境下的兼容性
2. 用户体验
- ✅ 提供了详细的问题解决方案文档
- ✅ 用户可以自行解决常见安装问题
- ✅ 减少了因配置问题导致的使用障碍
3. 国际化
- ✅ 完整的英文界面支持
- ✅ 中英文无缝切换
- ✅ 为国际化推广打下基础
4. 开发体验
- ✅ 代码结构更清晰
- ✅ 文档更完善
- ✅ 问题排查更便捷
Full Changelog: v2.9.59...v3.0.1
v3.0.1-beta
📊 总览
本次更新主要聚焦于稳定性和用户体验两个方面:
- 修复了关键的跨平台兼容性问题,确保应用在 Windows 和 macOS 上都能正常运行
- 完善了文档体系,让用户能够自行解决常见问题
- 添加了国际化支持,为项目的国际化推广打下基础
🎯 主要改进点
1. 稳定性提升
- ✅ 修复了部分 Windows 电脑上的崩溃问题
- ✅ 修复了 macOS 上的"已损坏"提示问题
- ✅ 改善了应用在各种环境下的兼容性
2. 用户体验
- ✅ 提供了详细的问题解决方案文档
- ✅ 用户可以自行解决常见安装问题
- ✅ 减少了因配置问题导致的使用障碍
3. 国际化
- ✅ 完整的英文界面支持
- ✅ 中英文无缝切换
- ✅ 为国际化推广打下基础
4. 开发体验
- ✅ 代码结构更清晰
- ✅ 文档更完善
- ✅ 问题排查更便捷
Full Changelog: v2.9.59...v3.0.1
v3.0.0-beta0
v3.0.0 更新日志
🎉 重大更新
全新 Web 聊天界面
- 聊天工作区 - 全新的现代化聊天界面设计
- 消息系统 - 支持流式消息、消息列表、消息输入
- 会话管理 - 完整的会话创建、切换、树状图展示
- 侧边面板 - 集成文件浏览器、Git 面板、终端面板
AI 元素组件系统
新增多种 AI 响应元素组件:
- Markdown 渲染 - 支持 Markdown 格式化显示
- 代码块 - 带语法高亮的代码展示
- 文件树 - 可视化文件结构展示
- 推理过程 - 显示 AI 推理过程
- 任务列表 - 任务进度和状态展示
- 工具调用 - 显示工具使用详情
- 终端输出 - 终端命令和结果展示
- 对话视图 - 多轮对话展示
后端 API 增强
新增完整的聊天 API 路由系统:
- 聊天事件流 (
/api/admin/chat/events) - 会话管理 (
/api/admin/chat/sessions) - 工作区文件 (
/api/admin/workspace/files) - Git 操作 (
/api/admin/workspace/git) - 终端操作 (
/api/admin/workspace/terminal) - 权限控制 (
/api/admin/chat/permission) - 元数据管理 (
/api/admin/chat/meta)
事件总线系统
- 新增聊天事件总线架构
- 事件标准化处理器
- 完整的 TypeScript 类型定义
✨ 新功能
会话管理
- ✅ 会话树状图展示,支持层级结构
- ✅ 会话时间智能显示(小时/分钟格式)
- ✅ 会话自动展开优化
- ✅ 会话复制功能
文件浏览器
- ✅ 完整的文件夹浏览流程
- ✅ 自定义路径输入支持
- ✅ 键盘快捷操作(回车键)
- ✅ 路径同步更新
Git 集成
- ✅ Git 状态查看
- ✅ 提交历史浏览
- ✅ 文件差异对比
终端集成
- ✅ Web 终端面板
- ✅ 命令执行
- ✅ 输出查看
🐛 Bug 修复
- 修复 Git 部分 BUG - 修复 Git 操作相关问题
- 修复 UNDO 部分 BUG - 修复撤销功能相关问题
- 修复滚动 BUG - 面板内容可正常滚动
- 修复点击复制出错 - 添加安全检查
- 修复对话框引号问题 - 统一使用标准英文引号
- 修复发送消息时树状图自动展开 - 优化展开逻辑
💡 优化改进
UI/UX 优化
- 重新设计面板切换按钮样式,采用现代化设计
- 优化激活状态样式,使用浅灰色背景
- 会话时间显示位置优化,移至右侧
- 删除重复的"+新建"按钮
性能优化
- 消息加载条数从 10 条提升至 30 条
- 优化组件渲染性能
代码质量
- 新增完整的 TypeScript 类型定义
- 新增单元测试覆盖
- 优化代码组织结构
📦 技术栈更新
前端依赖
- 更新
web/package.json依赖 - 新增多个 Vue 组合式函数
- 新增 AI 元素组件库
后端增强
- 新增聊天事件处理系统
- 新增工作区管理路由
- 优化平台配置处理
📝 变更统计
- 87 个文件变更
- 新增 17,921 行代码
- 删除 155 行代码
- 6 个 commits
Full Changelog: v2.9.59...v3.0.0-beta0
v2.9.59
v2.9.58-beta2
Full Changelog: v2.9.58-beta1...v2.9.58-beta2