第一彈 AC Module: 和編程語言無關以AI為中心的自包含模塊化理念和實現

背景和問題

說起模塊/包,幾乎是大部分語言都有的概念,因為一個項目會很龐大,如果單純只用文件做隔離,文件可能幾千上萬個,所以需要在項目和文件之間獲得一個平衡,這個時候就有包和模塊的概念。比如python 你把一個目錄放一個__init__.py 文件,就是一個包。這里我們不區分模塊和包,我們都把他們當做一個虛擬的文件租概念來理解。

當等大語言模型開始深度參與軟件開發時,我們發現了一個有趣的現象:**傳統的模塊代碼組織方式并不適合AI理解和處理**。

想象一下這樣的場景:你向AI助手描述一個需求,希望它幫你實現一個功能。

但是面對一個龐大的項目,AI 往往有點望洋興嘆,他會嘗試查看目錄,通過關鍵字檢索一些關鍵代碼,亦或者找幾個名字可能有點像他要尋找的代碼看看。大部分情況,大模型實際上依賴于你有良好的目錄結構命名以及碰點運氣。

所以在傳統的開發模式下,對AI而言最大的挑戰是:他很難看到你項目的全貌,這包括模塊的作用,以及模塊之間的依賴。而在我們實際的項目迭代中,你的每個需求大概率是要AI能夠理解并且找到合適的已有模塊去作為依賴,并且復用他們的功能從而實現新的需求。

你或許說,那我給每個模塊寫個文檔,大模型不就知道了么,這個問題其實由來已久,只要是人類在維護文檔,這就意味著文檔很快就會和代碼更新脫節,維護文檔實在是個龐大的工作,這就導致現存的大量項目能有一個項目文檔就算不錯了,很難說在代碼中有對模塊的每個文檔。

那能不能用AI來給每個模塊寫文檔?答案是只能部分。如果模塊較大,超出大模型窗口,大模型就難以準確的寫出文檔。此外作為人類智慧的延伸,以及和人類溝通的必要,大模型也**更擅長看文檔而不是看代碼。?如果模塊過于龐大且復雜,這很容易超出大模型的能力范疇。

所以傳統的模塊其實并不適合 AI 理解和維護:

1. 模塊的設計是按人類的喜好,可能是按功能,可能是按其他的維度,較大的模塊導致大模型無法將整個模塊放進窗口,從而很難真正的理解這個模塊。

2. 模塊可能非常多,不可能每次都去加載每個模塊的所有源碼區理解模塊的使用方式。

當前限制大模型的軟件開發能力根源是無法對項目有很好的理解,而不是寫代碼的能力。我們相信,當前大模型寫代碼的能力已經足夠好。但是每次大模型看到一個項目,對他來說都是全新的,他每次都需要探查這個項目。所以帶來了加大的困惑。

AC模塊概念

為了解決在AI時代,項目結構組織的難題,我們提出了 AC模塊的概念。

AC Module(Auto Coder Module)是一種全新的以AI為中心的模塊化組織方式,專為AI時代設計。

AC 模塊的實現很簡單,當一個源碼文件夾包含了 .ac.mod.md 文件,則表示這是一個 AC 模塊。

它的核心理念可以概括為:

1. 以AI為中心的設計思想

傳統模塊化主要考慮人類開發者的需求,而AC模塊首先考慮的是:**如何讓AI更好地理解和使用這個模塊?**

-?每個模塊都有完整自描述文檔 .ac.mod.md

-?模塊需要有一組外部可訪問的API

-?使用AI友好的Markdown格式

-?嚴格控制Token數量,確保所有源碼在模型窗口內(通常200ktoken以內)

- ?.ac.mod.md 是可以讓大模型自己維護的更新而無需人工來完成。

2. 語言無關的模塊定義

AC模塊不依賴特定的編程語言或框架:

```

一個AC模塊 = 功能源碼+ AC文檔?

```

無論是Python、JavaScript、Go還是Rust,AC模塊的組織方式都是一致的。 其中

3. .ac.mod.md?

每個AC模塊都是一個**自包含的知識單元**,其 .ac.mod.md 包含了如下內容:

-?模塊概要

- 模塊目錄結構

-?對外API使用示例

-?內部核心組件/類描述以及mermaid關系圖?

-?AC模塊依賴關系(是否依賴其他AC模塊)

-?測試和驗證方法(特別重要)

? AC模塊的關鍵特性:Token限制約束下的精簡設計實現了完全AI托管

這是AC模塊最重要的約束條件。每個模塊的總Token數必須小于大模型的上下文窗口,這可以讓大模型完整的實現自動化。當一個需求來臨后:

1. 先閱讀本模塊 .ac.mod.md ,對模塊有完整了解,根據需求決定是否閱讀依賴模塊的 .ac.mod.md

2. 修改模塊后,會自動根據 .ac.mod.md 提到的測試和驗證方法執行對應的測試集命令,并且根據命令自動修復修改改出的問題。

3. 通過測試驗證后,自動更新 .ac.mod.md?

最終可以實現AI完全自主維護一個模塊,人類最多只需要干預測試和驗證集。

老項目如何實現AC模塊化改造

在最新版的 auto-coder (1.0.0) 版本中,我們會內置了AC模塊的支持。你可以很方便的在 CLI(交互式非交互式),Python API, ?Web 版產品中體驗到。在執行 atuo-coder.chat 后,進入交互式命令行窗口,這個時候你可以這么做:

/auto 把 @src/a/b/c 里的功能拆分成兩個 AC 模塊,第一個是xxxx 放在xxx目錄,實現什么,第二個是 xxxx ,具體功能是啥

此時 auto-coder 會自動完成某個”傳統“模塊到 AC 模塊的轉化。對于特別復雜的情況,auto-coder會自動采用todolist 工具,確保自己支持超長超復雜的任務。

auto-coder 作為一個已經開發了一年半的項目,體量也還算可以。我們來看一個具體的case. 我們先來看看 prunner 模塊的大小:

一共是 17k, ?遠小于常見 128/200k 窗口,符合AC模塊要求。接著你只需要一句話就可以將其轉換成 AC模塊:

將?@src/common/pruner 轉換為?AC?模塊

大模型就會閱讀和轉換該模塊。大家可以看到我們的 .ac.mod.md 的效果

詳細的可以看這里:

https://github.com/allwefantasy/auto-coder/blob/master/src/autocoder/common/pruner/.ac.mod.md

新項目如何創建 AC 模塊

這個就簡單太多了,你可以這么說:

/auto 創建一個?AC模塊,該模塊主要功能是balalaxxxxxx剪枝功能請使用?@src/autocoder/common/pruner/.ac.mod.md 模塊

這里你就申明了創建AC 模塊,復用哪個已有AC 模塊。如果你不清楚應該復用哪個AC模塊,或者你可以這么寫:

/auto 創建一個?AC模塊,該模塊主要功能是balalaxxxxxx請先查看項目里已有的AC模塊,有可以復用的功能盡量服用,不要什么都自己實現。

這樣大模型自己就會去探索項目里已經有的AC 模塊,從而更好的依賴已有的AC 模塊開發新的模塊,避免大量冗余的代碼的開發,也讓他對項目自身有更好的了解。

如何零review實現對AC模塊的改造

自從引入AI輔助編程以后,大家發現 review 工作巨大。AI 快速產生代碼和PR的能力瞬間沖擊 review 的工作。使用 AC 模塊后,人類的主要工作將會轉化為”編寫測試和驗證case“,比如:

之后當我們提需求修改pruner ,auto-coder 會自動調用 pytest 運行測試,直到滿足用戶需求并且同時通過測試才會提交PR。如果你對 test 足夠有信心,那么你完全可以不用reivew 代碼。

實際實踐

AC 項目已經在 auto-coder項目中進行了實踐,大家可以在我們項目里看到有很多模塊已經 AC 化了。

總結

實際上 AC 模塊的設計讓?AI輔助編程第一次可以完全接管一個復雜的項目,并且對項目有真正意義上的 ”深入理解“,而且不會給人類帶來復雜繁瑣的 Review 工作。人類的工作也從實在讓人蛋疼的review,給大模型打下手,變成我們是真正意義上的需求+驗收作者。 AC 模塊將真正意義第二次變革 AI輔助編程。

auto-coder 經過了一年多 400個版本的迭代,終于攜 AC 模塊迎來了自己的第一個里程碑版本: 1.0.0.?

你可以通過一條命令:

pip install -U?auto-coder

來安裝。

最后,你都閱讀到這里了,來都來了,先別走,還有彩蛋。

超長對話支持

AC 模塊的引入以及基于驗證的編程,會極大的拉長對話,比如可能模型要組合1000次甚至一萬次的工具調用才能最終完成功能和過”測試驗收“。這個對 AI輔助編程工具是個巨大的挑戰, auto-coder 完美解決了這個問題。你可以用200k 的窗口拋出2000k 的上下文。當然,也小心的你錢包。

大模型聚焦機制

支持了超長對話,大模型往往容易忘記最開始的需求。auto-coder 通過一些內置支持,可以在讓用戶無感的情況下,幫助大模型聚焦原始需求,而不會隨著工具調用超過1000次以后就忘掉了之前要干什么了。

弱人機交互

現在大部分AI輔助編程工具都是強人機交互的,就是copilot 模式,我們提出需求,大模型完成,人review 和教調。隨著 AC 模塊的引入,AI輔助編程工具將直接給用戶提交PR,而且很多情況無需review ,則個時候,我們只要提出需求和驗證測試,其實就可以不管了,繼續去做其他事情。當前的 chat 交互模式是不合適的。所以我們引入了 CLI(方便在shell腳本或者編程語言中調用) 和 Python API(方便在應用中靈活集成),可以實現異步。比如:

cat?job1.md | auto-coder.run --model cus/anthropic/claude-sonnet-4 ?--pr

然后你就可以去干別的,直到 github 接受到PR:

好了,這下是真的結束了,但是只是這篇文章的結束,卻是新時代的來臨。

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

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

相關文章

Edge(chrome)右鍵插件的右鍵菜單怎么設置

主要使用 contextMenus 右鍵菜單功能,正常用它給頁面設置右鍵菜單,其實它也可以給插件還有其它功能設置右鍵菜單,是根據 contexts 選項來設置給哪個功能設置右鍵菜單。 首先添加權限 "permissions": ["contextMenus"], …

后端設計筆記13 FM

1.理論 2.實踐 LAB 報錯以后可以雙擊錯誤,便可以定位到錯誤,或者打開pattern查看 還可以analyse

閑庭信步使用SV搭建圖像測試平臺:第十九課——YCbCr圖像轉RGB圖像

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程文件請關注…

C++(智能指針)

智能指針 1.基礎: 1.1 概念 智能指針是用于自動管理動態分配內存的RAII(Resource Acquisition Is Initialization)對象。它們通過自動釋放內存來防止內存泄漏,是替代裸指針的安全工具。 1.2 解析 眾所周知,堆內存對象…

Sentinel 授權規則詳解與自定義異常處理

Sentinel 授權規則詳解與自定義異常處理 在微服務系統中,權限控制和訪問保護是至關重要的一環。本文將詳細介紹如何通過 Sentinel 的 授權規則(AuthorityRule) 控制資源訪問權限,并結合實際案例說明如何設置白名單與黑名單&#…

LeetCode Hot 100 最大子數組和

給你一個整數數組 nums ,請你找出一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 子數組是數組中的一個連續部分。 示例 1: 輸入:nums [-2,1,-3,4,-1,2,1,-5,4] 輸出:6…

Python UI自動化演進格局:從傳統庫到AI驅動的智能代理

引言 UI自動化的持久需求 在現代軟件工程和業務流程管理中,圖形用戶界面(GUI)自動化扮演著至關重要的角色。它不僅僅局限于軟件測試領域,更是機器人流程自動化(RPA)、自動化數據錄入、遺留系統集成以及在AP…

【Java面試】如何解決MQ死信隊列?

如何解決MQ死信隊列? 一、預防死信產生(從源頭減少死信) 消費者端健壯性優化 捕獲所有可能的異常,區分可恢復異常(如網絡超時)和不可恢復異常(如數據格式錯誤)。對可恢復異常實現自…

RGB+EVS視覺融合相機:事件相機的革命性突破?

一、單一EVS事件相機的原理 事件相機(EVS)是一種新型的視覺傳感器,其設計靈感來源于生物視覺系統。與傳統相機不同,事件相機并不以固定的幀率捕獲整個圖像,而是每個像素獨立工作,當檢測到亮度變化超過預設…

