开源项目 GitHub Trending 2026-09-23T12:01 正文 ok 629 words

PanWatch:集成 TradingAgents 多 Agent 决策的自托管 AI 盯盘助手

英文标题:🔥 TNT-Likely/PanWatch

PanWatch 是一款可自托管的 AI 盯盘助手,面向 A 股、港股和美股提供实时行情监控、持仓管理、技术分析、价格提醒与多渠道通知。项目接入 TradingAgents 多 Agent 投资决策框架,可由技术、情绪、新闻和基本面分析师协作完成多空辩论、风控审查及 PM 决策,单次分析通常需 3—5 分钟。该系统支持 OpenAI 兼容 API、Docker 一键部署,以及 Telegram、企业微信、钉钉、飞书等推送渠道。对开发者而言,项目还提供 FastAPI、React 技术栈、可选 OpenTelemetry 导出和 Docker 镜像自动发布流程。
打开原文相关 3 · 机会 3
media2.6 KB media3.7 KB media1.2 KB media1.3 KB media2.3 KB media5.8 MB media282.3 KB media232.5 KB media163.5 KB media513.7 KB media506.2 KB media100.3 KB media368.1 KB media373.2 KB media139.3 KB media173.1 KB media137.1 KB

中文

自托管 AI 盯盘助手 · 集成 TradingAgents 多 Agent 投资决策 — A 股 / 港股 / 美股实时监控、持仓管理、智能分析、全渠道推送

GitHub stars Docker Pulls License: MIT Last commit PWA

盯盘侠 PanWatch · TradingAgents 深度分析演示

🧠 在持仓页面点击一下 → TradingAgents 9-Agent 投研团队接力分析 → 多空辩论 → 风控审查 → PM 决策书;3—5 分钟生成一条完整推理链,结论直接推送至你的 IM。

持仓 · 多账户汇总 机会页 · AI 评分选股
持仓管理 机会页 AI 评分
模拟盘 · 净值曲线 + 绩效 个股深度详情
模拟盘 个股详情
技术指标共振 · 一眼查看 MACD/RSI/KDJ 价格提醒 · 条件组合触发
技术指标 价格提醒
移动端截图

📱 支持 PWA,移动端可通过“添加到主屏幕”作为原生 App 使用。

🧠 深度分析:TradingAgents 多 Agent 决策

接入 TradingAgents(76k+ Star)多 Agent 投资决策框架,在持仓页面点击 🧠 图标即可触发:

  • 4 类分析师(技术 / 情绪 / 新闻 / 基本面)→ 多空辩论 → 风控审查 → PM 整合决策

  • 3—5 分钟输出完整推理链,结论同步推送至 Telegram / 微信 / 钉钉

  • 默认使用 deepseek-chat,单次成本约为 $0.05,月度预算可控

  • 数据私有 — 自托管部署,持仓数据不会经过任何第三方

  • AI 原生 — 并非简单堆砌指标,而是让 AI 理解你的持仓、风格和目标

  • 开箱即用 — Docker 一键部署,5 分钟完成配置

智能 Agent 系统

Agent 触发时机 功能
盘前分析 每日开盘前 综合隔夜美股、新闻消息、技术形态,给出当日操作策略
盘中监测 交易时段实时 监控异动信号,在 RSI/KDJ/MACD 共振时推送提醒
盘后日报 每日收盘后 复盘当日走势,分析资金流向,规划次日操作
新闻速递 定时采集 抓取财经新闻,由 AI 筛选与持仓相关的重要信息

专业技术分析

  • 趋势指标:MA 多空排列、MACD 金叉死叉、布林带突破
  • 动量指标:RSI 超买超卖、KDJ 钝化与背离
  • 量价分析:量比异动、缩量回调、放量突破
  • 形态识别:锤子线、吞没形态、十字星等 K 线形态
  • 支撑压力:自动计算多级支撑位和压力位

多市场 & 多账户

  • 覆盖市场:A 股、港股、美股实时行情
  • 账户管理:支持多个券商账户独立管理,并汇总展示总资产
  • 交易风格:可按短线 / 波段 / 长线分别设置,使 AI 建议更精准

