自動化Trae Apollo參數解釋的批量獲取

自動化Trae Apollo參數解釋的批量獲取

      • 一、背景介紹
      • 二、設計思路
      • 三、操作步驟
        • 1. 環境準備
        • 2. 獲取界面坐標
        • 3. 定位關鍵元素
        • 4. 執行自動化查詢
        • 5. 獲取結果
      • 四、完整代碼
      • 五、擴展應用

一、背景介紹

在自動駕駛開發中,百度Apollo平臺提供了大量參數用于調整系統行為。Trae添加Apollo工程后,可以通過交互的方式詢問參數的作用,但存在兩個痛點:

  1. Trae沒有提供API接口,無法通過編程方式獲取參數解釋
  2. 手動查詢大量參數效率極低(如Apollo 9.0有2000+參數)

為解決這些問題,準備了一個Python自動化腳本,通過模擬人工操作的方式:

  • 自動輸入參數名
  • 觸發Trae查詢
  • 捕獲并保存解釋文本
    實現了Apollo參數解釋的批量獲取,大幅提升參數研究效率。

二、設計思路

整個自動化流程模擬人類操作行為,核心解決三個關鍵問題:

  1. 界面交互定位
    通過圖像識別確定按鈕狀態(特別是發送按鈕的"空閑"狀態)

  2. 操作模擬鏈
    輸入參數 → 點擊發送 → 等待響應 → 復制結果 → 保存數據

  3. 狀態檢測機制
    使用OpenCV比對按鈕區域截圖,精確判斷Trae響應狀態

開始
檢測發送按鈕狀態
是否空閑?
輸入參數名稱
點擊發送按鈕
等待響應完成
點擊復制按鈕
保存到Markdown
還有參數?
結束
等待1秒

三、操作步驟

1. 環境準備

安裝依賴庫:

pip install pyautogui opencv-python pillow keyboard pyperclip pywin32
2. 獲取界面坐標
  1. 啟動Trae,添加工程,打開聊天界面,創建一個智能體,輸入提示詞

    請添加圖片描述

  2. 運行腳本(取消注釋以下代碼):

# 第一步: 獲取底圖
screenshot1 = capture_screen()
screenshot1.save("base.bmp")# 第三步: 保存空閑時發送按鈕的圖標
img=cv2.imread('base.bmp')
x,y=btn_snd_pos
w,h=btn_snd_size    
ico=img[y:y+h,x:x+w,:]
cv2.imwrite("idle.bmp",ico)

請添加圖片描述

3. 定位關鍵元素

使用畫圖工具打開base.bmp,記錄以下坐標(示例值需替換):

btn_snd_pos=(862,914)    # 發送按鈕中心坐標
btn_snd_size=(29,29)     # 發送按鈕尺寸
btn_copy_pos=(296,754)   # 復制按鈕坐標
edt_input_pos=(362,871)  # 輸入框坐標
4. 執行自動化查詢
  1. 將要查詢的參數寫入列表:
args = ['enable_multi_agent_vehicle_evaluator','prediction_eval_mode','enable_multi_thread'# 添加更多參數...
]
  1. 運行主程序:
python trae_automation.py
5. 獲取結果

所有參數解釋將保存到result.md,按參數名分章節存儲。 請添加圖片描述


四、完整代碼

