新闻详情

新闻详情

首页 / 资讯中心 / 详情

自定义TuriX动作:Registry装饰器与动态Pydantic模型扩展桌面操作的完整教程

发布时间:2026/9/30 17:37:28来源:尧图网络
自定义TuriX动作:Registry装饰器与动态Pydantic模型扩展桌面操作的完整教程
自定义TuriX动作Registry装饰器与动态Pydantic模型扩展桌面操作的完整教程【免费下载链接】TuriX-CUAThis is the official website for TuriX Computer-use-Agent项目地址: https://gitcode.com/gh_mirrors/tu/TuriX-CUATuriX-CUATuriX Computer-Use-Agent是一款开源的桌面自动化 AI 智能体让大模型直接上手操作你的电脑点击、输入、滚动、打开应用。它的动作系统基于Registry 装饰器与动态 Pydantic 模型构建你只需几行 Python 代码就能为 TuriX 注册一个全新的桌面动作让 AI 学会执行它原本不会的操作。本教程带你完整走一遍读懂动作注册机制 → 注册第一个自定义动作 → 利用动态 Pydantic 模型自动生成参数校验 → 运行验证。无需深入源码也能上手。一、先认识 TuriX 的动作执行链路 TuriX 采用多模型分工架构brain决策大脑、actor动作执行、planner规划、memory记忆各司其职通过 examples/config.json 自由切换模型。其中动作Action是 AI 与桌面之间的双手执行链路如下注册用controller.action()装饰器把 Python 函数登记进ActionRegistry建模系统为每个动作生成/绑定一个 Pydantic 参数模型用于校验 AI 输出的参数提示get_prompt_description()把所有动作的名称、描述、参数汇总成文字注入 planner 提示词让模型知道自己会哪些动作执行AI 输出结构化动作后execute_action()校验参数并真正调用你的函数。理解这条链路你就理解了为什么注册一个动作 给 AI 教会一个新技能。二、动作系统的三个核心文件路径导航文件职责src/controller/registry/service.pyRegistry类装饰器action()、同步函数自动转异步、动态参数模型生成src/controller/registry/views.pyActionRegistry、ActionModel、RegisteredAction数据结构src/controller/service.pyController注册全部内置动作点击、输入、滚动、打开 App 等src/controller/views.py内置动作的 Pydantic 参数模型如InputTextAction、DragActionsrc/mac/actions.pymacOS 底层操作函数left_click_pixel、type_into、press等内置动作都在 src/controller/service.py 的_register_default_actions()中注册例如左键点击像素、组合快捷键、运行 AppleScript等。三、准备工作克隆仓库与配置环境git clone https://gitcode.com/gh_mirrors/tu/TuriX-CUA cd TuriX-CUA conda create -n turix_env python3.12 conda activate turix_env pip install -r requirements.txt⚠️ macOS 用户记得在系统设置 → 隐私与安全性 → 辅助功能中授权你的终端/IDE否则动作无法执行详见 README.md。四、Step 1看懂一个内置动作是怎么注册的以 src/controller/service.py 中的输入文本动作为例关键就三行self.registry.action( Type, # 给 LLM 看的动作描述越清晰调用越准 param_modelInputTextAction) # Pydantic 参数模型 async def input_text(text: str): ... return ActionResult(extracted_contentSuccessfully input text)其中 src/controller/views.py 里的InputTextAction就是text: str一个字段的 Pydantic 模型——这就是参数校验的来源。五、Step 2注册你的第一个自定义动作在 examples/main.py 中创建Controller后即可用controller.action()装饰器注册新动作它是Registry.action()的直接代理见 src/controller/service.pyfrom src.controller.service import Controller, NoParamsAction from src.agent.views import ActionResult controller Controller() controller.action(Open TextEdit and type a custom greeting) async def open_textedit(greeting: str): import subprocess script ftell application TextEdit to activate subprocess.run([osascript, -e, script], checkTrue) return ActionResult(extracted_contentfOpened TextEdit: {greeting})然后把controller传入Agent(...)参考 examples/main.py 的controllercontroller参数。几个自动发生的魔法源码src/controller/registry/service.py✨没写param_model系统会读取函数签名的类型注解用 Pydantic 的create_model()动态生成参数模型_create_param_modelsrc/controller/registry/service.py——所以greeting: str会自动变成greeting: str字段写了同步函数会被asyncio.to_thread自动包装成异步不阻塞事件循环想隐藏某个内置动作构造时传Controller(exclude_actions[Click])即可跳过注册。六、Step 3动态 Pydantic 模型到底做了什么Registry.create_action_model()src/controller/registry/service.py会把所有已注册动作动态拼成一个大模型例如ActionModel( open_textedit Optional[Open_texteditParameters], # 你的自定义动作 Click Optional[LeftClickPixel], done Optional[NoParamsAction], ... )执行时execute_action()src/controller/registry/service.py会用action.param_model(**params)先校验参数再调用函数类型错误会在到达你的函数前就被拦截AI 也会收到明确的报错记忆从而自我修正。 想让参数带说明在 Pydantic 模型字段上用Field(..., description...)描述会一并进入提示词示例见 src/controller/views.py。七、避坑清单让 AI 准确调用你的新动作 ✅常见坑正确做法描述写得含糊描述是 LLM 判断何时调用的唯一依据写清做什么 何时用参考 src/agent/planner_service.py 中注入的action_descriptions忘记返回值统一返回ActionResult(extracted_content...)出错的分支同时填error字段可让智能体记住并换策略坐标用错类型内置动作统一使用归一化坐标position: List[float]src/controller/views.py自定义动作保持一致需要 UI 树上下文注册时加requires_mac_builderTrue函数末尾参数声明mac_tree_builder即可接收见 src/controller/service.py八、运行验证一句话让 AI 用上你的新动作修改 examples/config.json 中的任务例如{ agent: { task: 使用 open_textedit 动作向 TextEdit 发送一句问候 } }然后启动python examples/main.py观察日志中 actor 模型输出的结构化动作里出现open_textedit即代表自定义动作已被 AI 正确识别并执行 九、小结Registry 装饰器controller.action(description, param_model...)一行完成动作注册同步/异步都支持动态 Pydantic 模型不传参数模型时从函数类型注解自动生成传了则严格校验提示词自动注入动作描述与参数会汇入 planner 提示词描述质量直接决定调用准确率想继续深挖可看 src/controller/registry/ 的完整实现以及 src/agent/service.py 中create_action_model()的接入位置。给 TuriX 教会第一个新技能只需十几行代码——接下来让它操作你的桌面吧【免费下载链接】TuriX-CUAThis is the official website for TuriX Computer-use-Agent项目地址: https://gitcode.com/gh_mirrors/tu/TuriX-CUA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

