「Go 夜讀 AI 探索者」擁抱 AI 輔助編程-取代程序員的不是 AI,而是善用 AI 的程序員
本視頻來自「Go 夜讀 AI 探索者」每週五晚上 21 點 VIP 微信群友的分享。
視頻內容:
擁抱 AI 輔助編程-取代程序員的不是 AI,而是善用 AI 的程序員。
注:如果你也想跟大家探討 AI 相關的所有話題,可以 vx 私信小助手 night_reading_go,只要你能保證每週互動,免費參加。
https://talkgo.org/
#go #golang #learning #Go夜讀 #talkgo #night #Cursor #輔助編程 #Copilot
首先感謝楊文大哥的邀請
來到咱們構業組的社羣裏面
然後主要是和大家交流分享一下
我在編程中的一些AI的使用情況
大體是一個GitHub Corporate到Cursor的一個過程
我對AI編程工具的一個使用原則是
基本上只要能提高生產力就用
還是比較擁抱AI服務編碼的
還有一個就是關於程序員使用AI這一塊
就是有個話題
就是AI會不會取代程序員這個觀點
我簡單說一下
我覺得是未來應該是可以的
但是三五年內應該還是無法替代
也就是在短期內取代程序員的還不會是AI
還是善用AI的程序員
但是五年以後可能十年
我覺得是總有一天AI可以基本上
取代程序員去自動的去寫程序的
這是今天主要的一個話題
開場先跟大家閒扯幾句
然後我先再介紹一下
今天跟大家分享的一些主要內容
第一點就是和大家分享一下
在AI初期我在工作中是使用AI的一個情況
第二點是目前我還在哪些地方使用
GitHub Populate
第三是我當前爲什麼完全轉向了Cursor
作爲我現在的主力的一個輔助編程的一個工具
第四就是主要和大家分享一下
我現在經常使用Cursor的一些用到的一些功能
第五主要是這個工具
大家應該也都知道是主要是前端上使用的
我用的比較少
但是也給大家簡單的介紹一下
初期的話就是GitHub Populate一出來
我就開始使用了
那時候只是簡單那些代碼補全
寫Circle
在Circle裏面去寫一下Circle
比如增刪改查這些
每次上線代碼變更有些字段的變化
你直接寫上你的要求
基本上是GitHub Populate補全的時候
它沒有什麼錯誤
還有就是比如經常運營
如果找我要一些運營的數據
我直接通過Circle去做些統計導出
也是用GitHub Populate輔助也就能做到
GitHub Populate補全功能
有補全
但是用起來還是不夠用
因爲剛開始的時候
GitHub Populate也沒有GDP4
感覺GDP4在編程上也更強一點
更準確一點
所以我就因爲GitHub OpenAI
剛纔使用的時候經常被封
所以我用了Recast AI軟件
這也是一個Mac上常用的
用快速啓動的一個工具
然後我也訂閱了它的AI
初期的話
我就用配合GitHub Populate去使用
用的時候我在Recast AI上
就用GDP4作爲主要模型
建立了一些Chart
也就是一些它裏面的叫Reset
我內置了一些System指令
然後我編程當中需要一些
GitHub Populate不夠用的時候
我就把我的上下文發到Chart裏面
讓它去幫我輔助一些寫Demo
還有一些運維的一些工作指令
另外就是Code Review
用的過程中其實也
我初期就是一直GitHub Populate
配合上Recast AI的GDP4去使用
但是後面用到後面也就是
Anthropic出來Cloud 3.5
Sonnet的時候
在Recast AI上也能用
那時候我發現Cloud 3.5
Sonnet這個模型
在編程上比GDP4還更準確更好用
所以我在這個上面也就用GitHub
Populate配合Recast用
逐漸用了Cloud 3.5
Sonnet這個模型
那時候Cursor還不火
它也沒有把主力模型切換到Cloud 3.5
我主要是通過Recast AI
加上Cloud官網去使用的
直到出現了Cursor
待會也會講到一下子
把我這種GitHub Populate
加Recast AI或者Anthropic
Cloud 3.5
結合使用這種配合的切來切去
使用的痛點完全解決掉了
待會也會介紹到
然後我目前仍然是還訂閱了GitHub Populate
我目前用到的
雖然是編程的主力切換到Cursor上面
但是GitHub Populate我還在訂閱
目前用的比較多的
其實還是我在一些開源項目的調研
學習上用的比較多
比如我打開GitHub Populate
我要看開源項目
有的我可能爲了快速瞭解一下
我直接就會在這個地方去引用打開的文件
去跟GitHub Populate去做一些聊天
來得到我想要的一些信息
這是一個目前的使用的一個點
我這一個截圖也是我去學習
調研pdf的一個開源件的時候用到的
這裏面它是用Rust封裝的
我不會Rust
但是我也可以快速的去學習它裏面的一些方法
另外我還在訂閱GitHub Populate
一個是可以使用
現在它已經開放了使用OE
這個是目前推理能力最強的
一些出了一些複雜的問題的時候
我還是可能會打開這個去一直去聊天
這個的限制
我目前還沒有碰到它的限制的上限
也不太確定GitHub Populate OE
它使用的頻率有什麼限制
這是簡單的分享一下
下面就是主要介紹一下
我爲什麼放棄了GitHub Populate
轉向Cursor
剛纔也提到Cursor完美解決了
我GitHub Populate和Cloud 3.5
Sonnet模型結合使用的痛點
我要切換不同的軟件去用
Cursor就是把主力模型切換到Cloud 3.5
Sonnet之後
也就是Cursor也從這個時候開始火了
我感覺體驗比GitHub Populate
提升了太多
直觀的體驗就是切換過來之後
就是使用起來特別的流暢
然後響應速度也很快
沒有卡頓感
第二就是準確
上下文的引用也更直觀靈活
比較強大
Table功能也不用說了
那個比Populate更準確和響應的速度快
而且同時能修改多好
能實時的推斷出下一個要修改的地方
我下面就詳細介紹一下
我的一些在Cursor上的一些使用
Cursor目前我是使用下來體驗最好的
雖然最近又出來Code IOM軟件
出的Winsoft編輯也比較火
但是我也切換過去使用了一下
但是對於上下文引用的引用能力
這個方面感覺確實比Cursor強一點
但是我不太習慣
我不知道它引用了哪些上下文
我也不能指定的是上下文
上下文引用了上下文
這一點使用起來感覺不太習慣
所以我還是主要還是用Cursor
一個點就是Cursor是可以
寫代碼是沒問題的
然後它也可以用來輔助的做一些閱讀寫作
因爲我們都知道它是把項目給做了
embedding鎖引起來了
所以能快速的找到相關的片段
我可以打開看一下
比如這個也是用來寫代碼
就發了一個網站上的一些文章
發來之後
因爲整個項目也是被鎖引起來的
它用embedding做了鎖引
這是codebaseindex
把我項目裏面的所有文件都鎖引了
大家使用輔助寫代碼的時候
也可以多用打開鎖引
然後要chart的時候
儘量使用基於codebase
這樣它的上下文理解能力其實更好一些的
這個類似裏面就是輔助去讀寫文章或者寫作的時候
我們把我這個餐廳作爲知識庫裏面進來
我這個裏面問了他一個問題
項目中介紹哪些變成工具
它可以直接從我這個文章裏面去搜索
把新公衆文章引用的文章都列出來
然後給出了回答
我看回答也是比較詭缺的
這是一個使用點
也就是不只是用來寫代碼
尤其是咱們寫文檔的時候也特別好用
這是一個我用的時候的一個錄屏
可以簡單的看一下
也就是我剛纔演示的
這就是直接跳過了
然後最常用的功能就是
大家也都是程序員嗎
都是table這個是最常用的
我剛纔說切換到咳嗽非常理不暢
也就是一是table非常準確
另外一方面就是響應速度特別快
它官網宣傳雲就完美契合了它一個使用體驗
就是一直table
你代碼就基本就完成了
一些簡單的代碼
這是我使用的一個樣例
大家可以看一下
我要改一個結構體
我要改一個名稱
它立馬就推斷出我下一行應該在哪個地方需要變更
我鼠標移動移到那個地方
它立馬就推斷出來了
我只要table一下
我現在我這個文件就改完了
另外再跟大家介紹一下
我經常使用的composer這個功能
主要是command i直接就調用起來了
這個的用法
一般會盡量結合dock去使用
比如我用到一些開源項目
我把開源項目的dock加進來
然後composer的時候
讓它引用dock去補全代碼
下面看一個樣例
比如我這個代碼是ts代碼
我對接了一個軟件
這個軟件有開發者文檔
我把開發者文檔引用進來
它有很多接口的數據結構需要定義
還有接口調用需要定義
我這時候直接把composer給換出來
然後add它這個文檔
這是我添加進來的文檔
我直接讓它結合文檔
幫我完成我的類型定義
它基本上很快速的就開始查找文檔
然後補全
大家可以看一下
我代碼它給我的定義就已經完成了
然後我大概看了一下
基本上沒什麼問題
我直接就accept
然後這個代碼就完成了
和以前相比
我就不用對照着
和以前沒有AI的時候開發模式相比
我就不用對照着文檔去手動一個一個去寫
就這樣直接現在可以說是一分鐘
然後AI就幫我完成了這樣的代碼
然後再看一下其他使用的一個樣例
還有經常使用的就是cursor chart功能
chart我也是喜歡把dock引用進來
把dock結合一些上下文一起給它去幫助
我輔助一些寫代碼
比如這個裏面
這是我剛纔用AI結合文檔
composer幫我補全的一個類型定義文件
接着我現在漏了就是讓它加上註釋
我現在就要結合文檔選中這道代碼
讓它幫我把補全代碼註釋
方便我直接在裏面看每個字段
大家看一下我也是直接選中代碼
然後讓它add文檔
讓它結合文檔幫我添加代碼的註釋
我看了一下
基本上是它這種結合了文檔的註釋沒有什麼問題的
我直接快速應用就行了
這樣也就完成了一個代碼註釋的添加
這是chart的一個應用
然後用chart來寫代碼
也可以看一下我經常使用的一個流程和樣例
這是我的一個函數
我需要把我定義的condition
篩選的一個數據結構
轉化爲一個Database ORM的一個篩選條件
我把基本的我的篩選條件的結構定義好
以及這個函數的名稱基本的一個架子
函數的架子寫好
然後我可以直接選中這一段代碼
讓AI去幫我完成這個代碼
我們可以看一下
也是非常快速的它幫我完成了
我簡單看了一下也沒有什麼問題
然後就直接應用
這樣它也幫我寫完一個函數
不用我人工我自己再去一個一個寫
就是極大的提升了一個效率
這也是一個點
然後再看一下
我還有用chart cursor去解決一些bug
直接看我這個裏面
我使用我錄下來這個用例
我是一個list的查詢
然後我發現一個bug
我就把發現一個bug
這個bug是它把篩選條件多了一個0等於1的篩選
結果查詢出來的結果
永遠都查詢不到
因爲這個0這個1這個條件的機種沒有
我直接把它這個網口粘貼過來發過去
讓它幫我分析這個原因
你看基本上也是它一下子就找到了一個
可能在用的時候沒太注意的一個點
就是在這個框架
在構建vr條件時
莫數組爲空的時候
它會自動的生成一個0等於1的條件
這個特別容易忽略
這是SQLite框架的一個自動補的一個條件
寫的時候可能根本就不會注意到
用AI的話
用這個cursor加cloud3.5
它一下接上下文
然後一下子就找到了問題的所在
就修復完了
不用像以前那樣
我再去google搜一下找一下文檔
也是效率上會有一個比較大的提升
它直接找到了bug
並且給出了代碼
我只要點擊應用
然後這個bug也就修完了
這是一個使用
然後會使用到了一個生成的終端命令
也是在cursor上用它的終端直接就換出來了
command k換出來了
可以看一下我的一個用例
我調用出來
然後換起來
我已經換起來
這個上面清楚
我讓它查詢目錄名爲ptx
目錄的一個位置
它立馬就幫我完成了這個命令
我只要點回車就執行了
在寫一些比較繁瑣的命令的時候
我們就不用去查文檔
直接用AI立馬就完成了
這也是一個提升效率的一個點
主要是在命令好端的一個地方
最後我在後端上使用的
我本身是寫後端的
然後我用的工具就主要是往前面介紹這些
最後一個是一個
主要是前端上我看比較火
而且用起來也我感覺特別流暢
主要是用它來寫一些前端項目
還有單頁應用
這個感覺上也是效果比較好
比較流暢
直接發起一個命令
自動就幫我自動就完成了一個網頁的編碼
這是一個稍微給大家演示一下
然後其他就沒有了
主要是跟大家簡單的就是顯示和分享一下
我在AI編碼工具上使用了一個歷程
可以通過這個影片
AI在編程上的應用是出飛猛進的
工具是越來越多
我之前剛纔使用皮卡撲克碰到一些問題
然後就出來Cursor完全的解決了
我現在都取消了訂閱recast
我完全用在Cursor這一個應用裏面就解決了
我感覺在編程上的話
Ansopic Cloud還是特別強
我現在用到GitHub
GitHub Cooperate我是因爲第一個一年也還在用
就是剛纔說的就是用在開源項目裏學習
另外就是使用O1這個模型會經常去用它
另外我剛纔跟大家分享了一些我用的Cursor
這個目前是我使用起來綜合下來
體驗最好也並使用用的最順手的一個
另外編程上還是會用到Cloud
它的官網有時候也會來用一下
這是我的一個使用情況
看大家還有什麼問題想要交流的
或者有問題
大家可以提一下
對在現場大家可以提問題
第四點Cursor的Composer是怎麼裝的
或者怎麼啓用的
我直接打開一下
Composer啓用的話
直接用快捷鍵Compound加i
然後就掉出來了
然後用Composer的時候是儘量是這樣
儘量是你是寫好註釋
寫好註釋
寫好你這個文件
你這個代碼文件是要幹什麼的
然後你掉出Compound i
掉出來Composer
你就用一些把你要的一些剩下文
或者文檔可以通過app引用進來
然後你就給它發指令
它自動的就幫你把文件的代碼就完成了
比如我現在這個也是我給大家打開來
這個也是通過Composer完成的
我這個也跟大家分享一下
比如我這個是一個PDF的工具
我之前PDF的工具是通過阿里雲函數計算暴露的FC
我現在要不使用阿里雲的FC了
我要重新封裝下方法
用mini行工具去調用
這時候我其實告啥也沒幹
我告訴它我要用這個mini行框架是這個
然後掉出Composer
讓它要參考的代碼加進來
直接給它發命令
讓它用把我所有的方法封裝爲mini行
這一種程序使用的框架是這個
然後這個代碼它就幫我完成了
我基本上是隻用點確認accept就行了
不用做太多工作
完成之後我也測試了一下
也沒有什麼問題
我可不可以這樣理解
就是說實際上你是要做一個功能
然後你要把這個功能展開一個描述上來
甚至是說比如說你做一些註釋
就類似於你要做一些todo
然後把這些todo交給它
其實這些所有的這些說明詞
就相當於它的提示詞
完了以後它就幫你把它東西都生成的
是這樣理解的
對
Composer另外就是chart也是
你可以定製你的快捷鍵
你chart裏面的話
就是說它你要依據去描述
然後的話可能比沒有你在文檔文件裏面的
更結構化
是這樣說的
因爲你文檔裏面
你就相當於是把這些整個任務都完全分解了
然後也組織的非常有條理
你在chart裏面你就沒辦法做到這樣
對chart裏面其實也可以
是chart裏面
Composer適用於你直接寫代碼
就是你代碼不存在
從零開始去寫
chart的話就適合你寫好了代碼
你要繼續補全
或者找問題
或者Code Review的時候去用
對
我這裏請教一下
它chart的對話歷史可以導出來嗎
因爲我好像沒找到chart的導出歷史的地方
我還沒注意
我也沒看到導出的地方
但是可以看到歷史
但是導出歷史我也沒看到
我還有一個問題
就是說你有沒有分
比如說用工具去分析一個比較完整的大的代碼
比如說你把整個根目錄扔進去
它可以幫你想辦法幫你分析出來
因爲說白了
有時候更多的時候
你是看別人的代碼
說白了要修別人的bug
或者什麼之類的
你要一堆堆堆去看
有時候還是比較麻煩的
對吧
或者是說一些經典的算法
或者什麼之類的
大的代碼就這個意思
我可以舉一個例子
就是大這個代碼也可以
就是你基於codebase去問
你問chart的時候
儘量點這個codebase
我接下來又舉一個例子
就是我這個makefile
我之前的makefile
我是用Docker構建的
Docker構建的
我構建的是在Linux上應用的一個應用程序
但是我前幾天要把它部署到windows上面
這個應用了很多第三方的軟件
有MuPdf
這個因爲字體的問題
不支持CJK
所以我是用本地部署的
要本地去構建
就是很繁瑣
也依賴了一些很多的
其他的一些編譯的時候
要依賴第三方庫
我要編windows的應用程序
我就去讓Cursor去結合上下文去弄的話
一直沒有成功
它寫了好久
弄出來的總有一些問題
是應該有可能是因爲你選用的模型的問題
因爲我不知道是不是這樣
因爲我之前試過在這個地方
如果是一直用它的模型
是搞半天也搞不出來
然後我乾脆同樣一個問題
我直接到cloud裏面一問
它就幫我大概的弄出來了
當然那個問題可能比較簡單
比如說它的實現一個功能
然後我描述完了以後
在這裏面它始終理解不了我的理解不了
雖然我可能說了很多
但是在cloud裏面它就理解了這個問題
對
後來我也就在這個cloud上去問
然後它幫我寫好了
在Mac M1上構建的Mac file成功了
所以我覺得它這個應該可能是跟模型的問題
或者是說它在送給模型的時候
它是選擇性的送給模型了
會不會
對
我感覺還是主要的是它上下文理解
它沒把我這個項目整個項目的結構理解好
所以總有一些錯誤
我現在舉個例子
是用的Windows
最後Windows這個
我最後是用這個完成的
這個就是我剛纔那個介紹Cursor的時候提到
它這個不能讓我清晰的看到上下文
也不方便我自定義的引用上下文
但是感覺它對讀取整個項目的目錄結構理解的特別好
就是它基於搜索這一塊好像確實做的很好
這個我也用過
對然後它就用這個之後
它就讀出了我的目錄結構
它是結合我的目錄結構
我這些引用的路徑它都弄對了
然後試了沒幾次把編譯的一些問題給它
然後它就完整的幫我完成了Windows的程序的編譯
然後拿到Windows上運行也沒什麼問題
所以這個Windows 10的話
可能它對整個項目的讀取比那個Cursor要強一點
但是我用起來就不太習慣它這個
我不能自定義這個我看不到它這個上下文
就感覺不是特別靈活
但是它的感覺上下文的補過這個能力確實要強一點
這是我的一個體驗
我這幾天用的一個體驗
我的理解就是我的應該是我使用的感受
就跟你說的一樣
就是說它對整個項目下的文件搜索這一塊
它可能會比較強
比如說其實你這個項目的說白了
你的功能是要做跨平臺的環境的設置
是這樣子
是這樣說
然後的話它要兼容兩個Windows和Linux的
這兩個平臺上的最主要的編譯功能
那麼它就可能要做很多option
然後來分辨出你是Windows還是那個上面的
然後它就要對這些環境變量的進行解析和最後的處理
你使用的相對應的工具
因爲這個事情我也經常做
所以我發現應該是這樣的
對
是這個意思
因爲我進來的稍微晚一點
你這上面的Raw文件一般是怎麼寫的
我如果沒有特別沒有沒有去搜索
他好像他說比較強的應該是在他的Raw文件
是不是
對
我沒有特別定製自己的一些Raw
完全是這塊我完全是用的這個默認的
沒有配置自己的Raw
我也是沒用這個
所以說我也不知道怎麼開那個
所以我就開始想請教一下你
然後其實我發現這個里約度代碼其實有時候也挺好的
就是剛剛你說的那個Windows
就是Windows soft那個是吧
那個軟件
然後你跟他說我要這個函數我不太清楚
然後我就直接跟他說
我說這個函數的調用過程你幫我直接畫個流程圖
然後的話他就可以幫你生成那個叫什麼
TD的那個流程的介紹
然後的話你可以用用MD的或者是GIO的那個
裏面
然後的話你重新reopen以後
他就可以幫你畫一個大致的流程
畫流程圖
對
可以試一下我還沒用過
是你這個你可以試一下
我覺得有時候對介紹一個東西的時候會比較有用
但他也不是那麼好
反正就是說比沒有好
對
能提高一些效率
快速的瞭解一個跟人家溝通的時候方便
對
然後我要一個個點進去跟他說一個代碼review
或者什麼之類的
要跟他一個個講就很麻煩
對吧
對
你們現在用cosmos是用在自己的項目
公司項目沒辦法用
對吧
我是公司項目
公司可以用
因爲你如果是對外的
如果是說可以發佈出去的就無所謂了
如果只是說你如果有其他的應用可能就不太好
是吧
你看公司一些
我們公司就是隻要鼓勵大家用
還之前用copyright還給大家做一些就是報銷
就是隻要能提高生產力
可以盡情的使用
這是剛纔那個兄弟說的
我沒有預設一個
其實這裏面我覺得他使用的時候分爲兩種
一種的話
如果是說你純粹是實現功能的話
其實他可以不用這樣
你可以直接問gpt或者是cloud
然後不斷的跟他對話
然後讓他產生代碼
然後完了以後把他的代碼放到你這裏面來
包括測試用力什麼之類的
另外一種方法
如果就像我說的你要改bug
你可能有時候你要讓他讀你的代碼
會不會必要
對吧
是兩種情況使用
對寫代碼主要還是table
我的意思是說如果是寫代碼
你可能可以不用直接用gpt去
這樣的話你就不會說把你的代碼暴露給別人
他嗎
如果你特別特別擔心安全這一塊
因爲實際上其實我也跟人家聊過
人家說他說基本上如果是他直接和gpt去聊天的話
他可以幹掉99%的
可能他本身功力也比較好
因爲這個關於隱私這一塊也可以把
這個這塊他有個配置
就是你disable這個打開了隱私模式之後
他應該是不會把你的代碼去分析
這是一個配置
其實你可以不用開那麼多
你只是開其中一個目錄
比如說你針對某一個目錄給他就好了
在那裏面做
那是一個盒子的地方
我的理解是他這個工具應該是做了RAG技術
然後再通過那個來去給他
再把最後搜索出來的東西丟給gpt
關鍵是他做的體驗非常好
速度做得快
對他的交互做得很好
應該說也是相對的
比如說我拿一個代碼給他
然後他不是有他說比如說這個功能優化一點
然後或者加一個東西
然後他讓你去你可以直接點右邊的確認
是不是
但是有時候點半天沒反應的
可能我不知道是網絡的原因還是什麼問題
他經常有時候也會出現這個異常
所以你只能有時候會有
有時候肯定有
所以我一般都是自己本地建git
然後的話用比較工具或者是用比較工具
然後去比
對大家在線上的在線上的夥伴可以提問題
github的copyright現在好用
我原來其實定過半年
我覺得可能那時候基本上也沒咋用
費了費了也很長一段時間錢
我後面就退掉了
我現在基本上沒用
我只是偶爾會用來OE一些複雜的回饋聊一下
寫代碼就沒有再用了
另外就是我剛纔提到的
我在快速的瞭解一些開源項目的時候
我用它做總結是吧
對
用它做這個直接聊一下
用用這個去聊
等於它在這個裏面是它的一個優勢
因爲它是內嵌在裏面的
對
就相當於你可以快速的發現哪些有用的東西給你
這個也是一個很不錯的
對我一點就能在這個跟這個項目去聊
詢問一些這個項目的一些內容
也可以打開把代碼直接在網頁上
在Pw裡面就聊
就比你自己下下來一個個看會比較快
對尤其是一些我可能只要簡單瞭解一下
我不用不去讀它的原碼
是有些複雜的原碼說實話有時候我一下子看不懂
或者是我壓根沒接觸過的也是看不懂

