DeepEar | 顺风耳 An open-source framework for Deep Research and Financial Signal Tracking. 一个用于深度研究与金融信号追踪的开源框架。
281
stars
71
commits
Python
primary language
Aug 22, 2026
updated
English | 简体中文
🚀 Live Demo (Free Lite Version): https://deepear.vercel.app/
An open-source Deep Research framework that transforms Public Opinion into actionable Investment Logic Chains with skills.
▶️ Click to Watch DeepEar Workflow Demo (Video)
Click the preview below to see generated sample reports:
DeepEar is designed for financial analysts, quantitative researchers, and individual investors who need to bridge the gap between unstructured information and actionable trading signals.
NewsToolkit.Clone the repository
git clone https://github.com/RKiding/DeepEar.git
cd DeepEar
Install dependencies
uv sync
Setup Environment Variables Copy the example configuration file:
cp .env.example .env
Edit .env
Open .env and fill in your API keys. DeepEar supports a wide range of providers:
LLM_PROVIDER: openrouter, openai, ollama, deepseek, etc.REASONING_MODEL_ID: Model for complex analysis (e.g., gpt-4o).TOOL_MODEL_ID: Model for tool usage (e.g., qwen2.5).JINA_API_KEY: (Optional) Unified Jina API key for both web search (s.jina.ai) and content extraction (r.jina.ai).Launch the modern web interface to monitor and control the agents visually:
# Initial the frontend (First time only)
cd dashboard/frontend
npm install
npm run build
# Start the server
uv run python -m dashboard.server
Open http://localhost:8765 in your browser.
Real-time Agent Workflow Monitoring Dashboard
Note: For first-time access, you need to register an account. Use the default invitation code
DEEP-EAR-ADMINto get started. You can generate more invitation codes usinguv run scripts/generate_invitation.py.
Execute the main workflow directly:
uv run src/main_flow.py
| Argument | Description | Default |
|---|---|---|
--query | User query/intent (e.g., "A-share tech sector") | None |
--sources | News sources: all, financial, social, tech, or a comma-separated list | all |
--wide | Number of news items to fetch per source | 10 |
--depth | Report depth: auto (LLM decided) or an integer limit | auto |
--template | ISQ (Investment Signal Quality) scoring template ID | default_isq_v1 |
--concurrency | Concurrency level for signal analysis (max workers) | 1 |
--resume | Resume from the latest checkpoint | False |
--resume-from | Checkpoint to resume from: report (reuse MD), analysis (rerender) | report |
--update-from | Update an existing run (provide base run ID) to track signal evolution | None |
The system will start the agent workflow: identifying intent -> fetching trends -> analyzing signals -> predictive modeling -> generating reports.
Artifacts will be saved in the reports/ directory.
DeepEar can be integrated into various AI agent frameworks (like Antigravity, OpenCode, Claude Code) as a specialized skill. For individual component skills (e.g., news fetchers, sentiment analyzers), please refer to Awesome-finance-skills.
Install the Skill
Copy the skills/deepear directory to your agent's skill folder:
# Example for OpenCode/Claude Code
mkdir -p ~/.config/opencode/skills/
cp -r skills/deepear ~/.config/opencode/skills/
Skill Installation Paths
| Framework | Scope | Installation Path |
|---|---|---|
| Antigravity | Workspace | <workspace>/.agent/skills/<skill>/ |
| Global | ~/.gemini/antigravity/global_skills/<skill>/ | |
| OpenCode | Project | .opencode/skills/<skill>/ or .claude/skills/<skill>/ |
| Global | ~/.config/opencode/skills/<skill>/ | |
| OpenClaw | Workspace | <workspace>/skills (highest priority) |
| Managed | ~/.openclaw/skills | |
| Claude Code / Codex | Personal | ~/.claude/skills/ or ~/.codex/skills/ |
| Project | .claude/skills/ |
uv run skills/deepear/scripts/server.py
The agent can now use the analyze tool to trigger the DeepEar workflow and status to check results.DeepEar follows a layered architecture to decouple tools, agents, and workflow logic.
graph TD
User[User Query] --> Intent[Intent Agent]
Intent --> Trend[Trend Agent]
subgraph "Discovery Layer"
Trend --> |Fetch & Filter| Source["Data Sources"]
end
Trend --> |Raw Signals| Logic[Logic Filter]
Logic --> |Qualified Signals| Fin[Fin Agent]
subgraph "Analysis Layer"
Fin --> |Market Data| Stock[Stock Toolkit]
Fin --> |Deep Dive| Search[Search Toolkit]
Fin --> |Scoring| ISQ[ISQ Template]
end
Fin --> |Structured Analysis| Report[Report Agent]
subgraph "Prediction Layer"
Report --> Forecast[Forecast Agent]
Forecast --> |News Embeddings| NewsProj[News Projection Layer]
NewsProj --> Kronos[Kronos Model]
Forecast --> |Adjustment| LLM[LLM Refinement]
end
subgraph "Output Layer"
Report --> |Map-Reduce| Draft[Draft Sections]
Draft --> |Hybrid RAG| Edit[Unified Edit]
Edit --> Final[Final Report .md/.html]
end
main_flow.py): Orchestrates the global state and execution path, supporting checkpoints and resume.src/agents/):
TrendAgent: Scans for hot topics and performs initial sentiment analysis.FinAgent: Validates investment logic, checks stock data, and formulates transmission chains using ISQ templates.ForecastAgent: Integrates time-series models with LLM reasoning for price trend predictions.ReportAgent: Uses a Map-Reduce approach to plan, write, and refine professional reports with interactive charts.src/tools/, src/utils/):
One of the core innovations in DeepEar is the integration of a few-shot news-projection layer into the Kronos foundation model. This allows the system to not just predict based on historical prices, but to understand the quantitative impact of news events.
The news-aware projection mechanism: mapping semantic embeddings to the model's latent space.
DeepEar/
├── config/ # Configuration profiles
├── docs/ # Documentation & Guides
├── reports/ # Generated reports
├── src/
│ ├── agents/ # AI Agents (Trend, Fin, Report, Intent)
│ ├── tools/ # Toolkits (News, Stock, Search)
│ ├── utils/ # Core utilities (LLM factory, DB, Sentiment)
│ └── main_flow.py # Entry point
├── .env.example # Environment template
└── pyproject.toml # Dependency management
src/tools/news_toolkit/providers/.NewsToolkit.NewsItem schema.Run the test suite using pytest:
uv run pytest src/tests/
Derived from our internal plans:
Contributions are welcome! Please feel free to verify the docs/guide.md for architectural conformance before submitting a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Special thanks to the following projects and communities for their inspiration and core technologies:
If you find this project useful in your research or applications, please consider citing it:
@misc{deep_ear_2026,
author = {Runke Ruan},
title = {DeepEar: An Extensible Framework for Financial Signal Extraction and News-Aware Forecasting},
year = {2026},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/rkiding/DeepEar}}
}
Distributed under the MIT License. See LICENSE for more information.
70 commits
1 commits
Python
71.7%
TypeScript
18.3%
CSS
9.9%
DeepEar | 顺风耳 An open-source framework for Deep Research and Financial Signal Tracking. 一个用于深度研究与金融信号追踪的开源框架。
281
stars
71
commits
Python
primary language
Aug 22, 2026
updated
English | 简体中文
🚀 Live Demo (Free Lite Version): https://deepear.vercel.app/
An open-source Deep Research framework that transforms Public Opinion into actionable Investment Logic Chains with skills.
▶️ Click to Watch DeepEar Workflow Demo (Video)
Click the preview below to see generated sample reports:
DeepEar is designed for financial analysts, quantitative researchers, and individual investors who need to bridge the gap between unstructured information and actionable trading signals.
NewsToolkit.Clone the repository
git clone https://github.com/RKiding/DeepEar.git
cd DeepEar
Install dependencies
uv sync
Setup Environment Variables Copy the example configuration file:
cp .env.example .env
Edit .env
Open .env and fill in your API keys. DeepEar supports a wide range of providers:
LLM_PROVIDER: openrouter, openai, ollama, deepseek, etc.REASONING_MODEL_ID: Model for complex analysis (e.g., gpt-4o).TOOL_MODEL_ID: Model for tool usage (e.g., qwen2.5).JINA_API_KEY: (Optional) Unified Jina API key for both web search (s.jina.ai) and content extraction (r.jina.ai).Launch the modern web interface to monitor and control the agents visually:
# Initial the frontend (First time only)
cd dashboard/frontend
npm install
npm run build
# Start the server
uv run python -m dashboard.server
Open http://localhost:8765 in your browser.
Real-time Agent Workflow Monitoring Dashboard
Note: For first-time access, you need to register an account. Use the default invitation code
DEEP-EAR-ADMINto get started. You can generate more invitation codes usinguv run scripts/generate_invitation.py.
Execute the main workflow directly:
uv run src/main_flow.py
| Argument | Description | Default |
|---|---|---|
--query | User query/intent (e.g., "A-share tech sector") | None |
--sources | News sources: all, financial, social, tech, or a comma-separated list | all |
--wide | Number of news items to fetch per source | 10 |
--depth | Report depth: auto (LLM decided) or an integer limit | auto |
--template | ISQ (Investment Signal Quality) scoring template ID | default_isq_v1 |
--concurrency | Concurrency level for signal analysis (max workers) | 1 |
--resume | Resume from the latest checkpoint | False |
--resume-from | Checkpoint to resume from: report (reuse MD), analysis (rerender) | report |
--update-from | Update an existing run (provide base run ID) to track signal evolution | None |
The system will start the agent workflow: identifying intent -> fetching trends -> analyzing signals -> predictive modeling -> generating reports.
Artifacts will be saved in the reports/ directory.
DeepEar can be integrated into various AI agent frameworks (like Antigravity, OpenCode, Claude Code) as a specialized skill. For individual component skills (e.g., news fetchers, sentiment analyzers), please refer to Awesome-finance-skills.
Install the Skill
Copy the skills/deepear directory to your agent's skill folder:
# Example for OpenCode/Claude Code
mkdir -p ~/.config/opencode/skills/
cp -r skills/deepear ~/.config/opencode/skills/
Skill Installation Paths
| Framework | Scope | Installation Path |
|---|---|---|
| Antigravity | Workspace | <workspace>/.agent/skills/<skill>/ |
| Global | ~/.gemini/antigravity/global_skills/<skill>/ | |
| OpenCode | Project | .opencode/skills/<skill>/ or .claude/skills/<skill>/ |
| Global | ~/.config/opencode/skills/<skill>/ | |
| OpenClaw | Workspace | <workspace>/skills (highest priority) |
| Managed | ~/.openclaw/skills | |
| Claude Code / Codex | Personal | ~/.claude/skills/ or ~/.codex/skills/ |
| Project | .claude/skills/ |
uv run skills/deepear/scripts/server.py
The agent can now use the analyze tool to trigger the DeepEar workflow and status to check results.DeepEar follows a layered architecture to decouple tools, agents, and workflow logic.
graph TD
User[User Query] --> Intent[Intent Agent]
Intent --> Trend[Trend Agent]
subgraph "Discovery Layer"
Trend --> |Fetch & Filter| Source["Data Sources"]
end
Trend --> |Raw Signals| Logic[Logic Filter]
Logic --> |Qualified Signals| Fin[Fin Agent]
subgraph "Analysis Layer"
Fin --> |Market Data| Stock[Stock Toolkit]
Fin --> |Deep Dive| Search[Search Toolkit]
Fin --> |Scoring| ISQ[ISQ Template]
end
Fin --> |Structured Analysis| Report[Report Agent]
subgraph "Prediction Layer"
Report --> Forecast[Forecast Agent]
Forecast --> |News Embeddings| NewsProj[News Projection Layer]
NewsProj --> Kronos[Kronos Model]
Forecast --> |Adjustment| LLM[LLM Refinement]
end
subgraph "Output Layer"
Report --> |Map-Reduce| Draft[Draft Sections]
Draft --> |Hybrid RAG| Edit[Unified Edit]
Edit --> Final[Final Report .md/.html]
end
main_flow.py): Orchestrates the global state and execution path, supporting checkpoints and resume.src/agents/):
TrendAgent: Scans for hot topics and performs initial sentiment analysis.FinAgent: Validates investment logic, checks stock data, and formulates transmission chains using ISQ templates.ForecastAgent: Integrates time-series models with LLM reasoning for price trend predictions.ReportAgent: Uses a Map-Reduce approach to plan, write, and refine professional reports with interactive charts.src/tools/, src/utils/):
One of the core innovations in DeepEar is the integration of a few-shot news-projection layer into the Kronos foundation model. This allows the system to not just predict based on historical prices, but to understand the quantitative impact of news events.
The news-aware projection mechanism: mapping semantic embeddings to the model's latent space.
DeepEar/
├── config/ # Configuration profiles
├── docs/ # Documentation & Guides
├── reports/ # Generated reports
├── src/
│ ├── agents/ # AI Agents (Trend, Fin, Report, Intent)
│ ├── tools/ # Toolkits (News, Stock, Search)
│ ├── utils/ # Core utilities (LLM factory, DB, Sentiment)
│ └── main_flow.py # Entry point
├── .env.example # Environment template
└── pyproject.toml # Dependency management
src/tools/news_toolkit/providers/.NewsToolkit.NewsItem schema.Run the test suite using pytest:
uv run pytest src/tests/
Derived from our internal plans:
Contributions are welcome! Please feel free to verify the docs/guide.md for architectural conformance before submitting a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Special thanks to the following projects and communities for their inspiration and core technologies:
If you find this project useful in your research or applications, please consider citing it:
@misc{deep_ear_2026,
author = {Runke Ruan},
title = {DeepEar: An Extensible Framework for Financial Signal Extraction and News-Aware Forecasting},
year = {2026},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/rkiding/DeepEar}}
}
Distributed under the MIT License. See LICENSE for more information.
70 commits
1 commits
Python
71.7%
TypeScript
18.3%
CSS
9.9%