Skip to content

feat: MCP 接口、ETF 盯盘、AI 助手增强与长线持仓计划#71

Open
zackzhangkai wants to merge 37 commits into
TNT-Likely:mainfrom
zackzhangkai:zk-change
Open

feat: MCP 接口、ETF 盯盘、AI 助手增强与长线持仓计划#71
zackzhangkai wants to merge 37 commits into
TNT-Likely:mainfrom
zackzhangkai:zk-change

Conversation

@zackzhangkai

Copy link
Copy Markdown

Summary

  • MCP 集成:新增 JSON-RPC 端点(/api/mcp)与前端配置页,支持 Bearer/Basic 鉴权,暴露 45+ 工具供 Cursor/Claude 等 AI 客户端调用盯盘能力;响应中间件放行原生 JSON-RPC 格式
  • ETF 盯盘:场内 ETF 搜索/详情/成分股分析,ETF 概览弹窗与净值图表,成分股 AI 分析报告
  • AI 助手增强:对话续聊历史、新开清除旧会话;支持对话建价格提醒、加减仓确认执行(Chat Actions)
  • 本地 Skill 广场:Hermes Skill 扫描、运行与 Markdown 报告生成
  • 长线持仓计划:核心/卫星仓架构、分批加仓纪律、滚仓降本计划;缠论情绪博弈策略
  • 行情与 UI:当日分时图、分钟 K 线、深度分析模式;首页指数扩展;持仓加仓记录与加权成本;股票详情/历史页增强

Test plan

  • MCP 页面 /mcp 可列出工具并在线调试 tools/call
  • Cursor/Claude 通过 http://localhost:8000/api/mcp + Bearer token 连接成功
  • ETF 搜索、详情弹窗、成分股 AI 分析正常
  • AI 助手续聊、建提醒、加减仓确认流程
  • Skill 广场扫描与报告生成
  • 长线计划面板、滚仓降本、分时图与分钟 K 线展示
  • python -m pytest tests/ -v 全部通过

Made with Cursor

zackzhangkai and others added 30 commits June 22, 2026 13:15
Signed-off-by: zackZhang <zhangkaiamm@gmail.com>
新增滚仓降本计算器并在持仓列表/个股洞察中展示,修复 auto_trigger 从 AgentConfig.config 读取配置,并加入 vitest 单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
本地分析报告不应纳入版本控制。

Co-authored-by: Cursor <cursoragent@cursor.com>
多级别联立分析(日/30分/5分)、背驰与三类买卖点识别,结合养家心法赢面仓位;新增 API 与详情页策略面板,并支持分钟 K 线采集。

Co-authored-by: Cursor <cursoragent@cursor.com>
支持 5/30 分钟 K 线采集与图表展示(lightweight-charts 改为 npm 依赖);深度分析可选全面/仅基本面;股票详情内嵌深度分析与报告触发,历史页可跳转详情。

Co-authored-by: Cursor <cursoragent@cursor.com>
新增 PositionTrade 流水与加仓 API,股票详情页可填写买入价/股数确认加仓并刷新持仓成本。

Co-authored-by: Cursor <cursoragent@cursor.com>
首页指数增至 11 个(含标普500、纳指100、美元指数),新增全账户加仓流水与滚仓档位一键设价提醒。

Co-authored-by: Cursor <cursoragent@cursor.com>
对接腾讯/东财分时数据并提供 trends API,K 线页默认展示分时且每 20 秒自动刷新。

Co-authored-by: Cursor <cursoragent@cursor.com>
为自选股增加 investment_profile 配置、加仓评估 API 与前端计划面板,
并在盘中监测和 Agent 上下文中执行长线铁律;同步持仓流水、概念标签与相关测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
加仓/减仓后乐观更新 holdingAgg 与流水列表,避免页头成本滞后;刷新失败时保留已有持仓,成本展示提升至 4 位小数。

Co-authored-by: Cursor <cursoragent@cursor.com>
新增 Skill 扫描/注册 API 与管理页,支持在股票详情触发本地 Skill 报告并在历史中展示。

Co-authored-by: Cursor <cursoragent@cursor.com>
让 AI 对话可通过 propose 工具提议写操作,用户在卡片确认后才真正创建提醒或记录持仓流水,并在设置页提供独立权限开关。

Co-authored-by: Cursor <cursoragent@cursor.com>
恢复上次对话与按股票续聊,新开对话时物理删除旧会话以保证 AI 上下文清零。

Co-authored-by: Cursor <cursoragent@cursor.com>
新增 security_type 字段(stock/etf/index)贯穿数据模型,解除搜索对场内
ETF 的过滤,A 股 ETF 模拟交易免印花税与过户费;并新增 ETF 详情弹窗与
ETF 成分股分析 Agent。采集层零改动(腾讯行情/东财K线本就支持 ETF)。

- 模型/迁移: stocks 与模拟盘持仓/成交表加 security_type 列,按 CN
  5/15/16 前缀回填场内 ETF(m123/m124)
- 搜索: 东财 Classify=Fund 且场内前缀归入 CN etf,排除期权与场外基金
- 成本模型: CostModel.fill 按 security_type 对 ETF 免印花税/过户费
- 采集器: etf_collector 复用 akshare spot/holdings/info,spot 全量
  缓存 15min,各部分独立兜底
- Agent: etf_holding_analyst 为 capability,详情页按需触发,声明 ETF
  无个股财报防 AI 虚构基本面,建议入 suggestion_pool
- 前端: 自选列表 ETF 徽章,详情弹窗四 tab(概览/成分股/净值/AI 分析)

测试: 26 个新单测,全量 506 passed 零回归
关注列表可按概念标签筛选并点击卡片标签快速切换;同时修正盘中监测对历史交易流水的提示,避免误判为今日操作。

Co-authored-by: Cursor <cursoragent@cursor.com>
- 在 StockInsightModal 概览页新增交易记录卡片

- 多账户持有同只股票时显示账户数量徽章

- 移除 investment-profile.ts 未使用的 fetchAPI 导入以修复构建
在账户/持仓列表、股票详情和长线评估中展示总资产,并修正加仓计划评估改用实时市值计算组合资产。

Co-authored-by: Cursor <cursoragent@cursor.com>
启动、新增关注或打开详情时自动为缺失标的排队生成老马研究;保存与启动去重确保同 agent+标的只留最新报告,并规范 Markdown 落盘到 reports/。

Co-authored-by: Cursor <cursoragent@cursor.com>
Hermes 有时返回 review diff 而非报告正文,生成与历史 API 展示时改为从 reports/ 读取成稿;概念标签采集统一走 market_get 并修正东财 slist 参数。

Co-authored-by: Cursor <cursoragent@cursor.com>
修复 lmd-finance-perspective 仅入库摘要的问题:生成时启用 reports/ 回退与完整 LMD prompt,历史 API 对 local_skill 记录同样修正成稿;加强 Hermes 摘要检测并跳过研究底稿误匹配。历史页新增 ReportViewer 子目录导航与 PDF 导出。

Co-authored-by: Cursor <cursoragent@cursor.com>
允许将自选股标为精华,列表与 API 按精华优先排序,前端提供星标切换与仅精华筛选。

Co-authored-by: Cursor <cursoragent@cursor.com>
依据 LMD 产业链分层,用关键词与龙头代码映射自动分类,并在关注列表支持产业链筛选与徽章展示。

Co-authored-by: Cursor <cursoragent@cursor.com>
避免 AI 误读 .venv、node_modules 等大目录,通过 Cursor 规则、.cursorignore 与项目指南三层约束。

Co-authored-by: Cursor <cursoragent@cursor.com>
将 AI 产业链从三层改为底层/中间件/集成/应用,增加赛道门槛避免误归类;未命中人工智能赛道的关注股票显示「其他」并可筛选。账户侧支持按币种分项记录理财/存款等其他资产。

