CLI 与 MCP:Agent 的两只手
今天,几乎所有的 AI Agent 都需要"动手"——写代码、查数据库、操作文件系统、调用 API。Agent 不能只思考,必须行动。而行动,就需要工具。 目前,Agent 获取工具有两条路径:CLI(命令行) 和 MCP(Model Context Protocol)。这不是两种"人机交互方式"的对比——在 Agent 场景下,人是退到幕后的。这是同一个 Agent 的两种工具接入模式,它们决定了 Agent 能做什么、怎么做、以及做的时候有多安全。 这篇文章要回答一个核心问题:当 Agent 需要操作外部世界,CLI 和 MCP 分别给了它什么?两者如何共存? 一、Agent 需要什么样的工具接口 在讨论 CLI 和 MCP 之前,先理解 Agent 对工具接口的核心需求: 可发现性:Agent 需要知道"我能做什么" Agent 的第一个问题永远是:我现在有哪些工具可用? 如果 Agent 不知道自己有 git 命令,它就不会尝试提交代码。如果 Agent 不知道有一个"查询订单数据库"的 MCP Tool,它就不会去查。工具的可发现性决定了 Agent 能力的天花板。 可组合性:Agent 需要把多个工具串起来 Agent 很少只用一个工具完成任务。“查一下最近的 bug 报告,然后写个修复,再跑一遍测试”——这涉及数据库查询、文件编辑、命令执行三个工具的组合。 工具之间能否无缝组合,决定了 Agent 是"能干活"还是"只能做单步操作"。 可靠性:Agent 需要可预测的执行结果 Agent 做决策的前提是:如果我调用这个工具,我会得到什么。工具返回结果的格式越确定,Agent 的推理越可靠。 一个返回结构化 JSON 的工具,和一个输出格式随心情变化的命令行工具,对 Agent 来说是天壤之别。 安全性:Agent 需要被约束 Agent 拿到工具就像人拿到车钥匙——你希望它开车去超市,不希望它飙车撞墙。工具接口的设计决定了你能给 Agent 多大的自由度,以及出事时能不能兜住。 ...