可編排AI程式設計助手Shire1.0釋出:一鍵連線工具生態,重塑軟體開發流程

年初,我們注意到國內幾大 AI 輔助程式設計工具廠商,主要引流方式是:透過提供禮品和購物卡等推廣手段,以引起開發者的關注和使用。這種市場營銷變化逐漸影響了我們開源 AutoDev 外掛。而我們也看到了大量的公司、個人都開始構建自己的智慧體,以支援自己的開發流程。這些智慧體往往是基於某個特定的場景, 如需求生成、程式碼生成、程式碼審查等等。但是,這些智慧體往往是孤立的,無法與其他商用 AI 助手進行協同工作。
既然舊的 AI 輔助程式設計模式已經同質化,在這樣的新的階段,需要新的工具,我們建立了 Shire 智慧體程式語言 & 框架。在經過不斷的迭代和實踐之後,我們 終於釋出了 Shire 1.0 版本。

為什麼是可編排的 AI 程式設計助手?

Shire 想解決的問題是:如何讓大量存在於不同平臺、團隊的 AI 智慧體更好地協同工作?並將其用於軟體開發流程中,以提升軟體開發效率。

藉助 AI 東風,建立數字化研發流程

在 DevOps 時代,我們一直強調透過需求 ID 將需求、程式碼、構建和釋出關聯起來。然而,這一目標在過去始終難以完全實現。而如今,需求工程 + 生成式 AI 的結合為我們帶來了新的希望:
  • AI 生成需求說明書時,結合知識庫與專案上下文,例項化/詳細化需求描述。
  • 在 AI 根因分析中,結合專案程式碼、提交記錄,尋找到原始需求,形成有效的問題報告。
  • 在進行 AI Code Review 時,更有效地找到程式碼是否符合需求,是否存在問題。
  • ……
在舊的時代,我們沒有建立數字化的軟體研發,而在新的時代,AI 能幫助我們解決重複、低效的工作,進而幫我們改進數字化研發流程。

整合工具鏈,提升端到端原型可用性

在過去一年多的時間裡,許多研發團隊開發了大量 AI 智慧體來支援軟體開發流程。然而,這些智慧體往往是孤立的,難以與其他工具如需求管理和測試平臺等系統有效整合。因此,許多 AI 工具一經推出便迅速陷入冷落,無法發揮其應有的價值。也因此,限制了這些團隊進一步創新的熱情,並對內部推進 AI 工具的動力產生了負面影響。
在開發者領域,IDE 是他們最常用的工具,如果直接在 IDE 中能直接呼叫這些智慧體,並且能夠與其他工具整合,那麼將會大大提升 AI 智慧體的可用性。

整合工具生態,降低校驗成本

生成式 AI 生成的程式碼、內容往往是不可控的,因此我們需要對其進行校驗。而在過去,我們往往需要透過人工的方式來校驗,這種方式不僅效率低下,而且容易出錯。諸如於,如果我們讓 AI 一次生成了大量的程式碼,可能包含了語法錯誤、邏輯錯誤等等。為了避免它帶來的負面影響,我們需要藉助工具來校驗和檢查,一旦發現問題, 可以將錯誤資訊結合交由 AI 或者人類來修復。

Shire 是什麼?

Shire 是一個 AI 智慧體的領域特定語言(DSL),它抽象了 IDE、智慧體、流程等的 API,使得你可以到處執行 Shire(需要再實現)。Shire 也是一個 AI IDE 外掛,你可以在 IDE 中安裝 Shire 外掛,以便於在 IDE 中執行 Shire 程式碼。IDEA 版本只是當前 Shire 的一個實現,我們計劃未來在 Shire Compiler 中提供跨 IDE 平臺與 CLI 的支援。
如下是 Shire 的特點:
  • 自定義團隊智慧助手。Shire 將 prompt(提示詞)變成程式碼,使得你可以在程式碼庫中共享你的智慧編碼能力,並且可以直接執行。你還可以將 Shire 程式碼儲存在全域性(~/.shire),以便於在你的所有專案中使用。
  • 豐富的開發工具生態。我們分析了開發者的編碼旅程,提煉出常用工具和 IDE 外掛的核心能力:從內建的 Git 到外部的 mock 服務工具 Wiremock等。透過將這些功能靈活封裝為變數和函式,支援高效的應用開發。
  • AI 上下游與 DevOps 編排。透過整合上游的 AI 智慧體、本地檔案和知識庫,擴充套件 IDE 所需的上下文資訊,以提升模型生成質量。設計並構建與 DevOps 規範和工具鏈深度融合的系統,最佳化軟體開發流程與全鏈路效能。
  • 快速原型,啟用創新。在 IDE 中一鍵執行 AI 提示詞,將智慧與專案上下文相結合,快速構建功能原型,快速建立編碼智慧體。與此同時,靈活調整開發流程和迭代運作模式,探尋最優 AI 輔助開發方案。
