我想做的东西,比 Day 0 那句“让自己的模型替我操作电脑”又往前走了一步。

它应该从日常信息里慢慢了解我。到了饭点,发现我还在忙,可以问一句吃过没有;我说上次那家不好吃,下次推荐时就应该记得。真正有用的地方,是我不必先把生活整理成一份报告交给它。

但这也带来一个问题:它看到我在用电脑,不能因此就说我没吃饭。主动关心之前,得先分清自己看见了什么、猜了什么,还有什么需要问我。

先在自己的电脑上跑

这次决定复用 OpenClaw 的会话与现有界面,用 LiteLLM 接模型,再把事件、记忆、明确边界和主动求证放进自己的本地服务。代码留在独立项目里,不直接改参考仓库。

第一版先用提供的 GPT-6 Astra 接口。今天实际验证了模型目录、一次文本回答和一次只读工具调用协议。工具调用成功,证明模型会按接口要求请求一个函数;它还不等于已经能操作手机、查询外卖或判断某个应用有没有回复。

Mac 还没到,当前先把 Windows 上的闭环做好。手机入口、WDA 和跨应用执行留到对应设备与条件齐备后单独验证。

用户陈述、模型推测与行为边界

我主动告诉它的事,是用户陈述;它从活动中得出的判断,是未确认的推测;我明确标记的“边界”,则是需要持续遵守的行为约束。

比如“今天不想练”不能直接变成“以后都不健身”。开玩笑和气话也不能只靠模型自信地猜。遇到真正的原则问题,我会用明确的边界入口表达,模型不能把它重新解释成玩笑,也不能自己撤销。

目前已经实现本地保存、来源标记、记忆纠正和独立的用户权限入口。测试验证了模型普通权限不能写入或撤销边界。这验证了存储权限的限制。至于各种自然语言边界能否被正确理解,还要在实际使用中检查。

前台应用和输入空闲时间能说明多少

今天实测了 Windows 前台应用名称和输入空闲时间。没有默认读取窗口标题、网页正文、截图或键盘内容。

这些信息很有限:前台是某个应用,不代表我正在认真使用它;电脑暂时没有输入,也不代表我已经睡着。采集失败就记为信息不可用,不能当作“没有活动”。iPhone 使用情况、位置和健康数据目前都还没有接入。

主动询问先收窄一点

后台模块已写好:出现新证据才考虑调用模型,已有待回答问题时先等我回答。同一批证据不反复请求,失败不自动重试,用餐问题回答后也设置了重复询问抑制。

第一版的问题先限制为中性的求证句,不让模型凭空生成“你还没吃饭”这样的结论。主动联系默认暂停,可以在本机入口开启。模块测试覆盖了这些规则,完整聊天中的提问与反馈流程还需单独验收。

当天下午又走通了本机聊天:在已有界面里发出请求,模型调用上下文工具,读到了真实电脑活动,并回答自己目前看不到哪些东西、为什么还不能下外卖订单。明确边界也通过聊天命令保存成功。

收尾时,标记为软件测试的问题已经能自动出现在本机会话中,反馈后从待回答列表消失。界面实时更新时曾短暂显示两张相同卡片,核对后端只有一条消息,刷新后正常;这个显示问题先记下来。随后用真实上下文的隔离快照跑了一次模型主动判断,它选择保持安静。测试消息送到本机、模型做出一次判断,都还不等于手机送达或长期陪伴有效。

WDA 的环境要求不等于所有手机通信

前面的记录把“iPhone 相关工作都只能在 macOS 做”说得太满。项目此前已经在 Windows 上完成 USB 截屏等通信,所以那句话本身就和已有记录矛盾。需要 Mac 的是这里采用的 Xcode 构建、签名与 WDA 部署流程,不能扩大成 Windows 完全无法连接 iPhone。

把聊天、记忆与反馈连起来

先在本机界面里走完聊天、保存边界、查看记忆、主动提问和反馈这一圈,再接手机。真实外卖推荐必须有真实店铺、商品和可购买状态来源;在那之前,不拿编出来的菜单演示“已经会点外卖”。

本机模块已经能保存信息的来源和确认状态,真实模型也接通了。接下来要在连续使用中观察:记错后能否纠正,问题会不会重复出现,收到反馈后是否真的改变后续判断。