05 · 劃邊界
邊界不是"告訴它別做什麼",是"讓它做不了"。提示詞裡的禁止是軟約束,跑三十圈之後可能就忘了;工具和權限層面的限制是硬約束,忘不了。能用硬的,就不要用軟的。
三層邊界,硬度遞減
| 層 | 怎麼做 | 硬度 |
|---|---|---|
| ① 不給 | 根本不提供這個工具、這個目錄、這個帳號權限 | 硬。它做不到 |
| ② 攔一道 | 工具照給,但執行前必須人點頭 | 硬。它提得出,但過不去 |
| ③ 說一句 | 提示詞裡寫"不要做 X" | 軟。多數時候有效,但會失效 |
設計邊界時,從上往下試:
這件事能不能靠"不給"解決? 能,就到此為止,別再往下。 不能(因為它確實需要這個能力)→ 能不能加一道人工確認? 再不能 → 才輪到寫在提示詞裡。
大多數人的順序是反的:先在提示詞裡寫一長串"不許",然後發現它偶爾還是做了。
① 不給:從權限開始
檔案
給它能讀什麼、能寫什麼,精確到目錄:
❌ 給它整個使用者目錄的讀寫權限
✅ 只讀:./docs/、./data/
可寫:./output/ ← 一個專門的輸出目錄
其餘:不可訪問那個專門的輸出目錄很關鍵:它寫壞了,你刪掉重來就行,不影響任何原始材料。
帳號與憑據
給它的每一個 key、每一個帳號,問一句:這個憑據能幹的事,是不是遠超它需要的?
❌ 給一個管理員 API key,因為"這樣最省事"
✅ 建一個只讀的、只能訪問特定幾張表的帳號憑據的權限範圍,就是它能造成的破壞範圍上限。
網路
能不能上網、能上哪些站,是一條很值得設的邊界:
- 完全不聯網:處理本地材料的 Agent,這樣最安全。
- 白名單:只能訪問你列出的幾個域名。
- 隨便上:風險最高。它可能讀到帶指令的內容(04 章那個坑),也可能把資料發出去。
沙箱
如果它要執行命令或跑程式碼,必須在沙箱裡——一個隔離的環境,跑壞了不影響你的機器。
這一條沒有折中方案
"我看著它跑,不對就 Ctrl+C" 不是方案。它一圈可能只要兩秒。
能執行任意命令的 Agent,只能在沙箱裡跑。
② 攔一道:什麼必須人點頭
這個清單基本不用討論:
| 動作 | 為什麼 |
|---|---|
| 往外發(郵件、訊息、提交、釋出) | 收件人不是你自己,出去了收不回 |
| 刪除、覆蓋 | 不可逆 |
| 花錢(下單、支付、開資源) | 不可逆,且金額可能失控 |
| 改配置、改權限 | 影響面超出這一次任務 |
| 動生產環境的任何東西 | 不解釋 |
怎麼"攔"
兩種做法:
同步攔:Agent 提出要執行,流程暫停,等你確認。適合動作少的場景。
攢起來攔:Agent 不直接執行,而是把要做的事寫成一份計劃(03 章最後那節),跑完之後你一次看完、一次確認、批次執行。動作多的時候這種遠好用——十次彈窗確認,人第三次就開始亂點了。
③ 說一句:提示詞裡的邊界怎麼寫才有效
軟約束也要寫,只是別指望它兜底。三條寫法:
一、寫成具體動作,不是原則。
❌ 注意保護敏感資訊。
✅ 不要在輸出裡寫出完整的手機號、身份證號、銀行卡號——
一律脫敏成前三後四,中間用 * 代替。二、配上出路(提示詞篇 06 章那條鐵律)。
❌ 不要修改原始檔案。
✅ 不要修改 ./data/ 下的任何檔案。需要改動時,
把改動後的版本寫到 ./output/ 下,檔名加 .modified 字尾。三、在長跑裡重複。 Agent 跑三十圈,第一圈的約束早被擠到邊上了(07 章)。關鍵約束要麼放進系統提示(每輪都在),要麼在工具返回裡反覆帶上。
一個容易漏的邊界:範圍蔓延
前面講的都是"別碰什麼"。還有一類邊界是"別越做越多":
你讓它:查清三家競品的定價。
它順手:把三家的功能對比也做了,把市場份額也查了,
還寫了一份"我們的定價建議"。聽起來像加分,實際上是問題:多出來的部分你沒驗收標準,而它們和你要的東西混在一起交付,你還得花時間分辨哪些是你要的。
解法在目標那一章:
只做上面列出的這些,不要擴充套件範圍。
你認為值得做但我沒要求的事,**列在最後作為建議,不要直接做**。一張速查表
| 你的場景 | 建議的邊界 |
|---|---|
| 只處理你給的材料,不聯網 | 不給網路工具;只讀輸入目錄;輸出到獨立目錄 |
| 要查公開資訊 | 只讀工具;域名白名單或至少禁止提交表單;外部內容標成資料 |
| 要讀內部系統 | 只讀帳號,權限收到具體範圍;不給寫工具 |
| 要寫檔案 / 改程式碼 | 沙箱 + 獨立輸出目錄 + 版本控制(能 diff、能回滾) |
| 要發訊息 / 發郵件 | 必須人工確認;優先用"產出計劃再批次執行" |
| 要跑命令 | 必須沙箱;命令白名單;禁止網路 |
一句話收口
提示詞管的是它想不想,權限管的是它能不能。跑三十圈之後,只有後者還站得住。