用AI Agent搭建投资研究自动化系统:Python工程化与本地部署实战 2026/9/30 18:35:37

用AI Agent搭建投资研究自动化系统:Python工程化与本地部署实战

1. 为什么我要把投资研究交给 AI Agent 先说结论:我不是让 AI 替我拍板买卖,而是让它替我干那些"重复、耗时、但必须做"的脏活累活。这个区别很关键,想清楚这一点,后面所有的架构设计才有意义。 我做投资研究有些年头了…

阅读更多 →
OpenMAIC多智能体课堂:不写代码,教师也能搭出AI互动课 2026/9/30 18:35:37

OpenMAIC多智能体课堂:不写代码,教师也能搭出AI互动课

1. 从“不会写代码”到“搭出一堂AI互动课”,中间到底缺了什么第一次看到“多智能体课堂”这个词,很多人脑子里冒出来的画面大概是:一堆AI小人在屏幕里你一言我一语,学生坐在下面看热闹。但真正上手过教学场景的人会告诉你&#x…

阅读更多 →
从malloc到RSS:Linux内存分配器三层原理与排查 2026/9/30 18:35:37

从malloc到RSS:Linux内存分配器三层原理与排查

"这东西已经跑了两百多天,RSS 从 300MB 涨到 1.8GB,你们查一下是不是内存泄漏。"凌晨两点收到这条消息的时候,我第一反应是打开top,第二反应是打开heaptrack,第三反应才是想起来——这台机器上根本没有泄漏&…

阅读更多 →
Redis接入AI:向量检索、语义缓存与Agent状态管理实战 2026/9/30 18:35:37

Redis接入AI:向量检索、语义缓存与Agent状态管理实战

做AI应用开发,最容易被忽略的其实是数据层。模型选型、提示词工程、算力分配,这些话题大家聊得热火朝天,可一旦真跑起来,你会发现几乎所有问题都卡在“数据从哪来回哪去”这一步。Redis这个老牌内存数据库,恰恰是在这个…

阅读更多 →
YOLO医疗疼痛检测数据集实战:从标注到训练部署全指南 2026/9/30 18:35:37

YOLO医疗疼痛检测数据集实战:从标注到训练部署全指南

1. 数据集的定位与整体设计思路 医疗AI方向的从业者应该都有这种感觉:公开可用的医疗影像数据集本身就少,标注质量参差不齐的更是常态。疼痛检测这个方向尤其突出——这是介于行为识别和情感计算之间的细分场景,既没有像ImageNet那样的大规模…

阅读更多 →
Ollama 拉取 Gemini-3-pro 后,用 TaoToken 统一 Key 接入 Cline 的 config 骨架 2026/9/30 18:35:22

Ollama 拉取 Gemini-3-pro 后,用 TaoToken 统一 Key 接入 Cline 的 config 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