-
Notifications
You must be signed in to change notification settings - Fork 163
09_Tech_Architecture
youngcan edited this page Jun 1, 2026
·
5 revisions
WyckoffAgent 有两种运行模式:定时管线(自动跑,无人值守)和 交互 Agent(用户对话触发)。
| 英文术语 | 中文释义 |
|---|---|
| Agent | 智能体,能根据用户目标自主调用工具并组织答案 |
| CLI | 命令行界面,通过终端命令使用 |
| TUI | 终端图形界面,在终端里提供类 GUI 交互 |
| Web | 网页端,浏览器里的在线读盘室 |
| Provider | 模型适配层,把不同模型供应商统一成一套接口 |
| Tool Schema | 工具定义,告诉模型工具名、参数和用途 |
| MCP | 模型上下文协议,给外部 Agent 暴露本项目工具 |
| Workflow | GitHub 自动任务 |
| Universe | 股票池,某个市场可扫描的标的集合 |
| Snapshot | 快照,把某次行情或回测输入固定下来 |
每天自动执行的批处理流水线,由 scripts/daily_job.py 串联:
Step2(全市场筛选)→ Step2.5(信号确认)→ Step3(AI 研报)→ Step4(持仓决断)
flowchart LR
A["Wyckoff Funnel<br/>18:25"] --> B["Step2<br/>五层漏斗"]
B --> C["Step3<br/>AI 研报"]
C --> D["Step4<br/>OMS 决断"]
D --> E["signal_observations<br/>记录信号样本"]
E --> F["Signal Feedback<br/>23:30"]
F --> G["signal_health_daily<br/>signal_registry"]
G --> H["下一轮漏斗<br/>动态策略读取"]
- 入口:
core/funnel_pipeline.py - 核心引擎:
core/wyckoff_engine.py(纯计算,不做网络请求) - 五层筛选:L1 基础过滤 → L2 六通道强弱 → L3 板块共振 → L4 威科夫触发 → L5 退出信号
- 结果推送飞书
- L4 触发信号需经 1-3 天价格确认后才进入操作池
- 防止"假信号"直接触发买入
- 入口:
core/batch_report.py(daily_job 调用)/scripts/step3_batch_report.py(独立运行) - 将候选股的结构化特征切片喂给大模型
- 输出三阵营分类:逻辑破产 / 储备营地 / 起跳板
- RAG(检索增强生成)防雷:命中负面新闻可一票否决
- 入口:
core/strategy.py(daily_job 调用)/scripts/step4_rebalancer.py(独立运行) - 读取账户状态
- 综合研报 + 持仓 + 风控,输出 EXIT/TRIM/HOLD/PROBE/ATTACK 指令
- 推送到 Telegram
- 入口:
scripts/signal_feedback_job.py - 时间:北京时间周一到周五 23:30
- 读取
signal_observations,计算 1/3/5/10/20 日收益和回撤 - 写入
signal_outcomes、signal_health_daily、signal_registry - 下一轮漏斗按
FUNNEL_DYNAMIC_POLICY=off|shadow|on决定是否使用动态策略
flowchart TD
A["signal_observations"] --> B["signal_outcomes"]
B --> C["signal_health_daily"]
C --> D["signal_registry"]
D --> E{"动态策略模式"}
E -- "off" --> F["静态配额"]
E -- "shadow" --> G["静态推荐 + shadow 差异落库"]
E -- "on" --> H["动态配额正式生效"]
| 任务 | 功能 |
|---|---|
| 盘前风控 | A50 + VIX 监测,四档预警 |
| 尾盘策略 | 规则打分 + LLM 复判,筛选尾盘买入 |
| 形态复盘重定价 | 同步收盘价,计算累计收益 |
| 信号反馈闭环 | 盘后验收 L4 信号表现,更新动态策略状态 |
| 回测网格 | 18 组参数并行回测 |
| 港股 / 美股漏斗 | 独立 universe + TickFlow 批量日线扫描 |
用户通过自然语言与系统对话,Agent 自主决定调用哪些工具。
- 入口:
cli/__main__.py - UI:
cli/tui.py(全屏终端界面) - Agent Loop:
cli/runtime.py;cli/agent.py保留为兼容旧调用点的薄封装 - Provider(模型适配层):
cli/providers/(OpenAI-compatible,OpenAI 兼容接口;支持多模型切换和 fallback(故障切换)) - 工具:
cli/tools.py暴露 19 个 Tool Schema(工具定义);其中 18 个映射到确定性 Python 函数,check_background_tasks由运行时特判返回后台任务状态 - 特有能力:后台任务、分层 Agent 记忆(L1 原子 / L2 场景 / L3 画像)、上下文压缩、Skills 扩展
- 前端:
web/apps/web/ - Agent(智能体):
web/apps/web/src/lib/chat-agent.ts - 运行时:Vercel AI SDK(Vercel 的 AI 工具包)
streamText(流式文本生成),stopWhen: stepCountIs(10)控制最多 10 步工具循环 - 边缘代理:Cloudflare Pages Functions
- 工具:13 个 Web(网页端)工具(不含命令执行、读写文件、委派子 Agent 等本地能力)
- 入口:
mcp_server.py - 协议:FastMCP / stdio(标准输入输出通信)
- 定位:给 Claude Code、Cursor 等外部 Agent 暴露 Wyckoff 工具
- 注意:MCP(模型上下文协议)只提供单次工具调用,不负责多轮对话编排
CLI(命令行)/ MCP(模型上下文协议)的业务工具实现主要在 agents/chat_tools.py,CLI 的注册、审批、后台任务和 Tool Schema(工具定义)在 cli/tools.py。Web(网页端)在 web/apps/web/src/lib/chat-agent.ts 中封装自己的工具名,并复用 web/apps/web/src/lib/chat-tools.ts 的执行函数。
| 工具 | 能力 |
|---|---|
search_stock_by_name |
模糊搜索股票 |
analyze_stock |
单股诊断 / 行情查询 |
portfolio |
查看持仓 / 批量健康扫描 |
update_portfolio |
增删改持仓 |
get_market_overview |
大盘水温 |
screen_stocks |
五层漏斗筛选 |
generate_ai_report |
AI 研报 |
generate_strategy_decision |
持仓决策 |
query_history |
查历史推荐/信号/尾盘记录 |
run_backtest |
回测 |
CLI(命令行)栈额外提供:get_market_history、check_background_tasks、delegate_to_research、delegate_to_analysis、delegate_to_trading、exec_command、read_file、write_file、web_fetch。其中 exec_command、write_file、update_portfolio 是高风险工具,需要运行时审批。
行情数据源 → 统一行情仓库层 → 引擎计算 → 结果存储 → 推送通知
↗ A 股:tickflow → tushare → akshare → baostock → efinance(五级自动降级)
↗ 港股 / 美股:TickFlow + 本地 universe
- 日线行情通过
integrations/stock_hist_repository.py直接从数据源拉取,不再走 Supabase 行情缓存 - Supabase 用于用户配置、持仓、形态复盘、市场信号、信号反馈、任务结果、主题雷达等业务数据
- 本地 SQLite(本地轻量数据库)用于 CLI(命令行)离线状态、同步副本和记忆等本地能力
-
data/market_universes/*.json维护 A 股 / 港股 / 美股 / ETF 的代码、名称和搜索元数据
| 原则 | 体现 |
|---|---|
| 计算与 IO 分离 |
wyckoff_engine.py 不做任何网络请求,只接受 DataFrame |
| 容错降级 | 数据源链式降级、RAG(检索增强生成)失败不阻断主流程、合规简报降级为模板 |
| 快照可复现 | 行情落盘为 snapshot(快照),回测全程离线回放 |
| Loop 约束模型 | 即使模型不调用工具,loop guard 也会强制纠偏(详见第 11 篇) |
- Home
- 01_Product_Overview
- 02_Finance_Wyckoff_Method
- 03_Finance_Quantitative_Metrics
- 04_Finance_Sector_Rotation_Regime
- 05_Finance_Risk_Management
- 06_Backtest_Methodology
- 07_Backtest_Simple_vs_Compound
- 08_Research_Strategy_Decay
- 09_Tech_Architecture
- 10_Tech_LLM_RAG_Integration
- 12_Tech_Actions_Operations
- 13_Tech_Python_Engineering