当前位置: 首页 > news >正文

[具身智能-558]:用OpenDevin(前端+沙箱) + LangGraph(编排) + MCP Tools(外设)构建自己的AI编程智能体IDE.

利用OpenDevin(前端 + 安全沙箱) + LangGraph(智能体编排) + MCP Tools(标准化外设),你可以构建一个功能完整、可扩展、安全可控的 AI 编程智能体 IDE——这正是 TRAE、Cursor Agent 等商业产品的开源技术栈雏形。

下面我将为你提供一套可落地的架构方案,包括模块职责、集成方式、代码示例和部署建议,助你从零搭建自己的“AI 工程师操作系统”。


🧩 整体架构:三层融合模型

+--------------------------------------------------+ | 用户界面(Web / VS Code) | | ← 基于 OpenDevin 前端(React + WebSocket)| +--------------------------↑----------------------+ | 自然语言请求 +--------------------------------------------------+ | 智能体编排引擎(LangGraph + Python) | | - 任务解析 → 规划 → 执行 → 验证 → 反思 | | - 调用 Skill(内置)或 MCP Tool(外部) | +------------------↑-------------------↑------------+ | | +--------↓--------+ +-------↓--------+ | LLM 推理层 | | MCP Tools | | (OpenRouter/Qwen)| | (文件/测试/Shell)| +-----------------+ +-----------------+ ↑ +--------↓--------+ | 安全沙箱 | | (OpenDevin Sandbox)| +-----------------+

一、核心组件选型与职责

组件作用开源项目关键能力
OpenDevin提供Web IDE 前端 + 安全执行环境github.com/OpenDevin/OpenDevin- 浏览器内 VS Code-like 编辑器
- Firecracker 微虚拟机沙箱
- 文件系统隔离
LangGraph构建状态化、可循环的智能体工作流langchain-ai.github.io/langgraph- 有向图状态机
- 支持 human-in-the-loop
- 多智能体协作
MCP Tools标准化外部工具接口github.com/model-context-protocol- 统一 Tool 描述(YAML)
- 权限控制
- 自动发现

✅ 三者互补:

  • OpenDevin =Shell + Terminal + Security
  • LangGraph = Kernel Scheduler
  • MCP = Device Drivers

二、关键集成步骤

步骤 1:启动 OpenDevin 沙箱与前端

Bash

# 克隆并启动 OpenDevin git clone https://github.com/OpenDevin/OpenDevin.git cd OpenDevin docker compose up --build

默认访问http://localhost:3000,即可获得:

  • Web IDE 编辑器
  • 内置/workspace目录(沙箱隔离)
  • WebSocket API 用于接收指令

💡 你也可以将其嵌入 VS Code 插件(参考 OpenDevin 的vscode-extension分支)。


步骤 2:定义 MCP Tools(你的“外设驱动”)

在项目根目录创建.mcp/tools/

Yaml

# .mcp/tools/run_pytest.yaml name: run_pytest description: "Run pytest in sandbox" parameters: test_file: { type: string, required: true } permissions: filesystem: read network: deny

Yaml

# .mcp/tools/write_file.yaml name: write_file description: "Write content to file" parameters: path: { type: string } content: { type: string } permissions: filesystem: write

✅ 这些工具将被 LangGraph 自动加载,并在沙箱中安全执行。


步骤 3:用 LangGraph 构建智能体编排器 - 后端

创建agent.py

Python

from langgraph.graph import StateGraph, END from typing import TypedDict, List import mcp # 使用官方 mcp-client 库 # 定义状态 class AgentState(TypedDict): user_request: str plan: List[str] current_task: str observations: List[str] output: str # 节点:规划 def planner(state: AgentState): prompt = f"将任务分解为子步骤: {state['user_request']}" plan = llm_call(prompt) # 调用你的 LLM(如 Qwen via OpenRouter) return {"plan": plan.split("\n")} # 节点:执行(调用 MCP Tool) def executor(state: AgentState): task = state["plan"].pop(0) if "test" in task.lower(): result = mcp.call("run_pytest", {"test_file": "test_main.py"}) elif "write" in task.lower(): result = mcp.call("write_file", {"path": "output.py", "content": "..."}) else: result = "SKIPPED" return { "current_task": task, "observations": [result], "plan": state["plan"] } # 节点:验证 & 反思 def verifier(state: AgentState): if "FAILED" in state["observations"][-1]: return {"plan": ["重试修复错误"]} else: return {"output": "任务完成!"} # 构建图 workflow = StateGraph(AgentState) workflow.add_node("planner", planner) workflow.add_node("executor", executor) workflow.add_node("verifier", verifier) workflow.set_entry_point("planner") workflow.add_edge("planner", "executor") workflow.add_edge("executor", "verifier") # 支持循环:若需重试 def should_retry(state): return "executor" if "重试" in state.get("plan", []) else END workflow.add_conditional_edges("verifier", should_retry) app = workflow.compile()

步骤 4:连接 OpenDevin 前端

通过 WebSocket 或 REST API将用户(Web前端)的输入传给 LangGraph:

Python

# server.py (FastAPI) from fastapi import FastAPI from agent import app app_api = FastAPI() @app_api.post("/execute") async def execute(request: dict): result = app.invoke({ "user_request": request["query"], "plan": [], "observations": [], "output": "" }) return {"result": result["output"]}

前端(OpenDevin)调用:

Js

// 在 OpenDevin 前端 JS 中 fetch("/execute", { method: "POST", body: JSON.stringify({ query: "修复登录 bug 并添加测试" }) })

步骤 5:LLM 接入(推理层)

使用OpenRouterOllama 统一接入多模型:

Python

# llm.py import openai def llm_call(prompt: str) -> str: client = openai.OpenAI( base_url="https://openrouter.ai/api/v1", api_key="YOUR_KEY" ) resp = client.chat.completions.create( model="qwen/qwen-max", messages=[{"role": "user", "content": prompt}] ) return resp.choices[0].message.content

三、进阶能力扩展

功能实现方式
Skill 标准库在 LangGraph 中注册/fix节点,封装固定 prompt
上下文压缩用 LLM 自动摘要对话历史,注入新轮次
多智能体协作创建 PlannerAgent / CoderAgent / TesterAgent 子图
Human-in-the-loopLangGraph 支持interrupt_before=["review"],暂停等待确认
日志追踪集成 LangSmith,记录每步推理与 Tool 调用

四、部署建议

  • 开发环境:Docker Compose 一键启动(OpenDevin + FastAPI + Sandbox)
  • 生产环境:Kubernetes 部署,每个用户会话分配独立沙箱 Pod
  • 安全:MCP 权限 + 沙箱网络隔离 + LLM 输出过滤

五、与 TRAE 的差距与优势

维度你的开源版TRAE
Skill 质量需自行优化 prompt平台级 A/B 测试优化
调度性能Python 单线程瓶颈Go 内核高并发
用户体验基础 Web IDE深度集成 VS Code 插件
开放性✅ 完全可控、可定制❌ 闭源
成本✅ 可本地运行依赖云服务

你的版本优势:透明、可审计、可私有化部署


结语:你正在构建“AI 时代的 Emacs”

这套组合不是玩具,而是真正可替代商业 AI IDE 的开源基座

  • OpenDevin提供了安全的“终端”
  • LangGraph提供了可编程的“内核”
  • MCP提供了标准的“设备驱动”

当你输入:

“重构用户模块,添加类型注解,并确保测试覆盖率达 90%”

你的系统将:

  1. 规划任务 → 2. 读取代码 → 3. 调用/fix→ 4. 运行pytest→ 5. 验证覆盖率 → 6. 提交结果

这,就是一个完整的 AI 编程操作系统

而你,就是它的 Linus。

http://www.cnnetsun.cn/news/2208464.html

相关文章:

  • 视觉语言大模型的说服力评估与优化实践
  • Kaggle-Skill:AI编程助手集成Kaggle全流程自动化技能包
  • 3步掌握AI图像分层技术:layerdivider让复杂插图一键分层
  • 跟着 MDN 学 HTML day_12:(HTML网页图片嵌入)
  • Modbus RTU 与 Modbus TCP 简易指南
  • STC89C52循迹小车避坑实战:传感器反了、电机不转、拐弯冲线?这些调试经验帮你一次搞定
  • LoRA+QLoRA+Adapter三重配置冲突诊断:Python微调中87%OOM错误的根源定位指南
  • 从无人机飞控到电动车驱动:深入聊聊FOC中的Clark/Park变换到底解决了啥问题
  • RISC-V中断嵌套与咬尾优化详解:以芯来平台在RT-Thread中的`csrrw`指令为例
  • 邮票大小双以太网SoM模块的嵌入式开发实践
  • BMS开发避坑指南:从产品需求书里挖出那些容易忽略的‘魔鬼细节’(以AUTOSAR项目为例)
  • RTK定位中的RTCM3.2:为什么你的无人机/农机需要它?从协议到应用的避坑指南
  • 在OpenClaw中集成Taotoken实现多模型Agent工作流
  • RoboMaster视觉入门:从零看懂深大开源代码(Ubuntu 16.04 + OpenCV 3.4.4环境搭建)
  • League Akari:3大核心功能全面提升英雄联盟游戏体验的终极指南
  • 告别Anaconda安装失败:在Termux的Debian里用纯Python pip搞定Jupyter和Octave内核
  • Depth-Anything-V2:单目深度估计基础模型的技术革新与应用实践
  • 告别盲猜!用UDS 0x19服务精准读取汽车故障码(DTC)的保姆级实战指南
  • 告别电流畸变:在GaN图腾柱PFC中,我是如何用重复控制搞定PI相位超前的
  • Vim党进阶指南:巧用Ctags和Cscope,让你的.vimrc实现智能代码跳转与搜索
  • 10块钱的TM1638模块能玩出什么花?DIY一个桌面时钟+温湿度计(Arduino/STM32都行)
  • 从‘找色’到‘AI自瞄’:聊聊FPS游戏外挂的‘非内存’进化史(附大漠插件+易语言早期代码)
  • Jenkins Pipeline插件避坑指南:从Docker构建到GitHub通知,这5个插件配置最容易出错
  • Rust 微服务性能优化:从 500ms 到 50ms 的实战记录
  • expvarmon实战:构建企业级Go应用性能监控系统
  • Adversary Emulation Library项目贡献指南:如何参与开源威胁模拟社区
  • 旧电脑焕新记:用统信UOS家庭版替代Windows 10,实测老机器流畅度提升
  • 终极二进制运算指南:Algorithms项目实战技巧与高效位操作方法
  • 浏览器Cookie管理太麻烦?Cookie-Editor让你3步搞定所有难题
  • PKHeX自动合法性插件完整指南:5分钟掌握宝可梦合规性检查