Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Thiết kế hệ thống tệp trong bộ nhớ nhanh như chớp cho tác nhân AI bằng Redis

Các tác nhân AI như Codex hay Claude Code đương nhiên cực kỳ giỏi trong việc chạy các lệnh bash . Tìm kiếm thông qua hệ thống tập tin, grpping, lấy ngữ cảnh thông qua shell.

Vì vậy, tôi muốn thử:điều gì sẽ xảy ra nếu toàn bộ hệ thống tập tin mà tác nhân AI hoạt động trên Redis thay vì trên đĩa? Điều gì sẽ xảy ra nếu, đối với tác nhân AI, có vẻ như nó đang sử dụng bất kỳ hệ thống tệp nào khác nhưng thực ra đó là một kho lưu trữ trong bộ nhớ cực nhanh?

Đây là cách tôi muốn nó hoạt động 👇

Thiết kế hệ thống tệp trong bộ nhớ nhanh như chớp cho tác nhân AI bằng Redis

Khi tác nhân chạy một lệnh grep (tất cả chúng đều đặc biệt), chúng tôi sẽ chặn nó bằng just-bash của Vercel thư viện và dịch nó sang truy vấn Redis Search.

Bằng cách đó, chúng tôi sẽ không cần bất kỳ hộp cát nào để truy cập chỉ đọc và (về lý thuyết) nó sẽ nhanh hơn nhiều . Và hóa ra Mintlify đã làm điều gì đó tương tự như thế này.

Ý tưởng

Để xem điều này có hiệu quả không, tôi chia logic thành ba phần

  1. Mỗi tệp là một tài liệu Redis JSON . Chúng tôi lưu trữ đường dẫn, nội dung, kích thước, dấu thời gian, tất cả cùng nhau dưới một khóa.
  2. Tệp kê khai theo dõi cây thư mục . Một khóa Redis giữ toàn bộ cấu trúc thư mục nên lstree không bao giờ phải quét.
  3. Redis Tìm kiếm grpping . Lối này grep không cần phải đọc từng tệp để tìm kết quả phù hợp.

Và thế là xong! Với rất ít thứ này, chúng ta có thể tiến rất gần đến mức tương đương hoàn toàn của một hệ thống tệp thông thường (chỉ đọc), nhưng nhanh hơn rất nhiều. Tôi quyết định không thực hiện việc viết vào lúc này.

Thách thức lớn nhất:thu thập dữ liệu

Các lệnh như cat hoặc ls khá đơn giản. Chúng tôi đọc toàn bộ một tệp hoặc liệt kê cấu trúc thư mục, cả hai đều dễ thực hiện với Redis. Các lệnh như sed -n '1,240p' phức tạp hơn một chút, nhưng chúng ta hoàn toàn có thể làm cho chúng hoạt động bằng cách sử dụng Bộ sắp xếp.

Grepping có một chút khác biệt. Một grep -R "oauth" /workspace bình thường phải đọc mọi tập tin trong thư mục đó. Trong hệ thống tệp ảo có nghĩa là kéo mọi tài liệu ra khỏi Redis chỉ để kiểm tra xem nó có chứa từ đó hay không. Điều đó thực sự rất chậm và tốn kém.

Nhưng gần đây chúng tôi đã giới thiệu Upstash Redis Search, một cách dựa trên cơ sở dữ liệu, cực kỳ nhanh chóng và hiệu quả để tìm kiếm thông qua dữ liệu Redis. Với Redis Search, chúng tôi có thể chặn grep trước khi chạy, hãy dịch nó thành một truy vấn và nhận được kết quả nhanh chóng mà không cần tìm nạp tệp.

Truy vấn tìm kiếm trông giống như thế này:

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 },
});

Tác nhân vẫn thấy kết quả đầu ra tương tự như từ một trình bao bình thường.

Tặng đại lý một cái vỏ

Phần cuối cùng là nối dây này tới just-bash để một tác nhân có thể chạy các lệnh chống lại nó. Lấy cảm hứng từ cách Mintlify xây dựng hệ thống tệp trợ lý của họ, chúng tôi gắn bộ điều hợp fs được Redis hỗ trợ tại /workspace trên MountableFs :

import { InMemoryFs, MountableFs } from "just-bash";
 
const mountableFs = new MountableFs({ base: new InMemoryFs() });
mountableFs.mount("/workspace", redisFs); // redisFs talks to Upstash
 
const bash = new Bash({ fs: mountableFs, cwd: "/workspace" });

Khi tác nhân chạy cat /workspace/src/index.ts , readFile đó cuộc gọi sẽ chuyển thẳng tới Redis. grep bị chặn và chuyển hướng đến Redis Search.

Từ góc độ của đại lý, nó chỉ là một cái vỏ. ls , cat , grep , find , tất cả đều hoạt động. Khi chúng tôi đưa nó vào Vercel AI SDK dưới dạng bash công cụ này, chúng tôi có một nhân viên có thể khám phá cơ sở mã hoạt động hoàn toàn trong Redis.

Làm sao tôi nảy ra ý tưởng

Đầu tiên, bài viết tuyệt vời từ Mintlify mà tôi đã liên kết ở trên. Và thứ hai, hầu hết các hộp cát đại lý đều nặng. Chúng tôi khởi động một thùng chứa, gắn đĩa và trả chi phí cho tất cả những việc đó cho dù tác nhân chạm vào một hay một nghìn tệp.

Hệ thống tệp ảo với Redis luôn được bật, được sao chép toàn cầu, bền bỉ và hoạt động tốn kém nhất (tìm kiếm trên các tệp) là hoạt động tuyệt vời nhất của Redis Search.

Chúc mừng 🙌Josh