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 开始工作:

  1. 通过第一人称追踪器"看"到保险公司网站的登录页面,用你委托的凭证登录
  2. 找到"理赔申请"入口并点击进入
  3. 看到第一页表单:事故日期、地点、类型……iFay 从你的描述和个人数据堆中提取信息,逐一填写
  4. 遇到一个"事故照片上传"按钮——iFay 点击它,在弹出的文件选择器中找到你拍的现场照片并上传
  5. 翻到第三页时,发现有个下拉菜单的选项和预期不同(网站可能更新过)——iFay 没有卡住,而是仔细阅读每个选项的文字,选择了最匹配的那个
  6. 最后一页是确认页面,iFay 逐项核对填写内容,确认无误后点击"提交"

整个过程中,iFay 不是在执行一个预先写好的脚本,而是像一个熟练的助手一样,看着屏幕、理解内容、做出判断。即使这个网站明天改版了,iFay 依然能完成任务——因为它是"看"着操作的,不是"背"着操作的。

场景二:在手机上点外卖,适应 App 更新

你说:"帮我在美团上点一份上次吃的那个黄焖鸡,送到公司。"

iFay 打开美团 App,但发现界面和上次不一样了——App 刚更新过,首页布局变了,搜索框的位置也换了。

如果是 RPA 脚本,这时候就会报错停止。但 iFay 不会:

  1. 它通过第一人称追踪器扫描新的首页布局,发现搜索图标移到了右上角
  2. 点击搜索图标,输入"黄焖鸡"
  3. 在搜索结果中,通过视觉识别找到你上次点过的那家店(店名和 logo 匹配)
  4. 进入店铺页面,发现菜单也重新排列了——iFay 滚动浏览菜单,找到"黄焖鸡米饭"
  5. 点击加入购物车,确认送餐地址是你的公司地址
  6. 完成下单

iFay 在整个过程中展现了自适应探索能力:它不依赖固定的界面布局,而是通过视觉感知理解当前界面,灵活调整操作策略。这就是"感知驱动"和"脚本驱动"的本质区别。

对开发者

模拟操作属于 阶段 1(模拟人类操作) 的核心模块。

  • 需求编号:需求 5(模拟操作)
  • 接口规范SimulatedOperation 接口,包含 execute()explore()getPostActionState() 三个核心方法
  • 支持的操作类型clickdragscrollgesture(边缘手势和多指手势)、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 自身的固有能力)。

行动→反馈→再行动的循环

不管是哪种触发方式,自驱行为都遵循一个核心循环:

  1. 行动:iFay 执行一个自主决定的任务
  2. 反馈:观察执行结果,判断是否符合预期
  3. 再行动:如果结果符合预期,继续下一步;如果不符合,调整策略或暂停询问

这个循环让 iFay 的自主行为不是"一条路走到黑",而是不断自我修正的。

安全阀:暂停并确认

当 iFay 发现自主行为的结果和你的意图不一致时,它会暂停所有后续自主动作,然后问你:"我刚才帮你做了 XX,但结果好像不太对,你看要不要继续?"这个机制确保 iFay 的自主性不会失控。

与其他模块的关系

相关模块关系人体类比
自我感知自我感知推断人类原型意图,触发自驱行为内心感受 → 驱动行动
模拟操作自驱行为决定"做什么",模拟操作负责"用手做"意志 → 手
技能调用自驱行为决定"做什么",技能调用负责"打电话做"意志 → 嘴
注册技能持久技能是自驱行为的触发源之一长期习惯驱动行动
内部技能内部技能是自驱行为的另一个触发源本能驱动行动
对齐意识对齐意识提供人类原型画像,帮助自驱行为判断"该不该做"对你的了解决定行动边界

场景故事

场景一:每周一自动生成工作周报(定时任务触发)

周一早上 8:55,你还在地铁上。iFay 的定时任务触发了:

  1. iFay 自动从你的个人数据堆中提取上周的工作数据——邮件、日历、项目管理工具中的任务完成情况、代码提交记录
  2. 通过技能调用,调用一个文档生成 API,将这些数据整理成一份结构清晰的周报
  3. 周报生成后,iFay 检查内容是否合理(比如有没有遗漏重要项目)
  4. 9:00 整,你到达办公室,打开电脑,发现 iFay 已经把周报放在你的桌面上了,还附了一句:"上周你在 A 项目上花了最多时间,B 项目有两个任务延期了,要不要我帮你调整本周计划?"

你没有说过"帮我写周报"——这是 iFay 按照你之前设定的定时任务自动完成的。而且它不只是机械地汇总数据,还主动提出了建议。

场景二:主动帮你补货(自我感知触发)

周三晚上,iFay 通过你家智能冰箱的传感器数据发现:牛奶只剩一盒了,鸡蛋还有 3 个,蔬菜区几乎空了。

iFay 结合以下信息做出判断:

  • 你的饮食习惯(对齐意识中记录的:你每天早上喝牛奶,每周大约用 12 个鸡蛋)
  • 你最近的购物记录(个人数据堆中的数据:上次买菜是 5 天前)
  • 当前时间(周三晚上,如果不补货,周末可能就没菜了)

iFay 主动行动:

  1. 生成一份购物清单:牛奶 2 盒、鸡蛋 1 盒、你常买的几种蔬菜
  2. 通过技能调用,调用生鲜配送 App 的 API 下单
  3. 下单前,iFay 暂停了一下——因为总价超过了你平时的单次购物预算。它问你:"冰箱里的东西快用完了,我帮你列了一份购物清单,总共 186 元,比你平时多了一点,因为加了你上周说想试试的有机蔬菜。要下单吗?"
  4. 你回复"好的",iFay 完成下单

注意最后那个"暂停并确认"的环节——iFay 发现金额超出了你的常规预算(结果与人类原型习惯不完全一致),所以没有直接下单,而是先问了你。这就是自驱行为的安全机制在起作用。

对开发者

自驱行为属于 阶段 4(iFay + coFay 全面拟人化) 的核心模块。

  • 需求编号:需求 14(自驱行为)
  • 接口规范SelfDrivenBehavior 接口,包含 scheduleTask()(定时任务)、handleInference()(处理自我感知推断)、pauseAndConfirm()(暂停确认)和 getLoopStatus()(循环状态)四个核心方法
  • 三种触发源scheduled(定时任务)、self_awareness(自我感知推断)、registered_skill / internal_skill(持久技能)
  • 核心机制:动作→反馈→再动作的持续循环;执行结果与人类原型意图不一致时暂停并请求确认
  • 关联模块:自我感知(SelfAwareness)提供意图推断,模拟操作和技能调用负责实际执行,对齐意识(AlignedConsciousness)提供行为约束基准
  • 合规性测试:iFACTS L1 验证三种触发源的响应能力,L2 验证与自我感知模块的接口对接,L4 验证自主行为的安全约束(暂停确认机制)