在2019年纽约QCon大会上,Oqton的前端软件工程师ThijsBernolet解释了在创建受机器学习影响的前端架构时面临的一些挑战。
正如Bernolet在《人工智能世界中的前端架构》的演讲总结中所讨论的,越来越多的人不再是唯一与你的数据交互的客户。机器和AI客户开始实时处理数据,可以提出建议或影响人类行为。演讲的重点是管理与许多不同的非人类客户打交道的复杂性,并提出了如何构建一个人类和人工智能客户都可以使用的单一界面的策略。
回顾2009年由Bernolet和他的团队创立的迈克尔杰克逊粉丝网站《永恒的月球漫步》,其粉丝连续剪辑视频片段,他指出,在2009年,不可能在三天内轻松管理、标记和编辑15000个视频的上传。然而,在今天的机器学习世界中,有许多可能性和挑战。
Bernolet认为,机器学习影响用户界面的主要挑战是UI代码和机器学习逻辑之间的状态共享,以及代表用户的数据模型的重叠。良好的用户界面逻辑的基础通常取决于松散耦合和高内聚的原则。机器学习代理倾向于影响基础设施、数据模型和业务逻辑,从而打破了UI的基本范式。
Bernolet解释说,由于模型和视图层之间的紧密耦合,传统的UI模型(如MVC)将会减少。他的团队开始研究Redux,并询问Redux是否可以在动作序列中用作训练动作的机器学习代理。
Bernolet展示了他对ReduxCLI的概念证明,并感谢Redux生态系统对撤销/重做、时间旅行、副作用处理和Reduxdevtools等功能的支持。
Bernolet在使用Redux管理分布式状态时遇到了问题,包括合并状态和竞争条件。探索包括操作转换和无冲突复制数据类型。他们的团队开始考虑如何通过将gitrebase风格的操作与浏览器中的OT相结合来解决这些挑战,这导致了git-js概念的证明。
该演示着重于在分布式状态系统中使用Redux的一些挑战。可以解决类似挑战的Redux替代方案可能包括基于JSON补丁的解决方案,例如@dojo/framework/stores和json-patch-ot。
Redux与客户端git和OT的结合解决了Bernolet和他的团队通过结合用户和机器学习输入来优化制造过程的用例。而且,如果这种方法早在十年前就存在的话,可能会简化“永恒月球行者”的开发。