DBeaver 設置阿里云中央倉庫地址的操作步驟

DBeaver 設置阿里云中央倉庫地址的操作步驟(適用于解決驅動下載緩慢或失敗的問題) 一、最新阿里云 Maven 倉庫地址 主倉庫地址(推薦): http://maven.aliyun.com/nexus/content/groups/public/ 123 備用地址&#xff…

Qt:QCustomPlot庫的QCPAxis

在 QCustomPlot 中,QCPAxis 是圖表坐標系的核心組件,負責管理坐標軸的所有視覺和功能特性。它提供了豐富的定制選項,使開發者能夠創建高度專業化的數據可視化圖表。 核心功能概述 功能類別關鍵特性相關方法基本結構坐標軸位置、方向axisTyp…

七天學會SpringCloud分布式微服務——05——OpenFeign

1、OpenFeign實現遠程調用 1.1 services.pom引入依賴 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>1.2 在service-order微服務中新建feign.Product…

大語言模型的通用局限性與全球技術演進

基于行業最新數據修訂&#xff08;2025Q2&#xff09; 一、知識截止期&#xff1a;全球模型的進化差異 所有LLM都存在??知識截止期&#xff08;Knowledge Cut-off&#xff09;??&#xff0c;即模型訓練數據的時間上限。這在技術迭代飛快的軟件開發領域尤為致命——2023年后…

常見網絡安全威脅和防御措施

網絡安全威脅是一種技術風險&#xff0c;會削弱企業網絡的防御能力&#xff0c;危及專有數據、關鍵應用程序和整個 IT 基礎設施。由于企業面臨廣泛的威脅&#xff0c;因此他們應該仔細監控和緩解最關鍵的威脅和漏洞。網絡安全問題有七大類&#xff0c;它們都包括多種威脅&#…

人工智能和云計算對金融未來的影響

你有沒有想過&#xff0c;你的錢是否會由人工智能而不是銀行來管理&#xff1f;如果你的銀行不存在于真實的地方&#xff0c;而是存在于幾千公里之外的某臺大型超級計算機上&#xff0c;那會怎樣&#xff1f;這可能有一天會發生&#xff0c;讓我們看看它是如何發生的&#xff0…

Vue3——項目配置eslint+prettier

一、安裝依賴 pnpm add -D eslint prettier eslint-plugin-vue vue-eslint-parser typescript-eslint/eslint-plugin typescript-eslint/parser eslint-config-prettier eslint-plugin-prettier typescript-eslint二、創建或修改 eslint.config.cjs // eslint.config.cjs con…

人工智能編程三大核心流程詳解--機器學習、神經網絡、NLP自然語言處理

對于學習人工智能階段&#xff0c;代碼可以寫出來&#xff0c;主要是按照構建流程一步一步&#xff0c;所以本篇博客主要是通過三個大點來介紹&#xff1a;第一個點是機器學習中預測損失值與真實值之間的誤差流程&#xff1b;第二點是深度學習中神經網絡搭建流程&#xff1b;第…

《AI for Science:深度學習如何重構基礎科學的發現范式?》

前言 前些天發現了一個巨牛的人工智能免費學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 AI for Science&#xff1a;深度學習如何重構基礎科學的發現范式&#xff1f; 副標題&#xff1a;從費曼圖到神經微分方程&…

創客匠人:創始人 IP 打造引領知識變現新路徑?

在當下知識經濟蓬勃發展的時代&#xff0c;知識變現已成為眾多創作者和從業者關注的焦點。創客匠人作為行業內的重要參與者&#xff0c;為創始人 IP 打造與知識變現提供了獨特且有效的思路。? 創始人 IP 打造在知識變現中占據著關鍵地位。創客匠人認為&#xff0c;一個成功的…

JVM調優實戰 Day 7:JVM線程分析與死鎖排查

【JVM調優實戰 Day 7】JVM線程分析與死鎖排查 文章標簽 jvm調優, 線程分析, 死鎖排查, JVM監控, Java性能優化, JVM參數配置 文章簡述 在Java應用的高并發場景中&#xff0c;線程管理與死鎖問題往往是性能瓶頸的根源。本文作為“JVM調優實戰”系列的第7天&#xff0c;深入解析…