去年我想给自己部署一个 AI Agent。
市面上 AI Agent 产品不少,大厂也纷纷入场,但翻来覆去就是这几个问题:
- 开源的不安全——OpenClaw(龙虾)功能最全、社区最大,但安全基本裸奔,成本控制也没有,生产环境不敢上
- 安全的不开源——商业产品合规做得好,但闭源云托管,数据出境不可控,按月付费不便宜
- 能用的不支持国内平台——飞书、钉钉、企微、微信公众号,海外产品基本不覆盖
我需要的是:开源产品的功能广度 + 商业产品的安全等级 + 国内平台全覆盖,同时自托管、单二进制部署。找了一圈没有,就自己造了一个。一个人 + Claude 结对,六个仓库,全栈 AI Agent。这就是 HexClaw(河蟹)。
本文拆解完整架构——技术决策、实现细节、踩过的坑,摊开讲。
开始之前,先对齐几个概念(如果你已经很熟可以跳过):
LLM = 读过所有书的天才大学生,啥都懂但知识有保质期,偶尔会编(幻觉) RAG = 给这个大学生递小抄,让他引经据典而不是胡编 MCP = 万能 USB 转接头,让大脑和各种工具即插即用 Agent = 全能打工人,能自主规划、调用工具、交付结果 Skills = 打工人的专业技能证书,按需加载 Agent 集群 = 一群打工人组成的团队,分工协作
HexClaw 做的事情,就是把这些概念工程化落地成一个能跑的系统。
关键数字
| 指标 | 数值 |
|---|---|
| 仓库数 | 6 个(toolkit → ai-core → hexagon → hexclaw → hexclaw-desktop / hexagon-ui) |
| 全生态代码量 | ~56 万行(hexagon 21.5w + hexclaw-desktop 17.7w + toolkit 8.1w + hexclaw 5.8w + ai-core 2.3w + hexagon-ui 0.3w) |
| 基础库代码量 | 81,000 行(toolkit,纯 Go 标准库,零外部依赖) |
| 沙箱代码量 | 2,713 行(Go 原生三平台沙箱,替代 Docker,启动 <10ms) |
| Agent 类型 | 10 种(从 ReAct 到 Supervisor,覆盖简单到复杂全谱系) |
| 安全网关 | 6 层 Fail-closed 管道(Auth → 限流 → 预算 → 注入检测 → RBAC → 审计) |
| 消息平台 | 13 种(飞书 / 钉钉 / 企微 / 微信 / Telegram / Discord / Slack / WhatsApp / LINE / Matrix / Email / Web / API) |
| API 端点 | 71 个(RESTful + WebSocket) |
| 向量存储 | 8 种 后端(Qdrant / FAISS / PgVector / Redis / Milvus / Chroma / Pinecone / Weaviate) |
| 启动时间 | <100ms(Go 单二进制,hexclaw serve
一条命令) |
全景:六仓库、五层架构
HexClaw 生态依赖关系图
hexclaw-desktop (Tauri 桌面端)
hexagon-ui (观测台)
│
┌─────▼─────┐
│ hexclaw │ 应用层:适配器、网关、Skill、API
└─────┬─────┘
│
┌─────▼─────┐
│ hexagon │ AI Agent 框架引擎:ReAct、Workflow、
│ │ Plugin、A2A、Graph、Compose
└──┬─────┬──┘
│ │
┌─────▼──┐ │
│ai-core │ │ AI 能力底座:LLM Provider、
│ │ │ Embedding、Function Calling
└────┬───┘ │
│ │
┌────▼──────▼┐
│ toolkit │ 通用基础库(最底层,所有 Go 模块依赖)
└────────────┘
六个仓库,依赖严格单向自下而上,不允许反向依赖和跨层调用——这是整个生态可复用、可扩展、可独立演进的基础:
- toolkit / ai-core 可以被任何 Go 项目引用,不绑定 HexClaw
- hexagon 作为通用 AI Agent 引擎,可脱离 hexclaw 独立使用,构建完全不同的 Agent 应用
- hexclaw 作为 AI Agent 应用后端,只做应用层编排,新增能力下沉到对应层而非就地实现
| 层级 | 职责 | 变化频率 |
|---|---|---|
| toolkit | 通用基础库(HTTP / 缓存 / 加密 / 协程池) | 极低 |
| ai-core | AI 能力底座(7 种 LLM Provider / Embedding / Smart Router) | 中等 |
| hexagon | Agent 框架引擎(10 种 Agent / Graph 编排 / RAG / 安全 / 可观测) | 中等 |
| hexclaw | 应用层(13 平台适配 / 6 层网关 / Skill / 71 API) | 高 |
| hexclaw-desktop / hexagon-ui | 桌面 / 观测台 | 高 |
为什么选 Go、为什么自研框架?
两个问题一起回答。
语言选择:Agent 的瓶颈是 I/O——等 LLM
响应、等工具执行、等 13 个平台 Webhook。goroutine 比 Python asyncio
高效一个数量级且没有 GIL。部署上,hexclaw serve
一条命令跑,不用折腾虚拟环境。
框架选择:Python 阵营评估过 LangChain/LangGraph(生态最大但受限于 GIL)、CrewAI(上手快但编排偏弱);Go 阵营评估过 Eino(字节出品,但安全模块缺失)。最终自建——因为 Go 原生 + 企业级安全 + 完整 RAG + 生产级可观测 这个组合,确实没有现成的。
Hexagon 取名自「六边形战士」,聚焦六大维度均衡发展:易用性、性能、扩展性、编排、可观测性、安全。
Hexagon AI Agent Framework 六层架构图
Hexagon AI Agent Framework Architecture
========================================
┌─ Application Layer ────────────────────────────────────────┐
│ ChatBot RAG Agent Workflow Multi-Agent Custom │
├─ Orchestration Layer ──────────────────────────────────────┤
│ Router Planner Scheduler Executor Graph State │
├─ Agent Core Layer ─────────────────────────────────────────┤
│ Agent Role Team Network Handoff Context Msg │
├─ Capability Layer ─────────────────────────────────────────┤
│ LLM Provider RAG Engine Tool System Memory KB │
│ (ai-core) (ai-core) (ai-core) │
├─ Infrastructure Layer ─────────────────────────────────────┤
│ Tracer Logger Metrics Config Security Plugin │
├─ Foundation Layer ─────────────────────────────────────────┤
│ toolkit (lang | crypto | net | cache | util | collection) │
└────────────────────────────────────────────────────────────┘
3 行代码入门,声明式配置进阶,图编排驾驭复杂场景:
response, _ := hexagon.Chat(ctx, "What is Go?") // 最简入门
agent := hexagon.QuickStart( // 带工具
hexagon.WithTools(calculator),
hexagon.WithSystemPrompt("你是一个数学助手"),
)
team := hexagon.NewTeam("research-team", // 多 Agent 团队
hexagon.WithAgents(researcher, writer, reviewer),
hexagon.WithMode(hexagon.TeamModeSequential),
)Runnable[I,O]:一个接口统一一切
Python LangChain 中 Agent、Tool、Chain、Retriever 是不同抽象,组合需要胶水代码。Hexagon 的做法更激进:所有组件实现同一个泛型接口,6 种执行范式(Invoke / Stream / Batch / Collect / Transform / BatchStream)。
pipeline := core.Compose(tokenizer, model) // 自由组合
adapted := core.InvokeToStream(r) // 自动获得流式能力
fastest := core.Race(future1, future2) // 竞速取最快Agent 可以作为另一个 Agent 的工具,RAG 管线可以嵌入图编排节点——因为它们是同一个接口。
与主流框架对比:
| 维度 | Hexagon | LangGraph | CrewAI | Eino (字节) |
|---|---|---|---|---|
| 入门门槛 | 3 行代码 | 需理解 StateGraph | 最友好 | 需理解 Component 组合 |
| 性能上限 | 100k+ 并发 | GIL <10k | GIL | 100k+ |
| 编排能力 | Graph + Chain + Workflow + Process | StateGraph 最成熟 | 基础 Team | Graph + Flow |
| 安全内建 | 6 模块 | 无 | 基础 | 无 |
| 可观测 | OTel + Prometheus + Dev UI | 需外购 LangSmith | 基础 | Devops 插件 |
| RAG 深度 | 7 环节 × 8 向量后端 | 需配 LangChain | 基础 | 基础 |
| 生产验证 | 早期阶段 | 广泛 | 广泛 | 字节大规模 |
核心差异化在安全维度。Eino 在注入检测、PII 脱敏、RBAC、成本控制上完全空白——意味着如果你用 Eino 构建面向用户的 Agent,这些安全能力要自己从零搭建。Hexagon 把它们做成了框架内建能力,开箱即有。
一句话总结:LangChain 的接口思想 + LangGraph 的编排能力 + 企业级安全栈,用 Go 重写。感知层(Agent)→ 执行层(Skills + MCP)→ 知识层(RAG + LLM + Memory)三层全部内建。
十种 Agent + 多 Agent 协作
Agent 的演进从简单到复杂分四个阶段,Hexagon 用 10 种 Agent + 协作协议全部覆盖:
| 阶段 | Hexagon 实现 | 典型场景 |
|---|---|---|
| 问答 | BaseAgent | FAQ、知识查询 |
| SOP 流程 | SequentialAgent / Process | 审批流、OA |
| 通用自主 | ReActAgent / ReflectionAgent / SelfDiscoveryAgent / PlanExecuteAgent | 个人助理、开放任务 |
| 多 Agent 协同 | ParallelAgent / LoopAgent / DeepAgent / SupervisorAgent | 软件开发、研究报告 |
嵌套天然支持——Supervisor 的工人可以是 ReActAgent,ReActAgent 的工具可以触发 PlanExecuteAgent。
协作层面:Team(4 种模式)/ Handoff(Swarm 风格切换)/ Network(Mesh/Hub/Ring/Tree 拓扑)/ Consensus(投票决策)/ Registry(服务发现 + 负载均衡)/ A2A(Google Agent-to-Agent 协议,Go 生态少有)。四层状态管理 + Snapshot/Restore。
图编排引擎
g, _ := graph.NewGraph[MyState]("support").
AddNode("classify", classifyIntent).
AddNode("faq", handleFAQ).
AddConditionalEdge("classify", routerFn, routeMap).
SetEntryPoint("classify").Build()条件路由 · 并行执行 · 检查点持久化 · Human-in-the-Loop · 时间旅行 · 子图嵌套 · Pregel BSP · 循环 + 屏障。另有链式编排、工作流引擎、确定性流程(Process,状态机驱动)。
Hexagon 数据流:User → Agent → LLM → Tool → Result
User ──→ Agent ──→ LLM ──→ Tool ──→ Result
│
├──→ Memory (记忆存取)
└──→ RAG (知识检索)
RAG 管线:7 环节可插拔
文档 → Loader → Splitter → Embedder → Indexer → Retriever → Reranker → Synthesizer
| 环节 | 亮点 |
|---|---|
| Loader | 8 格式(含 XLSX / PPTX / DOCX / PDF / OCR) |
| Splitter | 6 种(含 Token / Code 语义分割) |
| Retriever | 6 种(Hybrid / HyDE / Adaptive / ParentDoc) |
| Reranker | RRF / LLM / Cross-Encoder / Cohere |
| Synthesizer | Refine / TreeSummarize |
向量存储 8 后端:Qdrant / FAISS / PgVector / Redis / Milvus / Chroma / Pinecone / Weaviate。
安全体系 + 可观测性
| 组件 | 实现 |
|---|---|
| Prompt 注入 | 10 种检测模式 + 启发式评分 + Unicode 安全匹配 |
| PII 脱敏 | 7 种(手机 / 身份证 / 银行卡 Luhn / 邮箱 / IP / 信用卡 / 护照) |
| RBAC | 4 角色 · 角色继承 · 9 种条件运算符 · Allow/Deny 策略引擎 |
| 成本控制 | 多厂商定价表 · 微美元精度(cost×10⁶ 存为 int64) |
| 内容过滤 | Aho-Corasick O(n) 多模式匹配 · 9 种分类 · 毒性检测器 |
| 审计日志 | 10 种事件 · 缓冲批量写入 · 查询引擎 + 报告生成 |
| 可观测 | 5 种 Span · OTel 一行集成 · Prometheus
/metrics · 4 种指标 |
钩子系统覆盖 Run / Tool / LLM / Retriever / Stream 五类事件,位掩码优化避免空调用。hexclaw 的预算控制、工具审批、自动记忆提取全部通过钩子实现,未侵入框架核心。
性能 + 更多能力
| 指标 | Hexagon (Go) | Python 框架 | 倍数 |
|---|---|---|---|
| 并发 Agent | 100k+ | <10k (GIL) | 10x |
| 二进制大小 | ~20MB | ~500MB+ | 25x |
| 启动时间 | <100ms | 2-5s | 20-50x |
| 单 Agent 内存 | ~1MB | ~10MB | 10x |
另有:OS 级沙箱 · 响应式流处理引擎 · 7 种记忆实现 · MCP Client+Server · 智能文档工作流(ADW)· 确定性流程(Process)。
应用层编排,框架层实现。 hexclaw 不写 Agent 推理——组装 Hexagon 的;不写安全检查——编排 Guard Chain;不写 RAG——配置 RAG Engine。
hexclaw:hexagon 是引擎,hexclaw 是整辆车
【图:HexClaw 应用六层架构】
HexClaw Application Architecture
================================
┌─ Platform Adapter ──────────────────────────────────────────────┐
│ Web 飞书 Telegram 钉钉 Discord Slack 企微 微信 │
│ WhatsApp LINE Matrix Email REST API (共 13 种) │
├─ Security Gateway (6-Layer Pipeline) ───────────────────────────┤
│ Auth → RateLimit → CostCheck → InputSafety → Permission → Audit│
├─ Agent Engine ──────────────────────────────────────────────────┤
│ ReAct Loop 3D Budget Control Tool Executor + Hooks │
│ Session Manager Context Compaction Multi-Agent Router │
│ Two-Pass Stream Tool Approval Gate Auto Memory Extract │
├─ Capability Layer ──────────────────────────────────────────────┤
│ Skill System Knowledge (RAG) LLM Router │
│ (Builtin+Mkt+MCP) (FTS5+Vector+MMR) (Cost/Quality/Latency) │
│ Memory (4-Layer) Semantic Cache (Singleflight+LRU+TTL) │
├─ Infrastructure ────────────────────────────────────────────────┤
│ OS Sandbox MCP Client Cron + Webhook │
│ (Seatbelt/NS/Win) (stdio/SSE/HTTP) REST API (71 端点) │
│ Canvas (8 组件) Voice (STT/TTS) WebSocket 实时流 │
├─ Storage & Config ──────────────────────────────────────────────┤
│ SQLite (WAL) FTS5 全文搜索 YAML+ENV Audit JSONL .md │
└─────────────────────────────────────────────────────────────────┘
Powered by: Hexagon ← ai-core ← toolkit
核心数据流
用户消息 (飞书/Telegram/Discord/微信/...)
→ 平台适配 (Adapter) → 安全网关 (6层) → 会话路由 (Router)
→ Agent 引擎 (ReAct)
├─ 快速路径: Skill.Match() → 毫秒级,零 LLM 消耗
└─ 主路径: ReAct 循环 → 沙箱执行 → 同步/流式返回
六层安全网关
请求 → [Auth] → [RateLimit] → [CostCheck] → [InputSafety] → [Permission] → [Audit] → 引擎
| 层 | 异常策略 | 实现 |
|---|---|---|
| Auth | 拒绝 | constant-time 比较 · HMAC-SHA256 签名 24h 窗口 |
| RateLimit | 拒绝 | 滑动窗口 · 30s 清理 · 100K 窗口硬上限防 OOM |
| CostCheck | Fail-closed | 不缓存预算,实时查询;异常即阻断 |
| InputSafety | Fail-closed | Guard Chain 组合注入检测 + PII 脱敏 + 内容过滤 |
| Permission | 拒绝 | 工具级黑名单优先于白名单 |
| Audit | 放行 | 仅记录,不阻断 |
第 3、4 层异常时直接拒绝——宁可给用户看个”服务暂时不可用”,也不能让一个失控的 ReAct 循环把你的 API 余额刷到零。
十三平台适配
统一消息模型 + 4 方法 Adapter 接口,每个适配器 ~150 行。
值得关注的平台特定实现: - 企微:AES-256-CBC 加解密
+ 双检锁 Token 缓存 - 微信:5 秒被动回复 +
超时自动切客服异步推送 - Discord:Gateway WebSocket
心跳 + 流式消息编辑 - Web:Origin 白名单仅允许
localhost 和 tauri://localhost
ReAct 引擎
引擎在 Hexagon ReActAgent 之上增加应用层编排(单文件 47KB):
LoadContext → InjectContext(RAG+记忆) → InjectTools(Skill+MCP, 上限40)
→ ReAct 循环: LLM 推理 → ToolApproval → ToolExecutor → BudgetUpdate
→ AutoMemory → SaveHistory → 返回
3D 原子预算:用三个 atomic.Int64
分别追踪 Token、时长、成本。为什么成本不用 float64?因为 Go 的 atomic
包不支持浮点原子操作,而 Agent
的工具调用是高并发的。解法是把美元乘以一百万存成整数(微美元精度),$0.00004
变成 40——整数原子操作,零锁开销。内置 20+ 模型定价表,支持子 Agent
预算分配与回收。
Two-Pass Streaming:中间轮
Complete()(检测 tool_calls),最终轮
Stream()(打字机效果)。避免为不可见步骤建流连接。流式
goroutine 使用独立 context.Background()
保存消息,防用户关闭页面丢数据。
Hook Chain:TruncateHook 保留 60% 头部 + 20% 尾部 · SanitizeHook 只清洗外部来源 · AuditHook 即使失败也运行。工具缓存 SHA256 key,破坏性工具自动跳过。
Skill 生态(ClawHub):37 Skill + 38 MCP Server。格式 Markdown + YAML frontmatter,来源:18 原创 + 12 社区适配 + 7 个 OpenClaw playbook 移植。MCP 覆盖 18 品类(文件系统 / GitHub / 搜索 / 浏览器 / 数据库 / Slack / Docker / K8s / AWS 等)。
Go 原生三平台沙箱:2713 行替代 Docker
OpenClaw 等绝大多数竞品的代码执行依赖 Docker。hexclaw 用 2713 行纯 Go 实现内核级隔离:
macOS Seatbelt(与 Claude Code / Codex
同底层)——动态 SBPL 策略,(deny default) 默认拒绝。Docker
容器默认拥有大部分 syscall 权限做不到这一点。
Windows 五层纵深——① Restricted Token(UNTRUSTED_RID 0x0000)→ ② ACL 文件系统隔离 → ③ Job Object(512MB / 10 进程)→ ④ Low Box Token 内核级断网 → ⑤ Alternate Desktop(防 Shatter Attack)。启动 ~50ms / ~5MB,对比 Docker Desktop 500ms-2s。
Linux 五层隔离——① Namespace → ② pivot_root → ③ seccomp → ④ 进程加固 → ⑤ 两阶段 re-exec。不兼容系统自动降级:CLONE_NEWUSER 失败 → Landlock → 兜底 seccomp。
三平台共享 NetPolicy 引擎:黑名单优先 → 端口 → 模式,不可绕过。
沙箱实测对比(Linux):
| 维度 | HexClaw | OpenClaw | Codex | Claude Code |
|---|---|---|---|---|
| 默认状态 | ON(零配置) | OFF(需手动配置) | ON | ON |
| 外部依赖 | 零 | Docker ~500MB | 零 | 零 |
| 启动延迟 | <10ms | ~200ms (docker exec) | <10ms | <10ms |
| 内存开销 | ~0 | 100-200MB | ~0 | ~0 |
| 实现方式 | ~2700 行 Go syscall | Docker API 封装 | ~7000 行 Rust (bubblewrap) | 系统内建 (Seatbelt) |
知识库 · LLM 路由 · 记忆
知识库:Recursive Split → FTS5 + 向量嵌入 → 混合评分(0.7v + 0.3t)→ 时间衰减 → MMR 去重(3×TopK 候选再筛)→ TopK=3。Embedder 不可用时自动退化为纯 FTS5。
LLM 路由:多 Provider 按策略路由(cost / quality / latency),故障自动降级。语义缓存:Singleflight 防击穿 · TTL ± 10% 抖动防雪崩 · 空值缓存防穿透。
四层记忆:会话上下文 → 每日日记 → MEMORY.md → 语义向量。自动提取:关键词预过滤 → 异步 LLM(15s 超时)→ 注入已有记忆避免重复。超 50 条自动 LLM 压缩。Markdown 格式,人类可读,可 Git 版本控制。
多 Agent 路由 · 自主行为
四种选择机制:UI 直选 · @mention 语法 · 模式自动绑定 ·
平台路由规则(UserID +100 > ChatID +50 > Platform +10),兜底 LLM
语义分类。
会议模式:≥2 Agent 围绕结构化话题多轮圆桌讨论——适合竞品分析、头脑风暴、专家辩论。
自主行为:Heartbeat 巡查 + Cron 定时 + Webhook 事件驱动。默认 SQLite WAL,四种部署:桌面 / Docker / systemd / K8s。
hexclaw-desktop:让 AI Agent 像 Docker Desktop 一样”双击即用”
Tauri 壳管理 Go Sidecar
【图:HexClaw Desktop 分层架构】
HexClaw Desktop Architecture
============================
┌─ Tauri Shell (Rust) ───────────────────────────────────────┐
│ 窗口管理 系统托盘 全局快捷键 ⌘⇧H 单实例 自动更新 │
│ API 代理 (CORS bypass) Sidecar 进程生命周期管理 │
├─ Vue 3 Frontend (WebView) ─────────────────────────────────┤
│ ┌──────┬──────┬───────┬──────┬──────┬───────┬──────┐ │
│ │ 概览 │ 对话 │ Agent │ 知识 │自动化│ 集成 │ 日志 │ │
│ └──────┴──────┴───────┴──────┴──────┴───────┴──────┘ │
│ Pinia Store Vue Router Tauri invoke (IPC) │
├─ Tauri Commands (Rust → Go) ───────────────────────────────┤
│ proxy_api_request stream_chat check_engine_health │
├─────────────────────────────────────────────────────────────┤
│ HTTP / WebSocket ←→ localhost:16060 │
├─ hexclaw serve (Go Sidecar) ───────────────────────────────┤
│ Agent 引擎 · 安全网关 · LLM 路由 · RAG · MCP · 沙箱 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Hexagon ← ai-core ← toolkit │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
框架选型:
| Tauri v2 | Wails v2 | Electron | |
|---|---|---|---|
| 包体积 | ~8MB | ~10MB | ~150MB |
| 内存 | ~25MB | ~30MB | ~200MB |
| 托盘 / 快捷键 / 多窗口 / 更新 | 全内建 | 部分缺失 | 全内建 |
| 安全沙箱 | 权限模型 | 无 | 无 |
| 生产案例 | 1Password 8 | 无 | Docker/Cursor |
包体积 8MB vs Electron 150MB(19x),内存 25MB vs 200MB(8x)。
功能模块
| 模块 | 亮点 |
|---|---|
| AI 对话 | 多模型流式 · 文件解析(PDF/Word/Excel)· Canvas UI(8 组件)· Budget 面板 |
| Agent | 自定义角色 · 模板库 · Handoff/Orchestrate/Spawn · Agent 会议 |
| 工具生态 | ClawHub(37 Skill + 38 MCP Server)· SkillWriter · MCP 三传输 · OAuth PKCE |
| 知识 + 记忆 | Auto-RAG(score ≥ 0.35)· 向量语义回忆 · 自动提取 · 跨会话持久化 |
| IM + 自动化 | 7 种 IM 通道 · Cron · 工作流画布 DAG · Webhook 通知 |
| 本地 LLM | Ollama 一键关联 · 推荐 qwen3.5:9b /
qwen2.5-coder:7b / deepseek-r1:8b |
| 安全 + 审批 | WebSocket 实时审批 · safe/sensitive/dangerous 三级 · session 记忆 |
原生能力
⌘⇧H 全局唤起 · 系统托盘 · 原生通知 · 剪贴板交互 ·
文件拖放上传 · 3 步引导 · Tauri Updater。同一套代码支持 Desktop 和
Headless。安装:curl | bash / Homebrew / DMG / MSI / DEB /
AppImage。
和竞品比,到底强在哪?
2025 年底以来,各家密集发布自己的 AI Agent 产品,但大多是云端闭源、面向企业客户。HexClaw 走的是另一条路——开源、自托管、面向开发者和技术团队。下表按品类对比:
| 维度 | HexClaw | OpenClaw | Dify | Coze |
|---|---|---|---|---|
| 部署 | 单二进制 ~20MB | 多服务 500MB+ | Docker Compose | 云托管 |
| 数据控制 | 完全本地 | 自托管可控 | 自托管可控 | 数据在云端 |
| 沙箱 | Go 原生 <10ms | Docker ~200ms | 无内建 | 云端隔离 |
| 安全网关 | 6 层 Fail-closed | 基础 | 基础鉴权 | 平台内控 |
| 预算控制 | 3D 原子 | 无 | 无 | 平台配额 |
| Agent 类型 | 10 种 + A2A | 多 Agent | 基础 Agent | 无代码 Agent |
| 编排引擎 | Graph + Chain + Workflow + Process | 工作流 | 可视化工作流 | 可视化工作流 |
| RAG | 7 环节 × 8 向量后端 | 社区插件 | 内建 RAG | 内建 |
| 本地 LLM | Ollama 一键 + 300+ | 无 | 支持 | 不支持 |
| 中国 IM | 飞书/钉钉/企微/微信 | 无 | 部分 | 部分 |
| 桌面端 | Tauri ~25MB | Electron ~150MB | 无 | 无 |
| 可观测 | OTel + Prometheus | 基础 | 基础日志 | 平台内建 |
| 定制深度 | 框架级(Go) | 框架级(TypeScript) | 配置级 | 配置级 |
踩过的坑和架构取舍
坑 1:Docker 沙箱——“装个聊天助手还要装 Docker?”
早期 Skill 执行依赖 Docker。一般MacBook配置没问题,但 macOS 上 Docker Desktop 额外吃 2-4GB 内存——让用户为了跑个天气查询装 Docker,这不合理。
花一星期 用 Go syscall 重写三平台原生沙箱。2713 行、零依赖、<10ms 启动。隔离强度不如完整容器,但 Skill 执行场景够了。
坑 2:Wails → Tauri——选型翻车的正确姿势
桌面端最初选了 Wails,理由很充分:Go 原生,零集成成本。开发到 60% 发现三个致命问题:不支持多窗口(Quick Chat 浮窗做不了)、系统托盘要第三方库、没有自动更新。
止损切 Tauri v2。Go 后端改为 sidecar,多了一层 HTTP,但恰好复用已有 71 个 API,实际开发成本反而更低。
坑 3:安全网关本来是个”可选配置”
第一版安全层做成中间件,配置文件里 enabled: false
就能关掉。某次 code review 发现:CostCheck 关掉后,失控的 ReAct
循环会无限调 LLM 直到账单爆炸——这不是理论风险,是确定性灾难。
当天重构为 6 层不可绕过管道。开发期经常触发限流,但总比半夜收到 API 账单好。
取舍总结:
| 决策 | 选了 | 放弃了 | 为什么 |
|---|---|---|---|
| 存储 | SQLite(纯 Go) | PostgreSQL 默认 | 用户不该为聊天助手运维数据库 |
| 沙箱 | OS 原语 2713 行 | Docker | 用户不该为 Skill 安装 Docker |
| 桌面 | Tauri v2 | Wails | 多窗口 / 托盘 / 更新 / 社区 |
| 安全 | 6 层不可绕过 | 可选中间件 | Fail-closed > Fail-open |
| 框架 | hexagon 做厚 | hexclaw 自包含 | 应用编排,框架实现 |
接下来做什么
2026 年,AI Agent 赛道从”技术验证”进入”工程化落地”——MCP + A2A 双协议栈成熟,安全与确定性取代了”Demo 跑通就行”的心态。HexClaw 目前 v0.2.x,核心稳定,离”生产级”还有关键缺口:
- 流式升级:当前伪流式(中间轮同步),计划对接 Hexagon Agent 原生 Stream
- Embedding 集成:知识库 Embedder 接口已定义,需对接 LLM Provider
- 测试覆盖率 > 80%:93 个测试文件,覆盖率待提升
- Hub 生态扩充:37 Skill → 100+、38 MCP Server → 80+,补齐代码审查 / 数据分析 / 项目管理
- 多平台桌面打磨:Mac 优先,Windows MSI 和 Linux AppImage 需更多测试
一个开放问题:如何在不牺牲安全的前提下让 Agent 更自主? Tool Approval 保证了安全但限制了自主性——正在探索基于历史行为的自适应审批策略。这也是整个 AI Agent 行业 2026 年的核心矛盾:从”Demo 跑通”到”生产可信”,安全与自主性的平衡点在哪里?
技术栈
| 组件 | 选型 |
|---|---|
| 语言 | Go 1.25+ |
| Agent 框架 | Hexagon v0.4.0 |
| AI 底座 | ai-core v0.0.5(7 LLM Provider) |
| 工具库 | toolkit v0.0.4(81k 行,零依赖) |
| 存储 | SQLite / PostgreSQL |
| 前端 | Vue 3 · Pinia · Naive UI · Tailwind |
| 桌面 | Tauri v2(Rust + Go sidecar) |
| CI/CD | GitHub Actions(3 平台测试 + 6 平台编译) |
| 发布 | ghcr.io · Homebrew · DMG / MSI / DEB / AppImage |
| 仓库 | 定位 |
|---|---|
| hexclaw | AI Agent 服务 |
| hexagon | Agent 框架 |
| ai-core | LLM 抽象 |
| toolkit | 通用工具库 |
| hexclaw-desktop | 桌面客户端 |
| hexagon-ui | 观测面板 |
这个项目是我一个人 + Claude 结对开发的,初衷很简单:想给自己用一个安全、好用、不贵的 AI Agent。如果你也有同样的需求,欢迎在 GitHub 搜索 hexclaw 提 Issue / PR,一起玩。
最后一个问题: 你在用 AI Agent 时最头疼的是什么——安全信任、成本控制、还是平台适配?评论区聊聊,这些真实痛点会直接影响 HexClaw 的优先级。