廢話不多說,讓我們來看看 Shire 示例。

Shire IDE 互動示例:

讓我們來看一個 ”簡單“ 的示例,來了解 Shire 的能力:
  1. ---
  2. name:"重構程式碼"
  3. actionLocation:ContextMenu
  4. onStreamingEnd:{ parseCode | diff($filePath, $output)}
  5. ---
  6. 請你這段程式碼建議適當的重構。提高程式碼的可讀性、質量,使程式碼更加有組織和易懂。你的回答應包含重構描述和一個程式碼片段,展示重構後的結果。
  7. 以下是靜態程式碼分析的問題:$sonarIssue
  8. 待重構的程式碼:
  9. $selection
在這個示例中,我們在定義了一個在 IDE 右鍵中使用的智慧體,用於重構程式碼。在這個智慧體中,會結合 Sonarlint 分析的問題(要求安裝並配置好 Sonarlint),來生成重構的提示詞。在生成結束後,會呼叫 parseCode 函式來解析出程式碼,再呼叫 diff 來向用戶展示重構後的程式碼。

Shire 智慧體示例

讓我們來看一個編排示例,來了解 Shire 的能力:
  1. ---
  2. name:"設計 RESTful API"
  3. variables:
  4. "story":/any/{ thread(".shire/shell/dify-epic-story.curl.sh")| jsonpath("$.answer",true)}
  5. onStreamingEnd:{ parseCode | saveFile("docs/api.yml")| openFile }
  6. model:"codegeex-4"
  7. ---
  8. 你是一個資深的開發人員,根據使用者故事設計RESTful API
  9. 使用者故事:
  10. $story
  11. 請使用Swagger格式根據使用者故事設計RESTful API,返回設計的 API
在這個示例中,我們透過 Shire 語言來定義了一個智慧體,用於設計 RESTful API。在這個智慧體中,
  1. 準備上下文變數。透過 thread 函式來呼叫遠端智慧體,獲取使用者故事。
  2. 呼叫模型。將使用者故事與模板結合,生成提示詞,再呼叫模型來生成內容。
  3. 生成結果。在生成結束後 parseCode 函式來解析使用者故事,生成、儲存 Swagger API 文件,再借用 IDEA 外掛能開啟檔案,並執行。
除了, thread 函式除了呼叫遠端介面,我們還支援了本地智慧體的呼叫,諸如於: thread("generate-story.shire")

Shire 是如何實現的?

如下是 Shire 的架構圖:
解釋如下:
  • IDE 介面抽象。Shire 透過抽象 IDE 介面,支援與互動 API、工具函式介面、擴充套件 UI 等通訊,簡化與開發工具的整合。
  • 外掛與工具生態。Shire 提供對多種語言(如 Java、Python)的支援,整合 Database、Git、PlantUML、Wiremock 等外掛,實現一體化開發體驗。
  • 工具與框架函式。Shire 利用工具和框架的函式與變數,靈活呼叫開發工具,加快任務執行。
  • Shire Runtime。Shire 直譯器:解析 Shire 語言指令、大模型管理:管理大模型的整合與呼叫、任務編排:最佳化任務執行順序、環境變數管理:統一開發環境配置。
  • IDE 底座。藉助 IDE 的底層支援來實現其功能擴充套件,包括互動 API、工具與函式介面、擴充套件 UI、以及 AST。
透過這些元件的協同工作,Shire 架構實現了開發工具、程式碼庫和人工智慧模型之間的無縫整合,為開發者提供了一個強大、靈活和智慧的開發環境。

總結

Shire 的安裝方式非常簡單,只需要在 IDEA 外掛市場中搜索 Shire,點選安裝即可。安裝完成後,你可以在 IDEA 中使用 Shire。
GitHub:https://github.com/phodal/shire
人生苦短,我有 Shire。


相關文章