更新日志

NevoFlux 的版本更新 —— 版本、下载与变更。

  1. v0.3.15

    最新

    本次版本的重头戏是对话——你对它说话,它开口回答,全都跑在你自己的机器上,而且这一次终于包括中文。语音之外:远程控制能连上任何地方的手机,而不再只是同一个 WiFi 下的那一台;任何兼容 OpenAI 接口的服务都能当作模型服务商;浏览器也终于说得清一个页面在网络和控制台里到底做了什么。

    🎙️ 它听得见了

    • tts_transcribe 注册了好几个月,却一直回答"未配置"——工具自己的说明里就是这么写的。现在 SenseVoice 真的会转写了,在 CPU 上,release 构建下 39 倍于实时
    • 长录音在停顿处切分,而不是掐着秒表切。 单次推理只为整段音频判定一次语言,而激活值随音频每秒增长约 6 MB:305 秒的语音要占 2011 MB、只有 5.9 倍实时,并且丢掉了"胜出语言"以外的每一个词。改为在语音停顿处切分后,它占 528 MB、14.6 倍实时,峰值内存不再随录音长度增长,四种语言也都保住了——这才让五小时的录音重新回到可处理范围
    • 每一段前后保留 200 毫秒的留白,而不是通常的 30 毫秒:在 30 毫秒下,第一个音节回来时声母是错的
    • SenseVoice 认不出的语言交给 Whisper。 SenseVoice 只在五种语言里挑一个,遇到第六种就返回其中最像的那个——于是一段德语录音回来的不是报错,而是一份自信而错误的转写。Whisper 现在默认启用,默认模型是 base:常驻 585 MB、2.5 倍实时,而 small 是 1.90 GB、0.9 倍,large-v3-turbo 是 4.77 GB、0.3 倍;在用来对比的那段音频上,前两者给出的转写完全相同
    • 被移植的那份参考实现里有两处静默的毛病:它没有语言检测,而省略语言标记并不会让 Whisper 去猜,只会让它把同一个字符吐七十遍;它的重复检测则是死代码(NaN > 2.4 恒为假),于是一段静音会回来一句凭空捏造的话
    • 如果每一段都失败,现在会返回错误。此前返回的是空转写,而那恰恰是一段真正无声的录音会返回的东西
    • SenseVoice 本来就会给出的音频事件标记(SpeechBGMApplauseLaughter)不再被丢弃——一支开着的麦克风会听见音乐和同事说话,这两者的转写都不该被当成你说的话提交上去

    🗣️ 中文终于有了声音

    • Kokoro 的 g2p 直接拒绝它自己的中文音色,所以在此之前,中文用户拿到的不是更差的声音,而是没有声音。MOSS-TTS-Nano 就是解决它的引擎:五张 ONNX 计算图、717 MB、48 kHz 立体声、二十种语言,实测 0.647 倍实时,预算是 0.85
    • 它的 SentencePiece 分词在这里从头实现,并拿上游随附的两个示例逐字校验过——中文与英文,20 和 69 个 token,都完全复现。这是唯一能抓出错误合并规则的检验;结构性测试就算算法是错的也照样全绿
    • 由谁来说话是测出来的,而不是按语言分派的。 MOSS 装了、并且在这台机器上够快,就用 MOSS,否则用 Kokoro——而每一次回落都会把原因一并送到侧栏和设置页,因为"回落到 Kokoro"对英文用户只是换了个声音,对中文用户则是彻底没有声音
    • 速度结论现在取最近五次真实合成的中位数:此前是一次在转写同时进行时测到的 2.07 倍决定了一切,而一分钟后同样的活儿只有 0.87 倍。它还有了退路——一旦"太慢"被存下来,引擎就不再运行,于是不再测量,于是结论永远不会变,唯一的出路是手工改 config.toml。设置页的重新测量会把它清掉,面板上也会列出这个数字背后的样本
    • Kokoro 多了一个独立的 speak-chinese 档位:Kokoro v1.1-zh、它的词表与 103 个音色。它是取代英文档位而不是扩充它——v1.1-zh 的音色库里同样带着英文音色,两份都留着就是 375 MB 的重复
    • 设置页不再写死"仅支持英文",而是去看实际加载了哪些音色。那行字存在的意义就是解释"我为什么听到的是英文",在一台正用中文说话的机器上,它把排查引向了反方向
    • 音色选择改由 daemon 回答并分组呈现,而不是页面里的一张表——有哪些音色取决于将由哪个引擎发声,Kokoro 在跑时却列出 MOSS 的十八个,等于让人挑一个静默无声的音色

    🎧 在侧栏里说话

    • 麦克风按钮现在真的会跑完整条链路。 你说的话会变成当前会话里一条普通的用户消息——同样的历史、同样的工具,daemon 里没有任何特例
    • 整条音频链路都放在浏览器里,因为它的两端都在这儿。语音检测跑在 Worker 里,采集帧通过转移的端口直达它:走主线程实测多出 56 毫秒延迟、主线程占用率 97%,而那恰恰是"打断"必须生效的场景——Agent 在说话时,正是它把 token 流式渲染进页面的时候。采集端保留 400 毫秒的前置环形缓冲,因为等到检测出"开始说话",第一个辅音早就过去了
    • 最后一句还没生成,第一句就已经在响。 回答在流式输出时按句切开、每句完成即合成,挂在一条可以失败而不影响文字回答的旁路上。播放端先攒一小段,于是句与句之间的空档合并成开头的一次等待,而不是每两句之间都断一下;只有一句话的回答由超时兜底放行,被打断时攒着的一并丢掉
    • 不开麦克风也能听见回答。 此前朗读回答是搭在语音输入上的,于是想跟它说话就等于让它出声,想让它出声就得开着麦克风。"朗读回答"现在是独立开关,默认关闭,旁边是"需要时使用 GPU"——默认开启,而且它不是命令:语音会把两种后端都测一遍,留下在这台机器上更快的那个,对这些模型来说往往是 CPU
    • 从第二个回答起,只听模式就整个哑掉,而且哪里都不报错:序号每一轮都从头开始,播放端却还停在上一轮的游标上。现在它会认领 daemon 起的这一轮
    • 语音视图:说话时用一条波形取代消息气泡。这只是渲染层的切换,别的什么都没变——回答照样生成、照样保存、照样可搜索。语音条上也终于有了停下来的地方,键盘可达,并且会报出它听到的每一次断档:多长、在哪一句之前、这一轮第几次,而不是把"听着有点卡"当作全部的诊断
    • 麦克风权限在启动时就为侧栏自己的来源授予,免得每次开语音都要两次手势。它绝不会覆盖一次明确的拒绝
    • 模型可以从设置页下载,而且分档:能听见之前需要 240 MB,朗读回答再加 120 MB,MOSS 是 717 MB——分开下载,因为让第一档等着最后一档,等于在全部到齐之前谁都别想开口。大小与摘要都是钉死的,镜像排在上游之前,下了一半显示的是"已暂停于 40 MB"外加一个继续按钮而不是一个百分比,取消会保留已经下好的部分,失败则保留 daemon 自己的那条消息——它会列出试过的每一个源

    📡 远程控制能连上任何地方的手机

    • 直连此前只在局域网里成立,而对一个"手机在别的地方"才是全部意义的功能来说,那等于这个功能不存在。现在头端会通过将要用于连接的那个 socket 去问 STUN 服务器自己的公网地址——NAT 是按源端口映射的,从另一个端口学来的地址描述的是一个没人在听的孔
    • 还有为最后五分之一准备的中继。 此前发出的每一个分配请求都被回以 400 Bad Request:标准强制要求的传输属性从来就没发出去过,于是中继候选根本无法获得,而挂在运营商 NAT 后面的手机因此完全没有路可走。现在流量按每包四字节封装,而不是每个包都套一整条 STUN 消息;通道绑定的应答也按发起它的那个请求来匹配,而不是从三个在途绑定里随便取一个
    • 图片与文件现在走点对点连接,不再走按消息计费的中继。头端会声明自己愿意提供的分片大小,portal 据此规划偏移量,而且绝不会用比请求更少的字节作答——一张 77 KB 的截图此前只能到达四分之一,因为按 256 KiB 步进的偏移被回以 64 KiB,而剩下的窟窿没人回头去补。仍走中继的视频,一个 89 MB 的文件从 466 次请求降到 171 次
    • 共享屏幕:Agent 可以把实时画面推上这条连接;没有直连时它会拒绝,而不是启动一个无处发送的编码器;征求同意的弹窗也会说明录的是什么、谁会看到,而不是请你批准"执行动作:screen_record"这么一句
    • 一长串"报告成功、实际什么都没送到"的问题,现在都修好了:数据通道拒绝一次超大的写入时,把拒绝报成了成功值;字节被路由到一条还在协商中的连接上;portal 从来没读那个标记"此帧无序号"的标志位,于是每一个分片都被当成"已经送达"丢掉,而两端的日志都显示成功;重复的 offer 把它自己正在建立的那条连接拆掉;每一个 offer 都会被重放给重连的 portal 并被应答上千次,而这一端早已忘了那些协商;socket 绑在 0.0.0.0 上而 offer 却宣称了一个真实网卡地址,于是连接自称已建立、握手却超时;还有 Windows 上那个在探测候选地址时再正常不过的连接重置错误,被当成了连接的终结
    • 一个会话现在会体面地放弃:五次 offer 无人应答,或者这个网络拒绝了四次连接,它就说一次然后停手,而不是在整个会话生命周期里每五秒重发一次。这不损失任何东西:中继自始至终都在承载一切
    • 中继开始遵守它自己的契约。 一条通道属于第一个打开它的账号,其他账号一律 403——此前泄露一个通道 id 就足以占掉它两个位置中的一个,把一个正常工作的头端挤下线。同一条通道上的两个头端也不再互相把对方的输出当成用户输入喂回去——那件事曾以机器速度跑了几个小时:一个下午 950 万条中继消息,而每日额度是十万条,期间没有任何人碰过任何东西
    • 重连的资格靠"活得够久"挣来,而不是靠"连上了"。一个接受连接、转手就断开的服务端,此前每次都能把退避重置——只要页面开着就每秒两次连接,一个工作日约十万次,而那正好是随后被耗尽的额度。手机端每 30 秒 ping 一次,免得运营商 NAT 悄悄掐掉一条空闲连接;中继说了"那边没人"之后,至少等一分钟再拨
    • 一条把播放器指向"资产库从未生成过的 id"的回答,现在会按这一轮实际产出的东西修正,或者连同 alt 文本一起丢掉——此前 portal 会画出播放器、去请求字节、连吃十一次 404,然后一直问下去。账号服务请求失败时,日志现在会说明是域名没解析、握手被拒,还是连接超时,而不再只有一句"error sending request"

    🧩 自带模型服务商

    • 任何兼容 OpenAI 接口的服务现在都能当作服务商:在设置页里新增、编辑、删除,或者用配置命令来操作。它们有稳定的 id,并与内置服务商并列出现在列表里
    • 但聊天路径此前并不认识它们。用自定义服务商发起的一轮会以 Invalid provider: custom:<id> 失败,而设置页却能好端端地列出并激活它——五处调用点自己去解析服务商 id,绕开了唯一认得它们的那次查找
    • API key 的查找只列出了 18 个内置服务商中的 7 个,剩下十一个会静默落到环境变量上。存着的空 key 现在算作"没有",而不是被交给客户端
    • 在 OpenAI 的 Responses 接口上,请求体里带了两个 role,被 400 invalid_json 拒绝。这条路径上的请求体现在会做归一化;走 chat-completions 的自定义服务商从来不受影响

    🔍 这个页面到底做了什么

    • 网络抓取。 Agent 可以记录一个页面发出的请求——默认关闭、按名字启动,而且现在跨轮次持续,而不是只管一轮:调试一个页面意味着你自己去点它,而一轮对话在你点到之前就结束了。由此带来的风险是忘了关,所以有一个三十分钟的上限会把缓冲区丢弃,有明确的停止动作,并且开始录与自动停止都会发通知
    • 它留得更多、给得更少:最多保留 2000 条或 4 MB,每次返回 100 条。一次在 GitHub 上的实测抓到 532 个请求,而缓冲区只有 200 条,332 条被挤掉,回来的结果却看起来是完整的——模型读到一个光秃秃的 dropped:332,于是告诉用户"并发请求已被采样合并"。现在截断会直言:这份日志不完整,被挤掉的记录找不回来了
    • 结果可以按资源类型过滤,摘要除了按状态还会按类型计数,于是"这个页面调用了什么"不再被一百个来自 CDN 的 JavaScript 文件回答掉。请求头终于被采集了——AuthorizationCookie 不是被脱敏了,而是压根没读过——字节数也改名为 request_bytes / response_bytes,因为叫 request_size 时它被当作正文大小报给了你
    • 空结果会说明这是哪一种空:抓取没开、这个标签页没有,还是录制正开在另一个标签页上
    • 控制台消息改从 DevTools 自己读取的那个存储里读,于是在有人来问之前就已经记下的消息本来就在那儿,不会被页面自身的安全策略吃掉,内部页面也照样能读。标签页里的每一个浏览上下文都会被遍历,于是一个把错误报在跨源框架里的页面不会再显得干干净净;未捕获的 JavaScript 异常也会和 console.* 一起回来
    • 它们的级别在第一版里是错的,而且让健康的页面看起来是坏的:级别存在一个 flags 字段里,而不是那个根本不存在的属性上,于是一个毫无问题的 GitHub 页面报出了 248 条错误——每一条都是 Referrer Policy 警告——而按级别过滤毫无作用
    在 GitHub 查看 →
  2. v0.3.14

    本次版本的重头戏是语音——Agent 在你自己的机器上把一段文字读出来,而且后面还在合成时你就已经能听到前面——同时,媒体抵达手机时是一张图片或一段影片,而不再是一堵 base64 的墙;无头 Agent 也能通过 MCP 提供你自己写的 Python 工具。

    🗣️ 本地朗读

    • tts_synthesize_local 在三个调度面上都注册了,却无论你怎么配置都返回"未配置"——推理部分从来就没有写。现在它背后是真正的 Kokoro-82M:54 个音色、24 kHz,在你自己的机器上运行,不需要 API key
    • 把模型与音色文件放进 ~/.cache/nevoflux/models/,或用 [tts.kokoro]model_pathvoices_path 指向它们,然后请它朗读一段文字即可
    • 后面还在合成,前面就已经在响——长文本只在句子边界切分,绝不拦腰截断,每一段做好就立刻送出,因此约一秒后播放器就出现了,而不必等整段读完。在 portal 上,这些片段会作为同一次朗读连续播放,并停在第一段出现的位置
    • 不需手工调参就快过实时:现在优先选用 fp32 权重而非 int8(int8 只有在带 VNNI 的 CPU 上才划算,而多数桌面 CPU 并没有),推理也不再被钉死在单核上——0.67× 提升到 3.41× 实时速度。代价是常驻内存约 310 MB,而 int8 为 92 MB;[tts.kokoro]threadsmodel_path 让你可以有意识地选择另一条路
    • 调用方不必再自行切分文本:旧的 510 字符上限其实是把以 token 计的窗口误当成字符,而跨调用切开的文本会变成好几段录音,而不是一次完整的朗读
    • 仅支持英文。中文音色会带着理由被拒绝,而不是用英文 G2P 硬读——胡言乱语比一个错误更糟

    🖼️ 媒体以引用传递,而非写进正文的字节

    • 截图此前是被写进助手自己正文里的 data URL 抵达手机的——那些字节模型根本没拿到过,只能凭空编造,任何浏览器都解不开。现在头部只写 ![alt](nevo-asset:<id>),字节走它自己的通道
    • 截图在模型看到之前就被转入该会话的资产库:模型依然以视觉块的形式收到这张图,因此照样能描述它所看到的东西——只是手里不再有一份可供重抄的文本。即便模型仍然编造图片字节,也会在边界处被剥除,作为纵深防御
    • portal 按需拉取自己想要的字节范围,而不是被动接收推送;一个 Service Worker 充当能应答 range 请求的源,于是起播、缓冲、拖动与解码都交还给浏览器自己的媒体栈——这也正是一段普通录像能在 iPhone 上播放的前提
    • "播放 /tmp/a.mp4" 现在有了答案:已经在这台机器上的影片会被就地接管而不是复制一份,两小时的片子既不占内存,也不产生第二份拷贝
    • 观看一部 158 MB 的影片曾从线上拉取 425 MB,并用十四分钟才播完九分半。缓存最近六十四个 range、并一次请求四个范围,把这两半问题都解决了
    • portal 现在会说出它播不了什么——一段 HEVC 录像此前会读掉六十八兆字节然后一片空白——字节始终没送到时也会说明,而不是什么都不显示

    🔌 MCP:你自己的工具,以及一套管理 API

    • MCP 改由 rmcp 提供,不再是手写的 JSON-RPC;而且这条路径上的工具调用现在真的会执行
    • 用 Python 脚本自定义工具:脚本用 describe() 声明工具,并各以一个函数实现;文件名作为命名空间前缀,于是 jira.py 导出的 search 对外是 jira__search,绝不会与内置的 browser_* 撞名。某个脚本坏掉只会被记录原因并跳过,不会把其他脚本一起拖下水
    • 一套由 token 保护的管理 API(PUT/DELETE/GET /admin/scripts),监听独立的 --admin-addr,因此可以绑到内网接口,而任务接口对外。仅当设置了 NEVOFLUX_ADMIN_TOKEN 时才挂载;PUT 会回报脚本实际产生了什么,单个脚本可以单独重载而不必重扫全部,tools/list_changed 则会在工具清单真的变化时通知已连接的客户端
    • 配置档也走同一套 API:PUT /admin/profiles/<name> 以 rename 的方式整体替换基础 profile,且无需重启浏览器,于是云端部署刷新一个登录态不必重建镜像。导出默认关闭,需 NEVOFLUX_PROFILE_EXPORT=1——它会带上已保存的密码,仅凭一个管理 token 并不足以放行
    • NEVOFLUX_BRAIN_ENABLED 可双向覆盖只读挂载的配置文件;会话模式下共享浏览器改为启动时就拉起——对于全部交互都是工具调用的 MCP 客户端,不必再等某个任务碰巧跑过一次才摆脱"no browser registered"

    🐍 Code Mode:Monty v0.0.19

    • Code Mode 背后的 Python 解释器从 v0.0.7 跃升到 v0.0.19:classwithfilter() 以及原生的 redatetime 现在都能用了。后两者对 /loop 尤其关键——它此前要绕道 python3 才能用上,而只要关闭 shell 就会被丢弃,恰恰是那些无人值守、出了错也无从上报的运行
    • 编造出来的函数名现在会抛 NameError,而不是返回一个错误字典、再被脚本当成数据继续用下去
    • 装饰器会被明确拒绝而非静默丢弃,orchestrate 也重新有了可用的失控兜底

    🔗 远程控制的后续

    • /remote-control 打开的授权页已经预填好验证码,提示语依据"浏览器是否已登录"的实时探测来措辞,并且在传输出错时继续轮询,而不是把一次进行中的登录直接作废
    • 半开的中继连接现在能被察觉:每 30 秒一次 ping,连续 90 秒毫无数据即放弃。而拨号失败一段时间的通道——比如午休时合上了盖子——不会再被永久退役;它会继续拨号并自行恢复,而不是一直死到守护进程重启
    • 宽屏下 portal 的对话获得了真正的栏宽,而不是把一条消息横铺满整块屏幕;用鼠标时,复制与编辑在悬停时出现在消息下方,右键则交还给浏览器
    • ACP:orchestrate 在该路径上真的会执行,而不是被列出来之后回一句"unknown tool";没有 shell 可用的地方不再提供 bash;卡住的工具调用也不会再拖死整轮对话

    🐛 修复与平台

    • Canvas 导出不再静默失败——没有文件、没有报错,连 about:downloads 里都没有记录。现在导出会检查下载是否真的开始,没有就由父进程写出文件并报告保存位置;"导出为 PDF" 不再停在一个空白标签页;错误提示也会一直留到你关掉它为止
    • 失败的视频渲染不再冒充完成:此前从不检查 ffmpeg 的退出码,于是一个被截断的 MP4 会作为"已完成"交到你手里。现在它的输出会被持续读走(管道写满会让渲染永久卡住),失败时会带上 ffmpeg 真正抱怨的内容,并且成功与失败都会发出通知,附上文件最终的路径
    • 浏览器动作会遵守调用方给出的 timeout_ms,不再硬编码 30 秒;缺少 ONNX Runtime 也不再让启动死锁
    在 GitHub 查看 →
  3. v0.3.13

    本次版本的重头戏是远程控制——将 NevoFlux 与 Portal 配对,从另一台设备操控它——同时每次发布都会推送无头 Docker 镜像,并让你更精细地掌控 Agent 能自主做多少事。

    🔗 远程控制

    • 在侧边栏输入 /remote-control 开启通道:用设备码登录 nevoflux.app,随后拿到 portal.nevoflux.app/connect/… 链接与配对码
    • 在手机上打开该链接、输入配对码,你就进入了同一场对话——portal 收到的是完整的一轮,而不只是文字:流式回复、思考过程、工具事件、artifact 与计划提案
    • 两端都能作答:权限询问与 Agent 自己提出的问题现在会显示在手机上并可在那里回答;在一端答完,另一端的对话框随之关闭,不会留下按了也不起作用的按钮
    • 手机上的停止按钮就是本地的停止——与侧边栏用的是同一个中断开关,而非另一套可能与之冲突的机制
    • 在手机上用 @# 撰写消息:提及某个 soul、指定某个标签页,并可查询该会话究竟有哪些技能、souls 与标签页
    • portal 会显示该会话的模式与执行档位,且两者都无法在手机上更改,因此你能看清远端这个头被允许做什么
    • Agent 发出的通知也会送达手机,而不再只是侧边栏里的一个 toast
    • 帧全程端到端加密(Argon2id 派生密钥、AES-256-GCM):中继只承载密文,配对码才是打开它的钥匙
    • 通道绑定你开启它的那个会话——保持该窗口开启,关闭它即结束通道

    🐳 Docker Hub 上的无头镜像

    • docker pull nevoflux/agent——无头 Agent 现已发布到 Docker Hub,按发行版打 tag,运行它不必再从构建镜像开始
    • 通过一个小巧的 HTTP API 派活(POST /tasks,随后轮询或跟随 SSE),也可以把它当作 OpenAI 兼容MCPACP 端点来驱动——它们最终都归到同一个任务执行器
    • 隔离靠容器本身:不受信任的任务用一任务一容器(用完即弃),受信任的流程用长期服务;并可按任务限制 shell、文件系统、上传、域名、墙钟时长与 token
    • 通过 noVNC 在任意浏览器中实时观看运行过程,并可抓取 Prometheus /metrics
    • 固定脚本模式用确定性的 Python 流水线取代 Agent 循环——浏览器工具相同,但不产生任何 LLM 调用,也不需要 API key
    • 会话模式让一连串任务复用同一个浏览器,登录状态得以从上一个任务延续到下一个

    🛡️ Agent 执行档位

    • 设置中的 Agent execution 现为四档,逐级累加:只读(自由浏览,任何更改都需确认)→ 浏览器自动(+ 自动执行点击与输入)→ + 本地读取(+ 自动读取本地文件)→ 全自动(不再确认)
    • 侧边栏工具栏上的档位 chip 显示当前会话的档位,并随你切换会话而变化
    • 升级依然安全:旧的 Auto-execute 设置从未真正生效,因此会迁移到最严格的档位,而不是静默授予完整权限

    🧹 /clear 会清空侧边栏

    • 清空会话时,面板也会随之清空——包括仍停留在那里的计划面板或权限对话框,它们的按钮此刻已不再决定任何事
    • 侧边栏还会留在该对话中,显示一行安静的 "Session cleared",而不是在会话其实仍开着时把你退回欢迎页

    🐛 修复与平台

    • Canvas 分享与 Canvas 工具恢复正常——七个 canvas.* 调用(share、import、share 的 list/extend/delete、tool 的 invoke 与 list)此前被错误标记为事件订阅送到 bridge,导致 artifact 分享自四月起就已失效,Canvas 应用调用白名单工具时会永远等待
    • 侧边栏默认行为现为三个选项——记住上次状态(新的默认值)、自动打开、仅手动——并按窗口生效,因此你的选择在启动时以及会话恢复的密集阶段都能稳住,不会被覆盖
    • 更稳健的 Linux CI:AppImage 构建会重试 tarball 下载,也不再因无关的 apt 镜像故障而失败
    在 GitHub 查看 →
  4. v0.3.12

    本次版本的重头戏是 Space Souls(空间之魂)——为每个 Space 赋予专属的 AI 人格,并配以随你切换 Space 的头像——同时支持 Antigravity 提供商,并修复了若干 Agent 可靠性问题。

    🪄 Space Souls(空间之魂)

    • 为每个 Space 赋予专属的灵魂(soul):一个具名的 AI 人格,可按 Space 绑定,并在专门的编辑器中编辑——甚至可以让 AI 帮你起草
    • 在聊天中用 @ 提及或通过 chip 召唤某个灵魂,并可在侧边栏标题栏看到其头像、在页面上悬浮显示,随你所处的 Space 变化

    🔌 Antigravity 提供商

    • 新增 Antigravity 提供商,并在启用前显示服务条款(ToS)提示
    • FAQ 现已补充 Antigravity ACP 适配器的安装步骤

    🐛 修复与平台

    • Agent 现在能穿透关闭的 Shadow DOM(closed shadow roots),像 LinkedIn 新版应用外壳这类页面又能被读取了
    • Loop Jobs 面板会回填已有任务,事件提示(toast)会自动消失(也可手动关闭)
    • 更稳健的构建:为 Firefox 本地化(l10n)克隆/拉取加入退避重试、重新构建 chat-sidebar WASM,并将 arm64 工具链固定到带 ARM64 + ATL 的 Visual Studio 实例
    在 GitHub 查看 →
  5. v0.3.11

    本次版本让 NevoFlux 能按计划运行任务、并自主追逐目标,并可在全新的**任务面板(Jobs)中跟踪;同时带来更丰富的循环(Loop)**控制、Agent 需要你时的系统通知,以及切换侧边栏的快捷键。

    📅 定时任务与目标

    • 新增 schedule(计划)goal(目标) 技能:让 Agent 在指定时间或按重复计划运行任务,或持续朝某个目标推进,直到验证完成
    • 后台调度器会在你浏览时照常运行这些任务,悬浮头像上的任务徽标会显示运行中、需要你、已完成三种状态
    • 当 Agent 需要你处理且窗口未聚焦时,现在会触发系统通知,即使 NevoFlux 在后台,提醒也能送达

    🔁 循环任务面板(Loop Jobs)

    • 全新的 Loop Jobs 面板(最大化侧边栏中)列出运行中与已完成的循环,每个都带逐轮迭代详情与最终结果
    • 循环卡片始终提供"查看详情"开关与通过/失败的**验证(verify)**标记,并新增带"立即进化(Evolve now)"按钮的建议卡片,用于优化循环内容
    • 四个入门循环模板,以及新的 /loop verify 选项,可对每轮迭代设卡

    🧭 感知 Space 与文件夹的标签

    • Agent 列出标签时,现在会尊重你当前的作用域,并报告每个标签所属的文件夹与 Space,从而在 Zen 式工作区中操作正确的标签
    • 修复固定标签分组与顶层窗口的识别问题

    ⌨️ 快捷键与幕后改进

    • Ctrl+Shift+A 可切换 Agent 侧边栏
    • Agent 可在 Canvas artifact 中运行 JavaScript(canvas_eval)以自查其成果
    • 将浏览器补丁与上游 Zen 的改动重新对齐
    在 GitHub 查看 →
  6. v0.3.10

    本次版本带来可随处拖动的悬浮 Agent 头像、会跟随各站点 Zen Boost 的侧边栏、可在 Docker 中运行的无头 Agent,以及经过代码签名的 Windows 构建。

    👤 悬浮 Agent 头像

    • 可拖动的头像,随处停靠在页面上,并带点击菜单(还原、最大化、关闭)
    • 状态气泡会提示 Agent 已完成或需要你介入,最小化时会将侧边栏收拢为头像(取代原先的侧栏轨道最小化)
    • 气泡与菜单颜色随主题自适应、位置限制在视口内,未设置身份头像时回退为 NevoFlux 标志

    🎨 侧边栏跟随网站外观(Zen Boosts)

    • Agent 侧边栏现在支持 Zen 的 Boosts:当你用 Boost 重新美化某个站点时,侧边栏会跟随其逐站外观——反色、对比度、字体、缩放与色调
    • 由全新的纯主题色引擎驱动,并处理深色配色的强调色映射
    • 右侧边栏间距现与左侧一致,浅色/深色主题下文字均清晰可读

    📝 侧边栏 Markdown 升级

    • 侧边栏渲染器切换为 pulldown-cmark 并支持表格,同时将启动代码从 init.js 中拆出,启动路径更清晰且符合 CSP

    🐳 无头 Agent——在 Docker 中运行

    • Agent 现在可作为无头服务在容器中运行:全新的 nevoflux/agent 镜像(附带 docker-compose.yml)会为每个任务启动一个全新的无头浏览器,并对外提供任务 HTTP API——无需桌面界面
    • 多种驱动方式——通过小巧的 REST API 提交任务(POST /tasks,随后轮询或用 SSE 流式获取结果),或经由 OpenAI 兼容的 /v1/chat/completions、MCP 与 ACP 接口调用
    • 隔离优先:对不受信任的任务采用一任务一容器(用完即弃),对受信任的流程采用长期服务;并支持按任务设置策略上限(shell / 文件系统 / 上传、域名白名单、墙钟时长与 token 预算)
    • 可通过 noVNC 在浏览器中实时观看运行、抓取 Prometheus /metrics,并用会话模式在一连串任务间复用同一个浏览器
    • 镜像直接拉取预编译的多架构(amd64 / arm64)发行版——无需本地编译——并默认启用 GBrain 知识库

    🔧 更新后维护

    • 每次更新后运行打包的跨平台清理脚本,并在内置技能变更时提供替换/保留对话框,避免覆盖你自己的修改
    • 成功安装的 Pack 现会计入网站的安装计数

    🔐 签名的 Windows 构建与修复

    • 经代码签名的 Windows 安装器与便携版 zip,支持 x64 与 arm64(Authenticode SHA-256,RFC3161 时间戳)
    • 扩展的菜单栏注入现会同时探测两个 browser-menubar 文件名,Agent 状态会在守护进程断开时干净重置
    • skill-creator 的录制与回放现会将录制编译为 run_flow
    在 GitHub 查看 →
  7. v0.3.9

    本次为小幅稳定性版本:让知识库在安装版中可靠运行,并避免运行较慢的 Agent 工具超时。

    🧠 知识库在每个构建中都稳定可用

    • Agent 的 ONNX Runtime——即知识库嵌入(0.3.7 引入)背后的引擎——现已打包进 Windows、Linux 与 macOS(含 universal 通用版)的每个发行版本,并会在应用内 Agent 更新时一并刷新,因此语义搜索在安装版中也能正常工作,而不再只限于开发环境

    🐛 修复

    • 将 Claude Agent 的 MCP 工具调用超时上调至 5 分钟(高于知识库自身的 120 秒上限),使运行较慢的工具能返回真实结果或错误,而不会被过早超时打断、却被误判为"成功"
    在 GitHub 查看 →
  8. v0.3.8

    本次版本的重头戏是 录制与回放(Record & Replay)——在浏览器里演示一次工作流,即可将其变成可复用的技能——并支持从链接一键安装 Pack。

    🎬 录制与回放(Record & Replay)

    • 与其描述任务,不如直接演示:被动录制器会观察你在页面中的真实操作与导航(全程不打断你),同时由 Agent 写入有序、无损的操作轨迹
    • 由 Agent 编排,新增 start_recording / stop_recording 工具——Agent 在当前标签页布设录制器,你完成工作流后它停止录制并读取轨迹
    • skill-creator 会把这次演示转化为可复用技能:你确认的取值会变成占位符,密钥绝不写入技能,并保留稳定的 role + name 选择器,使技能在回放时实时重新定位元素、能扛住页面变化
    • 当前范围为浏览器使用(页面内交互与导航),并新增面向作者的录制与回放指南

    📦 从链接一键安装 Pack

    • 打开 Pack 安装链接,即可在浏览器内完成检视 → 预览 → 确认 → 安装的流程,带实时进度——无需再进入设置
    • 仅支持 GitHub 来源,并自动处理安装 / 更新 / 重装

    🐛 修复与平台

    • Windows:Agent 在 Ctrl+C 退出时不再卡死
    • 修复 Linux AppImage 启动器名称与任务栏图标(zen → nevoflux)
    • 技能:allowed_tools 等列表字段现在同时接受单个值或列表
    在 GitHub 查看 →
  9. v0.3.7

    本次为重要的平台版本:NevoFlux 同步至基于 Firefox 151 的 Zen Browser,带来 Boosts 与 Space Routing(空间路由),并改进了 Canvas 与知识库。

    ⬆️ 同步上游 Zen Browser(Firefox 151)

    • 从 Firefox 149 跃升至 151,带来上游 Zen 的最新功能与修复
    • Boosts —— 随心定制任意网站外观:调整元素尺寸与文本大小写、调节色彩对比度/亮度/饱和度、反色,或直接注入自定义 CSS,并可按站点保存复用
    • Space Routing(空间路由) —— 将匹配的站点送往你指定的 Space,让链接在正确的空间中打开
    • 以及上游在标签、工作区、分屏与窗口同步方面的修复与打磨

    🧠 知识库(Brain)

    • 嵌入引擎升级到 fastembed 5(ONNX Runtime 1.24.2)并采用动态加载,跨已保存页面的语义搜索更快、更准

    🎨 Canvas

    • 将 artifact 的完整 HTML 内容导出为 PNG,而不再只是可见视口
    • 大体积 artifact 现在能可靠持久化——内容存储上限从 500 KB 提升到 50 MB,超过 1 MB 的文件不会再被丢弃

    🐛 修复与稳定性

    • 更可靠的 Pack 安装:进度改为流式推送(不再出现 30 秒的桥接超时),并新增看门狗,避免数据流中断时对话框卡死
    • 侧边栏会乐观地显示 "Start Setup",随后与权威状态对账
    • 缓和了视频技能模板中刺眼的白屏闪烁转场,并新增 linter 规则加以检测
    • 更稳定的 Windows 原生构建
    在 GitHub 查看 →
  10. v0.3.6

    本次为聚焦 Packs(扩展包) 管理的版本,并修复了 Windows 构建与稳定性问题。

    📦 Packs(扩展包)

    • 设置中新增 Packs 管理板块
    • 可直接从 GitHub 来源安装 Packs,提供检视 → 预览 → 确认的安装流程
    • 新增面向作者的 Pack 开发参考指南

    🐛 修复

    • 修复 workspaces → spaces 同步后部分 chrome 资源 URL 缺失的问题
    • 更可靠的 Pack 安装对话框——自动关闭计时器现在会绑定正确的弹窗

    🛠️ 构建与平台

    • 在 Windows 原生构建中重新启用 WebRTC
    • 更稳定的 Windows 构建:限制原生编译并行度以避免 clang 内存溢出(OOM)、修复 CI 中 mozmake 安装卡死,并从源码 tarball 中剔除多余文件
    在 GitHub 查看 →
  11. v0.3.5

    🧠 知识库(Brain)

    • 内置个人知识库(你的"第二大脑"),由 GBrain 驱动——一个 AI 智能体记忆系统,能跨你保存的页面综合出带引用的答案,并自动构建知识图谱,而不只是关键词搜索
    • 全新 nevoflux://brain 浏览页与安装向导,可从任意页面一键存入,可分享的 .nbrain 知识包(创建、管理、导入),以及带状态与重启/更新控制的 gbrain 运行时
    • 五个 /brain 技能协同工作:
      • brain —— 中枢:入口与共享约定,负责路由到下面四个技能
      • brain-capture —— 保存与录入:笔记、网页、PDF、Office 与电子书、视频字幕、图片(可选联网补充)
      • brain-recall —— 查找回忆:搜索已存页面、回忆事实、查看值得关注或最近的内容、跟踪链接与反向链接
      • brain-think —— 综合分析:多跳带引用回答、"谁懂某主题"路由、趋势、概念图与预测校准
      • brain-care —— 健康与恢复:诊断、同步、发现矛盾与孤立页,恢复已删除或历史版本

    🔁 循环任务(/loop 技能)

    • 将提示词或技能循环执行,带置顶循环卡片与每轮迭代进度
    • /loop 斜杠命令,以及用于状态触发迭代的 DOM 监听器

    🎬 AI 视频生成(/video 技能)

    • 在 Canvas 上生成视频,全新渲染管线(nevoflux://render):确定性逐帧捕获、进度卡片与取消
    • 一套 HTML 模板与组件——字幕、下三分之一字幕条、转场、数据图表与 3D 揭示——以及 TTS 与 Three.js 工作流
    • 渲染前的合成检查器(linter)

    🤖 更强的浏览器自动化

    • 富文本与 contentEditable 编辑(paste 与 fillRichText)、文件上传、元素探测与稳定的 CSS 选择器
    • 支持 Shadow DOM 编辑器,更智能的标签激活与导航

    🎨 Canvas 分享与工具

    • 分享与导入 canvas(nevoflux://import),重新设计对话框,一键复制
    • 将 artifact 固定到 My Canvas,并在设置中管理自定义 Canvas 工具

    🧩 平台

    • 引入 EventBus,带通知 toast 与标签丢弃恢复;NevoFlux Agent 现为内置系统附加组件,首次启动即启用

    ⬆️ 同步上游 Zen Browser(Firefox 147)

    • 带来 Zen 的功能与修复:工作区、分屏、动态文件夹(live folders)、essentials、窗口同步、拖放改进、macOS 原生气泡(popover),以及会话备份与恢复
    在 GitHub 查看 →
  12. v0.3.2

    本次为维护版本,主要改进扩展分发与 Windows 升级。

    🔌 扩展分发

    • 内置的 NevoFlux Agent 扩展现在会在启动时自动同步,版本号自动注入 manifest
    • 更可靠的 XPI 同步

    📦 安装器与构建

    • Windows 升级时清理旧的扩展缓存
    • 修复 Windows 构建路径问题
    在 GitHub 查看 →
  13. v0.1.3

    🎨 Canvas 导出

    • 将 artifact 导出为 PNG、PDF、DOCX、SVG、Markdown、XLSX 与 ZIP
    • 新增 slides(幻灯片)类型,带 PowerPoint 风格预览与 PPTX 导出
    • 带格式下拉的导出拆分按钮

    💬 侧边栏

    • AskUser 提问现在以问答卡片形式展示
    • 修复 Markdown 中代码块复制,以及折叠后侧边栏的尺寸调整

    ⚙️ 设置

    • 新增 OpenClaw 扩展配置表单
    • AI 设置拆分为独立的 LLM Providers 与 Agents 两节

    📖 文档

    • 更新 README 与架构说明,新增 FAQ(侧边栏快捷键、设置、Claude Code 配置)
    在 GitHub 查看 →
  14. v0.1.2

    🤖 AI 智能体与浏览器自动化

    • 全新 nevoflux 浏览器 API 与引擎,让 AI 直接操控浏览器
    • Browser Use 工具集:标签管理、鼠标键盘控制、Cookie 与存储、网络抓取与拦截、JavaScript 执行、frame、对话框与下载
    • 元素拾取、页面锁、滚动、等待稳定,以及自动页面快照
    • 隐私过滤内核、浏览器内 WASM 智能体运行时,以及 Manifest V3 扩展

    💬 侧边栏聊天

    • AI 聊天侧边栏,含首次启动引导向导与连接状态栏
    • 消息附件、最近历史,以及侧边栏与标签页模式切换

    🎨 Canvas 微应用

    • 用 esbuild-wasm 在浏览器内打包,生成多文件迷你应用
    • 带持久化的虚拟文件系统,支持 React、Vue 与 Svelte

    ⚙️ 设置与品牌

    • LLM 提供商配置,支持自定义 Base URL
    • NevoFlux 品牌、欢迎页与菜单集成

    🛠️ 构建

    • Windows、macOS(universal)与 Linux(x64 与 arm64)全平台构建,带代码签名
    在 GitHub 查看 →