全渠道通知

Telegram / 企业微信 / 钉钉 / 飞书 / Bark / 自定义 Webhook

价格提醒

  • 支持价格、涨跌幅、成交额、量比等条件组合(AND / OR)

  • 支持交易时段 / 全天生效、冷却时间、每日触发上限、重复触发模式

  • 到期时间通过弹窗内日期面板 + HH:mm 输入;留空表示永不过期

  • 可按规则选择通知渠道;未选择时使用系统默认渠道

    docker run -d
    --name panwatch
    -p 8000:8000
    -v panwatch_data:/app/data
    sunxiao0721/panwatch:latest

访问 http://localhost:8000,首次使用时设置账号和密码即可。

说明:镜像内已包含 Playwright 运行所需的系统依赖;Chromium 浏览器会在容器首次启动时自动下载并安装到挂载卷(默认路径为 /app/data/playwright)。首次启动可能需要几分钟,并且需要网络可访问。

如果不需要截图等浏览器能力,可在启动容器时设置 PLAYWRIGHT_SKIP_BROWSER_INSTALL=1,跳过首次 Chromium 下载和安装。

Docker Compose

version: '3.8'
services:
  panwatch:
    image: sunxiao0721/panwatch:latest
    container_name: panwatch
    ports:
      - "8000:8000"
    volumes:
      - panwatch_data:/app/data
    restart: unless-stopped

volumes:
  panwatch_data:

环境变量

