
👋 一.前言
Hi,大家好,从我做GohumanLoop想法至今几个月内已经发布了以下几个工具
GoHumanLoop SDK
: Agent人机协同 Python库,GoHumanLoop的核心gohumanloop-wework
: 针对GoHumanLoop在企业微信场景下进行审批、获取信息操作的示例服务。方便用户在使用GohumanLoop时,对接到自己的企业微信环境中gohumanloop-feishu
: 针对GoHumanLoop在飞书场景下进行审批、获取信息等人机协同操作的示例服务。gohumanloop-examples
: 针对以上工具的使用的示例集合
在做的过程中,我逐渐发现要做好AI时代的人机协作,除了有各种工具之外,还需要一个集中式的管理平台,通过这个管理平台可以链接到各个业务系统,比如各类OA系统,还有其它移动端平台比如微信小程序等。 通过GoHumanLoop SDK
与这个平台连接打通用户的Agent, 再通过这个平台分发和管理用户的人机交互协同,实现全场景全闭环人机协作。

这就是我们最近在做的 GoHumanLoopHub
,现在第一个版本已开源上线(坚持开源👊)
今天我们来一起看一下吧
✈️ 二.GoHumanLoopHub介绍
- 🚀 项目地址: github.com/ptonlix/goh...

GoHumanLoopHub
是作为 GoHumanLoop
SDK 的官方服务平台,专门用于处理人机协同的请求,提供了用户管理、API 密钥管理、任务数据、协同请求管理等功能。
💡 GoHumanLoop: A Python library empowering AI agents to dynamically request human input (approval/feedback/conversation) at critical stages. Core features:
Human-in-the-loop control
: Lets AI agent systems pause and escalate >decisions, enhancing safety and trust.Multi-channel integration
: Supports Terminal, Email, API, and frameworks like LangGraph/CrewAI.Flexible workflows
: Combines automated reasoning with human oversight for reliable AI operations.Ensures responsible AI deployment by bridging autonomous agents and human judgment.
🛠️ 三.技术栈&特性
-
⚡ FastAPI ------ 用于 Python 后端 API。
-
🚀 React ------ 用于前端开发。
- 💃 使用 TypeScript、Hooks、Vite 等现代前端技术栈。
- 🎨 Chakra UI ------ 前端组件库。
- 🤖 自动生成的前端客户端。
- 🧪 Playwright ------ 端到端测试。
- 🦇 支持深色模式(Dark Mode)。
-
🐋 Docker Compose ------ 用于开发和生产环境部署。
-
🔒 默认启用安全的密码哈希。
-
🔑 JWT(JSON Web Token)身份认证。
-
📫 基于电子邮件的密码找回功能。
-
✅ 使用 Pytest 进行测试。
-
📞 Traefik ------ 作为反向代理/负载均衡器。
-
🚢 使用 Docker Compose 部署说明,包括如何设置前端 Traefik 代理以自动处理 HTTPS 证书。
-
🏭 基于 GitHub Actions 的 CI(持续集成)和 CD(持续部署)。
📚 四.整体架构设计

架构说明
- 基于 LangGraph、CrewAI 等 Agent 框架构建的智能体时,使用
GoHumanLoop
SDK 能更好进行人机协同,特别是在类似 Manus 长耗时场景,需要异步与 Agent 进行交互的场景,通过简单的封装即可增强人机协同能力 GoHumanLoop
内部提供 HumanLoop 任务管理器和请求处理提供者(Provider),通过 API 方式与 GoHumanLoopHub 进行交互GoHumanLoopHub
还能与飞书、企业微信等进行集成,实现与飞书、企业微信等应用的无缝对接。需要依赖一层转换层,目前已提供对应的服务程序例子gohumanloop-feishu和gohumanloop-wework 后续还会继续拓展其它 OA 平台,让人机协同更好的集成到业务当中- 管理人员通过
GoHumanLoopHub
提供的 API 接口,Agent 进行交互,提供用户信息、反馈、审批等信息。 GoHumanLoopHub
还提供了任务数据管理功能,Agent 可以将任务数据同步到GoHumanLoopHub
中,方便后续分析和管理。
📦 五.部署运行
GoHumanLoopHub
支持手动Docker运行部署
- 确保已安装 Docker 和 Docker Compose。
- 克隆此仓库:
git clone https://github.com/ptonlix/gohumanloophub.git
- 进入项目目录:
cd gohumanloophub
- 复制示例环境变量文件:
cp .env.example .env
- 编辑
.env
文件,配置密码、数据库连接、Redis 连接、MongoDB 连接等。 - 启动服务:
docker compose up -d
- 访问前端应用:
http://localhost:5173
- 访问 API 文档:
http://localhost:8000/docs
- 注册一个账号并登录。
- 创建一个 API 密钥。
- 开始使用
GoHumanLoop
SDK 开发对应的智能体。 - 查看
GoHumanLoop
文档了解更多信息。 - 在人机协同列表中,查看并操作 SDK 传输上来的人机协同请求。
- 查看任务数据列表,查看 SDK 同步传输上来的任务数据。
💻 六.体验环境
目前第一个版本测试版本已发布并部署到公网,大家可以访问体验

可以自行使用邮箱进行账号注册
注册完成后,登陆 ➡️

目前第一个版本功能主要有以下几点
- 仪表盘: 支持查看总任务数、总对话数、总请求数等数据,还有基本的人机协同数据
- 任务列表:支持展示通过
GoHumanLoop SDK
同步上来的任务数据,任务数据中包括请求信息、状态和相应的审批信息等 - 人机协同:对
GoHumanLoop SDK
请求到GoHumanLoopHub
的人机协同请求,如审批、信息、对话等 - API密钥:生成给
GoHumanLoop SDK
使用的密钥和管理相关密钥
准备Demo
我准备一个测试Demo,使用LangGraph
编写了一个Agent,通过GoHumanLoop SDK
封装了人机协同的操作
python
"""
LangGraph 与 GoHumanLoop 简单集成示例
这是一个最小化示例,展示如何在 LangGraph 中使用 GoHumanLoopManager 和 LangGraphAdapter
进行人机交互。
配置:
- API 地址:https://api.gohumanloop.com/api
- API KEY: gohumanloop
"""
import os
import time
from typing import TypedDict, List, Dict
from dotenv import load_dotenv
# 导入 LangGraph 相关库
from langgraph.graph import StateGraph, END
# 导入 GoHumanLoop 相关库
from gohumanloop.adapters.langgraph_adapter import HumanloopAdapter
from gohumanloop.core.interface import HumanLoopStatus
from gohumanloop import DefaultHumanLoopManager, APIProvider, GoHumanLoopManager
from gohumanloop.utils import get_secret_from_env
import logging
logging.basicConfig(level=logging.INFO)
# 设置环境变量
os.environ["GOHUMANLOOP_API_KEY"] = "AdNsDJ1F33d81tceEm-Rh8VWKJ8ouey016nBTpaHsTc"
os.environ["GOHUMANLOOP_API_BASE_URL"] = "https://api.gohumanloop.com/api"
# 定义简单状态类型
class SimpleState(TypedDict):
messages: List[Dict[str, str]]
# 创建 LangGraphAdapter 实例
adapter = HumanloopAdapter(
manager=GoHumanLoopManager(), # 创建 GoHumanLoopManager 实例
default_timeout=600, # 默认超时时间为10分钟)
)
# 定义需要人工审批的节点
@adapter.require_info(
task_id="simple-information-test3",
additional="这是一个简单的获取信息的示例。",
)
def get_information_node(state: SimpleState, info_result={}) -> SimpleState:
"""获取信息的节点"""
print("获取人工信息...")
print(f"info_result: {info_result}")
state["messages"].append({
"role": "system",
"content": f"已获取信息: {info_result.get('response')}"
})
return state
# 定义需要人工审批的节点
@adapter.require_approval(
task_id="simple-approval-test3",
additional="这是一个简单的审批示例。",
execute_on_reject=True,
)
def human_approval_node(state: SimpleState, approval_result=None) -> SimpleState:
"""需要人工审批的节点"""
print("人工审批完成中...")
print(f"approval_result: {approval_result}")
# 处理审批结果
if approval_result:
status = approval_result.get("status")
response = approval_result.get("response", {})
if status == HumanLoopStatus.APPROVED:
state["messages"].append(
{
"role": "human",
"content": f"审批已通过!理由: {response}",
}
)
elif status == HumanLoopStatus.REJECTED:
state["messages"].append(
{
"role": "human",
"content": f"审批被拒绝。理由: {response}",
}
)
return state
def final_node(state: SimpleState) -> SimpleState:
"""最终节点"""
state["messages"].append({"role": "system", "content": "工作流程已完成!"})
return state
# 构建工作流图
def build_simple_graph():
"""构建简单工作流图"""
graph = StateGraph(SimpleState)
# 添加节点
graph.add_node("get_info", get_information_node)
graph.add_node("human_approval", human_approval_node)
graph.add_node("final", final_node)
# 设置边
graph.add_edge("get_info", "human_approval")
graph.add_edge("human_approval", "final")
graph.add_edge("final", END)
# 设置入口
graph.set_entry_point("get_info")
return graph.compile()
# 运行工作流
def run_simple_workflow():
"""运行简单工作流"""
with adapter:
# 构建工作流图
workflow = build_simple_graph()
# 初始化状态
initial_state = SimpleState(
messages=[{"role": "system", "content": "开始简单工作流..."}],
)
# 运行工作流
for output in workflow.stream(initial_state, stream_mode="values"):
print(f"状态: {output}")
# 等待一下,便于观察
time.sleep(1)
# 主函数
if __name__ == "__main__":
# 加载环境变量
load_dotenv()
# 运行工作流
run_simple_workflow()
以上是一个简单的工作流,有两个节点,分别是get_info
和human_approval
, 一个是用来获取信息,一个是来获取审批。
python
# 创建 LangGraphAdapter 实例
adapter = HumanloopAdapter(
manager=GoHumanLoopManager(), # 创建 GoHumanLoopManager 实例
default_timeout=600, # 默认超时时间为10分钟)
)
这两个节点都使用@HumanloopAdapter的方法require_info
和require_approval
来装饰,使用GoHumanLoopManager
管理器,则是要将这两个请求发向对应的GOHUMANLOOP_API_BASE_URL
的地址
我们的测试环境的API地址为:api.gohumanloop.com/api
运行测试
arduino
uv run test1.py

