Token导航 LogoToken导航TokenDH.com
Human In The Loop Agent logo
AI代理stdio官方级别未说明来源级核验

Human In The Loop Agent

MCP Server

一个基于LangGraph和MCP协议构建的轻量级人工审核代理工具,用于流式响应、敏感工具调用的人工审批以及通过Docker化的MCP文件系统服务器安全访问文件。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
PythonLangGraph文件管理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

waridrox

提供方

waridrox

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv .venv && source .venv/bin/activate

详细介绍

“Human-in-the-Loop (Goop)”可以翻译为“人在环中(或人机协作)(Goop)”,但这里“Goop”一词在常规语境下并不直接与“人在环中”相关联,且可能是一个特定上下文或品牌名称中的术语。如果“Goop”在这里没有特殊含义或是一个误写(比如原意可能是“Loop”但误写为“Goop”),那么更简洁的翻译可以是“人在环中(Human-in-the-Loop)”。如果“Goop”确实有其特定的含义或背景,请根据具体情境进行调整。因此,一个较为通用的翻译是“人在环中(Human-in-the-Loop)(注:此处‘Goop’若无特殊含义则省略或根据上下文解释)”

一个基于LangGraph和MCP(模型上下文协议)构建的最小化人类参与式代理。它实时流式传输响应,对敏感工具调用进行人工审批控制,并使用Docker化的MCP文件系统服务器来安全访问文件。

特点/功能

  • 受保护工具的人工审核create_directoryedit_filemove_filewrite_file.
  • 流式输出 带有清晰的工具调用注释。
  • YOLO模式切换 在需要时跳过人工审批。
  • MCP文件系统服务器 通过Docker,沙箱化到一个可配置的工作空间。

