Chuyển đến nội dung chính
Các ví dụ sẵn sàng sử dụng cho các tình huống phổ biến. Mỗi ví dụ cho thấy cách cài đặt và những gì bạn có thể mong đợi.

Thiết lập hooks cho Claude Code

Failproof AI tích hợp với Claude Code thông qua hệ thống hooks của nó. Khi bạn chạy failproofai policies --install, nó sẽ đăng ký các lệnh hook trong settings.json của Claude Code để kích hoạt trên mỗi lệnh gọi công cụ.
1

Cài đặt failproofai

npm install -g failproofai
2

Bật tất cả các chính sách tích hợp

failproofai policies --install
3

Xác minh rằng hooks đã được đăng ký

cat ~/.claude/settings.json | grep failproofai
Bạn sẽ thấy các mục hook cho các sự kiện PreToolUse, PostToolUse, NotificationStop.
4

Chạy Claude Code

claude
Các chính sách giờ đây chạy tự động trên mỗi lệnh gọi công cụ. Hãy thử yêu cầu Claude chạy sudo rm -rf / - nó sẽ bị chặn.

Thiết lập hooks cho Agents SDK

Nếu bạn đang xây dựng bằng Agents SDK, bạn có thể sử dụng hệ thống hook tương tự theo cách lập trình.
1

Cài đặt failproofai trong dự án của bạn

npm install failproofai
2

Cấu hình hooks trong agent của bạn

Truyền các lệnh hook khi tạo quy trình agent của bạn. Các hooks kích hoạt giống như trong Claude Code - thông qua JSON stdin/stdout:
failproofai --hook PreToolUse   # được gọi trước mỗi công cụ
failproofai --hook PostToolUse  # được gọi sau mỗi công cụ
3

Viết một chính sách tùy chỉnh cho agent của bạn

import { customPolicies, allow, deny } from "failproofai";

customPolicies.add({
  name: "limit-to-project-dir",
  description: "Giữ agent trong thư mục dự án",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    const path = String(ctx.toolInput?.file_path ?? "");
    if (path.startsWith("/") && !path.startsWith(ctx.session?.cwd ?? "")) {
      return deny("Agent bị hạn chế trong thư mục dự án");
    }
    return allow();
  },
});
4

Cài đặt chính sách tùy chỉnh

failproofai policies --install --custom ./my-agent-policies.js

Chặn các lệnh có tính chất phá hủy

Cấu hình phổ biến nhất - ngăn chặn agents thực hiện các thiệt hại không thể đảo ngược.
failproofai policies --install block-sudo block-rm-rf block-force-push block-curl-pipe-sh
Điều này làm gì:
  • block-sudo - chặn tất cả các lệnh sudo
  • block-rm-rf - chặn xóa tệp đệ quy
  • block-force-push - chặn git push --force
  • block-curl-pipe-sh - chặn ống dẫn các tập lệnh từ xa đến shell

Ngăn chặn rò rỉ bí mật

Dừng agents nhìn thấy hoặc rò rỉ thông tin xác thực trong kết quả đầu ra công cụ.
failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
Những cái này kích hoạt trên PostToolUse - sau khi một công cụ chạy, chúng sẽ làm sạch kết quả đầu ra trước khi agent nhìn thấy.

Nhận cảnh báo Slack khi agents cần chú ý

Sử dụng hook thông báo để chuyển tiếp cảnh báo nhàn rỗi đến Slack.
import { customPolicies, allow, instruct } from "failproofai";

customPolicies.add({
  name: "slack-on-idle",
  description: "Cảnh báo Slack khi agent đang chờ đầu vào",
  match: { events: ["Notification"] },
  fn: async (ctx) => {
    const webhookUrl = process.env.SLACK_WEBHOOK_URL;
    if (!webhookUrl) return allow();

    const message = String(ctx.payload?.message ?? "Agent đang chờ");
    const project = ctx.session?.cwd ?? "không xác định";

    try {
      await fetch(webhookUrl, {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          text: `*${message}*\nProject: \`${project}\``,
        }),
        signal: AbortSignal.timeout(5000),
      });
    } catch {
      // không bao giờ chặn agent nếu Slack không thể truy cập
    }

    return allow();
  },
});
Cài đặt nó:
SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --custom ./slack-alerts.js

Giữ agents trên một nhánh

Ngăn chặn agents từ việc chuyển đổi nhánh hoặc đẩy đến các nhánh được bảo vệ.
import { customPolicies, allow, deny } from "failproofai";

customPolicies.add({
  name: "stay-on-branch",
  description: "Ngăn chặn agent kiểm tra các nhánh khác",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolName !== "Bash") return allow();
    const cmd = String(ctx.toolInput?.command ?? "");
    if (/git\s+checkout\s+(?!-b)/.test(cmd)) {
      return deny("Giữ trên nhánh hiện tại. Tạo một nhánh mới bằng -b nếu cần.");
    }
    return allow();
  },
});

Yêu cầu kiểm tra trước khi commit

Nhắc nhở agents chạy các kiểm tra trước khi commit.
import { customPolicies, allow, instruct } from "failproofai";

customPolicies.add({
  name: "test-before-commit",
  description: "Nhắc nhở agent chạy các kiểm tra trước khi commit",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolName !== "Bash") return allow();
    const cmd = String(ctx.toolInput?.command ?? "");
    if (/git\s+commit/.test(cmd)) {
      return instruct("Chạy các kiểm tra trước khi commit. Sử dụng `npm test` hoặc `bun test` trước tiên.");
    }
    return allow();
  },
});

Khóa kho lưu trữ sản xuất

Commit một cấu hình ở cấp độ dự án để mỗi nhà phát triển trong đội của bạn nhận được các chính sách tương tự. Tạo .failproofai/policies-config.json trong kho lưu trữ của bạn:
{
  "enabledPolicies": [
    "block-sudo",
    "block-rm-rf",
    "block-force-push",
    "block-push-master",
    "block-env-files",
    "sanitize-api-keys",
    "sanitize-jwt"
  ],
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "release", "production"]
    }
  }
}
Sau đó commit nó:
git add .failproofai/policies-config.json
git commit -m "Add failproofai team policies"
Mỗi thành viên trong đội có failproofai được cài đặt sẽ tự động áp dụng các quy tắc này.

Thêm ví dụ

Thư mục examples/ trong kho lưu trữ chứa:
TệpNhững gì nó cho thấy
policies-basic.jsCác chính sách khởi động - chặn ghi sản xuất, force-push, tập lệnh ống dẫn
policies-notification.jsCảnh báo Slack cho thông báo nhàn rỗi và kết thúc phiên
policies-advanced/index.jsNhập cũng từ các tệp khác, hooks không đồng bộ, làm sạch kết quả đầu ra PostToolUse, xử lý sự kiện Stop