成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

參考 ReAct 框架構建 Prompt,使用 Cursor 高效對代碼進行重構

開發
我發現Cursor展現出了令人驚喜的潛力。當我給它一些重構指令時,它不僅能理解我的意圖,還能按照預期重構代碼,而且速度快得驚人。

在一篇博客中,我曾興致勃勃地分享了如何用Cursor在短短半天內完成AI工具的從0到1實現。那時的我,就像剛學會騎自行車的孩子,對這個“新玩具”充滿了熱情。但很快,我就意識到這只是冰山一角。單純的代碼生成固然令人興奮,但在實際開發中,我們面臨的挑戰遠不止于此。

于是,我開始了一段更深入的探索之旅。特別是在代碼重構這個領域,我發現Cursor展現出了令人驚喜的潛力。當我給它一些重構指令時,它不僅能理解我的意圖,還能按照預期重構代碼,而且速度快得驚人。這讓我不禁幻想:如果能把這項技能應用到日常開發中,那豈不是能在別人還在埋頭重構時,我已經可以優哉游哉地“摸魚”了?

一、現實給的一記重拳:復雜項目重構的困境

然而,現實總是喜歡給我們一記重拳。當我滿懷信心地將這種簡單直接的重構方式應用到實際項目中時,很快就碰了壁。由于真實項目的復雜度遠超簡單的AI工具代碼項目,簡單的prompt在這里就像是用牙簽撬動大象。

1. 遇到的主要問題:

  • 改動范圍失控:就像是沒有地圖的探險,每次重構都像是在隨機漫步。
  • 重構策略混亂:完全依賴大模型自動選擇重構策略,就像是把方向盤交給了蒙著眼睛的司機。
  • 上下文理解障礙:即使使用了@Codebase,Cursor依然像是對整個項目背景一無所知,重構起來漫無目標。
  • 代碼審查負擔:每次改動都需要仔細審查,否則就像是在刀尖上跳舞,提心吊膽。
  • 惡性循環:越重構越亂,最后不得不推倒重來,陷入了一個“推倒重來-再次失敗”的死循環。

2. 問題根源分析

經過深入思考,總結出了幾個核心原因:

  • 邏輯復雜度過高:現實項目往往包含復雜的業務邏輯和條件判斷。
  • 框架知識欠缺:沒有給AI進行適當的框架Onboarding。
  • 代碼風格多樣性:不同開發者的編碼風格差異帶來的挑戰。
  • 上下文負擔過重:相互關聯的代碼太多,形成了復雜的依賴網絡。
  • 行為不可預測:無法準確預知AI的下一步操作。

二、人機對比:重構思維的差異

為了找到突破口,我開始思考:為什么同樣是重構,人類開發者能夠相對順利地完成,而AI卻頻頻踩坑?

人類開發者的重構方式:

  • 系統性分析:首先識別和消除code smell,提升代碼的可讀性和可擴展性。
  • 面向對象優化:基于面向對象的最佳實踐進行重構。
  • 架構層面調整:將代碼重新組織到合適的層次結構中。
  • 測試驗證:確保重構后的代碼仍然符合預期行為。

AI的重構方式:就像一個機械工人,簡單地重復“修改代碼”這個動作,缺乏我們期望的系統性思維和策略性規劃。

三、靈感突現:ReAct框架的啟發

在尋找解決方案的過程中,我接觸到了Agent和ReAct以及COT,這讓我眼前一亮。如果能讓AI像人類一樣思考并且按照人類期望的方式進行思考,是否就能克服當前的困境?

1. ReAct框架簡介

ReAct 框架是由 Shunyu Yao 等人在 2022 年提出的一種方法,旨在結合推理與行動,以提高大型語言模型(LLMs)的性能。該框架允許 LLMs 交替生成推理軌跡和任務特定操作,從而使模型能夠誘導、跟蹤和更新操作計劃,并有效處理異常情況。

  • 與外部工具的交互:ReAct 框架使 LLMs 能夠與外部知識庫或環境進行交互,從而獲取額外信息,提供更可靠的回應。
  • 性能提升:研究表明,ReAct 在語言和決策任務上表現優于多個先進的基線模型,同時提高了 LLMs 的可解釋性和可信度。
  • 與鏈式思考(CoT)的結合:將 ReAct 與鏈式思考結合使用,可以在推理過程中同時利用內部知識和外部信息,從而取得最佳效果。