import pyautogui
import keyboard
from PIL import Image, ImageGrab
import pyperclip
import time
import cv2
import win32clipboarddef clear_clipboard():"""清空剪切板內容"""try:win32clipboard.OpenClipboard()win32clipboard.EmptyClipboard()win32clipboard.CloseClipboard()return Trueexcept Exception as e:print(f"清空剪切板失敗: {e}")return Falsedef capture_screen(region=None):"""截取全屏或指定區域"""screenshot = ImageGrab.grab()return screenshotdef mouse_click(x, y, clicks=1, interval=0.1):"""模擬鼠標點擊"""pyautogui.click(x, y, clicks=clicks, interval=interval)def copy_to_clipboard(text):"""復制文本到剪切板"""pyperclip.copy(text)def paste_from_clipboard():"""獲取剪切板內容"""return pyperclip.paste()def send_ctrl_v():"""發送Ctrl+V粘貼"""keyboard.press_and_release('ctrl+a')keyboard.press_and_release('del')keyboard.press_and_release('ctrl+v')def cacl_distance(img1, img2):diff = cv2.absdiff(img1, img2)return diff.sum()def wait_ico(name,btn_snd_pos,btn_snd_size):'''# 圖像狀態檢測(等待發送按鈕空閑)'''idle=cv2.imread(name)idle_gray = cv2.cvtColor(idle, cv2.COLOR_RGB2GRAY)x,y=btn_snd_posw,h=btn_snd_sizewhile True:screenshot1 = capture_screen()screenshot1.save("temp.bmp")img=cv2.imread('temp.bmp')ico=img[y:y+h,x:x+w,:]ico_gray = cv2.cvtColor(ico, cv2.COLOR_RGB2GRAY)distance = cacl_distance(ico_gray, idle_gray)# 計算與空閑狀態的差異值if distance<10: # 差異小于閾值說明狀態相同breaktime.sleep(1)def input_message(text,edt_input_pos):copy_to_clipboard(text)mouse_click(edt_input_pos[0],edt_input_pos[1])time.sleep(1)send_ctrl_v()def get_message(btn_copy_pos):mouse_click(btn_copy_pos[0]+16,btn_copy_pos[1]+16)return paste_from_clipboard()def main():    # 第一步: 獲取底圖#screenshot1 = capture_screen()#screenshot1.save("base.bmp")    # 第二步: 用畫圖工具,得到發送按鈕,復制按鈕,輸入框的坐標    btn_snd_pos=(862,914)btn_snd_size=(29,29)btn_copy_pos=(296,754)edt_input_pos=(362,871)# 第三步: 保存空閑時發送按鈕的圖標#img=cv2.imread('base.bmp')#x,y=btn_snd_pos#w,h=btn_snd_size    #ico=img[y:y+h,x:x+w,:]#cv2.imwrite("idle.bmp",ico)args=['enable_multi_agent_vehicle_evaluator','prediction_eval_mode','enable_multi_thread']# 等待空閑wait_ico('idle.bmp',btn_snd_pos,btn_snd_size)fo=open("result.md","a+")for arg in args:        print(arg)# 發送請的請求input_message(arg,edt_input_pos)time.sleep(3)mouse_click(btn_snd_pos[0]+16,btn_snd_pos[1]+16)time.sleep(3)# 移動走鼠標mouse_click(btn_copy_pos[0]+16,btn_copy_pos[1]+16)# 等待空閑wait_ico('idle.bmp',btn_snd_pos,btn_snd_size)# 保存結果fo.write(f"# {arg}\n")msg=get_message(btn_copy_pos)print(msg)fo.write(f'{msg}\n')fo.flush()# 清空剪切板clear_clipboard()    if __name__ == "__main__":main()

關鍵技術點解析

  1. 防干擾設計

    • 每次操作后移動鼠標到非交互區
    • 清空剪貼板避免內容污染
    • 雙保險等待機制(固定延時+狀態檢測)
  2. 健壯性保障

    # 清空輸入框再粘貼
    keyboard.press_and_release('ctrl+a')
    keyboard.press_and_release('del')
    

五、擴展應用

此方案不僅適用于Trae,還可遷移到其他無API的桌面應用,例如:

  1. 自動化測試GUI軟件
  2. 批量操作ERP系統
  3. 游戲自動化腳本
  4. 定時填報網頁表單

注意事項:自動化操作需遵守目標軟件的用戶協議,本方案僅用于技術研究,請勿用于商業侵權用途。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88258.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88258.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88258.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數學模型:十大距離

十大距離 文章目錄十大距離定義1. 歐氏距離&#xff08;Euclidean Distance&#xff09;2. 曼哈頓距離&#xff08;Manhattan Distance&#xff09;3. 切比雪夫距離&#xff08;Chebyshev Distance&#xff09;4. 閔可夫斯基距離&#xff08;Minkowski Distance&#xff09;5. …

