【免费下载链接】WyckoffTradingAgent
Open-source Wyckoff trading agent and AI stock screener for volume-price analysis, A-share screening, CLI workflows, and MCP tools.灵感来自秋生trader @Hoyooyoo
WyckoffTradingAgent 是一个开源的威科夫交易智能体与 AI 选股器:你用自然语言和它对话,它替你完成量价结构识别、A 股全市场漏斗筛选、AI 研报生成、持仓风控诊断与自动化通知。这篇文章带你深潜它的架构——看 CLI、Web、MCP Server 与 GitHub Actions 四个入口如何共享同一个核心引擎,又把"选股 → 确认 → 复盘"串成一条 7×24 小时自动运转的链路。
一、架构全景:一个大脑,四只"手" 🧠
整个系统可以概括为"一个大脑 + 四只入口":四个入口各自有独立的运行时与交互方式,但底层共用同一套威科夫金融引擎、行情/存储集成和业务工具。
React Web CLI (TUI) MCP Server GitHub Actions
(浏览器) (终端) (AI 客户端) (定时任务)
│ │ │ │
└────────────────┴───────┬────────┴────────────────────┘
▼
Agent「大脑」(LLM + 工具编排)
▼
核心引擎:漏斗 / 诊断 / 策略 / 信号
▼
数据源(TickFlow/Tushare…) + 存储(Supabase / 本地 SQLite)
| 维度 | React Web | CLI(TUI) | MCP Server | GitHub Actions |
|---|---|---|---|---|
| 定位 | 在线"读盘室" | 本地全能工作台 | 被 AI 客户端调用 | 无人值守定时流水线 |
| 运行时 | Hono Worker + AI SDK | AgentRuntime | FastMCP(stdio) | 定时脚本 + 通知推送 |
| 工具数 | 13+(TS 封装) | 26 | 19(三层权限) | 直接跑引擎 |
| 多轮对话 | ✅ | ✅ | ❌(单次调用) | — |
| 后台任务 | ❌ | ✅ | ❌ | ✅(天然异步) |
| 跨会话记忆 | ❌ | ✅(SQLite) | ❌ | — |
四个入口的能力差异是刻意设计:网页版追求轻,CLI 追求全(后台任务、跨会话记忆、浏览器检索都只有它有),MCP 追求安全(写操作默认拒绝),Actions 则完全无人值守。
二、大脑:五层漏斗与信号反馈闭环 ⚙️
所有入口最终调用的"重活"都发生在 core/ 目录下的引擎里。主线漏斗引擎由 core/wyckoff_engine.py 与 core/mainline_engine.py 驱动,A 股全市场约 5000 只股票会依次通过五层筛选:
| 层 | 名称 | 做什么 |
|---|---|---|
| L1 | 基础过滤 | 剔除 ST,过滤低价、小市值、低流动性标的 |
| L2 | 八通道强度 | 主升 / 潜伏 / 吸筹 / 地量等八种威科夫量价通道 |
| Mainline | 主线发现 | 概念热度 + 主题雷达,输出"主线买点 / 观察 / 过热不追" |
| L3 | 行业共振 | 单标签行业共振验证 |
| L4 | 微观狙击 | Spring / EVR / 趋势回踩等核心买点形态 |
| L5 | 退出信号 | 初始止损、利润激活与跟踪止损 |
关键设计是:L4 信号不会立即变成买入建议,而是进入跨日确认状态机(pending → survived → confirmed),由 core/signal_confirmation.py 用 1–3 天真实价格验证。更妙的是信号反馈闭环:漏斗每天记录观察样本,盘后任务结算后续收益并刷新信号健康度,下一轮漏斗再读取这些反馈——策略自己给自己打分数,完整流程见 docs/A_SHARE_FUNNEL_FLOW.md。
三、CLI:本地全能工作台 🖥️
wyckoff 一条命令启动基于 Textual 的全屏终端对话(TUI),运行时收敛在 cli/runtime.py 的 AgentRuntime:它按 ReAct 范式循环——模型先推理,再决定调哪个工具,观察结果后进入下一轮,最多 15 轮。
CLI 是四个入口中能力最"满"的一个:
- 后台任务:
screen_stocks(全市场扫描)、generate_ai_report(AI 研报)、run_backtest(回测)这类耗时工具会提交给BackgroundTaskManager(cli/background.py)的守护线程,立即返回不阻塞对话,完成后自动通知并汇报结果; - 跨会话记忆:分层记忆系统(cli/memory.py)从对话中沉淀你的风险偏好与交易剧本,下次对话自动召回;
- 本地面板:
wyckoff dashboard一条命令启动可视化面板,推荐、信号池、记忆、对话日志尽在眼前。
诊断报告直接在终端渲染:逐只持仓体检、AI 三分类研报(逻辑破产 / 储备营地 / 起跳板)、资金仓位全景与违规未平仓告警,一目了然。
后台任务面板可以逐条查看每次扫描、研报、回测任务的执行状态与摘要:
四、Web:在线"读盘室" 🌐
网页版由 web/apps/web/(React 19 + Vite)前端与 web/apps/api/ 的 Hono Worker 组成,部署在 Cloudflare Pages 上。浏览器只请求同源 /api/*,边缘函数把请求反代到完整 Worker,由 Worker 完成鉴权、限流、工具执行与流式输出。
两个值得新手留意的架构决策:
- 调仓必须"两步走":网页版把调仓拆成
plan_portfolio_update→ 用户在聊天里确认 →execute_portfolio_update,确认由协议层的审批机制强制保障,未确认前不会落库; - 工具独立封装:Web 的 13+ 个工具(查持仓、大盘概览、漏斗选股、AI 研报等)用 TypeScript 独立实现,与 Python 侧共享同一份引擎语义,但不强行共享运行时。
漏斗选股页展示最近选股日的 AI 推荐清单:漏斗分、推荐价与现价对照,数据由每日定时漏斗任务产出,页面只读不重算。
五、MCP:让 AI 客户端调用它 🔌
wyckoff-mcp 是一个 stdio 协议的 MCP Server(入口 mcp_server.py,实现位于 integrations/public_mcp/),把 19 个公开工具暴露给 Claude Code、Cursor 等 AI 客户端。它的安全模型对新手很有参考价值:
- 三层权限:Tier 1 无需凭证(历史查询);Tier 2 需行情源 Key(搜索、单股分析、大盘、回测);Tier 3 需用户认证(持仓、AI 研报、决策);
- 写操作默认拒绝:tools/write_guard.py 对写入类工具一律拦截,显式配置才放行——否则任何 MCP 客户端都能绕过审批直接清仓;
- 握手零副作用:
initialize/tools/list不加载业务模块、不读登录态、不连数据库。
方向是双向的:WyckoffTradingAgent 自己也可以作为客户端接入第三方 MCP Server,外部工具会带 mcp__ 前缀并入同一套审批闸门。完整契约见 docs/PUBLIC_MCP.md。
六、GitHub Actions:7×24 的自动化骨架 🚀
如果说前三个入口是"人找系统",GitHub Actions 就是"系统找人"。.github/workflows/ 下有 40 多条工作流,构成一条无人值守的数据流水线(时间为北京时间,摘录核心几条):
| 时间 | 工作流 | 职责 |
|---|---|---|
| 周一~五 08:20 | 盘前风控 | A50 + VIX 预警,开盘前先"量体温" |
| 周一~五 16:05 | 账户净值快照 | 写入当日真实现金与持仓市值 |
| 周一~五 16:35 | 港股漏斗 | 港股全市场漏斗筛选 |
| 周日~四 17:17 | A 股漏斗 | daily_job.py 跑 Step2→3→4:筛选、AI 审判、生成决策工单 |
| 周二~六 05:35 | 美股漏斗 | 美股筛选 + 推荐表现结算 |
| 周一~五 23:00 | 形态复盘重定价 | 同步收盘价、计算推荐收益 |
| 周一~五 23:30 | 信号反馈闭环 | 结算信号 outcomes、刷新健康度 |
| 手动 | 回测网格 | 多周期 × 多风格回放 + walk-forward 样本外验证 |
除了业务任务,Actions 还负责部署:Worker 变更自动部署到 Cloudflare(worker_deploy.yml)、桌面端三平台测试与候选构建(desktop.yml)、Agent 服务镜像滚动更新(agent_service_deploy.yml)——代码合入 main 到线上生效,全程无需手动操作。
七、数据与存储:多源降级 + 双层存储 🗄️
数据链路同样讲究"降级思维":
tickflow(★) → tushare → akshare → baostock → efinance (A 股日线 OHLCV 五级降级)
统一由 integrations/stock_hist_repository.py 仓库层拉取。存储分两层:云端 Supabase(用户配置、持仓、推荐、信号、净值,RLS 行级权限隔离多用户)+ 本地 SQLite(~/.wyckoff/wyckoff.db),TUI 启动时由 integrations/sync.py 后台静默同步,云端不可达时自动使用本地陈旧数据,永不卡死。
八、一条候选的"完整链路":把四个入口串起来 🔗
理解了各部分,再看它们如何协作。一只 A 股从被选中到被复盘,完整走过一次全链路:
- Actions(周日~四 17:17)跑漏斗:全市场 5000 股 → 五层筛选 → AI 三分类审判 → 候选写入 Supabase,飞书推送日报;
- CLI / Web(次日):你在读盘室里问"今天有什么机会",Agent 读取最新漏斗结果与信号池,跨日确认(
confirmed)的候选由 OMS 引擎收敛出唯一允许买入区间; - 你确认执行:成交后通过
wyckoff portfolio fill或 Web 回填真实成交; - Actions(23:00 / 23:30):复盘任务重定价、信号反馈任务结算后续收益,反哺下一轮漏斗。
整条链路里,人只在"确认买入"和"回填成交"两个节点介入,其余全部自动流转——这就是"一条链路"的含义。
九、安全护栏:写给普通用户的定心丸 🛡️
- 高危操作必须确认:执行命令、写文件、改持仓等工具在 CLI 弹窗确认,在 Web 走协议层审批,MCP 默认拒绝写入;
- 无人值守更谨慎:本地 daemon 只放行最窄的
set_stop_loss(签名里根本没有股数/成本/现金参数),其余操作进待批准队列,12 小时过期; - 数据库唯一门是 RLS:Supabase 每张表强制行级权限,Web JWT、CLI token 各走各的策略,云端任务写共享表需显式声明
server_job上下文; - 建议单不是成交:AI 只产出
APPROVED / NO_TRADE / CANCELLED状态的建议工单,任何代码路径都不会自动扣减你的持仓。
十、快速上手:5 分钟跑起来 🏁
# 安装(Python 3.11+)
uv pip install youngcan-wyckoff-analysis
# 启动 CLI 读盘室,/model 里填入你的 LLM API Key 即可对话
wyckoff
# 启动本地可视化面板
wyckoff dashboard
# 以 MCP Server 身份供 AI 客户端调用
uvx --from 'youngcan-wyckoff-analysis[mcp]' wyckoff-mcp
零配置即可开始对话;需要行情能力时再配置 TickFlow / Tushare Key 即可。
延伸阅读 📚
- 技术架构、数据表与工作流总表:docs/ARCHITECTURE.md
- A 股漏斗阶段顺序与数据流:docs/A_SHARE_FUNNEL_FLOW.md
- 信号反馈闭环实现:docs/SIGNAL_FEEDBACK_LOOP.md
- 策略语义(漏斗 / 研报 / OMS / 回测):README_STRATEGY.md
- 实盘操作手册:docs/OPERATOR_PLAYBOOK.md
- 术语速查:GLOSSARY.md
风险提示:本项目用于教育、研究与信息参考,不构成投资建议。
【免费下载链接】WyckoffTradingAgent
Open-source Wyckoff trading agent and AI stock screener for volume-price analysis, A-share screening, CLI workflows, and MCP tools.灵感来自秋生trader @Hoyooyoo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考