要求

  • python3.13+
  • Docker已安装并运行(拉取 mcp/filesystem (图像自动)
  • OpenAI API密钥对于默认设置 ChatOpenAI 模型

安装

cd /Users/m_warid/Desktop/dev/human-in-the-loop
python -m venv .venv && source .venv/bin/activate
pip install -U pip
# Project deps + a small runtime extra used by the CLI
pip install -e . nest_asyncio

工作流图

flowchart LR
  start((START))
  finish((END))

  assistant["assistant_node
LLM: respond or call tools"]
  tools["Tools (ToolNode wrapper)"]
  human["human_tool_review_node
interrupt() and wait"]

  d_toolcalls{Tool calls present?}
  d_yolo{yolo_mode?}
  d_protected{Any protected tool?}
  d_review{Review action?}

  legend["protected_tools:
- create_directory
- edit_file
- move_file
- write_file"]

  start --> assistant
  assistant --> d_toolcalls

  d_toolcalls -->|no| finish
  d_toolcalls -->|yes| d_yolo

  d_yolo -->|yes| tools
  d_yolo -->|no| d_protected

  d_protected -->|yes| human
  d_protected -->|no| tools

  tools -->|after tool result| assistant

  human --> d_review

  d_review -->|continue / update| tools
  d_review -->|feedback / reject / default| assistant

  assistant -.-> legend

配置

设置MCP文件系统服务器可访问的工作区目录,并提供您的OpenAI密钥。

export WORKSPACE="/absolute/path/you/want/to/expose"   # e.g., $PWD
export OPENAI_API_KEY="sk-..."

python -m frontend.chat_local
  • 该应用程序会实时打印出助手的消息。
  • 当请求使用受保护的工具时,系统会提示您进行选择: rejectcontinueupdate,或 feedback
  • 类型 exit 或者 quit 在用户提示下停止。

它是如何工作的

  • src/goop/graph.py 构建一个与从MCP服务器发现的工具绑定的LangGraph代理(通过 MultiServerMCPClient)。
  • 受保护的工具会触发一个在人工审核节点中处理的中断;您的决定将控制该工具是否执行以及如何执行。
  • frontend/chat_local.py 运行图表,流式传输令牌,并管理人工审批流程。

项目布局

/frontend/
  chat_local.py        # CLI runner with streaming + approvals
/src/goop/
  graph.py             # LangGraph definition and human review node
  config.py            # Loads and resolves env vars in mcp_config.json
  mcp_config.json      # Dockerized MCP filesystem server binding ${WORKSPACE}
pyproject.toml         # Project metadata and dependencies
README.md              

安全

  • 基于Docker的工具沙盒文件系统工具在Docker容器中运行(mcp/filesystem(仅使用绑定挂载到) WORKSPACE该代理无法在该路径之外进行读写操作。
  • 人类对敏感操作的批准create_directoryedit_filemove_file,以及 write_file 除非启用了YOLO模式,否则需经过人工审核节点。
  • 故障时关闭的环境处理src/goop/config.py 解决 ${VAR} 占位符,并在缺少所需的环境变量时抛出异常。
  • 不执行任意外壳命令工具是从MCP服务器中发现的;代理代码中没有直接的shell执行路径。
  • 检查点会话LangGraph 检查点机制(使用 thread_id)使流程可恢复且可审计。

示例运行(首先构建镜像):

# Build image (create a Dockerfile suited to your environment)
docker build -t goop .

# Run: pass through Docker socket and mount the workspace
docker run -it --rm \
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -e WORKSPACE="$(pwd)" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$(pwd)":"$(pwd)" \
  -w "$(pwd)" \
  goop

未来的改进/增强

功能

  • 并行工具调用审查目前一次只能审查一个工具调用。请实现一个工具队列系统以处理多个同时进行的工具调用。
  • 额外的MCP服务器除了文件系统操作外,集成更多MCP服务器(数据库、网页搜索、代码分析等)。
  • 持续检查点记录替换 MemorySaver 采用数据库支持的检查点机制(SQLite、PostgreSQL)以实现会话在重启后的持久性。
  • 多模型支持添加配置以在OpenAI、Anthropic、本地模型(Ollama)和其他提供商之间进行切换。
  • 自定义工具定义允许用户通过配置定义自定义工具及其保护级别。

安全与权限

  • 细粒度的工具权限将二进制受保护/不受保护替换为基于角色的权限(只读、管理员、特定操作)。
  • 审计日志记录记录所有工具调用、审批和拒绝操作,并附上时间戳和合规性理由。
  • 每个会话的独立工作区隔离为每个(用户/项目)创建独立的工作区目录 thread_id 以防止跨会话文件访问。
  • 资源限制为Docker容器添加CPU、内存和磁盘使用限制。
  • 工具执行超时为长时间运行的工具操作设置超时机制。

用户体验

  • 网页界面用基于网页的聊天界面替换命令行界面(CLI),该界面提供丰富的工具调用预览和审批工作流。
  • 移动支持适用于移动审批工作流的响应式网页用户界面。
  • 工具调用预览在要求批准之前,显示每个工具将执行的操作的详细预览。
  • 审批模板预配置的审批规则(例如,“始终批准读取操作”)。
  • 会话管理列出、概览和管理多个对话线程。

监控与可观测性

  • 指标仪表板追踪工具使用情况、审批率、会话时长和错误率。
  • 与可观测性工具的集成OpenTelemetry追踪、Prometheus指标、结构化日志记录。
  • 性能分析监控并优化图形执行时间和内存使用。
  • 健康检查用于监控MCP服务器和主应用程序健康状况的API端点。

配置与部署

  • 动态MCP服务器管理在不重启应用程序的情况下添加/移除MCP服务器。
  • 特定环境的配置开发、部署、生产配置文件。
  • Kubernetes 部署容器编排的Helm图表和清单文件。
  • API模式用于与聊天界面一起进行程序化访问的REST/GraphQL API。
  • 插件架构允许第三方插件在不改变核心代码的情况下扩展功能。

故障排除

  • 环境变量未设置如果一个必需的变量在 mcp_config.json (例如。, WORKSPACE如果(某部分)缺失,启动时将抛出明确的错误。
  • Docker 错误确保 Docker 正在运行,并且能够拉取/运行(镜像) mcp/filesystem 图像。
  • OpenAI 认证设置 OPENAI_API_KEY要使用本地模型,请切换至 ChatOllamasrc/goop/graph.py

目录标签

目录标签

PythonLangGraph文件管理人工审核本地部署Docker化MCP协议

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP