这一层是「能动手」的那部分——读写文件、跑命令、搜索、生成多模态内容。它没有配置项,但要理解它的两种执行形态和环境代价。
核心判据
「AI 判断」与「机械执行」要拆开。
需要判断的部分(分类、取舍、写文案)交给 agent 用自然语言规则现场做;机械的重复劳动(取数、计算、渲染、批量写)打包成脚本执行。
理由:agent 每一步都是一轮模型思考,几十步叠加就是分钟级;脚本一步跑完是秒级。实测同一个任务,脚本版比纯提示词版快 3 倍。
真实办公环境里,工具层会遇到三类制约,理解它们才能解释「为什么文档里的命令我这儿跑不通」。
制约 | 表现 | 应对 |
|---|---|---|
Shell 命令不全 | 某些环境下 cat / grep / ls / dirname / cp 等不可用 | 一律用脚本语言的单行命令替代;不用管道过滤;长文本先落文件再读 |
透明加密拦截 | 内核层拦截文件 I/O,读写的进程被直接杀掉 | 识别特征:零输出 + 非零退出码 + 无堆栈信息。 这不是代码 bug,也不是沙箱问题 |
网络受限 | 某些域名被封锁;包仓库访问极慢 | 用国内镜像源;被封锁的服务换网络后再同步 |
加密拦截的正确处置(重要)
环节 | 做法 |
|---|---|
识别 | 进程被 kill 且零 stdout + exit 1 + 无 Python traceback ⇒ 疑似加密拦截,不是代码 bug |
响应 | 立即停下,明确报告。不自动反复重试、不自行绕路换方案 |
处置 | 由人决定:能解密就解密;不能解密就终止或换方式。决定权在人 |
辅助 | 长任务把进度与异常强制落盘到日志文件,中途被杀也能从日志看出卡点,便于续跑 |
判据要点:不要把「被加密杀掉」误判成沙箱问题或脚本 bug——这两种误判都实际发生过。
误解
「我抽出脚本里的核心命令在终端跑一遍,能跑通就说明脚本没问题。」
真相
验证要验交付物本身,不是验它的等价物。
实测:某个 Windows 批处理入口文件,里面的命令是对的,但文件本身是坏的——编辑工具产出了 LF 换行,而该格式要求 CRLF。结果解析异常,实测只执行到最后一行,前面全部被吞掉(标准输出仅 24 字节)。改成正确换行后输出完整(447 字节)。
⇒ 落地形态是哪一种,就验证哪一种。
本节可带走的判据
这一层的独有价值
够到本机够不到的数据。
它和资料库是上下游关系——连接器负责「数据从哪来」,资料库负责「取来的放哪」。这也是学习顺序上把连接器排在资料库之后的理由:顺序反了,取来的数还是没处放。
误解(一个典型误判)
「打开 ~/.workbuddy/mcp.json 一看是空的,所以这一层完全没接入。」
实测发现,本机至少存在三份 MCP 配置,身份完全不同:
路径 | 身份 | 典型状态 |
|---|---|---|
~/.workbuddy/mcp.json | 用户自建 MCP 服务器 | 可能是 {"mcpServers":{}} —— 空 |
~/.workbuddy/connectors//mcp.json | 官方连接器目录(catalog) | 实测数百条条目,可能全部处于 disabled |
~/.workbuddy/connectors/default/mcp.json | 无账号态的默认目录 | 同样全部 disabled |
教训(这是本机第三次因搜索不全导致误判)
判断「某层是否为空」之前,先找全它的配置文件。 只看一个路径就下结论,会得出假的「零接入」。
这与另一条经典错误同类:用一条命令的成败直接推断整体状态。
来源 | 是什么 | 要不要你配 |
|---|---|---|
① 官方连接器目录 | 一大份「能装的清单」,通过远程地址下发,本地有缓存校验 | 不用,但目录 ≠ 已启用——清单里的几百条默认全关着 |
② 插件自带的 MCP | 某些插件安装后就自带 MCP 服务(表格处理、支付、设计转换等) | 不用配,装了就有 |
③ 用户自建 | 自己往 mcp.json 里加 | 要配,这是接入私有系统的唯一通道 |
由此得到一条判据
「配置里看不见」不等于「不能用」。 判断有没有某个 MCP,要看运行时实际可用的工具列表,而不是只看 mcp.json。
反过来的例子很常见:mcp.json 是空的,但会话里照样能调用表格处理、支付等自带 MCP——因为它们来自插件,不写在用户的 mcp.json 里。
连接器的状态不是一个布尔值。实测状态文件里能看到完整的四层:
层 | 含义 | 实测观察(某环境) |
|---|---|---|
① | 在目录里(官方清单有它) | 数百条 |
② | 已绑定(完成过授权) | 仅 2 个 |
③ | 已启用(现在真的能用) | 0 个 |
④ | 用户主动关 | 绑过的那 2 个都是 |
于是准确的表述是:「绑过 2 个,全部被自己关掉了,现在启用数为 0」——不是「没接过」,而是「接过又关了」。
官方提供了只读的检索工具,一次可返回上百个真实候选。它返回的是当前可安装的连接器——不要用网页搜索代替它。
典型用法:说一句「我要接 XX 系统」,由 AI 查真实候选,再用推荐卡片给出选择。安装与授权始终是你点头的事。
连接器目录下有一份明确写着「不要删」的说明文件,规则大意是:
规则
本目录包含连接器的本地凭据。不要单独删除其中的隐藏文件(加密后的授权令牌、连接器状态、本地主密钥)。彻底清理时请整目录删除,不要只删某一个文件。
实测加密方案:AES-256-GCM + HKDF-SHA256,配一个 32 字节的本地主密钥。授权头里的敏感值是密文(由 iv / tag / ct 三段构成)。
操作 | 正确做法 |
|---|---|
重置某个连接器 | 走客户端「连接器中心 → 解绑」,不要手动删单个文件 |
彻底清理 | 整目录删除 |
同步到别的设备 | 不参与同步(见第 8 篇) |
这条认知很关键
接连接器不是去市场里挑,是让 AI 够得着你自己的数据。
官方目录里的几百条是通用服务。而你真正需要的,往往是自己的一套数据——某个内部系统、某份定期更新的台账、某个自建网站上的提交记录。
做法是:写一个只读的本地 MCP 服务器(零依赖手写 JSON-RPC 即可),把数据源包成一个可查询接口。一个实测的完整闭环是:
环节 | 做法 |
|---|---|
取数 | 定时脚本走数据源 API,把文件拉到本地固定目录 |
落盘 | 改到业务盘对应目录(不要落在工作空间) |
读取 | 本机 stdio MCP,只读,供技能直接消费 |
用途 | 下游技能不再需要人工提供数据文件,直接读系统台账 |
判据:什么时候值得接
不是为了「用了这一层」而接。唯一的判据是:有没有一件事是你现在手动复制粘贴的?
有 → 值得接;没有 → 接了也是摆设。 实测中曾绑过两个外部服务又被关掉,恰恰说明当时没有真实痛点驱动。
概念 | 干什么 | 触发方式 |
|---|---|---|
连接器(L3) | 把外部系统的数据取进来 | AI 调它的工具 |
技能(L1) | 固化「怎么做」的流程 | 人喊一声 / AI 判断该用 |
专家(L6) | 固定角色人设与输出纪律 | 选中才生效 |
本节可带走的判据
文中所有「实测」「xx KB」「xx 个」这类数量,均来自某一台真实机器的快照,请当作方法示范而非通用阈值;真正通用的是判据与因果关系。
原创声明
本文系「当月光落下」原创,首发于腾讯云开发者社区。内容来自作者在实际使用中的逐条实测整理, 所有结论均有本机实机验证或真实接口调用支撑;文中出现的数量均为特定环境下的实测快照, 仅作方法示范,不作为通用阈值。
如需转载,请注明作者「当月光落下」及首发出处,未经许可不得用于商业用途。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。