// the find
simonlin1212/Vibe-Research
Vibe-Research: Your Personal Trading Research Agent · A股/美股/港股 的个人投研 Agent:每日复盘、资讯雷达、个股数据、板块中心、我的持仓、研究记录。Vibe-Research 把数据和功能配齐,由你自己的 AI 驱动投资研究。
A self-hosted research dashboard for Chinese A-shares plus US and HK markets, built as a FastAPI backend with a React 19 frontend. It wires together market data, financial statements, news feeds, and your own LLM — either via API key or by shelling out to whatever CLI you already have installed (Claude Code, Codex, etc.). Aimed at individual investors who want a Bloomberg-lite that they control, not a SaaS that upsells them signals.
The 'bring your own model' architecture is genuinely well thought out — three distinct integration paths (CLI subprocess, OpenAI-compatible API, MCP server) give real flexibility without the backend ever holding your keys. Bundling the data layer as Git subfolders with a SKILL.md that's copy-paste-ready for agents is a clever DX choice; the data is immediately available offline without any additional setup steps. The lazy-import pattern for heavier dependencies (mootdx, akshare) is the right call — missing packages return 501 with an install hint rather than crashing the whole server. Test suite is split into offline and live markers, so CI can run fast tests without needing real market data.
The entire data layer scrapes East Money (东财) endpoints directly — no official API contract, no versioning guarantee. One DOM change or rate-limit policy update on their end and 40+ endpoints silently break. The portfolio and watchlist are stored locally in what appears to be in-memory or flat-file cache (portfolio.py), which means there's no persistence story for multi-device use or browser restarts without digging into the code. The CLI subprocess approach for 'subscription mode' AI is fragile in practice: spawning claude or codex as a child process with a stuffed prompt has no retry logic, no streaming, and will silently fail if the CLI updates its output format. There's no authentication layer — the backend runs open on 127.0.0.1:8900, so if you ever expose this beyond localhost (or misconfigure a reverse proxy), your portfolio data and API keys stored in browser localStorage are readable by anyone who can hit the port.