流水線(Jenkins)打包拉取依賴的時候提示無法拉取,需要登錄私倉的解決辦法

在日常工作中&#xff0c;遇到了Jenkins拉取部門內部組件庫失敗的情況&#xff0c;原因是組件庫后面放到了阿里云私倉&#xff0c;并且是沒有公開的&#xff0c;所以就會有如下提示的&#xff0c;一開始我實在.npmrc文件寫死阿里云提供的接入token&#xff0c;后面發現可能是因…

操作系統王道考研習題

1.1.4本節習題精選 一、單項選擇題 01&#xff0e;操作系統是對(&#xff09;進行管理的軟件。 A.軟件 B.硬件 C.計算機資源 D.應用程序 01.c 操作系統管理計算機的硬件和軟件資源&#xff0c;這些資源統稱為計算機資源。注意&#xff0c;操作系統不僅管理處理機、存儲器等硬件…

C語言extern的用法(非常詳細,通俗易懂)

以往我們都是將所有的代碼寫到一個源文件里面&#xff0c;對于小程序&#xff0c;代碼不過幾百行&#xff0c;這或許無可厚非&#xff0c;但當程序膨脹代碼到幾千行甚至上萬行后&#xff0c;就應該考慮將代碼分散到多個文件中&#xff0c;否則代碼的閱讀和維護將成為一件痛苦的…

Git【開源分布式版本控制工具】安裝-配置-常用指令-Git遠程倉庫-IDEA使用Git

參考博客&#xff1a;Git&#xff08;分布式版本控制工具&#xff09;_為什么嗶哩嗶哩有些視頻沒有字幕-CSDN博客 Git就是一個類似于百度云盤的倉庫&#xff1b;重點是要掌握使用idea操作Git&#xff0c;企業用的最多&#xff0c;一般不會去使用命令 Git通過不斷階段保存文件…

JavaScript數組鍵值去重方法

使用 filter 和 Map 根據鍵值去重我來詳細解釋方法2&#xff0c;這是一種高效且簡潔的數組去重方法&#xff0c;特別適合根據對象中的某個鍵值進行去重操作。完整代碼function uniqueByKey(arr, key) {return [...new Map(arr.map(item > [item[key], item])).values()]; }分…

【機器學習筆記Ⅰ】9 特征縮放

特征縮放&#xff08;Feature Scaling&#xff09;詳解 特征縮放是機器學習數據預處理的關鍵步驟&#xff0c;旨在將不同特征的數值范圍統一到相近的尺度&#xff0c;從而加速模型訓練、提升性能并避免某些特征主導模型。1. 為什么需要特征縮放&#xff1f; (1) 問題背景 量綱不…

10.9 大模型訓練數據優化實戰:3步讓準確率從68%飆升至79%

大模型訓練過程分析與數據優化 一、訓練過程關鍵指標分析 (插入mermaid流程圖:訓練過程監控與優化閉環) #mermaid-svg-Gni031LkHA93fQYM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Gni031LkHA93fQYM .erro…

深度學習模型在C++平臺的部署

一、概述深度學習模型能夠在各種生產場景中發揮重要的作用&#xff0c;而深度學習模型往往在Python環境下完成訓練&#xff0c;因而訓練好的模型如何在生產環境下實現穩定可靠的部署&#xff0c;便是一個重要內容。C開發平臺廣泛存在于各種復雜的生產環境&#xff0c;隨著業務效…

若以部署在linux,nginx反向代理,登錄404,刷新404問題

history模式在router下面的index.js文件的最下面history: createWebHistory(import.meta.env.VITE_APP_CONTEXT_PATH),這兩個配置文件都加上然后nginx里面的配置是這個位置按照實際情況&#xff0c;我的是用docker掛載的&#xff0c;所以在/usr/share/nginx/html/lw-clothing為…

SQL Server通過存儲過程實現HTML頁面生成

