全部编译在 GitHub Actions 完成,无需在电脑上安装开发环境或运行启动器。
| 工作流 | 应用行为 | 发布文件 |
|---|---|---|
| Build latest Android (Original) | 跟随 Operit2 最新默认分支,只做必需的编译兼容;不加入聊天修复,不导入旧版工具包 | operit2-original-arm64.apk |
| Build enhanced Android | 跟随最新源码,额外应用聊天修复及旧 Operit 工具包兼容导入 | operit2-enhanced-arm64.apk |
打开对应工作流,点击 Run workflow,保持 main,再次点击 Run workflow。无需填写提交号或其他参数。编译成功后到 Releases 下载对应渠道 APK。失败记录不是安装包。
原版仍包含 ARM64 架构选择、固定个人签名、递增版本号、上游非 OpenHarmony 构建处理,以及必要的第三方构建脚本兼容补丁。它不是作者签名的官方发行包,但不会应用增强版的应用行为改动。
两条工作流都使用已经配置的 OPERIT2_UPDATE_SIGNING Secret;不生成或更换密钥。不要删除该 Secret,也不要提交密钥到公开仓库。
两个渠道保留同一个包名 app.operit,不能同时作为两个独立应用安装。构建流程跨渠道递增版本号,可用于同签名正常覆盖;应用数据迁移仍由上游实现决定,重要数据请先备份。旧的一次性测试签名 APK 不属于这套固定签名,不能直接同签名覆盖。
增强版包含首次空会话初始化、首次输入保留、手动上滑优先、过期自动滚动取消、发送钩子等待期间草稿保护、重复提交抑制、失败发送草稿恢复、引用绑定和语音识别结果防误覆盖,以及增强对话插件的定时器清理和错误提示修正。另修复多段落 Markdown 重复组件键、队列文本误带当前草稿附件、提交钩子异常丢失已出队消息,以及新旧工具包菜单开关串用的问题。生成中途失败时保留已经显示的回复并继续提示错误;删除回复版本时同步整理索引和正文,避免后续重新生成覆盖其他保留的回答。
增强版还处理终端的 PRoot 启动环境、旧会话退出与文件描述符复用;多行脚本执行完成后才返回,同一会话命令串行,超时后确认中断并恢复或重建会话,系统 Shell 保留真实退出码。恢复服务时先恢复身份存储目录,清数据后未配置的服务交回欢迎流程;启动订阅等待存储就绪,退出或切换身份时避免提前释放仍在使用的原生核心。群聊按照目标对话的角色组调度,等待发送期间新增的附件保留在新草稿;等待规划和成员回复时释放核心调用锁,停止只取消对应聊天,并阻止继续发送下一位角色。
工作流修改普通节点时保留已完成的一次性定时器和其他触发时间,修改触发器配置才重新排期,禁用后的过期闹钟不会执行。
继续修复发送失败时的内容丢失:未收件的请求会恢复草稿并保留附件,队列暂停自动重试以免持续弹错;已经入历史的消息遇到 AI 错误时不会重新排队。编辑队列期间输入的新草稿不会被异步结果覆盖,响应任务启动失败也会解除发送状态。终端使用非阻塞读写处理大量粘贴,避免拖住全部会话;命令输出保留最近 1 MiB,超过时显示截断说明,仍返回真实退出码。
工作流保留未触发分支的入边约束,避免它在分支汇合时被当作独立入口执行;提取节点从实际成功的上游取值。Operit1 全量导入遇到旧功能映射的失效模型索引时,保留现有有效选择并报告,继续导入其余配置与聊天。
角色的固定聊天模型同时保存供应商与模型标识,普通发送、重新生成和附件能力判断使用同一个绑定;独立的摘要等功能映射保持原有选择。旧角色没有供应商信息时仍支持唯一模型匹配;存在多个同名模型时,需要在角色编辑器明确选择一次。Operit1 新导入的角色按本次实际创建的供应商映射绑定,原快照中已经失效的角色模型选项会单独报告,不中断角色和聊天导入。
插件命令使用同一套共享服务执行,避免嵌套调用或启用钩子时重复占锁;启动钩子等待命令宿主连接完成。Java 桥并发加载 DEX 时使用原子发布,避免加载到尚未写完的文件。
首次进入增强版必须在前台阅读第三方声明满 5 秒,并输入指定确认文字;可复制、粘贴,但不能跳过倒计时。确认成功保存后不重复弹出,清应用数据后重新确认。
Operit1 导入支持没有 WAL/SHM 的有效快照和旧 Room 表结构,迁移全部模型配置及功能映射、全部语音配置及其原始记录,修复附件路径和旧消息标记。语音配置分别迁移,只有对应模型和配置准备成功后才切换当前选择;缺少的模型包单独提示,不阻断其余聊天数据导入。读取一代全部语音配置数组并兼容旧单例格式,保留原始配置备份;每份配置成功准备后才允许切为当前服务,缺失模型或凭据会单独说明,不中断聊天等数据的导入。角色、角色组与共享记忆使用独立 ID 并同步重连聊天引用,避免覆盖现有记录;缺失的 ObjectBox 记忆文件会明确提示,仍保留导出中存在的用户偏好。导入原始快照时可添加一个补充资源 ZIP(Download/Operit 目录,或其 workspace、workflow 等内容)或单独工作流 JSON。实际提供的文件和目录与聊天使用同一份映射,工作区保留独立 ID;另行保存的私有文件可放在资源包的 files/、external_files/、cache/ 中并保持原相对路径。补充资源先完成复制,再迁移配置和聊天;工作流导入后默认关闭,同 ID 的已有工作流保留现状。快照和补充包都没有的文件无法恢复;缺失的文档原文件、模型或凭据会在结果中说明。
一代用户偏好导入同时支持旧 profile 格式和新的 memory_space 格式,按原版迁移规则读取当前空间与默认 ID,不再要求新版已经删除的 active_profile_id。各空间的 user.md 按真实空间身份迁移,未绑定角色、尚未生成数据库的空间也会保留;中间版本的根用户文档按原版归属规则处理,已完成迁移后主动清空的正文不会被旧文件重新填回。
一代普通上下文窗口 contextLength、摘要自定义规则 summaryCustomRules 和 Gemini Google 搜索开关 enableGoogleSearch 均迁入可执行配置,设置页再次编辑也会保留。普通窗口与最大窗口分别保存;摘要规则跟随当前聊天角色或显式模型绑定,搜索开关使用 Gemini 原生请求参数。普通回复完整结束后按实际模型阈值在后台生成摘要,不截断进行中的工具链;摘要失败保留原历史,停止后不写回迟到摘要或旧窗口统计。
文档型记忆不再跳过:读取一代 ObjectBox 的 DocumentChunk 正文并按分块顺序恢复,保留文档标记、原说明、属性、标签和关系;旧标签与属性关系按真实独立关系键解析。恢复后的正文可通过现有记忆搜索和分块读取使用,二代再次导出时也保留文档元数据。旧 HNSW 索引不会伪装成二代可用索引;缺少正文或原文档时明确报告已有和缺失的内容。
导入结果显示实际数量与全部非空迁移说明,可一键复制。临时上传清理失败不会把已完成的导入误报为失败;首次设置中,数据已写入后进入应用失败,再次继续只重试进入,不重复导入同一批聊天。补充包确含一代固定 NCNN 模型目录时复用这些模型,无缓存仍使用原下载准备流程。
修补前后差异、补丁匹配状态和源码版本随构建信息提供。测试通过不等于所有手机和上游未来提交都已验证。上游修改了补丁对应代码时,增强版会明确报告需要适配的位置,不悄悄输出半修补的版本;原版入口独立,不受增强补丁匹配影响。
增强版按 AAswordman/Operit 的正式构建白名单,从当轮确定的源码提交编译并打包。当前适配目标是 31 个 JavaScript 包和 12 个 ToolPkg(共 43 个,按当轮上游白名单更新),包含清单引用的资源;不是只复制预编译 JS。
旧包名称增加 legacy_ / legacy. 前缀,避免覆盖 Operit2 自带同名包,默认不启用,避免重复工具和钩子冲突。可从包管理中选择启用。
增强版加入旧包的 Tools 参数/结果适配、真实 Android Java 桥、无障碍操作与虚拟屏、FFmpeg 编解码、持久工作流及平台调度。终端使用应用自带的 Alpine 环境;旧文件转换包的依赖安装按实际发行版适配。深度搜索、消息注入、翻译、QQ 机器人和 APK 工具的旧私有服务调用分别接入当前实现。
构建会拒绝仍引用缺失 Tools 方法或未移植旧私有类的包;兼容报告中的“已打包宿主”不等于每台手机、每个外部服务都经过实测。无障碍、root/Shizuku 等操作仍需用户按系统流程授权;搜索、绘图、QQ、SSH、远程控制等仍需各自的账号、密钥或远端程序。不要同时启用旧版钩子包和对应的 Operit2 原生包。
一代 VITS 的模型目录或 ZIP 优先导入现有 Sherpa 引擎;需要一代自定义分词、输入张量和推理参数的模型使用移植的 ONNX 推理实现。模型完成检查、导入和引擎注册后才切换配置,失败保留原配置。ONNX Runtime 与现有 Sherpa 的原生库版本保持一致。Sherpa NCNN 使用对应的真实识别引擎,首次使用下载模型和引擎,后续校验并复用已安装文件。
旧 WebSocket TTS 接入实时语音协议,接收音频分块并播放;Deepgram STT 使用其原始音频请求和识别结果格式。Claude 一小时缓存开关作用于实际请求中的缓存边界。这些能力仍需要适用的模型文件、服务凭据及网络;配置和编译通过不代表已经完成手机推理或付费服务实测。
默认构建执行必要的语法检查、编译和打包;增强版编译旧工具包。APK 完成后核对 ZIP、架构、运行库、内置工具包、版本号、签名和哈希,再发布。独立回归工作流保留为手动入口,仅在定位具体问题时执行;普通代码提交不自动启动额外构建或重复检查。
原版与增强版隔离应用缓存、Web 成品及发布元数据;匹配的 SDK、工具链和终端运行库可以复用。原版发布可标为 Latest,增强版单独标明,按文件名下载。
发布附带上游源码、构建脚本、兼容补丁和许可证;增强版额外包含旧 Operit 源码与兼容清单。没有手机安装或运行验证时,构建元数据保持 device_tested: false。