← 返回目录
G

GraphARC

社区
面向智能体图的准入闸门,构建于 LangGraph 之上
GitHub 源仓库 ↗
★ 69 Stars 分类 · 开发工具 热门
61FMRS · C

GraphARC(版本 0.1.7,MIT 许可)是一个基于 LangGraph 的受治理多节点图运行时,核心主张是“准入闸门”:图在运行时被提出,由确定性检查器依据注册表、策略、剩余预算、深度与无环性放行或带理由拒绝,只有被放行的图才会执行。它强调运行前的最坏情况定价与运行后的按节点计费、单份可重放 JSONL 追踪,以及从 Slack 发起的人类批准后才执行的受监督流程。默认后端驱动 PATH 上的 claude CLI,无需 API 密钥;同时可选 openrouter、openai、ollama、server 等后端。README 明确列出边界:参数仅在声明 args_schema 时受校验、进程内沙箱只是纵深防御且 run_command 子进程不受限、HTTP API 尚无持久会话层、Claude CLI 后端上智能体节点是被委派而非受治理、工具平面仍读 CLI 标志、MCP 闸门只绑定 MCP 表面而非宿主。适合需要确定性准入与可审计成本控制的团队,不适合把它当作通用个人助理或期待未经声明的完整沙箱与参数治理的使用者。

可靠性
10/20
安全与权限
10/20
维护活跃度
14/20
文档质量
15/20
安装易用性
12/20
查看 FMRS 评分方法 →

GraphARC 是基于 LangGraph 构建的受治理多节点图运行时。模型在运行时提出一张工作图,一个确定性检查器(覆盖注册表、策略、剩余预算、深度与无环性)决定放行或带理由拒绝;只有被放行的图才会在预算约束下执行,并落到一份可重放的 JSONL 追踪文件上。没有任何步骤会在未获放行的情况下运行,最坏情况成本在运行前定价、按节点在运行后计费,仪表盘与审计记录来自同一文件因此不会互相矛盾。它提供 CLI 命令(start、init、plan、go、serve、replay、demo)、一个可直接构建图的 Python API,以及从 Slack 发起的受监督 Claude Code 工作流:机器人先回复拟运行的图与批准/拒绝按钮,人类按下按钮后才会执行。默认后端驱动 PATH 上的 claude CLI(使用 Claude 订阅,无需 API 密钥),也提供 openrouter、openai、ollama、server 等可选后端。

安装接入

需要 Python 3.12 或更高版本。

  1. 执行 pip install grapharc 安装。
  2. 运行 grapharc demo stage0 验证:该命令不花钱也不需要密钥。
  3. 运行 grapharc start 进入引导式教程。
  4. 运行 grapharc init 生成 registry.py 与 grapharc.toml。
  5. 可选:安装后端扩展 grapharc[openrouter]grapharc[openai]grapharc[ollama]grapharc[server]grapharc[all];默认后端使用 PATH 上的 claude CLI。
  6. grapharc plan "..." --model ollama/qwen3:8b 生成并保存计划,用 grapharc go 执行;grapharc plan "..." --scripted 可做不涉及 AI 的免费演练。
  7. grapharc serve --live-root .grapharc/runs 在浏览器中实时查看运行,用 grapharc replay <trace> <run-id> 依据追踪重放一次运行。

选型与风险

适合谁

  • 需要把智能体工作流纳入确定性准入与策略约束的团队
  • 要求在运行前掌握最坏情况成本、运行后按节点核算费用的场景
  • 需要单份可重放审计追踪、且仪表盘必须与审计记录一致的合规或调查类工作流
  • 希望由人类按下按钮才启动执行(例如从 Slack 发起)的组织
  • 希望用 `--scripted` 在任意 checkout 上确定性复现演示与测试的开发者

不适合谁

  • 只需要交互式单智能体循环、不要求预执行授权的场景
  • 把 GraphARC 当作通用个人 AI 助理网关或配置白名单工具的替代品
  • 期望节点参数被完整校验的使用者:准入只授权节点的“种类”,仅当该种类声明 args_schema 时才校验参数,而 schema 只约束形状、不约束工厂能触及的范围
  • 要求 HTTP API 具备持久会话层,或要求工具平面由策略文档而非 CLI 标志控制的场景
  • 需要把 Claude CLI 后端上的智能体节点视为完全受治理的使用者:默认它在由节点自身工具映射出的允许列表下运行,但执行方是 Claude Code,且显式选择的 bypass 层级完全没有任何检查

所需权限

  • 默认后端会调用 PATH 上的 claude CLI(使用 Claude 订阅,无需 API 密钥)
  • 节点实现体来自注册表(registry)而非提案,注册表是提供节点种类的来源
  • 策略决定规划器“能够提出什么”:被拒绝的边会改变图的形状,而不是产生一次待重试的拒绝
  • MCP 闸门只绑定 MCP 表面而非宿主:若智能体在运行目录中拥有自己的文件工具,可能伪造批准决定,信任边界是工作目录
  • run_command 派生的子进程不受限制
  • 容器化执行(ContainerExecutor)才是真正的边界,进程内沙箱只是纵深防御

风险与副作用

  • 准入只授权节点的种类;参数仅在种类声明 args_schema 时受校验,且 schema 只约束形状而非可达范围
  • 进程内沙箱属于纵深防御,run_command 子进程不受限制,真正的边界是有意启用的 ContainerExecutor
  • HTTP API 尚未使用持久会话层
  • 在 Claude CLI 后端上,智能体节点是被“委派”而非被治理:默认在由节点自身工具映射出的允许列表下运行,但执行由 Claude Code 负责,bypass 层级完全无检查
  • 策略文档治理的是规划,工具平面仍读取 CLI 标志
  • MCP 闸门绑定 MCP 表面而非宿主,拥有自身文件工具的智能体可能伪造批准决定;信任边界为工作目录(Slack 工作区同理)

常见排障

  1. 确认 Python 版本不低于 3.12,否则 pip 安装会失败
  2. 先用 `grapharc demo stage0` 与 `grapharc plan "..." --scripted` 验证:两者免费且不需要密钥,可排除模型与凭据问题
  3. 若规划阶段反复被拒,查看结构化拒绝反馈中的代码(例如 edge_denied),它会被规划器用于重新规划
  4. 默认后端依赖 PATH 上的 claude CLI;如需其他后端请安装对应扩展(openrouter、openai、ollama、server、all)
  5. 配置来源可被打印核对:运行输出会显示 registry、kinds、policy 与 config(是否读取 grapharc.toml)
  6. 要复盘一次运行,使用 `grapharc replay <trace> <run-id>` 依据追踪重建;仪表盘与审计记录来自同一文件
  7. 页面上的示例由 tests/test_readme.py 在每次提交上执行,若示例与代码不符可据此定位漂移

使用场景

在运行时提出一张工作图,并让确定性准入检查器放行或带理由拒绝
在运行前对最坏情况成本定价、运行后按节点计费,实现失败即关闭的成本控制
把一次运行的完整审计信息写入单份可重放的 JSONL 追踪,并据此重建运行
从 Slack 发起工作请求,先由机器人返回拟运行的图与批准/拒绝按钮,人类批准后才执行
用 `--scripted` 做免费、确定性的规划与准入演练,无需 AI 与密钥
在同一任务上比较第三方智能体的成功率、成本、墙钟时间与策略违规情况