Skip to content

0.2.12

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Nov 08:40

新增

  • Agent 现在可以操作画在 <canvas> / <video> 里的页面(在线白板、地图、游戏、播放器等):按画面上的坐标单击、双击、右键、拖拽、移动指针或滚轮,命令行是 pilion pointer。只能用于 canvas 和 video,坐标不在屏幕上时先尝试将画面滚入视口,即使随后拒绝操作,视口也可能已经改变;坐标落在画面外、被别的元素盖住或尝试滚动后仍不可见时,会在派发指针输入前拒绝;滚动后应重新观察再操作。审批卡会写明坐标,并提示「按坐标操作:Pilion 无法识别该位置上的内容」。screenshot --json 同时给出图片和页面的宽高,方便 Agent 换算坐标。

变更

  • 同一份数据目录只会运行一个 Pilion:再次启动会把已打开的窗口带到前面,带着网址启动时在已有窗口里打开它。此前第二个实例会让每条定时任务触发两次、互相覆盖工作区,并删掉第一个实例的对外控制 socket。
  • 启动时自动清理本地台账里 30 天前的工具结果正文(主要是截图)和 7 天前的外发记录,审计条目本身保留;新建的台账会随清理收缩文件。
  • 带 # 的网址在打开、恢复标签和 Agent 导航时保留片段,文档锚点和单页应用的哈希路由不再丢失。
  • 录制不再把网址里的登录凭据(code、token、签名等参数的值,以及 OAuth 回调片段)写进录制;回放到这样的地址时会请你自己打开。银行卡号、安全码、有效期和一次性验证码输入框与密码框一样,只记「需要你来填」,不记内容;「显示密码」换了输入框后也一样。
  • 聊天里指向本地 .html、.svg、.xml 文件的链接改为在文件夹中显示,不再直接打开。
  • 你自己回放技能的时间上限从 4 分钟放宽到 30 分钟。
  • 面板里的 Detach / Attach 改为「暂停浏览器权限」「共享浏览器」;Agent 空间在侧栏、空间切换器和任务总览里的状态文案统一为「运行中」「等待确认」「已接管 · 待交还」。
  • 发布流程:打 tag 后先跑类型检查、lint、格式检查和单元测试,并校验 tag 与 package.json 版本一致,通过后才构建;CI 新增 Windows 上的类型检查和一组单元测试;工作流里的 Action 固定到提交;签名凭据只传给打包步骤。
  • 随应用附带的 pilion-browser skill 更新到 1.0.1:说明改为「操作记入审计、受审批设置约束,用户随时可以叫停」。

