Tauri v2 桌面金融工具——行情、自选、持仓模拟交易、AI 对话、自动化报告,一体化本地应用。
- 实时行情:腾讯财经 / 东方财富 / 新浪数据源,覆盖 A 股、港股、美股、指数,分时图与 K 线(lightweight-charts)
- 自选股管理:本地 SQLite 持久化,批量报价监控
- 持仓模拟交易:买入 / 卖出记录、成本价、市值、盈亏,多币种换算(CNY / USD / HKD / JPY / EUR / GBP)
- AI 对话:DeepSeek
deepseek-v4-flash,流式输出、思考过程展示、工具调用(行情 / 搜索 / 技能) - 联网搜索:Bocha AI 搜索,对话中自动调用
- 自动化报告:定时任务 + SMTP 邮件推送
- 技能系统:Python sidecar 提供 yfinance 数据、网页搜索等可扩展技能
- 国际化:中 / 英双语(i18next)
| 层 | 技术 |
|---|---|
| 前端 | React 18 · TypeScript · Vite · Zustand · i18next · lightweight-charts · recharts · xlsx |
| 后端 | Rust · Tauri 2 · SQLite (sqlx) · reqwest · tokio |
| Sidecar | Python 3.11+ · httpx · yfinance |
| AI | DeepSeek (deepseek-v4-flash) · Bocha 搜索 |
one-trade/
├── src/ # 前端(React + TS)
│ ├── pages/ # Dashboard / Chat / Portfolio / SymbolSearch / Automation / Skills
│ ├── components/ # 组件
│ ├── stores/ # Zustand store
│ └── i18n/ # 中英双语
├── src-tauri/ # 后端(Rust)
│ ├── src/
│ │ ├── lib.rs # Tauri 命令 + AppState
│ │ ├── agent/ # AI 对话编排(runtime + codewhale_engine + tools)
│ │ ├── db/ # SQLite 表 + migrations
│ │ ├── market_data.rs # 腾讯 / 东财 / 新浪行情
│ │ └── config.rs # one-trade.config.json 加载
│ └── tauri.conf.json
├── python/ # Python sidecar(JSON-RPC)
│ ├── src/sidecar.py # 入口
│ └── skills/ # 技能:yfinance_data / web_search
└── vendor/finance-skills/ # 外部技能市场(独立仓库,需单独 clone)
用户 → src/(前端 invoke) → src-tauri/(Rust)
├→ db/(SQLite)
├→ agent/(LLM 编排 + 工具调度)
└→ sidecar → python/(技能执行)
- Node.js ≥ 18
- Rust(stable 工具链,含 cargo)
- Python ≥ 3.11
- macOS(当前主要支持平台;Windows / Linux 未充分测试)
git clone https://github.com/RaspberrySun/one-trade.git
cd one-tradevendor/finance-skills 是独立仓库,需单独 clone(不随主仓库分发):
git clone https://github.com/himself65/finance-skills vendor/finance-skillsnpm install # 前端依赖
cd src-tauri && cargo build # Rust 依赖(首次较慢)
cd ../python && pip install -e . # Python sidecar
cd ..复制示例配置到应用数据目录:
mkdir -p "$HOME/Library/Application Support/com.one-trade.app"
cp one-trade.config.example.json \
"$HOME/Library/Application Support/com.one-trade.app/one-trade.config.json"编辑 one-trade.config.json,填入真实 key:
{
"llm_api_key": "sk-你的DeepSeek密钥",
"bocha_api_key": "sk-你的Bocha密钥",
"bocha_url": "https://api.bochaai.com/v1/web-search",
"deepseek_endpoint": "https://api.deepseek.com/v1",
"fx_rate_url": "https://open.er-api.com/v6/latest/CNY"
}llm_api_key、bocha_api_key:必填(DeepSeek / Bocha 后台获取)bocha_url、deepseek_endpoint、fx_rate_url:可选,缺省使用上面默认值;自建代理或更换端点时才需要改
npm run tauri:devnpm run install:mac此脚本会:构建 release → 安装到 /Applications/One Trade.app → 清理 target/ 里的 .app(避免 Spotlight 重复索引)→ 启动应用。
| 命令 | 作用 |
|---|---|
npm run dev |
前端 dev server(localhost:5173) |
npm run tauri:dev |
整体开发模式(前端 + Rust + sidecar) |
npm run build |
前端类型检查 + 构建 |
npm run install:mac |
构建并安装到 /Applications |
cd src-tauri && cargo check |
Rust 单独检查 |
运行时配置文件位于应用数据目录:
- macOS:
~/Library/Application Support/com.one-trade.app/one-trade.config.json
该文件不纳入版本控制(.gitignore 已忽略),只在本机存在。两个 API key 在启动时由 Rust 读取并注入:
- DeepSeek key →
ModelRegistry(LLM 调用) - Bocha key →
BochaSearchTool+ Python sidecar 环境变量WEB_SEARCH_BOCHA_KEY
在 src-tauri/src/lib.rs 写 #[tauri::command] 函数 → 注册进 invoke_handler → 前端 invoke("命令名")。
新建 src-tauri/src/db/migrations/NNNN_xxx.sql → db/mod.rs 加 pub mod → 写 Repo(watchlist.rs 是模板)。
在 python/skills/ 下建包,在 tool_registry.py 注册。
GUI 模式下 tracing 写到:
~/Library/Application Support/com.one-trade.app/logs/agent.log
(stderr 在打包后丢失,排错看这个文件。)
- 行情双路径:Rust
market_data.rs与 Pythonyfinance_data技能并存,核心行情应逐步统一到 Rust。 - Python sidecar:计划移除,设计文档见
docs/superpowers/specs/2026-06-25-remove-python-sidecar-design.md。 - codewhale_engine:
ApiProviderenum 仍含未使用的 provider 变体,待 sidecar 移除后一并清理。
本地金融工具,数据仅供参考,不构成投资建议。


