内容
<p align="center"><strong>Marchward</strong> · AI 代理运行时权限控制</p>
# Marchward
**控制 AI 代理可以执行的操作**。Marchward 位于代理的工具调用之前,根据策略决定每个调用是否运行、暂停等待人工审批或被阻止,并生成一个不可篡改的记录。自托管,Apache-2.0 许可。
> 输出防护措施检查代理的输出内容(有毒性、个人敏感信息、话题)。Marchward 控制代理可以执行的操作(支出、删除、行动)。仅输出检查是不够的:对代理输出的检查无法阻止仍然拥有权限的代理进行不同的调用。Marchward 控制的是操作本身。
为已经在生产环境中运行代理的团队(LangGraph、LangChain、原始 SDK、任何 MCP 服务器或来自任何运行时的单个 HTTP 调用)而设计,这些团队需要代理自主运行,但不能随意花费预算、执行不可逆操作或在没有审计追踪的情况下执行操作。
## 快速开始:60 秒控制代理(完全本地,无需账户)
`marchward-proxy` 将任何 MCP 服务器作为子进程,并根据您的策略评估每个 `tools/call` 调用,然后再运行(阻止、允许或暂停等待人工审批),完全在您的机器上,使用您自己的凭证。
```bash
# 编写策略(升级任何破坏性操作,允许其他操作)
cat > policy.json <<'EOF'
{ "rules": [
{ "match": { "toolPattern": "*delete*" }, "decision": "ESCALATE" },
{ "match": { "toolPattern": "*" }, "decision": "ALLOW" }
]}
EOF
# 将 Marchward 放在代理的 MCP 服务器前面,本地模式,无 API 调用
npx -p @marchward/proxy marchward-proxy \
--command "node my-mcp-server.js" \
--policy-file ./policy.json \
--local
```
现在,您的代理的每个工具调用都经过策略检查,并记录在本地不可篡改(哈希链)的审计日志中,您可以离线验证。无需账户,无需网络调用。
更喜欢 SDK?`pip install marchward` 并用 `marchward.execute()` 包装调用。指向您自己的自托管设置或托管平台(如下)。
## 开放源码 vs. 托管(直截了当的答案)
此存储库中的开放源码包是一个**功能齐全的自托管治理**,不是一个预告片。某些操作功能需要共享状态,并在托管平台上运行(免费层级,无需信用卡):
| | 开放源码(自托管,此存储库) | 托管平台(Marchward Cloud) |
|---|---|---|
| 执行控制:根据策略允许 / 阻止 / **升级** 工具调用 | 是 | 是 |
| 本地治理(MCP/HTTP 拦截,您自己的凭证) | 是 | 是 |
| **不可篡改审计**:哈希链基元 + 离线验证 | 是 | 保留,可查询,监控 |
| 审批门**决策** | 是 | + 托管**工作流**(通知,批准,恢复) |
| **推理成本上限** | 本地会计 | 强制执行(滚动窗口支出) |
| **凭证中介**(代理持有密钥,注入实际凭证,代理从未看到它) | 是,从您自己的本地秘密存储 | 是,托管保险库 |
| 托管凭证保险库,多租户,SSO/RBAC | 否 | 是 |
所以:**自托管**以进行执行控制,从您自己的本地存储中进行凭证中介,本地成本上限和本地审计日志;**添加免费托管层级**以获取托管凭证保险库(轮换,团队共享),审批工作流,保留审计服务和跨代理强制执行。下面的引擎相同。代理的 `--remote` 模式只是指向该平台。
## 它是如何工作的(机制)
1. 您的代理发出工具调用(MCP、HTTP 或通过 SDK)。
2. Marchward 根据您的策略评估它。风险由**已解析操作**判断:任何破坏性操作(`DELETE`,标记为破坏性的 `POST`)都会被阻止,而不管工具名称如何,因此自定义命名的破坏性工具无法通过。
3. 决策,**允许 / 升级 / 阻止**,在调用运行之前强制执行,并追加到哈希链审计日志中。
4. 凭证中介意味着您的代理仅持有 Marchward 密钥。代理注入实际服务凭证(当自托管时来自您自己的本地存储,或在托管平台上来自托管保险库),因此流氓“不同工具调用”无法滥用代理从未持有的凭证。
## 软件包
- **`@marchward/engine`**:确定性决策引擎 + 哈希链审计基元(零依赖)。
- **`@marchward/proxy`**:本地治理(MCP + HTTP), `--local` 或 `--remote`。
- **`@marchward/sdk`** (TypeScript)和 **`marchward`** (Python,在 PyPI 上):客户端。
## 项目
- **贡献:** [`CONTRIBUTING.md`](./CONTRIBUTING.md) (DCO 签名,`git commit -s`)
- **安全:** [`SECURITY.md`](./SECURITY.md) · **行为准则:** [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md) · **治理:** [`GOVERNANCE.md`](./GOVERNANCE.md)
- **商标:** [`TRADEMARK.md`](./TRADEMARK.md)。代码是开放的(Apache-2.0);名称不是。
- **开放源码 vs. 商业:** [`OPEN-VS-COMMERCIAL.md`](./OPEN-VS-COMMERCIAL.md) · 我们的 [许可承诺](./LICENSING-COMMITMENT.md) (引擎保持开放,无重新许可)。
- **许可:** Apache-2.0。
- **托管免费层级:** https://app.marchward.ai/signup (每月 500 次决策,无需信用卡)。