10. 交互层 — 动作
交互层的动作子系统是 iFay 的"执行器"——它让 iFay 能像人一样操作界面、调用服务、主动行动,将感知和认知转化为实际行为。
10.1 模拟操作
一句话定义
模拟操作是 iFay 的双手——它能像人一样点击、拖拽、滚动、打字,操作任何现有的软件界面,不需要软件专门为 AI 做任何改造。
为什么需要它
想象你请了一个新助手,你希望他帮你处理各种电脑和手机上的事务。但问题是:你用的那些软件——银行网站、保险系统、政府办事平台——它们都是给人类设计的,没有一个提供"AI 专用入口"。
怎么办?最直接的方式就是:让助手像你一样操作这些软件。看到按钮就点击,看到表单就填写,看到页面就滚动。
这就是模拟操作的意义。它让 iFay 不需要等待世界上所有的软件都为 AI 重新设计,现在就能帮你干活。
但模拟操作和传统的"自动化脚本"(比如 RPA)有本质区别。RPA 就像一个只会背台词的演员——它按照预先写好的脚本一步步执行,界面稍有变化就会卡住。而 iFay 的模拟操作是感知驱动的:它通过第一人称追踪器"看"屏幕,理解当前界面的状态,然后决定下一步该怎么做。就像一个真正的人类用户——即使网站改版了,你也能凭直觉找到新的按钮位置。
它在架构中的位置
iFay 四层架构
├── 社交层
├── 交互层 ← 模拟操作在这里
│ ├── 感知(Sense)
│ │ ├── 第一人称追踪器 ← 眼睛:看屏幕上有什么
│ │ ├── 传感器 ← 神经系统:感知环境
│ │ └── 自我感知 ← 内心:读懂你的意图
│ └── 动作(Action)
│ ├── 👉 模拟操作 ← 双手:点击、拖拽、打字
│ ├── 技能调用 ← 嘴巴:直接"打电话"给服务
│ └── 自驱行为 ← 自主意志:决定何时行动
├── 认知层
└── 自我层
模拟操作位于交互层的动作子系统中,是 iFay 与外部世界交互的三种方式之一。它和第一人称追踪器的关系最为紧密——追踪器是"眼睛",模拟操作是"手",两者配合实现手眼协调。
这就像你用手操作鼠标时,眼睛始终在看屏幕上的变化,手根据眼睛看到的信息调整动作。iFay 也是如此:每做一个操作,追踪器就观察界面变化,然后模拟操作根据观察结果决定下一步。
它是怎么工作的
模拟操作的核心工作方式可以用三个关键词概括:感知、操作、反馈。
1. 感知——先看,再动手
在执行任何操作之前,iFay 先通过第一人称追踪器"看"当前界面。它不是去解析网页的 HTML 代码,而是像人一样看屏幕上显示了什么:哪里有按钮、哪里有输入框、哪里有下拉菜单。
2. 操作——像人一样交互
iFay 支持人类在界面上能做的所有操作:
- 点击:左键点击按钮、右键打开菜单
- 拖拽:拖动文件、调整窗口大小
- 滚动:上下滚动页面查看更多内容
- 打字:在输入框中输入文字
- 边缘手势:从屏幕边缘滑入,呼出侧边栏
- 多指手势:双指缩放、三指切换应用
3. 反馈——做完之后看结果
每次操作之后,iFay 都会通过第一人称追踪器重新"看"一下界面,确认操作是否成功。如果点击了一个按钮但页面没有变化,iFay 会意识到"这个按钮可能没反应",然后尝试其他方式。
这种"操作→观察→调整"的循环,就是模拟操作与 RPA 脚本的根本区别。RPA 是盲人摸象——按照脚本执行,不管结果如何。iFay 是睁着眼睛干活——每一步都在看、在想、在调整。
遇到陌生界面怎么办?
当 iFay 遇到一个从未见过的界面时,它会像人类一样探索:试着点一下这个按钮看看会发生什么,把鼠标悬停在图标上看看有没有提示文字,滚动页面看看下面还有什么内容。通过这种探索,iFay 逐渐理解界面的结构和功能。
与其他模块的关系
| 相关模块 | 关系 | 人体类比 |
|---|---|---|
| 第一人称追踪器 | 模拟操作的"眼睛",每次操作前后都通过它感知界面状态 | 手 ↔ 眼睛(手眼协调) |
| 技能调用 | 同属动作子系统,但方式不同:模拟操作通过界面操作,技能调用直接调用 API | 用手操作 vs 打电话办事 |
| 自驱行为 | 自驱行为决定"什么时候动手",模拟操作负责"怎么动手" | 意志决定行动 → 手执行动作 |
| Ego 模型 | Ego 模型约束模拟操作的行为风格(比如操作速度、谨慎程度) | 性格影响做事方式 |
| 凭证管理 | 模拟操作在登录时需要使用凭证管理提供的账号密码 | 手拿钥匙开门 |
场景故事
场景一:填写复杂的保险理赔表
你出了一次小车祸,需要在保险公司的老旧网站上填写理赔申请。这个网站大概是十年前设计的——表单有 30 多个字段,分布在 5 个页面上,还有各种下拉菜单和日期选择器。
你对 iFay 说:"帮我填一下车险理赔,上周三下午在中山路和建设路交叉口的那次。"
iFay 开始工作:
- 通过第一人称追踪器"看"到保险公司网站的登录页面,用你委托的凭证登录
- 找到"理赔申请"入口并点击进入
- 看到第一页表单:事故日期、地点、类型……iFay 从你的描述和个人数据堆中提取信息,逐一填写
- 遇到一个"事故照片上传"按钮——iFay 点击它,在弹出的文件选择器中找到你拍的现场照片并上传
- 翻到第三页时,发现有个下拉菜单的选项和预期不同(网站可能更新过)——iFay 没有卡住,而是仔细阅读每个选项的文字,选择了最匹配的那个
- 最后一页是确认页面,iFay 逐项核对填写内容,确认无误后点击"提交"
整个过程中,iFay 不是在执行一个预先写好的脚本,而是像一个熟练的助手一样,看着屏幕、理解内容、做出判断。即使这个网站明天改版了,iFay 依然能完成任务——因为它是"看"着操作的,不是"背"着操作的。
场景二:在手机上点外卖,适应 App 更新
你说:"帮我在美团上点一份上次吃的那个黄焖鸡,送到公司。"
iFay 打开美团 App,但发现界面和上次不一样了——App 刚更新过,首页布局变了,搜索框的位置也换了。
如果是 RPA 脚本,这时候就会报错停止。但 iFay 不会:
- 它通过第一人称追踪器扫描新的首页布局,发现搜索图标移到了右上角
- 点击搜索图标,输入"黄焖鸡"
- 在搜索结果中,通过视觉识别找到你上次点过的那家店(店名和 logo 匹配)
- 进入店铺页面,发现菜单也重新排列了——iFay 滚动浏览菜单,找到"黄焖鸡米饭"
- 点击加入购物车,确认送餐地址是你的公司地址
- 完成下单
iFay 在整个过程中展现了自适应探索能力:它不依赖固定的界面布局,而是通过视觉感知理解当前界面,灵活调整操作策略。这就是"感知驱动"和"脚本驱动"的本质区别。
对开发者
模拟操作属于 阶段 1(模拟人类操作) 的核心模块。
- 需求编号:需求 5(模拟操作)
- 接口规范:
SimulatedOperation接口,包含execute()、explore()和getPostActionState()三个核心方法 - 支持的操作类型:
click、drag、scroll、gesture(边缘手势和多指手势)、type - 关联模块:第一人称追踪器(
FirstPersonTracer)提供视觉反馈,凭证管理(CredentialManager)提供登录凭证 - 核心设计:感知驱动而非脚本驱动;每次操作后通过追踪器感知状态变化,形成"操作→感知→调整"闭环;支持未知界面的自适应探索
- 合规性测试:iFACTS L1 验证各操作类型的执行能力,L2 验证与第一人称追踪器的手眼协调接口
- iFay Ready 关联:Bronze 级认证要求应用支持 iFay 通过模拟操作进行操控
10.2 技能调用
一句话定义
技能调用是 iFay 的嘴巴和电话——如果模拟操作是 iFay 用手操作界面,技能调用就是 iFay 直接"打电话"给服务——不需要操作界面,直接调用 API 或触发任务。
为什么需要它
想象你要翻译一份文件。你有两种方式:
方式一:打开浏览器,进入翻译网站,把文字粘贴进去,等待翻译,复制结果。这就是"模拟操作"的方式——通过界面一步步操作。
方式二:直接拨打翻译公司的电话,说"帮我翻译这段话",对方翻译好直接告诉你结果。不需要打开任何网站,不需要操作任何界面。这就是"技能调用"的方式——直接打电话给服务。
为什么需要第二种方式?因为很多时候,操作界面是多余的中间环节。你真正想要的不是"打开翻译网站",而是"把这段话翻译成英文"。技能调用让 iFay 跳过界面,直接完成你的目标。
这就像人类社会中的分工:你不需要亲自去面包店揉面团(操作界面),你只需要打个电话说"送一个面包过来"(调用技能)。技能调用让 iFay 能够高效地利用已经注册好的各种服务——API、工作流、Bot、Agent、App、微服务——就像一个善于打电话办事的助手。
与其他模块的关系
| 相关模块 | 关系 | 人体类比 |
|---|---|---|
| 注册技能 | 技能调用只能调用已注册的技能,注册是执行的前提 | 有证才能上岗 |
| 模拟操作 | 同属动作子系统,但方式不同:模拟操作通过界面操作,技能调用直接调用 API | 用手操作 vs 打电话办事 |
| 自驱行为 | 自驱行为决定"做什么",技能调用负责"打电话做" | 意志 → 嘴 |
对开发者
技能调用属于 阶段 2(直接接管客户端) 的核心模块。
- 需求编号:需求 6(技能调用)
- 接口规范:
InvokeSkillService接口 - 合规性测试:iFACTS L1 验证意图匹配和技能调用能力,L2 验证与注册技能模块的接口对接,L3 验证"意图表达→技能调用→贡献记录"的完整链路
10.3 自驱行为
一句话定义
自驱行为是 iFay 的自主意志——模拟操作是手,技能调用是嘴,自驱行为是 iFay 自己决定"什么时候动手、什么时候开口"。它让 iFay 从被动执行者变成主动行动者。
为什么需要它
想象你有一个非常优秀的助手。如果这个助手只会在你下达指令时才行动,那你每件事都得亲自想到、亲自吩咐——这其实并没有真正减轻你的负担,只是把"动手做"变成了"动嘴说"。
真正好的助手是什么样的?他会主动做事:
- 每周一早上自动帮你整理上周的工作总结(定时任务)
- 看到你皱眉头、叹气,主动问你是不是遇到了什么困难(察言观色后行动)
- 你之前说过"每次收到快递通知就帮我查一下物流",他一直记着,每次都自动去查(持续执行的习惯)
这就是自驱行为的意义。它让 iFay 拥有了"自主意志"——不再只是等你开口,而是自己判断什么时候该做什么,然后主动去做。
但这里有一个重要的安全机制:如果 iFay 自主做的事情结果不对,它会暂停下来问你。就像一个好助手,主动帮你做事,但遇到拿不准的情况会先确认,而不是自作主张到底。
它是怎么工作的
自驱行为有三种触发方式,就像人类主动做事的三种原因:
1. 定时任务——到点了就做
这是最简单的触发方式,就像你设的闹钟。你告诉 iFay:"每周一早上 9 点帮我生成上周的工作周报。"iFay 就会在每个周一早上准时执行这个任务。
2. 自我感知推断——察觉到你需要,就主动做
这是最"智能"的触发方式。iFay 通过自我感知模块观察你的状态和环境,推断出你可能需要什么,然后主动行动。
比如:iFay 通过传感器数据发现你家冰箱里的食材快用完了(智能冰箱的传感器数据),结合你最近的饮食习惯,主动帮你下单补货。你没有说过"帮我买菜",但 iFay 自己判断出"该买菜了"。
3. 持久技能——一直在后台运行的习惯
有些技能不是一次性的,而是持续运行的。比如你让 iFay "帮我监控这只股票,跌破 50 块就提醒我"。这个任务会一直在后台运行,直到条件触发。
这些持久技能来自两个地方:注册技能(外部服务提供的持续监控能力)和内部技能(iFay 自身的固有能力)。
行动→反馈→再行动的循环
不管是哪种触发方式,自驱行为都遵循一个核心循环:
- 行动:iFay 执行一个自主决定的任务
- 反馈:观察执行结果,判断是否符合预期
- 再行动:如果结果符合预期,继续下一步;如果不符合,调整策略或暂停询问
这个循环让 iFay 的自主行为不是"一条路走到黑",而是不断自我修正的。
安全阀:暂停并确认
当 iFay 发现自主行为的结果和你的意图不一致时,它会暂停所有后续自主动作,然后问你:"我刚才帮你做了 XX,但结果好像不太对,你看要不要继续?"这个机制确保 iFay 的自主性不会失控。
与其他模块的关系
| 相关模块 | 关系 | 人体类比 |
|---|---|---|
| 自我感知 | 自我感知推断人类原型意图,触发自驱行为 | 内心感受 → 驱动行动 |
| 模拟操作 | 自驱行为决定"做什么",模拟操作负责"用手做" | 意志 → 手 |
| 技能调用 | 自驱行为决定"做什么",技能调用负责"打电话做" | 意志 → 嘴 |
| 注册技能 | 持久技能是自驱行为的触发源之一 | 长期习惯驱动行动 |
| 内部技能 | 内部技能是自驱行为的另一个触发源 | 本能驱动行动 |
| 对齐意识 | 对齐意识提供人类原型画像,帮助自驱行为判断"该不该做" | 对你的了解决定行动边界 |
场景故事
场景一:每周一自动生成工作周报(定时任务触发)
周一早上 8:55,你还在地铁上。iFay 的定时任务触发了:
- iFay 自动从你的个人数据堆中提取上周的工作数据——邮件、日历、项目管理工具中的任务完成情况、代码提交记录
- 通过技能调用,调用一个文档生成 API,将这些数据整理成一份结构清晰的周报
- 周报生成后,iFay 检查内容是否合理(比如有没有遗漏重要项目)
- 9:00 整,你到达办公室,打开电脑,发现 iFay 已经把周报放在你的桌面上了,还附了一句:"上周你在 A 项目上花了最多时间,B 项目有两个任务延期了,要不要我帮你调整本周计划?"
你没有说过"帮我写周报"——这是 iFay 按照你之前设定的定时任务自动完成的。而且它不只是机械地汇总数据,还主动提出了建议。
场景二:主动帮你补货(自我感知触发)
周三晚上,iFay 通过你家智能冰箱的传感器数据发现:牛奶只剩一盒了,鸡蛋还有 3 个,蔬菜区几乎空了。
iFay 结合以下信息做出判断:
- 你的饮食习惯(对齐意识中记录的:你每天早上喝牛奶,每周大约用 12 个鸡蛋)
- 你最近的购物记录(个人数据堆中的数据:上次买菜是 5 天前)
- 当前时间(周三晚上,如果不补货,周末可能就没菜了)
iFay 主动行动:
- 生成一份购物清单:牛奶 2 盒、鸡蛋 1 盒、你常买的几种蔬菜
- 通过技能调用,调用生鲜配送 App 的 API 下单
- 下单前,iFay 暂停了一下——因为总价超过了你平时的单次购物预算。它问你:"冰箱里的东西快用完了,我帮你列了一份购物清单,总共 186 元,比你平时多了一点,因为加了你上周说想试试的有机蔬菜。要下单吗?"
- 你回复"好的",iFay 完成下单
注意最后那个"暂停并确认"的环节——iFay 发现金额超出了你的常规预算(结果与人类原型习惯不完全一致),所以没有直接下单,而是先问了你。这就是自驱行为的安全机制在起作用。
对开发者
自驱行为属于 阶段 4(iFay + coFay 全面拟人化) 的核心模块。
- 需求编号:需求 14(自驱行为)
- 接口规范:
SelfDrivenBehavior接口,包含scheduleTask()(定时任务)、handleInference()(处理自我感知推断)、pauseAndConfirm()(暂停确认)和getLoopStatus()(循环状态)四个核心方法 - 三种触发源:
scheduled(定时任务)、self_awareness(自我感知推断)、registered_skill/internal_skill(持久技能) - 核心机制:动作→反馈→再动作的持续循环;执行结果与人类原型意图不一致时暂停并请求确认
- 关联模块:自我感知(
SelfAwareness)提供意图推断,模拟操作和技能调用负责实际执行,对齐意识(AlignedConsciousness)提供行为约束基准 - 合规性测试:iFACTS L1 验证三种触发源的响应能力,L2 验证与自我感知模块的接口对接,L4 验证自主行为的安全约束(暂停确认机制)
