go-claw:基于 go-agent 构建的生产级 AI 助手应用,一键接入飞书/钉钉/企微!
·
🚀 go-claw:基于 go-agent 构建的生产级 AI 助手应用,一键接入飞书/钉钉/企微!
原创力作,欢迎点赞收藏!
- go-agent(底层框架):https://gitee.com/nll/go-agent — 通用 LLM Agent 框架
- go-claw(完整应用):https://gitee.com/nll/goClaw — 开箱即用的 AI 助手
📌 一、项目简介
两层架构关系
┌─────────────────────────────────────────────────────────┐
│ go-claw(完整应用) │
│ • 渠道接入:飞书/钉钉/企微/HTTP/WebSocket/Console │
│ • 前端界面:Vue3 管理后台 + Wails 桌面应用 │
│ • 技能系统:Prompt-based Skill + 工作空间 │
│ • 记忆系统:VectorMemory + 每日记忆 │
│ • 定时任务:Cron 调度 + 主动模式 │
│ • 安全守卫:Shell 注入检测 + 路径保护 │
└─────────────────────────────────────────────────────────┘
↓ 基于
┌─────────────────────────────────────────────────────────┐
│ go-agent(通用框架) │
│ • ReAct 循环:Reasoning + Acting 迭代执行 │
│ • 流式输出:SSE 解析 + Token 记录 │
│ • 工具调用:StructuredTool + 多模态支持 │
│ • 上下文管理:压缩 + 裁剪 + 预算控制 │
│ • API 重试:指数退避 + 智能终止 │
└─────────────────────────────────────────────────────────┘
简单来说:
- go-agent ≈ Go 版的 LangChain,提供 LLM 对话、工具调用、流式输出等核心能力
- go-claw ≈ 基于 go-agent 构建的「ChatGPT Plus」,提供完整的机器人接入、前端、运维能力
核心亮点
| 特性 | 说明 |
|---|---|
| 🎯 纯 Go 实现 | 编译后约 20MB 单文件,零依赖部署 |
| 🤖 多 Agent 架构 | 每个 Agent 可独立配置模型、工具、渠道 |
| 💬 原生机器人支持 | 飞书、钉钉、企业微信官方协议深度集成 |
| 🖥️ 桌面 + Web 双模式 | Wails3 原生桌面应用,Vue3 管理后台 |
| 🛠️ 24+ 内置工具 | 天气、文件、浏览器、数据库、代码执行等 |
| 📚 Prompt-based 技能 | SKILL.md 定义技能,AI 自主理解执行 |
| 🧠 智能记忆系统 | 向量检索 + 每日记忆 + Dream 优化 |
| 🔌 MCP 协议支持 | 接入 Claude Desktop 等外部工具生态 |
🏗️ 二、架构设计
整体架构图
┌─────────────────────────────────────────────────────────────┐
│ Gateway(网关层) │
│ • 路由分发:msg.Agent → Agent 实例 │
│ • 会话管理:Session TTL 自动清理 │
│ • Agent Bus:跨 Agent 消息总线 │
└─────────────────────────────────────────────────────────────┘
↓
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ Channel │ Channel │ Channel │ Channel │
│ (飞书机器人) │ (钉钉机器人) │ (企微机器人) │ (HTTP API) │
└──────────────┴──────────────┴──────────────┴──────────────┘
↓
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ Agent │ Agent │ Agent │ Agent │
│ (default) │ (weather) │ (finance) │ (assistant) │
│ DeepSeek │ OpenAI │ Ollama │ DeepSeek │
└──────────────┴──────────────┴──────────────┴──────────────┘
↓
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ Tool │ Skill │ Memory │ Workspace │
│ (工具调用) │ (技能执行) │ (记忆检索) │ (工作空间) │
└──────────────┴──────────────┴──────────────┴──────────────┘
三层解耦设计
- Gateway(网关层):统一消息入口,负责 Agent 路由、会话生命周期、跨 Agent 通信
- Channel(渠道层):消息接入适配,支持飞书/钉钉/企微/HTTP/WebSocket/Console
- Agent(智能体层):LLM 对话循环,工具调用,记忆注入,技能执行
🚀 三、快速开始
方式一:Web 服务模式
# 1. 克隆项目
git clone https://gitee.com/nll/goClaw.git
cd goClaw
# 2. 构建前端
cd frontend && npm install && npm run build && cd ..
# 3. 配置 API Key(编辑 config.json 或设置环境变量)
export PROVIDER_DEEPSEEK_API_KEY="your-api-key"
# 4. 构建并运行
go build -tags server -o go-claw-server.exe .
./go-claw-server.exe
# 访问 http://localhost:8080
方式二:桌面应用模式
# 安装 Wails3 CLI
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
# 开发模式(热重载)
wails3 dev
# 构建桌面应用
wails3 build
# 产物:bin/go-claw.exe (~34MB)
方式三:Docker 部署
docker compose up -d
# 端口:8080 (HTTP)、8081 (WebSocket)
⚙️ 四、配置详解
最小配置示例
{
"gateway": {
"default_agent": "default",
"session_ttl": 60,
"data_dir": "goclaw-data"
},
"providers": {
"deepseek": {
"type": "openai",
"base_url": "https://api.deepseek.com/v1",
"api_key": "your-api-key",
"default_model": "deepseek-chat"
}
},
"agents": [{
"name": "default",
"provider": "deepseek",
"model": "deepseek-v4-oc",
"system_prompt": "你是一个有用的AI助手。",
"tools": ["weather", "read_file", "write_file"],
"max_iterations": 20,
"max_tokens": 32000
}],
"channels": {
"console": { "enabled": true },
"webhook": { "enabled": true, "port": 8080 }
}
}
多 Provider 配置
{
"providers": {
"deepseek": {
"type": "openai",
"base_url": "https://api.deepseek.com/v1",
"api_key": "${DEEPSEEK_API_KEY}",
"default_model": "deepseek-chat"
},
"openai": {
"type": "openai",
"base_url": "https://api.openai.com/v1",
"api_key": "${OPENAI_API_KEY}",
"default_model": "gpt-4o"
},
"ollama": {
"type": "ollama",
"base_url": "http://localhost:11434",
"default_model": "qwen2.5:14b"
}
}
}
环境变量支持
# Provider 级别(推荐)
export PROVIDER_DEEPSEEK_API_KEY="sk-xxx"
export PROVIDER_DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"
# 兼容旧配置
export OPENAI_API_KEY="sk-xxx"
💬 五、机器人渠道接入
5.1 飞书机器人

飞书采用 WebSocket 长连接 模式,主动连接飞书服务器,无需本地开端口。
{
"channels": {
"lark": {
"enabled": true,
"app_id": "cli_xxx",
"app_secret": "xxx",
"show_tool_messages": true,
"show_thinking": true,
"stream_output": true
}
}
}
特性支持:
- ✅ 卡片消息渲染
- ✅ Markdown 表格转原生 table
- ✅ 文件上传/下载
- ✅ Reaction 回执(👍 等表情)
5.2 钉钉机器人

钉钉采用 Stream v2 协议(WebSocket),支持流式消息。
{
"channels": {
"dingtalk": {
"enabled": true,
"client_id": "dingxxx",
"client_secret": "xxx",
"stream_output": true
}
}
}
特性支持:
- ✅ sessionWebhook 回复
- ✅ 文件上传(OAPI)
- ✅ 流式消息分段发送
5.3 企业微信机器人

企业微信采用 WebSocket 长连接 模式。
{
"channels": {
"wecom": {
"enabled": true,
"bot_id": "wwxxx",
"secret": "xxx",
"stream_output": true
}
}
}
特性支持:
- ✅ 流式消息
- ✅ 文件分片上传(512KB/chunk,最大 20MB)
- ✅ 主动消息发送
5.4 Per-Agent 渠道绑定
每个 Agent 可独立绑定专属机器人渠道:
{
"agents": [
{
"name": "default",
"provider": "deepseek",
"channels": {
"lark": { "enabled": true, "app_id": "cli_aaa", "app_secret": "xxx" }
}
},
{
"name": "finance",
"provider": "openai",
"channels": {
"wecom": { "enabled": true, "bot_id": "wwbbb", "secret": "xxx" }
}
}
]
}
🛠️ 六、工具系统
内置工具一览

| 工具 | 说明 | 默认加载 |
|---|---|---|
get_current_time | 当前日期时间 | ✅ |
system_info | 系统信息 | ✅ |
http_request | HTTP 请求 | ✅ |
web_search | 网页搜索 | ✅ |
url_summary | 网页正文提取 | ✅ |
calculate | 数学计算 | ✅ |
run_code | 运行 Python/JS 代码 | ✅ |
read_pdf | PDF 读取 | ✅ |
ocr_image | 图片 OCR | ✅ |
generate_image | AI 图片生成 | ✅ |
weather | 天气查询 | 需配置 |
execute_command | Shell 命令执行 | 需配置 |
read_file | 读文件 | 需配置 |
write_file | 写文件 | 需配置 |
browser_use | 浏览器自动化 | 需配置 |
send_file | 发送文件给用户 | 需配置 |
工具配置示例
{
"agents": [{
"name": "default",
"tools": [
"weather",
"read_file", "write_file", "edit_file",
"execute_command",
"browser_use",
"send_file"
]
}]
}
自定义工具开发
// internal/tool/my_tool.go
package tool
type MyTool struct{}
func (t *MyTool) Name() string {
return "my_tool"
}
func (t *MyTool) Description() string {
return "我的自定义工具"
}
func (t *MyTool) Parameters() map[string]interface{} {
return map[string]interface{}{
"type": "object",
"properties": map[string]interface{}{
"input": map[string]string{"type": "string"},
},
"required": []string{"input"},
}
}
func (t *MyTool) Execute(args map[string]interface{}) (string, error) {
input := args["input"].(string)
return "处理结果: " + input, nil
}
// 注册
tool.GlobalRegistry.Register("my_tool", &MyTool{})
📚 七、技能系统(Skill)

什么是 Skill?
Skill 是 Prompt-based 的任务能力模块,区别于传统 Tool 的参数调用模式:
- 系统提示词注入:注入技能名称、描述、SKILL.md 路径
- AI 主动读取:通过
read_file工具读取完整 SKILL.md - 理解与执行:AI 理解技能流程,使用工具执行
SKILL.md 格式
goclaw-data/skills/weather-query/
└── SKILL.md
---
name: weather-query
description: 查询城市天气
metadata:
openclaw:
emoji: "🌤️"
requires:
bins: [curl]
---
## 核心能力
- 查询任意城市的实时天气
- 支持未来 3 天预报
## 执行步骤
1. 确认城市名称 {{city}}
2. 调用 weather 工具查询
3. 格式化输出结果
## 输入要求
- city: 城市名称(中文或英文)
## 输出格式
- 温度、湿度、风向、天气状况
## 异常处理
- 城市不存在时提示用户重新输入
内置 Skill 示例
| Skill | 功能 |
|---|---|
excel-xlsx | Excel 工作簿创建/编辑 |
powerpoint-pptx | PowerPoint 演示文稿制作 |
word-docx | Word 文档处理 |
tushare-data | 中文自然语言金融数据查询 |
🧠 八、记忆系统
VectorMemory 向量记忆
{
"memory": {
"type": "vector",
"embedding_model": "text-embedding-3-small",
"similarity_threshold": 0.7
}
}
工作流程:
- 对话结束后提取关键信息
- 生成 Embedding 向量
- 存入向量数据库
- 下次对话时语义检索相关记忆
每日记忆机制
goclaw-data/workspaces/default/
└── MEMORY.md # 每日对话要点自动追加
# 2024-01-15
- 用户提到正在学习 Go 语言
- 用户的项目使用 Vue3 + Element Plus
- 用户偏好使用 DeepSeek 模型
# 2024-01-14
- 用户询问了天气查询工具的实现
Dream 优化
空闲时自动执行记忆整理:
- 去重:合并相似记忆
- 压缩:长对话摘要为要点
- 清理:低重要性记忆自动遗忘
🤝 九、多 Agent 协作
协作工具
| 工具 | 说明 |
|---|---|
list_agents | 列出所有 Agent |
chat_with_agent | 与指定 Agent 对话 |
submit_to_agent | 提交后台任务 |
check_agent_task | 查询任务结果 |
配置示例
{
"agents": [
{
"name": "default",
"provider": "deepseek",
"tools": ["list_agents", "chat_with_agent"],
"system_prompt": "你是主助手,可以调用其他专业 Agent 协作。"
},
{
"name": "weather",
"provider": "deepseek",
"tools": ["weather"],
"system_prompt": "你是天气查询专家。"
},
{
"name": "finance",
"provider": "openai",
"tools": ["tushare-data", "calculate"],
"system_prompt": "你是金融数据分析专家。"
}
]
}
对话示例
用户:帮我查一下北京天气,然后分析茅台股票最近走势
Agent(default):好的,我来协调处理。
→ 调用 chat_with_agent("weather", "查询北京天气")
→ 调用 chat_with_agent("finance", "分析茅台股票走势")
Agent(weather):北京今天晴,气温 5°C,空气质量优。
Agent(finance):茅台(600519)近5日涨跌幅 +3.2%...
Agent(default):综合结果:北京今天天气不错,茅台近期走势向好...
⏰ 十、定时任务

