Abe

io.github.flowinfosystems-index由 GitHub 账号 flowinfosystems-index 发布v0.2.3更新于 Oct 24, 2026

Free, local check before an AI agent acts: your rules return ACT, BLOCK or ESCALATE.

概览

AI 生成的概览

Abe 是一个免费的本地护栏,在 AI 代理执行操作前按你的 YAML 规则检查,并返回 ACT、BLOCK 或 ESCALATE。

可以做什么
Abe 在本机以不到一毫秒的时间,按纯 YAML 策略规则评估代理拟执行的操作,返回 ACT、BLOCK 或 ESCALATE,并给出原因码和防篡改记录(R2、R4)。MCP 服务器提供一个检查工具(fjp_check_action)(R42)。策略支持按代理授权、必需证据、风险与不可逆阈值,输入异常时默认失败关闭(R16、R26、R28)。每次调用都返回带哈希校验的记录,可选 Ed25519 签名,可校验并发送到 SIEM(R13、R45)。
适用场景
当 AI 代理可能执行有后果的操作——支付发票、购买服务器、删除数据表、给客户发邮件——而你希望每次操作前都有确定且可审计的判定时,适合使用(R3、R11)。也适合希望先回放历史请求测试策略变更,或以 shadow 模式并行运行于现有审批流程、确认后再启用的团队(R31、R33)。
运行要求
本地进程,仅桌面端,通过 uvx 或 pip 安装 abe-ai(PyPI);MCP 服务器需安装 mcp 附加组件(R42)。必须提供 ABE_POLICY,即用 abe init 生成的 abe-policy.yaml 的绝对路径(V1.1)。本地检查无需账号、API 密钥、网络或模型(R9)。可选:设置 ABE_RESOLVER=flow 并提供 FLOW_API_KEY 密钥,将升级项发送给 Flow(V2.1、V3.1)。
安装前请注意
仅当设置 ABE_RESOLVER=flow 时,升级项才会(脱敏后)发送给 Flow;ACT 与 BLOCK 永不离开本机(R55、R56)。FLOW_API_KEY 是计费凭据(fjp_live_...),每次 Flow 判定约花费 0.03 至 0.05 美元(R20、V3.1)。需要人工审批的升级项不会被自动裁决(R57)。判定会拦截真实操作(付款、删除、发邮件),策略写错可能误放行或误拦截,建议先用 replay 与 shadow 模式验证(R31、R33)。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Abe,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Abe

[Abe, a friendly traffic light giving a thumbs up]

Act. Block. Escalate.

Abe is a free, open-source guardrail that checks every AI agent action before it happens.

Your agent is about to pay an invoice, buy servers, delete a table or email a customer. Abe checks the action against your rules in under a millisecond, on your machine, and answers ACT, BLOCK or ESCALATE, with a tamper-evident record of why.

[Watch the demo: an AI agent tries to spend $12,500 twice]

▶ Watch the 40-second demo: an AI agent tries to spend $12,500 twice. Rules decide the easy calls; Flow catches the duplicate and approves the real renewal. (Run it yourself)

Free. Really.

Apache-2.0. No account, no API key, no network, no model, no usage limits. Every check runs on your machine, at no cost, forever.

Why teams put Abe in front of their agents

  • Stops expensive mistakes: duplicate payments, over-budget purchases, force-pushes to main, DROP TABLE in production.
  • Same answer every time: plain YAML rules you can read, test, and replay against past decisions before going live.
  • Proof for auditors: every decision gets a hash-verified record (optionally Ed25519-signed) showing which rule fired and why.
  • Works with any agent: Python, TypeScript, a local HTTP sidecar, Docker, or MCP (Claude, Cursor and other MCP clients).
  • No-risk rollout: shadow mode runs beside your current approval process and shows where Abe would agree.
  • Fails closed: bad input or a broken rule returns ESCALATE, never ACT.

Pay only for the close calls (optional)

When rules can't decide, Abe returns ESCALATE. By default that goes to a person. Add --resolver flow and only that action is sent to Flow (redacted), which returns a decision, a reason, and what would prove it wrong, for about $0.03 to $0.05 each. ACT and BLOCK never leave your machine. Details below.

Quick start

bash
pip install abe-ai            # or: npm install abe-aiabe init                      # writes abe-policy.yaml + request.jsonabe check request.json
text
Decision: ESCALATEReason: FINANCIAL_THRESHOLD_EXCEEDEDRules: purchase_review_limitRisk: MEDIUMRecord: jgr_01M3Q4...

Python

python
from abe import Abe
abe = Abe("abe-policy.yaml")
result = abe.check(    action={"type": "wire_transfer", "amount": 50000},    context={"agent_id": "finance-agent"},)
if result.decision == "ACT":    ...                                   # execute exactly as evaluatedelif result.decision == "BLOCK":    ...                                   # do not execute; tell the user result.reason_codeelse:  # ESCALATE    ...                                   # hold; ask a human, or let a resolver decide
result.record.to_dict()                   # the Judgment-Grounded Record (store it, ship it to your SIEM)

Claude Agent SDK

python
from claude_agent_sdk import ClaudeAgentOptionsfrom abe import Abefrom abe.integrations.claude_agent_sdk import abe_hooks
options = ClaudeAgentOptions(hooks=abe_hooks(Abe("abe-policy.yaml"), agent_id="ops-agent"))

Every tool call is checked before it runs. BLOCK → deny with Abe's reason; ESCALATE → deny, ask or defer (hand it to a person); ACT → your normal permissions. Tool inputs are action fields (action.command, action.amount). See examples/claude_agent_sdk.

TypeScript

typescript
import { Abe } from "abe-ai";
const abe = new Abe({ policy: "./abe-policy.yaml" });const result = await abe.check({  action: { type: "purchase", amount: 12500, currency: "USD" },  context: { agent_id: "procurement-agent", principal_id: "user_123" },});console.log(result.decision);             // "ESCALATE"

A policy

yaml
version: "0.1"defaults: { unmatched: ESCALATE }           # nothing matched -> needs judgment (fail closed)rules:  - id: purchase_hard_limit    when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 100000 } ] }    decision: BLOCK    reason_code: HARD_POLICY_VIOLATION  - id: purchase_review_limit    when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 10000 } ] }    decision: ESCALATE    reason_code: FINANCIAL_THRESHOLD_EXCEEDED  - id: routine_purchase    when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: lte, value: 500 } ] }    decision: ACTjudgment_required:  - action.type: terminate_employee

Also: authorization per agent, required evidence, risk and irreversibility thresholds, confidence minimums. BLOCK beats ESCALATE beats ACT. Bad input or a broken rule returns ESCALATE / EVALUATION_FAILURE, never ACT. Full reference: SPEC.md.

Test before you enforce

Replay saved requests through a policy before it touches real money. Label each case with what your people decided and Abe reports where it disagrees; compare against the live policy to see exactly which decisions a change moves.

bash
# cases.jsonl: one request per line, or {"id": "inv-1042", "request": {...}, "expected": "BLOCK"}abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml#   Replayed 1204 case(s) against ...      ACT 1088   BLOCK 31   ESCALATE 85#   Changed vs baseline: 3                 inv-1042: ACT -> ESCALATE  [purchase_review_limit]#   Agreement with expected: 1198/1204 (99.5%)abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml --fail-on-change   # CI: exit 1 if anything moved

Shadow mode runs Abe beside your current approval process. Decisions, results and exit codes are exactly what enforce mode would return, and every record is marked "mode": "shadow". Keep approving the way you do today, report what your people decided, and each record's falsifier shows whether they agreed.

