聊 AI Agent 和基础设施时,很多讨论会很快跳到工具层:给 agent 一个终端,给它云厂商 API key,给它 MCP,让它去修部署。
但线上问题通常不是卡在“有没有工具”上,而是卡在 agent 调用工具之前有没有走对路径。它应该先 plan 还是直接 apply?这次操作会不会创建外部资源?是否需要一个 scoped token?哪个 readback 能证明应用真的可访问?如果服务器还没准备好,应该修复 runtime、重试部署,还是停下来让人确认?
在 Appaloft 里,AI skill 和 MCP server 解决的是两类问题。Skill 是给 agent 的操作协议;MCP 是进入控制面的可调用 transport。它们都不应该变成藏在 CLI 和 Web Console 旁边的另一套部署产品。
这篇文章接着 面向 AI 时代的部署控制面 继续说:AI 应该调用和人类、自动化流程相同的部署路径,而不是拿到一条私有捷径。
Skill 告诉 agent 怎么判断
AI skill 不是 API wrapper。它更像是写给模型看的 runbook。
对 Appaloft 来说,skill 首先要把用户意图归类:部署、观测、恢复、配置资源、管理域名、查看 runtime usage、处理组织和认证,或者做系统维护。然后它再选择当前 session 里可用的入口:CLI、HTTP/API、Web Console、仓库配置,或者 MCP tools。
这一层流程很重要,因为部署里有很多判断不能只靠 tool schema 推出来:
- 使用 hosted control plane 之前,先确认当前 product context
- agent 默认不应该代替用户跑浏览器登录,而是使用 scoped token 或已有 profile
- 可能创建基础设施的操作,要先生成 plan
- 重试之前先看 logs、events、diagnostics 和 recovery readiness
- 不打印
.env、private key、token、cookie、原始连接串或未脱敏 secret - 清理资源时走 Appaloft lifecycle command,而不是手工删 provider 状态
这些规则不酷,但它们决定 agent 是一个受约束的助手,还是一个拿到权限后到处执行脚本的东西。
Skill 本身也不应该写成一本长手册。长命令表、deploy protocol、surface 选择说明、MCP 细节,都可以拆到 reference 里。顶层 skill 只需要告诉 agent:现在是什么任务、应该先收集哪些事实、哪些边界不能跨。
MCP 给 agent 稳定调用入口
MCP 解决的是另一个问题:宿主可以把 typed tools、只读 resources 和 reusable prompts 暴露给 agent。对部署产品来说,这很有价值,因为 agent 不应该靠解析终端输出或猜 HTTP route 来完成结构化操作。
在 Appaloft 的模型里,MCP tool 映射到 operation catalog 里的操作。部署计划、资源诊断、runtime 日志、system doctor 这些 operation,无论从 CLI、API、Web 还是 MCP 调用,都应该保持同一个含义。
这种一一对应不只是代码洁癖。它是在防止第二套产品长出来。
如果 MCP 里手写一个 operation catalog 不存在的 quick_deploy_create,马上会出现一串说不清的问题:
- 哪些授权和 tenant 规则生效
- 这个动作是否幂等
- audit record 从哪里发出
- destructive 行为是否需要 confirmation
- secret 怎么脱敏
- 人类用户在 UI 或 CLI 里如何理解同一结果
更安全的规则很朴素:MCP tools 应该从同一份 operation catalog 生成,或者至少被它校验。MCP 可以让 agent 更稳定地调用 Appaloft,但它不能发明隐藏的 agent-only 行为。
Resources 和 prompts 不是 command handler
MCP 有三个概念,很容易混在一起。
Tools 执行操作。Resources 提供上下文。Prompts 编排可复用工作流。
对 Appaloft 来说,operation catalog snapshot、deploy protocol reference、skill guide 都可以作为 MCP resource。Agent 可以读取它们,理解有哪些 tools、应该按什么流程做。但 resource 不应该改变部署状态,不应该决定策略,也不应该悄悄修基础设施。
Prompts 也类似。first deploy、recover failed deployment、configure resource、observe runtime、publish static artifact 这类 prompt,可以把已有 operations 串起来,也可以提醒 agent 先 inspect 再 act。它不应该拥有业务状态,不应该绕过 confirmation,也不应该变成新的 command surface。
这个区别写在文档里很小,到了生产里很大。如果 resources 和 prompts 也开始做 command 的事,安全模型就会碎掉。运维人员会回答不了一个很基础的问题:到底是哪条 command 改了系统?
Auth 也是产品边界的一部分
AI 认证不应该靠聪明的浏览器小把戏。
人类可以在自己的终端里运行交互式 login。Agent 不应该替用户驱动浏览器、复制授权码、读取 cookie,或者要求用户把长期 token 粘到聊天里。Agent 需要的是 scoped、可过期、可撤销的 credential,通过可信 UI、secret manager、环境变量,或者 CLI 明确支持的 token import flow 完成交接。
这没有“agent 自动帮你登录”那么魔法,但更容易审计,也更容易撤销。
认证之后,产品边界仍然要生效。Hosted Cloud 可以加入团队权限、entitlement、tenant context、audit 和 policy。自部署 Appaloft 可以保留本地控制面的所有权。Enterprise 可以使用 private gateway 和 customer-managed credential pattern。这些差异应该属于 composition 和 adapter,而不是另起一套 agent-only 部署模型。
Plan-first 让 AI 操作可以被复核
AI Agent 有用,是因为它能把模糊意图拆成具体步骤:部署这个仓库、安装 PocketBase、诊断生成的 URL 为什么打不开、加一块存储、看一次失败发布的原因。
危险版本是直接执行。Agent 猜 Docker 命令,调用 provider SDK,改完状态以后再试图解释发生了什么。
Appaloft 更希望中间事实是可见的:
- 识别 project、resource、server、environment、Blueprint 或 static artifact。
- 可能创建或修改持久状态时,先生成 plan。
- 展示缺失的 secrets、权限、dependency bindings 和外部资源影响。
- 只有在用户或策略接受后才执行。
- 通过 events、logs、health checks、diagnostics 和 access readback 观察结果。
- 通过显式 retry、redeploy、rollback 或 repair command 恢复。
这套顺序对人类也有用。AI 不是控制面存在的理由;AI 只是让这个需求变得更难忽略。
我们想要的形状
目标架构其实很普通:
- Skill:agent-facing operating protocol
- MCP tools:对现有 operations 的 typed calls
- MCP resources:只读上下文和文档
- MCP prompts:可复用工作流编排
- Operation catalog:共享的产品契约
- CommandBus / QueryBus:真正读写状态的 application boundary
- CLI、API、Web、MCP:进入同一模型的平级入口
这个形状可以容纳不同部署方式。本地开发者可以用 CLI。GitHub workflow 可以用 deploy token。桌面 agent 可以用 MCP stdio。托管 agent 可以使用 remote tool gateway。Cloud 可以补 authz、audit 和 entitlement。Enterprise 可以运行 private gateway。
关键点是:不要在 agent 进场的那一刻,让部署语义分叉。
守住边界的成本
这种设计会带来工作量。
Operation catalog 要保持更新。MCP descriptors 需要测试。Skill references 需要 eval,避免模型漂移到不安全的捷径。Auth 指南要写清楚。危险操作要有 annotations、confirmations、redaction 和幂等规则。CLI 和 Web Console 也要能解释 MCP 返回给 agent 的同一组事实。
但这比凌晨两点调试一条 agent-only 路径要划算得多。
AI Agent 应该能够部署、观测和恢复软件。但它应该通过所有人都在用的同一条控制面路径完成这些事。在 Appaloft 里,skill 教 agent 该怎么走,MCP 提供可调用入口,operation catalog 负责让产品语义不跑偏。