配置示例
{
"cron": {
"enabled": true,
"jobs": [
{
"name": "每日提醒",
"schedule": "09:00",
"type": "agent",
"agent_name": "default",
"agent_prompt": "根据 MEMORY.md 提醒用户今日待办事项",
"active_start": "08:00",
"active_end": "22:00"
},
{
"name": "每日报表",
"schedule": "0 18 * * *",
"type": "agent",
"agent_name": "finance",
"agent_prompt": "生成今日投资组合日报"
}
]
}
}
调度格式
| 格式 | 示例 | 说明 |
|---|---|---|
@every | @every 5m | 每 5 分钟 |
HH:MM | 09:00 | 每天 09:00 |
| Cron | 0 9 * * 1-5 | 工作日 09:00 |
🔒 十一、安全守卫

配置
{
"security": {
"enabled": true,
"deny_shell_inject": true,
"deny_sensitive_path": true,
"guard_browser": true,
"allowed_paths": ["D:/workspace", "E:/projects"]
}
}
三层防护
- Shell 注入检测:拦截
$(cmd)、|cmd、;cmd、rm -rf /等危险命令 - 文件访问保护:阻止访问
.env、credentials、/etc/passwd等敏感文件 - 规则引擎:deny/guard/approve 三级审批
🔌 十二、MCP 协议集成

配置示例
{
"mcp": {
"enabled": true,
"servers": [
{
"name": "filesystem",
"transport": "stdio",
"command": "mcp-server-filesystem",
"args": ["--root", "/data"]
},
{
"name": "web",
"transport": "streamable_http",
"url": "https://mcp-server.example.com"
}
]
}
}
支持的传输模式
| 模式 | 说明 |
|---|---|
stdio | 标准输入输出 |
streamable_http | 可流式 HTTP |
sse | Server-Sent Events |
🖥️ 十三、前端管理后台
技术栈
| 技术 | 用途 |
|---|---|
| Vue 3 | 前端框架 |
| Pinia | 状态管理 |
| Vue Router 5 | 路由管理 |
| Element Plus | UI 组件库 |
| ECharts | 数据可视化 |
| marked + highlight.js | Markdown 渲染 |
页面截图展示
1. 对话页面(核心功能)

2. 渠道管理页面

3. Agent 配置页面

4. 模型配置页面

5. 技能管理页面

