AI agents อย่าง Codex หรือ Claude Code เป็น เก่งมากที่การรัน bash commands การค้นหาผ่าน filesystems, grepping, ได้ context ผ่าน shell
ดังนั้นผมอยากลอง: ถ้าทั้ง filesystem ที่ AI agent ทำงานอยู่ใน Redis แทน disk จะเป็นอย่างไร? ถ้าในมุมมองของ AI agent มันดูเหมือนใช้ filesystem อื่นๆ แต่จริงๆ มันคือ in-memory store ที่เร็วมาก?
นี่คือวิธีที่ผมอยากให้มันทำงาน 👇

เมื่อ agent รัน grep command (ซึ่งพวกเขาเก่งมาก) เรา intercept มันด้วย library just-bash ของ Vercel และแปลงเป็น Redis Search query
แบบนั้น เราไม่ต้องการ sandboxes สำหรับ read-only access และ (ทฤษฎีแล้ว) ควร เร็วมาก และ Mintlify ทำอย่างนี้ไปแล้ว
The Idea (ไอเดีย)
เพื่อดูว่าสามารถทำงานได้ไหม ผมแยก logic ออกเป็น 3 ส่วน
- แต่ละไฟล์คือ Redis JSON document เราเก็บ path, content, size, timestamps ทั้งหมดใต้ key เดียว
- Manifest ติดตาม directory tree Redis key หนึ่งเก็บโครงสร้างโฟลเดอร์ทั้งหมด ทำให้
lsและtreeไม่ต้อง scan - Redis Search สำหรับ grepping ทำให้
grepไม่ต้องอ่านทุกไฟล์เพื่อหา match
และแค่นี้! ด้วยสิ่งเหล่านี้เพียงไม่กี่อย่าง เราเข้าใกล้ full parity ของ regular (read-only) filesystem ได้มาก แต่เร็วกว่ามาก ผมตัดสินใจไม่ implement writes ตอนนี้
The Biggest Challenge: Grepping (ความท้าทาย最大: Grepping)
Commands อย่าง cat หรือ ls ค่อนข้าง straightforward เรา entweder อ่านไฟล์เดียวทั้งหมด หรือ list directory structure ทั้งคู่ง่ายกับ Redis Commands อย่าง sed -n '1,240p' ซับซ้อนกว่า แต่เราทำได้โดยใช้ Sorted Sets
Grepping แตกต่างออกไป grep -R "oauth" /workspace ปกติต้องอ่านทุกไฟล์ใต้ directory นั้น ใน virtual filesystem หมายถึง pull ทุก document ออกจาก Redis แค่เพื่อเช็คว่ามีคำหรือไม่ นั่นช้าและแพง
แตเรา introduce Upstash Redis Search ไปเมื่อเร็วๆ นี้ rust-based, extremely fast และ efficient ทางค้นหาผ่าน Redis data ด้วย Redis Search เราสามารถ intercept grep ก่อนรัน แปลงเป็น query และได้ fast results โดยไม่ต้อง fetch files
Search query ดูประมาณนี้:
import { Redis } from "@upstash/redis"; const redis = new Redis.fromEnv(); const index = redis.search.index({ name: "vfs" }); const matches = await index.query({ filter: { $must: [ { workspaceId: "demo" }, { kind: "file" }, { content: { $phrase: "oauth" } }, ], }, select: { path: true }, });
Agent ยังเห็น output เดียวกับ shell ปกติ
การให้ Agent ได้ Shell
ชิ้นสุดท้ายคือ wiring นี้เข้ากับ just-bash ให้ agent รัน commands ติดได้ Inspired by how Mintlify built their assistant's filesystem เรา mount Redis-backed fs adapter ที่ /workspace บน MountableFs:
import { InMemoryFs, MountableFs } from "just-bash"; const mountableFs = new MountableFs({ base: new InMemoryFs() }); mountableFs.mount("/workspace", redisFs); // redisFs คุยกับ Upstash const bash = new Bash({ fs: mountableFs, cwd: "/workspace" });
เมื่อ agent รัน cat /workspace/src/index.ts readFile call นั้นไปตรง Redis grep ถูก intercept และ redirect ไป Redis Search
จากมุมมองของ agent มันแค่ shell ls, cat, grep, find ทุกอย่างทำงาน ตอนเราใส่เข้า Vercel AI SDK เป็น bash tool เรามี agent ที่ explore codebase ที่อยู่ทั้งหมดใน Redis
ผมได้ไอเดียอย่างไร
หนึ่ง บทความเก๋ของ Mintlify ที่ลิงก์ข้างต้น สอง ส่วนใหญ่ agent sandboxes หนัก เรา boot container, mount disk และจ่ายค่าใช้จ่ายทั้งหมด ไม่ว่าจะ agent สัมผัสไฟล์เดียวหรือพัน
Virtual filesystem ด้วย Redis always on, globally replicated, durable และ expensive operation ที่สุด (searching across files) เป็นสิ่งที่ Redis Search เก่ง
Cheers 🙌 Josh