比 Copilot 快兩倍以上!在我的開源項目 AI Godot 桌寵中用通義靈碼解決問題

本文作者:plzpj6bp7mjr4,內容選自通義靈碼超級個體創(chuàng)新實踐大賽,并對部分內容做了微調,感謝作者分享的最佳實踐!
最近,阿里的開源大模型刷屏了,我一直都是通義的用戶,也本地部署過 Qwen 系列模型,自己也是 AI 代碼助手的高度依賴用戶,同時也是 AI 項目的開發(fā)者。
Qwen 開源模型在開源榜單上大殺四方,所以不得心生幾分好感,通義靈碼底層基于 Qwen2.5 最新模型,代碼補全和問答能力全面升級。
正好最近我正在開發(fā)一款開源桌寵軟件,鏈接地址如下:
https://github.com/jihe520/Desktop-Pet-Godot
項目簡介:??????一款由大語言模型驅動、Godot 制作的 AI 桌寵,旨在提供一個全能的、豐富的桌面 AI 寵物。

項目使用的是開源的 Godot 游戲引擎,使用的語言是自帶的 gdscript,語法類似 Python 但是和游戲引擎綁定更緊密,這個項目對 Copilot 來說,還是有很多難度。
因為該語言語法 API 變化快,godot3 和 godot4 的語法發(fā)生大變化,許多 LLM 都是給的 godot3 淘汰的語法,不能給出最新的語法,該語言也比較小眾,缺少訓練資料,讓我來測測通義靈碼能力。

難點:
- 更好的泛化能力,對小眾語言學習能力強
- 對整個大項目理解程度高
- 訓練數(shù)據(jù)集是否及時更新,能否適應語法 API 的更新變化
以上考察的難點,也是我最關心的點,也算是技術難點吧。
廢話少說,接下來開始使用。
首先,我在 VSCode 里裝上通義靈碼插件,操作很簡單,點擊擴展-搜索 Tongyilingma,點擊下載安裝即可。

項目結構
為方便演示,我先讓通義靈碼整體認識我的項目,這里我使用的是通義靈碼本地工程問答能力 @workspace。
當你需要快速了解一個工程、查找工程內的實現(xiàn)邏輯,或有新訴求需要進行代碼變更時,可以在通義靈碼智能問答窗口中通過@ 可喚起 @workspace,選中后輸入你的問題或訴求,通義靈碼可快速結合當前倉庫進行工程理解、代碼查詢、代碼問答等,同時可以通過自然語言描述需求,結合當前工程生成簡單需求或缺陷的整體修改建議和相關建議代碼。

@workspace 怎么用?
1)快速上手熟悉新的代碼工程
可以詢問當前項目的任何細節(jié),如“項目的結構和功能是什么?”,“訂單管理的代碼實現(xiàn)在哪”,“如何構建和運行當前項目”。與靈碼對話,消除陌生感,快速上手新項目。
2)頭腦風暴,協(xié)助實現(xiàn)新需求
可以結合當前代碼工程,分析用戶的需求問題,提供實現(xiàn)代碼或頭腦風暴。如“如何增加用戶鑒權邏輯”,“實現(xiàn)一個功能,批量添加我的收藏里的商品到購物車”,“增加刪除文章的接口,包含后端 controller,service,mapper前端 vue 的變更”等,讓靈碼快速提供解決方案及代碼。
解釋代碼
我忘記了 Globals.gd 里面的邏輯關系,我便讓通義靈碼給我解釋下,它出乎我的意料,還給出了相關流程圖,幫助我更好的理解。開發(fā)者用通義靈碼可以提高代碼理解和調試效率,簡化復雜代碼、提高協(xié)作效率、節(jié)省時間。
通義靈碼支持代碼邏輯可視化,可以把你的每段代碼畫成流程圖,幫助程序員清晰地展示代碼邏輯、業(yè)務流程、系統(tǒng)架構,還可以繪制時序圖、類圖、狀態(tài)圖等。通過簡單的文本描述生成圖表,更直觀地展示代碼結構、流程和關系。

解決 bug
bug 1:保存預設時候,每次按鈕會成倍添加

代碼如下:
extends Control
@onready var presets_container: GridContainer = %PresetsContainer
const PRESET_PANEL = preload("res://send/store_preset/preset_panel.tscn"
func _ready() -> void:
Globals.add_new_preset_panel.connect(_load_presets)
_load_presets()
func _load_presets():
for preset in Globals.presets:
var preset_panel : PresetPanel = PRESET_PANEL.instantiate()
preset_panel.panel_type = PresetPanel.PanelType.PresetType
preset_panel.label_name = preset
preset_panel.preset = Globals.presets[preset]
presets_container.add_child(preset_panel)
出現(xiàn)問題,第一時間找到通義靈碼向他提問,他會快速分析問題,并很快給出了優(yōu)化后的代碼!

優(yōu)化代碼如下:
func _load_presets():
# 清除現(xiàn)有的預設面板
for child in presets_container.get_children():
if child is PresetPanel:
child.queue_free()
for preset in Globals.presets:
var preset_panel : PresetPanel = PRESET_PANEL.instantiate()
preset_panel.panel_type = PresetPanel.PanelType.PresetType
preset_panel.label_name = preset
preset_panel.preset = Globals.presets[preset]
presets_container.add_child(preset_panel)
通義靈碼非常聰明,幫我排查出問題并給出解決措施。通義靈碼正確使用了 gdscript 最新的 API,具有很好的泛化能力和學習能力。 并且還在清除前做了個判斷,保證代碼的健壯性。
bug 2:當點擊發(fā)送按鈕,大模型沒有返回內容

首先懷疑是請求模型的數(shù)據(jù)沒有正確加載,我點擊按鈕時候發(fā)現(xiàn),沒有反應,我就讓 通義靈碼幫我打印一些信息出來,方便調試。發(fā)現(xiàn)填寫的 API 和數(shù)據(jù)結構錯誤,很快的解決了。
不得不說,通義靈碼的補全速度很快 , 比 Copilot 快兩倍以上,這點對寫代碼很重要。
結尾
最后,我有個非常困難的需求:使用 github action 將項目自動化打包。我本人也不是很懂這個 github action。

對于這類不是我此前接觸過的新問題,我交給通義靈碼,他快速拆解了解決問題的步驟,并給出了示例代碼,很快代碼跑起來,完成!

浙公網安備 33010602011771號