什么是 Portico
Portico 是组织的 Agent 治理门户与准入网关。
在企业与团队构建 AI Agent 的过程中,Agent 迅速在各处涌现:有些以本地 CLI 工具形式存在,有些暴露为 MCP (Model Context Protocol) 服务的 HTTP 端点,有些则提供了 Web 管理界面。然而,随着 Agent 数量的爆发,团队面临着严峻的治理危机:
- 孤岛与失控:没有人能准确回答组织内部究竟有哪些 Agent、分别由谁维护、版本为何、能力如何。
- 边界模糊:内部使用的实验性 Agent 与面向外部开放的生产服务混为一谈,存在严重的未授权公开访问与数据外泄风险。
- 特权越界:负责维护 Agent 描述的自动化 Bot 容易获得过高特权,甚至能够自主将未受审的 Agent 发布给公开互联网。
- 审计黑洞:缺乏集中、不可篡改的变更记录与访问审计,导致安全合规团队无法追溯“谁在何时批准了公开访问“。
Portico 专为解决上述痛点而设计。
核心定位:门廊,而非机房
Portico 像门廊,不像机房。
┌──────────────────────────────────────────────┐
│ Portico │
│ │
Humans (审计) │ Portal ────── 发现页 / 内部工作台 / 仪表盘 │
Agents (维护) │ Registry ──── 目录、版本、可见性、引用 │
│ │ Approval ──── 跨越公开信任边界的审批 │
▼ │ Access ────── 分级权限 + 会话防伪认证 │
CLI / MCP / API│ Gateway ───── 鉴权、路由、不可篡改访问审计 │
└──────────────────────┬───────────────────────┘
│ 不运行 Agent
▼
外部 Agent / MCP / CLI 运行时
Portico 明确拒绝成为 Agent 的执行循环(Execution Loop)或工作流编排器:
- Agent 在别处运行:Agent 可以运行在 Kubernetes、云函数、Docker 容器或开发者的本地机器上。
- Portico 负责元治理:Portico 登记其名称、描述、维护者、访问协议入口及可用性状态。
- 严格的门禁控制:任何试图越过内部网络暴露给公众的 Agent,必须在 Portico 留下经过人类安全审计者签名的审计记录。
三大统一治理入口
Portico 提供了三类客户端交互界面,它们严格呈现同一治理状态:
1. Web Portal (浏览器界面)
- 双平面呈现:提供面向组织内成员的
/internal内部笔记台,以及面向全网公开的/public目录。 - 零客户端脚本:界面采用现代语义 CSS 实现交互与主题切换,严格执行
Content-Security-Policy: default-src 'none',根绝 XSS 与脚本注入。 - 受约束组件盒:仅提供
catalog_card、catalog_detail等固定组件,杜绝将门户退化为任意代码可执行的 CMS。
2. Portico CLI (自动化命令行)
- 适合运维人员与自动化维护 Agent 执行编目、发版与状态检查。
- 所有非匿名命令均必须携带严格的会话令牌(
--session),杜绝参数伪造。 - 标准机读输出:统一以
{ok: true, data: ...}或{ok: false, error: ...}输出规范 JSON。
3. MCP Protocol Server (Agent 机器交互入口)
- 暴露标准的 JSON-RPC 2.0 协议(HTTP 传输)。
- 提供只读治理工具(如
portico_list、portico_describe、portico_mcp、portico_dashboard、portico_approvals、portico_identities、portico_grants、portico_revokes、portico_whoami、portico_sessions、portico_credentials、portico_credential_revokes、portico_page等),使其他 Agent 能以符合 MCP 规范的标准协议发现同伴服务。
质量与可靠性承诺
Portico 项目的所有核心逻辑均经受严苛的自动化测试矩阵验证:
- 覆盖高风险路径的防御性拦截(自批拦截、伪造头拒绝、越权防护)。
- 验证写操作失败后的严格回滚(不产生脏数据、不篡改文件字节)。
- 单一 Deno L0 运行时保障,权限按最小必要原则配置。