变量名 说明 默认值
AUTH_USERNAME 预设登录用户名 首次访问时设置
AUTH_PASSWORD 预设登录密码 首次访问时设置
JWT_SECRET JWT 签名密钥 自动生成
DATA_DIR 数据存储目录 ./data
TZ 应用时区(影响 Agent 调度触发时间及时间展示) Asia/Shanghai
PLAYWRIGHT_SKIP_BROWSER_INSTALL 跳过首次 Chromium 安装(不需要截图时可用) 未设置
LOG_LEVEL 控制台日志级别。默认为 INFO(仅输出业务事件和错误);排查问题时设为 DEBUG,可查看调度心跳、采集过程等底层日志。UI 日志面板始终保留完整记录,不受影响 INFO
HTTP_PROXY / HTTPS_PROXY / http_proxy 出站 HTTP 代理。三种配置方式任选其一:① 启动前执行 export HTTP_PROXY=...;② 在 .env 中写入 http_proxy=http://host:port;③ 在 UI 中选择“设置 → 全局 HTTP 代理”。三者优先级为:外部环境变量 > UI > .env。生效后,所有 httpx 客户端均通过代理访问。NO_PROXY 默认包含 localhost,127.0.0.1 未设置
OTEL_EXPORTER_OTLP_ENDPOINT OpenTelemetry OTLP 导出端点(如 http://jaeger:4318)。仅在配置后启用 OTel trace 导出;留空则完全关闭(零副作用)。还需安装可选依赖 requirements-otel.txt。详见下方“OTel 导出” 未设置(关闭)

首次配置

  1. 访问 Web 界面,设置登录账号。
  2. 设置 → AI 服务商:配置 OpenAI 兼容 API(支持 OpenAI / 智谱 / DeepSeek / Ollama 等)。
  3. 设置 → 通知渠道:添加 Telegram 或其他推送渠道。
  4. 持仓 → 添加股票:添加自选股,并启用相应 Agent。

本地开发

环境要求:Python 3.10+ / Node.js 18+ / pnpm

# 一键开发(推荐)
make dev-api          # 启动后端(自动 venv+依赖,监听 :8000)
make dev-web          # 启动前端(自动 pnpm install,监听 :5183)

# 或手动
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python server.py                              # 后端 :8000

cd frontend && pnpm install && pnpm dev       # 前端 :5183

前端开发服务器运行在 http://localhost:5183,并将 /api 代理至 127.0.0.1:8000。前端使用 :5183 而非默认的 :5173,以避免与 BeeCount-Cloud 等本地常驻前端发生冲突。

技术栈

后端:FastAPI / SQLAlchemy / APScheduler / OpenAI SDK

前端:React 18 / TypeScript / Tailwind CSS / shadcn/ui

OTel 导出(可选,默认关闭)

PanWatch 内建一套自有可观测体系(结构化日志中 trace_id 全程贯穿 / agent_runs 运行表 / TradingAgents 节点级进度与成本),开箱即用,无需任何外部组件。

在此基础上,还可选择性接入标准 OpenTelemetry 导出,将 trace 发送至 Jaeger / Tempo / Langfuse 等标准 APM。三类 span 映射如下:

  • Agent 单次运行 → root span(复用 agent_runs 的 trace_id 进行关联)
  • 单次 LLM 调用 → gen_ai 子 span,遵循 OpenTelemetry GenAI 语义约定(gen_ai.system / gen_ai.request.model / gen_ai.usage.input_tokens / gen_ai.usage.output_tokens / gen_ai.operation.name),可被标准 APM 识别为一次模型调用
  • TradingAgents 节点 → 子 span(复用节点级进度回调)

默认完全关闭:未安装依赖、未配置 endpoint 时,导出层全程为 no-op,不改变任何既有行为。

开启三步:

# 1. 安装可选依赖
pip install -r requirements-otel.txt

# 2. 配置 OTLP 端点(指向你的 collector / APM)
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_SERVICE_NAME=panwatch   # 可选,默认 panwatch

# 3. 正常启动;启动日志出现 "OTel 导出已启用" 即表示生效
python server.py

本地启动一个 Jaeger 进行验证:

docker run -d --name jaeger -p 16686:16686 -p 4318:4318 \
  jaegertracing/all-in-one:latest
# 触发任意 Agent 运行后,打开 http://localhost:16686,选择 service=panwatch 查看 trace

Langfuse / Tempo 的配置方式相同:将 OTEL_EXPORTER_OTLP_ENDPOINT 指向相应的 OTLP 入口即可。

发布(Docker 镜像)

本项目内置 GitHub Actions 发布流程:

  • 创建 tag(例如 0.2.3)将自动构建并推送 Docker 镜像:
    • sunxiao0721/panwatch:0.2.3
    • sunxiao0721/panwatch:latest
  • 也支持在 GitHub Actions 中通过手动触发(workflow_dispatch)指定版本号。

需要在仓库 Secrets 中配置:

  • DOCKERHUB_USERNAME
  • DOCKERHUB_TOKEN

欢迎提交 Issue 和 PR。自定义 Agent 与数据源开发请参考贡献指南。社区交流(Telegram):t.me/panwatch

MIT

English / 原文

自托管 AI 盯盘助手 · 集成TradingAgents 多 Agent 投资决策 — A 股 / 港股 / 美股实时监控、持仓管理、智能分析、全渠道推送

GitHub stars Docker Pulls License: MIT Last commit PWA

盯盘侠 PanWatch · TradingAgents 深度分析演示

🧠 持仓页点一下 → TradingAgents 9-Agent 投研团队接力分析 → 看多看空辩论 → 风控审查 → PM 决策书,3-5 分钟一条完整推理链,结论直推到你的 IM。

持仓 · 多账户汇总 机会页 · AI 评分选股
持仓管理 机会页 AI 评分
模拟盘 · 净值曲线 + 绩效 个股深度详情
模拟盘 个股详情
技术指标共振 · 一眼 MACD/RSI/KDJ 价格提醒 · 条件组合触发
技术指标 价格提醒
移动端截图

📱 支持 PWA,移动端可「添加到主屏幕」当原生 App 用。

💡 如果盯盘侠对你有帮助,点右上角 ⭐ Star 支持一下 —— 这是对开源项目最好的鼓励,也能让更多人发现它。

🧠 深度分析:TradingAgents 多 Agent 决策

接入 TradingAgents(76k+ star)多 Agent 投资决策框架,在持仓页点 🧠 图标即可触发:

  • 4 类分析师 (技术 / 情绪 / 新闻 / 基本面) → 看多看空辩论 → 风控审查 → PM 整合决策

  • 3-5 分钟输出完整推理链,结论同步推送到 Telegram / 微信 / 钉钉

  • 默认 deepseek-chat,单次 ~$0.05,月度预算可控

  • 数据私有 — 自托管部署,持仓数据不经过任何第三方

  • AI 原生 — 不是简单的指标堆砌,而是让 AI 理解你的持仓、风格和目标

  • 开箱即用 — Docker 一键部署,5 分钟完成配置

智能 Agent 系统 Agent 触发时机 功能
盘前分析 每日开盘前 综合隔夜美股、新闻消息、技术形态,给出今日操作策略
盘中监测 交易时段实时 监控异动信号,RSI/KDJ/MACD 共振时推送提醒
盘后日报 每日收盘后 复盘当日走势,分析资金流向,规划次日操作
新闻速递 定时采集 抓取财经新闻,AI 筛选与持仓相关的重要信息
专业技术分析
  • 趋势指标 :MA 多空排列、MACD 金叉死叉、布林带突破
  • 动量指标 :RSI 超买超卖、KDJ 钝化与背离
  • 量价分析 :量比异动、缩量回调、放量突破
  • 形态识别 :锤子线、吞没形态、十字星等 K 线形态
  • 支撑压力 :自动计算多级支撑位和压力位

多市场 & 多账户

  • 覆盖市场 :A 股、港股、美股实时行情
  • 账户管理 :支持多券商账户独立管理,汇总展示总资产
  • 交易风格 :按短线/波段/长线分别设置,AI 建议更精准

全渠道通知

Telegram / 企业微信 / 钉钉 / 飞书 / Bark / 自定义 Webhook

价格提醒

  • 支持价格、涨跌幅、成交额、量比等条件组合(AND / OR)

  • 支持交易时段/全天生效、冷却时间、日触发上限、重复触发模式

  • 到期时间使用弹窗内日期面板 + HH:mm 输入,留空表示永不过期

  • 可按规则选择通知渠道,不选则走系统默认渠道

    docker run -d
    --name panwatch
    -p 8000:8000
    -v panwatch_data:/app/data
    sunxiao0721/panwatch:latest

访问 http://localhost:8000,首次使用设置账号密码即可。

说明:镜像内已包含 Playwright 运行所需的系统依赖;Chromium 浏览器会在容器首次启动时自动下载并安装到挂载卷(默认 /app/data/playwright),首次启动可能需要几分钟且需要网络可达。

如果不需要截图等浏览器能力,可以在启动容器时设置 PLAYWRIGHT_SKIP_BROWSER_INSTALL=1 跳过首次 Chromium 下载/安装。

Docker Compose

version: '3.8'
services:
  panwatch:
    image: sunxiao0721/panwatch:latest
    container_name: panwatch
    ports:
      - "8000:8000"
    volumes:
      - panwatch_data:/app/data
    restart: unless-stopped

volumes:
  panwatch_data:
环境变量 变量名 说明 默认值
AUTH_USERNAME 预设登录用户名 首次访问时设置
AUTH_PASSWORD 预设登录密码 首次访问时设置
JWT_SECRET JWT 签名密钥 自动生成
DATA_DIR 数据存储目录 ./data
TZ 应用时区(影响 Agent 调度触发时间与时间展示) Asia/Shanghai
PLAYWRIGHT_SKIP_BROWSER_INSTALL 跳过首次 Chromium 安装(不需要截图时可用) 未设置
LOG_LEVEL 控制台日志级别。默认 INFO(只输出业务事件 + 错误);排查问题时设 DEBUG 可看到调度心跳、采集过程等底层日志。UI 日志板始终保留完整记录,不受影响 INFO
HTTP_PROXY / HTTPS_PROXY / http_proxy 出站 HTTP 代理。三种配置方式任选其一: ① 启动前 export HTTP_PROXY=...;② .env 里写 http_proxy=http://host:port;③ UI「设置 → 全局 HTTP 代理」。三者优先级:外部环境变量 > UI > .env。生效后所有 httpx 客户端走代理。NO_PROXY 默认包含 localhost,127.0.0.1 未设置
OTEL_EXPORTER_OTLP_ENDPOINT OpenTelemetry OTLP 导出端点(如 http://jaeger:4318)。配置后 才启用 OTel trace 导出;留空则完全关闭(零副作用)。还需安装可选依赖 requirements-otel.txt。详见下方「OTel 导出」 未设置(关闭)
首次配置
  1. 访问 Web 界面,设置登录账号
  2. 设置 → AI 服务商 :配置 OpenAI 兼容 API(支持 OpenAI / 智谱 / DeepSeek / Ollama 等)
  3. 设置 → 通知渠道 :添加 Telegram 或其他推送渠道
  4. 持仓 → 添加股票 :添加自选股,启用对应 Agent

本地开发

环境要求 :Python 3.10+ / Node.js 18+ / pnpm

# 一键开发(推荐)
make dev-api          # 启动后端(自动 venv+依赖,监听 :8000)
make dev-web          # 启动前端(自动 pnpm install,监听 :5183)

# 或手动
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python server.py                              # 后端 :8000

cd frontend && pnpm install && pnpm dev       # 前端 :5183

前端 dev server 跑在 http://localhost:5183,并把 /api 代理到 127.0.0.1:8000。 前端用 :5183 而非默认 :5173,是为了和 BeeCount-Cloud 等本地常驻前端错开。

技术栈

后端 :FastAPI / SQLAlchemy / APScheduler / OpenAI SDK

前端 :React 18 / TypeScript / Tailwind CSS / shadcn/ui

OTel 导出(可选,默认关闭)

PanWatch 内建一套自建可观测体系(结构化日志 trace_id 贯穿 / agent_runs 运行表 / TradingAgents 节点级进度与成本),开箱即用、无需任何外部组件。

在此之上,可可选地 再挂一层标准 OpenTelemetry 导出,把 trace 送到 Jaeger / Tempo / Langfuse 等标准 APM。三类 span 映射:

  • Agent 一次运行 → root span(复用 agent_runs 的 trace_id 关联)
  • 单次 LLM 调用 → gen_ai 子 span,遵循 OpenTelemetry GenAI 语义约定(gen_ai.system / gen_ai.request.model / gen_ai.usage.input_tokens / gen_ai.usage.output_tokens / gen_ai.operation.name),可被标准 APM 识别为一次模型调用
  • TradingAgents 节点 → 子 span(复用节点级进度回调)

默认完全关闭 :不装依赖、不配 endpoint 时,导出层全程 no-op,不改变任何现有行为。

开启三步 :

# 1. 安装可选依赖
pip install -r requirements-otel.txt

# 2. 配置 OTLP 端点(指向你的 collector / APM)
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_SERVICE_NAME=panwatch   # 可选,默认 panwatch

# 3. 正常启动;启动日志出现 "OTel 导出已启用" 即生效
python server.py

本地起一个 Jaeger 验证 :

docker run -d --name jaeger -p 16686:16686 -p 4318:4318 \
  jaegertracing/all-in-one:latest
# 触发任意 Agent 运行后,打开 http://localhost:16686 选 service=panwatch 查看 trace

Langfuse / Tempo 同理,把 OTEL_EXPORTER_OTLP_ENDPOINT 指向对应 OTLP 入口即可。

发布(Docker 镜像)

本项目内置 GitHub Actions 发布流程:

  • 打 tag(例如 0.2.3)会自动构建并推送 Docker 镜像
    • sunxiao0721/panwatch:0.2.3
    • sunxiao0721/panwatch:latest
  • 也支持在 GitHub Actions 里手动触发(workflow_dispatch)指定版本号

需要在仓库 Secrets 中配置:

  • DOCKERHUB_USERNAME
  • DOCKERHUB_TOKEN

如果你觉得 PanWatch 有帮助,欢迎请作者喝杯咖啡:

微信赞赏 支付宝

欢迎提交 Issue 和 PR!自定义 Agent 和数据源开发请参考 贡献指南。 社区交流(Telegram):t.me/panwatch

MIT