四、實踐:構建重構專用的Prompt

重構步驟設計:

  • 基礎清理:識別和處理基本的code smell
  • 面向對象優化:應用面向對象的最佳實踐
  • 架構調整:根據六邊形架構的規范重組代碼
  • 錯誤修復:處理明顯的編譯錯誤
  • 人工復查:補充細節優化
  • 測試修復:確保所有測試用例通過

重構Prompt模板設計:

  • 上下文說明:提供架構規范和最佳實踐指南
  • 思考步驟:引導AI進行系統性分析
  • 觀察記錄:記錄發現的問題
  • 行動指南:明確具體的重構步驟

基于上述的ReAct和COT的啟發,設計了一個用于當前項目上DDD重構的Prompt(包含重構設計的前3步):

1. Prompt for Refactoring

Context: 在六邊形架構的DDD實現模式中,Application Service、Domain Service、Query 以及 Port 的設計和實現有一些最佳實踐和經驗。以下是總結的經驗和適合的重構提示:

  • Application Service:主要負責用例編排和事務管理,不包含業務邏輯,而是調用 Domain Service 執行具體操作。
  • Domain Service:包含核心業務邏輯,處理復雜業務規則和操作,是領域模型的一部分。
  • Port:定義應用程序與外部系統之間接口,包括 inbound 和 outbound 包中的 Repository 接口定義。

基于上述上下文。請參照 @AcademyCourseDomainService.java  對當前文件進行重構,如果涉及 @EnrollmentApplicationService.java  的修改,也可以進行修改。使用 ReAct 框架按照下面的思考步驟來指導此過程,以分析、觀察、執行并最終完成代碼重構。

  • Thought-1:是否有明顯的codesmell?
  • Observation-1:有codesmell:Longmethod
  • Action-1:使用這個codesmell對應的最佳實踐進行重構
  • Thought-2:是否有特別需要注意的codesmell,比如說面向對象的5大基本原則,單一職責原則、開放封閉原則、里氏替換原則、依賴倒置原則和接口隔離原則?
  • Observation-2:有幾個地方,不符合單一職責原則
  • Action-2:了解單一職責原則的最佳實踐,并進行代碼重構
  • Thought-3:當前文件是什么Layer,需要遵循哪些職責?
  • Observation-3:當前的文件是DomainServiceLayer,里面有些實現做的事情不屬于domainservice的職責
  • Action-3:根據Domainservice職責,對這幾個實現進行重構,分析這些做的事情屬于哪些layer的職責,將實現挪到對應的Layer中去

2. Cursor composer的輸出:

五、實驗效果與經驗總結

通過多輪實驗,這種基于ReAct的重構Prompt編寫方法展現出了明顯的優勢:

  • 更高的結果正確性: 這種重構方法能夠在僅需兩到三輪的互動中,達成預期結果。與傳統方法相比,ReAct和COT的結合使得模型能夠更有效地整合信息和推理過程,從而減少了錯誤和不確定性。這種高效性使得用戶在處理復雜問題時,能夠更快地獲得準確答案。
  • 目標導向的思考過程:采用ReAct框架后,模型的思考方向更加符合用戶的期望,而不是受到幻覺(即生成不實信息)的影響。通過引入額外信息源(觀察的步驟會引入需要的信息),模型能夠實時驗證和更新其推理路徑,從而確保所生成的信息是基于事實而非虛構。這一特性顯著提升了用戶對模型輸出的信任度。
  • 可視化的思考與修改過程: 在Cursor的composer模式中,用戶可以清晰地看到思考和修改的中間過程。這種透明性讓開發者能夠追蹤每一步的修改步驟,從而更好地理解模型如何得出最終結論。通過展示具體的推理軌跡和所采取的行動,用戶不僅能審視模型的決策過程,還能對其進行必要的調整和優化。

效果提升的關鍵因素:

  • 邊界清晰:通過Context限定了AI的行為范圍
  • 步驟明確:讓AI按照預定的思維方式進行重構
  • 反饋閉環:每個步驟都有明確的觀察和行動指南

思維方式的轉變:這個過程讓我意識到,使用AI的關鍵在于轉變思維方式:從“問題導向”轉向“引導式合作”。

我們需要做的是:

  • 人負責分析和規劃
  • AI負責執行具體細節
  • 通過精心設計的Prompt建立橋梁

