我把 AI Coding Agent 的 MCP 工具链放进容器里跑了一遍

最近团队在试 AI Coding Agent。最开始大家盯着的是模型:能不能读懂代码、能不能改 bug、能不能生成测试。

实际跑下来,第一个卡点不是模型,而是工具链。

Agent 要完成一个真实任务,通常需要调用浏览器、Git、数据库、文件系统、K8s 日志或内部 API。也就是说,它背后不只是一个聊天模型,而是一组 MCP Server 和工具容器。

我这次把工具链放进容器里跑了一遍,记录一下踩到的点。

工具链不是一个包

一个最小可用的 Coding Agent 工具链,至少会碰到这些组件:

组件 用途
Node/Python runtime 跑脚本、工具、适配器
Playwright / Browser 复现页面、截图、E2E
MCP Server 暴露工具能力
Gateway 管理工具调用入口
Git 工具 读仓库、生成 patch
K8s 工具 查 Pod、日志、事件

如果这些都装在个人电脑上,短期很快,长期很乱。版本、权限、网络、依赖都不可复现。

所以我更倾向于把工具链容器化。

第一件事:先拉镜像

我先不急着 compose up,而是按来源拆镜像:

bash 复制代码
docker pull docker.1ms.run/node:20-alpine
docker pull ghcr.1ms.run/github/github-mcp-server
docker pull mcr.1ms.run/playwright/mcp
docker pull k8s.1ms.run/pause:3.10

这里故意保留了不同来源:Docker Hub、GHCR、MCR、K8s。因为实际项目里,失败经常不是"Docker 坏了",而是其中一个上游来源卡住。

如果这一层不过,后面再调 Agent 没意义。

compose 先跑最小集

先写一个很小的 compose.yaml

yaml 复制代码
services:
  runner:
    image: docker.1ms.run/node:20-alpine
    working_dir: /workspace
    volumes:
      - ./workspace:/workspace:ro
    command: ["node", "--version"]

  browser:
    image: mcr.1ms.run/playwright/mcp
    ports:
      - "8931:8931"

  github-tool:
    image: ghcr.1ms.run/github/github-mcp-server
    environment:
      - GITHUB_TOKEN=${GITHUB_TOKEN}

先看配置:

bash 复制代码
docker compose config
docker compose pull
docker compose up -d

我不会一开始就把数据库、K8s、内部 API 都接进来。先让最小工具链跑起来,再逐个加能力。

工具权限从只读开始

Agent 一旦能调工具,权限就变成正经工程问题。

我把权限分成几档:

工具 默认策略
仓库 只读,写入通过 PR
浏览器 只允许访问测试环境
数据库 只读账号,优先样例库
文件系统 只挂载 workspace
K8s 只读 namespace

这一步会让 demo 慢一点,但能避免后面出现"Agent 到底改了什么"的黑盒问题。

K8s 环境要看事件

如果工具链要进 K8s,第一步不是看应用日志,而是看 Pod 事件。

bash 复制代码
kubectl describe pod <pod-name>
kubectl get events --sort-by=.lastTimestamp

如果看到 ImagePullBackOff,优先看镜像地址和节点网络。

如果镜像已经拉下来但容器反复重启,再看启动参数和工具配置。

这两个问题不要混在一起排。

为什么这事适合做成团队模板

AI Coding Agent 的工具链,一旦每个人都自己装,很快会变成玄学:

  • A 同事能跑,B 同事不能跑。
  • CI 里缺一个浏览器依赖。
  • K8s 节点拉不到某个工具镜像。
  • 数据库 token 在本地有,在 runner 里没有。
  • Agent 输出错误,但不知道是模型错还是工具错。

把工具链容器化之后,至少能把问题拆开:

  1. 镜像是否能拉取。
  2. 工具是否能启动。
  3. 权限是否足够。
  4. Agent 调用参数是否正确。
  5. 输出是否可复现。

我最后留下的检查脚本

bash 复制代码
#!/usr/bin/env bash
set -euo pipefail

images=(
  "docker.1ms.run/node:20-alpine"
  "ghcr.1ms.run/github/github-mcp-server"
  "mcr.1ms.run/playwright/mcp"
  "k8s.1ms.run/pause:3.10"
)

for image in "${images[@]}"; do
  echo "==> ${image}"
  docker pull "${image}"
done

docker compose config
docker compose pull

这段脚本不解决所有问题,但能把"工具链镜像能不能进入环境"这件事提前暴露出来。

小结

AI Coding Agent 真要进入团队,不能只看模型能力。

更现实的问题是:MCP 工具链怎么跑、浏览器自动化怎么隔离、镜像怎么预检、权限怎么收口、日志怎么留痕。

我的建议是先别追求一步到位。先把最小工具链容器化跑通,再把权限、日志、K8s 和 CI 逐步加上去。

Agent 会不会干活是一回事,它有没有一个稳定的工作台,是另一回事。

相关推荐
BING_Algorithm1 小时前
开发常用Linux命令
linux·后端
Java编程爱好者1 小时前
ThreadLocal 用了 WeakReference,为什么还会内存泄漏
后端
Cosolar2 小时前
大模型应用开发面试 • 每日三题|Day 002|记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)
后端·python·llm
神奇小汤圆2 小时前
深入源码:Hermes Agent 如何实现 "Self-Improving"
后端
神奇小汤圆2 小时前
百度二面:Spring 中的 Bean 是线程安全的吗?
后端
铭毅天下2 小时前
当搜索引擎遇上 Rust——深度解读下一代实时搜索引擎 INFINI Pizza
开发语言·后端·搜索引擎·rust
用户298698530142 小时前
Java 后端处理 Word 修订:批量接受与拒绝的自动化方案
java·后端
马艳泽2 小时前
win11环境查找jar包中字符串
后端