Co-authored-by: Cursor <cursoragent@cursor.com>
历史页从股票详情进入后可返回原页签;可用资金统一为「股票现金」;默认交易风格改为短线。

Co-authored-by: Cursor <cursoragent@cursor.com>
zackzhangkai and others added 7 commits June 26, 2026 19:51
将老马产业链从四层上中下游改为 GPU→CPO→HBM 等轮动次序,支持手动覆盖归类;自选股卡片展示老马估值快照,并可将老马/深度/缠论结论一键注入聊天上下文。

Co-authored-by: Cursor <cursoragent@cursor.com>
将用户可见文案、AI prompt、文档与构建脚本中的 PanWatch/盯盘侠统一替换为新品牌名,保留内部包名与存储键以兼容现有部署。

Co-authored-by: Cursor <cursoragent@cursor.com>
统一将「老马视角」更名为「产业周期视角」,并抽取 PositionRowActions 组件,把持仓与关注列表的操作按钮按功能分成多行,避免单行拥挤。

Co-authored-by: Cursor <cursoragent@cursor.com>
抽取 stock_news_context 统一拉取新闻/公告摘要,注入聊天与评估上下文,并新增 get_stock_news 工具供 AI 按需查询。

Co-authored-by: Cursor <cursoragent@cursor.com>
接入监管函/立案等红线判断并影响加仓评估与问 AI 提示;数据源页支持雪球 Cookie 探测、Netscape 格式自动转换及更明确的 WAF/格式错误提示。

Co-authored-by: Cursor <cursoragent@cursor.com>
httpx 重放浏览器 Cookie 仍会被阿里云 WAF 拦截;改为无头浏览器预热后在页面内 fetch timeline API,Cookie 变为可选项。

Co-authored-by: Cursor <cursoragent@cursor.com>
统一应用关闭流程,修复 Ctrl+C 时调度器与线程池无法退出的问题;前端支持雪球外链与 K 线全屏;过滤 K 线 nan/inf 脏数据;产业周期视角新增启动时扫描开关。

Co-authored-by: Cursor <cursoragent@cursor.com>
@TNT-Likely

TNT-Likely commented Jul 4, 2026

Copy link
Copy Markdown
Owner

@zackzhangkai

非常感谢这个 PR,功能量很惊人 🙏 不过这个改动实在太大了(+32921 / −1636,218 个文件),里面至少包含 6 个互相独立的大功能,合在一起很难做认真的 review,也不好回归验证——任何一块出问题都会拖住整个 PR 无法合入。

想请你按功能拆成几个独立的小 PR,每个单独提交、单独 review、单独合并,建议这样切分:

  1. MCP 接口 —— /api/mcp JSON-RPC 端点 + 前端 /mcp 配置页 + 鉴权/中间件放行
  2. ETF 盯盘 —— 搜索/详情/成分股分析 + 概览弹窗 + 净值图表 + etf_holding_analyst
  3. AI 助手增强 —— 续聊历史、清会话、Chat Actions(建提醒/加减仓确认)
  4. 本地 Skill 广场 —— Hermes Skill 扫描/运行/报告
  5. 长线持仓计划 —— 核心卫星仓、分批加仓、滚仓降本、缠论情绪策略
  6. 行情与 UI —— 分时图、分钟 K 线、深度分析模式、首页指数、加权成本等

拆分小建议:

  • 每个 PR 尽量控制在几百到一两千行,能独立编译、独立通过 pytest
  • 有公共基础(比如共享组件、类型定义)的话,可以先单独发一个「基建」PR 打底,后面的功能 PR 再依赖它;
  • 顺序上建议先发风险低、依赖少的(比如 UI/图表),MCP 和长线策略这种大块后面单独细看。

这样每块都能快速合入,也不至于让你的成果一直挂着。辛苦了,期待拆分后的 PR 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants