Skip to content

RaspberrySun/one-trade

Repository files navigation

One Trade

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)

应用截图

screenshot 1

screenshot 2

screenshot 3

技术栈

技术
前端 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 未充分测试)

快速开始

1. 克隆仓库

git clone https://github.com/RaspberrySun/one-trade.git
cd one-trade

2. 获取外部技能市场

vendor/finance-skills 是独立仓库,需单独 clone(不随主仓库分发):

git clone https://github.com/himself65/finance-skills vendor/finance-skills

3. 安装依赖

npm install                       # 前端依赖
cd src-tauri && cargo build       # Rust 依赖(首次较慢)
cd ../python && pip install -e .  # Python sidecar
cd ..

4. 配置 API Key

复制示例配置到应用数据目录:

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_keybocha_api_key:必填(DeepSeek / Bocha 后台获取)
  • bocha_urldeepseek_endpointfx_rate_url:可选,缺省使用上面默认值;自建代理或更换端点时才需要改

5. 启动开发模式

npm run tauri:dev

构建安装(macOS)

npm 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

开发指南

加 Tauri 命令

src-tauri/src/lib.rs#[tauri::command] 函数 → 注册进 invoke_handler → 前端 invoke("命令名")

加 DB 表

新建 src-tauri/src/db/migrations/NNNN_xxx.sqldb/mod.rspub mod → 写 Repo(watchlist.rs 是模板)。

加 Python 技能

python/skills/ 下建包,在 tool_registry.py 注册。

运行日志

GUI 模式下 tracing 写到:

~/Library/Application Support/com.one-trade.app/logs/agent.log

(stderr 在打包后丢失,排错看这个文件。)

已知技术债

  • 行情双路径:Rust market_data.rs 与 Python yfinance_data 技能并存,核心行情应逐步统一到 Rust。
  • Python sidecar:计划移除,设计文档见 docs/superpowers/specs/2026-06-25-remove-python-sidecar-design.md
  • codewhale_engine:ApiProvider enum 仍含未使用的 provider 变体,待 sidecar 移除后一并清理。

本地金融工具,数据仅供参考,不构成投资建议。

About

Tauri v2 桌面金融工具:行情 / 自选 / 持仓模拟交易 / AI 对话 / 自动化报告

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages