Tool: bash — read-only inspection และ fallback เมื่อ RAG/MCP ใช้ไม่ได้

ภาพประกอบ: Tool: bash — read-only inspection และ fallback เมื่อ RAG/MCP ใช้ไม่ได้

bash ของ Agent Lite ไม่ใช่ shell อิสระ แต่เป็น read-only inspection tool ที่มี allow-list ของ executable และ macOS sandbox-exec เป็น backstop

รุ่นปัจจุบันเพิ่มบทบาทสำคัญอีกอย่าง: ถ้า Knowledge Base MCP (lite-rag) ไม่มีหรือเชื่อมต่อไม่ได้ Agent Lite สามารถ fallback มาค้นด้วย bash ได้ โดยต้องรักษา scope เดิม

ใช้เมื่อไร

กรณีหลัก:

  • ผู้ใช้สั่งให้ใช้ bash/terminal โดยตรง
  • ผู้ใช้ระบุว่า “นอก RAG / ไม่ใช้ RAG / นอกฐานความรู้”
  • ต้อง inspect project/repository ด้วยคำสั่งอ่านข้อมูล
  • RAG/MCP unavailable และต้องมี fallback เพื่อค้นข้อมูล local ใน scope เดิม

สำหรับไฟล์ทั่วไปบน Desktop/Documents ถ้าไม่ได้สั่ง bash ตรงๆ ระบบควรใช้ local_search ก่อน

Fallback ต้องไม่ขยาย scope

ถ้า lite-rag.rag_search ใช้ไม่ได้:

KB request        → bash ค้นเฉพาะ rag_document/
project request   → bash ค้นเฉพาะ project root
local file search → ยังจำกัด Desktop/Documents ตาม routing

ห้ามตีความว่า “RAG พัง” = “ค้นทั้งเครื่องได้” และห้ามเปลี่ยนไปใช้ web search แทนข้อมูล local

Allow-list เป็น policy หลัก

คำสั่งที่รองรับเป็นกลุ่มอ่าน/ค้น เช่น:

cat date df du echo find git grep head hostname id ls
mdfind pwd rg sort sw_vers tail uname uptime wc whoami

คำสั่งอื่นถูกปฏิเสธโดย default ไม่ใช่รอ blacklist เฉพาะคำอันตราย

นอกจากนี้ยังมีกฎเฉพาะ เช่น:

  • find ห้าม -delete, -exec, -execdir และรูปแบบเขียนไฟล์
  • rg ห้าม --pre
  • sort ห้าม -o, --output, --compress-program
  • git จำกัดเฉพาะ subcommand อ่านข้อมูล เช่น status, diff, log, show, grep, ls-files, rev-parse, branch
  • shell redirect/chaining/substitution ถูกบล็อก
  • path operands ผ่าน sensitive-path policy ก่อนรัน

macOS sandbox เป็นชั้นอิสระ

แม้ Python validator จะพลาด คำสั่งยังถูกครอบด้วย sandbox ที่ deny file writes, deny network และ deny read บาง sensitive directories

จึงเป็น defense-in-depth: policy ชั้น Python กับ OS sandbox ไม่พึ่งกันชั้นเดียว

Retry ได้ แต่ต้องเปลี่ยนคำสั่งจริง

ระบบแยก “ใช้ tool เดิม” ออกจาก “ทำสิ่งเดิมซ้ำ”

  • exact command เดิมติดกัน → ถูกหยุดเร็ว
  • command เปลี่ยนจริง เช่นแก้ path/pattern/scope → ลองต่อได้ภายใต้ per-tool quota

ค่า default ปัจจุบันให้ tool เดิมที่เปลี่ยน arguments จริงทำงานต่อได้สูงสุด 10 ครั้งต่อ turn แทนการบล็อกเพียงเพราะชื่อ tool เหมือนเดิม

Runtime path ไม่ hardcode

system prompt ฉีด OS, architecture, account, Home, Desktop, Documents และ project path ที่ตรวจจากเครื่องตอนเริ่มโปรแกรม โมเดลจึงถูกสั่งให้ใช้ absolute path จาก runtime จริง และใช้ syntax แบบ macOS/BSD เมื่ออยู่บน Mac

Output ยังผ่าน DLP

ผลลัพธ์ที่ได้จาก command ยังถูกตรวจ sensitive content/path ก่อนคืนเข้า conversation เพื่อกัน credential/token/private-key shaped data หลุดผ่าน tool output

อ่านต่อ

ความคิดเห็น

กำลังโหลดความคิดเห็น...