引言在現代企業應用中&#xff0c;數據可視化是提升決策效率的關鍵。SQL Server作為核心數據庫管理系統&#xff0c;不僅處理數據存儲和查詢&#xff0c;還具備強大的擴展能力。通過存儲過程直接生成HTML頁面&#xff0c;企業能減少對中間層&#xff08;如Web服務器或應用程序&…

qt繪制餅狀圖并實現點擊即放大點擊部分

做得比較low #ifndef TEST_POWER_H #define TEST_POWER_H#include <QWidget> #include <QtMath> #include <QPainter> #include <QPushButton> #include <QVector> #include <cmath>namespace Ui { class test_power; } struct PieData {Q…

HashMap的put、get方法詳解(附源碼)

put方法 HashMap 只提供了 put 用于添加元素&#xff0c;putVal 方法只是給 put 方法調用的一個方法&#xff0c;并沒有提供給用戶使用。 對 putVal 方法添加元素的分析如下&#xff1a;如果定位到的數組位置沒有元素 就直接插入。如果定位到的數組位置有元素就和要插入的 key …

雙立柱式帶鋸床cad【1張總圖】+設計說明書+絳重

雙立柱式帶鋸床 摘 要 隨著機械制造技術的進步&#xff0c;制造業對于切割設備的精度、效率和穩定性要求越來越高。雙立柱式帶鋸床作為一種重要的切割設備&#xff0c;必須能夠滿足工業生產對于高精度、高效率的需求。 雙立柱式帶鋸床是一種重要的工業切割設備&#xff0c;其結…

在線JS解密加密配合ECC保護

在線JS解密加密配合ECC保護 1. ECC加密簡介 定義 ECC&#xff08;Elliptic Curve Cryptography&#xff09;是一種基于橢圓曲線數學的公鑰加密技術&#xff0c;利用橢圓曲線離散對數問題&#xff08;ECDLP&#xff09;實現高安全性。 背景 1985年&#xff1a;Koblitz&#xff0…

使用 Docker Compose 簡化 INFINI Console 與 Easysearch 環境搭建

前言回顧 在上一篇文章《搭建持久化的 INFINI Console 與 Easysearch 容器環境》中&#xff0c;我們詳細介紹了如何使用基礎的 docker run 命令&#xff0c;手動啟動和配置 INFINI Console (1.29.6) 和 INFINI Easysearch (1.13.0) 容器&#xff0c;并實現了關鍵數據的持久化&…

Word 怎么讓段落對齊,行與行之間寬一點?

我們來分兩步解決&#xff1a;段落對齊 和 調整行距。 這兩個功能都集中在Word頂部的【開始】選項卡里的【段落】區域。 第一步&#xff1a;讓段落對齊 “對齊”指的是段落的左右邊緣如何排列。通常有四種方式。 操作方法&#xff1a;將鼠標光標點在你想修改的那個段落里的任意…

Attention機制完全解析:從原理到ChatGPT實戰

一、Attention的本質與計算步驟 1.1 核心思想 動態聚焦&#xff1a;Attention是一種信息分配機制&#xff0c;讓模型在處理輸入時動態關注最重要的部分。類比&#xff1a;像人類閱讀時用熒光筆標記關鍵句子。 1.2 計算三步曲&#xff08;以"吃蘋果"為例&#xff09; …

2025年3月青少年電子學會等級考試 中小學生python編程等級考試三級真題答案解析(判斷題)

博主推薦 所有考級比賽學習相關資料合集【推薦收藏】1、Python比賽 信息素養大賽Python編程挑戰賽 藍橋杯python選拔賽真題詳解

HTML5 新特性詳解:從語義化到多媒體的全面升級

很多小伙伴本都好奇&#xff1a;HTML5有什么功能是以前的HTML沒有的&#xff1f; 今天就給大家說道說道 HTML5 作為 HTML 語言的新一代標準&#xff0c;帶來了諸多革命性的新特性。這些特性不僅簡化了前端開發流程&#xff0c;還大幅提升了網頁的用戶體驗和功能性。本文將深入…