🚀 go-claw:基于 go-agent 构建的生产级 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  │
│  (工具调用)   │  (技能执行)   │  (记忆检索)   │  (工作空间)   │
└──────────────┴──────────────┴──────────────┴──────────────┘

三层解耦设计

  1. Gateway(网关层):统一消息入口,负责 Agent 路由、会话生命周期、跨 Agent 通信
  2. Channel(渠道层):消息接入适配,支持飞书/钉钉/企微/HTTP/WebSocket/Console
  3. 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_requestHTTP 请求
web_search网页搜索
url_summary网页正文提取
calculate数学计算
run_code运行 Python/JS 代码
read_pdfPDF 读取
ocr_image图片 OCR
generate_imageAI 图片生成
weather天气查询需配置
execute_commandShell 命令执行需配置
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 的参数调用模式:

  1. 系统提示词注入:注入技能名称、描述、SKILL.md 路径
  2. AI 主动读取:通过 read_file 工具读取完整 SKILL.md
  3. 理解与执行: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-xlsxExcel 工作簿创建/编辑
powerpoint-pptxPowerPoint 演示文稿制作
word-docxWord 文档处理
tushare-data中文自然语言金融数据查询

🧠 八、记忆系统

VectorMemory 向量记忆

{
  "memory": {
    "type": "vector",
    "embedding_model": "text-embedding-3-small",
    "similarity_threshold": 0.7
  }
}

工作流程

  1. 对话结束后提取关键信息
  2. 生成 Embedding 向量
  3. 存入向量数据库
  4. 下次对话时语义检索相关记忆

每日记忆机制

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:MM09:00每天 09:00
Cron0 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"]
  }
}

三层防护

  1. Shell 注入检测:拦截 $(cmd)|cmd;cmdrm -rf / 等危险命令
  2. 文件访问保护:阻止访问 .envcredentials/etc/passwd 等敏感文件
  3. 规则引擎: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
sseServer-Sent Events

🖥️ 十三、前端管理后台

技术栈

技术用途
Vue 3前端框架
Pinia状态管理
Vue Router 5路由管理
Element PlusUI 组件库
ECharts数据可视化
marked + highlight.jsMarkdown 渲染

页面截图展示

1. 对话页面(核心功能)

在这里插入图片描述

2. 渠道管理页面

在这里插入图片描述

3. Agent 配置页面

在这里插入图片描述

4. 模型配置页面

在这里插入图片描述

5. 技能管理页面

在这里插入图片描述

6. 定时任务页面

在这里插入图片描述

7. Token 消耗统计页面

在这里插入图片描述

8. 调试日志页面

在这里插入图片描述

14 个管理页面完整列表

路由页面功能
/对话流式聊天、工具调用展示、Thinking 展示
/channels渠道管理飞书/钉钉/企微配置
/sessions会话管理历史会话查看、删除
/agent-configAgent 配置创建/编辑 Agent、工具选择
/skills技能管理技能池扫描、启用/禁用
/tools工具管理工具启用/禁用
/models模型配置多 Provider 配置
/cron-jobs定时任务任务管理、手动触发
/files文件管理工作空间文件浏览
/debug调试日志实时日志查看
/inbox事件通知系统事件订阅
/workspace工作空间Agent 人设文件编辑
/mcpMCP 配置MCP Server 管理
/security安全规则审批队列、规则配置

📊 十四、项目定位对比

go-agent vs LangChain(底层框架对比)

特性go-agentLangChain
语言纯 GoPython
核心能力ReAct 循环、工具调用、流式输出同左
部署单文件嵌入多依赖
性能高并发、低内存一般
适用场景构建自定义 Agent 应用Python 生态集成

go-claw vs Dify(完整应用对比)

特性go-clawDify
底层框架go-agent自研
渠道绑定Per-Agent 级别全局配置
Skill 机制Prompt-based插件系统
桌面应用Wails 原生Web Only
中文机器人飞书/钉钉/企微原生协议支持
私有部署单文件 20MBDocker 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 独特优势

  1. 原生中文企业机器人支持:飞书、钉钉、企业微信官方协议深度集成
  2. Per-Agent 渠道架构:每个 Agent 可独立绑定专属机器人渠道
  3. Skill Prompt-based 模式:技能通过 SKILL.md 定义,扩展性强
  4. Wails 原生桌面体验:同时支持 Web 和桌面两种运行模式
  5. 纯 Go 实现零依赖:编译后单文件运行,部署简单

适用人群

人群推荐使用
想快速搭建企业 AI 助手直接使用 go-claw
想自定义 Agent 逻辑基于 go-agent 开发
想学习 Agent 实现阅读两个项目源码

🔗 相关链接

如果觉得项目有用,欢迎 ⭐ Star 支持!
如有问题欢迎评论区留言讨论!

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