python
from abe.stores import SQLiteStore
abe = Abe("abe-policy.yaml", mode="shadow", store=SQLiteStore("abe.db"))    # or: abe serve --shadow · ABE_MODE=shadowr = abe.check(action={"type": "purchase", "amount": 48000}, context={"agent_id": "ap-agent"})# ... your existing approval happens ...abe.record_outcome(r.records[0], "approved")    # people approved; if Abe said BLOCK, the falsifier triggers

When the agreement rate is where you want it, drop mode="shadow" and Abe enforces.

Every way to run it

Librarypip install abe-ai · npm install abe-ai
CLIabe check · replay · validate-policy · validate-record · conformance · keygen
Local HTTP sidecarabe serve --policy abe-policy.yaml → POST http://127.0.0.1:8787/v1/check (any language)
Docker sidecardocker run -e ABE_TOKEN=… -v $PWD:/policy:ro -p 127.0.0.1:8787:8787 ghcr.io/flowinfosystems-index/abe
Claude Agent SDK hookpip install "abe-ai[claude]" → ClaudeAgentOptions(hooks=abe_hooks(abe)) (example)
MCP serverpip install "abe-ai[mcp]" → abe mcp --policy /abs/abe-policy.yaml (tool: fjp_check_action)
+ Flow on escalationsadd --resolver flow (or ABE_RESOLVER=flow) with FLOW_API_KEY to check, serve, mcp or the Docker image

Records you can audit

Every call returns a record with the decision, every matched rule, the exact policy hash, the request hash, and a SHA-256 record_hash (optionally Ed25519-signed with abe keygen). Records never change: outcomes and resolutions are appended as linked records. Each one is a valid FJP-CONF v0.1 Judgment-Grounded Record.

bash
abe check request.json --record-out jgr.json --sign-key abe-signing-key.pemabe validate-record jgr.json --public-key abe-signing-key.pub.pem

When rules aren't enough: Flow

Abe is deliberately useful without Flow. When it returns ESCALATE, you can hand that one action to Flow's judgment service and get a verb, a reason and a falsifiable record back:

python
from abe import Abefrom abe_flow import FlowResolver                     # pip install abe-flow
abe = Abe("abe-policy.yaml", resolver=FlowResolver(api_key=os.environ["FLOW_API_KEY"]))

No Python? The CLI, sidecar and MCP server take the same resolver (pip install "abe-ai[mcp,flow]"):

json
{"mcpServers": {"abe": {"command": "abe",  "args": ["mcp", "--policy", "/abs/abe-policy.yaml", "--resolver", "flow"],  "env": {"FLOW_API_KEY": "fjp_live_..."}}}}

abe serve --resolver flow and docker run -e ABE_RESOLVER=flow -e FLOW_API_KEY=… … work the same way. If Flow is out of credits, the MCP result says so and links to the refill page; the action stays ESCALATE.

ACT and BLOCK never leave your machine. Only escalations are sent (redacted), and if Flow is unreachable the answer simply stays ESCALATE. Human-approval escalations are never auto-resolved.

Conformance

bash
abe conformance --bench        # FJP-CONF v0.1 Gate profile, Level 3 — 160 checks, offline

Repository

SPEC.md                  the normative specificationschemas/                 JSON Schemas (request, response, record, policy)python/                  abe-ai (PyPI): core, CLI, HTTP, MCP, stores, signing, conformancetypescript/              abe-ai (npm): same API, same records, same hashesflow-resolver/           abe-flow (PyPI): Gate → Flow for ESCALATE onlyconformance/fixtures/    golden decisions + canonical-JSON vectors shared by every SDKexamples/                the $12,500 demo, purchasing, software agent, physical agent, travel (+ Judd), Flow

Apache-2.0. FJP™, Abe™ (Abe) and FJP-CONF™ are trademarks of Flow Information Systems — see TRADEMARKS.md.

来源:README.md,提交 9dd920e

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.3最新Oct 13, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分