修复

  • 截图在已滚动的页面上带 --scale(或自动降级到缩小分辨率)时截的是当前看到的区域,不再是页首那一块;页面缩放不是 100% 时 --clip 按页面像素截取,与 observe 给出的位置一致。
  • screenshot --clip 不带 --scale 时不再以 Invalid parameters 失败(此前只有同时给 --scale 才能按区域截图)。截取区域整个在当前可见页面之外时,不再返回一张空白图,而是拒绝并提示该滚动多少;只有一部分在外时照常截图,并在结果里标 partial: true。
  • 带图片发任务不再断开 Agent:发给 Agent 的单帧上限此前和收帧共用 1 MiB,一张约 750 KB 以上的截图就会让连接以 PROTOCOL_FRAME_TOO_LARGE 失败。发送上限现在按「5 张、每张 5 MB」的最大合法 prompt 计算。
  • 修复一种会让 Pilion 每次启动都直接退出的情况:进程在某次操作「准备好、尚未派发」时被强退,下次启动对账会因非法状态转移而失败。停在这一步的操作一定没有碰过页面,现在如实记为「派发前失败」。
  • 一个会话里某次操作在派发前失败(比如元素已失效),不再把其它会话此刻正在执行的操作一并记成「结果未知」并让它们随后报错。
  • 定时任务的 cron 表达式现在认月份字段:0 9 1 6 * 是每年 6 月 1 日,而不是每月 1 日。永远不会到来的日期(如 2 月 30 日)在保存时就被拒绝;闰日这类一年以上才有一次的规则可以正常创建。旧版本按错误规则算出的下次运行时间会在启动时重新计算。
  • 「每天 / 指定星期」的定时任务在夏令时开始那天顺延一小时后,第二天起回到原定时刻,不再一直晚一小时。
  • 定时任务和 Agent 配置文件里有一条读不懂的记录时,只跳过这一条,其余照常加载,原文件另存为 .unreadable;此前会把整个列表当成空的,下一次保存就全部覆盖。Agent 配置改为原子写入。
  • 从 Chrome 导入 Cookie:只属于单个主机的 Cookie 不再被扩大到它的所有子域;__Host- 前缀的 Cookie(GitHub 等站点的登录态依赖它)不再被拒收。
  • macOS 上 Ctrl+字母不再被当作浏览器快捷键:在网页的输入框或网页终端里按 Ctrl+W、Ctrl+R、Ctrl+K、Ctrl+T 不会再关闭标签、刷新页面或跳到地址栏,快捷键只认 ⌘。Windows / Linux 上 AltGr 组合键(Ctrl+Alt)留给网页,可以正常输入 [ ] { }。
  • 对话面板如实显示每条对话的连接状态:没有连接时显示「未连接」并给出连接入口,连接失败或并发名额已满时显示原因和「重试」,不再一直停在「正在连接…」。持续目标(goal)运行中切到别的对话再切回来,不再被显示成「已就绪」。新建对话没连上时,「断开」「切换模型」不再作用到上一条对话。来回切换对话不会再对同一条对话发起两次连接并报一个假的「连接失败」。
  • 一次选择或粘贴多张图片时全部保留(此前只留最后一张),5 张上限在同一批内同样生效。
  • 工具栏图标按钮恢复各自的悬停提示(Agent 操作中的原因、录制说明、图片张数与大小限制等此前被按钮名称覆盖)。
  • 有等待确认的审批时,手动收起的协作面板不会在下一次状态刷新时又被弹开;只有出现新的审批才展开。
  • 退出时再按一次 ⌘Q 或在收尾期间关掉窗口,不再跳过 Agent 进程、对外控制 socket 和账本的清理。退出时所有会话(包括后台对话和定时任务)都走正常断开。
  • 录制在启动过程中被停止时,已经装进页面的录制脚本、绑定和监听会全部拆掉,不再残留在该标签之后打开的页面里;紧接着的下一次录制也不会被上一次的收尾关掉。
  • 名称很长的录制再录一次同名的不再保存失败并丢失内容。
  • 删除空间时,它的标签只会并入你自己的空间,不会落进排在最前面的 Agent 空间。
  • pilion space close 对因闲置、重启结束或用户刚交还的空间也真正结束(此前报「已关闭」但空间仍可恢复)。pilion space new 的任务名超过 40 个字符时给出明确错误,而不是「连接关闭、结果未知」。pilion status 在 Pilion 没有运行或连接数已满时如实说明,不再一律提示凭证可能已被吊销。pilion toString 这类名字按未知命令处理。
  • 对外控制:握手失败的连接不再在 15 秒后多记一条 hello_timeout 审计;「移除 Agent 集成」先吊销凭证再删本机文件,删到一半失败也不会留下仍可使用的凭证;重新安装时 cli.token 原子替换。
  • 后台标签页开始加载时,不再清掉当前标签页的页内查找计数。
  • 设置页「Agent 集成」和 README 里关于外部客户端默认权限的说明与实际行为一致:新建的客户端默认「始终允许此客户端」(0.2.8 起),可在客户端列表改为「操作前确认」。
  • Agent 遮罩与「AI 操作中」标识按每个会话自己的状态判断:另一条对话停止过任务,或把面板切到别的对话,都不会再让正在操作当前页的 Agent 失去遮罩。
  • 首次提炼技能时,运行和停止状态记在提炼对话自己的连接上;提炼对话没连上时不再沿用上一条对话的连接。
  • 断开 Agent、连接中途失败或关闭进程出错时,不再留下子进程、MCP 通道或未处理的错误;台账里附加记录已过期时也能正常断开。
  • 删除或淘汰正在查看的 Agent 空间时,录制、回放和 Agent 工作标签一并收尾,并保留一个可用的标签页。新开的标签页对所有已附加的对话都可用,不只是当前对话。
  • 审批过期或页面已变化后再点「批准」,会明确提示「审批已过期,操作没有执行」或「页面已变化,审批失效」,Agent 收到的也是这个原因,不再被当成「用户拒绝了操作」。
  • 审批摘要里来自网页的元素名、表单目标、选项值,以及 Agent 提供的上传文件路径,一律压成一行并限制长度,无法再借换行在摘要里伪造额外的行。
  • 退出时等待中的浏览器审批会在台账里如实记为拒绝,定时任务的最后一次写入会落盘后再关闭台账;取消操作或停止 Agent 空间时,等待中的审批卡片立即消失。
  • 页面里的广告、验证码等嵌入框跳转时,已批准的点击和正在进行的观察不再失效。页面自己提交表单后遇到 307/308 重定向,不再被改成不带表单内容的普通请求。
  • 多个 Agent 同时在不同标签里操作时不再互相取消鼠标操作;标签切到后台、或一个会话停止时,别的会话进行中的点击不受影响。取消操作时鼠标和按键不会停留在按下状态。
  • 长时间使用后,已关闭的标签页、过期的元素引用和操作凭证不再一直占用内存。
  • 从正在运行的 Chrome 导入 Cookie 时能读到最近写入的内容。
  • 目标(goal)模式下 Agent 长时间没有动静时,也会像普通对话一样提示沉默。Agent 发来较大的消息(例如带截图的工具结果,最大 16 MB)不再被断开。
  • 远端登录时打印的欢迎信息不再导致 SSH Agent 连接失败;SSH 连接可以使用 ssh-agent 里的密钥;系统代理设置(HTTP_PROXY 等)会传给 Agent。
  • 恢复对话时如果 Agent 已经不认识旧会话,会自动开一个新会话;连接过程中点停止不再被报告成「Agent 意外断开」;启动失败的 Agent 不再留下停不掉的连接。
  • ACP 适配器安装后先检查完整再启用,装坏了不会留下半成品。浏览器工具调用卡住超过 90 秒会返回错误。本地 MCP 通信文件在路径过长时改放到只有当前用户能访问的目录。
  • Agent 操作在派发之后、真正开始之前失败时,如实报出原来的错误,台账里这次尝试记为失败,不再卡在「已派发」。
  • 定时任务:停用期间错过的时间点,重新启用后不会立刻补跑;一次运行超过间隔时每个错过的时间点只记一次「跳过」;被跳过的那次不改写「最后运行时间」;算不出下一次时间的任务自动停用并提醒。连点「保存定时任务」只创建一个任务,打开时立即显示接下来三次运行时间。
  • 录制:保存失败时录下的内容不会丢,再点一次「保存」会重试;在一个输入框里打很多字不再把录制撑到上限;快速连点同一个按钮每一下都会记下,只有真正的双击才合并;日志到达上限时录制条会提示。
  • 技能提炼:同一个输入框改过几次值时只保留最后一次的技能不再被误判;「保留」连按两次只保存一次;还有一份提炼结果没处理时不能开始提炼另一份,也不能把聊天里的修改建议应用到同一个技能上。技能修改建议只显示在提出它的对话里,可展开查看修改内容。
  • 更新:重启安装的过程中不再被新的检查打断;安装失败会显示原因并可重试;下载 10 分钟没有进展时提示失败。
  • 对话面板:停止或接管任务时排队的消息不再丢失,Agent 就绪后自动发出;连接中排队的消息就绪后即发出;收起面板或切换对话后草稿、图片和待发队列都保留;消息没发出去时文字和图片留在输入框,原因只提示一次;没连 Agent 时按 ⌘/Ctrl+Enter 不再清空输入。只带图片的消息会提示补一句文字说明。
  • 错误提示不再带「Error invoking remote method…」前缀。地址栏输入 localhost:3000 这类「主机:端口」会直接打开网址。新标签页上按 ⌘F 不再留下稍后才冒出来的查找栏。命令栏、任务总览、扩展与浏览器数据同一时间只打开一个。Agent 运行时也可以新建或切换对话。
  • 「扩展与浏览器数据」窗口可用 Esc 关闭并正确管理焦点;技能库列表项可被读屏识别为按钮;读屏只在 Agent 正在这个标签页上动手时播报「Agent 正在操作」。
  • 设置:新增外部客户端失败时显示原因;技能内容读取失败会说明原因,选中的技能变了编辑器不会把内容存到别的技能上;编辑空间期间当前空间被切走,保存仍写回打开编辑时的那个空间;本机 Agent 检测完成前不再误报「首次连接需要安装 ACP」;为对话切换到不存在或已停用的 Agent 会直接报错并保留原来的绑定;Agent 集成缺少凭证文件或 pilion 命令时会提示重新安装。
  • 对外控制:吊销或删除客户端时即使写盘失败也会立即断开它,通道没在监听时同样生效;clients.json 局部损坏只跳过读不出的条目并保留原文件;「安装到 Agent」首次失败会清掉这次写下的文件,中途崩溃留下的孤立客户端下次启动自动吊销;连接被拒绝时一定能收到原因;通道启动失败不再残留监听,旧实例退出不会删掉新实例的 socket;关闭后立刻重新开启不再互相干扰。
  • 同一个 Agent 空间的多条 CLI 命令同时进行时,一条命令结束不再中断另一条正在等审批的命令;外部连接断开后台账里的会话记为已关闭。已在 shell 启动文件里把 ~/.local/bin 加进 PATH 的不再误报;用符号链接管理的 skills 目录可以正常安装 skill。
  • 工作区和设置文件改用唯一的临时文件名原子写入,两次保存不会互相踩。输入时不再重绘整个窗口。

移除

  • 删除不再使用的受控网络代理与网络边界模块及其测试(网络连接自 0.2.6 起遵循 Chromium 与系统设置)、三个没有任何调用方的 IPC 通道(旧的 Chrome Cookie 导入两个、定时任务列表一个)、v0.2.0 的一次性 macOS 补发工作流,以及一张没有引用却随应用打包的图片。
  • 删除没有任何生产调用的代码及其测试:会话运行时里的中断、租约与忙碌状态,恢复凭证,台账里未用的接口与类型。