OpenProphet
*精选推荐 彭博*
具有web仪表板、MCP工具和Go交易后端的自主AI交易代理
______________________________________________________________________
请注意: 这是一个研究项目。我还有很多其他事情要做,OpenProphet并没有在我的待办事项列表中名列前茅。付费模板和指南 openprophet.io 存在的主要目的是处理我从非技术用户那里得到的大量设置问题——这并不意味着这是一个精致的商业产品。 有关许可、商业使用或收购的问题,请直接发送电子邮件至 jakenesler@gmail.com. 除了我的其他回购之外,没有加密货币项目、表情币或其他与此正式相关的项目, Claude_Prophet.
______________________________________________________________________
高级设置指南和模板→ openprophet.io
对Git或自托管不满意? 付费服务可在 openprophet.io 它为您处理完整的设置。它还包括:
- 分步设置指南 对于每个技能级别
- 代理模板 --预先构建的角色,具有经过调整的提示和配置
- 战略模板 --具有规则和风险参数的即用型交易策略
______________________________________________________________________
警告: 这是一个实验性的人工智能交易系统。期权交易涉及重大的损失风险。仅使用纸质交易。作者对经济损失不承担任何责任。
______________________________________________________________________
这是什么?
OpenProphet是一个完全自主的交易工具,在心跳循环中运行AI代理。代理人按计划醒来,评估市场状况,管理头寸,执行交易——所有这些都没有人为干预。移动友好的网络仪表板 http://localhost:3737 实时流式传输所有内容。
+---------------------+
| Web Dashboard |
| (port 3737) |
| SSE streaming |
+--------+------------+
|
+--------v------------+
| Agent Server |
| (Node.js/Express) |
| Heartbeat loop |
| Config store |
+--------+------------+
|
+------------------+------------------+
| |
+---------v-----------+ +-----------v-----------+
| OpenCode CLI | | Go Trading Backend |
| (AI subprocess) | | (Gin, port 4534) |
| Claude models | | Alpaca API client |
+---------------------+ | News aggregation |
| | Technical analysis |
+---------v-----------+ +-----------+-----------+
| MCP Server | |
| (Node.js) | +-----------v-----------+
| 45+ trading tools | | Alpaca Markets API |
| Permission gates | | (paper / live) |
+---------------------+ +-----------------------+循环
- 代理在心跳时醒来(间隔因市场阶段而异)
- 使用Claude模型+MCP工具生成OpenCode子流程
- 客服电话工具:查看账户、扫描新闻、分析设置、下订单
- 结果通过SSE流式传输到网络仪表板
- 特工一直睡到下一次心跳
代理通过以下方式控制自己的心跳间隔 set_heartbeat MCP工具——它可以在动荡时期加速,也可以在市场平静时减速。
______________________________________________________________________
建筑
OpenProphet
├── agent/ # Autonomous agent system (Node.js)
│ ├── server.js # Express web server, SSE, Go lifecycle, auth
│ ├── harness.js # Heartbeat loop, OpenCode subprocess, session mgmt
│ ├── config-store.js # Persistent JSON config with write locking
│ └── public/index.html # Single-page dashboard (paper aesthetic)
├── mcp-server.js # MCP tool server (45+ tools, permission enforcement)
├── cmd/bot/main.go # Go backend entry point
├── controllers/ # HTTP handlers (48 functions)
│ ├── order_controller.go # Buy/sell/options/managed positions
│ ├── intelligence_controller.go # AI news analysis
│ ├── news_controller.go # News aggregation (Google, MarketWatch)
│ ├── activity_controller.go # Activity logging
│ └── position_controller.go # Position management
├── services/ # Business logic (63 functions)
│ ├── alpaca_trading.go # Order execution via Alpaca API
│ ├── alpaca_data.go # Market data (quotes, bars, IEX feed)
│ ├── alpaca_options_data.go # Options chains and snapshots
│ ├── position_manager.go # Automated stop-loss / take-profit
│ ├── gemini_service.go # Gemini AI for news cleaning
│ ├── news_service.go # Multi-source news aggregation
│ ├── stock_analysis_service.go # Stock analysis
│ ├── technical_analysis.go # RSI, MACD, momentum indicators
│ └── activity_logger.go # Trade journaling
├── interfaces/ # Go type definitions (80 types)
├── models/ # Database models (7 types)
├── database/ # SQLite storage layer
├── config/ # Environment configuration
├── vectorDB.js # Semantic trade search (sqlite-vec)
├── TRADING_RULES.md # Strategy rules (injected into agent prompt)
├── opencode.jsonc # OpenCode MCP configuration
└── data/
├── agent-config.json # Runtime config (accounts, agents, permissions)
└── prophet_trader.db # SQLite database______________________________________________________________________
特性
自主代理
- 相位心跳 --开盘前(15米)、开盘时(2米)、中午(10米)、收盘时(2米)、盘后(30米)、闭市时(1小时)
- 会话持续 --OpenCode
--sessionflag在节拍之间保持上下文 - 系统提示优化 --仅在第一拍时发送,每拍可节省约2000个代币
- 用户中断 --在节拍中间发送消息;终止当前子进程,在同一会话上恢复
- 代理自我修改 --用于更新自己的提示、策略规则、权限和心跳的工具
Web仪表板
- 纸张美学 --Crimson Pro标题,Source Sans 3正文,用于数据的IBM Plex Mono,温暖
#faf9f6SVG分形噪声纹理背景 - 8个选项卡 --终端、交易、投资组合、代理、策略、账户、插件、设置
- 实时SSE流媒体 --代理文本、工具调用、工具结果、节拍生命周期、交易事件
- 终端搜索/筛选 --按文本搜索日志,按级别过滤(文本、工具、错误、节拍)
- 聊天输入 --向代理发送消息,中断运行节拍
- 移动优先 --响应式布局,触摸友好,基于标签的导航
- 选项卡可见性优化 --选项卡隐藏时暂停SSE和轮询
安全和护栏
- 基于令牌的身份验证 --设置
AGENT_AUTH_TOKENenv-var要求在所有API路由上使用Bearer令牌 - 秘密脱衣 —
safeConfig()在所有SSE广播和API响应中屏蔽密钥 - MCP权限执行 —
enforcePermissions()每次执行工具前进行检查:
- blockedTools --拒绝对特定工具的调用 - allowLiveTrading --禁用时阻止所有订单工具 - allowOptions / allowStocks --资产类闸门 - allow0DTE --解析OCC选项符号以检查到期日期 - maxOrderValue --拒绝超过美元限额的订单 - requireConfirmation --阻止有描述性错误的订单
- 日损断路器 --当损益超过时,自动暂停代理
maxDailyLoss% - 每节拍的最大刀具回合数 --通过as
--max-turns转到OpenCode CLI - 路径遍历保护 —
get_news_summary清除文件名
多账户
- 多个羊驼账户 --通过仪表板添加纸质/真实账户
- 热插拔 --激活其他帐户会杀死Go后端,并使用新凭据重新启动
- 去后端自动重启 --意外碰撞时延迟5秒重新启动
插件
- 松弛通知 --交易执行、代理开始/停止、错误、头寸打开/关闭、每日摘要、心跳
- 每日总结 --安排在美国东部时间下午4:30,包括损益表、投资组合价值和节拍/交易/错误计数
人工智能
- Gemini新闻清理 --将嘈杂的RSS提要转换为结构化的交易情报
- 多源聚合 --谷歌新闻、市场观察(头条新闻、实时、公告、市场脉搏)
- 技术分析 --RSI、MACD、动量指标通过Go后端
- 向量相似性搜索 --使用本地嵌入对过去交易进行语义搜索(384 dim,sqlite-vec)
______________________________________________________________________
快速开始
先决条件
- 转到1.22+ --用于交易后端
- Node.js 18+ --用于代理服务器和MCP工具
- OpenCode命令行界面 --驱动自主代理的AI工具
- 羊驼账户 — 羊驼市场 (纸质交易是免费的)
1.克隆和安装
git clone https://github.com/JakeNesler/OpenProphet.git
cd OpenProphet
npm install
go build -o prophet_bot ./cmd/bot
cp opencode.example.jsonc opencode.jsonc2.配置环境
cp .env.example .env编辑 .env:
# Required
ALPACA_PUBLIC_KEY=your_alpaca_public_key
ALPACA_SECRET_KEY=your_alpaca_secret_key
ALPACA_ENDPOINT=https://paper-api.alpaca.markets
# Optional
GEMINI_API_KEY=your_gemini_key # AI news cleaning
AGENT_AUTH_TOKEN=your_secret_token # Protect dashboard API
AGENT_PORT=3737 # Dashboard port3.安装并验证OpenCode
OpenProphet使用 OpenCode 作为其AI运行时。OpenCode是一个开源CLI,它通过完全的MCP工具支持连接到Claude(和其他模型)。代理工具生成 opencode run 作为每个心跳的子过程。
# Install OpenCode globally
npm install -g opencode
# Authenticate with Anthropic (opens browser for OAuth)
opencode auth login登录后,验证其是否正常工作:
opencode auth list
# Should show "Anthropic" with "oauth" credentialOpenCode配置
OpenProphet需要 opencode.jsonc 在项目根目录中注册MCP交易工具。此文件是 未包含在回购中 (它被gitigned),因为它可能包含个人MCP服务器或API密钥。根据提供的示例创建自己的示例:
cp opencode.example.jsonc opencode.jsonc示例配置注册了Prophet MCP工具服务器,这就是您所需要的:
// opencode.jsonc
{
"mcp": {
"prophet": {
"type": "local",
"command": ["node", "./mcp-server.js"],
"enabled": true
}
}
}您可以将您使用的任何其他MCP服务器(Playwright、Cartogpher等)添加到本地 opencode.jsonc --它不会被承诺。
Agent如何使用OpenCode
每一次心跳,线束都会产生:
opencode run \
--format json \
--model anthropic/claude-sonnet-4-6 \
--max-turns 25 \
--session --format json--流式传输仪表板解析的结构化事件(文本、tool_use、step_finish)--model--从仪表板的“设置”选项卡设置(任何Anthropic模型)--max-turns--地图到maxToolRoundsPerBeat在权限配置中--session--跨节拍继续进行相同的对话,保留上下文
系统提示通过stdin管道传输(对于CLI参数来说太大)。在第一个节拍上,它包括完整的系统提示+交易规则。同一会话中的后续节拍跳过系统提示,以保存约2000个令牌/节拍。
交互式使用OpenCode(可选)
您还可以使用相同的MCP工具直接使用OpenCode进行手动交易:
# Start the Go backend first
./prophet_bot
# Then run OpenCode interactively with the trading tools
opencodeOpenCode将接收 opencode.jsonc 配置并允许您在交互式聊天会话中访问所有45种以上的交易工具。这对于启用自主代理之前的手动交易会话或测试工具非常有用。
4.启动仪表板
npm run agent这将启动端口3737上的Express服务器,该服务器会自动启动Go后端。打开 http://localhost:3737 (或您的网络IP),然后按 开始.
您还可以从仪表板对OpenCode进行身份验证 设置 如果您尚未通过CLI完成此操作,请使用选项卡。
5.(备选)仅MCP模式
如果你只想使用没有自主代理的MCP工具——用于Claude Code、Cursor或任何兼容MCP的客户端:
# Start Go backend
./prophet_bot
# Option A: Use with OpenCode interactively
opencode
# Option B: Configure in Claude Code's .mcp.json
# Option C: Point any MCP client at: node /path/to/mcp-server.jsMCP服务器是一个独立的stdio服务器,可与任何兼容MCP的客户端配合使用。它连接到端口4534上的Go后端。
______________________________________________________________________
MCP工具参考
交易(订单执行)
| 工具 | 说明 |
|---|---|
place_options_order | 限价单买入/卖出期权 |
place_managed_position | 自动止损/止盈头寸 |
close_managed_position | 关闭市场管理头寸 |
place_buy_order | 购买股票 |
place_sell_order | 出售股票 |
cancel_order | 取消待处理订单 |
市场数据
| 工具 | 说明 |
|---|---|
get_account | 投资组合价值、现金、购买力、股权 |
get_positions | 所有未平仓股票头寸 |
get_options_positions | 所有未平仓期权头寸 |
get_options_position | 按符号排列的单选位置 |
get_options_chain | 具有执行/到期过滤功能的期权链 |
get_orders | 订单历史 |
get_quote | 实时股票报价 |
get_latest_bar | 最新OHLCV酒吧 |
get_historical_bars | 历史价格条 |
get_managed_positions | 具有停止/目标状态的管理职位 |
新闻与情报
| 工具 | 说明 |
|---|---|
get_quick_market_intelligence | 人工智能清理MarketWatch摘要 |
analyze_stocks | 技术分析+新闻+推荐 |
get_cleaned_news | 多源聚合情报 |
search_news | 谷歌新闻关键字搜索 |
get_news | 最新谷歌新闻 |
get_news_by_topic | 按主题(商业、技术等)分类的新闻 |
get_market_news | 针对特定市场的新闻推送 |
aggregate_and_summarize_news | 使用AI摘要进行自定义聚合 |
list_news_summaries / get_news_summary | 缓存的新闻摘要 |
get_marketwatch_topstories | MarketWatch头条新闻 |
get_marketwatch_realtime | 实时头条新闻 |
get_marketwatch_bulletins | 突发新闻 |
get_marketwatch_marketpulse | 快速的市场脉搏 |
get_marketwatch_all | 所有MarketWatch订阅源合并 |
矢量搜索(AI内存)
| 工具 | 说明 |
|---|---|
find_similar_setups | 对过去交易的语义搜索 |
store_trade_setup | 存储交易以备将来进行模式匹配 |
get_trade_stats | 按符号/策略划分的胜率、利润率 |
代理自我修改
| 工具 | 说明 |
|---|---|
update_agent_prompt | 更新活动代理的系统提示 |
update_strategy_rules | 更新交易策略规则 |
get_agent_config | 读取当前代理配置和权限 |
set_heartbeat | 动态覆盖心跳间隔 |
update_permissions | 修改权限护栏 |
公用事业
| 工具 | 说明 |
|---|---|
log_decision | 用推理记录交易决策 |
log_activity | 将活动记录到每日日志中 |
get_activity_log | 检索今天的活动日志 |
wait | 暂停执行(最多300秒) |
get_datetime | 当前时间(美国东部时区) |
______________________________________________________________________
仪表板API
代理服务器在下面公开了40个REST端点 /api/:
代理控制
| 方法 | 端点 | 描述 |
|---|---|---|
| 职位 | /api/agent/start | 启动自主代理 |
| 职位 | /api/agent/stop | 停止代理(终止子进程) |
| 职位 | /api/agent/pause | 暂停心跳循环 |
| 职位 | /api/agent/resume | 恢复心跳循环 |
| 职位 | /api/agent/message | 向代理发送消息(忙碌时中断) |
| 职位 | /api/agent/heartbeat | 覆盖心跳间隔 |
| 得到 | /api/agent/state | 当前代理状态 |
| 得到 | /api/agent/prompt-preview | 预览活动系统提示 |
| 得到 | /api/events | SSE事件流 |
配置CRUD
| 方法 | 端点 | 描述 |
|---|---|---|
| 获取/发布 | /api/accounts | 列出/添加羊驼账户 |
| 删除 | /api/accounts/:id | 删除帐户 |
| 职位 | /api/accounts/:id/activate | 切换活动帐户(重新启动Go后端) |
| 获取/发布 | /api/agents | 列出/添加代理角色 |
| PUT | /api/agents/:id | 更新代理 |
| 职位 | /api/agents/:id/activate | 切换活动代理 |
| 获取/发布 | /api/strategies | 列出/添加策略 |
| PUT | /api/strategies/:id | 更新策略 |
| 获取/放置 | /api/permissions | 获取/更新护栏 |
| 获取/放置 | /api/heartbeat | 获取/更新阶段间隔 |
| 获取/放置 | /api/plugins/:name | 获取/更新插件配置 |
| 职位 | /api/models/activate | 切换克劳德模型 |
投资组合代理
| 方法 | 端点 | 描述 |
|---|---|---|
| 得到 | /api/portfolio/account | 来自Go后端的代理帐户信息 |
| 得到 | /api/portfolio/positions | 代理职位 |
| 得到 | /api/portfolio/orders | 代理订单 |
______________________________________________________________________
配置
所有运行时配置都存储在 data/agent-config.json仪表板为所有内容提供了一个用户界面,但其结构如下:
{
"activeAccountId": "abc123",
"activeAgentId": "default",
"activeModel": "anthropic/claude-sonnet-4-6",
"heartbeat": {
"pre_market": 900, // seconds
"market_open": 120,
"midday": 600,
"market_close": 120,
"after_hours": 1800,
"closed": 3600
},
"permissions": {
"allowLiveTrading": true,
"allowOptions": true,
"allowStocks": true,
"allow0DTE": false,
"requireConfirmation": false,
"maxPositionPct": 15,
"maxDeployedPct": 80,
"maxDailyLoss": 5,
"maxOpenPositions": 10,
"maxOrderValue": 0, // 0 = unlimited
"maxToolRoundsPerBeat": 25,
"blockedTools": []
},
"accounts": [{ "id": "...", "name": "Paper", "publicKey": "...", "secretKey": "...", "paper": true }],
"agents": [{ "id": "default", "name": "Prophet", "strategyId": "default", "model": "..." }],
"strategies": [{ "id": "default", "name": "Aggressive Options", "rulesFile": "TRADING_RULES.md" }],
"plugins": {
"slack": {
"enabled": false,
"webhookUrl": "",
"notifyOn": { "tradeExecuted": true, "agentStartStop": true, "errors": true, "dailySummary": true }
}
}
}可用型号
| 型号 | 成本(每MTok的投入/产出) |
|---|---|
anthropic/claude-sonnet-4-6 | $3 / $15 |
anthropic/claude-opus-4-6 | $5 / $25 |
anthropic/claude-haiku-4-5 | $1 / $5 |
______________________________________________________________________
Go后端服务
| 服务 | 目的 | 关键功能 |
|---|---|---|
AlpacaTradingService | 订单执行 | PlaceOrder、CancelOrder、GetPositions、GetAccount |
AlpacaDataService | 市场数据(IEX提要) | GetHistoricalBars、GetLatestQuote、GetLatestBar |
AlpacaOptionsDataService | 选项数据 | GetOptionChain、GetOptionSnapshot、FindOptionsNearDTE |
PositionManager | 自动化 | 监视器位置,关闭管理位置 |
StockAnalysisService | 分析 | AnalyzeStock |
TechnicalAnalysisService | 指标 | 计算ISI、计算MACD |
NewsService | 情报 | GetGoogleNews、GetMarketWatch头条新闻、汇总和总结 |
GeminiService | 人工智能处理 | CleanNewsForTrading |
ActivityLogger | 日志记录 | 日志决策、日志活动、日志位置打开/关闭 |
______________________________________________________________________
发展
添加新的MCP工具
- 在Go中添加端点(
controllers/+路线在cmd/bot/main.go) - 在中添加工具定义
mcp-server.js(名称、描述、输入模式) - 在中添加处理程序
switch挡住mcp-server.js - 如果是订单工具,请添加权限检查
enforcePermissions()
项目脚本
npm run agent # Start dashboard + agent server (port 3737)
npm start # Start MCP server only (for Claude Code integration)______________________________________________________________________
免责声明
本软件按“原样”提供,不提供任何形式的保修。作者强烈建议不要用真钱来使用这个系统。期权交易存在巨大的损失风险。过去的表现并不能保证未来的结果。您对自己的交易决策负全部责任。
______________________________________________________________________
许可证
CC BY NC 4.0 --个人和非商业用途免费。看 许可证 了解详情。
版权所有(c)2025杰克·内斯勒
