如何开发Aether扩展:Extension API教程,给AI Agent注入自定义设置页与实时Widget

发布时间:2026/10/30 2:20:54

如何开发Aether扩展:Extension API教程,给AI Agent注入自定义设置页与实时Widget 【免费下载链接】AetherCodex for Android, iOS Mac. | Aether 扶摇项目地址https://gitcode.com/gh_mirrors/aether33/Aether点击查看免费下载Aether 是一款运行在 Android、iOS 与 Mac 上的 AI Agent 应用被称为口袋里的 Codex。它最大的亮点之一是开放的Extension API你只需一个包含 TypeScript 脚本的 npm 包就能给 Aether 的 AI Agent 注入自定义设置页、实时 Widget、命令、拦截器等能力。本教程带你从零搭建第一个 Aether 扩展包理解Surface 表面插槽 声明式 UI 树 原生设置页三件套并附上官方示例与常见坑位。一、先看懂Aether 扩展包的三种形态Aether 沿用 Pi Coding Agent 的可信代码扩展模型一个扩展包可以同时包含三种能力完整定义见 docs/AETHER_EXTENSIONS.md形态配置字段特点Pi 扩展pi.extensionsAgent 工具、命令、hooks与 Pi 生态兼容Script 扩展aether.extensionsTypeScript/JS 编写热重载可直接改 UI 与应用逻辑Native Modaether.nativeKotlin/DEX 编译产物可直接调用 Android 与 Compose需重启加载包结构非常直观本质上就是一个package.json加入口脚本{ name: my-aether-mod, version: 1.0.0, pi: { extensions: [./agent.ts] }, aether: { api: { min: 2, max: 2 }, extensions: [./android.ts] } }⚠️ 注意Aether 有意不做权限沙箱——安装扩展即意味着信任它可以访问 Node 运行时、Android 应用上下文与本地工作区。请只安装你信任的扩展。导入后的扩展会放在 Aether 托管的 Alpine 文件系统中~/.aether/extensions所有入口脚本都被监听文件改动后自动原子化热重载加载失败时保留上一个可用运行时错误会显示在 Extensions 页面上。二、一键搭建创建并导入你的第一个扩展1. 克隆仓库获取参考代码git clone https://gitcode.com/gh_mirrors/aether33/Aether2. 安装类型声明包只含类型声明运行时实现由 Aether 注入npm install --save-dev baimoqilin/aether-extension-api声明源码位于 packages/extension-api/src/index.tsAetherExtensionAPI接口就是你在扩展里能拿到的全部能力ui、host、services、state、storage、messages以及一系列register*方法。3. 编写入口脚本。官方示例 examples/aether-extension/index.ts 是最小完整参考import { defineAetherExtension, ui } from baimoqilin/aether-extension-api; export const activateAether defineAetherExtension((aether) { aether.registerSurface(chat.composer.top, { id: quick-tools, render: ({ storage }) ui.card([ ui.row([ ui.button(Count ${storage.count ?? 0}, increment, { tone: neutral }), ui.button(Prefill, prefill), ], { wrap: true }), ]), }); });4. 打包导入将目录压缩为 zip在 Aether 的设置 → Extensions扩展页中点击导入即可导入逻辑实现于 PiExtensionManager.kt会自动处理npm ci --omitdev依赖安装。三、实时 WidgetregisterSurface 与声明式 UI 树想给 AI Agent 界面加一块实时刷新的状态卡片用registerSurface把内容塞进指定插槽即可无需替换任何内置 UI。常用插槽一览插槽位置chat.top聊天顶栏下方chat.list.start/chat.list.end消息列表首/尾chat.composer.top输入框正上方Widget 最佳位置settings.hub设置中枢顶部drawer.header/drawer.footer会话抽屉固定头/尾aether.registerSurface(chat.composer.top, { id: status, order: 10, render: ({ is_running, draft_input, storage }) ui.row([ ui.text(is_running ? Agent running : Ready), ui.text(${String(draft_input).length} chars), ui.text(Count: ${storage.count ?? 0}), ]), });关键点声明式 UI 树ui.text / card / column / row / button / switch / input / progress / web等原语最终由 Aether 用原生 Compose 渲染视觉风格与内置界面完全一致实时性render接收的 context 含is_running、draft_input等公共状态Agent 开始/结束、输入变化都会触发重渲染持久化aether.storage.get/set自动落盘到~/.aether/app-extension-state.json重启不丢响应交互ui.button(Increment, increment)点击后触发你注册的aether.registerAction(increment, ...)再调用aether.invalidate()即可局部刷新。进阶替换、包裹、隐藏内置组件比 Surface 更强的是registerComponent它针对具名内置组件提供before / after / replace / wrap / hide五种模式按order排序、最后一个replace生效aether.registerComponent(chat.composer.skillPicker, { id: remove-native-picker, mode: hide, // 隐藏内置 Skill 选择器 order: 100, });典型目标包括chat.screen、settings.screen、chat.composer.actionTray等。需要完全自由的 HTML 微界面时还有ui.web({ height, html })逃生舱可通过Aether.postMessage()回调回已注册的 action。四、注入自定义设置页registerSettings这是扩展原生感最强的能力registerSettings会在设置的Extensions 分组位于 Reliability 与 Agent Skills 之间里为你生成一整页原生设置沿用 Aether 内置页的卡片、间距与字体——你只提供数据不能覆盖样式。aether.registerSettings({ id: preferences, icon: settings, title: Preferences, subtitle: Extension behavior, sections: [{ title: General, settings: [ { id: endpoint, type: text, label: Endpoint, default: https://example.com }, { id: enabled, type: toggle, label: Enabled, default: true }, { id: mode, type: select, label: Mode, options: [ { value: fast, label: Fast }, { value: quality, label: Quality }, ], default: fast }, ], }], });支持的控件text、password、textarea、number、toggle、select/dropdown、segmented、tab、slider、button、link、label、divider等完整枚举见 AetherSettingType值按扩展 × 页 × 设置项三元组自动持久化热重载后自动恢复支持categories二级分类先显示分类列表再进入子页AI 也能改你的设置Aether Agent 可通过aether_config_get({ categories: [extensions] })查看该页并用aether_config_set替你调整开关和取值。五、让扩展活起来状态、服务与拦截Script Mod 与 Aether 内核之间还有三条通道接口定义见 docs/AETHER_EXTENSIONS.mdaether.state读写公共状态如draft_input预填输入框、selected_model_key切模型、agent_mode_enabled支持transaction批量操作await aether.state.transaction([ { path: draft_input, value: Review the current changes. }, { path: agent_mode_enabled, value: true }, ]);aether.services可发现、可替换的服务注册表内置skills、state等高优先级注册可覆盖核心实现const skills await aether.services.invoke(skills, list);aether.intercept拦截内置操作如chat.new、skills.selection返回{ cancel: true, reason }即可阻止操作——比如锁定某个 Skill 不允许取消。此外还有低层aether.host.invoke()桥覆盖app.sendMessage、app.newChat、app.setModel、runtime.execute执行 Alpine/Termux 命令等方法详见宿主方法表。六、官方示例与生态扩展巡礼仓库自带可直接导入的参考实现examples/aether-extension/Pi Aether 双形态组合包含输入框上方卡片、原生设置页、before_send事件改写是最推荐的新手起点examples/global-skills-mod/展示如何用声明式 UI 替换原生 action tray、直写 Aether 原生 Skill 选择服务并新增全局 Skills 页——组合 UI 替换 真实应用状态的标准范式。仓库extensions/目录下还有三个生产级扩展可作进阶阅读扩展能力pi-mcp-adapter/接入任意 MCP ServerOAuth、工具审批、资源面板pi-subagents/多 Agent 编排、调度、独立视图pi-web-access/数十种搜索/抓取后端与网页提取七、常见坑位与最佳实践清单热重载是原子的所有脚本工厂必须全部加载成功才会替换运行时失败会保留旧运行时并在 Extensions 页报错。aether.api的min/max版本不兼容会直接拒绝加载Native Mod 需重启DEX 类路径只在进程启动时发现增删改 Native Mod 必须重启 Aether崩溃循环时 Aether 会自动进入Native Mod Safe Mode跳过全部 Native Mod 但保留脚本扩展可在扩展页一键重新启用依赖自动安装zip 导入时有 lockfile 走npm ci --omitdev否则npm install --omitdev捆绑的node_modules会原样使用只做数据不碰样式设置页与 Surface 的视觉由 Aether 原生渲染别想着自定义布局需要自由样式请用ui.web命名规范与 Pi 共用的包把 Pi 工厂作为default exportAether 工厂导出为activateAether即可一份代码两端运行。照着 examples/aether-extension/ 改三行代码你就已经拥有第一个能跑在 AI Agent 里的实时 Widget 和原生设置页了。更多细节请阅读 docs/AETHER_EXTENSIONS.md 的完整 API 说明。赞分享【免费下载链接】AetherCodex for Android, iOS Mac. | Aether 扶摇项目地址https://gitcode.com/gh_mirrors/aether33/Aether点击查看免费下载相关推荐APITable扩展开发Widget系统与自定义功能APITable扩展开发Widget系统与自定义功能 本文详细介绍了APITable Widget SDK的开发环境搭建、自定义数据列类型与公式开发、自动化机后端前端低代码协同办公企业应用数据库Voyager 1.4.7 更新解读收藏对话库、回复完成通知与 Gemini UI 兼容性修复Voyager 1.4.7 更新解读收藏对话库、回复完成通知与 Gemini UI 兼容性修复 本篇技术指南围绕 Voyager 增强套件Gemini、AIAI 应用前端插件系统提示工程终极Ownphotos API开发指南从零开始扩展自定义功能终极Ownphotos API开发指南从零开始扩展自定义功能 Ownphotos是一个强大的自托管Google Photos替代方案提供了照片管理、人脸识别上一篇OpenScholar 官方实现深度解析基于 peS2o 检索与自反馈循环的科研文献综述生成管线下一篇bk-cmdb 业务容器拓扑树缓存接口get_biz_kube_cache_topo解析一次请求取回 Cluster、Namespace、Workload 全量层级创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/30 2:15:54