六、AI編碼助手使用的新范式

這次的探索不僅幫助我解決了代碼重構的難題,更重要的是讓我領悟到了一個道理:AI不是萬能的,但通過正確的引導,它可以成為我們強大的助手,起到能力放大器的作用。當我們學會用“教練”而不是“提問者”的身份與AI互動時,往往能獲得更好的結果。當然,這也給我們帶來了新的要求:在與AI進行協作時,了解最佳實踐和方法論成為了前提條件,只有這樣,我們才能更有效地引導AI以正確的方式完成工作。

這種思維方式的轉變,讓我們能夠更好地發揮人類的創造力和AI的執行力,從而提升代碼質量和開發效率(在理想情況下,提升開發效率應當將節省下來的時間來促進代碼質量的提高,而不是單純追求高產出,否則我們可能會陷入另一個無法自拔的漩渦。追逐產出而忽視質量,最終仍然會導致技術債務高筑,增加維護成本,甚至影響項目的可持續性。因此,平衡效率與質量至關重要。通過注重代碼的可讀性、可維護性和合理的使用最佳實踐,我們不僅能夠提高開發速度,還能確保軟件的長期健康和穩定性)。在未來,這種人機協作的模式也許會成為軟件開發的一種新范式。

七、Prompt分享

經過實踐,我們總結出了一個專門針對代碼基礎異味(code smell)重構的提示模板。如果你對代碼基礎異味的重構感興趣,歡迎嘗試使用這個站點下的Prompt模板。這個重構Prompt模版站點是為開發者量身打造的資源分享平臺,旨在提供高效可行的Prompt模版,以提升使用Cursor進行重構的體驗,主要面向希望通過AI優化重構過程的同事。其Prompt特色在于能夠顯著降低AI在重構時可能出現的幻覺。大家可以通過參考站點的Quick Start操作快速上手,從而提升重構的準確率和效率,讓大家更專注于最佳實踐和方法論的思考。

到此,我們的討論就告一段落了。感謝大家的閱讀和關注!

責任編輯:趙寧寧 來源: Thoughtworks洞見
相關推薦

2009-07-22 14:53:45

ibmdwIT架構

2025-06-24 03:00:00

2022-07-18 09:01:58

React函數組件Hooks

2024-12-05 13:50:33

Cursor人工智能代碼

2025-06-10 08:10:59

Cursor代碼AI

2017-12-27 14:05:04

網絡架構數據中心網絡

2024-07-12 12:43:51

2024-02-22 10:27:00

Python開發

2010-06-09 16:27:30

PHP+MySQL

2025-02-25 09:11:08

2020-05-20 12:30:44

容器Linux系統

2021-11-04 05:43:38

GoKartGo代碼靜態安全分析

2023-02-01 09:32:50

2023-11-30 18:03:55

IDEA工具

2010-02-22 10:18:29

Python代碼

2017-03-09 19:39:54

微服務架構重構

2023-09-13 11:40:12

2009-12-08 16:22:06

WCF代碼

2010-02-03 15:09:13

Python 構建工具

2021-04-16 15:04:07

GitGit工作樹Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久中文字幕在线 | 国产农村妇女毛片精品久久麻豆 | 国产成人99久久亚洲综合精品 | 亚洲性人人天天夜夜摸 | 男人天堂av网站 | 五月综合色啪 | 爱爱免费视频 | 一区二区三区福利视频 | 午夜影院在线观看免费 | 免费a网站| 久久久视| 午夜精品一区二区三区在线观看 | 国产原创视频 | 免费看国产a | 在线欧美一区 | 国产精品国产成人国产三级 | 欧美精品一区二区三区在线 | 一级片在线视频 | 玖玖国产 | 日韩精品免费在线 | 国产精品永久免费视频 | www国产精 | 久草www| 久久国产精品久久国产精品 | 欧美成视频 | 91精品国产综合久久婷婷香蕉 | 激情欧美一区二区三区中文字幕 | 欧美一区二区三区在线视频 | 一区二区久久 | 99久久精品免费看国产四区 | 亚洲人人| 成人在线视频观看 | 天天操天天玩 | 欧美日日 | 成人天堂 | 亚洲精品欧美精品 | 欧美日韩久久精品 | 99综合| 亚洲国产精品激情在线观看 | 不卡的av电影 | 欧洲色|