想象一下——你的 AI 助手剛寫出一段網絡調用代碼,你盯著那幾行,不知道它會不會在背后執行你沒允許的操作。這就是 Jacquard 的起點。它不是另一個“更安全”的通用編程語言,而是一個直接把“效果檢查”寫進語言血統的研究原型。沒錯,效果——比如訪問網絡、讀寫文件——必須顯式標注,運行時沒拿到授權就直接拒絕。這有點像給代碼上了鐐銬,但鐐銬是自己申請的。
這個項目來自 FriendMachine 的研究團隊,現在推送的是 0.1 版——明確寫在文檔里:不是生產語言,但端到端能跑。你可以在 Linux x86-64、macOS Intel 或 Apple Silicon 上一鍵安裝,然后運行一個階乘示例,預期輸出是 120。整個系統很小巧:一個緊湊的 .jac 表層語法、一個 OCaml 檢查器和 CPS 解釋器、一個會編譯出原生代碼的 AOT 后端、一套命令行工具、一個用 Jacquard 自己寫的標準庫,還有一個叫 Warp 的測試框架。從檢查到編譯再到測試,閉環已經轉起來了。
不過最抓人的地方不是“能跑”,而是它暴露了程序運行的三個維度:效果、不確定性和規范身份。先說效果——看一行函數簽名,就能知道它可不可以碰網絡:比如 `(text) ->{net} text`,那個 `{net}` 就在提醒你“這函數可能聯網”。動態代碼也一樣,沒加 `--allow` 參數就別想蒙混過關。這還不是操作系統沙箱,而是語言層面的強制執行,在研究型運行時里直接卡死。
再往深走一步,同一個程序可以跑在很多個“世界”里。現實網絡世界當然可以,但也能換成腳本假數據、上周的真實流量錄制、甚至一個概率模型。背后的機制叫處理器(handler),代碼完全不用改,只換處理器就行。以前要花大力氣 mock 的外部邊界,現在變成了換一下運行環境。想知道你的智能體在 API 宕機會怎么辦?普通測試一下就搞定了。
對于有限離散模型,Jacquard 還能枚舉出所有可能結果的精確概率。一個程序可以隨機加權選擇并記錄證據,然后枚舉功能會列出每個可達路徑及其確切概率。他們展示了一個修復演示:把一個失敗測試當作證據,就能算出哪些補丁還有可能存活,以及各自的可能性是多少。這不是模糊的“可能”,是帶數字的精確分布。
最后一點很程序員友好:重命名、改格式不會改變規范身份。Jacquard 算哈希時,看的是規范解析后的結構,而不是源文件字節。注釋、格式、出處和普通的本地或變量重命名全都會被抹掉;純測試只有到規范代碼或依賴真正變化時才會重新運行。這等于說,你隨手整理代碼、換個變量名,都不用擔心測試莫名其妙地重跑。
0.1 版雖然還帶著研究感,但已經把“AI 寫的代碼能不能信”這個老問題拉到了一個新的執行層面:不是看注釋里的免責聲明,也不是查日志,而是讓語言自己去告訴你能做什么、可能會發生什么、改動到底意味著什么。接下來如果這個思路往前走,或許以后代碼審查的界面里,效果邊界、可能世界和身份不變性會變成像今日的 lint 檢查一樣自然的基底。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.