Repository navigation
Releases
Personal AI OS 0.1.6
依米 · Personal AI OS 0.1.6
让每个人都有自己的依米:一个私人助理,住在你自己掌控的服务器上,用你选的模型,在手机、手表、眼镜和 Mac 之间跟着你走。
这一版让对话在设备之间接得更顺:通话记录回到了聊天里,手表绑定跟着 iPhone 配对走,模型设置可以直接在手机和 Mac 上改。普通响应多出字段或部分展示值有变化时,客户端可以继续处理自己认识的部分,付款相关的检查依旧严格。任务结果和失败的回报更明确了,归档也新增了记录存储和冷存储分层。
升级前请留意:终端消息合同升到了 v5,需要协调 iPhone、Mac 和手表客户端一起更新;时间线存储会单向升级到 v3,请保留升级前的备份。
有哪些变化
对话和设备
- 通话记录回到聊天里。 手机和 Mac 的聊天里,转写按通话归在一起,标明来源和时长。通话中插进一条文字消息时,同一通电话可以分成前后相接的两段。服务端的通话记录一到,就替换对应的本地字幕,不会再出现本地和服务端各一份的重复话轮。
- Mac 先恢复聊天,再连接。 Mac 会先恢复已配对的聊天缓存,连接过程不会再抢先存下一个空白视图、把缓存盖掉。缓存读取出错时,界面会直接提示。
- 手表绑定跟着 iPhone 配对走。 手表的授权挂在持久的 iPhone 配对上,而不是短期的实时会话上,所以单是换一个实时会话,不会让手表绑定失效。
- 扫码配对更严格。 二维码里如果夹带了轮询凭据,配对会拒绝它;正常的配对流程不受影响。
模型设置
- 在手机和 Mac 上改模型。 模型设置里可以添加服务商,调整高级语音参数、向量维度和各服务商专属的请求参数。
- 选用已安装的唤醒和 OCR 模型。 可以按清单 ID 选择苹果设备和眼镜上已安装的唤醒模型,以及手机上已安装的 OCR 模型。这里只是选择,不会下载模型文件。通话中更换唤醒检测器,要等这通电话结束才生效。
- 不安全的设置可以被隔离。 已保存的模型设置如果不安全,可以被隔离,设置页会单独显示存储审计提示。
- 语音和执行读同一个来源。 手机执行器、实时语音和朗读,都从模型设置的权威来源读取当前选择;已安装的资源和服务策略仍然适用。
通话和任务
- 事件循环卡一下,不再重置语音检测。 事件循环短暂卡住时,通话不再自动重置语音检测,也就不会因此切掉下一句话。
- 关掉固定开场问候。 云端配置关掉了接通电话时的固定开场问候,思考模式下的那一版也一起关了。
- 失败有明确的结果。 手机不可用、收不到拍照请求时,网关会立即返回,不再干等到请求超时;数字人的视频通路不可用时,手机会收到明确的失败;微信传输失败会给出明确的结果,不会被记成已发送。
- 任务回复送达更可靠。 任务已完成、回复已开启且文本有效时,即使工具记录的证明格式变了,回复也能送达;空回复和已取消的回复仍要通过原有检查。旧任务的终止回复有送达时限,不会一直反复尝试。
- 活动卡和子任务正确收尾。 旧任务没有可用的原生绑定时,活动卡可以按持久保存的终止状态收尾;仍在运行或暂时联系不上的子任务,不会被直接判为完成。父任务的回复完成了,也不会自动终止仍获授权的子任务。
- 恢复不会被一条坏记录卡住。 恢复时遇到无效或过时的入场记录,会先把它搁到一边,让其他记录继续恢复、新输入继续进来。被搁置的记录不算恢复成功。
兼容新内容,付款保持严格
- 普通消息多了字段,不再整条拒收。 普通对话或配对响应里多出字段时,苹果客户端不会因此拒收整条响应;必需的身份和格式检查照旧。
- 认不出的展示内容也有着落。 活动卡把认不出的展示状态显示为“未知”,把认不出的来源显示为“通用”。手表能接受新增的展示字段;认不出的最新卡片类型或跑腿状态会被略过,认识的内容照常显示。通话里认不出的对话模式按“未确认”处理:不能借它切换通话模式,也不能打开数字人,但已经请求的数字人仍可以关闭;认不出的思考状态显示值可以略过,不会让一条本来有效的通话更新被整体拒收。普通结果头可以容忍新的语音通道和输出模式显示值。
- 哪些地方不放宽。 这并不是对任意协议都兼容。手表的版本、类型、连接状态、范围和凭据校验不变;付款消息保持原有的精确合同;付款私密结果头不享受这种放宽,带着认不出的语音通道值就会被拒收。普通工具请求带了多余字段时,平台会在校验前去掉未声明的字段;而付款、发送和花钱类工具的输入,仍然拒收多余参数。
用量、范围和存储
- 模型用量按每次尝试记录。 服务商提供用量时,按每次模型尝试保留,供用量和缓存统计使用;服务商没给的数据,不会被编成费用。用量记录失败只写日志,不挡住模型调用;真正的预算暂停照样生效。
- 对话范围由平台来执行。 产品的对话范围改由平台能力网关和插件中间件执行,不再依赖内核补丁里的规则。工具执行仍要经过正常的判定。
- 归档:记录存储和冷存储分层。 归档会把符合条件的元数据收进记录存储,把大的原件按目标大小装进分段文件,特别大的单个原件独占一段;登记、同意、设置和意图仍各自保留原来的文件布局。冷存储只在副本核验通过后才迁移数据;普通读取、活跃的输入和新追加的内容,都会保护数据不被提前迁走;空闲但还没关闭的数据流,在旧内容迁走后仍然可以继续追加。
- 存储预算算得更全。 存储预算会统计字节、inode 和文件名的增长,还可以把计划中的部署峰值需求一并算进去。
- 删掉不用的模块。 已经不用的独立上下文引擎、公共 RTC 模块和过时的记忆模块被删除了。实时通话和现行的记忆路径都还在。
升级与部署前请注意
- 协调服务端与 iPhone、Mac 和手表一起更新。 本版终端消息合同升到了 v5。请让服务端与 iPhone、Mac、手表协调更新;旧客户端可能拒收或漏掉新的通话记录信息。
- 保留升级前的备份:时间线单向升级到 v3。 本版的发布合同把 v3 定为时间线存储的格式和目标,v1/v2 作为迁移的输入。迁移 v1/v2 时,发布流程会先停止写入、备份时间线存储,再用新代码打开它。不兼容的旧版本读不了 v3;只把程序回退到旧版本,并不能恢复这份数据。如果日后要回到不兼容的旧版本,需要用升级前的备份恢复数据。
- 这类升级出问题时,向前修复。 切换到时间线目标与上一版不兼容的新版本后,如果切换后出现故障,系统会保持现状、等待向前修复,而不是自动退回。存储一旦是 v3,切换、手动回退和看门狗都会拒绝不兼容的旧目标;彼此兼容的版本之间仍然可以回退。
- 没有时间线存储的部署。 如果时间线原本就没启用或不存在,而且既没有存储文件、也没有 SQLite 附属文件,发布流程可以不做备份直接继续。时间线已启用却找不到存储,或者还残留着附属文件,都会被当成错误。
- 记录存储的启用顺序。 新版本先以文件布局通过初始健康检查;之后发布流程排空网关、检查快照容量,再切换到记录存储布局,重启并核验网关的记录写入。
- 模型设置迁移。 发布流程会先预演现有的模型设置迁移,复核运行中的输入,等旧的写入方停下后再正式应用。缺少角色时,可以补入 OCR 角色。全新的单机安装,会把已配置的语音选择和凭据导入模型设置的权威来源;已有部署则需要走这次迁移或补入。模型文件必须事先装好。
- 手表绑定迁移。 符合条件的有效手表绑定,会连同凭据状态一起迁到持久的 iPhone 配对上。已撤销、不属于同一用户,或与该 iPhone 配对不匹配的绑定,不保证能恢复;凭据也仍会按各自的期限过期。
- 本版不开启的部分。 会话折叠在本版的发布合同里保持关闭;有了记录存储和冷存储分层,并不代表会话折叠已经开启。可选的备用实时语音模式已经有实现和设置,但本版保持关闭。可选会议助手的 Mac 执行端不在本版之内。
- 需要另行准备的资源。 模型文件、运行环境和第三方 SDK 需要另行准备。
- 仍需在你自己的环境里验证。 通话、设备连接、模型服务商和恢复流程,仍需要在你自己的主机和设备上验证。
Yimi · Personal AI OS 0.1.6
Everyone should have their own Yimi: a personal assistant who lives on a server you control, uses the models you choose, and goes with you across phone, watch, glasses and Mac.
This release makes conversations flow more smoothly between devices: call history is back in the chat, Watch binding follows the iPhone pairing, and you can edit model settings directly on the phone and the Mac. When ordinary responses gain fields or selected display values change, clients keep processing the parts they recognize, while payment-related checks stay strict. Task results and failures are reported more clearly, and archives gain record storage and cold tiering.
Before upgrading: the terminal message contract moves to v5, so coordinate the iPhone, Mac and Watch client updates; the timeline store moves one way to v3, so keep a pre-upgrade backup.
What changed
Conversations and devices
- Call history is back in the chat. Phone and Mac chats group transcripts by call, showing source and duration. If a text message comes in during a call, the call can split into two consecutive sections. Once the server's call records arrive, they replace the matching local captions, so turns no longer show up twice (once local, once from the server).
- The Mac restores the chat before connecting. The Mac restores its paired chat cache first, so connection activity can no longer save an empty view over it. If the cache can't be read, the app says so.
- Watch binding follows the iPhone pairing. Watch authorization rests on the durable iPhone pairing rather than the short-lived realtime session, so rotating a realtime session does not on its own invalidate the Watch binding.
- Stricter QR pairing. Pairing rejects a QR code that carries an embedded poll credential; the normal pairing flow is unaffected.
Model settings
- Edit models on the phone and Mac. Model settings can add providers and edit advanced voice parameters, embedding dimensions and provider-specific request parameters.
- Pick installed wake and OCR models. You can select installed wake models for Apple devices and glasses by manifest ID, as well as installed phone OCR models. This only selects them; it does not download model files. Changing the wake detector during a call takes effect after the call ends.
- Unsafe settings can be quarantined. Saved model settings that are unsafe can be quarantined, and the settings screens show a separate storage-audit notice.
- Voice and execution read from one source. The phone executor, realtime voice and read-aloud all take their current selections from the model-settings authority; installed resources and service policy still apply.
Calls and tasks
- A brief event-loop stall no longer resets voice detection. When the event loop stalls briefly, the call no longer automatically resets voice detection, so the next utterance is not cut off because of it.
- Fixed opening greeting turned off. The cloud configuration turns off the fixed greeting when a call connects, including its thinking-mode version.
- Failures have explicit outcomes. When the phone is unavailable for a camera request, the gateway returns right away instead of waiting for the request to time out; when the avatar's video route is unavailable, the phone gets an explicit failure; WeChat transport failures produce an explicit outcome instead of being recorded as sent.
- Task replies arrive more reliably. A completed task with an opened reply and valid text can be delivered even if its tool-transcript proof has changed shape; empty and cancelled replies still go through their existing checks. Terminal replies from old runs have a delivery age limit, so they are not retried forever.
- Activity cards and subtasks wrap up correctly. When an old run has no usable native binding, its activity card can settle from the durable terminal state; a subtask that is still running or temporarily unreachable is not simply declared finished. A completed parent reply does not automatically stop a still-authorized subtask's tool work.
- One bad record no longer holds up recovery. During recovery, an invalid or obsolete admission record is set aside so other records can recover and new input keeps flowing. A set-aside record does not count as successfully recovered.
New content tolerated, payments kept strict
- Extra fields no longer get a whole message rejected. When an ordinary conversation or pairing response carries extra fields, the Apple client no longer rejects the whole response; required identity and schema checks still apply.
- Unrecognized display content has somewhere to go. Activity cards show unrecognized display states as "unknown" and unrecognized sources as "generic". The Watch accepts additional display fields; an unrecognized latest-card kind or errand state is skipped while known content still shows. An unrecognized call conversation mode is treated as unconfirmed: you cannot switch call modes or open the avatar from it, but an avatar already requested can still be turned off; unrecognized thinking-status display values can be skipped instead of rejecting an otherwise valid call update. Ordinary result headers tolerate new voice-transport and output-mode display values.
- What is not relaxed. This is not compatibility with arbitrary protocols. Watch version, kind, link, scope and credential checks are unchanged; payment messages keep their exact contract; a payment-private result header gets no such relaxation and is rejected if it carries an unrecognized voice transport. When an ordinary tool request has extra fields, the platform strips undeclared fields before validation, while payment, send and spend tool inputs still reject extra parameters.
Usage, scope and storage
- Model usage recorded per attempt. When a provider reports usage, it is kept per model attempt for the usage and cache views; data the provider did not supply is never turned into a made-up cost. If recording usage fails, it is logged and the model call goes ahead; a real budget pause still applies.
- Conversation scope enforced by the platform. Product conversation scope is now enforced by the platform's capability gateway and plugin middleware rather than by rules in kernel patches. Tool execution still needs its normal decision.
- Archives: record storage and cold tiering. Archives pack eligible metadata into record storage and large originals into segments of a target s...
Personal AI OS 0.1.5
依米 · Personal AI OS 0.1.5
让每个人都有自己的依米:一个了解你的私人助理,住在你自己的服务器上,用你选择的模型,在你的授权范围内使用你的数据和设备。
这一版,依米可以换用部署者自己准备的本地模型,还新增了可选的会议助手服务端能力和 Keynote 编辑协议。对外发送的许可细化到具体的收件人和消息类别;结果不明的操作,要先核查原来那次操作,不会自动重做。
从这一版起,版本号跟随项目自身的发布序列,所以 0.0.2 之后直接是 0.1.5。
有哪些变化
- 本地模型目录。 模型设置里新增本地模型目录,列出每个模型的名称、是否已安装、能否切换和切换条件,每页最多 8 项。语音识别、语音活动检测、声纹、唤醒词和向量模型,都可以提交带签名的切换请求;也可以切回保留的上一个模型,或选回当前实际生效的模型。设置页会同时显示选中的版本、实际生效的版本、上一个版本、切换进度和错误。语音类模型选定后,要重启服务才会加载。模型文件由部署者自备,见下文。
- 各类模型的切换规则。 换声纹模型时,会提示重新录入和校准;新版本还没实际生效时,设置页会标出付款声纹待更新。人脸模型会出现在目录里,但不能在这里切换,要走人脸录入流程。换唤醒词模型不会改掉原有的常规唤醒词和通话中断词:如果要换上的模型缺少通话中断词,或者改了词语,就拒绝切换。换向量模型时,先建好新的索引空间并报告进度,建完才切换过去。
- 模型配置、密钥与费用。 改了模型配置或换了密钥,在收到实际启用的确认之前,服务会保留实际启用或可能已启用的配置版本所需的密钥。服务重启后会重新确认,避免切换还没确认就提前清理旧密钥。估算模型费用时,能区分缓存写入是按普通输入计价还是单独计价;缺少计量或价格时,费用仍标为未知。
- 通话分类的有序后备。 如果主脑已经配好有序后备路由,而通话分类(
call.intent)的后备链还空着,可以用新增的命令把这条链补给通话分类,用法见下文。通话分类自己的输出和采样参数不变。 - 会议助手(本地 Keynote)。 新增会议服务端编排和 Keynote 编辑协议。执行端可以通过它读取指定本地 Keynote 演示文稿的当前页和页上的文字、定位讨论区域、生成修改预览、执行修改,并查询原操作的结果。实际读写还需要实现该协议的 Mac 执行端,本版所附的 Mac 源码尚未提供。选定会议时,要绑定已有的文件授权、确切的那台电脑和一副在线的眼镜;文件或设备对不上,就不开始。会议期间的媒体只用于这场会议;迟到的媒体,或属于已结束会议的媒体,也不会进入日常的人物与情绪记录。会议助手是可选的能力包,默认不启用,见下文。
- 会议里怎么定位、怎么改。 接通相应的 Mac 执行端后,它会结合会上的话、眼镜画面和投影片,定位到唯一对应的文字元素;也可以按明确的页码查文档结构。指代含糊、画面已经过期或缺少事实依据时,它会等更多材料再定位。修改计划只允许替换文字或追加段落,每一条都绑定原来的页面、原文和预览;删除、图片、布局和发送都不在计划范围内。第一次修改文字需要你确认,之后会对同一个文件、同一台电脑和允许的操作类型,建立最长两小时的会话许可;会话结束或连接持续断开后,许可失效。某次修改结果不明时,先查询原来那次操作,核对目标、计划和修改前后的文字回读,核对清楚后才允许继续修改。
- 发送许可认准收件人和消息类别。 对外发送的许可改为按“解析出的具体收件人 + 消息类别”来认,类别包括文本、文件、添加反应和移除反应等。微信收件人必须在通讯录里唯一匹配;按名称匹配有歧义或查不到时,就不发送。收件人和类别由能力包的声明和经过认证的调用准备来决定;消息工具传进来的效果或任务类型,不能自己挑另一条历史许可来用。旧许可怎样迁移,见下文。
- 结果不明,先核查再继续。 需要确认的操作中断后恢复时,先核查原来的执行记录;已经认领却没有结果的调用,会返回待核查的信息,不会自动再执行一遍。结果不明的写操作,要先拿到绑定原操作和原目标的核查证据,才能重试;已经成功、且不允许重试的操作,不会重复执行。手机任务遇到来源无法核实的付款记录时,会要求核对原订单,核查结果绑定到原任务后才继续;明确不含付款意图的隔离记录,不会挡住普通任务。
- 执行结果的汇报。 汇报执行结果时,重复的事实合并成一条,列表收成数量摘要;每次最多展示 12 项,每项不超过 160 字符,其余细节可以接着问。电脑和桌面能力返回的截图、音频、资源和旧式附件标记,转换成回执时都会保留,供后面读取截图内容和坐标。
- 聊天记录。 手机上的聊天历史改为懒加载:默认显示最新的 150 行,每次往前展开 100 行;已加载的行都显示完了,才去请求更早的记录。超长消息在聊天和首页预览里只显示开头一段,上限是 2000 字符或 40 个换行;在聊天里可以打开全文。翻看旧记录时,阅读位置保持不动;判断滚动时观察的是系统原生的滚动手势,系统的侧滑返回照常可用。停在最新消息处时,如果键盘弹出、可视区域或消息高度发生变化,聊天会重新对齐到最新一条,这修复了历史记录出现空白的问题。服务端做过历史隔离后,各端收到可信的新历史代次,会清掉旧的本地历史,见下文。
- 活动卡。 活动卡按持久保存的递增版本回放。服务重启后,仍然挂着的卡片会根据执行记录收尾,进度显示的是实际的工作项。找不到原始请求或回复的活动卡,按服务端的开始时间插进聊天,而不是一律堆在最新消息后面。
- 通话。 说话指示只在实际播放的声音超过噪声阈值时亮起,连续静音 0.8 秒后熄灭,减少停顿时的闪烁。通话里没有核实或认不出的声音,保留原来的归属;不会因为这通电话是已配对的用户发起的,就被当成已核实的请求。
- Mac 解除配对。 离线时也能点解除配对,界面会显示进度:本机已经解除,服务器尚待同步。
- 眼镜。 随身模式下,眼镜的空闲画面会显示一条最多 48 个字符、两行的短回复;说话指示跟着实际的语音播放,展示完后淡出。眼镜与其他客户端使用同一张获授权的 AI 生成虚构默认头像;公开源码将随身回复界面的头像文件替换为中性的矢量占位图。付款提示过期后,眼镜会重新判断还需不需要麦克风,并取消还在等待发出的付款语音采集。重新连接或启动时,眼镜会收到一份表示当前空闲的移动状态快照,清掉旧的骑行和导航显示,不再显示已经结束的路线。
- 声纹与人物列表。 声纹核验按采集通道分别保存阈值,阈值逐步上调;自动上调需要同一通道足够多的确认样本。重启或在配置里调低,都不会自动降低已经保存的阈值。人物列表默认分页列出有名字的人,也可以查看没有名字的人或全部人物;列表会给出下一页的位置,以及声纹模型与当前模型已不匹配的人物条目数。
- 说话偏好。 依米的说话偏好可以在语气、表达和习惯三类选项里选择,总长不超过 1500 字符,可以恢复上一版。偏好改变不了她的身份,也改不了受保护的规则。
- 主动关怀与存储。 如果没有在线的终端,通知交付也不可用,主动关怀的结果会等有终端连上后再尝试送达;同一服务运行期间,同一段离线等待只记一次这类错误。存储信息里新增热数据积压、最早记录和归档进度。配置冷存储后,可归档的不可变文件满足以下条件时,会清理本地热副本:超过热保留期限、云端副本核验通过、没有活动会话或待接收原件占用。SQLite 和可变登记数据不在清理范围内。清理也不再因为冷历史变大而要等一次完整遍历。
升级与部署前请注意
-
先重建镜像,再跑迁移。 用新源码重新构建服务镜像,并执行现有的发布迁移入口;标准切换流程会在启动业务服务之前跑迁移。不要让旧容器直接读取新配置。Hermes 要按新的
producer.lock.json和补丁重新构建,已有的本地重建目录不能代替这套新组合。模型设置和桌面任务队列新增的表与列,会在对应存储打开时自动创建或升级。 -
检查发送许可的迁移结果。 既有安装要执行正式的
migrate;走标准切换流程的,这一步已经包含在内。迁移会把能无歧义识别的旧发送许可加入新的许可空间,旧记录原样保留,旧许可文件也不会删除。分不清文本还是附件的旧通用发送许可,以及收件人不明确的许可,会留在迁移返回的send_consents未迁移清单里。请检查这份清单,并重新确认其中的许可。 -
核对时区。 部署时区依次从
PAIOS_TIME_ZONE、产品配置里的time_zone、宿主机时区解析,然后固定下来;日历、关怀、付款的日界和快照计划,都按这同一个 IANA 时区工作。运行配置模板里原来写死的时区默认值已经去掉,改由部署配置传入。重新渲染部署配置时,请核对PAIOS_TIME_ZONE或产品配置里的time_zone,并使用渲染出来的快照定时器,以免容器里的 UTC 决定业务上的日界。 -
按需补齐通话分类的后备链。 既有安装如果想给通话分类补上后备链,先把下面的占位参数换成自己的值,不加
--apply运行一次,查看计划:node deploy/cloud/model-settings-call-intent.ts --directory '<authority-dir>' --master '<master-file>' --environment '<environment>' --profile '<profile>' --expected-revision '<revision>' --principal-id '<principal>'
确认模型配置空闲、修订号一致后,加上
--apply再运行一次,然后等运行中的服务确认启用。命令只补空着的链,通话分类自己的输出和采样参数不变;如果已有内容不同的自定义链,它会拒绝覆盖。 -
历史隔离是可选操作,用前先升级所有客户端。 历史隔离是一项需要明确选择的管理操作,普通升级不要求清空历史。它在停止写入、完成迁移之后执行,支持隔离历史、核验保留项、回滚和到期清理;保留期从隔离完成起算七天;未完成的隔离或恢复不设恢复期限,真正执行需要显式的操作参数。启用前请配置隔离边界,并确认保留期和到期清理入口。隔离和回滚都会更换服务端的历史代次,客户端通过只读接口读到新代次后,清理旧缓存。所以使用前要把手机、手表、Mac 和眼镜一起升级;旧客户端会继续保留旧的本地历史。新客户端只在收到可信的新代次后清理:
- 手机:清空本地的操作、位置和移动历史以及对话状态,删除旧对话、终端记录和临时语音文件,并阻止迟到的异步写入把旧历史写回来;与它共用代码的 Mac 聊天缓存也一样。
- 手表:清空待处理的操作、回执去重记录和最近的回执显示。
- Mac:依次清理命令记录、临时传输、撤销目录和会话显示,并重新开始消息预览的游标。
- 眼镜:停掉旧语音,删除临时语音文件,清空卡片和工作计数,并保存新的代次。
-
本地模型(可选)。 要用本地模型目录,请在模型设置的配置里填写
local_catalog_file,并预先放好可读的模型文件,写明绝对路径和受信摘要;目录不会下载或安装模型。换了本地语音识别、活动检测、唤醒词或声纹模型后,要重启服务;新引擎成功打开并确认对应代次后,才算真正切换。换声纹模型后,要为用到的每个采集通道重新录入并校准;在此之前,不能把旧模型的付款核验能力当成新模型已经具备。本地向量模型需要自备固定的模型文件,以及装好 torch、transformers、Pillow 和 safetensors 的 Python 环境;切换时要等派生索引重建完成。 -
会议助手(可选)。 会议包是可选能力,默认部署配置里没有启用,要通过现有的能力包选择机制打开。启用前请配置平台端口和内部服务凭据,并准备一台在线的 Mac 执行端和一副在线的眼镜;这台 Mac 执行端要实现上述 Keynote 读写和编辑结果核查协议。本版所附的 Mac 源码尚未提供这些动作。
-
保留手机能力包的运行绑定。 手机能力包使用部署时提供的执行器、付款和凭据文件绑定;镜像里自带的提示和应用资料路径,与可写的任务状态路径是分开的。升级时请保留这些绑定。
-
独立构建服务。 部署了独立构建服务的,请对照新的
deploy/cloud/workshop-build.env.example补齐五个必填变量:投影目录、设置服务地址、日志服务地址、发布队列和源码仓库。两个服务地址彼此独立,都不带路径。只读挂载的投影里必须有current.json,共享服务凭据的职责要与示例里的说明一致。 -
开发与测试。 如果开发副本要在 Integration 里本地做类型检查,请按更新后的包锁重新安装依赖;检查器能启动,不代表现有的类型诊断已经全部消除。桌面模拟器的 PDF 用例需要先装
pdftotext:Linux 装poppler-utils,macOS 装poppler。 -
仍需在自己的环境里验证。 通话、设备权限、外部执行和恢复,仍需要在你自己的主机和设备上验证。
感谢贡献者
- 感谢 Chirag Jangir(@chiragjangiir)贡献 #15:补全独立构建服务的环境示例,对应 #12。
- 感谢 Pralav Singh(@pralav-25)贡献 #16:让 Integration 自带固定版本的 TypeScript 和 Node 类型,用包内编译器做类型检查,对应 #1。
修复的问题
- #1:Integration 自带固定版本的 TypeScript 和 Node 类型,用包内编译器做类型检查,严格检查保持不变(#16)。
- #2:活动标题的第一个词超出长度预算时,保留看得见的字符前缀并加省略号,组合字符不会被拆开。
- #3:模拟终端(
mac-product-sim-client.ts)遇到--help或-h时输出用法并以 0 退出;缺少必需参数时输出错误并以 2 退出。这些检查都在读取配对文件和访问网络之前完成。 - #6:测试夹具启动前,先把文件 URL 解码成文件系统路径;工作目录含空格时,不会再把
%20当成实际文件名。 - #7:补充两类时区边界测试:Lord Howe 一天 23.5 小时和 24.5 小时的夏令时日,以及 Kathmandu 的四分之一小时时区。日历的运行实现没有改动。
- #11:桌面模拟器提取 PDF 时,按调用方指定的页序逐页读取;不指定页码时读全文,超过
max_chars时停止;页码越界返回GUARD_TYPE_UNSUPPORTED。 - #12:独立构建服务的环境示例补齐五个必填变量、两个不带路径的独立服务地址,以及共享凭据的职责说明(#15)。
Yimi · Personal AI OS 0.1.5
Everyone should have their own Yimi: a personal assistant who knows you, lives on your own server, uses the models you choose, and uses your data and devices within your authorization.
In this release, Yimi can switch to local models that the deployer supplies, and gains optional meeting-assistant server capabilities and a Keynote editing protocol. Send consent is now tied to a specific recipient and message category. An operation with an unknown outcome is first checked against the original operation and is never redone automatically.
From this release on, version numbers follow the project's own release sequence, so 0.1.5 comes directly after 0.0.2.
What changed
- Local model catalog. Model settings gain a local model catalog that lists each model's name, whether it is installed, whether it can be switched and under what conditions, with up to 8 entries per page. Speech recognition, voice activity detection, voiceprint, wake-word and embedding models can all be switched through a signed request; you can also switch back to the retained previous model or reselect the model currently in effect. The settings page shows the selected version, the effective version, the previous version, switching progress and errors. A newly selected speech model loads only after a service restart. The deployer supplies model files; see below.
- Switching rules per model type. Changing the voiceprint model prompts for re-enrollment and calibration; until the new version is actually in effect, the settings page marks the payment voiceprint as pending update. Face models appear in the catalog but cannot be switched here; use the face-enrollment flow. Changing the wake-word model does not change the existing regular wake word or call-interrupt words: if the incoming model lacks the call-interrupt words or changes them, the switch is refused. Changing the embedding model first builds a new index space and reports progress, and switches only once the build is complete.
- Model configuration, keys and costs. After a model configuration change or key rotation, until activation is confirmed, the service keeps the keys needed by every configuration version that is or may be active. It re-confirms after a restart, so old keys are not cleaned up before the switch is confirmed. Cost estimates can distinguish whether cache writes are billed as regular input or separately; costs stay marked unknown when usage or prices are missing.
- Ordered fallbacks for call classification. If the brain already has ordered fallback routes but the fallback chain of call classification (
call.intent) is empty, a new command can give that chain to call classification; see below for usage. Call classification keeps its own output and sampling parameters. - Meeting assistant (local Keynote). New meeting server orchestration and a Keynote editing protocol let an executor read the current slide of a specified local Keynote presentation and its text, locate the area under discussion, generate an edit preview, apply the edit and query the result of the original operation. Actual reads and writes require a Mac executor that implements this protocol; the included Mac source does not yet provide one. Selecting a meeting binds an existing file authorization, the exact Mac and one pair of online glasses; if the file or devices do not match, the meeting does not start. Media captured during the meeting is used only for that meeting; late media, or media belonging to a meeting that has ended, also stays out of everyday people and mood records. The meeting assistant is an optional capability package and is off by default; see below.
- **Locating and editing in...
0.0.2
让每个人都有自己的依米:部署在自己的服务器上,连接自己选择的模型、数据和设备。这一版把依米会做的事整理成统一的能力包。
米家、手机任务、消息、微信、桌面、Mac 和内置工具都以能力包接入,每个包可以单独启用和回退(单机外设还需启用对应开关),确认和执行回执各走同一份合同。能力包是本项目在 Hermes 之上的一层,不改动上游。查找技能和 MCP 服务、检查包的合同、登记和回退,都在同一个工坊里完成。
模型设置只有一个权威来源:单机部署第一次启动时从 .env 导入主脑、视觉和工坊的配置,之后沿用已保存的设置和凭据,改动在客户端的“模型与密钥”页面进行。启动命令需要在 Linux 部署主机上以 root 身份执行,工坊使用独立的 1 GiB ext4 容量卷。模型用量分开记录输入、输出、缓存读取和缓存写入,用量或费用无法确认时保留估算或未知标记。
新版本启动时把 Hermes 原生核心记忆里已有的条目导入个人记忆。通过正式发布流程回退后,旧版本读取的是当前核心记忆资料的投影;重新升级只导入回退期间新增的条目;代码回退仍不撤销数据库变更或外部操作。
手机、手表和 Mac 的连接、音频与界面更新以源码交付,第三方 SDK 和模型资源需另行取得。保留社区贡献的 Mac 桌面模拟器指南和原生端测试的环境说明。项目继续采用 Apache-2.0;独立运行的米家 MCP 服务保留 GPL-3.0-or-later 许可,见 NOTICE。
Personal AI OS 0.0.2 organizes Yimi's capabilities into capability packages with shared consent and receipt contracts, each enabled and rolled back on its own (single-host peripherals also need their corresponding switches enabled); they are this project's layer on top of Hermes, not an upstream change. Brain, vision and workshop settings have one authority, imported from .env on first start. Existing Hermes native core memories are imported at release startup, and release rollback projects the current core memory profile. Third-party SDKs and model resources are obtained separately. See README for deployment requirements and LICENSE / NOTICE for licensing.
0.0.1
让每个人都有自己的依米:部署在自己的服务器上,连接自己选择的模型、数据和设备。未来,各自使用者的依米可以在授权范围内相互协商。
这个源码版本包含 Linux 容器服务端,以及手机、眼镜、手表和 Mac 客户端。服务端连接设备输入、实时通话、个人时间线、记忆、归档和工具执行。模型按角色配置;依米的声音来自 Qwen。
对外发送遵循同一收件人和同一任务类型的首次确认。支付授权绑定本次请求,默认使用手机确认卡;语音支付和小额自动支付需在手机单独启用,两项默认关闭,并保留各自的身份、金额与撤销条件。工具工坊提供隔离执行空间;发布工具支持版本回滚。回滚不撤销数据库变更或外部系统操作。
服务端以源码和 Compose 交付,在本机构建镜像;0.0.1 不发布 GHCR 镜像。iPhone、Mac、手表和眼镜均以源码与构建说明交付,0.0.1 不附带预编译客户端。部署与客户端资源要求见 README 和 docs/。第三方 SDK、模型和外部服务遵循各自许可与使用条件。项目采用 Apache License 2.0;文件与 NOTICE 标明的许可例外继续适用,包括独立运行的 GPL 米家 MCP 服务。
Personal AI OS is a self-hosted personal assistant across phone, glasses, watch, and Mac. Model roles are configuration; Qwen provides its voice. See README for deployment requirements and consent boundaries, and LICENSE / NOTICE for licensing.