- 开始执行工作流,查看
GoHumanLoopHub

GoHumanLoopHub
收到获取信息协同请求

- 查看一下请求的详情,可以看到对应工作流节点的上下文信息

- 处理请求,输入响应信息

- 接收到从LangGraph工作流发送的审批请求

- 同意该请求

- 查看LangGraph工作流,已完成
以上就是我们这个LangGraph
框架下GoHumanLoopHub
体验Demo的例子
更多例子,欢迎你来探索~ 记得到时候将你的例子发给我~ 🤝🤝🤝
📖 七. 总结
以上就是本期介绍GoHumanLoopHub
介绍和基本教程全部内容了,如果觉得本文对您有帮助的话,别忘了点赞收藏转发, 谢谢~
项目地址:
参与贡献:
GoHumanLoopHub 和文档均开源,欢迎大家以问题、文档和 PR 等形式做出贡献。
更多信息欢迎你前往查看相关代码仓库
- GoHumanLoop: 增强Agent人机协同能力 |Perfecting AI workflows with human intelligence
- gohumanloop-examples : GoHumanLoop使用示例仓库
- gohumanloop-feishu GoHumanLoop飞书服务示例仓库
- gohumanloop-wework GoHumanLoop企业微信服务示例仓库
欢迎您的 Star 🌟🌟🌟~