Changelog

Improvements and fixes in each release, in sync with GitHub Releases. Entries are written in Chinese.

0.34.0-beta

改进

  • 视觉实验室的“问资料”与“原文定位”改为正式资料页:内屏显示导航轨与两列(左列分区与位置,右列问资料结果或文档),外屏为单页栈与底栏,资料、位置与引用记录均为虚构数据。
  • 中英文 README 改为使用场景、“你始终说了算”、全部功能表与三步上手的结构,正文不再区分发行渠道,版本徽章读取 GitHub Release。
  • 资料文档页的详情改为属性表:名称与取值同字号两列对齐,分索引、图谱与合集、文件三段;宽屏右栏保留位置。窄屏顶栏新增“详情”按钮,详情与“被引用”在底部面板打开,不再排在正文之后;索引失败、索引过期与图谱待确认用量时按钮显示红点,正文上方显示带重试、重建或确认抽取的提示条。

修复

  • 内屏文件预览页头的大小与修改时间改为分段元数据行,不再拼成一个字符串;附件超出上下文且可压缩时,提示改为一句完整的话(“约 X / Y,发送时先压缩”)。
  • 输入框令牌提醒的“移入 Git 凭据”说明:英文界面不再混入一段中文注释,中英文与上一句之间补上句号。

发行

  • GitHub Release 只发布侧载 APK,不再构建和发布 Play 渠道安装包。
  • 版本名为 -beta 的发行设为最新正式发布(Latest),仅 -alpha、-rc 等其它后缀标为预发布。

0.33.4-beta

修复

  • 长标题、副标题与取值不再用省略号截断,统一改为单行横滑、右侧渐隐:设置行的单行标题与副标题(如设置首页的“默认模型”说明)、取值行的数值(如提供商表单的“协议类型”,取值最多可占行宽一半)、会话页顶栏标题、首页智能体行的名称与说明。
  • 会话列表与会话图谱绑定行的长标题不再用跑马灯来回滚动,改为与全站一致的横滑渐隐;分支会话行的图标与标题之间不再空出一段。
  • 资料页页头标题显式使用前景色,放进没有外层 Surface 的容器时也能看见。

改进

  • 视觉实验室新增 14 个版本:会话状态(排队、提问、保密输入、触摸锁、模型网络、等待 Tailscale)、浏览器(智能体操作、用户接手、登录)、资料(问资料、文档定位)、提供商与 Tailscale 设备选择。
  • 视觉实验室的资料、浏览器、Git、提供商设备选择与模型选择版本改为复用正式界面的外壳与面板,外观与正式页面一致;提供商设备面板点选设备后会更新接口地址。实验室脚本数据按真机复核修正:思考计时、上下文用量、终端安装后的衔接、提问与保密卡滚到输入栏上方、引用角标位于句末。

0.33.3-beta

修复

  • 内屏右列次级页头恢复会话页原先的纵向版式:标题行与信息行整块在页头行里居中,不再为与左列标题顶边对齐而整体下压,信息行与页头分割线之间留出原有间距;会话页顶栏同样回到原位。

0.33.2-beta

变更

  • 内屏右列页头改为次级样式:标题 16sp,下方一行 12sp 信息行,标题顶边与左列一级标题对齐。资料页文档页的信息行是知识图谱状态;存储空间文件夹的信息行是合集类型与“已抽取 n/m”,点按标题打开合集设置(外屏仍为小标签);文件预览的信息行是大小与修改时间。会话页标题与状态行整体下移,标题顶边与左列“对话”对齐。
  • 深色下会话与文档正文亮度降到约 85%,标题保持原亮度;行内代码缩到正文的 0.9 倍,底色减淡,底块上下收窄,相邻两行的底块不再连成一片。

0.33.1-beta

修复

  • 内屏资料页右列的次级页头统一为一行:去掉标题下方单独占一行的“‹ 上一页”,改为页头下方与文件夹列表相同的路径条,上级可点、可直接回到更早的层级;文件预览的标题改为单行居中,不再被顶高,与左列标题同高;路径条末级为本文件,大小与修改时间看“信息”卡。
  • 标题与路径一律单行:路径条层级再深也不换行,停在当前位置,较早的上级向左滑出并渐隐,可横向拖动查看完整路径(去掉“…”折叠);设置、编辑器、底部面板、Git 面板等页头标题超宽时同样单行横滑、被裁一侧渐隐,不再显示省略号或折成两行。
  • 存储空间文件夹的合集与进度从页头副标题移到搜索按钮前的小标签(如“2/4”),点按打开合集设置;进入子文件夹时页头不再显示位置名副标题。

0.33.0-beta

变更

  • 存储空间去掉文件夹顶部的合集条,改为逐项呈现:文档行尾显示图谱状态(已抽取为图谱图标,部分抽取、待确认、图谱失败为短语,索引问题优先);文档单独设置的合集归属在文件名后以标签显示;文件夹行写合集类型与“已抽取 n/m”;当前文件夹的合集与进度移到页头副标题,点按打开合集设置;“抽取图谱”“合集设置”在页头“更多”与文件夹行菜单里。
  • 多选文档新增“设置合集”,一次设置多篇的合集归属,任一篇失败时全部不变。
  • 只有图谱未完成(待确认、预算停止或抽取失败)的文档不再在资源管理器里显示为“解析失败”。
  • 资料页里的“资料库”位置改名为“存储空间”(英文 Storage),与一级页面“资料”区分;问资料范围、分享导入目标、收集卡与相关提示同步改名,位置 id 与已存数据不变。
  • 资料页文案统一:“视图”分组改为“浏览”,文档页“智能体视角”改为“详情”,“智能体怎么用它 / 智能体最近用到 / 智能体常用”改为“被引用 / 最近被引用 / 常被引用”;外部文件夹入口与面板统称“外部文件夹”;合集归属选项改为“跟随文件夹 / 独立合集 / 通用知识 / 其它合集”,权限面板“全部资料库”改为“全部合集”。删去面板与空状态里的解释性长句。
  • 面向智能体的技能 copy_knowledge_to_linux 与外部文件夹工具说明改用“资料 / 资料页 / 存储空间”的称呼。
  • 精简资料页以外各页面的中英文文案(约 590 条):标签、按钮和状态改为短名词、动词或短语;面板描述、行副标题和空状态里不影响操作的解释句删去或缩短;不可逆、隐私与安全相关的提示保留一句。界面统一使用“提供商”“智能体”,SSH 说明改称“主机 ID”。

0.32.1-beta

修复

  • 图谱合集条不再把索引失败的文档(如扫描版 PDF)计入篇数,避免进度永远到不了满格。
  • 文档“合集归属”的“加入已有作品”列表不再重复列出所在文件夹的合集,它已由“跟随文件夹”表示。

0.32.0-beta

新增

  • 资料库文件夹顶部新增图谱合集条:已有文档抽取过图谱的文件夹会显示合集名、类型、按篇序排列的已抽取进度,并可直接进入“合集设置”或“抽取图谱”。
  • 文档详情新增“合集归属”:单篇文档可以跟随文件夹、单独成为作品、归入通用知识,或加入已有作品;已抽取的图谱随之迁移,不重新调用模型。设置保存在现有合集设置表中,参与备份恢复与双库合并,数据库版本不变。
  • 支持旧版 Word .doc(可加入资料、分享导入并建立索引)。
  • 文本类资料支持 GBK / GB18030 与带 BOM 的 UTF-16,导入、预览和索引都能正确识别中文,文件按原字节保存,不转码。

修复

  • 移除资料库文件夹时的引用提示改为不区分单复数的措辞,只有 1 个会话引用时不再显示“这些引用”。
  • 扫描版 PDF(没有文字层)不再写入空索引,而是标为失败并提示“PDF 没有文字层(可能是扫描件)”;编码无法识别、DOC 加密或损坏同样给出说明文字,资料页与资源管理器详情不再显示内部错误码。
  • 图谱时间轴的持有关系改为按物品分槽:物品换了持有人会结束旧的持有区间,同一人可以同时持有多件物品。已有的反向持有边在重新抽取后按新规则纠正。

0.31.1-beta

修复

  • 资料库文件夹面板的挂载行改为显示来源位置(如“内部存储/Documents/…”)和来源类型,不再显示只对会话有意义的 /mnt/<别名> 与命令可见性。
  • 移除资料库文件夹时,确认框会说明有几个会话引用了它,这些引用会保留并继续可用。

0.31.0-beta

新增

  • 外部文件夹可以挂在资料库上:资料页“位置”末尾新增“外部文件夹”,打开“资料库文件夹”面板添加、移除或重新授权。资料库文件夹不随会话删除,作为位置出现在“位置”里;会话的外部文件夹面板新增“从资料库引用”,一点即挂到 /mnt/<别名>/,沿用已有系统授权不用重新选择。同一来源同时挂在资料库与会话时,“位置”只列资料库那一项。

修复

  • 合集设置、改绑图谱面板的说明文字不再在末行只剩一个字。
  • 知识图谱页“图谱”视角的范围按钮改用图谱图标(与会话设置“知识图谱”分区一致),不再固定显示地球。
  • “选择文档”面板选中项右侧打勾、标题最多两行,与“选择图谱”面板一致。
  • 资料库资源管理器里单个文件的菜单也提供“抽取图谱”;选择模式从 1 项加到多项时菜单不再跳变。

0.30.4-beta

修复

  • 合集设置的“实体合并”区:候选数、用量估算与“检查合并”按钮同处一行;每组候选的名字与“不合并 / 是同一个”放在同一行,不再上下分离留出大片空白。
  • 合集设置、改绑图谱面板里的多句说明改按阅读段落断行,不再被压成窄列。
  • 文档页“智能体视角”卡片:“重新抽取 / 抽取图谱”等动作移到知识图谱行右侧,实体标签紧跟其下,“所属合集”另起一行;纯文本正文改按阅读段落断行,不再在词中间折行。
  • 知识图谱实体详情的“状态变化”标题精简,每条变化前加时间点圆点(当前有效、已结束、倒叙各用一色),关系词用主色突出;时间轴与上方类型标签拉开间距。

0.30.3-beta

修复

  • 在合集设置里调整篇目顺序后回到知识图谱页,时间轴刻度、当前时间点的图谱与实体状态变化会自动按新顺序重读,不再需要手动刷新;篇目未变时不重读图谱。

0.30.2-beta

修复

  • 资源管理器列表的“排队中 / 索引中”徽标改用资料首页同款索引指示,随外观设置的生成状态指示样式切换,并按向量化、抽取图谱阶段显示进度。
  • 资源管理器列表有排队或索引中的资料时,每 2 秒静默重读当前目录,索引完成后徽标自动消失,不再停在“索引中”。

0.30.1-beta

修复

  • 外屏资料库搜索栏输入首个字母或删除最后一个字母时不再切换页面:点击搜索栏即进入问资料页并把焦点交给该页输入框,输入与清空都留在原页,键盘不再收起,拼音输入不再被打断上屏;清空后停留在问资料页,返回键离开。内屏两列布局维持边输入边在右列显示结果。

0.30.0-beta

新增

  • 知识图谱按作品分开:资料库每个顶层文件夹默认是一部独立作品,同名实体只在作品内合并,不同作品的“主角”不再混成一个;文件夹菜单新增“合集设置”,合集类型可改为“通用知识”(所有通用知识文件夹共用一张图谱)或“与上级文件夹合并”(一部作品拆成分卷子文件夹时使用),切换只重新归组已抽取的实体,不重新调用模型。
  • 会话设置新增“知识图谱”分区:一个会话绑定一张图谱,默认是本会话自己的图谱;可改绑到某部作品或通用知识图谱,并选择只读或读写。读写绑定到其它图谱时,本会话抽取的实体带会话来源并入该图谱,可用“撤回本会话添加”一次移除,文档抽取的内容不受影响。
  • 智能体“检索范围”改为三项权限:全局记忆(禁止 / 允许但新会话默认关闭 / 新会话默认开启,以及可达范围上限“本智能体的会话”或“全部会话”)、主动记忆默认模式与可用资料(全部资料库或指定合集,以及新会话是否预选合集)。会话按智能体允许的范围调整;智能体收紧后会话按上限执行,保存的选择不变,放宽后自动恢复。
  • 会话“检索范围”新增全局记忆开关与范围、资料合集勾选(受智能体限制的合集保留在列表中并写明原因)与主动记忆模式。主动记忆分“共享”和“隔离”两种:隔离会话写入的记录只属于本会话,也看不到共享池。
  • 回复的检索详情显示本轮使用的图谱名称与只读 / 读写,以及资料合集数。
  • 图谱页“全局”视角改为“图谱”:一次浏览一张图谱,默认打开实体最多的作品图谱,点范围行切换到其它作品或通用知识;搜索与展开只在当前图谱内进行。
  • 叙事时间线:抽取时记录每条关系在第几篇、哪个窗口与原文位置出现。状态类关系(同盟、所在地、阵营、生死等)同一槽位以后出现者为准,事件类关系逐篇累积,倒叙段落单独标注,不改变当时状态。篇目默认按文件名自然排序(识别“第十二章”“012”等编号),可在合集设置里调整,调整后只重算时间线,不调用模型。
  • 按篇目时间点取图谱:知识检索工具新增 as_of(从 1 开始的篇目序号),返回截至该篇末尾的图谱;状态类关系写明有效区间与此前状态,例如“第 6 篇起;此前:北原”。
  • 实体合并:抽取时模型声明的别名直接合并;名字相近、类型相同的实体在合集设置中列为候选,可逐组判定“是同一个 / 不合并”,或点“检查合并”由图谱模型一次判定,只在点击时调用。结果可撤销,你的判定优先于模型。合并记录单独保存,不改写原始实体与证据。
  • 资料页批量抽取:文件夹与多选文档新增“抽取图谱”,先估算窗口数、调用数与输出上限,再选择“只抽取未抽取的”或“全部重新抽取”;多选跨合集时各篇仍归入各自的合集。文档页图谱完成后可“重新抽取”,并显示所属合集与篇序,点击进入合集设置。
  • 图谱页时间轴:合集至少两篇时显示时间轴,拖到某一篇查看截至该篇的图谱;实体详情新增“状态变化”,列出各关系的有效篇目区间与倒叙段落。

变更

  • 对话片段默认只检索本会话:现有会话升级后统一改为“仅本会话”,需要跨会话检索时在会话设置中开启全局记忆并选择范围。
  • 取消“私密智能体”:所有会话默认互不可见。原私密智能体迁移为全局记忆“禁止”、主动记忆“隔离”;其它智能体迁移为全局记忆“允许但新会话默认关闭”,可达上限沿用原设置,可用资料为全部资料库。
  • “长期记忆”改称“主动记忆”(英文 Active memory),工具名不变;现有记录全部留在共享池,行为不变。
  • 资料范围改为“本会话工作区 + 显式选择的文档 + 选中的资料合集”,只能在智能体允许的合集内选择;绑定作品图谱时,该作品的文档自动加入资料范围。智能体只允许部分合集时,自动注入、知识检索工具、关键词与图谱检索都读不到其它合集。
  • 会话检索范围不再有单独的“知识图谱范围”档位,图谱读取范围由绑定的图谱决定;后台抽取状态移到“知识图谱”分区。
  • 数据库升级到 v36:新增关系出现记录、有效区间与实体合并记录,备份载荷 18 一并包含;已有关系的出现位置记为未知,不参与时间线,重新抽取后补齐。
  • 备份包含知识图谱与向量索引;从旧备份恢复时,未标注模型的历史向量在维度和嵌入设置一致时继续使用,不需要重新索引。

0.29.3-beta

变更

  • 资料页“会话工作区”没有使用私有工作区的会话时,不再只显示“这个文件夹是空的”,而是说明关联项目的会话文件在对应项目位置里。

修复

  • 在“会话工作区”列表里对会话文件夹点“复制到”会提示“文件夹访问授权已失效”:会话文件夹是整个会话目录,不支持整体复制或移动,菜单现在只保留“打开”和“详情”,长按也不再进入多选。
  • 从其它位置“复制到 / 移动到”时进不了会话文件夹:目标选择器里的“会话工作区”现在可以点,进入会话后面包屑为“会话工作区 › 会话名 › …”,可以选会话内的文件夹作为目标。
  • 固定到侧栏的会话文件夹只显示“/”、没有副标题:现在以会话名为标题、“会话工作区”为副标题,子文件夹显示“会话工作区 · 会话名”。
  • 会话改绑到项目后,原来固定的会话文件夹仍留在侧栏:固定文件夹的有效性与会话工作区列表用同一规则,改绑后自动移除。

0.29.2-beta

修复

  • 资料页“会话工作区”下的会话文件夹点了没反应:现在可以进入会话工作区继续浏览子目录、预览和搜索文件,面包屑显示“会话工作区 › 会话名 › …”,返回上一级回到会话列表,进入与返回都按层级横向滑动;已绑定项目或分支工作区的会话不再重复列在这里(它们的文件在对应项目位置里)。
  • 知识图谱抽取的输出被截断时,这次请求的输出按 0 计入预算,随后拆块重抽,累计输出可能超过“单文档输出”上限;现在截断请求按单次输出上限计入预算与用量统计。
  • 升级到 0.29.0 时,在 0.28.2 里手动改回 2048 的图谱单次输出上限又被改成 16384;现在保留这一选择(仍为旧默认值的其它预算项照常迁移)。
  • 资料页的文档、图谱、文件等次级页面仍显示主导航底栏:现在与对话会话、设置子页一样整页显示,进入时底栏向下滑出,返回资料首页时滑回;折叠屏内屏的资料两列布局不变。
  • 文档页“知识图谱”一行在抽取结束、提交索引的十几秒里回落为“抽取中 0 / N”:提交阶段现在显示全部窗口已完成。

0.29.1-beta

修复

  • 文档页“知识图谱”一行在抽取期间一直停在“抽取中 0 / 7”,直到完成才跳到结果:这一行原先只读打开页面时的快照;现在随抽取进度实时显示已完成的窗口数。

0.29.0-beta

变更

  • 知识图谱抽取改用大窗口并发:文档按段落切成约 16,000 字的窗口(不再重叠),默认 4 个窗口同时请求,每个窗口再追加一轮“补抽遗漏”;窗口长度会按所选图谱模型的上下文与输出上限自动收窄。长篇文本实测中,高频实体召回从整篇一次抽取的约 51% 提高到约 89%。抽取提示词不再限定实体与关系数量,并让模型列出实体别名,同一实体的不同称呼合并为一个节点。
  • 图谱抽取预算默认值上调:单文档调用上限 64 次、单文档输出 262,144 token、单次输出 16,384 token(可调到 65,536)、抽取时长 600 秒。仍为旧默认值(32 次、32,768、2,048 或 4,096、180 秒)的设置升级时一次性改为新默认,其它自定义值不变。设置 → 知识库 → 知识图谱 新增“抽取窗口”一组:窗口长度、并发窗口数、补抽轮数。用量确认框与部分完成进度改按窗口数说明。
  • 同一文档每次重新抽取单独计预算,重试或换内容不再沿用上一次已用掉的调用与输出额度;中断后自动恢复的抽取仍接着原预算。

修复

  • 资源管理器进入或返回文件夹时列表瞬间跳变:现在按层级横向滑入(进入从右、返回从左)并淡入淡出,退出中的列表保留旧内容,不被新文件夹的加载状态覆盖;搜索结果与文件夹列表之间交叉淡入。资料库、会话工作区、Linux 主目录与外部文件夹共用这一改动。
  • 备份漏存图谱“单次输出默认值已升级”标记:键名含 token 字样被凭据过滤规则拦下,恢复到新设备后会把用户主动选的 2048 再改一次;现在该标记随备份迁移。

0.28.2-beta

修复

  • 图谱单次输出上限停在旧默认值 2048:旧版保存任一知识图谱高级参数时会把当时的默认值一并写入,升级后新默认 4096 不生效,思考型模型(如 Gemini 3.8 Flash)的图谱 JSON 拆块后仍被截断。升级时把这一旧默认值一次性改为 4096;其它自定义值不变,之后在 设置 → 知识库 → 知识图谱 中改回 2048 也会照常保留。

0.28.1-beta

修复

  • 图谱模型输出达到单次上限时,同步请求把截断(finish_reason: length 及各协议的同类原因)当成提供商错误,抽取直接失败,拆块重抽从未触发;现在 OpenAI、OpenAI 兼容、Responses、Anthropic 与 Gemini/Vertex 的同步响应都把输出截断识别为截断,图谱抽取据此把分块对半拆开重抽。
  • 文档页“知识图谱”行与原“图谱实体”行重复显示“尚未抽取”:合并为一行,抽取完成后实体以标签列在该行下方。
  • 索引指示等待确认与失败时改用主题的警示琥珀色,此前显示为第二强调色。

0.28.0-beta

新增

  • 资料索引指示器:“待处理”行与文档页状态行显示一枚与会话生成指示器同风格的点阵灯,随 设置 中所选的生成指示器动画切换(横条、上下双排、点阵、机柜、无限线、无限灯),不另设选项。向量化点亮主色进度,抽取图谱换用图谱色;点阵风格抽图谱时,已抽取的格子逐列转色,“关系包”沿行跑向已抽取的格子。等待确认时琥珀色慢闪,失败时琥珀常亮,重试等待时暗灯匀速闪;系统关闭动画时显示静止画面。
  • 文档页“智能体视角”新增“知识图谱”行:显示尚未抽取、抽取中 n / m、实体与关系数、部分完成进度或等待确认,并可单独“抽取图谱”“确认抽取”“重试图谱”,不重新向量化。每次手动抽取先弹出用量预估(模型、分块数、约多少次调用、输出上限)。大文档超出预算需要确认时,“待处理”出现“确认抽取”入口,不再无处确认。

修复

  • 知识图谱抽取失败不再拖垮文档索引:模型输出被截断、JSON 解析失败时把分块对半拆开重抽(最多两层,先按段落、再按句末切分);单次输出上限默认提高到 4096 token(已保存的自定义值不变)。图谱仍失败时保留已写入的向量与原有图谱,任务记为“部分完成”并在“待处理”提示原因(解析失败、超时、提供商错误),可只重试图谱。

0.27.2-beta

修复

  • 从问资料或对话引用打开长文档时,高亮与滚动落在命中段落:Windows 换行(CRLF)或只含空白的空行也算段落分隔;没有空行的长文只高亮命中所在行,不再把整篇当成一段高亮并停在文首。

0.27.1-beta

新增

  • 资料索引后台保活:有文档在排队或索引时启动前台服务并在通知栏显示“正在索引资料”、当前文档、第 n / 共 m 份与分块进度,应用切到后台也尽量继续;队列清空后自动移除通知。
  • 资料页“待处理”中正在索引的文档显示所处阶段与进度:准备中、向量化 120 / 260、抽取知识图谱、正在保存索引;批次重试时显示“重试中”及原因。

修复

  • 大文档索引卡住并重复计费:向量化改为每请求约 8,000 字、最多 16 个分块,每批完成即写入应用私有检查点;失败只重试当前批次(尊重上游 Retry-After),重启或重试从第一个未完成批次继续,已成功的批次不再重复请求。向量响应默认使用 base64 编码,体积约为原来的四成,上游不支持时自动回退;文档向量请求的超时改为按“无数据”计时,总时长上限放宽,不再因响应仍在下载而被中途截断。

  • 搜索框聚焦时边框颜色改为渐变过渡,不再瞬间跳变。

  • 全站列表行高统一:同一列表中只要有项带第二行文字,单行项也按双行高度排版;涉及设置项、资料库导航、文件夹列表、Git 变更、文件改动、检索结果、工作区选择、后台任务与 Linux 软件包等列表。定时任务的“允许精确闹钟”授权移到列表标题旁(设置页沿用上方的“精确闹钟”项),任务行不再为授权按钮预留空白;SSH 主机行固定为地址一行(过长省略中段)加状态一行。

  • 问资料答案按纯文本显示:提示模型不用 Markdown,仍写了粗体、行内代码或标题标记时去掉标记只留文字;复制的文本同样处理。

  • 问资料答案中 [2, 3]、[2,3]、[2、3] 这类合并引用拆成可点的单个编号,不再原样显示。

0.27.0-beta

新增

  • 资料页“问资料”支持语义检索与带编号引用的答案:输入时只做本地关键词匹配,按回车(输入法搜索键)后对问题做一次向量检索,混合文档片段、长期记忆与图谱实体,再由快速模型基于命中写出“资料里的答案”,答案中的 [n] 可点按跳到对应结果。未设快速模型时只列检索结果;未设向量模型时退回关键词匹配;结果可按文档、记忆、实体筛选,范围为全部已索引文档或资料库。
  • 点按问资料结果或对话气泡“参考资料”里的文档,打开原文并高亮命中段落,顶部定位条可在多处命中间上下切换。
  • 引用记录:对话回答实际引用的文档片段与问资料答案写入引用表。文档页新增“被引用”卡(来自哪个会话或哪次问资料,可点开会话),资料页概览新增“智能体最近用到”,视图新增“智能体常用”(按被引用次数排列)。删除消息会一并删除其引用,撤销删除时放回;会话分支复制所含消息的引用;备份随会话与文件分层导出引用记录。

变更

  • Git 状态改由应用内共享缓存提供:会话顶栏、Git 页与资源管理器读同一份结果,同一仓库同时只运行一次检查;打开 Git 页先显示上次结果,再在后台刷新,页头注明“刷新中”或“状态 N 秒前”。缓存只存应用私有目录,不写仓库的 .git/index。
  • Git 检查端加速:文件状态按大小与修改时间复用上次哈希(共享存储忽略 ctime)、线性历史的领先/落后计数在相遇点停止、未跟踪文件改用目录扫描;调试版日志以 [InfinityGit] 记录各阶段耗时与文件数。
  • 会话顶栏与 Git 页只在前台观察状态;工具写入、每轮生成结束与手动刷新时失效缓存。

0.26.0-beta

变更

  • 外屏资料首页的四张统计卡兼作文件、长期记忆、知识图谱、对话片段入口(图标、页面名与数量;文档与图谱另注统计口径),不再另放一排入口卡;大字号时页面名按词换行、两列等高。内屏统计卡保持原样,点按选中左列对应项。
  • 资料页“问资料”改用全站统一的搜索框,高度、圆角与清空按钮和其它搜索一致。
  • 对话页资源管理器去掉“更多 → 导入文件”,导入统一走“+ → 从设备导入…”;导入会话工作区的文档照常自动建立索引。

修复

  • Agent 删除文件的审批卡标题改为“需要批准:删除文件”。
  • 关闭 Git 页或在资源管理器手动刷新后,Git 状态条重新读取分支与改动数。
  • 工作区处于游离 HEAD 时,资源管理器的 Git 状态条不再隐藏,显示“游离 HEAD <短提交号>”;资料页左列位置副标题与文件信息同步。
  • 打开资源管理器时不再为校验置顶文件夹而额外读取全部项目的 Git 状态,大仓库同时运行的 Git 检查从三个降为一个。

0.25.1-beta

修复

  • 对话页资源管理器打开绑定项目时,不再在读取 Git 状态的几秒内误显示“此位置暂不可用”:位置先不带 Git 信息出现,分支与改动数随后补上。
  • 对话页资源管理器整页打开时避开状态栏,返回键与标题不再压在状态栏下。

0.25.0-beta

变更

  • 移除回收站:资料页、资源管理器、对话资源面板、外部文件夹与知识库里的删除一律永久生效,确认框写明数量与“删除后无法恢复”;升级后首次启动会一次性清除旧版本留下的回收内容(全部成功才记为完成,失败下次启动重试)。
  • 对话页资源管理器改用与资料页相同的文件浏览组件:排序、列表/网格、多选、复制移动、ZIP、搜索与预览都一致,可在“位置 ▾”切换当前工作区与已挂载的外部文件夹;更多菜单提供“导入文件”与“外部文件夹”。旧的知识库首页与文件夹页已无入口,一并移除。
  • Agent 的 delete_file 在所有执行模式下都要经你批准,审批卡可选“10 分钟内同类免审批”,生效期间输入框旁的执行模式按钮带角标,展开可看剩余分钟并随时恢复逐次审批;技能目录内的删除仍归“技能目录变更”,终端命令里的删除沿用命令审批。
  • 应用图标与 README 图标换成发光点阵无穷:彩色前景取自用户提供的高分辨率透明母版,按五个密度生成位图,光晕比原先的矢量点阵更柔和;单色主题图标与通知图标不变。

修复

  • 打开会话工作区不再闪退(多个会话同时位于根路径时,列表键重复)。
  • 内屏展开后,资料页左列能高亮当前位置。
  • 资料页的“问资料”搜索框点击空白处或收起键盘后退出输入状态。
  • 资料页概览的统计卡与入口卡同一行等高。
  • 外屏资料页的位置列表与对话片段列表改用设置页同款分组列表行。
  • 资料页各行补上按压反馈;导航高亮、展开收起、统计数字、列表增删与正文加载都有过渡动画;外屏与内屏右栏的次级页面进出改用设置页同款的视差推入动画,并支持预测性返回手势。

0.24.2-beta

修复

  • 外屏资料页的文件浏览与回收站页头不再压在系统状态栏下。

0.24.1-beta

修复

  • 资料页“文件”位置列表不再等待各项目的 Git 状态读取完毕才显示:先列出全部位置,分支名随后补上,会话刷新时沿用上次读到的分支名不闪烁。

0.24.0-beta

新功能

  • 资料页改版:内屏两列(视图、位置、固定的文件夹、智能体记住的)加右列页面栈,可展开占满内屏;外屏为单页栈首页(问资料、四个入口、概览)。概览提供待处理文档的重试与重建、最近加入与收集卡;文档页提供阅读与“智能体视角”。
  • 统一资源管理器:资料库、会话工作区、项目与分支工作区、Linux 主目录与外部文件夹共用同一套浏览、搜索、多选、复制/移动到、ZIP 压缩解压、预览与分享;删除统一进回收站,回收站跨位置汇总,可恢复或彻底删除。
  • 长期记忆搬进资料页并标出近 7 天新记住的条目,设置里只保留总开关;对话片段按会话分组,可逐段删除或清除整个会话的片段。

修复

  • 资料库重命名、移动、复制、重建索引等操作失败时显示提示,不再静默;后台刷新失败只记日志并保持原状态,协程取消不再被吞掉。

变更

  • 设置目录里的“检索调试”只在开发者模式下显示。

0.23.1-beta

修复

  • 运行坞文字左缘与输入框正文对齐,前置的任务环或状态点与工具行“+”笔画对齐,不再贴近浮岛左边。
  • 运行坞点阵屏待批准时的“!”改用与盾牌相同的警示色,不再随主题第二灯色显示。

0.23.0-beta

修复

  • 输入框盾牌菜单的模式说明精简为一行短句(“逐条批准命令”“命令直接执行”),不再被菜单宽度截断;完整解释仍在“Agent 可达范围”面板。

变更

  • 全量门禁提速:lint 不再分析单测与设备测试源码;本机 Gradle 守护进程堆提到 8g(用户级配置,托管 runner 仍为 4g),门禁从约 11 分 35 秒降到约 9 分 42 秒,守护进程 GC 由约 300 秒降到 9 秒。
  • 运行坞“执行中”“等待中”标签前不再显示脉动圆点:浮岛光效、点阵屏与标签文字已表达生成状态。已暂停、计划完成与仅后台任务仍保留静态标记。
  • 运行坞改版:去掉右侧展开箭头,点按整行打开运行详情;后台任务圆环(中间显示数量)移到最左;右侧常驻点阵波形屏,宽度随剩余空间在 72~140dp 间伸缩,太窄时只留波形。点阵屏不再被状态胶囊盖住:等待审批时“!”慢闪,计划完成时闪绿后停在本轮波形并显示平均速率,暂停时停在本轮波形并调暗,只有后台任务时只留熄灭的底格。
  • 内屏与平板的浮岛也显示运行坞,点按打开检视器“运行”页;运行详情与锁定触摸仍在检视器。
  • 锁定触摸按钮移出运行坞:外屏放在顶栏 ⋮ 左侧,只在生成中可点,不生成时保留透明占位,标题宽度不随之跳动。
  • 待批准数改由输入框盾牌承载:盾牌填成警示色,与点阵屏的“!”同步慢闪,中间显示数量(两位数缩小字号,超过 99 显示 99)。有待批准时点按盾牌跳到最早的审批卡,长按(带触感)弹出审批模式菜单;没有待批准时点按或长按都打开菜单。运行坞不再显示待批准胶囊。
  • 点阵波形屏从“输入框流光”拆出,成为外观设置里独立的“运行坞点阵屏”开关(下设“显示数字”);删除“点阵屏位置”及浮岛顶沿、输入行右侧两种摆放,输入行不再绘制点阵屏。“输入框流光”新增“仅材质光”(不画流光与描边,只留浮岛材质的生成光),并成为默认值;原先选“点阵波形屏”的用户自动迁到“仅材质光”,点阵屏照常显示在运行坞。环境光材质的柔光中心改为运行坞点阵屏所在处。

0.22.1-beta

修复

  • 会话正文中,加粗或斜体的星号紧挨中文标点、另一侧紧跟汉字时(如 神仙。**至于、这叫**“画符”**),强调不再失效、星号也不再原样显示。预处理只在这类中日韩交界插入一个零宽空格,代码、链接、公式与网址内的星号以及英文强调保持原样;下划线强调仍按 CommonMark 规则不在词内生效。

0.22.0-beta

新增

  • 画板:在图片上圈注改动或涂抹要重绘的区域,也能在空白画布上手绘草图,作为 Agent 生图与改图的入参。入口有三个:图片查看器的“标注”、点输入框里的图片,以及附件菜单的“手绘草图”。画板提供画笔、箭头、直线、方框、文字和橡皮,支持撤销重做与双指缩放;标注与选区可在同一张图上切换,但一次只提交其中一种。草图有 1:1、2:3、3:2、9:16 四种画布比例。
  • 生图工具新增 markup 参数,可传标注图层(仅 GPT Image 2.5 支持,不能与 mask 同用)。画板产出的原图、图层和画法会随消息交给 Agent;模型不支持 markup 时,Agent 按说明去掉该参数,把修改要求写进提示词。已标注的输入框图片可以点开继续编辑。

0.21.3-beta

变更

  • 生图与改图请求固定使用最低审核档位(moderation=low,官方默认为 auto),过滤更宽松;Agent 无需也不能改动。DALL·E 模型不发送该参数;兼容网关不认识该字段时自动去掉重发一次。

0.21.2-beta

修复

  • 正文行内代码换行时,左右留白不再在上一行末或下一行首留下一小块空底色;代码本身跨行时仍逐行画底色,首尾两端保持圆角。

0.21.1-beta

变更

  • 生成中会话流不再随 Agent 高频执行上下跳动:运行中命令的实时输出默认收起,只在点开工具行后显示在展开区顶部,连同“转入后台”与停止;点开的工具行在命令结束后保持展开并换成结果。会话流中的子代理分组卡不再弹出实时输出,点开子代理详情页查看。
  • 流末尾的“等待模型响应 / 正在准备工具调用”与正文生成动画共用一行常驻状态位,阶段切换时只淡入淡出内容;浏览器、检索与记忆步骤上方的计时行以展开、收起动画出现和离开。
  • 亲眼看着一轮跑完时,过程步骤以收起动画折叠为摘要行,不再瞬间消失;翻看历史会话时仍直接显示收起后的摘要。

0.21.0-beta

变更

  • 会话页点击标题下的工作区直接打开“选择工作区”面板。面板顶部显示运行模式与权限两个标签,以及通往“可达范围”面板的小链接;生成进行中或有待审批时,说明条与“停止生成”移到选择器内,只有当前工作区一行可点,切换失败时面板保持打开并提示错误。“可达范围”面板不再带切换按钮。

修复

  • 资源管理器顶部的 Git 卡片在首次读取状态期间不再空缺后突然出现:确认工作区是 Git 仓库后先显示“正在读取状态…”占位,刷新时保留上一次摘要直到新数据到达。

0.20.1-beta

修复

  • 生图、查看媒体与下载媒体调用失败时,步骤摘要不再显示“生成了 1 张图片”等产出数量,只写动作名与失败数,例如“生成图片 · 1 个失败”。

0.20.0-beta

新增

  • 生成中发送的消息默认排队,在当前步骤结束后(整批工具结果落盘后或整轮结束后)逐条送达并在同一循环内继续;“插队”立即打断当前步骤并注入。插队消息未能认领时本次生成停止,消息留在队列,不会以原请求反复重发。

  • job_wait 支持按输出正则或文件出现提前返回,结果给出返回原因与匹配行;后台任务日志每行带相对时间前缀,job_status 与 job_wait 报告距最近一次输出的秒数。

  • 上下文预算按上游实际输入用量校准:提示前缀未变时以上一次请求服务端报告的输入量(含缓存读写)为基线,只估算新增部分;前缀变化或未报告时回退完整估算。

  • 上下文用量面板改为可折叠分区,按系统提示、工具定义、历史、检索资料等平铺叶子类别显示,构成条以下内容可滚动。

  • 工作区根目录的 AGENTS.md 与 CLAUDE.md 自动作为项目规则加载,合计上限 32 KB,超出时截断并注明。

  • Agent 可经 install_skill 安装或整包替换用户技能,每次由用户审批该快照后自动启用;HTML 卡片可引用工作区媒体地址。

  • 设置的技能包页按来源分组:内置组标注始终启用,用户组标题显示启用数量并支持全部开启或全部关闭。

  • 浏览器页增加标签栏与手机/桌面切换,页面数量达到上限时给出提示;会话浏览器补齐调试工具与多标签控制,browser_eval 纳入内置指南审批表。

  • Tailscale 设备面板改为持续 Ping,并以固定高度的延迟曲线显示,不再用文本列出结果。

  • 超出上下文窗口的文档不再白压缩或笼统报错:

    • 附加时预检:单份或合计放不下、模型未提供窗口时,文档瓦片标警示色,附件条下方给出“存入工作区 / 换模型”,此时发送键只闪提示不发出;只是加上较早对话才超出时仅提示,发送时照常先压缩历史。
    • 发送前先算当前轮底数,当前轮本身放不下时不摘要历史,直接说明原因与出路;服务端报告超限时自动压缩一次并重试一次,仍超限才显示失败,不会循环压缩。
    • “存入工作区”把文档保存到会话工作区,消息里显示工作区路径,模型只收到路径说明并按需用 read_file 分段读取。
  • 用户发送的图片与文档自动保存到会话工作区:当前轮仍直接发送原图与全文,较早轮次改为路径引用,Agent 需要时可用 view_media / read_file 重新查看;历史摘要保留附件路径。

  • 前台运行的命令可点“转入后台”继续在后台运行;等待后台任务时可点“立即检查”让等待马上返回当前状态。等待行去掉与会话底部重复的动画。

  • 工具调用后模型连续两次返回空回复时,失败气泡内给出“重试 / 换模型”。

  • 内置生图工具 generate_image 对齐当前 Images API:

    • 尺寸支持 auto、三个标准值及 gpt-image-2 系列的任意 宽x高(16 的倍数,宽高比 1:3–3:1,最大 3840×2160)。
    • 新增质量 low–max、透明背景、输出格式与压缩、n(每次最多 4 张)参数,移除 DALL·E 时代的 style 与 standard/hd。
    • 传入工作区图片路径 images(1–16 张,可带 PNG 蒙版 mask)时走编辑接口,按参考图修改;路径越界、非图片与超限文件在本地拒绝。
    • 保存时按实际格式选择 MIME;结果文本精简为路径、尺寸与大小。
  • 工具与命令调用卡片统一为同一组件:标题行显示图标、工具名与右侧状态和耗时,下方是面向用户的摘要标签,参数默认收起,底栏放“完整结果”与情境操作。

    • 生图卡显示张数、尺寸、质量、格式与大小,编辑模式另列参考图缩略图;图片按原始比例显示,竖图限高居中。
    • 查看媒体卡只显示提问与所看媒体,给模型的原文收进“完整结果”。
    • 子 Agent 行、已回答的提问、已处理的密钥输出与画布文件卡同步采用相同底色、圆角与描边。
  • 对话气泡中的图片与视频排版改由 Agent 选择:

    • 默认不变:![说明](工作区路径) 在文中原位置单列显示,保持图文对应。
    • ```gallery 块排成矩阵:2 项并排,3 项左侧大图右侧上下两张,4 项 2×2,5 项及以上在第 4 格叠加“+N”;点任一格打开全屏查看器并定位到该项。
    • ```carousel 块显示为内嵌查看器:固定 4:3 画框,可左右滑动或点两侧按钮切换,右下角显示页码,画框下方显示当前项说明;点图片进入全屏查看器。
    • 视频在矩阵与查看器中显示首帧并叠加播放图标,点击走原有全屏播放;音频与其它文件在块下方按原卡片显示。块内只有一个媒体时按默认单项渲染,生成中按已写出的行逐步出现,不显示代码原文。
    • 全屏图片查看器支持在同组图片间切换,左上角显示页码。系统提示的 Media 段同步说明两种块的用法。

修复

  • 媒体矩阵第 4 格叠加“+N”时不再同时显示视频播放图标。
  • 会话未开放 view_media 或 read_file 时,系统提示不再要求模型用对应工具重新查看历史附件。

0.19.0-beta

新增

  • 内置 Tailscale 显示每台在线设备的连接路径:
    • 设备行的标签分为“直连 · 局域网/公网”“设备中继”“中转 · DERP 区域”和“尚未建立连接”,测过 Ping 的设备附带最近一次延迟。
    • 点在线设备会弹出设备面板,可以按需 Ping:每 0.4 秒探测一次,连续两次直连、累计 10 次或连续 3 次无响应时停止,也可以手动停止;逐次结果列出路径与延迟。面板里还能复制 tailnet 地址;从远程页进入时,也可以把设备添加为 SSH 主机。
    • Agent 的 tailnet_status 工具为每台设备补充 connection_path、path、direct_lan、relay_region 与 relay_region_name,可用来判断慢是不是走了中转。
    • 界面、日志与工具结果都不输出对端的真实 endpoint 地址和端口,只给出局域网或公网分类。

改进

  • 命令运行卡统一成单框:普通命令和后台任务的输出都在卡内滚动(最高 200dp,打开时停在末尾);状态在左上,耗时在左下(后台任务显示“已运行 · 最长等待”),退出码在右下,非零为红色;“完整输出”收进卡片右上角,工具标题行不再重复显示耗时。
  • 全站按压反馈统一:
    • 分组列表中的行按压改为满宽直角,首尾圆角由分组裁出;长按弹菜单时行底色与按压反馈同形,不再从圆角跳成直角。
    • Material 组件的涟漪统一取内容色,按下浓度约 0.12,与自定义反馈一致。
    • 点击区域超出圆角、角标被裁、无容器入口叠出整块高亮、单选行叠两层反馈等问题已修正;加减步进按钮补上按压反馈。
  • “选择工作区”面板从标题、空白区或列表行下滑都能关闭,下滑不会误选;其它带列表或输入框的面板可从拖动条和标题区下滑关闭。
  • 检视器的资源、远程、产物、运行详情与审批提示页,顶部留白与左右一致为 16dp。

修复

  • 内置 Git 读取带多包索引、且包大小在 2~4 GiB 之间的仓库时,不再报 Large offset found but no LOFF chunk,状态、提交记录与分支可以正常读出;Git 失败卡片显示具体原因。
  • 工具轮次之后模型以空正文结束时,同一条回复会附一次提醒再请求一次(最多一次),对话不再无声结束。

文档

  • 中英文 README 按新的价值排序重写:开头改为一句定位(BYOK 原生 Android 客户端 · 真 Linux · Git 与 SSH · Tailscale 私网 · 折叠屏优化),正文依次是口袋里的完整工作台、真 Linux(侧载版)、Git 与 SSH、Tailscale 私网与内网模型网关、Agent 工作方式、知识与成果、掌控与隐私;审批两档沿用界面名称“命令需批准 / 免批准”,截图复用现有静帧。

0.18.0-beta

改进

  • 设置页顶部的个人区不再放在列表卡片里:
    • 还没设头像时,整块显示引导页同款的莫比乌斯灯珠动画。
    • 设了头像后显示居中的 96dp 头像和名字,长名字最多两行;画面上不再有角标、铅笔或切换按钮。两种形态同高,切换时下面的设置列表不跳动。
    • 点品牌动画或头像都会弹出“个人资料”面板:设了头像时可以在头像和品牌动画之间切换,另外可以设置或更换头像、编辑名称。显示选择保存在本机并随备份迁移;刚换的头像会直接显示出来。
  • 备份内容里各层的预计大小和“始终包含”改为各占一行;引导页恢复列表中远端备份的时间和大小按段换行,窄屏或大字号下不会从中间断开。

修复

  • 长按首页的会话或智能体、在菜单里点删除等选项时,菜单退场前不再闪到列表右侧:关闭时沿用打开时的按住点,退场动画在原位播完。

0.17.1-beta

修复

  • web_fetch 读取纯文本、JSON、Markdown 等非 HTML 内容时按原有换行逐行返回,不再当作网页断句。网页正文过短需要按句断行时,英文句号、问号等只在后跟空白时才断开,小数、版本号与网址保持完整,短句也不再被丢弃。此前 0.17.0-beta 这类文本会被拆成 0. 与 0-beta,中间部分丢失。

0.17.0-beta

新功能

  • 备份可以按层选择:核心层始终包含(设置与提供商配置、智能体及提示词历史、长期记忆、参数方案、MCP 服务器、自定义工具、工作区登记、被引用的头像、用户级技能);资料(知识库文档与标签)和会话(会话、消息、附件、产物、上下文摘要、任务节点)默认选中;工作区文件(会话专用空间里的文件)默认不选,文件夹工作区建议用 Git 同步;密钥(提供商 API Key 等)默认不选,选中时必须加密。备份页显示每层与合计的估算大小;导出完成列出每层大小和没有备份的项目及原因。
  • 恢复只替换备份包里有的层,包里没有的部分保留本机现有数据。恢复完成弹窗列出替换的层和需要处理的事项,例如会话的工作区文件不在包里、显示为不可用;原先单独弹出的“技能 Git 历史未恢复,需要重新 clone”提示合并到这里。
  • 首次引导可以直接从备份恢复:第一个配置步骤提供“从备份恢复”,可选本机 .iwb 文件或 WebDAV 上的备份,确认前显示备份时间、包含的层、是否加密和来源版本,加密包才要求密码。恢复提交后直接进入应用,引导记为完成并保留引导中选的语言;恢复失败时回到引导页,数据保持原样。备份不含密钥时,恢复结果弹窗提供“去填写”,跳转到提供商管理。
  • 头像编辑器重做:圆内清晰、圆外压暗,拖动时在圆内显示三分网格;支持拖动、双指缩放和双击切换,图片始终铺满圆形,最大放大 5 倍;实时预览资料页、列表、对话三种尺寸;提供缩放条、旋转 90°、水平镜像、重置和换一张。输出仍为 512×512 方图,智能体与用户头像共用。

变更

  • 备份的导出、上传、下载与导入全程流式写入应用私有缓存,不再把整个备份包放进内存,取消 16 MiB 整包上限。新的上限为未压缩内容合计 512 MiB、单项 128 MiB、内容条目与技能目录合计 10,000 项;导出前按估算检查剩余存储空间。技能的 .git 在剩余容量内随包,放不下时仍跳过并记录仓库地址、分支与提交号。
  • 加密备份按 1 MiB 分块加密,每块认证块序号与末块标记,被截断、重排、拼接或追加的备份包会被拒绝;密钥仍由备份密码经 PBKDF2-HMAC-SHA256(600,000 次)派生。待恢复的备份包按 1 MiB 分块以 Android Keystore 密钥加密暂存。WebDAV 上传先流式写入临时文件再移动到正式名称,下载流式进行并校验长度与 ETag。格式 1、2 及不含分层清单的格式 3 旧备份包仍可导入,仍受 16 MiB 限制。
  • 网络访问不再设白名单:web_fetch、media_fetch 与隔离脚本联网可以直接访问公网、局域网与本机(回环)地址;tailnet 地址仍固定经内置 Tailscale,未连接时直接失败、不回退直连;0.0.0.0、:: 与组播地址仍被拒绝;重定向仍逐跳重新判定,可以跳转到 http,URL 带用户信息时拒绝。设置 → 工具 → 网络访问只展示各工具的联网路径与 tailnet 状态。
  • 应用允许明文 HTTP:提供商、WebDAV、MCP 服务器与 Linux 自定义镜像都可以填写 http 地址,本机 HTTP MCP 无需再单独打开开关。地址离开本机且不经 tailnet 时,提供商、首次引导、MCP、WebDAV 与 Linux 自定义镜像的地址输入框显示“未加密”提示。
  • 内置 Tailscale 取消设备白名单,tailnet 内能访问哪些设备由 tailnet ACL 决定。旧版本的局域网白名单、本机 HTTP MCP 开关与 Tailscale 设备白名单在升级时清除,旧备份包中的这三项设置在恢复时忽略。
  • 头像裁剪不再使用第三方裁剪库 uCrop,改为应用内的 Compose 编辑器。
  • 技能包上限放宽到 1000 个文件、单文件 8 MiB、单个技能 32 MiB;扫描与 ZIP 导入改为流式处理。
  • 移动工作流能力测试方案改为四类真实工作流的通过性测试:先还原资料仓库技能并检查适配性,再依次执行平面设计(Codex CLI 生图与 SVG 制作稿)、ComfyUI 调用(Qwen Image 2.1 与 H3)、文档处理(PDF、PPT、Word、Excel)与视频剪辑(HyperFrames);原分层基础能力条目、端到端任务与故障变体不再作为测试批次。

修复

  • 头像文件不存在或不在头像目录中时,备份清除该引用并在导出结果中列为跳过项,不再让整份备份失败。
  • 备份漏掉会话专用空间里的文件(知识库文档、会话工作区文件),导出时把它们列为“文件已缺失”跳过;现在会话专用空间纳入备份,导出与启动恢复使用同一份目录清单。
  • 含知识库文档的备份在恢复校验时报“Agent 外键无效”,恢复完成后又误报“1 个会话的智能体不可用”:知识库系统会话归属的内置智能体不在智能体表中,现在校验与恢复结果都不再把它当作普通智能体。
  • 备份恢复支持身份保存在扩展属性中的会话工作区根;旧根中的应用内部目录和身份文件按实际清点纳入校验与清理,未登记、缺失或类型异常的用户内容仍会阻止恢复。

0.16.1-beta

修复

  • 智能体编辑页的“历史版本”页面标题在深色主题下是黑字、看不见,现在正常显示。
  • agents_read 读取单个智能体时,用 agentId 指定目标也能读到该智能体;此前只认 id,给了 agentId 会静默返回当前会话的智能体。工具说明同时写明各目标用哪个参数。
  • agents_write 的 fields 里出现不支持的键(例如误放进去的 reason)时,提示改为“不是可写字段”并列出可写字段;此前一律说“只能由用户在界面修改”,会误导智能体。

0.16.0-beta

新功能

  • 智能体可以查看和调整智能体与会话的配置。agents_read 读取智能体列表、单个智能体的配置与提示词,以及会话列表与会话配置(不含消息),不需要批准。agents_write 新建或修改智能体、新建或修改会话;每次都需批准,审批菜单只有“仅批准这一次”,不提供 10 分钟同类免审批。审批卡写明申请原因,列出有变化的字段(旧值 → 新值,模型显示服务商与名称),提示词以差异显示,并说明影响范围:修改智能体时写明影响的会话数,修改从各会话下一轮生效。权限档、运行模式、工作区绑定、头像与删除不开放,工具直接拒绝并指向界面入口;新建会话不会自动开始对话。只有主会话提供这两个工具,子代理与分支会话不提供。
  • 智能体提示词有了历史版本:编辑页提示词下方的“历史版本”列出最近 20 版,标明时间、来源(我 / 智能体 / 恢复)与字数,可对比当前内容并恢复;智能体修改、编辑页保存提示词与恢复操作都会记一版,首次修改前的内容作为基线保留。

变更

  • 本机全量门禁的单次 Gradle 调用加入 :app:testPlayDebugUnitTest,Play 渠道专属源集与渠道构建开关分支的单测不再只靠手动运行。
  • JVM 单测统一关闭 Robolectric 的 Conscrypt 安全提供者(robolectric.conscryptMode=OFF),Linux 与 Apple Silicon 主机使用相同的 JDK TLS 实现;AgentHttpRoutingTest 的测试客户端固定 SunJSSE,测试代理不再有 5 秒等待连接上限。

修复

  • 停止 SSH 本地端口转发后,监听端口在返回前即已释放:在 Linux 内核(含 Android)上,此前立即在同一端口重新开启转发可能短暂报端口已被占用。
  • 备份导出与 WebDAV 上传不再因技能目录而失败。Agent 或文件面板经 /skills 写入、删除或移动过技能文件后,技能目录里会留下应用内部目录 .infinity(改名前为 .nexara),此前备份把它当作不安全路径,每次都失败。现在备份跳过所有应用内部名称,备份包格式不变,旧版本应用仍可导入。
  • 备份失败时说明原因:超过 16 MiB 上限、会话文件被删除或在应用外被修改、技能目录含无法备份的内容(特殊文件、含冒号或反斜杠的文件名,或超过 64 MiB),三种情况各有提示;其它失败仍显示通用提示。每次失败都会在诊断日志中记下 backup_operation_failed 事件,内容只有阶段、异常类型、分类与备份层的固定说明。
  • 导出或上传时内存耗尽等严重错误只让本次备份失败,不再让应用崩溃;写入所选备份文件改在后台线程进行。
  • 系统语言为英文时,提供商的协议类型、预设名(通义千问、智谱、豆包、百川)和未命名提供商的名称不再显示中文;中文界面的“Custom”“Local”预设也改为显示“自定义”“本地推理”。这些名称现在随系统语言切换,覆盖提供商列表、提供商编辑页、模型页标题、模型选择器和首次引导。旧版本保存的协议标识与默认名称照常识别,无需重新配置。
  • 英文或大字号下,提供商编辑页底部的“测试连接”与“保存提供商”不再折成两行:并排放不下时上下排列,保存在上。

改进

  • 智能体编辑页改为只保存改过的字段。智能体在你编辑时修改了配置,没改到的字段会在页面上静默刷新并短暂高亮;同一字段两边都改时显示提示条,可选择“采用新内容”或“保留我的”,不会互相覆盖。提示词编辑器打开期间智能体改了提示词,编辑器内提示条可查看差异,放弃的一份存为历史版本。
  • 智能体的“用户规则”字段停用,只保留数据列,不再参与读写。

0.15.0-beta

新功能

  • 内置 Linux 的可选附加包新增 ripgrep(rg)、Node.js(含 npm)与 FFmpeg,与 git、Python 3 一样在首次引导和 Linux 安装页默认勾选,已安装的环境可在 Linux 管理页补装。全选约需 470 MB,其中 FFmpeg 连同编解码依赖约 160 MB,可取消。智能体的运行环境说明同步列出这些可选包,并提示使用前先确认已安装。

修复

  • 展开命令类工具块(shell_exec、ssh_exec 等)时,结果改为在等宽卡片里只显示命令输出,退出码非零时另起一行标出;不再把整段 JSON 结果作为正文铺在卡片外。
  • 会话类工具的审批卡风险标签由“任务计划”改为“会话操作”:同一类别还包括读取其它会话、画布、产物与子代理控制,原标签只对任务计划成立。

0.14.2-beta

修复

  • 分享导入面板:文件已全部导入但有文件索引失败时,“重试失败项”重新与“完成”并列显示。0.14.0-beta 起这种情况只剩“完成”,状态写着“可重试”却没有重试入口。

0.14.1-beta

修复

  • 技能包页与会话面板的技能列表把内置技能 infinity-workbench 单独列为“内置技能”一组,不再与用户技能混在“技能包”分组里、同一行重复显示两次“内置”;用户技能组的说明只描述 /skills。
  • 智能体在 Linux 会话中写入用户技能目录(/mnt/skills,内置模式为 /skills)后,回复下方不再误报“工作区另有 1 个新文件未收录为产物”。
  • 执行档位菜单里的“恢复逐次审批”补上图标,与上方的档位和限时免审批状态行左对齐。

0.14.0-beta

新功能

  • 智能体了解自己所在的应用:系统提示新增一段固定的运行环境说明,交代当前模式与权限档、工作区位置、Linux 是否可用、技能目录,以及“长期记忆”与“智能体/会话提示词”的区别。另内置只读技能 infinity-workbench,需要时按需读取完整指南,例如创建技能的目录结构、修改规则应改哪里。设置的技能列表把它显示为“内置”,没有开关、编辑或删除。
  • 审批卡的批准按钮改为分体按钮:主体批准当前调用,右侧箭头打开菜单,含“全部批准(N 项)”与“批准,10 分钟内同类免审批”。
    • 限时免审批按会话、按类别生效:技能目录修改(工作区与完全访问两档都适用),以及工作区档下的命令与 Linux 系统目录修改。
    • 只保存在内存中,到期、删除会话或重启应用后恢复逐次审批;子代理与脚本内的文件操作不受影响。
    • 生效期间执行档位按钮显示圆点,菜单中可查看各类别剩余分钟数并“恢复逐次审批”。
    • 定时任务、知识库访问授权、启动问题修复、SSH 主机配置与跨会话读取不提供此选项,仍逐次审批。

变更

  • 修改用户技能不再需要用户另外书面同意,每次文件操作在审批卡上确认即可。
  • 卡片、面板和页面里只有文字、没有底色的操作按钮,统一改成与审批卡一致的胶囊按钮,涉及会话气泡、文件面板、知识库、分享导入、首次引导、设置、Linux 和 SSH 等界面。
    • 主操作为主色实心,次要操作为中性色块,危险操作用错误色。
    • 同一操作区的按钮并排排列,不再上下各占一整行。
    • 低频或危险的操作收进“⋯”菜单,例如保密输出卡的另存与销毁、分享导入的稍后处理与取消导入、内网失败气泡的换用公网模型与 Tailscale 设置。
    • SSH 私钥的导入、粘贴、生成合并为一个分体按钮。
  • 按钮文字始终单行;同组按钮在窄屏或大字号下放不下时,整组改为竖排,主操作在最上,不再把文字折成两排。为此缩短了三处文案:
    • “移入 Git 凭据”
    • “导入私钥文件”
    • “浏览器登录 GitHub”
  • 列表行和状态条行尾的操作,有通用图标的改为图标按钮(关闭、停止、恢复、撤销、重试、在外部打开),其余改为紧凑胶囊;所有触控区不小于 48dp。
  • 错误和空状态的“重试”统一为带刷新图标的胶囊。
  • 展开/收起统一为“文字 + 箭头”的折叠行,整行可点。
  • Material 对话框底部的确认/取消,以及 Snackbar、正文链接等平台惯例保持不变;分享导入取消确认框中“删除暂存副本”改用错误色。

开发流程

  • 发行前在本机完成全量门禁与签名包真机验收;发行流水线保留 API 31 核心设备回归、API 36 R8 黑盒及侧载 API 31/36、Play API 36 签名产物冷安装,两个渠道 Release 并行于设备作业构建。API 35/36 完整设备回归提供独立手动工作流。

0.13.3-beta

0.13.0-beta 至 0.13.2-beta 未发布 GitHub Release,各自的变更见 CHANGELOG.md 对应小节。

修复

  • 提供商管理不再有“内置提供商”:全新安装时列表为空,用户添加的第一个提供商也可以像其它提供商一样删除,删除时一并清理它的密钥、模型和引用这些模型的预设。此前它被标为“内置提供商不可删除”。
  • 英文界面下,资料库里的“会话工作区”目录、无标题会话文件夹、复制文件的“副本”后缀和导入失败的兜底说明仍显示中文;现在按当前语言显示,运行中切换语言后立即生效。没有扩展名的文件复制后不再多出结尾的点。
  • 共享存储上移动文件时,如果源文件已删除、目标已完整校验,Android 12(API 31)仍会误报“移动补偿未完成”。原因是该系统版本无法读取已删除文件的句柄状态;现在在源路径缺失且目标完整时确认移动成功,源路径出现别的文件时仍保留目标副本并报冲突。
  • 命令步骤标题、实验室版本标签和用量缓存说明的多段元数据在窄屏或大字号下按段整体换行,不再在一段中间断开。

发行

  • 发行流水线恢复可用:Linux 截图覆盖基线按当前界面重新审阅,静态检查中的文本换行门禁通过。

0.13.2-beta

未发布:发行流水线未通过,内容已并入 0.13.3-beta。

0.13.1-beta

修复

  • 0.13.0-beta 的 Linux git safe.directory 注入在配置了 Git 凭据的会话中不生效,共享存储上的工作区或挂载仍报 dubious ownership。原因是凭据配置在启动后被再次合并,覆盖了配置条目总数;现在启动时计算的配置原样保留,凭据与目录信任同时生效。

0.13.0-beta

新功能

  • 提高输入缓存命中:主模型请求改为“按名称排序的工具定义 → 只由配置决定的系统提示 → 原样历史 → 当前用户消息”的固定结构。当前时间、检索资料、长期记忆、知识图谱、任务计划、状态板与点名技能不再写进系统提示,而是作为本轮上下文块随该用户消息保存并逐字重放,同一轮的工具续轮与自动重试复用同一份;收尾指令与工具进度提醒也改为追加在尾部。服务商的自动前缀缓存因此可以复用整段历史。代价是历史轮的上下文块继续占用上下文窗口。技能目录改为不随本条消息变化的完整固定排序目录;计划工具结果返回完整步骤。
  • “挂载外部文件夹”可视化选择路径:存储路径(侧载渠道)点“选择文件夹”在应用内逐级浏览手机存储,复用主工作区选择器的面包屑与新建文件夹,有多个存储卷时经“位置”切换;仍可展开“手动输入路径”。文件夹授权(两个渠道)改为先在系统选择器中选定、表单显示目录名与位置后再点“挂载文件夹”,授权在挂载时才持久保存。别名仍为自动生成的 external 时改用选定目录名。文件夹授权挂载仍只对文件工具可见,命令不可访问。

升级说明

  • 数据库升级到版本 32(消息新增本轮上下文块与尾部指令两个可空列),备份结构升级到版本 13;旧备份可直接恢复,旧消息不补生成上下文块。

修复

  • 用量页“用量分类”中的子代理用量误标为“聊天”,现单独显示为“子代理”。
  • Linux 模式下,工作区或挂载目录位于手机共享存储时,git 因属主不一致报 dubious ownership 而拒绝操作。现在每次启动 Linux 命令或终端时,应用把本次绑定的 /workspace 与各个 /mnt/<别名>(含其下子目录)作为 safe.directory 注入,无需手动配置,重置 Linux 后依然有效,也不改动用户的 ~/.gitconfig。
  • 从会话资源管理器等页面打开的上滑面板与居中对话框里,系统返回会直接关闭整个面板(如外部文件夹的添加表单、回收区);现先返回面板内的上一页。

0.12.0-beta

新功能

  • 输入缓存命中率统计:单轮生成统计卡片显示缓存命中率与读取 / 写入 / 未缓存分段条,部分轮次未报告时注明已报告轮数;设置的用量页新增“输入缓存”卡片(命中率、报告覆盖率、未报告请求数),按模型列出命中率,7 日趋势叠加缓存读取面积与每日命中率。命中率 = 缓存读取 ÷ 已报告请求的主模型输入,服务商未报告的请求不当作 0 计入。
  • 补齐服务商缓存用量解析:OpenAI Responses 缓存写入与 12 小时档、Anthropic 1 小时写入、阿里云百炼缓存创建、Kimi 缓存读写;子 Agent 按请求记录缓存用量。
  • 预估费用按缓存读 / 写单价计算(价格表补充 26 个有官方依据的缓存价);缺缓存价的模型按普通输入价计并标注“未计缓存折扣”。
  • 主模型请求发出前在日志中记录脱敏的前缀指纹诊断(只含短哈希与条数),用于定位缓存前缀被破坏的原因。

文档

  • 中英文 README 顶部加入 88 秒宣传片(GitHub 内嵌播放),截图全部换成视觉实验室的中英文界面静帧;运维截图不再露出本机路径。

修复

  • SSH 终端清空缓冲(断开后重连)时把光标移回左上角,新连接的输出不再从旧提示符的位置接着写。
  • 视觉实验室:已打开某个版本时再用深链以录制模式打开另一版本,录制模式现在会生效(隐藏系统栏与控制条),不再沿用上一个版本的非录制状态。

0.11.1-beta

改进

  • 视觉实验室补足拍摄所需版本:内屏的会话版本套上真实首页三列外框(导航栏、会话列表、会话),派发后分支会话出现在主会话之下,左上角按钮可切到图标条展开模式;新增 502 排障的“三项待批准”与“修复报告”两个静态版本、Git 提交记录版本,以及在 web-01 上复核服务与接口的 SSH 终端版本。窗口不够宽(外屏)时只显示会话本身,Git 页铺满整屏。

修复

  • 通用页面顶栏只让出顶部与左右系统栏,不再把底部导航条的高度垫在顶栏下方;SSH 终端等页面标题与正文之间多出的约 14dp 空白消失。

0.11.0-beta

新功能

  • 开发者模式:在设置首页连点版本号 5 次开启,设置中出现“开发者”页,可随时关闭。
  • 视觉实验室(开发者页内):用内存中的脚本数据驱动真实界面组件,按“对话 / 终端”目录打开状态与工作流版本,覆盖会话页、检视器与终端;工作流可播放、暂停、重播与变速,录制模式隐藏控制条,也可用深链直接打开指定版本。实验室不读写会话、密钥与工作区,不请求模型,也不执行命令。

改进

  • Git 面板页头压成两行:首行仓库名与刷新按钮对齐,次行以分支标签开头,后接上游、HEAD 与抓取时间;只有上游在本地不存在时才单独以错误色提示。

修复

  • 分支方案卡出现时自动滚到输入栏上方,“不需要 / 在此执行 / 派发到分支”三个按钮不再被输入栏遮住。

文档

  • README 中英文版围绕四项核心能力重写:口袋里的真 Linux、桌面级 Agent 开发环境(子代理、后台任务、分支会话与 worktree、Git 面板)、SSH 运维与折叠屏内外屏适配;截图按中英文界面分别重拍,中文版版本号同步到 0.10.0-beta。

0.10.0-beta

改进

  • 计划工具调用展开后显示计划清单并标出刚完成与当前步骤;后台任务查看卡显示状态、时长与日志末尾,可打开完整日志或停止任务;其它工具的 JSON 参数与结果按字段列出,不再直接展示原始 JSON。
  • 侧栏运行卡压缩为两行,计划步数与清单“当前”标记同源;底部页签按宽度适配,放不下时收入“更多”菜单,不再截断。
  • 目录工作区文件面板卡片同宽并加分组标题与行分隔,隐藏系统回收区的 .trashed-*、.pending-* 文件并提示数量;任务日志对话框显示运行状态与更新时间,运行中自动刷新,读取失败可重试。
  • 生成中不能切换工作区时,可达范围面板以说明条给出原因并提供停止生成。
  • 会话流里正在进行的那一步自带生成动画与计时:思考、等待模型、准备工具调用、运行命令和等待后台任务各自显示在对应步骤上,批准与提问卡片显示已等待时长;等待模型超过 30 秒时提示可能原因并可停止生成。助手消息按思考、正文、工具调用的顺序排列。

修复

  • Linux 命令与后台任务查询不再同步扫描会话私有工作区;索引对账按会话在后台合并执行,完成状态与通知及时返回,隔离副本仍先合入并保留冲突结果。成功对账的身份基线持久保存,文件工具事务同步刷新受影响路径;基线有效且文件系统身份唯一时,Linux 命令内改名、移动目录及改名后修改内容保留 UUID、版本快照和派生数据关联。

0.9.3-beta

修复

  • 文件工具跨私有工作区、共享挂载与 Linux rootfs 移动采用固定缓冲流式复制和独立 SHA-256 校验,移除移动的 32 MiB、1000 条目与挂载回收区容量限制;预查目标空间,失败时从可信目标补回来源,取消时完成补偿。
  • 文件工具在同一挂载内优先调用存储后端原生移动,真实路径同卷重命名保持 inode,不经过回收区与内存快照;Linux 与普通模式均支持大文件和大型目录,来源版本采用流式 SHA-256 校验,后端不支持时保留复制校验回退。

0.9.2-beta

修复

  • 共享存储移动遇到句柄式 EXDEV 时,核对路径与目录身份后重试原生重命名,保持同卷文件身份;真实跨卷使用流式复制与摘要校验,移除移动的 32 MiB 和 1000 条目限制,预查可用空间并从可信目标补偿恢复来源。
  • 生成中的前台通知不再随每个 token 刷新:阶段、任务、排队与子代理数量变化立即更新,进度计数至多每秒更新一次并保证补发最后状态,避免超过系统通知限速而被丢弃。

0.9.1-beta

修复

  • 修复共享存储开启 FUSE passthrough 时文件工具因读取刷新时间戳而误报冲突:以独立摘要复核保持并发修改检测;跨卷复制移动失败时按创建身份回滚目标或确认移动完成,无法安全补偿时返回含来源与目标路径的恢复提示。

0.9.0-beta

修复

  • 修复手机共享存储工作区上文件覆盖、移动、重命名与删除失败:卷不支持原子不覆盖移动时,核对身份和版本后使用普通移动或删除;覆盖写以完整暂存原子替换,Linux 与非 Linux 文件工具共用此后端。
  • 首页会话列表的生成指示改为与会话界面同一套分阶段动效:首字前、流式(按实际出字速率)、工具执行与重试倒计时各有节奏,不再固定播放流式动画;生成任务快照随之带出重试状态,出字量计入思考内容。
  • 修复“本次运行”卡片只有后台任务时顶部留白比左右多出一截的问题:没有状态、计时与菜单时不再保留空行和标题上方间距。

新增

  • 会话右缘收起的检视器边缘条支持长按后上下拖动,挪开被遮挡的内容;位置按比例记住,换会话或折叠屏开合后仍在可用范围内。
  • 命令类工具(shell、Python、Termux、SSH 与后台作业)新增可选的 title 参数,由智能体用一句短话概括命令用途;运行记录、工具步骤与后台任务列表优先显示该标题,原命令降为一行等宽副文本。智能体未填写时按命令原文从左向右显示两行。
  • job_wait、job_status、job_stop 与 job_input 步骤显示为“动作 · 任务名”,不再展示原始参数;等待步骤显示已等待时长与最长等待时间。

变更

  • 工作区选择器的“新建文件夹/新建项目”移到页头右侧,成为与返回按钮对称的图标按钮,不再在路径与列表之间单独占一行;Linux 起点列表不能新建,不显示该按钮。
  • 移动工作流测试方案的 PASS 判定增加交互要求:过程可见、可中断、可中途介入、可挂起与恢复、后台作业可轮询、中断后可恢复、失败可定位七项须达到桌面 ADE 水平,产物正确但交互缺失记产品缺口;测试统一在“命令需批准”档执行,仅 D3 对比两档。

0.8.1-beta

修复

  • 修复表头含 # 列的表格被拆成单独竖线和一行大标题、失去表格渲染的问题:压缩标题、编号与引用的拆行修复不再作用于表格行,单元格里的 1. 和 > 也不再被拆开。
  • 修复折叠思考块的滚动预览在真机上几乎静止:预览层改为每帧接收引擎读出的显示值,不再因参数未变被跳过重绘;新增设备测试按约 480 字/秒的思考输出核对预览持续变化。
  • 修复发行设备回归的聊天模型测试夹具缺少目录元数据,导致目录刷新后模型被筛掉并触发超时;增加刷新后的可用性断言。
  • 修复工作区设备测试的外层超时短于单项测试上限,导致较慢设备在测试结束前被强制中止;其他设备测试的默认超时保持不变。

变更

  • 增加手动截图诊断工作流,保留空会话预览的参考图、渲染结果和差异报告,方便排查发行截图门禁。
  • 移动工作流能力测试文档改为可执行方案:去重合并为 55 项基础能力与 20 项端到端任务,端到端任务按轻、中、重负载分级判定,新增两台 Linux 测试主机的手机免密 SSH 配置与逐批确认流程;数字人口播与 Windows/macOS SSH 后端列为范围外。

0.8.0-beta

v0.7.1-beta 与 v0.7.2-beta 标签的发行流水线均未通过设备回归,没有发布安装包;其全部内容并入本版本。

新增

  • 保密信息输入:AI 需要密码、令牌、API Key 或私钥口令时调用 request_secret,会话中出现保密输入卡(不进入输入法学习、录屏截屏隐藏),值由应用直接写入 Git 凭据、SSH 主机、模型服务商密钥、正在运行的后台任务终端或本会话保密库,AI 只收到“已保存 / 已取消 / 已过期”。去向是 github.com 的 Git 凭据时,卡片可改用浏览器登录 GitHub。
  • 保密信息输出:shell_exec、python_exec、ssh_exec 可用 capture_secret 把命令输出存进本会话保密库,后续命令以同名环境变量引用;AI 调用 show_secret 后出现保密输出卡,通过设备验证后查看或复制(剪贴板标记为敏感并在 60 秒后清空),也可另存为 Git、SSH 或服务商凭据,或销毁。保密值不进入消息、工具账本、日志与诊断导出,命令输出中的原文及其 Base64、百分号、十六进制编码一律遮蔽。输入回执与输出卡随会话记录保留,重新打开会话或重启应用后仍在;保密值不随记录保存;销毁、应用重启或同名槽位写入新值后,输出卡收成一行记录,标明“已销毁”“已随应用重启清除”或“已被同名新值替换”,不能再显示或复制。
  • 输入栏密钥提醒:发送内容含 GitHub 令牌、sk- 密钥、AWS 访问密钥或私钥块时先提醒,可返回编辑、仍然发送,GitHub 令牌还可直接保存到 Git 凭据并在输入框中替换为占位。
  • Linux 模式的 gh 经应用代理使用“设置 → Git 凭据”中保存的 github.com 凭据,无需 gh auth login;真实令牌只由应用注入 GitHub API 与上传请求,命令只拿到本次命令有效的一次性凭证。

变更

  • 主分支更名为 main。发行工作流改为推送 v<versionName> 注释标签触发:版本号取自 build.gradle.kts,发布说明取自本文件对应版本小节,-beta 版本标为 prerelease,附侧载与 Play 两个签名 APK 及其 SHA-256。Android CI 不再在每次推送时运行,只在 PR 与手动触发时运行。
  • 发行与 Android CI 的托管模拟器跳过 Tailscale 控制面交互登录用例:该用例需经 Tailscale 公网控制面注册才能拿到登录链接,托管 x86_64 模拟器上无法完成;本机模拟器与真机设备测试仍完整运行。
  • Android CI 精简为 PR 与手动触发的静态检查;发行流程复用同一检查入口并继续执行完整构建、设备回归和签名验证。

修复

  • 分享导入页对索引失败的文件点“重试失败项”后,即使重试再次失败也显示“已完成索引”。重试会换用新的索引任务,导入页仍在跟踪旧任务,旧任务消失被误判为完成;现在改为跟踪新任务的真实结果。
  • 带旧版附件的用户消息偶尔不显示附件区。附件解析结果从后台线程写回界面状态时可能丢失变更通知,现在回到主线程再写入。
  • 修复隔离脚本服务连接回调早于绑定调用返回时,握手被忽略并导致执行超时的问题。

0.7.0-beta

新增

  • 智能体头像改为色调符号风格:可从 390 个 Material Symbols Rounded 符号中选择,按 9 类加“常用”分组,支持中英文搜索;12 种色调按 HCT 推导浅色与深色主题下的底色和字形色,对比度不低于 4.5。
  • 新建智能体默认使用按 ID 生成的渐变首字母头像,可在“生成”页换一批;渐变终点避开黄绿色段,不会发成橄榄色。
  • 智能体与用户的照片头像随备份导出、导入和换机迁移。备份包格式升级为 3(单张 2 MiB、合计 8 MiB 以内,超限照片跳过而不让导出失败);旧版本应用会明确拒绝格式 3 的备份包。

变更

  • 智能体编辑页的“图标”和“颜色”合并为一个“头像”入口,点主图也能打开;选择器分“符号 / 生成 / 照片”三页,按“完成”才保存。
  • 首页智能体列表、新建会话菜单与内屏三列统一使用新头像;仍是出厂样式的三个预置智能体升级后自动换成新头像,改过头像或颜色的不受影响。

0.6.2-beta

改进

  • Linux 模式原生 git 的 HTTPS 克隆与推送共用设置中保存的 Git 凭据(含 GitHub 登录),无需在 Linux 中再次登录;认证失败时立即返回重新登录或保存凭据的说明,不再卡在用户名提示。
  • SFTP 小文件传输明显变快:传输任务转交并归还同一会话已认证的空闲 SSH 连接,不再每次重新握手;审批后不再单独重做远端快照,审批字段改在传输开始、写入任何字节前核验;上传临时文件只打开一次(正文写入前即收紧为 0600),省去多余的远端查询。审批绑定、SHA-256 双端校验、原子发布与停止/时限语义不变。实时进度启动即显示总大小并按 B/KiB/MiB/GiB 显示;工具结果、job_status 与任务日志新增连接来源与分段耗时。

修复

  • SFTP 上传/下载审批卡标题由“远程命令”改为“文件传输”,说明写明“上传到 / 从 主机 下载”。
  • 本轮已停止、出错或应用被杀后,未拿到结果的工具显示“已中断 · N 个工具未完成”,不再误报“等待处理”。
  • 回答正文里含 name、query 等字段的 JSON 不再被误识别为工具调用,不再凭空出现大量“等待处理”的工具,也不会被从正文中删掉。

0.6.1-beta

修复

  • sftp_upload 上传到远端尚不存在的路径时,审批卡显示“未能确认执行目标”、批准后返回 SSH_HOST_AUTHORIZATION_CHANGED。远端 stat 对“目标不存在”返回的空结果被当成超时;现在按新建目标给出审批预览,正常上传。
  • 凭据注入代理的 401/403 说明与内置 git 帮助中的设置路径更正为“设置 → 执行环境与连接 → Git 凭据”。

0.6.0-beta

新增

  • 会话内“远程”面板:宽窗口在检视器“远程”页签、窄窗口从菜单进入,汇集 SSH、Git 凭据、Tailscale 与网络四个分段。智能体正在用 SSH 时 SSH 分段最前显示“智能体正在使用”:命令带实时输出与停止,交互会话可在终端的只读页签查看;SSH 后台命令只显示一行计数,点按打开运行详情的“后台”页。SSH 终端在面板内打开,离开面板不断开;“活动连接”列出终端、转发与智能体连接,可逐条断开。
  • 用户自己的 SSH 终端一直保持连接,直到手动断开、从最近任务划掉应用或应用退出;SSH 设置新增“空闲自动断开”(关闭 / 30 分钟 / 2 小时,默认关闭),只作用于用户终端。添加主机面板去掉“退出时保留终端”。
  • ssh_exec 与 shell_exec 一样支持让出与后台:默认运行 15 秒后转入后台,或用 background=true 直接后台运行;后台命令与本地后台任务进入同一套后台任务列表(运行坞“后台任务”、运行详情“后台”页),运行环境标签显示“SSH · 主机 ID”,可查看输出、停止(停止只断开通道)。
  • 添加 SSH 主机可“从 Tailscale 选择”:内置 Tailscale 已连接时,主机名输入框旁的“Tailscale”列出 tailnet 设备(在线状态、系统、是否已添加、是否在设备白名单),选中后填入设备的 tailnet IP,主机 ID 留空时按设备名生成;未连接时入口灰显并说明原因,不在白名单的设备提示需先加入白名单。“远程 › Tailscale”的设备行新增“SSH”,直接打开预填的添加主机面板。
  • Git 凭据新增“用浏览器登录 GitHub”(OAuth App 设备码流程):在浏览器打开 github.com/login/device 输入代码授权,令牌以 github.com 主机保存进现有凭据存储,替换已有 github.com 令牌,内置 git 的 HTTPS 推拉直接使用;代码过期、网页上拒绝、网络失败等分别提示并可重试。手动添加令牌保留。OAuth App 的 client_id 由 Gradle 属性 infinity.githubOAuthClientId 提供,仓库 native-ui/gradle.properties 已写入官方 OAuth App 的公开 client_id;属性为空时不显示该入口。
  • 新增 sftp_upload / sftp_download:与远程主机互传任意二进制文件,单文件上限 4 GiB,边传边算 SHA-256 并在目标端重读核对,不一致不替换目标;本地一侧可选会话工作区(默认)或 Linux 环境(仅侧载版的 Linux 会话),默认不覆盖已存在的目标。上传需审批(外部写入),下载按本地写入定级;审批卡显示传输方向、源与目标路径,覆盖时另有警示。传输与 ssh_exec 一样默认 15 秒后转入后台,并入同一套后台任务列表,运行中显示进度条、已传/总量、速度与剩余时间,失败时标出原因(网络断开、超时、已停止、校验不一致、目标冲突、空间不足)。
  • Git 凭据失效检测:远端以 HTTP 401 拒绝已保存的令牌时,凭据注入代理标记该凭据并告诉智能体请用户处理、不要重试;设置页对应行显示警示,GitHub 登录得到的凭据点按直接重新登录,手动令牌打开更换面板,重新保存后标记清除。GitHub 登录凭据遇到 403 时提示可能缺少仓库权限或需组织管理员批准 OAuth 应用,不标记失效。
  • SSH 前台服务通知改为“SSH 已连接 N 台”,逐行列出主机与连接类型,带“打开远程”“全部断开”;侧载版改用 specialUse 前台服务类型,Play 版保留 dataSync,到达系统后台时限时通知“SSH 已断开”并说明原因。

变更

  • “允许智能体管理 SSH 主机”默认开启:智能体保存、删除主机或安装公钥时仍每次需要用户批准;已手动关闭的用户保持关闭。

修复

  • 文本换行门禁恢复通过:子代理状态、Git 入口与 worktree、SSH 主机、外部文件夹、可达范围、Linux 文件详情、长期记忆、审批卡、触摸锁、引导页等处的“·”元数据改用 InfinityMetaLine 分段排版,分隔符不再落在行首或行尾;SSH 主机与外部文件夹副标题放宽到三行,转发端口与访问方式不再被省略。
  • 重试倒计时与 Tailscale 本机副标题拆成分段字符串;13 处输入框补齐输入换行策略。
  • InfinityMetaLine 高度不超过父级约束,空间不足时向下裁切,不再居中盖住上方内容。
  • SSH 添加主机:别名字段改称“主机 ID(供智能体引用)”,规则提示移到字段下方,输入自动转小写,留空时按主机名生成;错误码改为中英文提示并固定显示在保存按钮上方,“生成密钥”校验失败不再无反馈;新增“从剪贴板粘贴私钥”,载入时校验 OpenSSH 格式并清空剪贴板。

文档

  • 仓库首页重构为英文 README.md 与中文 README.zh-CN.md 两版,精简为亮点、真机截图、安装与构建;原首页详细章节迁入 docs/guide/ 六篇使用指南。

0.5.1-beta

修复

  • 网页、PDF 与图片格式的会话导出中,消息头显示“你”和智能体名称,模型显示为模型名称,不再显示 USER、ASSISTANT 和内部模型 ID;界面为英文时导出页面文案同为英文。Markdown 与纯文本导出格式不变,仍可导回应用。
  • 导出面板切换到 PDF 或图片格式时,附件选项保持显示并锁定为开启(说明图片直接画进页面、其它文件只列文件名),面板高度不再跳动。
  • 分享导入全部成功后,导入面板显示“完成”按钮,不再显示“稍后处理”和“取消导入”。

0.5.0-beta

新增

  • 会话导出新增网页(HTML)、PDF 与图片(PNG)三种格式,与 Markdown、纯文本一起在导出面板中选择;可勾选是否包含思考过程、工具调用和附件,并预估输出大小。工具调用只导出工具名与结果摘要,不导出命令输出。PDF 为 A4 分页;图片宽 1080px,长会话按约 20000px 切成多张(_01、_02…)。/export 可带格式参数(md、txt、html、pdf、png 或中文名)直接导出。
  • 从其他应用分享到本应用的文件不再限制格式:能解析的格式照常建索引,其它格式原样保存。导入位置可选当前会话、其他会话、Linux 环境中的任意目录,或资料库中的文件夹。
  • 资料库按需访问的 Linux 会话中,智能体可用新工具 copy_knowledge_to_linux 把资料库里的文件或文件夹复制到 Linux(默认 /home/session/inbox),再用命令处理应用不能解析的格式;单次上限 100MiB、10000 项,不覆盖同名文件。
  • Linux 会话中的脚本可以运行 infinity-wake [--key K] [--title T] [消息] 唤醒智能体:会话空闲时由系统发起一轮回复,聊天里显示“脚本唤醒”触发行。同一会话 60 秒内最多唤醒一次,期间的消息按 key 合并到下一次。
  • 智能体设置新增“子代理”一节:子代理可跟随会话模型,或固定使用另一个模型(例如把检索交给便宜的模型);打开“允许智能体按任务换模型”后,智能体可从勾选的模型中为每个子任务指定模型,不支持工具调用的模型不能加入。指定的模型不可用时直接报错,不改用其它模型;子代理卡片显示所用模型及是否由智能体指定。

变更

  • 首次启动引导页按全站视觉重做:纯黑星空背景,字标改用与空会话“灯珠变形”相同的实现(170 列 × 7 行灯珠);控件与字号缩小、留白加大,Linux 环境、连接 AI、选择模型、首个智能体各页内容可滚动。引导页固定为深色。
  • 全站默认外观改为深色、纯黑、冰蓝主题色;此前默认为淡紫、非纯黑。手动选过其它主题色或改过纯黑开关的设置原样保留;此前版本选择内置淡紫时不保存值,升级后会显示为冰蓝,需要在外观设置中重新选一次淡紫(之后会保存)。
  • 外观设置中三个动效列表把默认项(点阵波形屏、运算矩阵、灯珠变形)排在第一位。

0.4.7-beta

变更

  • 审批的两档改名:“工作区”改为“命令需批准”(文件工具在工作区内直接读写,每条命令执行前都会问你),“完全访问”改为“免批准”(命令也直接执行,不再问你,以本应用权限运行)。原名与工作区(文件夹)重名、且“完全访问”像是放开了额外权限,实际两档只区别命令是否经你批准。可达范围摘要卡与“什么时候问你”、会话设置、输入框盾牌按钮、分支会话、/mode 命令与“不限轮次”确认文案统一使用新名称,英文为 Ask for commands / No approvals;/mode 仍接受原名并新增新名称作为参数。

0.4.6-beta

修复

  • 智能体可达范围的“各工具明细”在 Linux 模式会话中不再列出 Termux(Linux 会话不提供 Termux,与“运行代码”一节一致)。
  • 运行模式选择、导出、修复与重置提示及 Linux 设置的路径说明中,“会话专用空间”“会话目录”“会话私有文件”统一称“本会话文件夹”。

0.4.5-beta

变更

  • “选择工作区”按存放位置分为应用内存储(本会话文件夹、共享文件夹)、Linux 环境(主目录)、手机存储(内部存储)三组;每行说明谁能用,并固定两条标签:是否进备份、什么时候会消失,只有会被清掉的情况用琥珀色。Linux 模式下本会话文件夹注明它在 Linux 中的路径 /home/session;内置模式会话中 Linux 主目录灰显并说明原因。“内置文件系统”“设备文件系统”等称谓统一改为应用内存储、手机存储,私有空间统一称“本会话文件夹”。
  • “智能体可达范围”重组为摘要卡(运行模式、权限模式、当前工作区)、文件位置、运行代码、什么时候问你、能连到哪里五部分:路径随运行模式显示(Linux 为 /workspace、/home/session、/mnt/skills,内置为 /、/session、/skills);只展开本会话可用的执行方式,未启用的合成一行;网络按公网、局域网与本机、tailnet、MCP 与 SSH 四类目标说明,原工具总表收进默认折叠的“各工具明细”。

修复

  • 智能体可达范围在 Linux 模式会话中不再列出该模式不提供的内置 Python、隔离脚本与 Termux;各部分统一以会话保存的运行模式判断,不再混用全局 Linux 就绪状态。
  • 共享文件夹与手机存储的标签此前未标明不进备份;会话专用空间此前标为“随会话删除”,实际删会话时默认保留文件。

0.4.4-beta

变更

  • 空会话动效“灯珠变形”改为星尘变形:字标和莫比乌斯环共用同一组细沙粒,灯珠数、环上排布与亮度规则都和“灯珠环”一致(默认 170 列 × 7 行)。字标改为在字形内均匀撒点的星尘字,数据光带扫过时闪亮,飞散途中零星闪光。此前变形的灯珠数跟着 4.2dp 字标网格走,环上只剩几十列,每列挤成一根粗灯管,与灯珠环风格不一致。

修复

  • 会话二级页(资源管理器、Git 变更、Agent 浏览器,以及外屏和内屏会话列等窄窗口下的产物页)补上跟手返回:从边缘拖动时页面随手指右滑,下层从左侧跟着回位并褪去压暗,松手完成返回,取消回弹,手感与设置等导航页一致。此前拖动时页面不动,松手后才直接切走。叠了多层时只拖最上层;页面内部自己的返回(如回收站)仍然优先,点按钮或按返回键的动画不变。

0.4.3-beta

变更

  • 修复 lint:设置页切换语言时改用 LocalActivity 取 Activity,不再把 LocalContext 强转(activity-compose 1.13 新增检查)。
  • 聊天输入框浮岛精修:圆角 24dp 改为 28dp,工具行左右与底部统一 8dp,发送键与外圈同心;正文与占位文字左缘对齐工具行“+”号笔画(约 22dp),不再落进圆角弧线。占位文案改为“给 Misty 发消息”(中英之间留空格、去掉省略号),颜色减淡一档。模型名与推理档位统一为 32dp 高、无描边的填充胶囊;上下文用量环不变。
  • 返回手势改为跟手的预测性返回:从屏幕边缘拖动时,当前页随手指向右滑出,下层页从左侧四分之一处跟着回到原位并逐渐褪去压暗;松手越过阈值完成返回,否则回弹到原页。内屏设置右列与首页会话列有子页时,同样只在本栏内跟手。Android 13–15 也启用系统返回回调(enableOnBackInvokedCallback),与 Android 16 起的默认行为一致。自己处理返回的页面(文档编辑、SSH 终端、各类面板与弹层)仍按原逻辑先处理,不跟手。
  • 导航库 navigation-compose 由 2.7.7 升至 2.10.2,activity-compose 随之升至 1.13.0;新增显式依赖 navigationevent-compose 1.1.2。导航库 2.10 及其带入的 lifecycle 2.11 要求按 API 37 编译,compileSdk 由 36 改为 37;targetSdk 仍为 36,运行行为不变。返回处理改由 NavigationEvent 统一派发,被遮住的面板层同步改挂到不接收返回的调度器,层级优先顺序与此前一致。

0.4.2-beta

变更

  • 换页改为视差推入:新页整页从右缘推入,左缘带阴影,旧页同时左移四分之一并压暗;返回反向、更快收尾。此前旧页要先淡出 90ms,新页才出现,看起来会顿一下。内屏设置右列与首页会话列只在本栏内推入,不盖到左侧列表;在左侧换设置项或切换会话时,新内容直接叠化覆盖旧内容。
  • 底部标签按顺序整页横滑(目标在右侧就从右边进);内屏导航轨上改为按标签顺序纵向滑动。

测试

  • 修复 TermuxBackgroundJobsTest 在全量单测中偶发“启动回执不完整(退出码 73)”:macOS 首次执行测试临时生成的 setsid/ps 脚本要排队做系统安全评估,并发时可达数秒,吃掉启动回执等待;准备阶段先预热这些脚本,生产脚本与超时不变。

0.4.1-beta

修复

  • 灯珠变形的莫比乌斯灯珠环半径收小一档,窄屏(折叠屏外屏)上视角摆动与拖动时两端不再出界。
  • 外观设置“浮岛材质”预览改为播放演示生成过程,环境光的内部漫光与点阵屏在预览中可见。
  • 点按用户气泡里的引文可以跳回原消息了:此前列表停在底部时,自动跟随会立刻把列表拉回尾部,看起来没有跳转。
  • 模型编辑页与启动问题提示里的“目录”文案统一为“规格库”;会话请求头说明中的“模型目录同步”更正为“模型列表同步”。

0.4.0-beta

体验改进第三批

  • 点阵波形屏随浮岛光效与运行坞在 0.6 秒内一起收起,结束后不再停留 2.5 秒显示平均速率;点阵屏去掉独立底板与描边,灯珠直接落在浮岛表面。
  • 外观设置新增“浮岛材质”:毛玻璃(半透明表面实时模糊背后的会话内容,上沿细高光)或环境光(实色表面,生成光效裁剪在浮岛内部、从点阵屏一侧漫开,不再画外圈光晕),默认环境光。
  • 空会话动画新增“灯珠变形”:灯珠拼出 INFINITY,光带扫过后按横向位置错开飞散,扭成 ∞ 形莫比乌斯灯珠环流动一阵再聚回;点按切到下一形态,环阶段可拖动旋转,系统关闭动画时显示静态灯珠字标。
  • 动效默认值改为:输入框流光点阵波形屏、生成状态指示运算矩阵、空会话灯珠变形、浮岛材质环境光;只影响从未手动选择过的用户。
  • 设置首页:版本号并入“关于”行副标题(如“0.3.0-beta(5)· 侧载版”),底部只留居中的小号 GitHub 标志并收窄留白;新增关于面板,复制版本信息移入其中。
  • 模型管理页:“同步”只指从服务商拉取模型列表,摘要第二行写“N 分钟前从服务商同步”。模型目录在界面上改称“规格库”,手动更新移到右上角菜单“更新规格库”(第二行显示当前版本或内置快照),完成后底部提示;失败时摘要下方一条提示说明原因、沿用的版本并可重试。列表底部的目录文字行移除。
  • 修复规格库更新持续失败:改名后线上目录仍以旧 keyId nexara-catalog-p256-20260922 签名,App 只认新 keyId。现在两个 keyId 共用同一公钥;目录发布流程补齐签名密钥后已改用新 keyId 重新发布。
  • 修复模型管理中的“测试”对所有模型都失败:探测原先把输出上限设为 1 token,上游只能以长度截断结束而被判失败。现在收到第一段正文或思考内容即判成功并取消请求,显示首包耗时;鉴权、限流等上游错误按原分类显示;探测不再传输出上限。
  • OpenAI Chat 流式请求出错时保留服务商的 Retry-After 秒数,限流不再一律提示等待 60 秒。

0.3.0-beta

产品更名为 Infinity Workbench

  • 产品名 Nexara 更名为 Infinity Workbench,桌面名称为全名;空会话粒子、灯珠、变形字标与首次引导改拼 INFINITY。仓库迁到 Promenar/Infinity-Workbench。
  • 应用 ID 与代码包名改为 com.promenar.infinity,与旧版并存,不能覆盖升级;类名前缀、Gradle 工程名与任务名同步改为 Infinity。
  • 新备份为 infinity_backup_<时间戳>.iwb,仍识别旧 .nexara 备份;备份导出的已知缺陷另行修复。工作区内部标记改用 .infinity 前缀,读取与清理兼容旧 .nexara 前缀。
  • 命令运行环境的环境变量改为 INFINITY_WORKSPACE、INFINITY_WORKSPACE_KIND、INFINITY_SKILLS,同时导出 NEXARA_* 旧名别名;通知深链改为 infinity-workbench://。
  • 构建与 CI 的 Gradle 属性 nexara.* 改为 infinity.*(如 -Pinfinity.deviceE2eAbi),签名与测试用环境变量 NEXARA_* 改为 INFINITY_*。
  • 系统提示词新增 Runtime Environment 小段,只写运行环境 Infinity Workbench 与本轮实际请求的模型 ID,每轮动态取值;主会话与子代理都适用。

新应用图标

  • 应用图标换成点阵无穷:深蓝夜空背景上,扭转的点阵丝带组成无穷符号,左下交汇段最亮,亮点带径向渐变光晕;主题图标为放大的单色点阵,通知栏改用实线无穷剪影。原折叠 N 图标及其母版移除。

体验改进第二批(第一波)

  • 思考按流式显示:浮岛光效与生成状态指示灯在思考阶段与正文流式共用配色,出字速率计入思考字数;只有尚无内容到达时才显示首字前。
  • 点阵波形屏升级为信息屏:位置可选输入行右侧(7 行)或浮岛顶沿(5 行整条),可关闭数字。显示数字时,首字前显示等待秒数,流式显示每秒字数,工具显示轮次,审批显示“!”,重试显示倒计时,结束后停留显示本轮平均速率。
  • 扫光点阵流式阶段改为有序结构:写入头沿固定行前进并留下余辉,同斜率等距光带随速率从 1 道增至 3 道,速率按 0.6 次方映射。
  • 运行坞并入浮岛顶层,与输入区之间是一排随速率流动的小灯;用时精确到秒(m:ss / h:mm:ss),每秒刷新。点阵屏为顶沿模式且运行坞出现时,点阵屏放在两者接缝处,代替小灯。
  • 折叠思考块的滚动预览只占一行:低速时单行匀速滚动、新字渐显;速率超过 45 字/秒时整行翻滚,每行至少停留 0.5 秒,回落到 35 字/秒以下切回单行。
  • 智能体头像在首页列表、新建会话菜单、内屏侧边栏与编辑页使用同一张图标表与同一底色。
  • 新建智能体弹窗为名称、类型(对话型 / 智能体型,一次性模板)、模型、系统提示词;描述移到编辑页。智能体新增“新会话默认开启工具”,数据库升至 v30,现有智能体保持开启。
  • 首页列表去掉底部“添加智能体”行与展开后的“新建会话”行,新建统一走右上角 +。
  • 会话可用技能只取全局启用技能与工作区技能,新建会话不再复制智能体的旧技能名单。
  • 自动注入的资料与 knowledge_search 工具结果共用本轮 K 编号;工具对已注入条目只回复编号。
  • 查询改写默认关闭;未手动设置过的用户随新默认值关闭,开关下方说明改写会增加首字等待。
  • 长工具链中,连续 4 轮工具调用或 60 秒没有面向用户的文字时,运行时提醒模型先说一句进展;提醒只进协议历史。
  • 设置首页底部显示版本名、versionCode 与渠道,点按复制版本信息(含提交短 SHA),行尾 GitHub 按钮打开项目仓库。
  • 网络访问页的工具表标注每行适用范围,并注明 Linux 环境中的命令不受白名单限制;会话内网络可达面板按运行模式灰显不生效的行并写明原因。

体验改进第二批(第二波)

  • 选字引用批注:助手正文(生成结束后)与用户正文的选字工具条新增“引用”,选中的文字作为引用卡加入输入区,每张卡下方可写批注;同一段引文不重复加卡,超过 2 张折叠为“N 段引用 · M 段已写批注”,引用区最高占屏高三分之一。写了批注的卡随消息发送,未写批注的卡丢弃;只有引用时正文可以留空。发给模型的格式为“> 引文”、空行、批注,多段之间空一行,正文在最后。用户气泡在正文上方显示引用,点引文跳到来源消息所在的那一轮。引用随排队、插队、重新生成、分支、备份(结构版本 12,旧备份恢复为无引用)与 /export 一起保留;数据库升至 v31。思考、工具与审批卡的选字不提供“引用”。
  • 不生效即灰显:在当前条件下不起作用的设置与操作不再隐藏,改为灰显并在下方写明原因,覆盖内置提供商的删除、纯黑主题与文字缩放、SSH、Tailscale、WebDAV 备份、Termux、会话设置面板、智能体默认推理参数、Linux 运行模式选项与入口、Agent Reach 不可用渠道等 15 处;输入区工具条上的推理与执行模式快捷入口仍按条件隐藏。

设置重组、智能体知识检索工具与提供商模型页

  • 设置首页按模型、智能体运行、知识库、执行环境与连接、数据分组。“智能体运行”拆为执行轮次与预算、内置工具(含 Web 搜索配置)、技能包、MCP 服务器四页;“执行环境与连接”七项直接列在首页,副标题显示状态。原三个知识库页面重组为知识库设置(新会话默认、检索深度、模型、每轮抽取)、知识图谱、长期记忆、调试与高级;全局“旧版自定义工具”入口与会话级自定义技能开关移除。Linux 安装页不再选择新会话默认模式,改在 Linux 管理页“会话”分组修改。
  • 检索深度提供“精简 / 均衡 / 全面”三档,点选即套用,下方显示记忆、文档、召回候选与最终条数;原始值不匹配任何档位时显示不可点的“自定义”。高级参数收进“调试与高级”的可展开行,分块大小、重叠或记忆分块大小与已建索引不同时页顶提示,并可“全部重新向量化”。查询改写模型未设置时跟随快速模型,与图谱抽取相同。
  • 检索参数统一来自全局设置:智能体级“记忆设置”“检索设置”两页删除,智能体只保留检索范围上限与新会话默认;会话只控制开关与范围,全局开关只作新会话默认。首页新建会话带入智能体默认工作区;切换模型不再重新开启工具;关闭工具时可保留内置联网搜索(默认开)。移除 Gemini 原生联网搜索、被动联网搜索、会话级检索调优与会话超时覆盖。Web 搜索新增“只搜索这些域名”“排除这些域名”两个过滤列表。
  • 新增智能体知识检索工具 knowledge_search 与按需只读挂载 request_knowledge_access。智能体编辑页“检索方式”可选每轮自动、仅工具或两者,“知识库文件访问”可选关闭、按需申请或始终;会话关闭工具或模型不支持工具调用时回到每轮自动检索,每轮最多检索 6 次。按需申请时出现“内置工具 · 访问授权”审批卡(任何执行模式都需批准),写明申请原因、知识库与文档数、挂载路径与只读说明;挂载只读,只能用文件工具读取,命令不可达,写入一律拒绝。外部文件夹面板新增“挂载知识库”,挂载带“知识库 · 只读”标签。会话中检索步骤显示“检索了知识库 · N 条结果”,检索详情带引用编号 K1…、查询词、相似度与重排分以及读取路径。
  • 智能体编辑页重排为基本信息与外观、模型与参数、提示词、新会话默认、知识与记忆、检索范围、管理;采样参数折叠为一行,参数方案在面板内选择与保存;新会话默认的技能暂为只读摘要。从编辑页删除智能体时先关闭它的会话,确认框写明会话数。会话设置面板:“关闭工具时保留联网搜索”为“启用工具”的子项,工具关闭时置灰执行模式、技能与 MCP,技能为只读摘要;文档范围第二档改名“工作区与知识库”;采样参数以中文为主名、英文参数名为副标题。
  • 全站术语统一为“智能体”(英文 Agent),“以 Nexara 身份”类说明改为“以本应用权限”;修正 /mode 说明。
  • 提供商管理、提供商编辑、模型列表与模型编辑四页重新设计:列表行显示协议、地址、凭据、模型数与连接状态,模型行用图标组表示能力;模型编辑改为整页并支持预测性返回。连接测试结果与模型同步时间持久化到本机(不进入备份)。统一悬浮菜单调整外观与进出场动效。
  • 修复 session_branch 的参数结构使用了工具校验不支持的 minItems/maxItems,工具被判为无效而无法调用;步骤数量限制仍由方案校验执行。
  • 发行校验脚本 verify-release-apk.py 的安装包大小上限由 50 MiB 调为 60 MiB:内置 Python、Tailscale 与 Linux 运行时的 arm64 原生库约 24 MiB,侧载包约 52.4 MB;安装包瘦身另行立项。

提示词:运行环境说明不再用应用名称描述身份

  • 助手与会话提示词为空时,系统提示词与工具说明写着“Linux 命令以 Nexara 身份运行”“run as the Nexara app identity”,模型容易把运行身份当成自己的身份而自称“Nexara 助手”。权限说明、Linux 运行说明、项目工作区说明,以及内置命令、Termux、SSH、SSH 主机管理、Python 沙箱的工具说明与命令暂停提示,统一改称“本应用的 Android 用户 / 本应用 / the host app”,含义不变;Python 沙箱的 nexara.* 接口名不变。关键数据路径(nexara_v2.db、诊断日志等)与画布接口名仍会出现在提示词里,部分模型仍可能据此自称 Nexara 助手。
  • 新增回归测试:空提示词、Linux 模式与完整工具组合下的系统提示词不出现应用名称;系统提示词与工具说明源码中的字符串字面量不出现应用名称。

生成动效按阶段区分

  • 输入框浮岛光效与生成状态指示按生成阶段切换节奏与颜色,共五个阶段:首字前(含思考,慢扫或呼吸,不闪)、流式输出(随机闪烁,密度与速度跟随实际出字速率,速率为 0 时只剩常亮的 LINK 灯)、工具执行(换第三色,按固定节拍依次推进)、等待审批(第三色常亮、每秒慢闪;待批准的工具调用、子代理审批与待回答的提问都算)、重试等待(压暗、等间隔闪,底沿数据流显示倒计时进度,点阵波形屏显示倒计时秒数)。6 种浮岛样式与 7 种指示样式各自在五个阶段保持同一视觉家族。
  • 显示阶段至少停留 0.4 秒才切换,切换时 0.25 秒交叉淡入淡出,连续的短工具调用不会来回闪。点阵波形屏的柱状图改为实际出字速率的历史;极光环行的光带转速随速率变化。
  • 等待审批时浮岛不再随生成暂停而熄灭,保持第三色慢闪提示轮到你处理。
  • 思考模型(如 DeepSeek)收到首个分片即进入流式,但分片里只有思考内容时仍按首字前显示;正文在这一段流式里实际到达后才切到流式输出。工具执行后的新一轮思考同样先回到首字前。
  • 设置 → 外观 → 生成动效 的浮岛与指示预览按演示脚本轮播五个阶段,面板顶部显示当前阶段名。
  • 一轮生成正常完成时,输入框浮岛整圈泛绿后在约 1.8 秒内退去,与出错时的整圈泛红对应,所有浮岛样式共用。只在本页看到过这一轮运行(含等待审批)时触发;出错、手动停止、进入会话时任务已结束都不闪。系统关闭动画时不显示;与泛红相同,Android 12 不显示外圈光晕。

生成失败原因与限流重试

  • 生成失败卡片与提示条在通用说明下增加一行“服务商返回:…”,显示上游错误体中的原因(如“负载已饱和”“Too many requests”“额度不足”)。原因经脱敏(密钥、Bearer、长令牌替换为 ***)、去控制字符并截断到 200 字,随失败信封一起持久化,重开会话仍可见;复制消息时一并带上。
  • 修正限流识别:上游用 400/403 加限流文案(含中文“负载已饱和”“请求过多”“并发”等)返回时,归为限流并走默认 10 次自动重试,此前被当作请求无效立即停止。真正的 400 仍判为请求无效、不重试;错误体或请求 ID 里出现 401/403 数字不再误判为鉴权失败;非 HTTP 异常只认 status/HTTP 前缀后的状态码。
  • OpenAI 兼容流中途下发的 error 事件按其状态码与文案分类(限流、服务端错误等),不再一律报“提供商暂时不可用”;无法识别的流内错误按可重试的服务端错误处理。
  • 会话切换工作区后,顶栏 Git 分支与改动立即刷新,不再等到本轮生成结束。

Linux 工作区目录、交互命令与触感细节

  • 会话工作区的 Linux 来源改为目录浏览:可逐级进入 /root、/home、/opt、/srv 及其子目录并新建文件夹,选定任意一级作为工作区;系统目录(/etc、/usr、/var、/proc 等)与运行时绑定点不可选。已有的 /root 绑定无需迁移。浏览时系统返回逐级回到上一层,回到首页后再关闭面板;Agent 可达范围的路径说明按所绑目录显示命令工作目录(如 /opt/demo),其它工作区仍为 /workspace。文件工具、命令工作目录、Git、分支起点、运行模式导出与系统提示词都以所选目录为准。
  • 修复 Linux 会话里 gh auth login 等交互程序卡在第一个提问:这类程序启动时向终端查询光标位置与背景色并等待答复,内置伪终端此前不答复,后续按键全被当成答复吞掉。现在答复光标位置、设备状态、设备属性、窗口尺寸与前景/背景色查询,job_input 写入的回车可以正常推进提问。
  • 会话中的“已运行 N 步”、思考、检索与命令步骤行去掉溢出行形的触摸水波纹,改为按下轻微变淡并配触感反馈(展开/收起为开关触感,打开详情为轻选择触感);完成态展开、收起全部过程步骤时纵向伸缩过渡,不再整段跳出。分支卡片、分支起点卡与旧版检索卡的水波纹按圆角裁切。
  • Linux 文件页:~ | / 起点切换与路径面包屑去掉溢出胶囊的水波纹,改为选中底色渐变与触感反馈;进入、返回目录按层级横向切换,新目录读完前保留旧列表,不再先闪空白;读取进度条叠在列表上方且短暂读取不出现,列表不再上下跳动;排序、筛选、增删时条目平滑换位,多选圈与选中底色渐入渐出,范围说明切换时淡入淡出。

生成动效预设与自定义强调色

  • 设置 → 外观 新增“生成动效”分组,三处动画各自可选,选项带实时预览,颜色跟随强调色:
    • 输入框流光 6 种:极光环行(默认)、潮汐呼吸、网孔背光、底沿数据流、点阵波形屏、扫光点阵。
    • 生成状态指示 7 种:波浪跳跃(默认)、端口灯、运算矩阵、交换机口、硬盘位、∞ 描线、∞ 灯珠。
    • 空会话动画 6 种:流场字标(默认)、灯珠字标、粒子流环、灯珠环、字标变形、灯珠星球。后四种可拖动转视角,点按会散开或跳到下一段。
    • 指示器沿用交换机指示灯语义:常亮表示连通,高频随机闪烁表示正在收发。闪烁按时间哈希取样,与屏幕刷新率无关。
  • 生成状态指示改为整轮生成期间持续显示,首字到达后不再消失。会话气泡、正文行内光标与首页会话列表的生成中标记使用同一组件,一起切换样式。
  • 强调色新增自定义色盘(饱和度/明度方块、色相条、十六进制输入、最近使用 8 色),并新增配色风格:柔和(默认)、鲜艳、忠实、表现力。开启动态取色时配色风格不可选。默认色块固定显示内置主色,不再随已选强调色变化。
  • 会话列表(含分支会话与助手下的会话)标题固定单行,过长时缓慢跑马灯滚动;系统关闭动画时改为省略号截断。

分支会话与会话间通信

  • 新增 session_branch:方案卡支持派发到分支、在此执行、不需要三种选择,工作方式、上下文与审批模式可在卡上修改;选择与分支创建在同一事务落盘,同一方案只派发一次。
  • 分支为独立普通会话,走全应用 4 个生成名额;worktree 方式按批准时冻结的命令精确执行 git worktree add,工作目录或参数变化需重新提交方案。
  • 新增 session_list;session_read/session_send/session_stop 可寻址普通会话:主会话免批控制自己的分支,分支与子代理只能读取和发消息给主会话,同助手其它会话逐次批准读取。
  • 会话消息持久送达、同来源按序合并去重、重启补送;空闲收到消息自动开始新一轮,连续 8 次后暂停,用户输入、回答或审批后清零。
  • 界面:首页分支嵌套在主会话下,分支会话顶栏分支标记与开头方案入口,收到/发出的会话消息行,Git 页 worktree 列表,删除分支时可一并移除 worktree。
  • 数据库升级到 Room 29(会话新增父会话、方案、worktree 与自动处理状态),备份格式升级到 10 并兼容旧备份。
  • 修复:session_send 的发送记录写在工具调用与结果之间时,模型历史会把真实结果替换为“结果缺失”并多出原始 JSON 消息,界面也会把一轮拆成两段。

后台子代理

  • agent_task 默认后台运行:立即返回子代理 ID,完成后结论自动交回主会话(空闲时发起新一轮、生成中在步骤后插入、等用户时暂缓),同一结论只交回一次,重启后补送;子代理不再有 12 步与 token 固定上限,可用 max_turns 限定轮数。
  • 全应用 6 个子代理名额先到先得,与会话 4 个生成名额独立;父轮停止不影响已派出的子代理。
  • 新增 agent_wait、session_read、session_send(含 wrapUp 收尾)与 session_stop;等待时卡片显示剩余时间与“转入后台”,卡片与查看页可停止单个子代理,查看页记录主会话的追加指令、转入后台与停止。
  • 子代理继承主会话的执行模式,可按任务用 tools 限定可用工具;结论超过父会话上下文窗口的 1/8 字符时全文写入工作区 subagent-results/。
  • 子代理用量计入用量统计“子代理”分类,不再并入父轮消息。
  • 送达可靠性:等待与通知对同一完成序号互斥,送达写入失败不影响父轮并退避重试;状态写盘移出全局锁并按批次合并,流式用量最多每秒落盘一次;完成通知已写入但新一轮未启动时进程被杀,重启后补启这一轮。
  • 查看页修复:转入后台等干预发生在工具调用进行中时,结果不再与调用脱钩;命令结果只显示输出与非零退出码,不再显示原始 JSON。

窄窗口会话顶栏只留选项菜单

  • 窄窗口(竖屏、折叠屏外屏与内屏三列中的会话列)会话顶栏只保留选项菜单,产物、浏览器与文件收为菜单首组,标题不再被图标挤占。
  • 产物入口始终在菜单首项,会话已有产物时显示数量;Agent 正在使用浏览器或需要你处理时,圆点同时挂在菜单按钮与菜单中的浏览器项上。宽窗口仍由检视器页签承载,不变。
  • 修复内屏三列的会话列点“产物”没有反应:二级页面由整页还是检视器承载改按会话列自身宽度判定,不再按整个窗口宽度。

多会话并发生成

  • 最多 4 个会话同时生成,其余按发送先后排队(会话列表与图标条标“排队中”),有空位时自动开始;停止或删除一个会话只影响它自己。
  • 草稿、附件、排队消息、审批与系统轮都按会话隔离;本地模型的所有调用(对话、设置页引导模型验证、向量化与重排)共用引擎级推理锁,不会同时占用推理引擎。
  • 多个会话后台生成时,前台通知合并为“N 个会话正在生成”,逐行列出各会话与阶段;全部进入等待或结束后通知消失。
  • 应用重启后的无界面交互恢复、会话冷加载与回合准入都按会话进行,一个会话的加载或恢复不再阻塞其它会话。

提问卡(ask_user)

  • AI 可以在需要你做决定时一次提出若干问题(单选、多选或自由回答),会话中显示提问卡:单选自动进入下一题,多选可累加,所有题答完才能提交,也可以跳过;也可以直接在输入栏写“其他回答”发送。
  • 等待回答时本轮暂停并释放并发名额,后台时发出通知,会话列表标“待回答”;回答后在原轮次上继续,满载时续跑进入排队。已答内容以“你的回答”摘要卡保留在步骤中。
  • 子代理不能提问;停止或删除会话会一并关闭待回答的问题。

折叠屏内屏首页三列

  • 内屏宽屏(导航栏以外至少 700dp)的「对话」页签改为三列:功能导航、会话助手列表(296dp)、会话列。首页点会话在会话列打开并在列表中高亮,会话列无会话时显示“新对话”入口;外屏与窄窗口不变。
  • 会话列左上角的返回键换成展开按钮“←|”:点击后整排左移,导航推出屏幕,列表收成 72dp 图标条(头像带生成中、待批准、待回答、排队中徽标),会话扩为带检视器的宽会话;按钮变为“|→”,再点还原三列。图标条顶部按钮可展开 256dp 窄列表(与首页同一份列表),点遮罩或返回收起。
  • 系统返回依次收起窄列表、还原三列,之后与首页原有行为一致;切到「资料」「设置」先还原三列。会话列有独立返回栈,子代理查看页压在会话之上。
  • 开合屏迁移:内屏会话列的会话在合上后变为整页,外屏打开的整页会话在展开后收进会话列。
  • 展开动画只平移与淡入淡出,会话列按目标宽度一次布局;空会话粒子字标随会话列宽度变化重新居中。

产物分类与原型画板

  • 产物页按类别整理:原型、页面、文档、图片、其它,顶部筛选条只列出本会话已有的类别;原型以双列卡片展示,其余按类别分组列出名称、版本与大小。
  • AI 可创建多屏原型:每屏是独立 HTML,屏间用 nexara-screen:<屏幕 ID> 链接跳转。打开原型先进入画板(所有屏幕平铺,可双指缩放、拖动、适配窗口),点任一屏或“演示”进入可点击的演示模式,上一屏/下一屏与返回键回到画板;复制源码时按屏幕顺序带分隔注释。
  • AI 交付报告、文档、图片、数据表等文件时调用 artifact_publish 登记为产物,应用保存私有快照(单文件 25 MiB、每会话 256 MiB、每个文件保留最近 5 版),工作区原文件之后被改动或删除也能打开当时的版本;回合结束后正文下方的“本轮产物”出现对应文件卡。图片在图片查看器打开,Markdown 与纯文本、HTML/SVG 在应用内显示,PDF、Office、压缩包等交给其它应用。
  • 本轮改动但未登记的工作区文件出现在产物页底部“可能的产物”区,可一键“收为产物”或“忽略”;“本轮产物”下方提示本轮有几个这样的文件。隐藏目录、node_modules、日志与编译中间文件等不会列入。
  • 删除会话同时删除其文件快照;分支会话复制分支点之前登记的文件产物与原型。
  • 会话中的原型卡片(生成中的紧凑卡与“本轮产物”)写明“原型 · N 屏”并用手机图标,与产物页一致;画板缩放、拖动后的屏幕不再盖住顶部标题栏。

会话请求头

  • 提供商可开启“会话请求头”(默认关闭,已有配置升级后保持关闭)并设置请求头名称,默认 x-opencode-session;名称须是合法 HTTP 字段名,且不能是鉴权、内容类型等保留字段。模型可设为跟随提供商、开启或关闭,模型设置优先,可以只给同一提供商下的个别模型开启。
  • 开启后,对话的每轮请求、工具续请求与自动重试、标题、历史摘要与压缩、工具结果摘要、会话记忆与图谱抽取都带同一个匿名会话标识,并发送 User-Agent: Nexara/<版本>;分支会话与子代理各用自己的标识。标识为本机随机盐与会话 ID 的 SHA-256 前 32 位十六进制,不暴露内部会话 ID。
  • 连接测试、模型目录、嵌入、重排、查询改写、文档图谱与会话外生图不发送会话请求头,也不改 User-Agent。
  • 三类设置随备份导出与恢复(恢复后只保留备份中的值);匿名盐存于不备份目录。

分段滑块标签、菜单弹出与全屏页状态栏

  • 全站单选标签改为分段滑块:浅色轨道里一块亮色滑块随选中项滑动,触控高度 48dp(终端页签 40dp),选项多时整条横向滚动。用于产物页分类筛选、数值弹层预设、Linux 软件包筛选、SSH 认证方式、引导页协议类型与终端页签。多选与开关类标签(图谱类型筛选、参数方案、SSH 终端 Ctrl、引导页名称建议)改为同一视觉语言的独立标签:未选中是轨道色底,选中换亮色底与细描边。产物页筛选条与顶部留出间距,不再顶边。
  • 选项菜单弹出不再顿一帧:弹层先完成两帧绘制再开始淡入缩放,入场 180ms、退场 110ms。
  • 打开原型画板、页面产物与文件产物时,顶栏底色延伸到状态栏下方,状态栏图标随主题明暗变色,浅色主题下不再出现白底白字的状态栏;提示词全屏编辑器同样处理。

会话入口统一:产物整页、菜单去重、任务页签

  • 界面上的“画布”统一改称“产物”,检视器的“运行”页签改称“任务”;AI 侧的工具名与说明不变。
  • 窄窗口(手机竖屏、折叠屏外屏)会话已有产物时,顶栏选项菜单第一项是“产物”(带数量),打开与文件、浏览器一致的整页列表,返回回到会话;顶栏按钮不因产物增加。原先的上滑列表面板移除。宽窗口仍在检视器“产物”页签。
  • 顶栏选项菜单去掉“画布”与“运行模式”两项:运行模式从标题下方状态行切换,菜单只保留会话设置、会话提示词、清空、重命名与删除。

会话界面视觉细节

  • 浅色主题下输入浮岛四角不再露出直角阴影:浮岛的尺寸动画会按矩形裁剪,原先把圆角投影切成了直角,现在移到浮岛内部。
  • 窄窗口(手机竖屏、折叠屏外屏)的上下文圆环不再显示百分数,只留圆环,点按区域保持 40dp;宽窗口仍显示数字,读屏与弹出面板给出具体数值。
  • 上下文面板去掉固定的“最近 N 轮始终保留”,“已折叠 N 条工具结果”只在确有折叠时显示。
  • “引用内容”浮窗外框与内容改为同一底色,顶部拖动条一带不再出现色差。

会话界面补齐振动反馈

  • 全站菜单(消息长按菜单、回复的“更多”、顶栏选项、文件与画布菜单等)点选时轻振;复制类菜单项用确认档。单选设置行在选中项变化时轻振,点已选中的项不振动。
  • 会话界面:检视器页签切换、侧栏展开与收起、运行详情页签切换、附件“+”菜单与选项、执行模式盾牌、模型选择、上下文圆环、斜杠命令选择、文件多选勾选都有振动;“重新生成”和“立即压缩”用确认档。
  • 打开整页或面板的普通导航点按(返回、浏览器与文件入口、运行坞展开)以及展开折叠工具步骤这类高频操作保持不振动。所有振动仍受“外观 → 触感反馈”开关控制。

模型请求超时改为可配置,修复长回复在 120 秒被截断

  • 对话回复此前受“请求总时长 120 秒”限制,模型持续输出超过 120 秒也会被切断。现在推理请求不限总时长,只在超过设定时间没有收到任何新数据时判定超时。
  • 设置 → 默认模型 新增“等待响应超时”,分对话、图像、嵌入、重排四类,默认 120 / 120 / 30 / 30 秒,可选预设或自定义 5–1800 秒;改动后下一次请求即生效,无需重启。连接测试与模型目录更新的超时不变。
  • 会话设置“参数”页的“流式超时”调节移除,统一由上述全局设置决定。

首次引导重制:单次连接、Linux 安装与动效

  • 引导流程改为 语言 →(侧载 arm64)Linux → 连接 AI → 选模型 → 创建助手 → 开始第一次对话。原来“填写提供商”和“测试连接”是两个步骤,都打开同一张提供商表单,新建的提供商测试结果又没有记录,用户会被要求重复测试;现在合并为一个连接页,填好地址与密钥后点一次“连接”,只探测一次、成功后只保存一次,探测失败不写入任何配置。旧版本停在“测试连接”步骤的用户升级后回到连接页。
  • 连接页的常用服务改为固定列网格(OpenAI、Anthropic、Gemini、DeepSeek、通义千问),其它服务、自定义端点与本地推理放进可搜索的“更多服务”底部面板,鼠标与触摸都能直接点选;字号放大时每格等宽、不会独占一行。
  • 侧载版 arm64 设备在引导中提供内置 Linux 安装:可选附加包、显示所需空间,安装在后台进行,顶栏胶囊显示进度,点开查看分步状态与输出;失败可从中断处重试或跳过,完成页再次提示未完成的安装。Play 版与其它 ABI 不出现该步骤。
  • 新增粒子字标开场、选择语言时粒子散开、步骤间共享轴转场、元素依次上浮、连接线流动与助手呼吸光效;系统关闭动画时全部退为静态。宽屏(折叠屏内屏)左侧显示字标与纵向进度轨道。深浅色、中英文、1.3 倍字号、360dp 宽度与折叠屏内屏均有截图基线;模型列表改为惰性列表,数百个候选也只组合可见项。

菜单、上下文面板与任务页签视觉重做

  • 全站悬浮菜单换成统一外壳:16dp 圆角、浮层阴影、6dp 内衬,菜单项按压时显示 10dp 圆角高亮,删除等操作以分组线隔开并用错误色;按钮触发的菜单按按钮所在半边对齐,下方放不下时翻到上方。会话、助手、消息气泡、文件与画布卡片的长按菜单改为从手指按住的位置长出,菜单开着时对应行铺一层浅色高亮。
  • 上下文用量面板改为贴着圆环向上弹出:环形总览带自动压缩阈值刻度,写清已用、上限与剩余;分色构成条与图例列出系统指令、历史摘要、对话与知识增强,底部是“立即压缩”。
  • 附件 + 号菜单改为彩色图标块加一行说明(图片 / 从相册选择,文档 / PDF、Word、文本等)。
  • 任务页签顶部改为状态卡:状态标签(进行中带呼吸圆点)、大号用时、标题与“计划步数 · 后台任务运行中 / 已结束”摘要;后台任务按“运行中 / 已结束”分组,运行中是带终端风格实时输出与停止按钮的卡片,已结束收成紧凑列表,非零退出码显示红色“退出 N”。
  • 检视器底栏页签之间、任务页签的计划 / 后台 / 状态之间切换改为按页签顺序横向过渡,不再硬切;文件、Git 与浏览器之间切换时页面只组合一份。
  • 修复对话首页会话的时间与排序不随新消息更新:会话时间改为“最近一条消息的时间”,新消息到达时同步更新;保存草稿、置顶、改标题与运行状态变化不再改动它,重启后也不会因保存草稿而跳到前面。
  • 修复只是打开过的会话会跳到首页最前:进入旧会话时补写运行模式、打开文件面板时认领或复核会话根目录,都不再改动会话的最近消息时间。
  • 修复工作区文件长按进入多选时同时出现两条选择栏:外层浏览器已有“已选 N 项”操作栏时,文件面板不再叠出一条恒为“已选 0 项”的批量栏。

会话列表生成状态与离开会话的一致性

  • 对话首页的会话列表标出正在生成的会话(三点波浪替换时间,系统关闭动画时静止),等待批准的显示“待批准”,读屏同时播报状态。
  • 修复离开会话再回来时思考计时从零开始:计时按消息记在进程内,回来接着走;离开期间结束的思考不补记时长,以免把离开的时间算进去。
  • 修复手动删掉的草稿在切换页面后复活:离开会话时先同步改内存会话再不可取消地落库,不再因 ViewModel 清理把写入取消。

浏览器地址栏可输入

  • 内置浏览器地址栏点按即可编辑(进入时全选当前网址),键盘“前往”打开:网址原样打开,缺协议的域名、IP 与 localhost 补 https,其它内容用 Google 搜索;javascript:、file: 等非网页协议只作为搜索词。Agent 还没打开网页时也能自己先打开;从地址栏前往与点后退、刷新一样视为接手,Agent 暂停到交回。

界面细节:宽屏顶栏去重、检视器底栏、编辑器放弃确认与展开保留草稿

  • 宽屏(折叠屏内屏、平板)会话顶栏只保留检视器侧栏开合与更多菜单:文件、画布与浏览器图标与侧栏常驻页签重复,已移除;侧栏收起时边缘条仍带运行、Git 改动、画布数与浏览器状态角标,画布也可从更多菜单打开。手机窄屏顶栏保留文件与浏览器入口。
  • 宽屏检视器的页签、触摸锁、加宽与收起移到卡片底栏,收起在最右下角;收起后的边缘条改为贴右下、停在输入区上方,展开的内屏双手持握时拇指即可切换,不必伸到屏幕顶部。卡片较窄、页签又多时页签区横向滚动,收起按钮始终可见。
  • 提示词编辑器有未保存修改时返回,确认框改为“放弃未保存的修改?”,按钮为“放弃修改 / 继续编辑”。
  • 修复会话输入框中未发送的文字在折叠屏展开/合上或旋转后被清空:界面重建时重新载入同一会话不再用落库草稿覆盖当前输入,也不再重置生成中状态、流式内容、错误提示与删除撤销(此前生成中展开会让停止按钮消失,直到下一次状态更新)。

提示词编辑器重制

  • 提示词与文本文件编辑器改为整页编辑(窗口铺满整屏,包括状态栏与手势条区域):顶栏是返回、标题与视图切换。手机在“编辑 / 预览”间切换,底部是格式工具条与整宽“保存”按钮;折叠屏内屏与平板(宽度 600dp 起)默认“分栏”,左写右看,保存在顶栏,也可切到只编辑或只预览。
  • 编辑区改用正文字体,去掉行号栏,大字号下不再出现等宽字体折行错乱;标题、列表与引用符号、加粗、行内与围栏代码在输入时轻量高亮,文本本身不变。
  • 工具条提供标题(无 → 一级 → 二级 → 三级 → 无 循环)、列表、加粗、行内代码与撤销(宽屏另有重做),格式操作可撤销;右侧显示“已修改”与词数,宽屏另显示行数。
  • 编辑 Linux 脚本等非 Markdown 文件时保持等宽字体,不做高亮也没有格式按钮。七个调用入口(会话提示词、Agent 编辑与创建、Agent / 全局 RAG 摘要模板、知识图谱抽取提示词、Linux 文件)自动换用新界面。

修复:生图等辅助模型调用把内部模型 ID 发给上游

  • 生图工具此前固定使用主提供商的地址与密钥,并把应用内部的模型标识(提供商ID::模型名,如 default::sensenova-u1.5-lite)原样作为 model 发出,NEWAPI 等网关因找不到该模型名返回 503 model_not_found。现在按所选图像模型解析所属提供商,地址、凭据与远端模型名来自同一提供商;远端模型名原样发送,不做字符串裁剪。
  • 生图、嵌入与 Rerank 客户端此前只设了总超时,读超时沿用 OkHttp 默认的 10 秒,上游十几秒才开始回包的生图会以 SocketTimeoutException 失败(模型 ID 修正后真机复现);现在读超时改由“等待响应超时”设置决定(见上一节)。
  • 同步审查全部模型请求路径:聊天、流式、Responses、摘要、标题、知识图谱抽取与子代理原本已按路由解析;嵌入、Rerank、查询改写与引导页候选模型探测改为同样的解析方式。
  • 所选模型或提供商不存在、已禁用、缺少凭据或协议不支持时明确报错且不发请求,不再回退到主提供商;Rerank 不再借用嵌入或主模型配置,失败时保留原召回顺序。选择了嵌入预设时以预设为准,历史手动嵌入配置只在未选预设时使用;长期持有的嵌入客户端在切换预设后立即使用新配置。

会话界面:触摸锁、浮岛执行模式与顶栏工作区

  • 运行坞右侧原来的“生成时亮屏”开关改为触摸锁(宽屏没有运行坞,锁在右侧检视器顶栏与收起后的边缘条):生成中点锁进入全屏黑色锁定界面,只显示运行状态(执行中 / 需要你批准 / 已完成)、计划进度与用时,有具体计划步骤时另起一行显示,任务照常执行,返回键和其它触摸都被屏蔽,生成结束后锁保持到手动解锁。解锁方式在 设置 → 外观 → 触摸锁解锁方式 中切换:长按锁 1.5 秒(默认,带进度环)或把锁拖到轨道尽头(不到九成松手回弹),从右到左语言下方向镜像。
  • 回复生成期间屏幕始终保持常亮,外观设置中的“生成时保持亮屏”开关移除。
  • 输入框浮岛“+”右侧新增执行模式盾牌按钮,点开在“工作区 / 完全访问”间切换,每项只有标题与一行短说明;完全访问时换成琥珀色警示盾牌。仅在开启工具时显示。
  • 工作区状态移到会话标题下方的状态行,与运行模式、Git 并列;点开是“Agent 可达范围”面板,其工作区一节新增“切换”(不可用时为“重新选择”,生成中或有待审批时禁用)。资源管理器文件页顶部的工作区栏移除,文件浏览获得完整高度;工作区不可用时文件页直接说明原因。状态行宽度不够时依次收起 Git 分支名、把 Git 收成图标、把运行模式收成图标,工作区名称取剩余宽度。
  • 助手回复下方不再显示“N 轮 · N 次调用 · Token · 用时”统计行;这些信息已在轮次顶部与模型时间的生成统计中提供。

内置浏览器 P0:Agent 在应用内操作网页

  • 新增 Agent 浏览器:Agent 可用 browser_open、browser_snapshot、browser_click、browser_type 四个工具在应用内打开网页、读取页面、点击和填写文本框,无需审批。四个工具在 设置 → 工具设置 → 内置工具 的“联网”分组中,可单独关闭。页面在系统 WebView 中运行,使用独立配置文件“nexara-agent-browser”(androidx.webkit 1.18.0 ProfileStore),Cookie 与登录状态跨会话保留、与其它应用隔离;第三方 Cookie、文件访问、下载、弹窗、权限申请与非 http(s) 跳转一律拒绝。目标地址与 web_fetch 共用网络访问判定,局域网与本机需白名单,tailnet 地址不支持。
  • 读取页面时注入脚本生成可访问性快照:可操作元素带角色、名称、状态与稳定编号(如 e12),同站链接只写路径,元素清单控制在约 8000 字符内以免结果被转存;可选读取正文,按 6000 字符分段。页面内容作为不可信数据提供给模型。
  • 密码、支付卡与验证码字段只由用户填写:Agent 对这些字段调用 browser_type 时输入内容被丢弃,浏览器转为“需要你登录 / 填写支付信息 / 输入验证码”状态并以橙色描边标出字段,用户填好后点“完成,交回 Agent”继续,Agent 只得知用户已处理。快照中这些字段的取值始终隐藏。敏感字段按输入类型、autocomplete 与字段名识别,页面可以篡改自身 DOM,识别属尽力而为。
  • 会话界面:顶栏常驻地球图标,进入浏览器整页(手机)或检视器“浏览器”页签(宽屏,可加宽覆盖会话),还没打开网页时显示空状态;地址栏左侧“关闭”回到会话,右侧是后退、前进与刷新(不可用时置灰),点导航按钮与触摸网页一样视为接手;Agent 操作时图标带主色圆点,需要你处理时为橙色。地址栏下的状态条显示“Agent 操作中 · 点击 e12「搜索」”并可“接手”,接手后 Agent 暂停直到“交回 Agent”。执行步骤以“打开网页 · 主机 / 读取页面 · N 个可操作元素 / 点击 · 名称 / 输入 · 文本”逐行显示,点行即打开浏览器;挂起的交接显示为橙色“需要你处理 · 登录页”。
  • 需要支持多配置文件的 WebView;版本过低时浏览器页显示当前版本与“前往更新”,工具返回 BROWSER_UNSUPPORTED。每个会话一个浏览器页面,最多同时保留 3 个,浏览器状态不跨应用重启保存。

16 KB 页大小兼容:原生库对齐

  • 侧载渠道本地终端的 libtermux.so 改为从 Termux terminal-emulator v0.118.0 原样源码以 16 KB 页对齐重新编译,替换上游 AAR 中按 4 KB 对齐的预编译库;JNI 接口不变。两个渠道的 64 位原生库现已全部 16 KB 对齐,16 KB 页设备不再进入页大小兼容模式,4 KB 页设备上的调试包也不再弹出“Android 应用兼容性”对话框。
  • 项目 CMake 对所有共享库(含推理开启时的 llama/ggml)统一加 16 KB 最大页链接参数;内置 Tailscale 的 Go 构建显式指定 64 KB 段对齐(产物与此前一致)。
  • 新增 scripts/ci/check-native-page-alignment.py,逐个检查两个渠道 APK 中 64 位 ELF 的 PT_LOAD 对齐,Android CI 与发行工作流在构建后执行。对话框中大量“未知错误”条目是系统把已对齐库也列入清单所致,排查说明见 docs/distribution-builds.md。

长期记忆:助手主动记住跨会话信息

  • 新增用户级长期记忆。助手认为值得跨会话记住时,会直接调用 memory_save 写入(用户偏好、对协作方式的纠正、项目事实与约束、外部资源位置),过时或有误时用 memory_forget 删除;写入不需要审批。所有非私密助手共享同一份记忆,每轮作为资料(不是指令)注入系统提示,正文合计超过 6000 字符时较旧条目只列标题,可用 memory_read 读全文。上限 200 条,疑似凭据(密钥、令牌、私钥、密码)拒绝写入。
  • 会话里每次写入显示为一行“已记住 / 已更新记忆 / 已忘记 标题”,回合完成收起过程后仍留在摘要下方,旁边有“撤销”:撤销新建即删除,撤销覆盖写回旧内容,撤销删除按原编号与时间恢复;记忆之后又被改过时不再提供撤销,已撤销的显示“已撤销”。删除会话、删除消息、撤销或重新生成某一轮都不会删除这一轮写入的记忆。
  • 设置 › 知识与检索 › 长期记忆:总开关“允许助手主动记忆”,按“关于你 / 协作反馈 / 项目 / 资源指引”分组列出全部记忆,显示来源助手与日期,可搜索;点开可改类型、标题与内容或删除(删除后可撤销)。
  • 助手编辑页的“与其他助手共享记忆”改为“私密助手”开关:开启后其他助手读不到它的对话记忆,它也不读写长期记忆。会话关闭工具或长期记忆总开关关闭时同样不注入、不提供记忆工具。
  • 数据库升级到 v28(新表 long_term_memories,无会话外键),备份格式升级到 v9 并兼容旧备份。

页签与导航:统一胶囊样式与主色选中态

  • 底部导航、宽屏侧栏导航与全站胶囊页签的选中项改为主色淡染底色配主色文字(深色 28%、浅色 16% 叠在容器上),选中底色与容器的对比度从约 1.1:1 提升到深色约 2:1,文字对比度不低于 4.5:1。
  • 文档编辑器的编辑 / 预览 / 分屏、检索设置的配置预设、服务商 API 来源三处由 Material 分段按钮改为胶囊页签;后两处是表单选项,读屏按单选按钮朗读。当前值不在选项中时不显示选中项。

知识图谱页:会话视角与平面风格画布

  • 视角改为“全局 / 文档 / 会话”三段,使用全站统一的胶囊页签。会话视角列出有对话图谱的会话(轮数、实体数),选中后显示从该会话抽取的实体与关系;底部轮次条按轮显示抽出的实体数,点一轮只亮该轮实体,并给本会话中首次出现的实体加“新”角标。页面注明抽取边界:只抽取提问与最终回复,思考与工具调用不进图谱。原“概念”视角由类型筛选取代:按图中出现的类型(人物、组织、地点、事件、物品、概念、文档、其它)多选筛选。
  • 画布改为平面风格:实体统一为圆形,类型由颜色与内部图标区分,关系多的枢纽带轨道环,连线为带方向点的轻弧线,点阵背景。节点尺寸按屏幕 dp 计,缩小看全图时仍可辨认;布局展开期间自动适配视野,手动平移缩放后不再接管。
  • 点实体后它与一跳邻居保持全亮、关系名沿线标出,并移到详情面板上方;面板列出来源文档、出现的会话轮次(可“打开”进入该会话)和关系,点关系跳到对应实体。搜索移到顶栏,选中结果后在画布中定位(不在当前子图时先展开其邻居)。
  • 数据层新增按会话的子图、搜索与邻居展开(sessionId,与文档范围互斥),以及会话选项、会话轮次(含首次出现实体)和实体来源查询;均只计存活的会话证据,结果有上限,无数据库结构变化。

会话自动跟随

  • 生成中只有往回看(向下拖动查看更早内容)才停止跟随最新内容;向尾部拖动不再打断跟随。停止跟随后,把列表推到底,或滑回尾部附近(离跟随位置 48dp 内)松手,即恢复跟随,不必再点回底按钮。

Linux 命令:实时输出、自动转后台与交互输入

  • Linux 会话的命令在伪终端中运行:Python、C 程序与 gh 等按终端判断行为的程序逐行输出,实时输出面板不再停在“等待输出…”直到命令结束。输出去掉颜色等控制序列,进度条只保留最终一行;stderr 并入 stdout,结果中标明。
  • 前台命令运行 15 秒仍未结束时转为后台任务继续运行(同一进程,不重启),Agent 立即拿到已有输出,例如 gh auth login 的登录链接与验证码,转告你后再等待;实时面板继续显示到命令结束。yield_after_seconds 可调整或设为 0 关闭。
  • 新工具 job_input 向运行中的任务写入文本、回车或 EOF,用来回答登录、确认等交互提示;工作区档逐次审批并在审批卡显示将写入的文本,完全访问档免批。
  • 执行工具参数不合格时说明具体字段、期望与实际类型(例如“background 应为布尔值,收到字符串”);"true"、"60" 这类可无歧义转换的字符串直接按转换值执行并在结果中注明。参数或工具名校验未通过的调用此前只把错误回传给模型、会话里看不到,现在与普通调用一样显示工具卡片和错误原因。Linux 会话里 shell_exec 的说明不再写成系统 /system/bin/sh。

检视器文件页:长按改名、移动、删除

  • 会话私有工作区的文件页(会话检视器“文件”页签)与目录工作区、Linux 文件页使用同一套操作:长按条目进入多选,底部选择栏提供移动、重命名(单选时可用)、删除;移动先剪切,进入目标文件夹后点“粘贴到此处”,原文件夹、被剪切的文件夹本身及其子文件夹不能粘贴。删除确认后移入回收站,可在“回收站”恢复。部分失败时提示失败数与首个原因,剪贴板只留下失败的条目。
  • 改名和移动保留文件身份与版本历史;改名后受影响文件按新名称重建检索索引,仅换文件夹不重建。生成中或等待审批时拒绝操作并提示稍后再试。

文件管理、软件包页与搜索、对话框统一

  • Linux 文件页与会话目录工作区共用同一套文件管理部件:路径行以 ~ | / 分段胶囊开头(~ 为 Linux 主目录、/ 为整个根目录,当前起点实底),其后是相对该起点的各级目录,取代原来的“切换”按钮与“上一级”箭头;不在起点时列表首行是“上一级”。排序移到路径行下方右侧,“显示隐藏文件”与“在此处打开终端”收进顶栏“更多”。多选底栏与目录工作区相同:复制、移动、重命名、压缩、在终端打开、删除,全选与修改权限在已选数量右侧。
  • 二级页面的搜索统一为顶栏形态:点顶栏放大镜后标题位置换成搜索框,返回先退出搜索并清空查询。Linux 文件页按名称筛选当前文件夹(进入其它文件夹时清空);软件包页同样改为顶栏搜索。检视器文件页顶部改为“文件”标题加放大镜、导入、回收站,点放大镜后整行换成搜索框。搜索框与主页同一组件,高度 48dp,键盘“搜索”键收起键盘。
  • 软件包页刷新与安装时不再在列表上方插入不断增长的输出卡片:顶栏下方固定 2dp 进度条,状态行固定高度并显示当前步骤,“查看输出”打开最近一次操作的输出面板;“全部更新”始终占位,没有可更新项时置灰,列表不再上下跳动。
  • 全站对话框只用一种:确认、提示与单字段输入(重命名、新建文件夹等)都用同一组件,自带窗口、外观一致。Linux 环境页的重置与卸载确认、软件包移除确认此前直接画在页面内容里,现在是正常的弹出对话框。音频、普通文件与媒体不可用占位的面板改用全站统一的上滑面板外壳,宽窗口下居中显示。

提示词:空提示词不再附带内置身份

  • 助手提示词与会话提示词都为空时,发给模型的系统提示词不再以“You are Nexara…”开头,也不再附带“准确直接、不确定就说明”等内置行为要求;只保留工具、权限与运行环境说明。预置 Coding Expert / Creative Writer 不再在运行时暗中补入默认提示词:新安装时这两段提示词直接写入助手的提示词字段,可在助手编辑页查看、修改或清空;已有安装中提示词为空的预置助手按空提示词处理。

会话运行模式:Linux 与内置固定到会话

  • 每个会话固定一种运行模式:Linux(侧载版,Alpine 中的完整命令行,可装软件包)或内置(受限工具,Play 版只有内置)。模式只在用户手动切换时改变,Linux 环境失效时不再静默改用系统 sh 或内置 Python,命令明确失败并说明原因。新会话按“新会话默认模式”创建(Linux 未就绪时为内置);升级前的旧会话在 Linux 就绪时首次进入即固定为 Linux,否则请你选择。
  • 进入 Linux 会话但环境不可用时出现检查点:先无损修复(只补缺失的基础文件与基础包,不升级、不动 /root 与配置);不能无损修复时可查看损失摘要后重置,或把 /root 下的项目导出到会话专用空间或外部位置;每一步都可改用内置模式。会话顶栏标题旁显示模式标识(环境不可用时为警示样式),会话菜单可手动切换;应用启动时会话列表顶部提示受影响的 Linux 会话数,不阻止进入应用。
  • Linux 会话的 Agent 使用 shell_exec 与 Linux 路径的文件工具:当前主工作区为 /workspace,会话私有目录固定为 /home/session(各会话隔离,绑定会话私有空间,Linux 重置不影响),真实路径挂载为 /mnt/<别名>;内置模式的受限执行工具与 SAF 挂载对 Linux 会话隐藏,Linux 会话添加外部文件夹只能按设备路径。终端与后台任务前后对账 /home/session 中的改动。
  • Linux 会话中生图、下载与画布返回给 Agent 的路径是 /home/session/… 或 /workspace/…,提示词里的默认落点同样使用 Linux 路径,不再出现内置模式的 /session 入口;回复里引用 /workspace、/home/session、/mnt/<别名> 以及 Linux 环境中其它普通文件(只读)的图片与文件卡片可以显示、打开和保存。切换运行模式后已有画布仍写回原来的位置。画布卡片显示的路径随会话模式呈现;画布镜像不在当前主工作区时不再提供“在工作区中定位”。
  • Linux 安装只固定装 bash、ca-certificates、curl;git 与 Python 3(含 pip)为默认勾选的附加包,管理页可补装。命令因缺少程序退出(127)时提示对应的 apk add,由 Agent 申请安装,不自动安装也不切换环境。
  • 数据库升级到 27(会话新增可空 run_mode),JSON 备份格式升级到 8,旧备份恢复后运行模式为空、按旧会话规则处理。
  • Linux 会话的命令审批卡显示为“Linux 命令”并说明 Alpine 中的访问范围,不再沿用内置命令的说明;资源管理器、可达范围与工作区切换记录中,Linux 会话的私有空间称作“会话目录”(内置模式仍为“会话专用空间”);首次安装 Linux 的进度标题写作“正在安装”。会话私有空间里没有远端的 Git 仓库,Git 面板不再以目录哈希名作标题,改以分支名作标题。
  • 会话顶栏改为标题独占首行,运行模式(Linux / 内置 / Linux 不可用)与 Git 分支、改动数合并为其下的状态行:标题再长也不会把模式标识挤到最右侧,模式与分支仍可分别点按。

资源管理器与 Git 变更改为二级页面;宽窗口改为浮动检视器;启动自检提醒改版

  • 资源管理器与 Git 变更不再是无法下滑关闭的全高上滑面板:手机上以整页二级页面打开(顶栏返回箭头,系统返回逐层后退)。从资源管理器进入 Git 变更时叠为第二层,返回后资源管理器的目录位置保持不变;生成中出现审批时,二级页面暂时让出、处理后恢复。
  • 折叠屏内屏与平板(宽 ≥ 600dp、高 ≥ 480dp)不再用竖线切开会话:原来常驻右侧的运行侧栏与停靠面板合并为一张浮动检视器卡片,含“运行、文件、Git、画布”四个页签。运行页签显示完整的计划、后台任务与状态面板(与手机上的运行详情同一份内容),文件与 Git 页签就是资源管理器与 Git 变更,画布页签列出本会话画布。检视器可加宽到 560dp 阅读差异与长文件;收起后变成贴在右缘的边缘条,只留图标与角标(运行中、待批准数、Git 改动数、画布数),没有任何运行内容、改动与画布时完全隐藏。会话让位后仍有 480dp 以上时(平板横屏)会话整体让位,否则(折叠屏内屏)检视器浮在会话右缘之上、底边停在输入区上方,会话不动;浮动时新的审批到来会先把检视器收为边缘条,避免盖住审批卡。宽窗口顶栏直接显示文件、画布与检视器开合图标,Git 状态行点按切到 Git 页签;返回键先在检视器内逐层后退,再收起检视器。
  • 宽窗口下全站的上滑面板改为居中的圆角对话框(最宽 640dp,全高面板占窗口高度的 88%),点外部或返回关闭,不再从底边升起一整屏。
  • 检视器细节:画布页签没有画布时,空状态与运行、Git 页签一样居中;页签与边缘条上的计数角标贴在图标右上角外侧,不再压住图标;大字号下审批提醒标题可占两行,运行详情底部“标记已完成 / 继续处理”按钮可换行且两按钮等高,手机上的运行详情同样适用。
  • 宽窗口下短选择面板改为贴着触发控件弹出的浮层(无遮罩,点外部、返回或再点一次触发控件关闭):输入区模型按钮弹出“模型速选”(可搜索,选中即生效,底部“更多会话设置”打开完整会话设置的参数页);回复底部的记忆状态弹出“本轮记忆”;顶栏运行模式标识与菜单里的“运行模式”弹出模式切换;会话设置工具页的“执行模式”贴着该行弹出。浮层朝窗口中部展开,空间不足时换到另一侧并限高滚动,输入法弹出时随输入区上移。手机(窄窗口)仍为底部上滑面板,菜单里的“会话设置”仍打开完整对话框。
  • 折叠屏内屏与平板(去掉导航栏后宽 ≥ 700dp、高 ≥ 480dp)的设置页分为两列:左列是设置目录,当前条目高亮;右列显示所选设置页,默认“外观”,之后记住上次的条目。右列内的下层页面(如提供商 → 模型列表、工具设置 → Linux 环境)在右列里前进,系统返回只在右列内后退;右列顶层页不显示返回箭头。终端、文件、知识图谱等整页内容仍全屏打开,返回后右列停在原处;切换主标签后回到设置,右列层级保持。折叠后右列层级变为外屏上的逐层整页,展开时外屏上从设置目录打开的整页收回右列,开合都停在原来的页面。手机与 600–779dp 窗口保持单列整页。
  • 宽窗口下设置页的短单选也改为贴着所在行弹出(无遮罩,点外部、返回或再点一次该行关闭):主题模式、语言、提供商协议类型、模型类型、tailnet 设备、联网搜索深度与查询改写策略。智能体记忆策略等组合选择以及 SSH、WebDAV 等编辑表单仍为居中对话框;手机上仍为底部上滑面板。
  • 会话列表的启动自检提示、Linux 环境不可用提示与会话内“工作区暂停写入”提示改为内嵌圆角提醒卡(图标徽标、标题与说明两层、右侧箭头),不再是整条橙色横幅。
  • 启动自检问题面板改为分组列表:每条显示问题、受影响范围与去掉异常类名后的可读原因(完整原文仍在诊断记录),重试与放弃改为右对齐的紧凑按钮,处置结果显示在对应条目内;“诊断记录”与“导出”改为轻量按钮,修正内容与面板外壳叠加的双重水平留白。

工作区身份:系统更新后不再被隔离为只读

  • 工作区根身份、私有索引与区域、创建归属记录、后台任务基线、备份与数据库恢复 journal、Skill 恢复和 Linux 来源身份改为“随机 nonce + inode”,不再包含设备号。系统大版本更新改变 /data 设备号后,工作区不会再因“根身份标记与目录 fileKey 不一致”在启动时被隔离为只读;把标记复制到其它目录或同一目录换了 nonce 仍会被拒绝。旧格式的工作区根认领在启动恢复时自动迁移:按旧算法逐字核验目录 nonce 与当前完整 fileKey 均吻合后,先把私有区(回收站、版本、创建归属等)移到新身份下,再把根认领与该根未完成的 journal 一并改写为等价新身份;根目录里仍留有 10 月 25 日之前版本写入的根标记文件(<uuid> 换行 (dev=…,ino=…))时,以标记为证据:标记 nonce 与认领一致、标记 inode 等于当前目录 inode、认领摘要等于标记中完整 fileKey 原文的摘要,三者都成立才迁移,事务提交后再把标记改写为新格式或删除。核验不过(nonce 不同、inode 不同或摘要不符)时文件、数据库与 journal 保持原样,启动自检说明“工作区根仍为旧版身份格式”。修复前这类标记会让新建会话直接崩溃(会话工作区父目录也带旧标记),已有会话的工作区被隔离;现在新建、打开会话时工作区身份或初始化失败只在会话内提示,会话照常可用。其它旧格式身份不迁移,恢复快照格式升为 3。

启动自检:问题只隔离受影响的范围

  • 启动恢复的工作区 journal、会话删除、回收站、旧根接管、工具台账、向量队列、后台任务、定时任务等步骤失败时只隔离对应的工作区、会话或子系统,应用照常进入:隔离范围内的写入(文件工具、命令、画布与媒体、后台任务,Linux 会话的文件工具、命令、终端与导出)被拒绝并说明原因,读取照常,其它范围不受影响;隔离只在本次进程有效,下次启动重新检查。
  • 会话列表与受影响的会话显示提示条,问题面板可重试、确认后放弃未完成的操作(保留磁盘与数据库现状并做一致性检查,不删除文件)、让 Agent 诊断(新建会话并附脱敏摘要,Agent 可用 app_diagnostics 与逐次审批的 resolve_startup_issue)、查看诊断记录与导出。
  • 只有数据库或备份恢复本身不可信时仍阻断,阻断页显示脱敏原因并可导出诊断。正式版新增不剥离的诊断记录(应用私有目录,限总大小滚动淘汰,集中脱敏密钥、令牌、URL 参数、正文与宿主路径)。诊断记录同时保留最多 4 层异常原因链及其调用位置(原因同样脱敏,固定的工作区身份与文件端口原因、系统调用 errno 描述可见),包装异常不再掩盖真正失败的检查。

工作区:不再存放应用内部文件

  • 会话专用空间、已登记工作区与外部挂载中不再散落应用内部文件:回收站、命令待执行标记、版本历史、根身份与后台任务日志移到应用私有存储;必须与用户文件同卷的暂存集中到根下唯一的隐藏目录 .nexara/。旧位置的内部文件在首次访问或启动时幂等迁移,失败不阻断启动、不丢数据;旧 journal 照常恢复。
  • 创建 .nexara/ 时在其中写一次内容为 * 的 .gitignore,之后修改、删除或强制跟踪都尊重你的选择;Git 面板不再强制过滤内部路径,Linux 启动不再改写 Alpine 的 Git 全局忽略文件,并一次性移除旧版本写入的受管块(保留你的内容)。后台合入冲突副本改放 background-conflicts/<任务>/。真实路径挂载中新建文件时若同名文件被同时创建,报告为冲突并保留双方内容。
  • 后台任务的“查看日志”在应用内显示日志末尾,Agent 经 job_status/job_wait 读取,不再暴露工作区路径。
  • 新画布镜像与未指定路径的媒体按集中规则落点:主工作区是已登记工作区且会话没有你添加的挂载时落在主工作区,否则落在会话专用空间(Linux 会话中为 /home/session);显式路径照常,已有画布镜像不随主工作区切换搬动。

内置 Linux:时区

  • Linux 命令、后台任务与本地终端的新进程继承设备当前时区(生成不依赖 zoneinfo 的 POSIX TZ;夏令时规则无法表达时退回启动时的固定偏移),date 与沙箱内 git commit 不再按 UTC 记录。

会话界面:真机核对修正

  • 运行坞只显示状态面板或只显示后台任务时,点按直接打开运行详情的对应页,不再总是落到计划页。
  • Git 面板中增删都为 0 的变更(如空文件)不再显示绿色“+0”,改为进入详情的箭头。
  • 暗色主题下画布页面若没有自带暗色适配(未声明含 dark 的 color-scheme 或 prefers-color-scheme 暗色规则),改按浅色页面排版并由系统 WebView 自动变暗(Android 13 起;Android 12 保持浅色页面),不再强加浅色文字,修复页面自设浅色背景(如表头)上浅字浅底看不清;画布 WebView 的 prefers-color-scheme 随应用浅色/暗色主题;画布工具说明提示模型声明暗色适配并成对设置背景与文字颜色。
  • 宽屏运行侧栏的宽度门槛从 840dp 降为 681dp(侧栏 320dp 加至少 360dp 会话列),折叠屏内屏(如 OPPO Find N5 约 690–810dp)展开后也显示侧栏。
  • 启动恢复遇到源与目标为同一路径的移动 journal(旧版本中把文件移入它原本所在的目录会留下这种记录)时直接收尾,不再判定为文件布局冲突并锁定在“安全恢复需要处理”。

会话界面:宽屏运行侧栏

  • 窗口宽度不小于 681dp(侧栏加至少 360dp 会话列)且高度不小于 480dp(折叠屏展开、平板)时,会话右侧常驻 320dp 运行侧栏:顶部是运行状态与用时(待批准时点按跳到审批卡),下面依次是计划进度与接下来的步骤、后台任务、状态面板前三项、Git 分支与领先落后、本会话画布;各区点按进入运行详情、Git 面板或画布。侧栏出现时输入框浮岛不再显示运行坞;只有一行运行状态、没有其它内容时,或横屏手机高度不足时仍用运行坞。

会话界面:Git 入口与面板

  • 会话工作区是 Git 仓库时,顶栏标题下方显示“分支 · 改动数 · ↑领先 · ↓落后”,长分支名从中间省略、计数始终完整;点开 Git 面板。进入会话、每轮生成结束与关闭面板时刷新。
  • Git 面板页头改为分支名、跟踪的上游(未设置或本地不存在时说明)、HEAD 与上次抓取时间,下方是领先/落后标签;页签为“变更 / 提交 / 分支”,变更行显示增删行数(二进制文件写明),未跟踪文件用“?”标记,分支页列出本地分支、提交标题与相对上游的领先落后。
  • Git 面板只读:标题为仓库名(取远端的“所有者/仓库”,不含主机与凭据;没有远端时为目录名),提交与推送直接告诉 Agent,由它运行 git 并在执行命令前请你批准。

Git 只读检查:分支跟踪、抓取时间与行数统计

  • 内置 Git 检查新增上游跟踪(领先/落后各上限 1000,遍历预算耗尽或历史缺失时标记为无法确定而非 0)、FETCH_HEAD 抓取时间、三组变更文件的增删行数(受文件数、读取字节与差异计算预算约束,二进制、符号链接、子模块、冲突等给出跳过原因)与本地分支列表;全程只读本地对象,不联网、不写仓库,旧输出缺字段兼容。

会话界面:画布卡锚定与本轮产物

  • 生成中,画布以紧凑卡(小缩略图、标题与“画布 · v1”)紧跟在创建或更新它的工具步骤下方,不再沉到整轮末尾;轻点打开该步骤产生的版本。
  • 回合结束后,正文下方汇总为“本轮产物”:上方灰底预览区放一张缩略图,下方一行标题与“版本 · 工作区路径”,长按保留打开最新版本、复制源码、在工作区中显示。
  • 缩略图先按 400dp 手机宽度排版再整体缩小到卡片大小,窄卡片不再把网页挤成单列或错位;加载中、读取失败时显示原尺寸占位。

会话界面:统一审批卡与会话内子代理审批

  • 审批卡改为统一版式:顶部类别条标出内置工具或哪类命令、执行位置与琥珀色风险标签;标题写“需要批准:动作”并保留确切工具 ID;命令或参数预览、类别说明、后台运行方式依次排列;“拒绝 / 批准”为等宽胶囊按钮,批准是唯一实心按钮。多项审批的后续调用各带类别条。
  • 子代理审批不再打断当前会话:正在查看的会话里,请求按子代理分组显示在会话流底部(子代理名称、任务与“等你批准”标签,内层同款审批卡,按钮为“拒绝 / 允许”),运行坞“待批准”跳转可直达;其它会话或非聊天页时仍以全局弹窗提醒。

会话界面:运行坞与运行详情

  • 输入框浮岛顶部原有的活动栏、计划面板、后台任务标签与状态条合并为一行运行坞:显示当前步骤(或等待审批、执行中、已暂停、计划已完成)、计划进度与整分钟用时,右侧是待批准跳转(含子代理待批准数)、后台任务与状态面板入口,下方 2dp 进度线。窄屏大字号时先截掉进度文字,保住当前步骤。
  • 点开运行坞进入运行详情:计划、后台、状态三页按有无内容出现;计划按顶层分组,完成的组折叠为一行,当前步骤高亮;“标记完成 / 继续处理”等宽并排;隐藏与清除计划收进右上角菜单。
  • 状态面板改为卡片版式:数值与进度两两并排,文本与列表占整行;Agent 刚更新的字段带“刚更新”,你手动改过的带“你改过”,点卡片编辑,移除面板在菜单中并需二次确认。
  • 调用过工具的回复下方显示“N 轮 · N 次调用 · Token · 用时”,统计取自该次回复的消息,结束后仍保留;点按打开本次详情(新增工具调用次数)。运行坞、运行侧栏与运行详情不再显示统计。
  • 运行用时取生成任务的开始时间,不再受旧会话或定时触发时用户消息时间影响。

Agent 工具缺陷修复(真机能力探测)

  • write_file、patch_file 的参数说明与运行校验一致:必须提供 expectedHash 或 expected_sha256 之一,私有工作区与挂载路径缺参时都返回结构化 MISSING_VERSION,指明从 read_file 的 Hash/sha256 取得;不自动补填。
  • move_file 在同一目录内改名不再失败;目标路径未变化时直接成功,不产生物理移动与虚假改动摘要。文件操作失败改报具体原因(目标已存在、条目不存在、权限不足、跨文件系统、跨工作区),未知异常只附异常类别,不回显物理路径。
  • calculator 支持 **、sqrt/abs/pow/min/max/round/floor/ceil/log/ln/log10/sin/cos/tan、PI/E 与 Math. 前缀,描述改为中文并列出限制。
  • exec_js 中 fetch 返回的 headers 提供标准只读接口(get/has/keys/values/entries/forEach、可迭代),同名多值响应头以逗号合并;按小写属性读取与 JSON.stringify 输出保持不变。
  • SSH/SFTP 报错区分连接被拒绝、DNS 失败、主机不可达、超时、认证被拒与缺少凭据,各给出中文处理提示;原有错误码保留。
  • 未选择图像模型时不向模型提供 generate_image;状态面板 list 字段接受单个非空字符串作为单项列表;画布工具描述要求页面在 320–420 CSS px 宽内可读、宽表格横向滚动。

内置 Linux 环境(侧载版)

  • 侧载版新增内置 Alpine Linux 3.24.3 环境(仅 arm64-v8a 设备):APK 打包源码构建的 proot(termux/proot 固定提交)与官方 minirootfs,在“工具 → 本机与远端 → Linux 环境”安装,无需 Termux 或 root。安装依次解包(校验 SHA-256)、初始化网络与证书(DNS 优先取当前网络与 VPN)、安装基础与所选附加软件包、创建工作区映射与运行诊断;中断后可从断点继续。附加软件包与运行模式见“会话运行模式”。Play 版不打包 Linux 制品,入口不显示。
  • Linux 会话中 shell_exec 与 shell 后台任务在 Alpine 中执行:会话工作区为 /workspace,有真实路径的挂载为 /mnt/<别名>,用户级技能为 /mnt/skills;后台任务创建时固定执行器,环境被重置或卸载时终止。
  • 环境管理页提供存储分布、清理下载缓存、诊断、重置(清空 /root 与已装软件包,工作区不受影响)与卸载;镜像源可选清华、中科大、阿里云、官方或自定义 https 地址并测速;软件包页支持搜索、安装、更新、移除,标出由 Agent 在哪个会话安装。
  • 新增本地终端(多页签、修饰键与额外按键行、只读查看后台任务输出)、Linux 文件浏览(排序、多选复制移动压缩删除、修改权限、文本编辑与冲突处理、十六进制预览),以及命令“完整输出”查看器(ANSI 着色、分段、搜索、截断说明、保存与在终端重跑)。系统“文件”应用中出现“Linux 主目录”,工作区选择器可选 /root 作为会话工作区。
  • 会话页:Linux 命令的审批卡显示“Linux 命令”类别与作用范围;工具详情标出 Linux 运行环境并提供“完整输出”入口;Agent 可达范围面板的 Linux 行可点按进入环境页。
  • 真机验收(OPPO PKH110,ColorOS 16.1)修正:“在终端重跑”不再显示握手命令的回显;终端设置 SHELL(装有 bash 时为 /bin/bash,否则 /bin/sh);生成的 /etc/resolv.conf 权限为 0644;系统“文件”中的“Linux 主目录”显示应用图标;存储占用统计跳过统计期间消失或不可读的文件,不再整次失败而留空,读取失败写入调试日志;Linux 接管 shell_exec 时,可达范围面板的路径说明改为 Alpine 视角,内置命令行改名为“内置 Python python_exec”。
  • 已知限制:Alpine 中原生 git 尚不能使用 Nexara 保存的 HTTPS 凭据与 SSH 桥;本地终端依赖的 libtermux.so 为 4 KB 页对齐;ColorOS 在应用退到后台后会冻结整个应用进程组(含 proot),前台服务也不能阻止,后台任务回到前台后继续运行,需要用户在系统设置中允许应用后台运行。

打包等宽字体

  • 两个渠道打包 JetBrains Mono NL 2.304(Regular、Bold,SIL OFL 1.1,无连字),APK 增加约 200 KB。终端(内置 Linux 与 SSH)、命令完整输出、聊天代码块与行内代码,以及路径、模型 ID 等原先使用系统 monospace 的文本统一改用该字体,不再受厂商字体主题替换影响(ColorOS 会把系统 monospace 换成非等宽字体);中文等缺失字形仍回落系统字体并按两格宽度对齐。终端方向键按钮保留系统字体显示。
  • 新增源码契约测试:除主题入口外不得直接使用 FontFamily.Monospace 或 Typeface.MONOSPACE;并校验打包字体 ASCII、制表符与常用符号同宽、粗细两档列宽一致。

终端页布局收紧

  • 环境与工作区说明移入顶栏标题下方;只有一个会话时不显示页签行,多个会话时页签高度收为 40dp。
  • 额外按键由三行 48dp 改为两行七列 40dp 网格(Esc / - | ~ ↑ 键盘、Tab Ctrl Alt ← ↓ →,↑ 与 ↓ 同列),键盘切换改为图标;页面上下留白收窄,键盘弹出时按键行紧贴输入法并隐藏底部说明。页面容器 NexaraPageLayout 新增可选副标题与主体内边距参数,其它页面默认不变。

浅色终端、文件页顶栏与文案精简

  • 本地终端的默认前景、背景、光标与 ANSI 16 色跟随应用深浅色(含种子色、动态取色与纯黑背景),修复浅色主题下白字落在白色终端区里看不见的问题;程序通过 OSC 序列自定义的颜色保留,终端复位后自动重新套用主题色。SSH 终端配色不变。
  • Linux 文件页顶栏标题固定为“Linux 文件”,副标题限一行,进出目录时下方路径与列表不再随文案长短上下漂移;路径栏最左侧新增“上一级”按钮,在 / 时禁用,系统返回手势仍可用。
  • 终端页去掉发行版与当前目录副标题(shell 提示符已显示),只在绑定会话工作区时标出“工作区:名称”;去掉终端与只读任务页签底部的说明。
  • 第二轮界面文案精简:会话设置“上下文”区与 Agent 记忆策略区删去与控件说明重复的页脚;压缩 Linux 环境、Agent 可达范围、外部文件夹、网络访问、Git 凭据、Termux、技能与资源管理器中 25 条偏长说明(中英文同步),保留权限、数据范围与不可恢复等关键事实。

移动工作流能力测试清单

  • 新增 docs/testing/mobile-workflow-capability-checklist.md,按基础能力、既有远端服务、端到端业务与故障变体组织测试,明确手机直接执行、服务调用和远端调度的交付边界。
  • 提供 15 项高频迭代精简回归、材料与服务登记、执行证据模板和产品/适配/环境缺口分类;清单不构成测试通过声明,不要求手机本地完成重型编译。

按范围授权:工作区与完全访问两档

  • 手动、半自动、全自动三种执行模式改为两档权限范围。“工作区”(默认)下,文件工具与隔离脚本只能访问工作区路径,路径内读写、移动、删除都免审批;shell_exec、python_exec、termux_exec、ssh_exec、ssh_session_open、ssh_session_send 逐条审批。“完全访问”下命令也免审批。两档下技能目录变更、schedule_create 与 SSH 主机配置都逐次审批,MCP 与 web_fetch 都不审批。升级时全自动转为完全访问,半自动与手动转为工作区。
  • 取消“始终允许”白名单(含设置页审批白名单)、脚本写入审批设置、挂载只读与全局挂载。已有白名单升级后清空;只读挂载转为可读写;全局挂载复制到每个现有会话后删除,此后新建挂载只属于当前会话。
  • 审批卡在标题下以类别条区分“内置命令 / Termux 命令 / SSH 命令”与“内置工具”:命令用强调色淡底与描边,写明以谁的身份运行、能访问什么;内置工具说明由 Nexara 按固定规则执行。子代理审批同样显示。
  • 系统提示词说明两档范围与命令审批规则,指出内置命令以 Nexara 身份运行、可访问全部应用数据,并列出数据库、shared_prefs、no_backup、用户级技能目录与诊断日志等关键数据,要求改动前在对话中取得用户书面同意;同时逐个列出本会话挂载,说明是只对文件工具可见,还是可被命令以真实路径访问。
  • 内置命令(含后台任务的 job_status、job_wait)结束后检测关键数据的新增、删除与替换,结果附 runtime_changes,聊天中在该工具行下方显示“改动了运行时关键数据”提示,最多列出 5 条路径;本轮完成后过程收起时,提示仍显示在过程摘要下方。应用自身的数据库日志文件、偏好设置备份与提交引起的改写不计入。
  • 外部文件夹面板的挂载行与 Agent 可达范围面板改为标注“命令可访问 / 仅文件工具”;添加表单去掉权限与适用范围分组,并按来源说明命令能否访问。Termux 设置页不再创建挂载,改为指引在会话的外部文件夹中授权 Termux 目录。Agent 可达范围面板中隔离脚本的说明改为“只能访问工作区路径”。

工作区三分类、目录文件操作与删除会话保留文件

  • 工作区统一为三类:会话专用空间(原“会话私有工作区”,随会话删除)、内置文件系统(原“Nexara 项目文件夹”,跨会话、卸载即删)、设备文件系统(原“共享存储文件夹”,Termux 可见、卸载保留)。选择工作区按这三组呈现,每组标题右侧用两个标签说明差异,取代逐行说明;会话专用空间也在选择器中,可直接改回。
  • 资源管理器顶部工作区栏改为一行:类型图标、当前工作区名称、类型标签,行尾是“Agent 可达范围”图标与“切换”。原先的两行说明、“改用会话私有工作区”链接与可达范围横条已去掉;目录根部不再重复显示工作区名。
  • 目录工作区(内置或设备文件系统)可在资源管理器中直接管理文件:长按进入多选,支持复制、移动、重命名、新建文件夹和删除。改名与移动在原处完成,不受大小限制;复制逐个文件流式写入,同名时自动命名为“名称 (2)”;不能把文件夹放进自身或其子文件夹。删除先备份到回收站,可在“回收站”页恢复;超出回收站容量(32 MB)的条目会询问是否永久删除。生成进行中或有待审批时拒绝文件操作。
  • 删除会话时,若会话专用空间里有文件,对话框显示文件数与大小,并默认“保留文件”:文件复制到内置文件系统的 session-年月日-时分 文件夹,以会话标题登记为工作区,与会话删除在同一事务中提交,失败时回滚、会话保持未删除;选择“一并删除”则与原先一样彻底删除。保留时跳过符号链接与特殊文件。
  • 资料页工作区列表:菜单改为“修改显示名称”与“移出列表”(文件不受影响);内置文件夹只在显示名与目录名不同时补目录名。可达范围面板、选择器与资料页去掉多处说明段落,命名规则只在名称不合法时提示。

Agent 可达范围与网络访问

  • 会话资源面板的工作区栏新增“Agent 可达范围”:按“工作区 → 路径 → 执行后端 → 审批 → 网络”说明本会话 Agent 此刻能读写哪些位置、/ 与 $NEXARA_WORKSPACE、/skills、/mnt 在文件工具、命令、Termux、SSH 中各指什么,五类执行方是否可用,当前执行模式与对本会话生效的“始终允许”条目数,以及各工具能访问的网络范围。面板只展示现状,不改变任何授权判定。
  • 设置 → 工具新增“网络访问”页,集中维护局域网与本机白名单,并按工具列出对公网、局域网、本机、tailnet 的访问范围;原脚本设置中的白名单入口移到这里,已保存的白名单原样保留。
  • web_fetch、media_fetch 与脚本联网改用同一套目标判定:公网直接放行;局域网与本机需加入白名单(web_fetch 原先一律拒绝,media_fetch 原先放行本机明文与局域网 HTTPS,现均改为需白名单);tailnet 经内置 Tailscale 代理访问,未连接时直接失败、不回退直连(web_fetch 与脚本原先不能访问 tailnet)。每跳重定向重新判定,连接只使用判定时解析出的地址;被拦截时工具结果附错误码和“设置 → 网络访问”指引。
  • web_fetch 收到非 200 响应时报告 HTTP 状态码,不再与策略拦截混用同一前缀。
  • Android 系统策略只允许明文 http 访问本机 127.0.0.1:三类工具对其它明文 http 目标在判定阶段就以 CLEARTEXT_BLOCKED 拒绝并给出指引,不再先要求加白名单;网络访问页与白名单编辑面板说明局域网服务需使用 https。
  • 经内置 Tailscale 访问 tailnet 时,目标证书不受信任(如自签名)报 TAILNET_TLS_ERROR,其它连接失败的 TAILNET_PROXY_ERROR 附带真实原因,不再一律提示“内置 Tailscale 未运行”。

定时任务与系统触发

  • AI 可用 schedule_create、schedule_list、schedule_pause、schedule_resume、schedule_cancel 在当前会话安排单次、固定间隔或五段 cron 任务,用于轮询、检查或提醒;创建无论审批模式都需要你批准,审批卡显示任务名、触发规则、提示内容与接下来三次触发时间。每次到点在会话中插入一条居中的“定时”触发行(可展开看提示),随后发起完整一轮回复,沿用会话当前的审批模式。
  • 限制:前台固定间隔最短 1 分钟,cron 按表达式执行;重复任务退到后台后,侧载版精确闹钟间隔至少 5 分钟、系统择时至少 15 分钟,权限变化只影响后台登记,不改写前台计划。单次任务可用 in_minutes(1–10080 分钟倒计时,审批卡显示“N 分钟后执行一次”)或 at(仅用于你给出的具体钟点)二选一,at 早于当前时刻时报错并附设备当前时间。每会话最多启用 5 个、全部会话 20 个;可设最多执行次数与到期时间。时区固定为创建时的设备时区,夏令时跳过的本地时间拒绝创建,重复时刻取较早一次。错过的多个时点(关机、重启、cron 生成跨越多个时点)合并为一次补发;固定间隔一轮生成越过下一次计划时刻时,下一次排在本轮结束后再等一个完整间隔,不连续补跑。补发以后台时刻计算,后台降频本身不算补发,厂商系统把闹钟推迟 5 分钟以内也不标“补发”。系统触发全局串行,遇到其它生成或待审批时排队,30 分钟仍未轮到则跳过并记为“因忙碌跳过”。
  • 主要用途是 Agent 在任务进行中挂轮询:Nexara 在前台可见时由应用内计时器按计划时刻准点触发,不受系统闹钟对齐窗口影响(真机实测误差在 0.1 秒内);过点后因前一轮生成或审批未结束而排队时,活动标签显示“等待执行”。
  • 后台运行(退到后台或熄屏时兜底,厂商系统可能推迟数分钟):Play 版由 JobScheduler 择时执行;侧载版申请精确闹钟权限,由闹钟唤起前台服务执行,未授权时自动退回系统择时。开机、更新、改时间或时区后重新排期,开机路径只登记排期不启动前台服务。
  • 批准后工具在审批流程内执行期间,审批卡收起,由工具行与实时输出显示进度;不再以置灰卡片停留在输出下方。
  • 本轮需要你处理(工具审批或重复调用确认)时暂停并发出通知,点击通知直达该会话,批准后在原轮次上继续;完成与失败也会通知(停留在该会话时不打扰)。通知深链使用一次性、24 小时有效的应用私有令牌。
  • 聊天页时间线上方的活动标签显示启用中的定时任务与下次触发时间,点开可暂停、恢复或删除;设置 → 工具 → 后台与定时汇总全部会话的定时任务与后台任务,以及精确闹钟、电池优化、通知等运行条件。Play 版与侧载版的差异以“系统择时”“仅前台运行”标签标出,点按查看说明。
  • 数据库升级到 v26,新增 scheduled_tasks 表(随会话级联删除),升级不改动已有数据。定时任务只保存在本机,不进入备份。

界面文案精简

  • 删除复述标题的副标题与宣传语:设置首页的提供商管理、默认模型、导出诊断日志、关于;外观页的纯黑背景、文字大小、保持亮屏与动态取色脚注;检索设置、知识图谱、备份、用量、提供商表单页顶部或脚注的概述段落;会话设置中“启用工具”与“告诉模型当前时间”的说明行,以及 SSH 页里与 Termux 页重复的接入步骤。
  • 同屏重复的说明只保留一处:检索设置“开启重排序后数量与阈值不生效”从两处并为一处,混合搜索与查询改写不再在开关副标题下方重复同义脚注,会话设置的上下文压缩不再在脚注与按钮副标题里重复“暂不可用”原因,工具循环上限说明不再重复编辑框已给出的 1–100 范围。
  • 修正错译与不实描述:混合搜索开关由“连接知识服务器”改为“启用混合搜索”;自定义脚本提示去掉 advertised 误译的“广告”;清除向量对话框不再声称图谱不受影响(对话框本身提供清除图谱选项);外观页标题与首页入口统一为“外观”。
  • 约 150 条说明改写为一句用户关心的后果,去掉“挂载回收区”“私有存储”“无成本连接探测”“暂存事务”“安全配置”等内部术语;后台与定时页的状态行改为状态值,不再附“点按授权”;内置工具描述统一为动词短语,“工作空间”统一为“工作区”。中英文同步。外部文件夹(挂载)相关文案待工作区新名称确定后统一调整。

后台任务

  • shell_exec、python_exec、termux_exec 新增 background、on_exit、max_runtime_minutes 参数:后台启动后立即返回任务号,任务不随生成取消;默认最长 120 分钟、上限 1440 分钟,结束后可不处理、通知(默认)或“唤醒”——在会话中插入结束触发行并自动发起下一轮。新增 job_status、job_wait、job_stop、job_list 四个工具查询、等待(1–600 秒)和停止本会话的任务。
  • 每会话最多同时运行 3 个、全部会话 6 个;日志合并 stdout/stderr,单个最多 20 MiB 并保留一个旧文件,运行中输出实时显示在活动面板。私有工作区的任务在快照副本中运行,结束后三方比较合入,前台已改动的文件保留前台版本,后台版本放入 jobs/<任务号>-conflicts/;日志发布为 jobs/<任务号>.log。目录工作区直接运行。
  • 侧载版以前台服务保活并在通知栏显示、可停止;Play 版只在应用位于前台时保证运行。审批卡对后台启动的命令显示“后台运行 · 最长时长 · 结束动作”,Play 版附“仅前台运行”标签。termux_exec 审批卡与内置命令一样显示命令正文,不再显示原始参数 JSON。
  • 聊天页活动标签显示运行中的任务数,面板列出任务、实时输出、停止按钮(每个任务只有一个)与“在工作区中打开日志”。任务记录存于不备份的应用私有目录,保留七天内最近 50 条;删除会话时停止并清理其任务。

画布写入会话工作区

  • 画布的当前版本同时写入会话工作区的 canvas/<标题>.html,资源管理器、文件工具与命令都能读取和编辑;在工作区里改过的文件会在打开画布、canvas_read 或 canvas_update 时导入为新版本,补丁总是基于导入后的内容。工具结果包含 workspace_path,写出失败时附 workspace_warning 并保留私有版本。
  • 画布卡片与上方正文之间留出段落级间距,不再贴住最后一行文字。
  • 画布卡片改为 16:10 预览加底部渐隐标题栏,副标题显示“版本 · 工作区路径”,未同步时以错误色提示;点按打开卡片对应的版本(旧卡打开当时的历史版本),长按菜单提供打开最新、复制源码、在工作区中显示。
  • 分支会话保留原有工作区绑定,复制来的画布在首次写出时取新路径,不覆盖源会话的文件。

修复:输出被截断或中断时误报“提供商暂时不可用”

  • 提供商以非正常原因结束回复时给出准确提示:输出达到模型单次上限被截断(length、max_tokens、MAX_TOKENS、max_output_tokens)提示调大会话的最大 Token 数或让 AI 分步完成;被内容安全策略拦截(content_filter、refusal、Gemini SAFETY 等)单独提示;DeepSeek 返回的 insufficient_system_resource、aborted(推理资源不足或生成被中断)按服务端临时故障自动重发。此前 OpenAI Chat 兼容、Anthropic 与 Responses 协议把这些结束原因当作数据格式错误,统一显示“提供商暂时不可用”且不重试,长画布等大段工具参数生成时尤其容易遇到。

会话状态面板

  • 新增会话状态面板,适合文字游戏、写作等需要持续跟踪状态的场景:AI 用 state_define 定义标题与字段(文本、数字、进度条、列表四类,最多 20 个),之后每轮按剧情用 state_update 原子更新(设置、增减、追加、移除、清空),state_get 读取完整值,state_remove 移除面板。四个工具归入“工具”设置的计划分类,可单独关闭。
  • 输入浮岛顶部(计划栏之后)显示紧凑状态条,点开为底部面板,可手动编辑各字段或移除面板(需确认);AI 后续请求不会覆盖你之后的手动修改,并会在上下文中看到哪些字段被你改过。时间线中状态工具调用显示为“字段:旧值 → 新值”的简短摘要。
  • 状态按消息记录版本:重新生成、删除消息、清空历史时面板随之回退,撤销删除时一并恢复;分支会话带走分支点之前的状态。
  • 数据库升级到 v25,新增 state_board_versions 表(会话与消息外键级联删除),升级不改动已有数据。备份载荷升级到 v7,纳入状态面板;v1–v6 旧备份恢复时状态为空。

会话画布

  • 新增会话画布:AI 可用 canvas_create、canvas_update、canvas_read、canvas_list 四个工具生成可视化展示页、交互小工具或临时工作台(完整 HTML 或片段),小修改以查找替换补丁提交,每个画布保留最近 10 个版本、源码上限 1 MiB。四个工具出现在“工具”设置的内置工具列表中,可单独关闭。
  • 时间线在执行过程折叠之外显示画布卡片(220dp 预览,同一轮对同一画布只保留最后一张),预览与“打开”始终显示最新版本,旧卡标注“已有新版本”;聊天页右上角菜单新增“画布”列表。全屏查看支持切换历史版本、复制源码;页面可通过草稿桥接把文字写入输入框(单次最多 8000 字、草稿总长 64000 字),始终由用户自己发送。
  • 画布按会话隔离存于应用私有目录,删除会话时一并清理,分支会话复制分支点之前创建的画布(只带当前版本)。
  • 限制:画布页面不能联网、不能加载外部脚本或资源;页面脚本与草稿桥接只在 Google Android System WebView / Chrome 152 及以上启用,其它版本与第三方 WebView 只显示静态预览并给出提示。现有备份暂不包含画布文件。

斜杠命令

  • 输入框行首输入 / 弹出命令候选(位于浮岛内、排队托盘之下),按命令名、显示名与中英文别名过滤;第一个词输完(出现空格)后收起。
  • 技能命令:列出当前会话已启用的技能(标注全局或工作区),/技能名 补充说明 发送后客户端预先加载技能说明,模型这一轮无需再调用激活工具;生成中发送进入排队,出队时同样生效。技能停用、待信任、损坏时发送前提示并保留草稿。
  • 内置命令 /new、/rename [标题]、/prompt [内容]、/compact、/clear(经确认)、/mode auto|semi|manual、/tools [on|off]、/export [md|txt],覆盖原本需要多步操作的会话动作;/export 补上了聊天页缺失的导出入口。
  • 不认识的命令词(如 /tmp 目录)按普通消息发送。

消息选择与生成辅助

  • 助手正文长按直接进入系统文字选择,可拖动选区后复制或全选,轻点正文或消息区空白处取消选择(同时收起键盘);正文不再弹消息菜单,复制、重新生成、分支与删除由本轮末尾的操作栏提供。生成中不开放选择。
  • 用户气泡与错误消息长按只弹菜单,不再铺满按压涟漪;用户气泡菜单新增“选择文本”,在底部面板中自由选择该条消息的文字。
  • 检索进行中,检索行前出现一个沿小圆周巡游的放大镜,检索结束后收起;系统关闭动画时为静止图标。
  • 新增设置“个性化 › 对话 › 生成时保持亮屏”(默认开启);生成中浮岛活动栏右侧有亮屏开关,只对本次回复生效,生成结束后回到设置值。

输入框浮岛与生成光效

  • 输入框浮岛改为与底部导航同款的厚实质感:描边、阴影与抬升底色,深色主题顶部带一道高光,浅色主题为白底加阴影。
  • 生成统计从标题栏下的胶囊移入浮岛顶部的活动栏:左侧流光文字表示仍在运行(有计划时显示当前步骤),其后是工具轮次、调用数与累计 Token;有计划时并入计划条的收起行,不再单独占一行。文字、数字与图标按视觉中线对齐。
  • 生成中浮岛描边亮起一道绕行流光,Android 13 起外圈带同步绕行的柔和光晕;出错时整圈泛红后在两秒内消退。浅色主题下光效颜色自动提亮提纯。系统关闭动画时为静态描边,Android 12 只有描边没有光晕。
  • 生成期间输入框保持可编辑,占位文字提示“写下一条,发送后排队”;附件按钮在生成中也可用。
  • 新增消息队列:生成中写好的消息(含图片与文档附件)按发送键进入当前会话的排队托盘(位于活动栏与输入区之间),本轮成功结束后按顺序自动发出;此时主按钮为“排队发送”,停止退为左侧次级按钮。托盘每条可编辑(输入框为空时放回输入框)、删除、移到最前,超过三条折叠。
  • 新增插队:对排队消息点“插队”,当前轮在下一次工具调用执行完毕时提前收尾,已完成的工具调用与结果保留在历史中,随后立即发出该条,模型据此调整方向;纯文字回复没有工具边界,插队消息在本轮结束后第一个发出。等待审批时插队即立即发送。
  • 队列按会话持久化(图片在入队时复制进应用私有目录),应用重启后以暂停状态恢复;本轮失败、被停止、结束时不在该会话或另一会话正在生成时同样暂停,托盘顶部说明原因并提供“继续”。删除会话时一并清理。
  • 空会话中央显示粒子字标:粒子沿流场飞入拼成品牌字标并轻微呼吸,手指划过时让开;开始输入后散开,清空输入后重新聚拢;有了第一条消息就淡出并停止运算。
  • 修复生成中浮岛光晕在消息列表上显出圆角矩形外框:光晕长尾在 8 位色深下形成色阶轮廓,现改为在绘制范围内平滑衰减到 0 并加入抖动;光带头尾相接处不再跳色,噪声纹理在正下方不再有接缝,出错红光同样收在范围内。
  • 全应用默认点按反馈改为圆角:水波与状态层裁在圆角矩形内(圆角取 12dp 与短边一半中较小者),模型名标签、步骤行、设置行等没有自身形状的点击区域按下时不再露出直角矩形边框。
  • 修复打开非空会话时空会话粒子字标闪现:进入会话的首帧会话尚未载入,消息为空且未标记加载,被误当成空会话,字标先淡入再随消息到达淡出;现要求会话已载入才显示。
  • 生成中、首字到达前的块状闪烁光标改为三点波浪:三个小圆点依次上浮变亮,颜色沿色相环从主色过渡到第三色;系统关闭动画时为静止三点,读屏仍报“正在生成回复”。正文流式时新放出的字从低透明度的强调色在约 280 毫秒内连续淡入为正文色,取代原先 120 毫秒内的三档跳变。
  • 浮岛顶部独立活动栏的内容改为在行内垂直居中:原先内容贴着行顶,离浮岛上边约 9dp、离分隔线约 17dp,“执行中”显得挤在圆角左上角;现在上下等距,行高 44dp,起点仍与分隔线对齐。
  • 品牌名集中为资源实体:含品牌名的字符串文件在顶部声明 brand 实体,字标读取 brand_wordmark,改名时只需修改这些声明;契约测试校验各文件声明一致、正文不再出现字面品牌名。

经 Tailscale 访问内网模型网关

  • 对话、连接测试、向量化、重排与生图的模型请求共用一个 HTTP 引擎:接口地址在 tailnet 内(100.64.0.0/10、MagicDNS 名称或已知设备名)时经内置 Tailscale 发送,其它地址照旧。这些请求携带 API Key,内置 Tailscale 未接入时 tailnet 请求直接失败,不回退直连;内置 Tailscale 已关闭且系统也没有 tailnet 路由(如未装官方 Tailscale App)时,指向 tailnet 的请求立即报“内置 Tailscale 未开启”,不再交给系统网络长时间挂起。
  • 发送到内网模型时若内置 Tailscale 还在启动或接入,聊天页弹出等待浮窗,列出“启动内置 Tailscale → 接入 tailnet → 发送到目标主机”三步、已等待时长与上限,可“取消发送”;连上后显示“已连接 Tailscale,正在发送”并自动继续。未开启时失败气泡下给出“去开启 / 重试 / 换用公网模型”,需要登录时给出“去登录 / 重试 / 换用公网模型”,启动失败或等待超时时给出“重试 / 换用公网模型 / Tailscale 设置”,历史消息重新打开后仍能还原这些入口。
  • 提供商表单新增“API 源”分组(公网 / Tailscale 内网),按接口地址自动识别,手动选过后只在与地址不一致时提示并给出一键改回;选中 Tailscale 时显示内置 Tailscale 状态与去开启、去登录入口,并在接口地址上方提供“tailnet 设备”下拉框:点开后从底部面板选择设备(图标带在线角标,显示全名与系统,离线设备注明,当前设备打勾),选中后接口地址换成该设备的 https 全名,路径不变,仍是同一设备时保留端口。tailnet 地址使用明文 http 时提示在网关设备上用 tailscale serve 提供 https。
  • 模型选择器与会话设置在搜索框下显示“网络”行:公网灯(正常 / 受限 / 离线)与 Tailscale 灯(已连接 / 连接中 / 需登录 / 失败 / 未开启,只有存在内网模型时出现),点按 Tailscale 灯失败时重试、其它状态前往设置。每个经网络访问的模型在图标右下角带所走网络的小灯:内网模型显示 Tailscale 灯,其它模型显示公网灯,本机推理模型不带;行内提供商名保持简短(如“内网网关”)。指示灯使用固定的红黄绿,不随动态取色变化:已连接为绿,连接中或公网受限为黄,离线、需登录、失败与未开启为红,并以形状区分;点亮的灯带一圈柔光。
  • 资料页向量化浮钮恢复为唯一的无障碍信息来源:状态、实时播报与确定进度只发布在浮钮上,进度圈与展开面板的进度条不再重复播报。

修复:删除提供商时界面卡死

  • 修复删除提供商偶发卡死、被系统判定为无响应的问题:删除时提供商管理在持锁写入设置,设置监听器在同一调用栈里重建向量化与图谱抽取组件并等待抽取器锁,而后台向量化队列正持有抽取器锁读取提供商配置,两边互相等待。提供商与全局设置的变更监听现推迟到下一条主线程消息执行,写入方释放锁后再重建组件。
  • 修复修改知识库设置后偶发界面卡死:重建向量化队列时要等正在删除会话或取消索引的主线程协程放开删除屏障,而主线程此时若读取向量化队列会一直阻塞等待重建结束,三方互相等待。界面与协程现改为挂起等待新队列,队列状态改由不阻塞的状态流提供。
  • 修复批准工具调用后界面短暂卡顿:执行前解析可用工具时会同步扫描技能目录,原先在主线程上进行,现改到后台线程。
  • 修复分享导入页的索引进度在知识库设置变更后停止更新:进度原先绑定首个向量化队列,队列重建后不再变化,现跟随当前队列。

模型管理页不再重复提示加载中与无模型

  • 提供商还没有模型清单(首次设置或清单已删除)时,同步中与“没有模型”只在列表区域显示一次,顶部不再叠加同样内容的提示条;列表已显示同步失败时也不再重复。同步完成、已有模型时同步失败等列表无法表达的结果仍以提示条告知。

修复:上下文充裕时误报“完整上下文超限”

  • 修复上下文仅用约 13% 时发送被拦截、提示“完整上下文需要 127352 Token,当前可用 125830”的问题。发送前的容量门禁原先有两处偏差:未设置输出上限时按模型目录的最大输出(如 Qwen3.8 Flash 的 131072)整段预留,262K 窗口被占去一半;同时把每个 UTF-8 字节计为 1 Token,中文按每字 3 Token 计。现在未显式限制输出时最多预留 32768;不含完整文档的请求改用与上下文面板、自动压缩相同的近似估算,只有本轮附带完整文档时才继续按字节保守计量。
  • 自动压缩的触发上限与发送门禁共用同一可用输入量(含安全余量),保证门禁拒绝前压缩已先触发。不含文档的对话超限时,提示改为“请立即压缩上下文,或开启新会话”,不再提示移除文档。

修复:会话标题生成

  • 修复会话标题从未由模型生成、只剩用户首条消息前 10 个字符的问题:标题请求原先把“供应商::模型”形式的模型 ID 交给默认通道,始终失败后静默回退。现在按路由请求,先用快速模型,失败时改用会话模型,单次 20 秒超时,在后台进行,不再拖住本轮收尾;生成期间先显示由首条消息整理出的临时标题,若用户已手动改名则不覆盖。
  • 标题按对话语言生成:中文不超过 10 个字,其它语言不超过 6 个词;去掉“标题:”、引号、书名号与句末标点。英文临时标题按单词截断(不超过 40 个字符),不再截成半个单词。

主页面改版与「资料」更名

  • 对话、资料、设置三个主标签页加上统一的大标题页头,内容改用设置页的分组样式(小标题 + 圆角分组),不再各自使用独立卡片或悬浮按钮。
  • 对话页分为“置顶”“最近”“助手”三组:“最近”只列出所有助手下最近 5 个会话,显示标题、助手名与时间(当天为时刻,当年为月/日,更早带年份),点开直接进入对话;助手行显示头像、会话数与简介,点击就地展开或收起该助手的全部会话与“新建会话”,同一时间只展开一个助手,不再跳转二级页面。已无入口的单助手会话列表页及其路由一并移除,SessionListViewModel 只保留全量会话目录与新建、置顶、删除;这些操作失败时改在对话页弹出提示。会话与助手的置顶、编辑、删除改为长按菜单,TalkBack 可通过自定义操作完成同样的操作。页头“+”选择助手开始新对话,搜索同时匹配会话(标题与最后一条消息)和助手。
  • 资料页:页头提供搜索与“+”(上传文档、新建文件夹);根目录的“浏览”分组集中放置工作区、外部文件夹与知识图谱入口,“全部文件”分组按内容高度收拢,整页一起滚动,不再出现撑满屏幕的空白卡片;文件行(含会话资源面板)去掉行间分割线。记忆列表改为连续分组。
  • 「知识库」统一改称「资料」(英文 Library),包括底部导航、页面标题、分享导入目标、备份内容项、检索步骤(“检索了资料”)、加入资料、外部文件夹快照等提示。

目录浏览、外部文件夹与全站过渡动效

  • 资料页、会话工作区、自选工作区、工作区选择器与外部文件夹的目录浏览改用统一页头:左侧只有一个返回按钮(子目录内回到上一级,根目录回到外层列表),右侧是当前目录名,下方是可点击跳级的上级路径,刷新等操作放在页头末尾。文件预览页用同一页头显示文件名与路径,不再叠加单独的“返回”文字按钮。
  • 外部文件夹由多个叠放的对话框改为一个全高面板:首页按“已挂载 / 添加文件夹 / 挂载回收区”分组,添加方式附说明,挂载限制写在分组脚注,刷新移到页头;添加表单按“文件夹 / 权限 / 适用范围”分组、主按钮固定在底部;浏览与回收区在面板内逐页切换,系统返回逐级退回管理页。不可用的挂载点按后直接给出重新授权、移除等操作。
  • 新增全站动效基准 NexaraMotion:进入子目录或面板下一页按方向横向切换(返回时反向),同级内容(底部标签、文档/记忆、加载/空/错误/内容)先淡出再淡入,提示条、进度条、展开区纵向展开收起。已覆盖目录浏览、面板内多页、底部导航选中态与文字、资料页标签与搜索切换、对话页列表分组与助手展开区、聊天中的思考内容与工具详情展开、生成结束后的操作行、发送/停止按钮、生成进度行、文件列表与记忆列表的增删;由代码关闭的上滑面板先下滑退场再移除。
  • 对话页点击助手展开或收起会话时给出开/关两档轻振,与开关控件一致。
  • 生成中标题栏下方的进度由整句纯文本(“第 0 轮,已调用 0 次,共 0 Token”)改为居中胶囊:呼吸点表示任务运行中,工具轮次、工具调用与累计 Token 各以图标加数值显示,数值为 0 的段不显示(尚无数值时显示“执行中”),数值变化时滚动替换,Token 以 1.5K / 1.3M 简写、估算值前加“≈”;窄屏大字号时整段换行。读屏读到一句完整描述。
  • 动效基准扩展到其余页面:页面路由前进后退改用同一套共享 X 轴;聊天消息、压缩卡与审批卡出现时淡入(不做位移,避免与生成中跟随滚动冲突),输入区上方状态条展开收起,附件缩略图增删平滑补位;Git 改动面板的列表、文件差异与提交详情按层级切换,标签、标题与加载/失败/内容状态均有过渡;检索详情、技能、提示词编辑器的标签切换,首次引导的步骤切换,文档编辑器的加载状态与新出现的窗格(切换分栏不重建编辑面板),知识图谱的画布/加载/空态与搜索结果,回收站、资料文件夹、模型列表、提供商列表与提供商表单的条目增删均补上过渡。

时间化对话记忆

  • 检索到的对话记忆注入提示词时带上时间,例如 [Memory · 2026-10-19 14:32 · 3 days ago],按发生先后排列,开头写明当前时间并说明“记录冲突时以较新的为准”。时间取该轮消息的发生时间,不取写入向量库的时间,也不进入向量正文。
  • 相关度接近的记录中较新的优先入选(最多加 0.05 分,按候选内的先后名次线性计算),相关度差距明显时仍以相关度为准。
  • 回顾某段时间的问题(“昨天/上周二/3 天前/10 月 19 日我们聊了什么”,英文 yesterday、last week 等)按该时段检索对话记录,不受相似度阈值限制并优先入选;只提到时间、没有回顾意味的问题(“今天天气怎么样”)不按时间限定。
  • 记忆设置新增“对话记忆 · 提取事件与状态”(默认关闭):每轮回复后在后台用摘要模型(未设置时用主模型)整理出一句事件和若干“对象 · 属性 = 当前值”的状态,写入对话记忆。检索对话记忆时,每个对象属性只提供最新值(已撤销的不提供),即使问题检索不到相似记录也提供;事件摘要与记忆片段一起按时间线入选。消息删除、回退、编辑后,对应的事件与状态随该轮一起失效或重新整理。
  • 检索详情新增“状态”类型,记忆、事件与状态显示发生时间;“摘要”类型改称“事件”。修复会话摘要类记录检索后在最终选取时被丢弃的问题。
  • 修复回复较短时事件与状态(以及对话图谱)抽取读到缺最后一段的正文、结果又被当作过期丢弃的问题:本轮正文先写入数据库再排入后台抽取,写入失败时本轮不抽取。

推理强度与参数方案

  • 输入框模型名右侧新增推理强度胶囊:档位按当前模型列出(例如 Claude Opus 5.5 为低、中、高、超高、极限,DeepSeek V4 为低、高、极限并可选“不思考”),首项为“模型默认”,并标出文档写明的默认档位。只能开关思考的模型点一下即切换,不支持调节或无法识别的模型不显示胶囊。选择只作用于当前会话,换模型后按最接近的档位发送;空间不足时胶囊只显示灯泡。
  • 推理强度按各家接口写入请求:OpenAI 系 reasoning_effort / reasoning.effort,Claude 自适应思考加 output_config.effort(旧版按 token 预算),Gemini thinkingLevel 或 thinkingBudget,DeepSeek、GLM、MiniMax、Kimi 的 thinking.type,通义千问的 enable_thinking。子代理沿用父会话的档位。
  • 会话设置“参数”页去掉四张“思考强度”卡片(它们实际只是一组温度、Top P、Top K 预设),改为按模型保存的参数方案:首项“模型默认”不发送任何采样参数,可把当前取值“存为方案”;选用后再改动会列出与方案不同的参数,并可覆盖或另存;再点已选中的方案可还原、重命名或删除(删除前二次确认,已在使用的会话与助手保留当前取值)。新增温度设置。
  • 参数不再弹出第三层面板:点参数行在原位展开,所有参数统一用“减 / 可直接输入的数值 / 加 / 恢复”和一排快捷值,最大输出按翻倍或减半调整,请求超时改为行内加减。调整后方案卡出现“与方案不同”一行时,列表随之滚动,正在操作的加减按钮不会被推走;恢复按钮始终占位(无可恢复时置灰),加号不会因它出现而左移。标题旁的小标签标出值来自“本会话”还是“助手”,未设置的显示“默认”。
  • 助手编辑页新增“默认参数”:推理强度、本模型的参数方案与逐项采样参数。新会话不再复制助手参数,生成时逐项按“会话 → 助手 → 模型默认”解析,修改助手后未单独设置的会话随之生效。
  • 请求层只对厂商官方接口按模型剔除会报错或被忽略的采样参数:官方接口不接受的参数收进“N 项不适用于此模型”,思考时无效的参数标“思考时不生效”且不发送;同名模型经第三方中转、自建或本地服务时全部显示,资料里不支持的参数标“可能被忽略”但照常发送。修复所有请求固定带温度 0.7 导致 Kimi 等模型拒绝、OpenAI 推理模型冲突的问题;OpenAI 官方接口不再发送 Top K 与重复惩罚。Claude 未设置最大输出时按模型目录取默认值(至多 64000),不再固定 4096。Gemini 思考模型默认请求思考摘要。
  • 数据库升级到 v24:助手新增 Top K、惩罚项与推理强度列,新增 parameter_schemes 表。升级时助手与会话里由旧预设或旧默认写入的采样参数恢复为模型默认,流式超时、压缩阈值等其它会话设置保留。备份载荷升级到 v6,纳入参数方案;恢复 v1–v5 旧备份时按同样规则把采样参数恢复为模型默认。

触感反馈

  • 新增外观页“触感”分组:“触感反馈”(默认开启,沿用原有的 haptic_enabled 设置)控制所有交互振动,“状态提醒”(默认开启)单独控制状态振动;两者都跟随系统的触摸振动设置,关闭“触感反馈”时长按菜单、文本选择等组件自带的振动也一并关闭。
  • 交互振动从底部导航扩展到:分段与标签切换、单选类选择(推理强度、参数方案、强调色、模型、数值预设与搜索引擎,点已选中的项不振动)、设置开关(开与关两种手感,重新打开“触感反馈”时也会回应这一下)、步进器加减(长按连续调整时每 4 步一次)、有刻度的滑块、发送与停止、审批的批准与拒绝(含子代理审批)、复制回复、复制代码与命令。
  • 状态振动只在需要你留意的节点出现一次:有工具等待审批、超过 10 秒的回复完成、生成失败。流式输出与工具步骤不振动,主动停止、进入或切换会话不补发;等待审批的时间不计入回复用时。

修复:新增界面的文案与排版

  • 子代理审批框改为与聊天内审批卡一致的结构:会话与任务分行标注,动作名后跟风险类别,下一行是工具 ID 与执行位置,命令完整换行显示并可展开,内置命令给出工作区风险提示;不再出现单独一行的工具 ID 与“builtin · 命令”原始目标,也不再需要横向滚动看命令。
  • 子代理查看页的过程时间线把同一次调用的参数、审批与结果合为一步:动作名后直接给出路径、查询词等对象,命令放进代码块,其余参数写成“名称: 值”,不再显示原始 JSON 与工具 ID;结果放进等宽代码块,与模型说明分开;失败只显示一次。顶部状态失败时只给“失败 · 用时”,原因在结果区;用量显示千分位(如“19,560 Token”);页脚分为“仅供查看”标题与说明两行。
  • “本轮记忆”面板:可检索范围改为“本会话 / 本助手其他会话 / 其他助手”三行对照;已写入片段的“User:/Assistant:”标记显示为“你 / 助手”;图谱部分标题改为“新增 3 个实体、2 条关系”,实体以标签显示,关系显示为“Kotlin developed by → JetBrains”,下划线谓词换成空格。
  • 检索卡:中文来源计数补上量词(“记忆 2 条 · 文档 1 条”),范围段加冒号(“范围:本助手”);只有一类来源时不再重复显示与结果数相同的计数行。
  • 助手编辑页“记忆与知识”:右侧直接显示会话上限,副标题为“新会话默认:…”,说明文字注明右侧为上限。
  • 生成中消息列表底部多留 16dp,自动跟随时最新内容停在输入区上方 32dp,思考与工具块不再贴着或钻到输入框下面;生成结束后留白平滑收回。

修复:生成进度行与正文分区显示

  • 聊天页生成中的“第 N 轮,已调用 N 次,共 N Token”进度行改为页头的一部分:页头整体使用页面底色,标题栏底部分隔线在进度行出现时移到进度行下方,滚动的正文从分隔线下开始,不再透到进度行背后或紧贴进度行显示。进度行文字改用次要文字色,并适配横屏左右安全区。
  • 修正英文“(estimated)”前的空格被资源解析吞掉、显示为“tokens(estimated)”的问题。
  • 新增截图预览“生成进度 深中411”与“生成进度 深英360 大字号”(1.3 倍字号)。

子代理

  • 新增内置工具 agent_task(工具设置中显示为“子代理”):主 Agent 一次可派生 1–3 个子代理,在独立上下文中并行完成子任务,结论按子代理分节交回主 Agent(合计超过 12k 字符时截断)。预置只读子代理“探索者”,也可继承本会话工具;子代理不能再派生子代理,也不能查看媒体;最多 12 步,单个子代理合计不超过 400k token,设置了任务 token 上限时按子代理数分摊;不执行自动检索,用量计入本轮回复的附加用量(停止本轮时同样计入)。
  • 子代理沿用本会话的执行模式与白名单。父会话中途改为更严格的执行模式或停用工具,子代理的下一次调用立即生效。需要授权时弹出标注子代理名称、任务、工具、目标与完整参数的审批框,子代理原地等待;审批期间目标发生变化则不执行;“以后允许此目标”写入本会话白名单,拒绝只拒绝这一次调用。应用在后台时发送通知,10 分钟内未处理则子代理以失败交回。
  • 聊天中工具行下方显示“N 个子代理并行”分组卡:每个子代理一行(名称、任务、当前步骤与用时),运行中显示实时输出,完成后显示一行结论,失败显示原因。点按进入只读查看页:主 Agent 交给它的任务(工具档位、模型、步数上限、用量)、过程时间线、交回的结果;页面没有输入框,子代理只与主 Agent 通信。
  • 停止本轮生成时子代理一并停止。运行记录只存于本机且不进备份;应用在子代理运行中被结束,再次打开时显示为“已中断”;删除会话时一并删除。

从对话抽取知识图谱

  • 新增全局开关“从对话抽取知识图谱”(检索设置 → 知识图谱 → 对话图谱,默认关闭)。开启后,开启了对话记忆的会话每轮回复成功后,在后台把本轮问答排入抽取队列,每轮额外调用一次抽取模型;过短的轮次跳过。抽取模型与每轮预算沿用文档抽取设置,调用计入用量专区。
  • 抽取结果以对话证据写入知识图谱并记下所属的助手消息:删除、丢弃、回退或清空聊天记录后立即不可见,撤销后恢复;编辑助手正文时按新正文重新抽取,编辑用户消息时清除该轮结果。可见范围随会话的图谱档位。
  • 回复底部的状态在“已记入记忆”之后依次显示“等待图谱抽取 / 图谱抽取中 / 图谱 +N 实体 +M 关系”,预算耗尽显示“未完成”,失败显示“图谱抽取失败 · 重试”。“本轮记忆”面板列出本轮的实体与关系,可重新抽取,或“在图谱中查看”打开知识图谱页并搜索该实体。会话设置的检索范围下显示后台抽取队列(待处理、失败、今日轮数与调用次数)。
  • 数据库升级到 v23:kg_evidence 增加 message_id 及索引,sessions(agent_id) 增加索引;已有数据不变。开关随备份迁移,每日抽取统计只留在本机。

命令运行时实时显示输出

  • Agent 执行 shell_exec、python_exec、ssh_exec、沙箱 Python 与 exec_js 时,聊天中运行中的工具行下方显示“实时输出”终端区:等宽字体显示最后 12 行,进度条按回车刷新只留最新一行,去掉颜色控制符;命令结束后终端区消失,照常显示结果。termux_exec 注明不提供实时输出。
  • 终端区的“停止”只结束这一条命令,并把“用户已停止”作为结果交给模型(内置命令为 EXEC_STOPPED,SSH 为 SSH_STOPPED,脚本为 STOPPED),模型据此继续本轮而不是整轮被取消;SSH 停止只断开通道,远端进程可能仍在运行。命令还在等待工作区或连接时就按了停止,则不再启动。
  • SSH 实时输出与最终结果一样按连接凭据遮蔽,跨分片出现的口令也会被遮蔽;交给模型的结果与截断规则不变。实时输出只存内存,每条命令保留尾部 16 KB,不写入数据库。

记忆写入与检索范围在界面上可见

  • 回复底部模型名之前显示本轮的记忆状态:写入记忆中、已记入记忆、未记入记忆、已从记忆移除。会话关闭记忆或未配置嵌入模型时不显示。空间不足时只显示图标,时间始终完整显示。
  • 写入途中应用被结束、撤销删除恢复了“写入中”的回复时,打开会话后按实际记入的片段改为“已记入记忆”或“未记入记忆”(可重试);摘要归档不再覆盖本轮记忆状态。
  • 点按状态打开“本轮记忆”面板:说明本轮记忆可被哪些会话检索(本助手为私密助手时注明其他助手不可检索),列出本轮写入的片段;可“从记忆中移除本轮”(只移除记忆,聊天记录保留),移除或写入失败后可重新记入。编辑助手正文后状态随重写结果更新(重写失败显示“未记入记忆”);编辑用户消息后该轮显示“已从记忆移除”。
  • 检索步骤摘要显示本次的范围档位,下一行按来源计数(记忆、文档、图谱路径),并标出图谱临时抽取次数。详情页的“检索过程”先用一句话给出结论(如“找到 12 条相关内容,采用 5 条”或“没有找到相关内容”及原因),下面按来源、范围、排序、重排、图谱、用时分行列出,标签与数值两列对齐;范围行列出三类资源实际执行的档位、对话记忆覆盖的会话数(“全部助手”档另列助手数),图谱行注明临时抽取次数与所用模型。
  • 对话记忆与文档切块保留换行和中文句末标点(。!?;);此前切块会丢掉这些分隔符,相邻句子粘连(如“User: Say OKAssistant: OK”)。已写入的片段不变,新写入或重新记入、重新索引后生效。
  • 从未修改过检索设置的会话(未保存检索选项,即使用默认选项)此前不写入对话记忆、也不显示记忆状态;现在与检索时一致按默认选项(记忆开启)写入并显示。
  • 会话设置的对话记忆与图谱对话证据行显示当前档位可检索的会话数。
  • 删除消息的撤销提示写明删除条数;被删除的回复已记入记忆时提示“已删除 N 条消息及其记忆”。

一轮回复完成后收起过程

  • 一轮回复结束后,思考与工具调用收为一行摘要(如“已运行 5 步 · 改动 2 个文件 · 1 分 12 秒”),下面单独显示最终正文;点按摘要展开完整过程,中间正文也在其中。展开状态只保存在界面上。
  • 生成中保持逐步平铺;出错、被错误截断、待审批、有工具调用未返回结果,以及没有思考或工具步骤的轮次不收起。
  • 收起后页脚复制只复制最终正文,“更多”菜单提供“复制全部过程”。
  • 外观设置新增“对话 · 完成后折叠过程”,默认开启;关闭后显示与复制都和原来一致。

记忆与知识的会话级、助手级范围隔离

  • 会话设置的“跨会话检索”开关改为“检索范围”分组,三类资源分别选择档位:对话记忆为仅本会话 / 本助手 / 全部助手;图谱对话证据为仅本会话 / 跨会话 / 跨助手;文档为本会话工作区 / 工作区与知识库 / 全部已索引文档。功能关闭时对应行停用。
  • 助手编辑页新增“记忆与知识”分组:设置三类资源的会话上限与新会话默认档位,以及“允许其他助手读取本助手的记忆”(默认开启,关闭即私密助手)。会话档位超出上限时按上限执行,行内注明受上限限制;超出上限的档位在选择面板中显示为不可选。记忆权限独立于“继承全局检索参数”,继承时也按助手单独保存。
  • “全部助手”只读取开放共享的助手;私密助手的记忆与图谱对话证据不会被其他助手读取,私密助手自己仍可按档位读取全部共享内容。
  • 已有会话按旧开关迁移:原先开启跨会话检索的,对话记忆与图谱为“本助手”,关闭的为“仅本会话”;文档统一为“工作区与知识库”。此前开启跨会话检索会读取所有助手的记忆和全部已索引文档,关闭时不检索任何文档;新会话取助手默认值(对话记忆与图谱为“本助手”,文档为“工作区与知识库”)。
  • 向量检索、关键词检索和图谱可见性使用同一个范围解析,三条路径命中的会话与文档一致。知识图谱即时抽取仍只使用可见文档与本会话记忆。

对话记忆随聊天记录删除失效

  • 删除单条消息、重新生成丢弃旧回复、回退截断、清空会话后,该轮的对话记忆在向量检索、关键词检索和知识图谱即时抽取中都不再出现;撤销删除后记忆随消息恢复。此前只有删除整个会话会清理记忆,被丢弃回复的记忆会继续参与检索。
  • 用过本会话对话记忆的即时抽取图谱证据随删除或编辑一并失效,孤立的实体与关系被回收;下次检索时可重新抽取。
  • 编辑用户消息会删除该轮记忆;编辑助手正文会按新正文重写该轮记忆。
  • 失去所属消息的记忆保留 24 小时供撤销,应用启动时物理删除超过窗口的部分,历史遗留的孤儿记忆也按此清理。

会话媒体:落地工作区、会话内渲染播放与模型查看

  • 图片、视频、音频统一先保存到会话工作区,默认目录 media/<日期>/,文件名为“来源-时分-短哈希”,只新建不覆盖。生图结果、MCP 工具返回的图片/音频/二进制资源都写入这里;交给模型的 MCP 结果只保留“已保存到 <路径>”等文字,不再含 base64。旧版生图目录 generated_images 中的图片仍可显示,不迁移。
  • 模型在回复中写 ![说明](工作区路径),会话里会显示为图片、视频、音频或文件卡片;[名称](工作区路径) 显示为文件卡片。工具步骤中的媒体也显示同样的卡片。图片可放大查看;视频和音频用 Media3 在会话内播放,视频可全屏,同一时刻只播放一个。卡片支持保存到相册(Pictures/Nexara、Movies/Nexara)或下载目录(Download/Nexara)、分享、用其它应用打开。文件不存在或无法读取时显示“文件不可用”,并可在资源管理器中定位。在资源管理器中点按媒体文件可直接预览。Markdown 中的本机真实绝对路径不再直接读取。
  • 新增 view_media 工具:当前模型支持视觉、音频输入或视频理解中的任意一种时可用,按模型能力决定发送哪些模态,不支持的模态返回明确说明。只支持图片的模型查看视频时抽取关键帧,Agent 可用 frames 或 interval_seconds 调整密度,用 start_seconds/end_seconds 指定时间段(默认均匀 8 帧,单次至多 32 帧,每帧标注时间戳)。Anthropic、OpenAI Responses、Gemini 3 使用原生“工具结果含图片”格式,其它协议在工具结果之后附带一条用户消息携带媒体。媒体只在查看的那一轮发送,之后的历史只保留“已查看 <路径>”。
  • 新增 media_fetch 工具:把 https 地址的图片、音频、视频下载到工作区,tailnet 主机的 https 经内置 Tailscale 代理访问;校验类型、单个上限 100 MiB、逐跳检查重定向,审批与写文件一致。tailnet 上的明文 http(如局域网 ComfyUI 的 :8188)暂不支持,模型会改用 python_exec/shell_exec 下载到工作区。
  • 系统提示新增媒体使用说明;设置 → 工具新增“媒体”分组(生成图片、查看媒体、下载媒体);工具步骤摘要按实际图片张数与媒体个数计数。
  • 修复设备上媒体写入工作区总是失败(“媒体读写失败”):写入后会为图片、音视频发布向量化事件,而向量化队列拒绝这类类型,导致保存被回滚。影响 media_fetch、生图与 MCP 媒体落地;现在只为可索引文档发布事件。设备回归类 com.promenar.nexara.data.media.WorkspaceMediaDeviceTest(字节写入与公网视频下载,后者需要设备能访问公网)。
  • media_fetch 使用与 web_fetch 一致的浏览器式 User-Agent,部分按爬虫拒绝的站点不再返回 403。视频播完后进入全屏会回到开头显示首帧,不再黑屏。资源管理器中的图片、音视频不再显示永远“等待中”的索引与图谱状态(媒体文件不参与向量化)。
  • 选用目录作为会话工作区时的文件浏览,以及“外部文件夹”挂载浏览中,点按图片、视频、音频也直接在会话内查看或播放(与资源管理器一致),其它文件仍为文本预览或交给其它应用打开。

工具失败详情样式与生图错误文案

  • 展开工具步骤后,失败结果显示为与参数块同形的错误底板:第一行是图标、“执行失败”和错误码类标签(如 HTTP 503、model_not_found、COMMAND_FAILED、exit 2),下面用正文色显示说明,命令输出等细节用等宽小字单独成框,过长时可展开。界面不再显示“工具执行失败:”前缀,发给模型的失败内容不变。
  • 结构化失败结果(shell_exec、MCP 等返回的 JSON)提取错误码、退出码、超时作标签,guidance/message 作说明,stderr/stdout 作细节;旧记录中嵌入的服务端错误体(含被截断的 JSON)也能取出状态码、错误码与说明。
  • 生图服务返回非 2xx 时,错误改为“Image generation failed (HTTP 503 · model_not_found): <服务端说明>”:提取错误体中的 error.code 与 message,不再重复前缀,也不再把含原始 JSON 的整条错误截断到 200 字符;服务端说明最多保留 500 字符。
  • 生图审批卡片的元信息行显示写入位置 generate_image · /media(结果保存在 /media/<日期>/),不再显示“未能确认执行目标”。该位置只用于显示,不参与授权比较或“本会话始终允许”。

流式回复中方括号文本导致闪退

  • 回复里出现 x=[30,109]、[说明][ref] 这类会被解析为引用式链接的方括号文本时,若流式显示恰好停在方括号内部,应用会闪退(渲染库截取标签内部时越界)。未放完的引用式链接现在按已放出的纯文本显示,完整后再按原样渲染。

Markdown 美元符号与公式识别修复

  • 行内代码、代码块和链接中的 $ 不再被识别为数学公式:形如 克隆 `$HOME/src-demo` → `$NEXARA_SKILLS/cloned-demo` 的一行保持在同一段落里,两段代码正常显示,不再变成斜体公式并拆行。正文中的 $x^2$、$$...$$ 照常渲染为公式。
  • 代码里的 \(...\)、\[...\] 不再被改写为公式定界符;流式输出时代码里的 $$(如 echo $$)不再被当作未闭合公式,后文不再被截断。
  • 货币金额按原文显示:$5 and $10、$5/$10 不再被吞掉部分文字,也不再被当作公式。
  • 整行加粗的编号标题(如 **3. 克隆示例仓库**)不再被压缩列表修复拆行,** 不再裸露。

备份恢复失败后不再永久锁定

  • 导入备份后在重启时执行的恢复若遇到确定性错误,且数据库、偏好、密钥、技能目录都已完整回滚,应用会放弃这次恢复并正常启动,弹窗说明“备份未能恢复,数据保持恢复前的原状”,可在“设置 → 备份”中重新导入。此前同一份待恢复记录会在每次启动时被偏好事务账本拒绝,启动页只剩“重试安全恢复”,只能清除应用数据才能离开。
  • 判定依据是恢复事务 journal 已不存在且没有该事务的完成回执;回滚补偿未完成(journal 仍在)时继续保持锁定,下次启动先完成补偿再释放待恢复记录。已处于锁定态的设备升级后首次启动即可自动解除。

两级技能文件系统运行时与全局审批白名单

  • 技能改为两级目录:用户级位于 /skills,所有会话共享;目录型工作区根下的 .agents/skills/ 为项目级技能,只在该工作区出现,首次出现或内容变化后需要用户信任。格式遵循 Codex 技能规范,agents/openai.yaml 可设置显示名、简短说明与是否允许隐式调用。
  • Agent 和全部工具都能访问技能目录:文件工具中为 /skills,shell_exec、python_exec 与内置 git 中为 $NEXARA_SKILLS(亦即 ~/.agents/skills),可以新建、修改技能或 clone 技能仓库。写入、移动、删除技能目录(含项目技能的父目录 .agents)在任何执行模式下都逐次审批,不能“始终允许”;无法解析出目标路径的文件变更(例如反斜杠写法)一律拒绝,全自动模式下也会请求审批;真实进程中的写入沿用执行工具自身的审批。skills 成为保留挂载别名:此前以该别名添加的用户挂载仍保留在挂载管理中,但文件工具不再列出,需要以其它别名重新添加。
  • 系统提示列出技能的名称、描述、来源与 SKILL.md 路径,预算为上下文窗口的 2%(至多 8000 字符);消息中以 $技能名 点名的技能必须使用,即使它不允许隐式调用。activate_skill 与 read_skill_file 支持两级技能与按路径指定,附带脚本可经执行工具运行。
  • 会话设置“工具”标签重新编排:“启用工具”与执行模式置顶,其后是用户技能、项目技能(启停、信任、确认修改、查看原文、删除)、自定义工具与 MCP,最后是时间注入(说明为每次请求都附带)与 Gemini 选项;移除“Token 节约模式”与“本会话已允许的目标”,任务计划改为固定写法。
  • 审批卡片上的“始终允许”改为全局白名单:文件类目标只在所属工作区生效,其它目标在所有会话中精确匹配;设置 → 工具 → 审批白名单可查看、撤销与全部清空。原有会话级授权在升级后清除,删除会话时撤销其私有工作区条目。
  • 本地与 WebDAV 备份包含用户级技能目录与启用状态(包格式版本 2,兼容旧包)。技能仓库的 .git 超出 64 MiB 或剩余内存预算时跳过,恢复后弹出提示,列出需要重新 clone 的仓库地址、分支与提交号。

设置页视觉统一(Agent 工具、编辑助手与远端设置)

  • 工具设置:内置工具按“联网 / 文件 / 代码执行 / 任务计划 / 其它”分组,每组一张卡片,每个工具有独立图标,说明写在行内,不再一个工具一张卡片加“id: 说明”脚注;标签改为“内置工具 / 技能包 / MCP”。技能包的“导入技能包 / 新建技能”和 MCP 的“添加 MCP 服务器”改为分组末行;MCP 空状态放进卡片,服务器行显示“连接状态 · 地址”。执行预算各行补齐图标与说明,“重置授权”不再显示为红色;脚本写入审批的说明改写得更准确。
  • 编辑助手:模型行副标题直接显示当前模型名;系统提示词行显示两行内容预览,未设置时提示“未设置”;图标行前显示当前图标;去掉重复的分组脚注。助手的记忆与检索子页分组标题由“Agent”改为“本助手”。
  • SSH:每台主机收成一行(别名、“用户@主机:端口 · 认证方式”、指纹状态),行尾可直接打开终端;核验指纹、复制公钥、编辑、端口转发、删除收进点按后弹出的主机操作面板;“添加主机”为分组末行。
  • Git 凭据:添加凭据和更换令牌改在上滑面板里编辑,凭据列表末行为“添加凭据”。
  • 提供商列表合并为一个分组,协议、启用与凭据状态、地址写在行内,不再放在每个提供商的脚注里。模型列表的能力标签移进模型卡片,相邻模型拼成连续的分组圆角。
  • 用量管理:“按模型”改为一个分组直接列出各模型的输入、输出、费用与合计,不再逐个折叠;“清除所有历史”放进“数据管理”分组。
  • 模型编辑面板中模型 ID 输入框不再额外套卡片;主题页强调色排成两行、每行四个,窄屏不再出现单独一个色块。设置行副标题和步进行说明支持两行显示。
  • 设置首页滚动时状态栏下方垫上页面背景色,内容不再从状态栏图标下穿过。SSH 页“允许 Agent 管理 SSH 主机”的副标题随开关状态显示(开启时“每次变更都需你审批”,关闭时“Agent 只能连接已配置的主机”),不再固定显示“默认关闭”。

Tailscale 设置页重排

  • 状态区改为一致的行样式:彩色状态圆点 + 阶段文字(已连接时副标题为 tailnet 名),行尾独立的刷新按钮;本机行显示设备名与“本机 · IPv4”,不再使用“本机:x”这类键值标题。健康提示带警示图标。
  • 设备列表按“白名单内在线 → 白名单内离线 → 不在白名单”排序、同组按名称排序;每台设备按系统显示图标(Windows/macOS/手机/Linux 等)并带在线角标,副标题为“IP · 系统”(系统名统一大小写,如 Windows、Linux、macOS),离线或不在白名单另行写明;分区脚注显示“N 台在线,共 M 台”。
  • “登录选项”更名为“高级”:auth key 与控制服务器改为“值行 + 上滑编辑面板”(行上显示“已保存/未设置”“Tailscale 官方/服务器主机名”),面板内校验失败就地标红,保存成功自动收起;设备白名单同样改为值行(显示“全部设备/N 项”)+ 编辑面板。auth key 格式错误改为面板内错误提示,不再弹出提示条。
  • 精简启用、临时节点、退出登录等副标题与分区说明,避免单行截断。

修复:工具审批卡片“展开全部”后仍看不到完整代码

  • 运行 Python / 运行命令 / 写入文件等审批卡片的参数预览此前在生成时就被截成前 12 行(每行最多 120 字符)并追加“… (+N)”,点“展开全部”只能看到这段截断文本,用户无法完整审阅将要批准的代码。现在预览保留完整原文(patch_file 也列出全部操作),折叠只由界面负责。
  • 收起态保持不变(显示前 6 行与“展开全部”)。展开后显示完整参数:卡内限高 360dp,超出部分在框内滚动,滚到边界后交还聊天列表继续滚动;文本可选择复制。
  • 新增 ApprovalTextBlockLayoutTest 与 ApprovalPreviewTest 用例覆盖 80 行代码、超长单行与多操作补丁不截断,新增长代码审批收起态及展开态顶部/底部三张截图基准。

回复气泡生成统计浮卡

  • 点击 AI 回复底部“模型名 · 时间”一行,在其上方弹出生成统计浮卡;上方放不下时改在下方,始终避开状态栏、导航栏、刘海与输入法并留出边距,不遮住这一行,内容过长时在卡内滚动(点外部或返回关闭;生成进行中不显示该行,因此不会弹出)。统计只在打开浮卡时计算。统计以气泡为单位,汇总其中全部模型轮次(模型→工具→模型…):模型与服务商名、生成时间;输入、输出、生成速度三格主指标;缓存读取、未缓存、推理 Token(服务商报告时才显示)、首 Token 耗时、端到端吞吐、端到端耗时、多轮时的“N 轮合计”与“输入含每轮重复计入的上下文”说明;可展开的“运行时间分布”(模型 / 工具 / 其它)。估算用量标“估算”,旧消息缺计时显示“—”。不显示任何费用。
  • 口径:生成速度 = 输出合计 ÷ Σ各轮(结束 − 首个输出);端到端吞吐 = 输出合计 ÷ (最后一轮结束 − 第一轮请求开始);首 Token 耗时取第一轮;模型时间 = Σ各轮(结束 − 请求开始),工具时间取各轮工具调用墙钟区间之和,其它 = 端到端 − 模型 − 工具(下限 0)。Token 统计扣除并入消息的摘要模型用量;缺数据的项不臆造。
  • 每条助手消息的 tokens JSON 新增可空字段 cacheReadInput、cacheWriteInput、reasoningOutput 与 timing(requestStartedAt、firstOutputAt、endedAt,epoch 毫秒),为空时不写入;旧记录照常解码,无数据库迁移,$.input/$.output/$.total 键名与含义不变。生成运行器在每轮请求发出、首个正文/思考/工具调用增量到达、流结束时打点,失败与取消的轮次同样补记结束时间;自动重试沿用本轮首次请求时间。
  • 协议 usage 统一语义:input 为本轮全部输入(含缓存读写部分),output 含推理 Token。OpenAI 与兼容协议读取 prompt_tokens_details.cached_tokens、completion_tokens_details.reasoning_tokens,DeepSeek 的 prompt_cache_hit_tokens 记为缓存读取;OpenAI Responses 读取 input_tokens_details/output_tokens_details;Gemini/Vertex 读取 cachedContentTokenCount,thoughtsTokenCount 仍并入输出并另记推理。
  • 口径变化:Anthropic 协议的输入 Token 改为 input_tokens + cache_read_input_tokens + cache_creation_input_tokens(此前只计未缓存部分),更接近计费口径;启用提示缓存的 Anthropic 会话此后记录的输入与总量、会话累计用量和设置“用量”统计会相应变大,历史记录不变。

上滑面板统一、工作区入口迁移与授权列表精简

  • 全站上滑面板统一为同一外壳(形状、底色、拖动条一致,始终直接完全展开)并按两档高度显示:会话设置、资源管理器、Git 变更、工作区选择器、文件差异、检索详情、模型选择及各类编辑表单铺满屏幕;单选列表、“移动到”等目标选择与短表单按内容高度显示,不再使用 0.7、0.82、0.85、0.9、0.95 等各自的固定比例。
  • 会话工作区的查看与切换从会话设置“上下文”页移到资源管理器文件页顶部的工作区栏:显示当前工作区名称、类型与路径,行尾“切换”打开工作区选择器;目录或不可用时可改用会话私有工作区;生成进行中或有待审批时停用并说明原因。切换成功后资源管理器立即按新工作区重新加载。
  • 会话设置“工具”页的“本会话已允许的目标”改为每条一行:工具名在上、目标在下(与工具名相同时省略),行尾“撤销”按钮;不再在下方重复列出同一份授权清单。

内置 git 远端认证(HTTPS 凭据与 SSH 远端)

  • 新增“设置 → 工具 → Git 凭据”:按主机(如 github.com、git.example.com:8443)保存用户名与访问令牌。令牌存于 Android Keystore 支撑的 SecretStore,不进入任何备份,界面不显示明文。
  • 内置 git 访问已配置主机的 HTTPS 远端时,请求改经 App 内的凭据注入代理(只监听 127.0.0.1 随机端口),由代理加 Authorization 后经 HTTPS 转发;令牌不出现在命令、环境变量、文件、输出与模型上下文中。每条 shell_exec / python_exec 命令获得一次性 nonce,命令结束(含超时、停止、取消)即失效;代理只放行 git 智能协议路径,重定向到未配置主机时拒绝。未配置的主机保持直连。
  • git@主机:路径 与 ssh:// 远端改经 App 内的 SSH 桥,使用“SSH 主机与终端”中已固定主机密钥的主机(例如主机 github.com、用户 git),只执行 git-upload-pack / git-receive-pack / git-upload-archive 加单个引号路径;私钥不离开 App。未匹配主机或未固定主机密钥时给出配置指引。
  • nexara_git 用法改为引导使用 Git 凭据;URL 中的用户信息仍兼容但不再推荐,错误信息不含令牌。推送仍是普通 shell_exec 命令,沿用现有审批。
  • 设备门禁新增 git-remote-auth 阶段(GitRemoteAuthDeviceTest)。

内置 Tailscale(tsnet)

  • 设置 → 工具 → Tailscale 可在 Nexara 进程内运行一个 Tailscale 节点(libnxtailnet.so 子进程,基于 tsnet),不占用系统 VPN,可与其它 VPN 同时使用。支持浏览器登录或 auth key、自建控制服务器(Headscale)、临时节点与设备白名单;节点只在 Nexara 运行期间在线,没有后台服务。
  • 启用后,SSH 主机(含添加主机时的指纹探测)、shell_exec、python_exec(含内置 git 及其 HTTPS 凭据代理的上游请求)以及共享 HTTP 客户端发出的请求可以访问 tailnet IP(100.64.0.0/10、fd7a:115c:a1e0::/48)与 MagicDNS 名称;其它目标保持原有路径(未启用时与此前完全一致,不经 Nexara 本机代理)。web_fetch 仍只访问公网。
  • 新增只读工具 tailnet_status,返回节点状态、本机名称与 IP、tailnet 名称和设备列表,不含登录链接与代理信息。
  • tsnet 状态写入不进备份的应用私有目录;auth key 存于 SecretStore,不进备份、日志、命令行与模型上下文。本机代理只监听 127.0.0.1,只接受每次启动随机生成的凭据。退出登录会同时删除已保存的 auth key。
  • 构建需要 Go 1.21 及以上(经 GOTOOLCHAIN 固定使用 Go 1.27.1,依赖由 go.sum 锁定,产物可复现),-Pnexara.goExecutable 指定 go,-Pnexara.tailnet=false 跳过。CI 的 Gradle 作业安装 Go 1.27.1;发行校验要求每个带打包 Python 的 ABI 都有对应架构的 libnxtailnet.so,并对其中的上游常量做窄豁免。第三方许可见 docs/legal/THIRD_PARTY_NOTICES.md。

打包 Python 预编译字节码

  • 标准库与内置 git 依赖的 zip 在构建期预编译为不核对源码的哈希 pyc:标准库只放 pyc,dulwich 与 Nexara 模块保留源码。真机实测一次 Git 状态检查从约 2 秒降到约 0.2 秒,shell_exec 中每条 git 命令与 python_exec、python_sandbox 的启动同步变快。
  • 构建需要与打包 CPython 的 pyc magic 一致的宿主 Python 3.14(默认 PATH 中的 python3.14,可用 -Pnexara.hostPython 指定)。magic 登记为 python-android.properties 的 pycMagic,构建时与官方包头文件核对,不一致时失败;-Pnexara.pythonBytecode=false 可跳过。CI 的 Gradle 作业改为先安装 Python 3.14。
  • 发行校验新增打包 Python 字节码检查:关键模块缺少哈希 pyc、magic 不一致,或某个 ABI 缺少任一 zip 时,拒绝该 APK。

同批次工具调用的执行步骤与引用丢失

  • 修复同一批次执行多个工具调用时,前序调用的 tool_call/tool_result 步骤与搜索引用被后续调用覆盖的问题。根因是消息更新先进入 100ms 节流缓冲,而追加步骤与合并引用时从 store 读取尚未刷新的旧列表再整体写回。MessageManager 新增 updateFromLatest,在缓冲锁内基于“已提交消息 + 正在刷新的缓冲 + 待刷新缓冲”计算增量;工具步骤、引用合并与流式规范化补充的合成步骤均改走该入口。

资源管理器跟随会话工作区

  • 会话绑定自选目录(项目文件夹或共享存储)时,资源管理器文件区改为直接浏览该目录:逐级进入子目录,文本文件有界预览(256 KB),任意文件可通过私有只读副本交给其它应用打开(8 MB)。读取经会话工作区解析器给出的同一目录后端,沿用符号链接拒绝、越界路径与保留名校验;每次列目录或读取前重新解析绑定,目录失效或绑定变化时随即切换状态。此前该区域始终显示会话私有工作区,Agent 在目录中创建的文件不可见。
  • 工作区不可用时显示原因与重试,不回退到会话私有工作区。目录与不可用状态下停用搜索、导入与会话回收站:回收站页说明目录内被删除文件的备份位于外部文件夹的挂载回收区,文件页根目录保留外部文件夹入口。私有工作区行为不变。

Git 变更面板与工作区切换提示

  • 会话工作区是 git 仓库时,会话资源面板显示分支与改动数。点开后面板分组列出已暂存、未暂存、未跟踪文件,单文件可分别查看 HEAD 对索引、索引对工作区的差异,另有最近提交列表及单个提交相对父提交的差异。面板只读,数据由打包 Python 直接运行 nexara_git --nexara-inspect(status/read/log/commit)获取,不经过 shell_exec 与执行审批。结果以单个 JSON 写入应用私有临时文件,限额为每组最多 2000 条、单文件 512 KiB、提交列表 50 条、单次 60 秒。
  • 会话切换工作区后,聊天流中留下一条居中的切换提示。提示以带标记的 SYSTEM 消息保存,协议消息与历史摘要都跳过它;系统提示词同时提醒模型:历史消息中的路径、uuid 与哈希可能属于之前的工作区。
  • 设备门禁新增 workspace-picker 与 git-inspector 阶段。

自选工作区选择器与入口

  • 新增工作区选择器(底部弹层)。起始页列出已登记的工作区,下面可浏览两类位置:一是 Nexara 项目文件夹,可新建项目,名称限 [A-Za-z0-9._-];二是侧载渠道的共享存储卷,可逐级进入并新建子文件夹。浏览时跳过符号链接和卷顶层的 Android。未授予“所有文件访问”时显示授权引导;Play 渠道不显示共享存储。选定的目录登记后即可使用,重复登记会复用已有记录。
  • Agent 编辑页新增“默认工作区”,只影响之后新建的会话;编辑页保存会保留默认工作区和用户规则。会话设置新增“工作区”,显示名称、类型和位置。工作区不可用时写明原因,可改用会话私有工作区或重新选择。生成进行中或有待审批的工具调用时禁止切换。
  • 知识库文件页新增“工作区”分组:只读浏览已登记的目录,可预览文本文件,也可把单个文件加入知识库(复用快照复制,并在读取前后核对文件未变);可重命名或删除登记。删除只针对无引用的登记,不会删除目录内容,也不会自动索引整个目录。

文件改动指示器与审批差异预览

  • write_file、create_file、patch_file、delete_file、move_file 成功执行时,在执行时计算每个文件的增删行数与差异分段,以 fileChanges 随执行步骤保存(仅供界面展示,不进入模型上下文与工具账本;为空时不写入,历史消息照常解码)。差异分段单文件不超过 32 KiB、单次结果不超过 128 KiB,超出、二进制、大文件或内容无法读取时只保留计数或原因。
  • 执行卡逐个文件显示路径与 +N −M,标题汇总“N 个文件 +X −Y”(折叠的步骤标题与文件行一样,+N 用成功绿、−M 用错误红);新建只显示 +,删除只显示 −,二进制与大文件单独标注。点开文件在底部面板按已存分段显示差异与真实行号。私有工作区的 shell_exec 结果按 workspace_changes 列出改动文件。
  • 文件修改审批卡在批准前显示差异:覆盖写入对比当前内容,新建显示全新增,补丁按干运行结果显示,删除显示将删除的行数;读取失败或超限时回退到原有文本预览。

文件差异视图组件

  • 新增可复用的 FileDiffView:统一与并排两种视图(宽度不足 600dp 默认统一视图,可手动切换),带行号与增删着色,变更前后保留 3 行上下文并折叠其余未变更区段,可点开展开。末尾换行状态不同时按 Git 规则标注“文件末尾无换行”。
  • 长行在视口内横向平移,行号与标记栏固定,并排视图两侧同步平移且各占一半;正文视口默认最高 480dp,可嵌入聊天列表。
  • 降级:二进制文件只显示提示;任一侧超过 5000 行或 512 KiB 时只给出 +X −Y 摘要;整文件重写等复杂变更改走线性空间编辑距离摘要,避免逐行回溯表占用上百 MB。尚未接入审批卡与执行结果。

自选工作区目录后端与命令执行

  • 会话绑定自选工作区(Nexara 项目文件夹 filesDir/projects/<位置>,侧载渠道另有共享存储文件夹)后,文件工具、脚本网关与审批目标解析把 / 指向该目录,经不跟随符号链接的真实路径目录后端读写,保留 expected_sha256 并发校验、删除回收与差异;/mnt/<别名> 挂载照常可用,私有工作区的 UUID 与路径在此模式下不可达。目录后端移入 main 源集,共享存储根仍只在侧载渠道开放。
  • 记住的审批目标带上当前工作区身份,切换工作区后需重新审批;操作期间工作区变化时拒绝执行。目录缺失、登记被删或授权丢失时一律拒绝,不回退到会话私有工作区。
  • shell_exec/python_exec 在自选目录直接运行:不持工作区锁、不做 Room 对账,结果以 workspace_kind 与 workspace_tracking: "none" 代替 workspace_changes;命令环境新增 NEXARA_WORKSPACE_KIND。系统提示词在启用文件或进程工具时写明当前工作区与不可用原因。
  • 新建会话复制 Agent 默认工作区,分支会话保留绑定,会话局部更新可切回私有工作区;删除会话只解除自选工作区引用。
  • 内置 git 抓取范围对齐 git:--depth 隐含 --single-branch 并自动跟随标签,支持 --single-branch/--no-single-branch/--no-tags,单分支克隆后 fetch 仍只取该分支,省略远端时取上游远端或 origin;私有工作区 clone 提示改用自选工作区;共享存储仓库在首次检出前写入 core.symlinks=false、core.filemode=false、core.ignorecase=true,并列出检出为普通文件的符号链接与仅大小写不同的路径。

自选工作区与 Agent 用户规则数据层(数据库 v22、备份载荷 v5)

  • 数据库前进迁移 21→22:新增 workspaces 自选工作区登记表(project/shared 两类,同类同位置唯一)、会话 workspace_id、Agent default_workspace_id 与 user_rules,以及按 Agent 保留最近 20 版的 agent_rule_revisions 规则历史。旧数据迁移后绑定为空、用户规则为空,行为不变;界面与工具接入在后续阶段完成。
  • 登记校验位置格式并对重复目录返回已有记录;仍被会话或 Agent 引用的工作区不能删除。Agent 编辑页整行保存时保留数据库中的用户规则,删除 Agent 一并清理其规则历史。
  • 双库恢复的 v18 合同改用冻结的 Agent/会话实体副本,避免当前实体变化导致历史身份校验漂移;可信版本与身份集合纳入 v22。
  • 备份载荷升级为 v5:包含工作区登记并校验位置、唯一性与会话/Agent 引用;规则历史不进入备份,恢复时清空。历史 v1–v4 备份按空工作区与空规则恢复,v4 载荷若出现工作区表则整体拒绝并保留当前数据。

审批卡、计划条与步骤行视觉减负

  • 审批卡重排:标题直接写明动作(如“运行 Python”“删除 SSH 主机”)并在同一行附风险标签,原始工具名与目标以一行等宽小字跟随;去掉前置图标与“当前审批”等重复文案,风险提示拆成逐条短句。操作区改为自动换行的单行:次要操作靠左,“拒绝 / 批准”靠右,不再整行留白。多项审批以“接下来还有 N 项”分隔。
  • 计划条去掉边框,融入输入框浮岛顶部,与输入文字左对齐。出现、消失、展开、收起都使用无回弹的弹簧尺寸动画加淡入淡出;本次会话里看到计划由未完成变为全部完成,停留 2.5 秒后自动收起;打开会话时已完成的计划不再显示。
  • 检索、思考与工具步骤行高度从 40dp 降为 36dp,文字透明度降低。收起时不显示箭头,展开后才淡入;点击后打开底部面板的行(检索与搜索结果)始终不显示箭头。

思考内容回传

  • OpenAI Chat Completions 兼容协议族(OpenAI 预设、通用兼容及 DeepSeek、Kimi、Qwen、GLM 等厂商预设)统一按来源字段回传思考:流中记录思考正文来自 reasoning_content 还是 reasoning,随助手消息保存,后续请求在同一字段原样回传。DeepSeek 与 Kimi 带工具调用时官方要求回传,否则 DeepSeek 返回 400;把 DeepSeek 端点配置为通用协议同样生效。没有保存来源字段的旧消息,仅 DeepSeek 与 Kimi 预设沿用固定的 reasoning_content。
  • Anthropic 协议收集流中的 thinking(含 signature_delta 签名)与 redacted_thinking 块,在同一用户回合的工具循环内按原顺序、原样放在助手内容最前回传;跨回合不回传,避免系统提示或工具列表变化导致签名失效。服务端仍以思考块签名无效返回 400 时,自动去掉全部思考块重发一次。
  • 思考状态以带版本与来源模型的信封保存在消息的 thought_signature 列,只回传给产生它的同一模型;旧版原始签名、损坏数据与未知字段名一律忽略。

Gemini API 协议与 thought signature 回传

  • 新增 Google Gemini API 协议(generativelanguage.googleapis.com,API Key 认证):服务商预设“Gemini”改用该协议,原 Vertex AI 预设单列为“Vertex AI”;自定义服务商也可选择 Gemini 协议以接入兼容网关。API Key 只经 x-goog-api-key 请求头发送,不进入 URL;地址保留配置的版本段(v1、v1beta 等),默认 /v1beta;支持拉取模型列表与连接测试。
  • Gemini API 与 Vertex AI 共用同一套 generateContent 编解码:解析流中的 functionCall 并按 thoughtSignature 保存正文与每个调用的签名,后续请求把签名原样附回对应 part;同一模型的整段历史均回传。当前回合缺签名的函数调用(如中途换模型)只在首个调用补官方占位签名 skip_thought_signature_validator,避免 Gemini 3 返回 400。服务端未返回调用 ID 时本地生成,回传时不作为 functionCall.id 发送。
  • 签名回传就绪后,Vertex AI 与 Gemini API 均开放工具调用。工具参数以 parametersJsonSchema 声明,完整 JSON Schema 不再被 OpenAPI 子集拒绝;Agent 模式不再叠加内置 Google 搜索(与函数调用组合时需回传内置工具 part),普通对话仍按开关使用 googleSearch。
  • 生成参数改为 camelCase 且只发送显式设置的项:不再默认发送 temperature: 0.7(Gemini 3 官方建议保持默认温度),不再发送 Gemini 不支持的 repetition_penalty。STOP 以外的终止原因(如 MAX_TOKENS、SAFETY)在流式中显示为失败,而非未知错误。

Anthropic 新一代模型请求参数

  • Claude 5 系列与 Opus/Sonnet 4.7 及以上不再发送 temperature、top_p、top_k(官方对非默认采样参数返回 400)。Claude 5 系列固定请求 thinking: {type: adaptive, display: summarized} 以显示思考摘要;4.6–4.9 在开启思考时使用 adaptive;更早模型沿用 enabled 加 budget_tokens,开启思考时同样不发送采样参数。

发送后输入框立即清空

  • 点击发送立即清空输入框、文档与图片附件,发送按钮随之恢复,不再等长文本或附件准备完成后才清空。生成被回滚(如完整文档超出上下文预算、准备失败)时,原内容填回仍为空的输入框与附件区;会话持久化草稿在生成被接受后才清除。生成期间新输入的文字与附件不会在请求被接受时被清掉。

流式请求自动重试

  • 断网、超时、限流以及服务端标记可重试的错误,会自动重发本轮请求。默认 10 次,可在“工具设置 › 执行轮次与预算”中调整(0–20,0 为关闭),并纳入备份。退避从 1 秒按指数增长,上限 30 秒;限流带 Retry-After 时按服务端要求等待,上限 60 秒。重试前丢弃本轮已输出的部分内容;本轮尚未执行任何工具,不会重复副作用。鉴权等不可重试错误仍直接失败。
  • 等待重试期间,输入框上方显示原因、倒计时与次数(如“网络波动,4 秒后重试 · 3/10”),并通过无障碍礼貌播报;新一轮开始输出后消失。

密钥输入框支持普通键盘与粘贴

  • API 密钥、备份口令、MCP Bearer、SSH 口令与私钥口令等输入框不再声明密码键盘类型。系统与输入法原先会对密码类型(含可见密码变体)强制切换安全键盘并禁用剪贴板,长随机密钥无法粘贴。现以普通文本类型请求输入法,同时关闭候选词并要求输入法不学习输入内容,屏幕上仍显示掩码。
  • 统一由 SecretKeyboardOptions 与 SecretTextInput 提供。新增单测扫描界面源码,禁止再使用密码键盘类型;新增设备测试,从真实 Compose 文本会话读取 EditorInfo 进行校验。

行内代码无障碍文本

  • 正文、列表与标题中的行内代码,两侧内边距占位不再以 U+FFFD 替换字符进入无障碍文本,读屏不会再念出“替换字符”。占位的替代文本改为不换行空格,断行规则与原来一致,截图基线无变化。
  • 表格单元格改为按内联内容注解剔除占位,不再删除所有 U+FFFD,用户原文中真实的该字符得以保留。新增设备测试检查无障碍文本,表格单测改用真实 appendInlineContent 构造占位。

Release 版 SSH 与资源管理器搜索修复

  • Release 包 SSH 握手修复:R8 把 JSch 的 Session 等同包类移出原包,导致其反射创建包内私有的 KEX 与认证类时抛 IllegalAccessException,所有连接在 Release 中失败。现保留 JSch 顶层包类名与成员(仍允许裁剪未使用的类);新增单元测试核对应用固定算法表涉及的每个反射类都有对应保留规则。
  • ssh_host_install_key 修复:主机存储在认证方式变化时按安全约定清除已信任指纹,切换为密钥认证后,验证登录被指纹固定校验拒绝,工具误报“用新密钥登录失败”并回滚,回滚后还需再次确认指纹。现在切换和回滚时都会重新固定本次调用中刚核对过的同一主机密钥,不接受任何新密钥。技能测试中的内存假存储也改为与真实存储同一契约。
  • 资源管理器搜索框修复:紧凑横屏布局原先按面板剩余高度判断,键盘弹出压缩高度后布局来回切换,搜索框被重建、焦点丢失,键盘弹出后立即收回。现改为按窗口高度判断;新增设备测试,验证可用高度缩小后搜索框仍保持焦点。

胶囊页签触控高度

  • 全站胶囊页签(NexaraCapsuleTabRow / NexaraTabSwitcher)容器统一为 56dp,页签触控区占满容器高度,上下 4dp 内缩只作用于滑动底座;调用方不再能传入自定义高度。会话设置弹层、RAG 详情、技能页、Prompt 编辑器与执行模式选择器的页签由原来的 32–38dp 提升到 56dp,资源管理器的单独高度特例随之删除。
  • 设备测试新增胶囊页签在手机 2.0x 字号与横屏下的 48dp 触控高度断言;执行模式选择器原有的 48dp 断言此前一直失败,现已通过。

测试稳定性

  • SSH 集成测试修正全量负载下偶发残留会话:主机密钥探测在客户端断开后即返回,测试服务端异步移除会话;信任步骤改为等待服务端会话真正移除后再继续,拒绝路径另断言服务端未新建任何会话,断言语义不放宽。

工具失败文案

  • 工具失败时,执行步骤与发给模型的工具消息不再只截取前 200 字符:结构化结果优先保留错误码、指引、退出码与 stderr,stdout 与 stderr 超长时保留尾部并标注原始长度,总长 4000 字符;纯文本失败保留前 1000 字符。
  • 文件工具找不到路径时附带下一步指引:write_file/patch_file 提示新建文件用 create_file,父目录缺失提示 create_directory,uuid 失效提示改用 path。

命令结果格式统一

  • termux_exec 与 ssh_exec 返回同一结构:error_code、guidance、exit_code、timed_out 在前,随后为 stderr、stdout、各流原始长度与截断标记(truncation 区分 head_removed/tail_removed/none),后端专有字段在后。
  • ssh_exec 退出码非 0 或超时记为失败步骤(与 termux_exec 一致);超时返回 SSH_TIMEOUT 与“远端进程可能仍在运行”的指引。stdout 与 stderr 合计超限时平分额度,大量 stdout 不再把 stderr 挤成空。
  • SSH 各类失败由 SSH_ERROR:<码> 纯文本改为 error_code + 按错误码给出的 guidance(如会话不存在提示 ssh_session_open、SHA256 冲突提示重新读取)。

打包 Python

  • 两个渠道随 APK 打包官方 CPython 3.14.8 Android 嵌入包(Release 通用包只带 arm64-v8a;按 ABI 过滤的构建可带 x86_64),供后续内置命令执行使用;构建时从 python.org 下载并按 SHA-256 校验,产物不入库。标准库存为不压缩 zip,原生扩展从安装目录加载,运行时不解压、不从应用数据目录加载代码。armeabi-v7a、x86 与 x86_64 设备上的 Release 没有 Python。
  • 原生库改为安装时解压(useLegacyPackaging):Release 通用 APK 由约 20.8 MB 增至约 29.8 MB,安装后原生库目录约 33 MB(单 ABI)。
  • 发行 APK 敏感信息扫描对打包的官方 Python 条目放行上游构建机 runner 路径,并对标准库 zip 放行保留地址常量与 venv 示例路径;凭据类模式、其它用户路径及自编译启动器照常检查。

输入框上方计划条

  • 任务计划从消息列表底部移到输入框上方,收为单行计划条:当前步骤、n/m 与 2dp 进度线;点击展开步骤列表(最高 240dp,可滚动)及“标记已完成 / 继续处理”。
  • × 按钮:未完成计划隐藏为状态胶囊,点胶囊恢复,计划进度或当前步骤变化后自动重新出现;已完成计划直接清除。标题行、× 与胶囊均保持 48dp 触控目标。

表格按内容列宽与横向滚动

  • 会话与文档预览中的表格按单元格内容测量列宽(56–280dp,超出部分换行),总宽小于屏幕时按比例铺满,超出时由统一的宽内容容器横向滚动;单元格保留粗体、斜体、行内代码与链接,行内代码前不再出现占位符 �。

工作区资源管理器目录下钻

  • 会话资源管理器改为与知识库一致的目录下钻:进入文件夹只显示该层,面包屑与系统返回键逐级返回;面包屑组件由知识库与资源管理器共用。搜索时平铺显示匹配项与“工作区 › 目录”路径,点击进入其所在目录并清空搜索。
  • 页签容器加高到单个页签保有 48dp 触控高度(2.0x 字体设备测试覆盖)。

SSH 主机编辑面板抖动修复

  • 添加/编辑 SSH 主机的底部面板关闭拖拽手势,内容滚动到顶后继续上滑不再在内容滚动与面板拖拽之间来回交接导致上下抖动;面板仍可通过取消、返回键或点击外部关闭。

Agent 管理 SSH 主机

  • SSH 主机页新增“允许 Agent 管理 SSH 主机”开关(默认关闭,属于设备授权,不随备份导入导出);开启后提供 ssh_host_list、ssh_host_save、ssh_host_delete、ssh_host_install_key 四个工具,关闭时不出现在工具列表,调用返回 SSH_AGENT_HOST_MANAGEMENT_DISABLED。
  • 保存、删除与安装公钥在任何执行模式(含全自动)下都需逐次审批,审批目标绑定主机别名且不可“始终允许”。密码与主机指纹通过应用内弹窗由用户输入或确认,5 分钟未响应按取消处理;工具结果只含别名、地址、认证方式、是否有凭据与指纹是否已信任,从不返回密码或私钥。
  • ssh_host_install_key 只接受本机生成的 Ed25519 公钥并以固定命令幂等追加到 ~/.ssh/authorized_keys,随后用新密钥验证登录;验证失败时恢复为原密码认证并返回 SSH_KEY_LOGIN_FAILED。修改主机名或端口会清除已信任指纹。

网络搜索工具合并

  • 只保留 web_search 一个搜索工具,按“设置 → 工具 → 联网搜索”中选择的引擎(DuckDuckGo、Keenable、Tavily、SearXNG)执行;移除与其共用配置的独立工具 search_tavily、search_searxng,设置页的工具列表与搜索配置页随之合并。开关以 web_search 为准,引擎、结果数与域名过滤沿用原设置;历史会话中旧工具的调用记录照常显示。
  • 删除未接入的 ToolOrchestrationPlugin(按关键词临时注入搜索工具的旧插件)。

Python 沙箱

  • 新增 python_sandbox 工具:在隔离 UID 服务(与 exec_js 同一进程)中运行打包 Python,看不到应用私有数据与工作区物理目录、没有可写目录、不能直接联网。工作区读写与受限 fetch 经 import nexara 交给主进程,复用脚本的文件审批、挂载校验、网络策略与 128 次能力调用上限;风险等级与 run_script 相同。
  • 用户代码的 fd 0/1/2 换成管道,C 扩展或 os.write 的输出同样转发,不会混入控制通道;结果为 exit_code、stdout、stderr 与 result,超时终止子进程并保留已有输出。设备测试验证读不到私有文件、无法建立套接字、能力往返与超时后无残留 Python 进程。

内置 git 与 pip

  • shell_exec 新增 git:基于随 APK 打包的 dulwich 1.2.17(纯 Python,与 urllib3 一起合成 libpysite.so,构建时按 SHA-256 校验 PyPI wheel),开放 clone、status、add、commit、log、diff、branch、checkout、fetch、pull、push、remote、stash、tag 等常用子命令与 -C <目录>;add -A、commit -F、log -<N>、branch -a/-r、remote -v/get-url/set-url/remove 由包装补齐;克隆、拉取等以回车刷新的进度只保留最终状态,不再挤占输出尾部。clone 与 fetch 像 git 一样只取 HEAD、分支与标签,不再下载 GitHub 为每个 PR 通告的 refs/pull/*(--depth 1 克隆 octocat/Spoon-Knife 由约 636 MiB 降到约 60 KB)。不支持的子命令、全局选项与 SSH 远端返回 GIT_UNSUPPORTED 与改用 Termux/SSH 的指引;未配置提交身份时返回 GIT_IDENTITY_MISSING,不再以 u0_aNNN@localhost 提交。python_exec 可直接 import dulwich.porcelain。
  • 侧载版新增 pip/pip3:运行标准库自带的 pip 26.2.1,把纯 Python 包装到应用用户目录并可直接 import;安装出原生扩展时提醒其无法加载。Play 版 pip 返回 PIP_UNSUPPORTED。
  • 命令结果的 workspace_changes 不再逐条列出 .git 内部文件,改为 git_internal_changes 计数;这些文件照常入索引,但不发布知识库向量化事件(.git/config 的远端地址可能带令牌)。
  • 发行扫描对 libpysite.so 只放行 urllib3 文档中的占位口令 URL。

内置命令执行

  • 新增 shell_exec 与 python_exec:不安装 Termux 也能在会话工作区根目录运行系统 sh 命令与内置 Python 3.14 代码(Python 仅 arm64-v8a 设备;其它架构返回 EXEC_PYTHON_UNAVAILABLE 与改用 Termux/SSH 的指引)。两者为 PROCESS 风险,半自动与手动模式下逐次审批并绑定完整命令或代码;审批卡提示可访问 Nexara 私有数据与网络、删除或覆盖的文件不进回收站。
  • 命令运行期间独占工作区写锁,结束(含失败、超时与取消)后按磁盘对账:新增条目入索引并按扩展名或内容判定 MIME,修改的文件更新哈希并重新排入文档索引,删除的条目连同派生数据与版本快照清理,同一 inode 的纯重命名保留条目身份与版本历史。结果的 workspace_changes 列出路径(超过 200 项截断并给计数),改动保留路径或创建符号链接、特殊文件时给出 WORKSPACE_RESERVED_PATH / WORKSPACE_UNSUPPORTED_ENTRY 警告;命令删除根身份标记时自动写回。进程中途被杀时,下一次修改工作区前先按磁盘收敛索引。
  • 命令以白名单环境变量在独立进程组中启动;超时先 SIGTERM、2 秒后 SIGKILL 整个进程组,正常结束时同组残留的后台进程同样被结束。输出中的工作区物理路径显示为 $NEXARA_WORKSPACE。Python 的 HTTPS 使用由系统证书拼成的 CA bundle。
  • 命令运行期间持有唤醒锁;侧载版另在通知栏显示“正在运行命令”、命令首行与计时,并提供“停止”按钮(多条命令时“全部停止”),停止后结束整个进程组并返回 EXEC_STOPPED,对话照常继续。Play 版只持有唤醒锁。半自动与手动模式下批准后的命令此前没有任何后台保活。
  • Nexara 被系统冻结或休眠的时间不再计入命令超时;累计暂停 3 秒以上时结果给出 paused_ms,并提示在应用耗电管理中设为“完全允许后台行为”。
  • 审批卡与授权列表中多行命令的换行显示为 ↵、制表符显示为 ⇥,不再被拼成看似不同的单行命令。
  • 命令审批卡的标题行只显示执行位置(如 builtin、termux),命令正文在下方代码块完整展示一次,不再在标题与正文重复;授权列表仍显示完整命令。

会话界面视觉重设计

  • 自动跟随覆盖生成结束后的操作行、积压放出与长回复异步解析,用户上滑后保持阅读位置;复制操作包含整轮全部正文,展开思考支持 Markdown。
  • 审批卡展示可复制的确切工具 ID,请求原因与风险、参数分开呈现;多项队列使用“批准当前 / 拒绝当前”。失败步骤与检索使用错误色,失败计数在窄屏优先完整显示;顶栏保留横向安全区。
  • 流式组件挂载时显示已有全文,仅新到达内容参与渐显;宽内容复用行宽缓存,代码高亮保留已着色前缀与实时尾部,节流期间不中断执行;系统动画设置共用一份观察。
  • 会话顶栏采用单行标题;消息流以 20dp 边距和 720dp 最大宽度居中,用户气泡右对齐,助手正文通栏阅读,完成后提供复制、重新生成、分支和删除操作及模型时间信息。
  • 思考、工具与检索采用无底色步骤行,折叠时使用自然语言概括;参数、结果和内部工具标识位于展开详情。审批卡以文字说明风险,“批准”为唯一实心审批按钮。
  • 流式文字按到达速率和积压逐帧放出,保护 emoji 与组合字符;Markdown 使用阅读行高与块间距,代码、链接等受保护内容中的空行保持原样。
  • 输入区采用单一圆角容器,附件位于文字上方,模型、上下文百分比和发送/停止位于同一工具行;任务和后处理状态显示在容器上方。
  • 正文段落间隔 16dp,列表项间隔 10dp;代码内边距与语言名对齐,表头和单元格同字号。运行步骤使用文字微光,审批目标和风险各显示一次,40dp 图标与审批按钮保留 48dp 触控范围;输入区高度与键盘视口变化时仅在自动跟随开启时保持尾部可见。
  • 输入框保留 48dp 点击高度,文字上下各留 12dp,单行输入区约 96dp;六行上限按完整行高计算,末行不被裁切。不超过 12000 字符的非流式 Markdown 同步解析,避免消息先以空正文布局后增高、把已滚到底部的尾消息挤出视口。
  • 设置分组脚注的最后两个中日韩字符保持同行,窄屏大字号下末行不再只剩一个字。

知识库检索状态分类

  • 未选择嵌入模型时,记忆与知识库检索静默跳过,回复不再每轮出现红色“未能检索知识库”;没有可检索范围(未开启记忆且未选择文档)同样跳过。历史消息中这两类记录一并隐藏。
  • 首次遇到未选择嵌入模型时,会话页提示一次“未选择嵌入模型,记忆与知识库检索已跳过”,操作“去设置”打开“默认模型”;之后不再提醒。Provider 中已有的嵌入或重排模型不会被自动选为默认,仍需在“默认模型”中选择。
  • 嵌入模型已配置但查询请求全部失败时改记为检索失败,继续以错误色“未能检索知识库”显示,详情说明同步更新。

分享导入重复判定

  • 修复已导入文件从同一来源(MediaStore、FileProvider 等稳定 content URI)再次分享时被永久判为重复、静默丢弃且无提示的问题。已消费记录只拦截系统重放的同一 Intent(保存状态重建、进程死亡恢复、最近任务重启);用户新的分享即使 URI 相同也重新进入导入弹层,同名导入沿用既有副本命名。
  • 新分享与仍在待导入队列中的请求重复时提示“该文件已在待导入队列中”;系统重放保持静默。
  • 收件箱索引新增已消费 requestId(上限 32),启动恢复按 requestId 识别 ack 后残留目录,避免已消费指纹误删重新分享后尚未写入索引的请求;旧版索引按原指纹规则兼容。
  • 补充 JVM 回归(再次分享、待处理重复、崩溃恢复、旧索引兼容、投递来源判定与传递)及设备回归(固定 URI 连续两次分享均弹出导入弹层),并修正设备测试在启动恢复完成前读取分享状态的竞态。

设置页视觉重设计

  • 带副标题的设置行最小高度改为 64dp,标题与副标题间隔 2dp、上下内边距 12dp,字号不变;放大字号时行高随内容增长并保持内边距。
  • 设置行统一为共享布局:单行 48dp、带副标题 56dp,标题 16sp/22sp、副标题 13sp/18sp 且最多一行;行尾开关、数值、步进器与标题垂直居中,同组图标统一有或无。窄屏长标题和放大字号时完整换行。
  • 数值设置改为“值 + 箭头”行加底部选择弹层(离散预设、自定义输入与范围校验、连续滑块与恢复默认),小范围整数使用 36dp 行内步进器;设置页正文不再出现滑块。执行轮次的“不限”并入预设,仍写入 0;数值范围、默认值与存储键不变。
  • 解释性文字移入分组脚注(阅读换行、不超过 3 行,安全与风险说明除外)或对应选择弹层的说明;设置首页不显示脚注。每屏最多一个强调按钮,危险操作为错误色设置行;中文界面统一使用 Token。
  • 会话设置第四标签改为“上下文”,上下文管理、检索、长期记忆来源与显示四组使用统一分组样式。
  • 增加数值合同与会话检索单元测试、设置布局与选择交互设备测试,以及设置页、选择弹层和组件的中英文、深浅色、411dp/360dp 截图覆盖;提供商模型开关保持 48dp 触控区。

会话上下文自动与手动压缩

  • 统一上下文压缩阈值和最近轮数设置:未达阈值发送全部未摘要历史,超过预算先折叠旧工具结果,再按完整用户轮次生成历史摘要;每次请求前与轮后使用相同预算检查。
  • 上下文用量面板和会话设置新增“立即压缩”,共用进度、串行会话锁及摘要用量账本;当前轮、最近对话和最近三个工具调用轮受保护,完整原文保留。
  • 工具折叠按会话、消息和正文哈希缓存到不参与备份的私有目录,支持跨进程复用和会话删除清理。旧消息窗口按三条折算一轮,旧工具压缩偏好在恢复时忽略。
  • 历史摘要与工具折叠使用当前会话模型;“摘要模型”设置显示为“快速模型”,继续用于标题、新会话、新 Agent 与知识图谱抽取的默认模型。
  • 摘要与归档标记共同事务持久化;旧会话缺失摘要时恢复完整历史,删除、撤销与编辑保持摘要和原文一致,过期摘要结果拒绝提交。

设置与 Agent 能力界面视觉统一

  • 工具设置按执行轮次与预算、脚本运行时、本机与远端分组;数值使用值行选择弹层与可访问的行内步进器,局域网白名单在底部弹层编辑,导航入口展示状态。
  • Termux、SSH、外部挂载、工具授权与知识图谱控件统一使用项目设置组件和主题标尺;命令使用等宽、可横向滚动与复制反馈的共享命令块,补齐中英文文案。
  • 增加工具设置、Termux 安装与就绪、SSH 空态与主机列表及共享组件的深浅主题截图与大字号覆盖;运行时配置、授权、连接和审批规则保持原有行为。

真机反馈修复(2026-10-17)

  • termux_exec 把空字符串、~ 与 $HOME 形式的 workdir 按省略处理(默认 Termux 主目录);修复前模型为可选参数填空串或主目录简写时整次调用被判为参数无效、未派发到 Termux,表现为“空返回、exit_code 为 null”,而设置页诊断只传固定命令故能通过。参数无效时结果写明具体字段与原因。
  • termux_exec 启动 Termux RunCommandService 时优先普通启动,仅在系统因后台启动限制抛出异常时退回前台服务启动;真机 ColorOS 16 上前台服务启动会静默返回空组件。系统未返回服务组件时报告 TERMUX_START_FAILED 并说明可能被应用关联启动限制拦截。ColorOS 默认“智能优化后台运行”会静默拦截跨应用服务启动,引导文案提示把 Nexara 与 Termux 设为“完全允许后台行为”。结果 JSON 将 error_code、guidance、timed_out 置于开头,失败卡片截取前段时仍可看到根因;Termux 设置页诊断失败时显示异常详情。

移动端设备验收基础设施(2026-10-17)

  • 增加离线真实 WebView 的公式、流程图、图表、文件/内容与私网请求门禁、导航阻止及池复用设备合同;minimum/full 同时接入 SAF 与隔离脚本全部 8 例。
  • 增加 SSH 设备合同,覆盖首次信任、错误指纹、exec/超时、SFTP 条件写入冲突、PTY、回环转发、密码脱敏、前台通知及真实 Agent 工具审批账本;独立 MINA 宿主夹具仅监听回环,认证会话使用 0600 临时文件,不进入 APK。
  • full 接入侧载真实路径、旧库提升和 v18→v21 独立迁移等设备合同;SSH 使用受控 ADB reverse、认证参数标准输入注入与产物前脱敏,补充运行步骤及宿主工具回归。

独立审阅缺陷修复(2026-10-17)

  • SSH 输出在原文上匹配跨分片私钥标记与全部凭据,统一遮蔽重叠敏感区间,并隐藏流结束时的待决尾部。
  • SSH 会话授权绑定主机稳定 ID、地址、端口、用户名与受信指纹等连接身份;身份变化或同名重建后旧授权失效,执行使用经复核的主机快照,审批和授权列表显示别名。
  • 历史库提升与双库来源探测依据 v18–v21 完整导出 schema 校验表、列、默认值、主键、索引与外键;校验合同在构建时生成,无运行时测试源集依赖。
  • 私有工作区与挂载文件共用原文件坐标的区间补丁算法,删除或替换与端点插入的结果不依赖参数顺序,冲突在写入前整批拒绝。
  • 总提示词预算拦截回滚准备消息时,已发生的辅助摘要用量持久保留并计入统计;删除失败和重复回滚不重复计费,保留预算错误提示且不残留空回复。本机用量账本排除应用备份。

Termux 本机终端与环回 MCP(2026-10-17)

  • 新增默认关闭的 Termux 集成与 termux_exec,通过 RUN_COMMAND 后台运行 bash,支持工作目录、stdin、默认 60 秒与最多 600 秒超时;PROCESS 审批固定绑定 termux 和完整命令。两个发行渠道均声明调用权限与包可见性。
  • 显式应用内 PendingIntent 回调按唯一请求 ID 关联,分别保留 stdout/stderr 的原始长度及截断标记,识别安装、版本、权限和外部应用开关错误。超时/取消只结束本地等待并丢弃迟到结果,提示命令可能仍在执行。
  • 工具设置新增 Termux 诊断与分步引导,提供安装与权限入口、外部调用配置命令、SSH 公钥与 authorized_keys 命令复制、主目录 SAF 授权挂载及 Android 子进程/唤醒锁说明。
  • 本机 MCP 为默认关闭的高级选项,HTTP 仅允许显式端口的 127.0.0.1,访问令牌必填并存于 SecretStore;发现和执行使用 Bearer,工具默认 PROCESS 风险。主配置和 Debug 网络安全配置均仅对精确 127.0.0.1 放开明文,认证请求不跟随重定向。
  • Termux 与本机 HTTP MCP 的启用开关显式登记为设备本地授权状态,不进入跨设备备份;本机 MCP 令牌不进入现有备份白名单。

设备验收修复(2026-10-17)

  • SSH 工具定义对齐公共 schema 门禁,恢复命令审批、SFTP 文本读取与 PTY 输出读取;超时、输出量、读取范围和等待时限继续由运行时强制校验。
  • exec_js / run_script 工具定义移除不受支持的 minimum/maximum,修复真实聊天中两者预检即以 INVALID_DEFINITION 失败;新增覆盖全部内置工具 schema 的定义预检回归测试。
  • 发行覆盖升级门禁 android-release-upgrade-smoke.sh 的目标库改为 v21(identity b59d4265…),否则当前版本发行流程会在升级阶段失败;前台生成通知设备用例改为断言轮次、调用与 token 进度正文。
  • 侧载真实路径挂载:Android SELinux 禁止应用创建硬链接(link 返回 EACCES),发布新文件时改走已有的独占新建回退;修复前设备上所有写入均失败。
  • 设备测试:双库恢复工作区用例打开当前库时注册 v18→v21 前进迁移;SAF 跨 UID 测试提供商与授权 Activity 改为 Java,避免测试 APK 独立进程缺少 Kotlin 标准库而崩溃。

隔离脚本运行时(2026-10-17)

  • exec_js 使用隔离进程 QuickJS,支持 result、最后表达式、Promise、可选联网与超时;新增工作区 .js/.mjs 文件执行工具 run_script 及同根相对模块。两个渠道共用实现,移除 WebView 执行路径。
  • 文件代理复用工作区/挂载工具,覆盖与删除支持版本条件;默认追加文件风险审批,设置可让写入继承脚本审批,删除保持目标审批。审批显示来源会话,授权仍固定挂载身份;局域网精确主机白名单默认空,网络逐跳校验并固定 DNS,授权设置不随备份迁移。
  • 新增 30 秒默认/300 秒最大超时、64 MiB QuickJS 堆、64 KiB 总结果、有序截断日志及有界文件/网络能力;主进程监督取消与进程死亡,阻塞 I/O 与入口读取受独立 4 槽调度器约束,避免拖住 watchdog。
  • Kotlin 编译器、Compose 与序列化插件对齐 2.4.10 以读取 QuickJS 元数据,应用保留 2.2 语言级别;协程运行与测试依赖对齐 1.11.0。第三方许可及来源随依赖登记。Python 仅做临时包体与兼容性验证,隔离初始化与冷启动的设备数据待主控采集。

原生 SSH、SFTP 与交互终端(2026-10-17)

  • 工具设置新增 SSH 主机管理,支持密码、Ed25519 生成与口令保护的 OpenSSH 私钥导入、公钥复制、首次指纹确认与变化拦截。Room v21 保存非秘密主机配置,认证材料独立加密保存;SSH 配置及凭据均不进入应用备份。
  • 新增 ssh_exec、sftp_list/read/write、ssh_session_open/send/read/close,限定主机别名和会话所有权,审批精确绑定主机身份与命令/路径并显示别名。执行有总时限和输出上限,文件写入支持 SHA256 冲突校验与权限保留,取消关闭通道并回收临时文件。
  • 用户终端复用 Termux 仿真器与渲染器,支持 ANSI、光标、滚动、软键盘和控制键、旋转窗口调整;退出默认断开。回环端口转发仅监听 127.0.0.1,与用户终端共用可停止的前台通知,进程重启不自动恢复连接。
  • 生成生命周期覆盖终态、取消、待审批租约、停止与删除;远端文本按连接使用的认证材料脱敏,SSH 底层日志关闭。保留独立 v18 双库恢复合同并补充到 v21 的前进迁移。

知识图谱聊天检索、预算与大图浏览(2026-10-17)

  • 聊天按当前会话可见证据检索持久图,查询与命中文档共同选择有界种子,支持一至两跳扩展;KG 可独立于文档检索开启,持久图不足时按设置回退即时抽取。
  • 持久图和即时结果按实体及关系融合,低分关系优先裁剪;注入上下文与路径快照共用最终结果,详情及指示器展示来源、实体/路径数量与裁剪。已知模型窗口的提示词预算覆盖全部来源。
  • 文档抽取增加文档版本调用、输出 token、时长和单请求输出上限;大文档显示调用/token 估算并确认,超限保留部分结果及已处理分块。抽取用量在统计页单列 KG,缺失提供商用量时标明估算。
  • 图谱初始加载最多 300 个节点,支持实体搜索与按需展开;后台 Barnes-Hut 近似布局、ID 索引、线段裁剪、适配居中以及页面不可见/收敛后的休眠,画布与无障碍列表共用子图。
  • 同步图谱产品、架构和 ADR 文档,性能结论以具备设备、规模和测量方法的证据为准。

外部文件夹挂载(2026-10-17)

  • 两个发行渠道通过 SAF 授权文件夹,支持全局/会话作用域、唯一别名、只读与授权失效恢复;侧载渠道另提供所有文件访问授权后的共享存储真实路径,真实实现仅在侧载源集编译。
  • 十个工作区工具通过独立 /mnt/<别名> 路由访问挂载,复用文本预算、补丁与差异语义;版本冲突拒绝覆盖,跨后端移动采用复制、校验和删除源,失败进行补偿。审批目标显示虚拟路径并绑定挂载身份。
  • 新增有界挂载回收区、恢复入口、显式不可恢复删除审批;文件面板支持浏览、文本预览、只读快照外开及知识库快照导入与来源修改提示。既存私有 mnt 目录保留数据,由文件面板重命名解除路径歧义。
  • Room 19→20 新增挂载与快照元数据,保留旧库、备份和双库恢复身份校验;设备绑定授权不导出到备份。SAF 覆盖受提供商能力限制,缺少重命名时拒绝覆盖。

Agent 长任务执行底座(2026-10-17)

  • 审批展示规范化执行目标;可保存本会话的目标授权并在会话工具设置撤销。删除与进程执行显示醒目后果提醒;授权命中仍校验参数、工具定义和当前目标,批次内移动或撤销不会沿用失效授权。
  • 工具轮次支持“不限”,同时取消固定调用次数上限;新增单任务 token 预算、重复调用暂停及继续/停止,首次“不限+全自动”执行需要明确确认,可在设置重置。
  • 按会话自动压缩阈值折叠早期工具结果,保护最近三个工具调用轮,精确路由当前会话模型,失败或超时保留头尾。超过 16,000 字符的工具输出存入会话隔离的私有存储,可用 read_tool_output 分页读取,存储总量受限且随会话删除清理。折叠与卸载仅作用于模型请求,聊天历史保留完整内容。
  • 聊天页与前台通知显示累计轮次、调用数和 token,并标明估算用量;通知停止沿用现有取消语义,已执行工具的调用与结果在停止后保持配对。预算与估算用量在审批续跑后累计,摘要请求用量也计入任务。

发行渠道与富内容 WebView(2026-10-17)

  • 新增共享包名的 play / sideload 风味,仅侧载声明所有文件访问权限;提供集中能力入口,导出诊断包含当前渠道。现有构建类型、签名变量与包名后缀保持一致。
  • CI 显式使用侧载任务并编译 Play 风味,真实合并清单检查纳入门禁;发行链路准备双签名 APK、独立校验和、按渠道归档的 R8 mapping 与双渠道冷安装矩阵,旧版覆盖升级使用侧载资产。
  • 富内容 WebView 关闭文件/内容访问与原生桥接,使用受控 HTTPS 打包资源和带 DNS、重定向检查的公网 HTTPS 加载;阻止页面导航和子框架,保留现有本地图表、公式和原生 PNG 导出路径。

知识图谱实体与来源证据(2026-10-17)

  • Room v19 将全局实体、唯一有向关系与来源证据分离;名称、类型与关系统一规范化,事务 upsert 防止并发重复。来源删除按证据回收,置信度按当前范围的存活证据聚合,不误删其它文档或会话的共享知识。
  • JIT 保留文档版本,缓存绑定完整片段、模型与提示词配置,跨会话命中独立登记证据;后台提交核验文档存活状态与版本,文档删除同步失效图谱证据和缓存。检索路径显示来源文档。
  • 分批迁移合并旧重复节点并重指向关系,未知来源保存为 legacy,旧图无法追溯的抽取版本在重建后取得可校验证据;文件恢复继承已确认的建图意图,非工作区历史 KG 不阻断双库源数据恢复。常规备份排除并清理新增派生表,数据载荷 v4 兼容历史 v1–v3 的工作区行并保持必需表与字段校验。
  • 删除字符串 SQL 条件与无效助手参数,文档/会话读取按结构化证据范围筛选,预留带索引的种子实体读取入口。

知识图谱抽取与 JIT 正确性(2026-10-17)

  • 全量、手动与 JIT 抽取按稳定模型身份解析所属提供商,只发送远端模型 ID;共享 KG 模型与提示词配置,并在设置保存后重建抽取器。
  • 合法空图可提交;手动建图进入持久文件引用队列,复用 PDF、DOCX 和大文本解析、文本预算、hash/epoch 校验与删除屏障,在事务内切换图谱及完成标记,保留已有向量,写库失败保留旧结果并显示失败。
  • 断点校验源文件内容、提取文本、模型、提示词与切块参数,删除时清理;JIT 使用明确超时、透传取消,失败与成功区分,有界后台队列承担缓存和归并。
  • 入库、上下文与展示路径共享图校验:统一大小写与空白身份,过滤悬挂端点、空关系及非法权重,限制节点和边总量;文件菜单仅对支持解析的文件提供抽取入口。

Keenable 搜索提供商(2026-10-16)

  • 联网搜索配置加入 Keenable,支持免密钥公共接口及安全存储的可选 API Key;现有默认引擎保持不变,工具调用与会话联网检索共用提供商路由。
  • 解析网页标题、链接与正文摘要,支持结果数量与域名筛选;错误状态明确回传,限流和鉴权错误不暴露服务端正文、不触发匿名降级,取消请求向上传播。
  • 搜索配置面板打开时完全展开,并支持长内容滚动;可选密钥支持安全保存、临时显示、清除和失败重试,并接入现有加密备份。新增 HTTP、路由、设置持久化、凭据状态及 Compose 交互回归。

折叠 N 应用图标(2026-10-16)

  • 采用纯黑白折叠 N:白底黑标主版本、黑底白标深色版本;纳管三折面 SVG 母版、正反色展示稿、批准看稿与来源谱系。
  • 所有应用变体通过 Gradle Variant API 从同一母版生成普通、圆形、自适应和单色主题图标;移除旧 PNG 和旧自适应资源,新增旧资源、颜色、Manifest 覆盖及非纯矢量输入防护。正常发行构建不依赖 IDE、Python 或图像工具。
  • 增加真实 Gradle 生成器行为回归与 Android 图标资源解析测试,覆盖夜间配色、分离缝、单色透明轮廓和安全区。

会话步骤紧凑化、正文排版与检索指示器修复(2026-10-16)

  • 思考、工具与检索步骤:改为同一套紧凑单行样式。思考默认折叠,生成中单行滚动显示最新推理并显示用时,完成后显示“已思考 N 秒”(历史消息无时长时显示“已完成思考”);工具行显示真实工具名、状态与耗时,连续多个调用合并为“调用了 N 个工具”,可展开查看参数与结果;检索卡收为“知识库 · 命中 3 条 · 已重排”等单行。气泡内步骤之间只保留统一间距。
  • 正文排版:修复把“3.7%”、版本号、价格误拆成有序列表的问题,句中连字符不再被改成列表项;移除中英文之间的自动插空,保留模型原文间距;段落与标题上方留白加大。
  • 检索指示器缺失:检索开启但没有引用(未命中、嵌入模型不可用、检索失败)时,生成运行时此前没有保存检索轨迹,回复下方不显示任何检索卡;现在都会保存并显示。

提供商协议稳定标识与覆盖升级修复(2026-10-16)

  • 覆盖安装后提供商失效:提供商协议类型原以类名写入存储,发行包经 R8 混淆后类名逐包变化(例如“OpenAI 兼容 (通用)”在三个已发布包中分别为 yr4、is4、ks4,而 is4 在下一包中是 DeepSeek),覆盖安装后提供商被识别为错误协议或不受支持,需重新保存才能使用。协议类型改用固定的存储标识(取原始类名);读取旧值时依次按存储标识、旧别名、保存的协议显示名、已发布包的混淆名对照与 Base URL 判定,判定成功后写回固定标识,凭据与其它字段不变,无法判定时仍按“不受支持的协议”处理而不伪造。
  • 会话列表:加载时逐个会话映射,某个会话的数据无法解析只跳过该会话并记录脱敏日志,不再导致整个列表显示为空。

模型选择器与设置页排版(2026-10-16)

  • 模型选择器漏列模型:会话设置、默认模型、检索高级设置、智能体编辑与智能体中心的模型列表,改用运行时加载的完整模型目录解析模型。原先只用内置覆盖表,而 OpenAI 兼容同步会为每个模型保存一份通常为空的供应商元数据,目录里的对话模型因此被判为“类型未知”而隐藏,名称也退回原始 ID;提供商模型管理里启用的模型现在都会出现在会话可选列表中。
  • 模型管理页:只固定搜索栏,操作按钮、模型目录信息、同步提示与模型列表一起滚动;目录信息压缩为一行;列表滚动时顶部渐隐,底部延伸到系统导航栏后方,不再出现上下两条平直裁切。
  • 提供商列表:每行增加品牌标志或首字头像;类型、主机分两行显示;“已启用”与“密钥已配置”作为常态不再占位,只有停用或凭据缺失时才提示。
  • 工具设置:执行循环限制的说明独占整行;预设工具行只保留开关、整行可点切换,说明获得完整宽度,可配置工具在说明下方给出“配置”入口,分隔线与正文对齐且末行不画。技能包说明移到卡片外,空态带图标与内边距,修复说明首字被圆角裁掉、按钮贴边的问题;MCP 服务器卡片改为开关在右、同步与删除在下方操作行;技能包行同样只保留开关,附带文件数与删除移到说明下方。
  • 同类排查:备份页“配置 WebDAV”按钮不再贴卡片边缘,备份内容里的开关与说明左缘对齐,去掉每张卡片底部多出的分隔线;检索设置里“混合搜索”“查询改写”开关不再比同卡片内容多缩进一层;用量页总用量块在卡片内真正居中,会话排行末行不画分隔线;本地模型插槽空态文案本地化。

会话 P2 修复、图片附件与 RAG 检索指示器(2026-10-16)

  • 图片附件:修复发送图片必然报“Image read failed”。降采样时只读尺寸的解码按设计返回空值,被误判为读取失败;改为以解析出的宽高判定,编码逻辑抽为 ChatImageEncoder,错误提示本地化。
  • 工具预算收尾:预算耗尽后的收尾请求仍声明工具,但以协议各自方式禁止调用(OpenAI 系 tool_choice: "none"、Anthropic {"type":"none"}、Vertex functionCallingConfig.mode = NONE,本地模型不再注入工具)。收尾轮仍只返回工具调用、没有正文时,以“本轮工具调用次数已用完”失败结束,不再以空回答记为成功。审批通过后恢复生成,按本轮已消耗的轮次与调用数续算预算。
  • 待办面板:标题行可展开完整清单(层级、进行中、已完成、已放弃);全部完成后显示完成态并可清除计划,输入栏胶囊随之收起。“标记已完成”移入 ViewModel,完成后提供撤销,原状态逐项恢复。
  • 废弃代码清理:删除生产中从未产生的“续跑审批”分支与 continuationBudget/autoLoopLimit 字段、无调用方的审批超时入口;遗留的非精确审批请求在用户操作时以“已取消”结果关闭。工具步骤改为关联当前计划焦点(原读取从未赋值的 Session.activeTask,关联恒为空)。
  • 审批卡可见性:新的审批请求出现时,会话列表把审批卡滚到输入栏上方。原先自动跟随只对齐最后一条消息,审批卡可能落在输入栏与键盘下方,批准、拒绝按钮被遮挡(设备端到端用例复现)。
  • web_fetch 审批:半自动模式下,网址带查询参数、用户信息、超长或形似编码数据的路径段时要求审批,降低经网址外带会话数据的风险;普通网址仍免审批。
  • RAG 检索指示器:检索层产出随回复持久化的检索记录(命中、未命中、嵌入不可用、未选择文档、检索失败;召回数、采用数、记忆与文档分布;向量或混合计分;重排方式、模型与耗时),并为每条结果记录召回名次、召回分、重排分与名次变化。检索卡显示“知识库命中 N 条 · 已重排”等摘要,未命中与未能检索也会显示;详情页新增“检索过程”说明,并逐条显示来源类型、相似度或融合分、重排分以及“重排前第 N,上升/下降 M 位”。重排失败不再静默回退,大模型打分解析失败按失败记录而非伪装成已重排。新字段写入已有 JSON 列,不升级数据库版本,旧消息照常读取。

会话主流程修复(2026-10-16)

  • 审批恢复:审批决定后新建助手消息承接回答并携带本轮用户消息,不再把回答写回发起工具调用的原消息(原先会清空其工具调用,使下一轮请求因工具结果失去调用方被 Provider 拒绝)。
  • 执行阶段:新增“执行工具”阶段,只有真正等待用户审批时才进入等待审批。自动执行工具期间前台服务保持运行,停止按钮可用,通知显示“正在执行工具”。
  • 待办计划:步骤 ID 按会话加命名空间,不同会话的同名步骤互不覆盖(兼容旧数据)。计划目标单独保存,面板标题显示目标。状态同义词(如 completed、in_progress)归一化,无效状态、未知步骤、无计划时返回带原因的错误。结果改为结构化 JSON。计划工具新增“会话状态”风险等级,半自动模式下免审批,手动模式仍需审批。
  • 协议历史修复:发送前跳过空白助手占位与失败的空消息,丢弃孤立或重复的工具结果,为没有结果的工具调用补“未执行”结果。审批等待中发送新消息、重新生成或删除时,先以“已取消”结果关闭待审批调用。
  • 重新生成与删除:重新生成统一采用“新回复成功(或进入等待审批)后才删除旧回复”,覆盖该用户消息之后的全部消息;生成期间隐藏旧回复,失败、取消或启动受阻时原样恢复。删除助手回复按整轮删除,删除后可撤销。移除未接入界面且会先删后生的旧编辑/重发入口。
  • 审批交互:同一批调用全部决定后(包括拒绝)都继续生成,模型可据拒绝结果收尾,与系统提示约定一致。批次剩余多项时提供“全部批准”。
  • 检索复用:同一次生成的后续工具轮次复用首轮的联网搜索、文档与记忆检索、知识图谱结果,不再每轮重复调用。
  • 推理参数:会话参数逐字段回退到智能体预设,改动任一项不再让温度、Top P、最大输出失效;设置面板显示实际生效值。原“思考等级”四档实际只调整采样随机性,文案改为精确、稳健、平衡、创意。上下文设置按阈值与保留轮数生效。
  • 工具执行器对参数与状态类异常回传脱敏后的具体原因,便于模型纠正。

全站文本换行体系(2026-10-09)

  • 主题换行策略:补齐 Material 3 全部 15 个文字角色并显式声明换行策略。界面文本使用平衡行长 + 严格 CJK 避头尾 + 短语断词,消除末行孤字、行首标点与短语拆断;聊天、Markdown、检索与文件预览等长文本使用段落换行;38 处输入框统一使用输入换行,编辑时不整段回流。
  • 元数据分段组件:新增 NexaraMetaLine,段内不断行、按段折行、分隔符只在同行两段之间、按基线对齐、超行时显示省略号;迁移提供商卡片、模型能力、文件与检索元数据、备份、知识图谱统计、模型目录与分享导入等拼串,拆分对应格式字符串资源。修复 model_catalog_version 中英文资源写反。
  • 标识符折行:新增 NexaraIdentifierText,文件名、URL、路径与模型 ID 只在分隔符后折行,版本号内部不断开,无障碍与测试语义仍为原文。
  • 门禁:scripts/ci/check-text-wrapping.py 接入 Android CI,禁止主题外直接新建 TextStyle、界面拼接 ·/• 元数据、输入框缺少输入换行样式与未登记的“·”格式串;TextWrappingDeviceTest 纳入设备最低矩阵,验证贪心换行对照组可复现孤字而界面策略为零,并检查中文窄屏放大字号下的关键界面。
  • 底部导航选中标签在放大字号下改为省略号截断,不再从字母中间裁切。

真实网关 Agent 端到端与 Gemini 工具请求修复(2026-10-02)

  • Gemini 兼容请求修复:OpenAI 兼容协议不再向 tools 注入 Vertex 原生的 {"googleSearchRetrieval":{}};该条目会被兼容网关以 400 拒绝,导致 Gemini 模型在默认会话(Gemini 搜索开关默认开启)下无法对话或调用工具。Gemini 原生搜索仍由 Vertex 协议发送。
  • 调试构建回环网关:Provider 路由在可调试构建中允许 127.0.0.1/localhost 上的明文 HTTP,用于本机网关联调;正式版仍只接受 HTTPS,非回环明文始终拒绝。
  • 设备端到端测试:新增 AgentGatewayEndToEndDeviceTest/AgentGatewayControlDeviceTest,经 ChatViewModel、生成协调器、工具执行与工作区的完整链路验证多步文件任务、技能激活、半自动审批与工具预算收尾;仅在 nexaraLocalGateway=true 时运行。

Agent Skills 技能包(2026-10-02)

  • 新增 SKILL.md 格式技能包(ADR-022):设置“技能”页的“技能包”标签支持导入 .zip / SKILL.md、应用内新建与编辑、启用开关与删除;同名导入需确认替换。
  • 导入门禁:拒绝绝对路径、.. 与保留名,限制单文件 1 MiB、总量 5 MiB、最多 200 个文件;安装经暂存目录校验后切换,失败不留残留。
  • 渐进披露:System Prompt 只列出已启用技能的名称与描述,模型通过只读工具 activate_skill 加载正文与文件清单、read_skill_file 读取附带文本;无启用技能时两个工具不广告。技能不执行脚本,allowed-tools 仅展示。
  • 旧版“自定义工具”定义保留并标注为不会执行,可编辑或删除;技能目录暂不进入备份包,启用集合随偏好备份。

Agent 工具链与长程任务修复(2026-10-02)

  • 工具暴露:内置工具只受全局启用状态约束,写入、补丁、删除、脚本与任务计划工具在默认会话中可用,风险统一由执行模式审批;会话 Skill/MCP 选择不再影响内置工具集合。发行合同 5.3 同步更新。
  • 工具循环:兼容网关以 stop 结束但携带完整工具调用时按工具调用处理;空参数归一为 {};未知工具名与参数校验失败回写可纠错的工具结果(含可用工具与 schema 错误路径),不再终止整轮生成。单次生成预算改为可配置轮次(1–100,默认 50)与 200 次调用硬上限,耗尽后拒绝剩余调用并进入总结轮。
  • 上下文:当前轮(用户请求及其后的助手/工具消息)完整保留,活动窗口只截断此前历史;超出模型上下文时由旧到新省略早期工具结果(保留最近 4 条)。窗口溢出消息按批摘要后才归档,摘要失败时保留原消息。
  • 工作区工具:新增 create_file、create_directory、move_file、delete_file(回收站);读写类工具支持 path 定位,read_file 输出行号前缀并校验范围,list_files 支持递归与 hash,search_files 修复根层文件漏检、移除未实现的 fts 模式并新增内容逐行搜索;修复 patch_file 错误提示中的 UUID 模板与写入成功但索引未入队时的误导文案。
  • 新增内置工具默认启用:新增 known_builtin_skills 记录用户在设置中见过的内置工具,不在其中的新工具默认启用,修复旧版启用集合把新增工作区工具永久排除的问题;设置页列出新增的四个工作区工具,备份策略同步纳入该键。
  • exec_js:按 JSON 字符串完整解码 WebView 返回值,修复反斜杠与 Unicode 转义导致的解析失败。
  • System Prompt:按身份、会话指令、工具与工作区契约、任务计划、外部资料(数据边界声明)、历史摘要、环境时间排序;工具说明按本轮实际广告的工具生成;预置 Coding Expert / Creative Writer 在未自定义时使用默认提示词。
  • 界面:审批卡片对写入、补丁、新建、移动、删除与脚本展示与审批摘要一致的参数预览;循环上限显示实际数值;自定义工具页标注当前不广告、不执行。移除未注册的 create_tool 死代码。

截图回归与质量门禁恢复(2026-10-01)

  • 将知识库主页截图夹具对齐同层平铺模式,补充 FAB 错误与运行状态预览;更新经视觉复核的截图基线,差异阈值保持不变。
  • 模型与上下文展示胶囊设备断言按已批准的 36dp 规格执行;输入、附件和生成主操作的 48dp 门禁保留。
  • 助手首页设备测试对齐折叠会话列表与精确会话导航回调,并纳入核心设备 E2E;恢复置顶卡片的本地化无障碍状态描述,保留设备断言。
  • Android CI 使用 Gradle --continue 收集截图、JVM、Lint 与构建结果,任一失败仍使质量任务失败,设备门禁保持依赖。
  • 提供商连接测试通过 Compose LocalResources 读取错误文字,修复配置感知资源读取的七项 Lint Error;资源 ID、错误分类与凭据处理保持不变。

v0.2.2-beta 版本与发行门禁(2026-10-01)

  • 当前源码候选为 versionCode 4 / 0.2.2-beta;README、发行说明、验证账本和 Release workflow 统一使用该身份。v0.2.1-beta 文档保留历史候选证据。
  • Release workflow 与 APK 冷安装脚本对齐标签、产物文件名、版本验真参数、默认版本与文档路径,保留受控 SHA、标签验签、保护环境、设备与混淆门禁、冷安装、覆盖升级及资产回读。
  • 手动候选验证仅允许构建和测试;公开 tag/Release 必须有独立授权与精确 GO 账本。当前验证记录区分待执行项目与实际通过证据,历史 PASS 不作为当前制品结论。

PDEC 本机 Android 调试边界(2026-09-29)

  • Android 安装、ADB/Logcat 联调、设备测试与模拟器验收统一使用本机启动的专用 Nexara AVD;设备操作须核对并固定序列号,目标不明时停止。远程主机、远程设备及托管模拟器不作为交互调试执行位置;公开仓库推送触发的 GitHub Android CI 托管模拟器矩阵继续用于自动化测试。

知识库 FAB 状态微件视觉绝对居中、设置路由纠偏与凭证防御加固(2026-09-27)

  • FAB 状态指示器图标像素级绝对居中(RagHomeScreen):
    • 消除图标偏左上偏移缺陷:排查并修复 RagStatusFab 中 AnimatedContent 默认对齐方式为 TopStart 且内部未撑满容器,导致错误(红叉)、成功(绿勾)及任务类型图标在 46dp FAB 容器内向左上方偏斜的问题;
    • 像素级绝对对称居中:为 AnimatedContent 显式配置 contentAlignment = Alignment.Center 与 Modifier.fillMaxSize(),并将内部各图标分支显式包裹在居中 Box 中;将图标尺寸从 22dp 微调升级为 Material 3 FAB 标准规格 24.dp。实机截屏像素度量证实上下左右四向边距均为 44px(零像素偏差,绝对居中);
  • 错误气泡“去设置”精确路由修正(MainTabScaffold):
    • 纠正跳转目标:将 FAB 展开气泡中“去设置”按钮的原路由从分块/记忆设置(rag_global_config)修正为默认模型设置(DEFAULT_MODELS),用户点击后直接进入嵌入模型(BGE M3)与重排模型的选择界面,符合排查与修复模型配置的直觉链路;
  • 凭证与模型参数防御性 Sanitization 加固:
    • 杜绝空白符/换行污染:在 EmbeddingClient、ProviderManager 与 NexaraApplication 中对 Base URL、API Key 与 Model 名称全面增加防御性 .trim() 与 .trimEnd('/') 处理,杜绝剪贴板复制粘贴时带入不可见空白符或换行符导致的凭证校验失败;
  • 模拟器模型索引异常服务端根因明确与排查透传:
    • 通过 logcat 诊断证实向量化端点返回 HTTP 401 {"error":{"code":"","message":"Invalid token (request id: ...)","type":"new_api_error"}},明确界面配置看似正确但后台报错的原因是远端网关鉴权拒绝,指导用户更新有效 API Key。

悬浮菜单位置精准锚定与全站新版视觉样式统一规范收敛(2026-09-27)

  • 知识库文件列表悬浮菜单位置精准锚定(FilesPanel):
    • 根除屏幕左侧漂移(x=0)缺陷:排查并修复 FilesPanel 中 FileRow 与 DropdownMenu 平级包裹于整宽 Box 导致菜单以屏幕左上角为锚点向左侧弹出的定位错误;
    • 局域锚定绑定:重构 FileRow 架构,将 menuContent 下沉到 trailingContent 的局域 Box 内,紧密依附于 48dp×48dp 的右侧操作按钮,确保无论通过点击右侧 ⋮ 按钮还是长按文件行触发,悬浮菜单均精准锚定在点击目标位置弹出。
  • 全站统一悬浮菜单组件规范落地(NexaraDropdownMenu):
    • 全新视觉设计契约:封装统一的 NexaraDropdownMenu 组件,固化 16dp 大圆角(RoundedCornerShape(16.dp))、surfaceContainer 容器底色、1dp outlineVariant(0.5 alpha)半透明精致描边与 160dp 默认最小宽度;
    • 全站页面全面收敛:全面淘汰各页面零散残留的老旧原生 DropdownMenu 样式,统一收敛至 NexaraDropdownMenu:
      • FilesPanel:升级 8 项文件操作菜单(重新索引、提取知识图谱、查看图谱、重命名、移动到、复制/转存、多选、移入回收站),搭配 20dp 规范 Leading Icon 与错误色;
      • RagHomeScreen:备份恢复源下拉选择器升级;
      • RagFolderScreen:多选模式全选/取消全选下拉菜单升级;
      • ProviderListScreen:提供商卡片与列表行操作菜单统一升级;
      • ProviderModelsScreen:模型管理批量禁用/删除操作菜单统一升级;
      • AgentHubScreen / PipelineBubble / ChatScreen:收敛所有行内菜单样板代码。
  • 全量契约测试与实机端到端验证:
    • 新增 NexaraDropdownMenuContractTest 契约测试,验证组件视觉属性、局域锚定及全站各页面收敛;全量 2,800+ 单元测试 100% 通过;
    • Android 模拟器真机实测截图验证:智能体菜单、知识库文件菜单(精准对齐右侧三点按钮)、模型提供商菜单均呈现精致圆角、微描边与规范图标;
    • 完成正式签名 Release APK(20MB)构建,通过 apksigner v2 签名验证。

向量化“无限进行中”根治、任务主动取消与主页顶部呼吸感对齐(2026-09-27)

  • 彻底根治向量化“无限进行中”状态(RagViewModel):
    • 精准状态过滤:排查并修复 RagViewModel.observeQueue() 在计算 _indexingDocIds 时未排除 failed、partial、completed、interrupted 状态的致命缺陷。彻底解决了“任务因网络或服务端模型异常失败后残留在 retainedAttention,导致文件永久显示为‘索引中’、状态指示器永久旋转误报‘文档向量化中’”的问题;
    • 报错细节精准透传(EmbeddingClient):重构服务端异常解析逻辑,在 HTTP 状态非 2xx 或响应缺少 data 数组时优先提取后端具体的 error.message / message,避免掩盖为通用的 Missing data array,让用户明确知晓模型配置或服务端具体报错;
    • 状态持久清理联动(clearAttention):用户在状态微件中点击“关闭”通知时,联动调用 observedQueue?.clearAttention() 彻底清除残留的关注任务。
  • 向量化任务主动取消与停止(RagStatusFab & RagViewModel):
    • 进行中状态新增取消操作:在向量化或图谱抽取进行中时,点击 FAB 展开卡片新增显式的“取消”按钮,支持随时中断任务;
    • 取消链路闭环(cancelIndexing):点击取消后安全联动 discardFailedIndexTarget()、observedQueue?.clear() 与 _indexingDocIds 置空,平滑终止后台 Job 并立即恢复界面至静止状态。
  • 一级页面顶部呼吸感视觉对齐(AgentHubScreen & RagHomeScreen):
    • 消除顶部局促压迫感:针对真机测试中“对话”页与“知识库”页顶部距离状态栏过近的问题,将两页顶部边距从 NexaraSpacing.Small (8dp) 统一调优为 NexaraSpacing.Large (16dp),完美对齐“设置”页的优雅呼吸空间。
  • 全量测试与正式签名 APK 构建:
    • 全量 JVM 单元测试 100% 通过(2,800+ 项测试 0 失败);
    • 在模拟器完成实机截屏与交互验收,验证取消、关闭与三页顶部呼吸感一致性;
    • 成功构建正式签名的 Release 发行包(v0.2.2-beta / versionCode 4,大小 20MB),支持真机无缝升级测试。

知识库集中式状态指示微件(FAB)、同层下钻式目录浏览与工作区沙箱深度隔离(2026-09-26)

  • 集中式 FAB 状态指示器与错误横幅彻底收敛(RagStatusFab):
    • 消除顶部粗暴挤压横幅:彻底移除原知识库顶部生硬侵入、挤压搜索框与操作列表的错误通知条,将交互转移至右下角悬浮 FAB 原型状态微件;
    • 动态环形进度与任务交替动效:当后台执行文档向量化或知识图谱抽取时,FAB 外延展示环形旋转进度圈,中心呈现任务类型图标;两类任务并发时图标以 1.8 秒周期平滑轮播;
    • 状态语义与自退场:错误状态呈现红叉图标,成功状态呈现绿勾图标并在 3.5 秒后平滑隐退;
    • 向左展开卡片操作台:轻触 FAB 平滑向左展开气泡卡片,呈现任务标题、线性微型进度条与详细原因,并集成“去设置”(直达记忆设置配置嵌入模型)、“重试”与“关闭”操作,再次点击平滑收起。
  • 知识图谱拓扑图标纠偏(Icons.Rounded.Hub):
    • 将操作栏“知识图谱”入口按钮及 FAB 内部图谱抽取图标统一修正为网状拓扑节点图标(Icons.Rounded.Hub),消除原树状图标的语义不匹配。
  • 会话工作区沙箱与知识库深度隔离:
    • 禁止自动向量化:加固 FileEntryDao.getUnvectorizedSupportedFiles 与 ResourceExplorerViewModel,从数据库查询与调度链路彻底隔绝非系统会话的工作区文件,杜绝私有沙箱文件被静默加入向量化队列;
    • UI 标签干净呈现:会话工作区文件在前端列表隐藏 [已索引]、[索引中] 等 RAG 标签及菜单项,仅在用户显式“转存到知识库”后才调度索引。
  • 同层下钻式无缩进目录切换(RagFolderBreadcrumbsBar):
    • 废除窄屏树状缩进与首屏内联展开:在下钻式文件管理模式中,彻底阻断任何目录(包括根目录下的「会话工作区」及普通自建文件夹)的默认内联展开行为(allowTreeExpansion = false)。首屏与各级子目录均只展示当前层级的直属一级子项,深度全部为 0,彻底消除首屏的树状嵌套视觉结构;
    • 点击完整切换下沉进入目录:点击「会话工作区」、会话子目录或自建文件夹时,直接完整同层切换进入目标目录,呈现纯粹的标准平铺文件管理体验;
    • 全链路路径面包屑与系统返回联动:顶部配备清晰的层级面包屑路径(如 全部文件 › 会话工作区 › Say OK)与 ← 返回按钮,支持点击任意上级跳转,并联动 BackHandler 支持 Android 系统返回键逐层平滑回退。

知识库“全局资源管理器”架构升级与会话工作区统一挂载(2026-09-26)

  • 全局资源管理器核心挂载仓库(CompositeGlobalWorkspaceRepository):
    • 无缝虚拟挂载:在保留现有虚拟文件系统(VFS)物理隔离与数据库 Schema 零破坏的前提下,实现统一复合工作区仓库,将全局知识库根目录与所有活跃会话的工作区在根路径进行聚合挂载;
    • 系统级写保护安全边界:虚拟根目录(会话工作区)与各会话目录严格禁止非法删除、物理清空、误移和外部污染,保障会话与底层数据绝对安全;
    • 会话文件一键转存至知识库:会话工作区内的文件支持在文件树长按菜单中一键“转存到知识库”(流式安全拷贝到全局工作区),并自动触发后台分块与向量化调度。
  • 文件树(FilesPanel & FileRow)视觉与交互全面升级:
    • 专属视觉徽章与图标:虚拟系统根目录呈现专属文件夹图标并配备“系统”胶囊徽章;各会话工作区子目录配备专属对话气泡图标并配备“会话”胶囊徽章,视觉层级清晰、精致美观;
    • 图标交互优化:目录图标支持点击就地直接展开/折叠,长按菜单根据节点类型智能裁剪非法操作(如虚拟节点的删除/移动屏蔽)。
  • 知识库界面(RagHomeScreen & RagViewModel)布局收敛:
    • 消除生硬下拉框:移除知识库文档标签页顶部生硬突兀的会话切换下拉框(RagWorkspaceSourceSelector),让统一资源管理器文件树直接展开充满,实现纯净一体的浏览与管理体验;
    • 转存与复制统一路由:RagViewModel.copyFile 针对跨工作区会话文件自动桥接至 transferFileToKnowledgeBase,无缝联动向量化索引。
  • 全量测试与实机端到端验收:
    • 新增 CompositeGlobalWorkspaceRepositoryTest(覆盖虚拟根聚合、会话子目录生成、写保护拦截、会话文件转存、物理路径自动拼接及向量化触发回调等 7 个核心测试用例);
    • 加固 VFS 事务恢复机制(WorkspaceRepository & WorkspaceFileMutationJournal),并在 WorkspaceFileMutationRecoveryCoordinatorTest 增加对写入早期中断无 manifest 的安全清理回归测试;
    • 在 Android 模拟器实机上完成端到端全链路闭环验收:会话工作区虚拟挂载展示、就地折叠与展开、会话目录写保护、会话内文件导入与层级嵌套显示、长按菜单契约(“转存到知识库”)、真实流式转存入库及自动进入向量化索引队列。

助手设置收敛、悬浮菜单统一、默认字体调整与会话智能重命名(2026-09-24)

  • 助手设置页面(AgentEditScreen)视觉收敛与模型配置:
    • 视觉规格收敛:根治页面字体过大、分辨率突降的视觉割裂感,全页迁移至标准 NexaraSettingsPageLayout;Hero 角色舞台等比例收敛(头像 88dp -> 72dp,微光 116dp -> 96dp,相机浮标 32dp -> 26dp,角色名从 24sp headlineSmall 降为 16sp titleMedium,描述降为 12sp bodySmall,表单标签 11sp、输入字 14sp,调色板和图标网格 22dp);
    • 默认模型配置落地:新增“模型配置”标准设置分区与配置项,支持为助手直接绑定默认模型,点击无缝调起 ModelPicker 并在卡片上实时呈现当前选定模型。
  • 全站悬浮菜单(附件与气泡长按菜单)视觉规范统一:
    • 发送输入框附件浮动菜单(AttachmentActionMenu)与消息气泡长按上下文菜单(MessageContextMenu)对齐统一视觉规范;
    • 统一采用 16dp 大圆角、surfaceContainer 底色、1dp 微描边与柔和投影,搭配 20dp 规范 Leading Icon 与 labelLarge 文字,消除气泡与全站视觉不一致。
  • 会话默认字体大小优化:
    • 将会话设置中文字体默认大小从 14 像素调整为 15 像素(SessionOptions.fontSize = 15),平衡阅读舒适度与屏幕信息密度。
  • 错误气泡垂直居中修复:
    • 修复单行错误提示文字在红粉色圆角背景框中未能垂直居中的排版瑕疵,使用 Box(contentAlignment = Alignment.CenterStart) 确保单行文本严格垂直居中。
  • 新会话智能自动命名与顶栏点击重命名:
    • 三级降级链路保障:首轮对话完成后自动触发 LLM 会话标题命名,链路优先采用用户预设的“快速模型(summaryModelId)”,故障或未配置降级为当前会话模型,仍故障降级为首条用户消息前 10 字;
    • 黄金宽度测算与清洗:严格测算顶栏可用宽度(约 200dp)与首页折叠卡片宽度(约 180dp),将标题上限锁定为 10 字(MAX_TITLE_LENGTH = 10),并正则清洗“标题:/主题:/Title:”等多余前缀与中英文标点;
    • 顶栏直接重命名:会话顶栏标题增加视觉可交互反馈与 14dp 编辑小笔图标,轻触直接唤起重命名弹窗支持随时调整。
  • 测试与实机验证闭环:
    • 全量 2,791 项 JVM 单元测试 0 失败通过,覆盖标题生成与清洗截断测试;
    • 在 Pixel 7 AVD 模拟器上完整实机交互,各界面截图核验无误。

Agent 编辑助手全屏视觉重构与 Hero 角色舞台升级(2026-09-24)

  • 顶部高质感 Agent Hero 角色舞台打造:
    • 顶部重构为居中角色舞台,引入柔和径向微光(RadialGradient)氛围底座与 88dp 大尺寸圆形头像;
    • 头像右下角搭载半透明深色圆形拍照浮动徽标(带主题色细边框),强化角色定制感;
    • 头像下方实时同屏呈现加粗昵称(headlineSmall)与简介,营造沉浸式角色威仪。
  • 表单输入纯净卡片流式化(彻底消灭嵌套双边框套娃):
    • 彻底废除卡片内生硬嵌套 OutlinedTextField 的 Double-Border 粗糙做法;
    • 打造 InCardInputField 流式卡片表单项,支持小字次级标签(名称/描述)、大字无框文本输入(BasicTextField)与细腻半透明分割线,大幅提升高级质感。
  • 色彩与图标工坊全面升级:
    • 图标矩阵:由紧绷方块升级为 16dp 饱满圆角与选中态主题色 15% 微光底座,附带丝滑折叠展开面板;
    • 调色盘圆点:预设色升级为带平滑滑动的 LazyRow,彻底根除末尾颜色在小屏被截断的 Bug,选中圆点加入弹性微缩放与描边;
    • 自定义色相滑块:底座升级为真实全光谱彩虹渐变轨道(Brush.horizontalGradient),配合右侧 44dp 大圆角实时色块预览徽章,色彩调配反馈直观惊艳。
  • 系统人格 Prompt 卡片与危险操作收敛:
    • 系统提示词由占地巨大的生硬输入框重构为交互式配置卡片:左侧心理人格图标徽章,右侧紧凑状态指示胶囊(已配置绿色呼吸点 / 未设置灰色点)与向右导航箭头;
    • 知识库与检索配置项全面收敛进标准 NexaraSettingsSection 与 NexaraSettingsItem;
    • 删除助手重构为 16dp 大圆角轻量半透明红色背景,消除原有的粗暴双层红框。
  • 严格契约门禁与双重验证:
    • 严守 ThemeSurfaceContractTest 静态颜色 token 规范与 BettboxGroupedSurfacesContractTest 分组卡片契约,全量 2,790 项 JVM 单元测试 0 失败通过;
    • 在运行中的 Pixel 7 AVD 模拟器上实机交互并截屏核验,角色舞台、流式表单、彩虹滑块与提示词卡片均完美呈现。

首页 FAB 全圆形态与全站长按/操作下拉菜单视觉重构(2026-09-24)

  • 首页 FAB 纯圆形态对齐:
    • 将首页对话 Hub 的右下角悬浮按钮(FAB)形状由默认圆角矩形(RoundedCornerShape(16.dp))升级为正圆形(CircleShape),彻底消灭矩形突兀感,与全站胶囊及圆形视觉语言严密统一。
  • 全站操作下拉菜单(DropdownMenu)视觉升级:
    • 规范对齐与容器质感:将 Agent 卡片菜单与会话顶栏选项菜单升级为 16dp 大圆角容器、surfaceContainer 底色,以及 outlineVariant.copy(alpha = 0.5f) 深色微描边,消除原有菜单直角生硬感;
    • 左侧对齐 Leading Icon 引入:为两处菜单所有项引入 20dp 规范 Leading Icon,消除纯文字长短不一导致的视觉失衡(Agent 菜单:置顶 PushPin、编辑 Edit、删除 DeleteOutline;会话顶栏菜单:设置 Tune、提示词 Psychology、清除历史 CleaningServices、重命名 Edit、删除 DeleteForever);
    • 呼吸留白与危险警示:为菜单施加稳定最小宽度(160dp / 190dp),让不同字数选项均具备舒适留白;危险删除操作统一赋予 error 警示色(图标与文字)。
  • 契约测试与实机验证闭环:
    • 完整保留 HUB_ADD_AGENT、HUB_AGENT_MENU_*、CHAT_SESSION_SETTINGS 等全量测试契约标签,JVM 2790 项测试全数通过;
    • 在运行中的 Pixel 7 AVD 模拟器上实机交互并截屏核验,首页 FAB、卡片菜单与会话顶栏菜单均呈现高级精致的视觉体验。

全站页签统一升级 Homebar 全圆胶囊与弹簧触觉设计(2026-09-24)

  • 抽象通用全圆胶囊 Tab 组件:
    • 新增 NexaraTabSwitcher 与 NexaraCapsuleTabRow 通用组件(ui/common/),将底部 Homebar 的全圆胶囊形态(CircleShape)、surfaceContainer 底色、outlineVariant 微描边、secondaryContainer 同心胶囊滑动指示器与物理弹簧动画(Spring, dampingRatio=0.85)规范沉淀为全站统一底座;
    • 深度集成 Android 原生 SEGMENT_TICK(API 34+)/ CLOCK_TICK 刻度震动,轻点切换时反馈清脆高级的机械触感。
  • 全站关键页签与分段器落地:
    • 会话设置面板(SessionSettingsSheet):废弃带下划线与方块高亮的 ScrollableTabRow,重构为全圆胶囊 4 页签切换(模型、参数、工具、设置);
    • 资源管理器(ResourceExplorerSheet):废弃带粗分割线与下划线的 PrimaryTabRow,重构为全圆胶囊双页签切换(文件、回收站,带图标与未清空徽标);
    • 工具执行模式(ExecutionModeSelector):废弃生硬的圆角方块分段器,升级为全胶囊平滑滑动单选器(自动、半自动、手动);
    • 技能管理(SkillsScreen):废弃传统 TabRow,重构为全胶囊 3 页签(预置技能、自定义技能、技能市场);
    • RAG 检索详情(RagDetailsSheet):废弃 PrimaryScrollableTabRow,重构为全胶囊 3 页签(检索片段、网页引用、知识图谱);
    • 统一 Prompt 编辑器(UnifiedPromptEditor):废弃带下划线的 TabRow,重构为全胶囊双页签(编辑、预览)。
  • 测试与契约闭环:
    • 保持各模块原生 testTag 契约,全量 2790 项 JVM 测试通过,实机多屏联动验证滑块动画与触感顺滑。

会话设置高级生成参数取消折叠与平铺体验优化(2026-09-24)

  • 消除嵌套折叠与手势冲突:
    • 取消会话设置面板(SessionSettingsSheet)中“高级生成参数”的折叠区块(NexaraCollapsibleSection),消除在底部弹窗滑动列表内折叠高度骤变引发的跳动与交互卡顿;
    • 将 Top K、重复惩罚(Repetition Penalty)、话题新鲜度(Presence Penalty)、词频惩罚(Frequency Penalty)平铺展开为一级滑块配置项。
  • 垂直排版与滑动呼吸感:
    • 全部 7 项生成采样参数(请求超时、Top P、最大 Token 数、Top K、重复惩罚、新鲜度、频次惩罚)在“生成参数”下整齐连续排布,统一采用 48dp 规范触控高度与 60dp 标签宽度;
    • 列表末尾加入 32dp 呼吸留白,避免底部项贴近系统底栏导航条。

知识库记忆界面视觉净化与空态体验对齐(2026-09-24)

  • 技术泄露与冗余信息净化:
    • 彻底移除记忆界面中生硬且粗暴估算的 Token 统计(~X tokens),消除底层技术泄漏;
    • 移除三重冗余的“记忆”大标题与顶部“总计: X”,消灭信息堆砌。
  • 空态对齐文档页精品设计:
    • 抛弃原本笨重生硬的深色大卡片方框,升级为与文档页完全同构的居中设计:72dp 全圆高亮底座(CircleShape)+ 脑部图标 + “暂无记忆”主副文案;
    • 搜索无结果时同步采用居中全圆底座设计(memory-search-empty)。
  • 列表底部淡色统计 Footer:
    • 有记忆数据时,在列表底部以极淡居中小字呈现“共 X 条记忆”,完全不干扰首屏纯粹视觉。

知识库 Tab 页签移植 Homebar 全胶囊与触觉手感(2026-09-24)

  • 全胶囊几何语言统一:
    • 将 RagPortalTabSwitcher 外框由圆角矩形升级为与底部 Homebar 一致的全圆胶囊形态(CircleShape,48dp 高度),辅以 surfaceContainer 底色与内敛微描边(outlineVariant.copy(alpha = 0.5f)),消灭局部视觉冲突。
    • 选中项升级为同心全圆胶囊底座(secondaryContainer),与底栏选中胶囊在色彩与形态上达成 100% 同步。
  • 物理弹簧滑块与触觉手感移植:
    • 引入基于物理弹簧(Spring, dampingRatio=0.85)的滑动指示器底座,在选项间呈现平滑优雅的穿梭动画。
    • 移植 Homebar 的原生触觉反馈,轻点切换时触发微细清脆的 SEGMENT_TICK 刻度震动,实现视觉与触感双重享受。
  • 架构契约约束:
    • 严格保持 Content 层的无运行时环境确定性契约,全量 2790 个测试绿灯通过。

一级页面视觉统一与顶栏层级收敛(2026-09-24)

  • 首页(对话 Hub):
    • 移除顶部低频全局搜索栏与孤立图标,将“新建 Agent”操作重构为右下角 Material 3 悬浮操作按钮(FAB,16dp 圆角,带 primaryContainer 主色,内嵌 88dp 底部避让间距),首屏纯粹清爽。
  • 知识库主界面:
    • 移除 Scaffold 顶部冗余的“知识库”大标题(与底栏导航解耦),以 RagPortalTabSwitcher 全宽胶囊分段滑动选择器作为首屏视觉锚点。
    • 提取常驻统一搜索栏,自适应文档与记忆检索文案(“搜索文档…”/“搜索记忆碎片与事实…”),记忆 Tab 同步支持即时检索与空态反馈。
    • 移除顶栏孤立的“知识图谱”按钮,将其移至文档操作行,与“上传文档”、“新建文件夹”达成单行三等高按钮并列排布。
  • 契约与国际化:
    • 同步更新 AgentSessionsMaterialContractTest 契约测试;
    • 补齐记忆搜索中英文字符串资源。

知识库与知识图谱视觉打磨与层级收敛(2026-09-24)

  • 知识库主界面:
    • 移除 TopAppBar 右上角冗余的记忆设置齿轮按钮(全局记忆与 RAG 设置统一由底栏"设置"页面的"知识与检索"专属模块承接,消除同屏出现两个齿轮图标的功能冗余与视觉杂乱)。
    • TopAppBar 规范化加入“知识库”主标题,右侧仅保留知识图谱入口,形成明确视觉定位。
    • 文档 / 记忆 Tab 升级:弃用呆板且带打勾 ✓ 标记的 Material 3 默认 SegmentedButton,重构为现代全宽胶囊分段滑动选择器 RagPortalTabSwitcher(高雅微圆角背景容器、平滑过渡的纯色选中浮动卡片、集成文档/记忆图标与自适应文本),兼顾规范触控与视觉质感。
    • 统一垂直韵律:彻底修复原 Tab 区域双重 16dp 留白(合计 32dp)导致的视觉断层,将 Tab、搜索栏、上传/新建按钮行之间的垂直间距统一收敛为 8–12dp,界面节奏整齐利落。
  • 知识图谱页面:
    • 重构模式选择器:将原先臃肿近 50dp、缺乏垂直居中的方形色块按钮重构为标准 Material 3 FilterChip(全局、文档、概念),规范高度(32–34dp)与圆角,文本垂直居中,选中与未选中态质感细腻。
    • 对齐刷新按钮:右侧刷新按钮由裸露细字的 TextButton 升级为 34dp 等高的 FilledTonalButton,集成刷新图标与文本,与左侧 Chips 达成水平中线与高度基线完美对齐。
    • 文档选择与无障碍入口提升:文档模式下的文档选择器由 TextButton 升级为带文件图标、选中标题和下拉指示箭头的圆角卡片选择器;无障碍图谱列表入口统一为圆角 tonal 按钮。
  • 契约与测试同步:
    • 更新 RagHomeScreenContractTest 与 RagReleaseAccessibilityTest 确保顶栏干净无冗余设置齿轮;
    • 修复 ReleaseConfigurationTest 对当前 0.2.2-beta 版本元数据的同步断言。

首页折叠式 Agent 列表与知识库视觉统一(2026-09-24)

  • 首页(对话 Hub):Agent 行重构为独立可折叠卡片(surfaceContainerLow 圆角卡 + 头像降饱和 35%),点击头部手风琴式展开该 Agent 的会话列表(标题 / 日期 / 删除)或收起;"新建会话"内联于展开区;置顶标识改为标题前小图钉;取消跳转二级会话列表页的入口(路由保留作回滚兜底)。
  • 折叠区会话删除增加二次确认弹窗(复用 session_settings_delete 文案,红色 destructive 确认)。
  • 知识库:文档/记忆 Tab 由全宽 PrimaryTabRow 改为胶囊分段控件(自然宽度、移除全宽分割线);"新建文件夹"与"上传文档"统一为等权 tonal 胶囊按钮;文件空态改为 72dp 圆形容器图标 + 标题 + 副说明的层级结构。
  • 契约测试同步:AgentHubScreenContractTest(折叠卡片 + 展开指示 + 置顶标记)、BettboxGroupedSurfacesContractTest(首页改独立卡片、会话列表页保留分组面)。

滑块样式全站统一(2026-09-24)

  • 将 7 处直接使用 Material3 Slider(新版默认竖条 thumb + 刻度点轨道)的页面全部替换为共享 NexaraSlider(连续横线轨道 + 圆形 thumb),与会话设置面板一致:全局检索参数(分块/重叠)、RAG 高级检索、Agent 高级检索、Agent RAG 配置、记忆设置检索参数、外观文字缩放、技能搜索结果数。
  • 参数完全兼容(value/onValueChange/valueRange/steps/modifier),并移除各文件冗余的 M3 Slider import。

生成失败态发送按钮恢复机制(2026-09-24)

  • 修复:生成失败后发送按钮永久停留失败态(点击无响应、无法再次发送),用户被迫退出会话重进。现在输入新内容或点击失败按钮即确认失败并恢复正常发送态。
  • 实现:ChatViewModel.acknowledgeGenerationFailure() 以 acknowledged taskId 机制防止失败 presentation 把状态拉回 ERROR;ChatInputBar/GenerationStatusButton 在 ERROR 态可点击并回调确认,输入联动自动解除。

模型品牌 Logo 体系与选择器商业级改版(2026-09-24)

  • 新增品牌 Logo 体系:引入 lobehub/lobe-icons(MIT)SVG 资产(22 个品牌),Coil3 注册 SvgDecoder,新增 ModelBrandResolver(模型 ID/family → 品牌键,含前缀映射规则)与 ModelBrandIcon/ModelBrandTile 共享组件,未知品牌优雅回退通用图标。
  • 模型选择列表重设计:ModelSelectionListItem 弃用 ListItem 槽位,重写为紧凑自绘行——30dp 圆形品牌底座、名称 titleSmall(14sp)单行、元信息 labelSmall(11sp)单行(上下文 · 能力最多 2 项 · 提供方),选中态为 14dp 圆角 tonal 高亮块,列表不再绘制行间分隔线。
  • 多场景复用:聊天胶囊模型指示器前缀替换为品牌 Logo(modelId 透传至 ChatInputTopBar);Provider 模型页卡片同步降档(32dp 圆形底座、名称 titleSmall 单行、模型 ID 改等宽 labelSmall);会话设置模型列表与默认模型槽位共用同一行组件。
  • 契约测试同步:ModelPickerMaterialContractTest 以"紧凑自绘行 + 品牌圆标 + 单行元信息"契约替换旧 ListItem 槽位断言。

占用圈胶囊瘦身与提示浮窗圆角(2026-09-24)

  • 聊天页模型/上下文/任务三胶囊高度 48dp → 36dp,降低文字上下留白(用户裁决:展示胶囊接受低于 48dp 触控标准)。
  • 上下文用量 DropdownMenu 浮窗圆角改为 shapes.large(16dp),与全站圆润风格一致。
  • Markdown 特殊内容分段渲染列增加 8dp(紧凑模式 4dp)呼吸间距,标题与后续图表/告警块间隔统一。

管线气泡统一与验收遗留项修复(2026-09-24)

  • 管线气泡样式统一:工具执行气泡移除 tertiary 边框与 70% 宽度限制,与思考气泡统一为无边框 surfaceContainerLow 全宽样式;步骤间垂直引导线移除,改为 6dp 呼吸间距;死代码 PipelineConnector 一并清理。
  • 行内 LaTeX 在列表项中不渲染:repairCompressedMarkdownBoundaries 的内联列表符号规则会把公式内 " - " 折成换行,导致 $...$ 跨行失配;修复为与内联代码/链接一致,将 $$ 块与 $ 行内 LaTeX span 纳入压缩修复的预先保护。
  • 会话删除 SecurityException 根因修复:DB 工作区路径以 /data/data/<pkg> 别名落库、运行时父目录为 /data/user/0/<pkg>,字符串前缀比对误判越界。RoomSessionDeletionTargetResolver 与 RoomSessionWorkspaceMutationJournal 全部路径比对改为 canonical 归一(显式符号链接仍拒绝),并新增删除失败的结构化日志(错误码+cause 栈)。
  • 工具执行错误透传:ToolExecutor 不再用统一文案覆盖技能层错误详情,截断透传给模型供自我修正与用户定位;据此确认 generate_image 当前失败为网关侧 sensenova-u1.5-lite 通道不可用(503/model_not_found),非应用缺陷。

上下文占用圈与附件发送体验修复(2026-09-23)

  • 上下文占用圈自适应显示:formatTokenCount 替换整数除法,<1K 显示原始 token 数(修复 756 token 恒显 "0K" 的截断),≥999.5K 进位 M 单位;模型 contextLength 为 0 时兜底 128K(此前 sensenova 类目录缺失项显示 "0K / 0K")。
  • CJK 感知 token 估算:PostProcessor.estimateTokens 从统一 字符数/4 改为英文 4 字符/token、CJK 1.5 字符/token 分段计数,修正中文会话活跃 token 低估 2–3 倍。
  • 附件发送降采样:uriToDataUrl 改为两段式解码(bounds 探测 + inSampleSize),最长边压至 1568px、JPEG 85% 后再 base64,消除原图全量编码造成的发送前数秒阻塞,并大幅缩减入库 data URL 体积。已知残留:图片 token 与工具 schema 仍未计入占用圈统计(见视觉审计报告缺陷 A 精度复核)。

视觉审计缺陷与渲染健壮性修复(2026-09-23)

  • WebView UTF-8 安全解码:在 EChartsRenderer、MermaidRenderer 与 LatexRenderer 的 Base64 解码流程中引入 TextDecoder('utf-8'),彻底解决原生 atob 按 Latin-1 解析导致的中文及多字节文本乱码。
  • 行内 LaTeX 严格边界与流式缓存失效:行内数学公式正则收敛为排除前后空格与转义符的严格断言,避免误伤货币符号;增加流式结束时的分段缓存重计算机制,杜绝单 $ 跨块穿透导致的公式缺失。
  • 会话工具解析开放:在 DefaultSessionToolResolver 遗留空选策略下放行 ToolRisk.EXTERNAL_WRITE,恢复 image_generation 等外部写型内置工具的调用解析。
  • 图表与代码块排版优化:ECharts 隐藏右上角默认 Toolbox 图标,消除对坐标轴与图例文本的遮挡;深色模式代码高亮标点符号对比度提升至 #CBD5E1;代码块行号采用等宽字体与单行固定高度,消除外层组件内边距导致的行号与代码行基线错位。
  • 无障碍与触控尺寸对齐:Mermaid 工具栏按钮、调色盘色块与代码块操作区均确保 >= 48dp 规范触控区域;用户气泡多模态图片设定 120dp–240dp 弹性高度与裁切约束,避免图片被压扁变形。
  • 会话删除容灾:当会话物理工作区根目录丢失或不存在时,平滑降级为纯数据库清理模式并正确释放生成协调器,杜绝僵尸会话。
  • 设置与交互细节打磨:设置页底部补充留白,消除悬浮 Dock 遮挡;模型卡片未知类型本地化为“通用”;RAG 摘要清洗行首 Markdown 标题 # 标记;文档编辑器视口左右对称内边距;模型归属 Badge 横向展开;Provider 连接探测捕获结构化状态码与友好原因。

独立模型目录(2026-09-22)

  • 四个公开数据入口归一化为规范模型和供应商条目,保留来源与作用域;GitHub Actions 定时构建并签名发布到 Pages。
  • App 在恢复完成后检查目录,模型管理提供手动更新;固定公钥验签、哈希与版本验证、原子缓存及内置快照提供更新失败与离线回退。
  • 模型列表保留供应商显示名、额度和能力;精确匹配不改写请求 ID,已识别网关前缀仅作为查找依据,用户编辑与模型状态保留。
  • 供应商元数据与输入额度纳入备份往返;协议列表按流读取并传播取消,兼容 Claude 能力对象与 Gemini 模型字段。
  • 索引启动恢复在缺失文件扫描完成后才启动处理器,失败后保留恢复门禁,避免扫描与完成清理交错导致重复入队。

审计修复与双库恢复(2026-09-22)

  • 工作区创建事务以文件 FD 的随机扩展属性、文件标识及内容摘要验证归属;目录使用归属标记并拒绝清除新增内容。移动采用原子禁止覆盖,目录创建使用目录 FD。
  • UTF-8 嗅探处理采样边界和短读,导入时校验完整文本;索引调度失败成功回滚后退还批次预算。DOCX 预检按实际解压字节限制资源使用。
  • 接通离线 HTML 导入与文本提取,保留段落、列表和表格结构;统一分块保护 Unicode 字符边界,PDF 提取按文本预算及时停止。
  • 搜索查询保留技术符号、否定、实体和比较语义;取消向上传播,不触发后续生成或工具执行。
  • 模型目录测试分离固定解析夹具与真实资产不变量,避免固定记录数或上游兼容型号缺席造成更新误报。
  • OpenAI 兼容流处理合法可空字段;错误事件、错误非空类型、缺失结束标记和工具终态冲突均不得生成成功状态。指定本机网关测试仅显式启用并发送有界合成数据。
  • 双库恢复具备来源归档、认证阶段记录、关联映射、工作区及引用资产发布、旧附件入口和两侧知识库选择;未完成索引和外部执行需用户显式重试。公开 v17+v2 与内部 v17+v5 均有设备行为验证;公开 APK 的真实 schema 作为无用户数据夹具纳管。
  • 编辑器在编辑、预览与分屏切换时保留共同面板的组合身份,避免非末尾选区归零及重复初始化;实际横屏与 IME 交互回归通过。性能夹具使用 Compose v2 测试规则消除错误线程上的重组。
  • 本机 Android 模拟器执行例外记入 PDEC;当前验证记录 分别记录最终候选门禁、网关及人工验收边界和历史结果。

Bettbox 开源 Material 3 视觉基线迁移(2026-08-26)

  • 分组面贯通全部设置层级:新增唯一 BettboxListGroup filled-card 组件,以 20dp 圆角和 surfaceContainerLow 承载一级设置分组、Provider/模型管理、备份、本地模型、技能、用量、Agent 配置及 RAG/检索深层页面;最终移除共享外描边,层级只由填色与留白表达,避免边框被误读为设置项边界。
  • 记忆设置与首页列表减法:记忆设置不再把整页控件塞进一个大框,也不再用无法对应触控面的横线切割;预设、检索参数、摘要模板和后续入口改为四个边界明确的语义分组。Agent 首页移除行间横线以及列表上下 8dp 的异色空带,保留连续行、圆角裁切与完整按压反馈,不再出现顶部/底部伪阴影。
  • 首页业务列表与身份头部:设置首页账户身份块移除“账户”分区标签,保留更突出的 56dp 头像与用户名;Agent、会话与 Provider 模型按各自业务对象维持统一触控节奏,避免惰性列表的填满约束制造整屏空白卡壳。
  • 底栏按压轮廓修复:底部三按钮导航的外观、尺寸、选中动画与触感保持不变,仅把每个标签的交互 indication 在建立 selectable 前裁切至现有胶囊轮廓,按压波纹不再泄露方形命中容器。
  • 源码级参考而非截图拟合:以 Bettbox GPLv3 仓库固定提交 714130a3d746d093f6278c0503dac9e2e43fd3e3 的 lib/widgets/list.dart、lib/widgets/google_bottom_nav_bar.dart、lib/views/theme.dart 与 lib/common/color.dart 为视觉行为基线,将 Flutter 实现按 Jetpack Compose 语义重写;来源与许可已登记到第三方通知。
  • 设置与管理列表:设置分组改为 20dp 圆角 surfaceContainer 连续填充面,标准 ListItem 恢复 Material 3 主副文字、24dp 前导图标和稳定触控节奏;Provider 与模型管理列表同步使用同一填充表面与首尾圆角,不再散落为贴背景的自定义文本行。
  • Bettbox 式底部导航:移动端主导航改为 36dp 圆角的浮动 surfaceContainer 导航座,使用弱描边、阴影、24dp 图标、secondaryContainer 选中项和 250ms 槽位权重动画;原有真实标签切换触感继续保留。
  • 完整外观设置:新增跟随系统/浅色/深色三模式卡、种子色盘、Android 动态取色、深色纯黑背景及 80%–140% 全局文字缩放。种子色通过 Material Color Utilities 的 Tonal Spot 方案生成完整明暗色阶,偏好均即时持久化。
  • 当前验证与正式 APK:设置首页、Agent/会话列表、Provider 表单与模型列表、备份及 RAG/检索深层页的受影响截图均已逐张检查;全量 JVM 2571 项(0 failure/error、14 skip)、100/100 Screenshot、AndroidTest 编译与 Lint(0 Error/Fatal)通过。当前源码经 clean 正式签名 R8 Release 构建,APK 18,909,055 bytes,SHA-256 79d6b7c71b903fe783e4bd4d1625b6a3794154cfb292731c0efbd6f9759f8c5e,包身份、唯一 signer、登记证书、敏感内容与本地推理制品排除、R8 输出、16 KiB zipalign 和 checksum 均通过;本轮无连接设备,物理真机上的按压态仍由用户继续验收。

会话可靠性、诊断与连续列表再收敛(2026-08-26)

  • 生成终态封口:Provider 一旦发出显式 Completed,本轮流立即停止消费;迟到的失败分片不再把已经成功落库的正文污染为“提供商不可用”。字号滑块在拖动过程中采用串行防抖落库,即使 Sheet 被手势关闭、没有触发滑动结束回调,也会持久化最终字号。
  • 会话删除兼容:从未创建工作区的普通/历史会话使用独立 Room 原子删除事务,显式清理消息、附件、工具账本、任务、向量、知识图谱和审计关联,不再误入物理工作区身份校验而导致左滑删除失败。
  • 根页面与列表节奏:对话、知识库、设置三个根页面移除左侧标题,同时保留搜索、添加、图谱和配置动作;底部水滴导航结构、尺寸与视觉不变。会话列表采用 17sp/22sp 半粗标题、14sp/19sp 正文、6dp 层级间距与 80dp 最小行高,Provider、模型摘要和设置入口同步减少标签墙与无规则纵向留白。
  • 模型与媒体能力:模型编辑器允许修改并持久化请求时发送给上游的精确模型 ID,适配无法列出模型的 OpenAI-compatible Provider;类型与能力改为连续单选/开关列表。用户图片和工具生成图片均可打开全屏查看器,支持缩放、旋转、保存与分享;现有图像生成工具链继续复用同一结果预览路径。
  • 实机诊断与动效:发行版新增 512 KiB 有界 JSONL 诊断事件文件,只允许状态、计数与标识符,正文、Prompt、请求/响应、凭据和 URL 字段强制省略;设置页可直接导出。根标签淡入淡出、会话增删/重排和既有流式尾部缓动共同减少硬切,并继续遵循系统动画缩放。
  • 验证与候选 APK:全量 JVM 2560 项(0 failure/error、14 skip)、101/101 Screenshot、AndroidTest 编译与 Lint(0 Error/Fatal)通过;当前源码经 clean 正式签名 R8 构建,并通过包身份、唯一 signer、登记证书、敏感内容、本地推理制品排除、R8 四类输出、16 KiB zipalign 与 checksum 验真。APK 为 18,683,280 bytes,SHA-256 a0dedb874a4d3bead8097ef8d405fc11a536a2ccca842def64701ad5acdb7a73;当前无连接设备,未把历史安装结果冒充当前 APK 的真机证据。

真机 Provider 恢复与会话交互修复(2026-08-26)

  • Agent 内置头像持久化:从自定义图片切换到任一内置向量头像时,不再依赖 1 秒文本防抖;选择会立即提交 Room,并在页面销毁后继续完成这次明确写入。Agent 首页继续只读取持久化 icon/avatarPath,因此返回首页后会显示新内置头像而不是旧自定义图片或默认图。
  • 错误提示去重:生成失败新增明确的呈现面标记;已经持久化为会话内错误气泡的网络、Provider 和流式失败不再重复触发输入框上方 Snackbar。只有尚未形成消息、文档预算前置阻断、消息持久化失败等无内联气泡的错误保留顶层提示。
  • Provider 配置恢复:未知协议的主 Provider 不再从管理页消失,而是与未知额外 Provider 一样显式呈现;点击可进入安全修复流程,保留名称、地址和凭证存在状态,但在用户明确选择受支持协议并替换或清除凭证前继续禁止联网,避免把历史协议静默伪装成 OpenAI-compatible。
  • 消息轮次删除:新建助手消息记录对应用户消息父 ID;删除用户消息会把同轮助手、工具和错误消息作为一组从 Room 原子删除,旧数据即使缺少父 ID 也按相邻轮次兼容处理。孤立错误改为独立 Material 3 错误容器,可长按删除,不再黏到上一条成功回复底部;撤销删除同步恢复完整轮次。
  • 会话视觉与触感:图片附件删除动作改为缩略图右上角独立圆形按钮;思考框到正文的线和点全部移除,工具调用链连接器保留。底部三按钮水滴导航的尺寸、形状与动画不变,仅在真实切换标签时增加由系统/OEM 调校的分段 tick 触感,并遵循应用触感开关。流式正文尾部淡入降低明暗跳变并延长缓动,减少逐字符机械闪现。
  • 验证与候选 APK:全量 JVM 2553 项(0 failure/error、14 skip)、100/100 Screenshot、AndroidTest 编译与 Lint(0 Error/Fatal)通过;正式签名 R8 APK 从 clean 工作树构建并通过包身份、唯一 signer、敏感内容、本地推理制品排除、R8、16 KiB zipalign 和 checksum 验真。最新 APK 18,666,372 bytes,SHA-256 b09af07ac8864ecab078e5933f54a9fa13d31d598b699350e3e0b5b0f6a52514;本轮无连接设备,当前 APK 的物理真机安装与头像/错误呈现复测由用户继续验收。

v0.2.1-beta 工具链、工作区与数据继承收口(2026-08-25)

  • 工具执行与审批失败关闭:工具参数保留真实 JSON 类型并以规范化参数摘要、定义摘要和 runtime id 组成稳定身份;注册、审批、认领、重放恢复及取消全部按精确身份 CAS。取消发生在注册、预检、认领或执行边界时只产生一个 CANCELLED 终态,损坏或不一致的历史审批不会被降级执行。
  • Provider 与 MCP 端点对齐:生成、模型目录和连通性探测共用唯一端点解析;未知持久化协议保持零网络并以可删除的禁用行显式呈现。Generic 模型目录同时接受裸数组与 data envelope;MCP HTTPS Streamable HTTP 采用有界增量 SSE,首个精确 ID 响应即关闭,错 ID、错误版本、畸形、截断或超限事件全部失败关闭。零一万物官方平台公告 已进入 API 停止服务窗口,因此只保留历史配置识别,不恢复不可验证的网络能力。
  • 工作区、分享与 RAG/KG 一致性:会话/文件删除使用持久 journal、删除屏障和稳定 tombstone 处理崩溃恢复;分享导入的重试保持原操作身份。RAG 查询固定在当前 workspace root,BM25 同分使用确定性排序;知识图谱只在全局、文档和规范化概念作用域内保留同域 last-good,跨作用域切换清空旧图并提供明确重试。
  • 备份与 WebDAV 合同:核心数据可在不导出密钥时独立加密,导出密钥强制启用密码;快照通过配置 revision 前后复核,持续变化时失败关闭。WebDAV 明确为手动上传、列表与恢复;个人和 Agent 自定义头像路径不跨设备进入备份,避免恢复无效沙箱路径。
  • 头像导入与裁剪闭环:个人头像和 Agent 自定义头像统一使用系统图片选择器与 1:1 裁剪流程,支持移动、缩放和旋转,输出限制为最长 512px;裁剪页使用与应用一致的 Material 3 明暗色、避让系统状态栏,并提供明确可点击的“完成”动作。头像文件改为内容哈希命名和原子发布,连续上传不同图片会产生新缓存身份,不再被图片缓存永久锁在首次上传结果;Agent 头像显示统一裁满圆形容器,避免非方图留出背景边。
  • Agent 头像持久化与首页身份列表:Agent 编辑页的延迟保存不再依赖无人订阅的派生状态;自定义头像先成功提交 Room 再更新页面并清理裁剪临时文件,保存失败时保持可重试。Agent 首页直接消费持久化头像路径,使用连续 Material 3 ListItem、88dp 行高、56dp 圆形头像及 17sp/15sp 主副文字层级;没有新增卡片容器,底部三按钮导航保持零改动。
  • 发行与数据继承门禁:应用候选升级为 versionCode 3 / 0.2.1-beta,按公开 v0.1-beta 实测 nexara.db v17 结构新增到 nexara_v2.db v18 的同签名覆盖升级链。接管会校验精确 Room identity 与关键列、完整 checkpoint WAL、保留旧库回退源并原子发布;Android FTS4 完整性检查在一次性可写私有副本上执行,避免只读 quick_check 误报且保持歧义源库零写入。迁移保全 Agent、Session、Message、旧附件 JSON、工作区/RAG 根、向量与任务子图,并在启动阶段为精确旧会话路径补建根身份;/data/data 与 /data/user/0 的系统 bind-mount 别名按文件身份识别,不放宽符号链接和越界路径防护。门禁写入并回读数据库、偏好、WAL-only 与物理文件哨兵,恢复注入文件的 SELinux MCS 标签后只允许 adb install -r,禁止卸载或清数据回退。最终 API 35 实测已完成公开 v0.1-beta 到当前正式签名 APK 的全部哨兵回读。对于曾走过 v0.1→v0.2 而同时遗留 v17+v5 的双库安装,本版在任何合并写入前 fail-close 并保留两库,不再静默选库;无损双库恢复仍作为显式阻断记录于 v0.2.1-beta 验证账本。
  • 视觉冻结边界:底部聊天、知识库、设置三按钮导航与已经确认的设置页 Material 3/SE 视觉保持不变;本轮新增错误、禁用、加载与重试状态继续复用现有连续列表和语义 Token。

设置全层级向 Solid Explorer 连续列表语言收敛(2026-08-03)

  • 统一页面骨架:设置首页及二、三、四级页面统一使用原生 Material 3 顶栏、背景、边距和连续分组列表;主题、Provider、默认模型、RAG、检索、技能、备份、本地模型、开发者与用量页面保持原业务与导航关系。
  • 深层页面恢复标准 MD3 层级:二、三、四级页面不再使用 10–14sp 的压缩文字映射,页面标题、设置主标题、辅助说明与分组标题分别恢复为 22sp、16sp、14sp 与 14sp 的 Material 3 角色;单行/双行设置项使用 56dp/72dp 节奏,保留至少 48dp 触控目标。提供商列表移除装饰性品牌图标前导列,模型列表收紧为统一 16dp 文字轴,表单、搜索、开关、单选与操作按钮继续保留真实功能。
  • 一级页标准列表层级:继续实机对照后确认廉价感主要来自前导图标列与压缩字号,而不是副标题本身。一级入口现使用无前导/无尾随装饰的 Material 3 双行 ListItem,主标题 16sp/24sp、副标题 14sp/20sp;副标题只解释功能,不展示动态状态。账户区独立为 88dp 身份头部,使用 56dp 头像与 22sp/28sp 用户名,不再与普通设置行共用层级;深层页面同步使用同一标准排版体系。
  • 导航硬边界:底部聊天、知识库、设置三按钮导航组件保持零改动;新增集成截图只用于验证设置页在既有导航容器内的整体构图与内容避让。
  • 视觉与回归:更新受影响截图并新增设置首页普通手机和底栏集成基线;将 SE 源图与无图标双行首页按同宽裁切并排复核,同时检查 2.0x 字体无裁切或重叠;全量 JVM 2140 项、101/101 Screenshot、Lint 0 Error/Fatal、AndroidTest 编译与 Debug APK 构建通过。深层页面标准 MD3 Token 收敛后重新 clean 构建稳定证书签名 R8 APK,包身份、版本、单一 signer、历史正式证书、敏感内容/本地推理制品排除、R8 四类输出、16 KiB zipalign 与 checksum 均通过;APK 18,369,076 bytes,SHA-256 4b19f50fa7c383d69b4acc28eebc4965f484194fe022f8a45f67fe9587f6bbe1。

会话任务进度面板完整回归 Material 3(2026-08-01)

  • 消息流任务卡:任务进度从 composer 内部移入消息流,只保留任务标题、x/y 数字进度、当前未完成项与“继续处理 / 标记已完成”动作;移除进度条、整树列表和累赘状态说明。
  • 第三任务胶囊:模型与 Token 胶囊旁新增同体系 AssistChip。只有真实生成状态显示脉冲“正在生成”;生成已停止但模型漏销项时改为静态“待确认 N”,避免把残留计划误报为仍在生成。
  • 人工恢复与销项:胶囊可滚动定位消息流任务卡并关闭自动追尾;生成停止后可继续处理或一次性完成所有未完成叶节点,完成后卡片与胶囊同步消失。活动计划仍拒绝被覆盖,已全部完成的旧计划会在事务内清理后创建新计划。
  • MD3 与验证:实现沿用目标分支 MaterialTheme、语义 surface、Shape/Spacing token、标准按钮与 48dp 触控目标,不引入 Glass。新增待确认、生成中和中文 2.0x 字体截图,Screenshot validation、API 35 会话状态 10/10 与无障碍 9/9 均通过。

1.4.0

UI/UX Consistency

  • 全局 Modal 高度限制: 为了提升原生 Android 版本的视觉一致性,扫描并更新了全站所有 ModalBottomSheet 组件,将其内容高度统一限制在屏幕的 70% (fillMaxHeight(0.7f)),避免了内容过多时撑破屏幕导致的不雅观现象。
  • 设置界面精简与优化:
    • 移除了冗余的设置项间隔和文字标题,使设置界面视觉更加连续和沉浸。
    • 移除了“振动反馈开关”,将其功能设为默认开启。
    • 移除了“日志”相关冗余功能。
  • 消息气泡布局优化: 主会话界的 AI 回复气泡改为全宽布局,大幅提升了长文本和代码块的阅读体验,同时保持了优雅的左右间距。
  • 启动逻辑调整: 优化了启动界面的触发逻辑,确保仅在应用首次安装/打开时显示。

Added

  • 备份系统 (Backup System): 全面重构备份功能,彻底移除占位符。
    • 实现 BackupRepository,支持 Room 数据库实体的 GZIP JSON 序列化。
    • 集成 Android SAF (Storage Access Framework),支持本地 .nexara 备份文件的导出与导入。
    • 实现 WebDAV 协议同步,支持云端备份上传与还原。
    • 为核心 Entity 类(Agent, Session, Message, Skill, Document)添加 @Serializable 支持。
  • BackupViewModel: 引入备份业务状态机,实现备份配置的持久化存储。

Fixed

  • 流式传输与思考过程: 修复了主会话文本瞬间显示的 Bug,并确保了思考过程(Thinking Process)UI 组件能正确展示。
  • 模型选择持久化: 修复了主会话输入框上方模型选择器退出后再进入会话重置的问题,移除了 mock 的 gpt-4o,确保未配置时显示为 empty。
  • 修复设置页“备份”项配置无法保存的问题。
  • 修复“工具”设置页底部显示不全及样式生硬问题。
  • 移除“设置”中重复的“主题色”选项。
  • 移除占位用的“工作台”功能。

0.2.5

Fixed

  • 模型预设选择逻辑修复: 彻底解决了原生 Android 版本设置页面中,功能模型(嵌入、重排、图像)选择器点开后列表为空的问题。
    • 优化了 UserSettingsHomeScreen 的模型映射逻辑,整合 type 与 capabilities 字段,确保所有功能模型均能被正确过滤。
    • 修复了模型选择器中 contextLength 等元数据传递缺失的问题。

Native RAG & Persistence

  • RAG 设置持久化修复: 解决了原生 Android 版本中知识图谱和高级 RAG 设置在退出页面或重启应用后重置的问题。
    • 在 RagViewModel 中实现了基于 SharedPreferences 的完整配置持久化方案。
    • 覆盖了知识图谱开关、抽取模型、Prompt、JIT 块限制、成本策略等所有 30+ 项参数。
  • 抽取模型动态化: 移除了知识图谱设置中的 Mock 数据,现在“抽取模型”选择器会动态加载用户在“供应商管理”中实际配置的模型。
    • 修复了点击选择器后列表为空的问题,并能正确显示已选模型的名称。
    • 增加了模型选择占位符的国际化支持。
  • 知识图谱可视化真实对接: 修复了知识图谱可视化界面使用 Mock 数据的问题,现已对接数据库真实实体数据。
    • 实现了 KnowledgeGraphViewModel 用于管理图谱状态与随机坐标布局生成。
    • 在顶栏新增了“注入测试数据”与“清空图谱”调试按钮。
  • 原生会话面板全量修复: 彻底解决了主会话相关面板(设置、工作区)的 Mock 数据与 UI Bug。
    • 会话设置: 实现了模型动态加载(SettingsViewModel)、思考等级(温度控制)、Token 统计以及工具开关(时间注入、检索、网页搜索)的真实对接。
    • 工作区: 实现了任务进度(Tasks)与工具产出(Artifacts)的真实对接,动态展示会话内的执行状态。
    • 视觉 Bug: 修复了所有 TabRow 页面(设置、工作区、插件管理)中指示器渲染异常导致的“紫色条”问题。
  • 稳定性修复: 修复了点击助手设置图标导致的闪退问题。该问题由 LazyColumn 中嵌套 LazyVerticalGrid 引起的布局计算异常导致,现已重构为非滚动嵌套布局。
  • 助手设置重构: 重构了助手编辑页面 UI,引入动态折叠交互和自定义图片上传功能。
  • 功能对接与持久化: 完善了助手编辑页面所有字段(模型、提示词、头像、置顶等)的前后端对接与持久化,接入了真实模型列表。

UI/UX

  • 模型管理功能增强: 原生版本模型管理界面(ProviderModelsScreen)新增“图片”、“嵌入”、“重排”功能标签,支持用户手动校准模型能力。

Added

  • 模型规格库扩展: MODEL_SPECS 数据库新增了数十种常用模型规格,包括:
    • 嵌入模型: OpenAI text-embedding-3, BAAI bge-m3 等。
    • 重排序模型: BGE Reranker, Jina Reranker 等。
    • 图像模型: DALL-E, Stable Diffusion, Flux 等。
    • 智谱 GLM 系列: 补全了 GLM-4.7, 4.5 等高能力模型的规格配置。

1.2.52

Changed

  • Library UI Performance Optimization: 文库界面全面性能优化
    • PortalCards 组件: 从内联定义提取为独立 memo 组件,避免每次渲染重新创建
    • 列表项动画: FadeIn/FadeOut 时长从 200ms/150ms 优化为 120ms/80ms,提升滚动流畅度
    • RagStatusIndicator: 呼吸灯动画改为按需运行,空闲时自动停止降低 CPU 占用
    • KnowledgeGraphView: 新增 HTML 模板缓存机制,避免重复字符串生成
    • 批量操作工具栏: 添加 SlideInUp/SlideOutDown 弹簧动画

Docs

  • 新增文库界面审计报告 (docs/archive/library-audit-2026-02-17.md)

1.2.51

Changed

  • Button 组件重构: 添加弹簧缩放点击反馈动画,支持 children 属性
  • Card 组件重构: 添加弹簧缩放点击反馈动画,优化可点击卡片交互手感
  • AnimatedSearchBar 优化: 图标透明度动画与容器动画同步,缩短动画时长至 250ms
  • Switch 组件优化: 关闭状态颜色适配动态主题,使用半透明色替代硬编码色值
  • Toast 动画优化: 缩短进入动画时长,优化弹簧参数提升轻盈感
  • 动画配置扩展: 新增 SPRING_BUTTON、SPRING_CARD、SPRING_TOAST 专用配置
    • 新增 ScaleIn/ScaleOut、ToastEnter/ToastExit、ListItemEnter/ListItemExit 预设

Fixed

  • GlassAlert 触感反馈: 添加 10ms 延迟保护,遵循 Native Bridge 防御规则

1.2.50

Changed

  • ContextMenu 全面重构: 优化悬浮菜单组件的视觉设计、交互跟手性和性能表现
    • 修复触摸点坐标偏移问题,菜单不再被手指遮挡
    • 重构阴影层级结构,消除透明背景阴影溢出问题
    • 优化边框颜色,使用半透明边框提升视觉精致度
    • 缩短长按触发阈值从 250ms 到 200ms
    • 添加弹性缩放动画,菜单弹出更具质感
    • 简化动画层级,移除双层 Animated.View 嵌套
    • 添加 isMounted 安全检查,防止组件卸载后状态更新
    • 使用 useWindowDimensions 响应屏幕旋转

Fixed

  • 触摸区域优化: 扩大三点图标触摸区域至 44x44px (Apple HIG 标准)
    • CompactDocItem、MemoryItem、FolderItem、RagDocItem 组件触摸区域统一优化
  • 图标尺寸统一: 三点图标从 16px 调整为 18px,提升可点击性

1.2.32

Changed

  • Markdown Line Breaks: Configured renderer to treat all soft line breaks (single newlines) as hard breaks (<br>). This ensures that poem-like structures and chat messages are displayed exactly as output by the model, preventing unwanted text merging.

  • CJK Rendering: Reverted aggressive CJK whitespace optimization to prevent destruction of Key-Value formatting and other structured text. Adopted "Preserve Newlines" strategy for maximum compatibility.

  • Knowledge Graph Node Merge: Introducing ability to merge nodes when renaming to an existing node name. Automatically transfers relationships and merges metadata.

  • Glass UI Enhancements: New GlassAlert component replacing native alerts for consistent design. KGNodeEditModal updated to true Glass Header blur style.

Fixed

  • RedBox Error Suppression: Handled "UNIQUE constraint failed" errors gracefully in Graph Store, preventing app crashes during node operations.
  • Type Safety: Resolved TypeScript errors in Knowledge Graph components.
  • UI Consistency: Aligned modal transparency and border styles with Session Toolbox.

1.2.28

Fixed

  • Fixed Markdown rendering issue where single newlines (soft breaks) were collapsed in chat bubbles for models like DeepSeek/OpenAI.

Earlier development notes are in CHANGELOG.md in the repository