6. 定时任务页面

7. Token 消耗统计页面

8. 调试日志页面

14 个管理页面完整列表
| 路由 | 页面 | 功能 |
|---|---|---|
/ | 对话 | 流式聊天、工具调用展示、Thinking 展示 |
/channels | 渠道管理 | 飞书/钉钉/企微配置 |
/sessions | 会话管理 | 历史会话查看、删除 |
/agent-config | Agent 配置 | 创建/编辑 Agent、工具选择 |
/skills | 技能管理 | 技能池扫描、启用/禁用 |
/tools | 工具管理 | 工具启用/禁用 |
/models | 模型配置 | 多 Provider 配置 |
/cron-jobs | 定时任务 | 任务管理、手动触发 |
/files | 文件管理 | 工作空间文件浏览 |
/debug | 调试日志 | 实时日志查看 |
/inbox | 事件通知 | 系统事件订阅 |
/workspace | 工作空间 | Agent 人设文件编辑 |
/mcp | MCP 配置 | MCP Server 管理 |
/security | 安全规则 | 审批队列、规则配置 |
📊 十四、项目定位对比
go-agent vs LangChain(底层框架对比)
| 特性 | go-agent | LangChain |
|---|---|---|
| 语言 | 纯 Go | Python |
| 核心能力 | ReAct 循环、工具调用、流式输出 | 同左 |
| 部署 | 单文件嵌入 | 多依赖 |
| 性能 | 高并发、低内存 | 一般 |
| 适用场景 | 构建自定义 Agent 应用 | Python 生态集成 |
go-claw vs Dify(完整应用对比)
| 特性 | go-claw | Dify |
|---|---|---|
| 底层框架 | go-agent | 自研 |
| 渠道绑定 | Per-Agent 级别 | 全局配置 |
| Skill 机制 | Prompt-based | 插件系统 |
| 桌面应用 | Wails 原生 | Web Only |
| 中文机器人 | 飞书/钉钉/企微原生协议 | 支持 |
| 私有部署 | 单文件 20MB | Docker Compose |
| MCP 支持 | ✅ | ❌ |
🎯 十五、适用场景
| 场景 | 说明 |
|---|---|
| 企业智能客服 | 飞书/钉钉/企微机器人智能客服 |
| 个人 AI 助手 | 桌面应用本地运行,数据私有化 |
| 多 Agent 协作 | 不同 Agent 负责不同领域 |
| 金融数据分析 | tushare-data Skill 中文查询 A 股 |
| 办公自动化 | Excel/PPT/Word Skill 自动生成 |
| 定时提醒 | Cron 系统主动推送 |
📝 十六、总结
项目关系
- go-agent:通用 LLM Agent 框架,提供 ReAct 循环、工具调用、流式输出等核心能力,类似 Go 版 LangChain
- go-claw:基于 go-agent 构建的完整应用,提供机器人接入、前端界面、技能系统、记忆系统等开箱即用功能
go-claw 独特优势
- 原生中文企业机器人支持:飞书、钉钉、企业微信官方协议深度集成
- Per-Agent 渠道架构:每个 Agent 可独立绑定专属机器人渠道
- Skill Prompt-based 模式:技能通过 SKILL.md 定义,扩展性强
- Wails 原生桌面体验:同时支持 Web 和桌面两种运行模式
- 纯 Go 实现零依赖:编译后单文件运行,部署简单
适用人群
| 人群 | 推荐使用 |
|---|---|
| 想快速搭建企业 AI 助手 | 直接使用 go-claw |
| 想自定义 Agent 逻辑 | 基于 go-agent 开发 |
| 想学习 Agent 实现 | 阅读两个项目源码 |
🔗 相关链接
- go-agent(通用框架):https://gitee.com/nll/go-agent
- go-claw(完整应用):https://gitee.com/nll/goClaw
- 问题反馈:Issues
如果觉得项目有用,欢迎 ⭐ Star 支持!
如有问题欢迎评论区留言讨论!
更多推荐



所有评论(0)