深入理解Tree Shaking原理与实践(进阶篇)

本文深入探讨Tree Shaking原理与实践(进阶篇),涵盖背景分析、原理剖析、实战步骤、配置示例、优化建议和避坑指南。 很多团队在前端性能优化场景中都会遇到与Tree Shaking原理与实践(进阶篇)相关的挑战。本文结合生产环…

2026/10/30 7:11:15

vLLM推理性能优化:Nsight工具实战指南

1. 项目概述:当vLLM遇上Nsight性能剖析套件在大模型推理领域,vLLM已成为开源社区最受关注的高性能推理框架之一。其创新的PagedAttention内存管理机制和连续批处理技术,使得单卡可承载的并发请求量提升3-4倍。但在实际生产部署中,…

2026/10/30 7:11:15

Unity 3D太阳系VR模型:轨道交互与性能优化实践

简介:基于Unity 3D的太阳系VR模型是一份面向虚拟现实爱好者、Unity引擎学习者以及具备初级到中级水平的3D交互开发者的完整工程实例,它围绕太阳与八大行星按真实比例建模、轨道运行与沉浸式漫游展开,可用于课程设计、VR入门练习或教学演示参考…

2026/10/30 7:11:15

游戏设计实战:从机制拆解到原型开发的完整方法论

1. 游戏设计实践指南(三):从概念到原型的完整路径在游戏行业摸爬滚打十几年,我见过太多团队在早期开发阶段就陷入泥潭。上周还有个独立开发者向我抱怨:"明明想做个roguelike卡牌游戏,结果三个月过去连…

2026/10/30 7:11:15

信号检测与估计习题解答:从假设检验到克拉美-罗下界

简介:围绕《信号检测与估计理论与应用》关欣译本整理的课后答案包,面向通信工程、信号处理及相关专业的学习者,用于对照教材习题梳理检测与估计的基本框架,并借助可运行材料检查理解偏差。压缩包共95个文件、约9.55MB,…

2026/10/30 7:11:15

GigaBrain-0:达摩院VLA模型在具身智能中的创新实践

1. GigaBrain-0项目概述GigaBrain-0是阿里巴巴达摩院最新推出的VLA(Vision-Language-Action)模型,专为具身智能场景设计。这个项目最吸引我的地方在于它创造性地将世界模型生成数据与真实机器人数据结合,大幅降低了传统机器人学习…

2026/10/30 7:06:15

STM32F407实现硬实时USB音频声卡(48kHz/16bit双通道)

简介:本资源是面向嵌入式音频开发者的STM32 USB Audio设备进阶实践项目,聚焦于48kHz/16bit高保真双通道音频输入输出功能实现,适用于USB声卡、会议终端、双麦录音等实时音频场景,适合具备HAL库基础的中级以上STM32开发者快速验证U…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