【免费下载链接】honeclaw
HoneClaw (Hone-Financial) is dedicated to being a professional investment assistant that truly understands you.
HoneClaw(Hone-Financial)是一个开源的 AI 投研助手,用 Rust 搭建后端运行时、SolidJS 搭建 Web 前端,支持 Web、桌面端、iOS 以及飞书、Telegram 等多通道接入。这篇文章带你快速看懂 HoneClaw 的整体架构:它由哪些模块组成、一条消息从提问到回答要经过哪几层、以及新手该如何阅读它的源码。
一、HoneClaw 是做什么的?
HoneClaw 定位是「真正懂你的专业投资助手」:你用自然语言提问(比如"推理需求增长会怎样影响光模块和存储?"),它会结合产业研究背景、专业金融数据与联网搜索,给出带数据时间、行情口径的研究级回答,还能把公司加入跟踪列表、做定时盯盘与事件推送。
它的开源目标是让你可以自部署、二次开发。完整使用与自部署说明见 docs/wiki.md,模块导航见 docs/repo-map.md。
二、技术栈总览:为什么是 Rust + SolidJS?
整个项目可以概括为「Rust 做运行时,SolidJS 做界面」:
| 层 | 技术 | 位置 |
|---|---|---|
| 后端运行时 / 各二进制 | Rust(Tokio 异步、axum HTTP) | crates/、bins/ |
| Web 控制台与用户端 | SolidJS + TypeScript(Bun 工作区) | packages/app/ |
| 桌面端 | Tauri(Rust 壳 + Web 前端) | bins/hone-desktop/ |
| iOS 客户端 | 原生 SwiftUI + WKWebView | apps/hone-ios/ |
| 持久化 | PostgreSQL(会话、配额、组合、Cron、计费) | memory/ |
| 边缘加速 | Cloudflare Workers | workers/ |
Rust 负责高并发的通道监听、Agent 运行时、LLM 流式协议与数据库访问;SolidJS 负责管理端与用户端的交互界面。两边通过/api/*与 SSE 事件流对接,互不侵入。
三、Rust 后端分层:一次对话要穿过哪几层?
后端按职责拆成多个 crate,依赖方向基本是「上层依赖下层」:
- hone-core:配置门面、日志、错误类型、时区、进程锁等基础设施(crates/hone-core/src/lib.rs)
- hone-llm:模型提供方抽象,OpenRouter 与通用 OpenAI 兼容协议,统一流式生命周期(crates/hone-llm/src/provider.rs)
- hone-tools:工具注册表与内置工具——行情/财务数据、联网搜索、组合、定时任务、Skill 运行时(crates/hone-tools/src/registry.rs)
- hone-channels:整个「会话运行时」的大脑——入站归一、会话编排、Runner 抽象、出站投递(crates/hone-channels/src/agent_session/mod.rs)
- hone-scheduler:定时任务与心跳式监控
- hone-event-engine:事件引擎,轮询价格、新闻、财报等事件并推送(crates/hone-event-engine/src/engine.rs)
- hone-web-api:Web 服务的路由、鉴权、公共 API(crates/hone-web-api/src/routes/public.rs)
- memory:PostgreSQL 持久化层,会话、配额、组合、Cron、账单等(memory/src/session.rs)
一条消息的完整旅程大致是:
- 通道入口(Web / 飞书 / Telegram / Discord / iMessage / 桌面)接收原始消息;
- hone-channels::ingress统一做身份(Actor)识别、去重、会话加锁;
- AgentSession::run()编排整轮:配额检查、提示词组装、调用 Runner;
- Runner执行 Agent 循环——内置 function-calling Agent 或 Codex / OpenCode 等 ACP 外部运行时(crates/hone-channels/src/runners/),其间按需调用数据、搜索等工具;
- response_finalizer做安全清理后,经outbound按各通道能力分片投递;
- Web 端则通过 SSE 事件流实时接收
run_progress/assistant_delta/run_finished等事件。
提示词方面,投资推理与回答格式的完整契约写在仓库根目录的 soul.md 中,再由 Rust 侧叠加时区、安全与隐私规则,这是它回答「专业」的关键之一。
四、多通道接入:同一套大脑,多个身体
bins/下每个二进制就是一个「身体」:bins/hone-feishu/、bins/hone-telegram/、bins/hone-discord/ 等通道入口都很薄,真正的启动引导、调度、出站渲染都在共享的hone-channels里完成——所以新增一个 IM 通道,成本主要是协议适配。
桌面端 bins/hone-desktop/ 是 Tauri 应用,支持两种后端模式:bundled本地启动内置服务(适合离线自托管),remote直连远端 HTTP(适合只当客户端)。iOS 客户端 apps/hone-ios/ 则是轻量壳,内嵌同一套 Web 用户界面,保持单一功能真相源。
五、前端:SolidJS 控制台与用户端
管理端(Console)与用户端共用一个 SolidJS 工程 packages/app/,但按端口与构建产物分离:管理端提供会话、技能库、任务中心、记忆、LLM 审计等管理面;用户端提供/chat、研究面板、社区动态、持仓跟踪等界面。
聊天页面是整个前端最复杂的部分:它会消费 Runner 的实时流式事件,把思考、工具状态、恢复与错误都收敛在「同一张消息卡片」内,刷新页面也能恢复运行中的对话(packages/app/src/pages/chat.tsx)。
六、Skill 系统:让 AI 按方法论做研究
HoneClaw 把「投研方法论」做成了可插拔的 Skill:每个 Skill 是一个目录,核心是一份 SKILL.md,定义触发条件、工作流与产出契约。仓库内置了 30 多个,例如:
- skills/stock_research/:个股研究与估值框架
- skills/earnings-research/:财报前瞻与财报分析
- skills/company_portrait/:公司画像与长期跟踪
- skills/chart_visualization/:图表生成(Python 脚本渲染 PNG)
- skills/hari-invest/:投资决策决策层
模型运行时先看到技能摘要,命中后才会加载完整 SKILL.md,运行时实现见 crates/hone-tools/src/skill_runtime.rs。这种「提示词即插件」的设计,是普通用户理解 HoneClaw 能力边界的最佳入口。
七、新手上手路径
如果你想本地跑起来或读源码,建议按这个顺序:
- 阅读 docs/repo-map.md 与 docs/invariants.md,建立模块地图与关键约束;
- 参考 config.example.yaml 准备配置(模型密钥、数据源、通道开关);
- 克隆仓库体验(自部署需要自备模型与数据服务配置):
git clone https://gitcode.com/gh_mirrors/ho/honeclaw- 从入口文件开始读:CLI 是 bins/hone-cli/src/main.rs,Web 后端是 bins/hone-console-page/src/main.rs,前端是 packages/app/src/app.tsx;
- 安装 CLI 可参考 scripts/install_hone_cli.sh,部署手册在 docs/runbooks/ 目录下。
写在最后
HoneClaw 的架构思路可以浓缩成三句话:Rust crate 按职责分层,通道只是薄壳;一次会话由 AgentSession 统一编排,Runner 与工具可插拔;方法论以 Skill 形式沉淀,前端 SolidJS 只做体验。理解这三点,你就能顺着 docs/repo-map.md 把整个代码库读通。项目采用 MIT 协议,欢迎在源码基础上构建属于你的投研工作流。
【免费下载链接】honeclaw
HoneClaw (Hone-Financial) is dedicated to being a professional investment assistant that truly understands you.
相关推荐
React 19 + Three.js:prehistoric-animal-museum 的 3D 查看器架构是如何搭起来的?
React 19 + Three.js:prehistoric animal museum 的 3D 查看器架构是如何搭起来的? 🦕 prehistoric
ncc 多 Bundle 构建实战:用 @vercel/ncc 将主模块与 CLI 分别打包成一个文件
ncc 多 Bundle 构建实战:用 @vercel/ncc 将主模块与 CLI 分别打包成一个文件 导读 本文以 ncc 仓库内置的 examples/mu
HoneClaw 实战:AI 投研助手如何回答“为什么盘后大跌”“现在买贵了吗”5 个真实案例
HoneClaw 实战:AI 投研助手如何回答“为什么盘后大跌”“现在买贵了吗”5 个真实案例 当一只股票盘后急跌,或者你在"现在该不该买"之间纠结时,普通 A
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考