Examples
ReviewGuardPlugin 场景
用一个 guard 场景说明 plugin 如何在现有链路里做阻断型检查
ReviewGuardPlugin 场景
场景
你希望在某条运行链路里强制执行一条规则:
- 如果请求没有带
reviewed = true - 就直接阻断后续执行
这类“前置阻断判断”就是最典型的 guard 场景。
示例
import { Agent, type Plugin } from "@downcity/agent";
export const reviewGuardPlugin: Plugin = {
name: "review_guard",
title: "Review Guard",
description: "Blocks requests that were not reviewed.",
hooks: {
guard: {
"review.require_checked": [
async ({ value }) => {
const body = value as { reviewed?: unknown };
if (body.reviewed !== true) {
throw new Error("review is required before continuing");
}
},
],
},
},
};
const agent = new Agent({
id: "repo-helper",
path: "/path/to/project",
tools: {},
plugins: [reviewGuardPlugin],
});
await agent.plugins.guard("review.require_checked", {
reviewed: true,
});为什么这里不是 pipeline
因为你不是想“改值”,而是想:
- 允许继续
- 或者直接阻断
这正是 guard 的语义。