用 Grok Bot 搭个人交易终端:配置原样公开
彭博一个席位一年 27660 美元。散户几乎摸不到,不是软件难,是价钱按机构口径定的。
我花了三周只想搞清一件事:一个人,用手里已经有的 agent,到底能把那套终端复刻多少?
实话是:流程这块,大部分能。授权行情管道不行,那是交易所合同锁死的,消费级别别想冒充。但让终端「像终端、不像表格」的那套工作流,现在一个周末就能搭起来,Grok Bot 当界面层。
下面是具体配置、代码,以及它在哪会断。
为什么是 Grok Bot
之前试过三种,都不对:
- 一个聊天框、一份超长提示词:要同时盯两件事,立刻散架
- 一堆 cron 加 Slack webhook:能跑,但每加一个视图又要写代码,没意义
- 有名字、能记住自己职责、共用一台云电脑的 Bot:这才接近交易台的组织方式——专人,不是一个万金油
Grok Bot 能拉起多个有名字的 Bot,共用一台一直开着的云电脑:浏览器、文件系统、终端都在。你给它发消息,跟在 Slack 上喊同事差不多。换一次会话,它不会忘自己是谁;它能动手(浏览、跑脚本、写文件),不只是回一段字。
终端感和聊天框的差别就在这:每个功能一个专人,大家都读写同一块共享工作区。
┌─────────────────────────────────────────────────────────┐
│ 共享工作区 │
│ /workspace/signals/live-alerts.json │
│ /workspace/positions/live.json │
│ /workspace/reports/ │
│ /workspace/watchlist.csv │
└───────────────┬─────────────────────────┬─────────────────┘
│ │
┌────────▼────────┐ ┌────────▼────────┐
│ 监控层 │ │ 界面层 │
│ 6 个 Bot │──────▶│ Grok Bot │
│ 各盯一类源 │ │ 分析 / 新闻 │
└──────────────────┘ │ 警报 / 宏观 │
│ 简报 / 持仓 │
└────────┬──────────┘
│
┌────────▼──────────┐
│ 看板 │
│ 本地 React │
│ localhost:3000 │
└─────────────────────┘
三块在动:监控层盯外面的世界,界面层是你真正说话的地方,看板给你「一墙数字在亮」的感觉。没有这块,怎么都不像终端。
第一步:共享工作区
整套东西就靠一个文件:每个 Bot 都同意往里读、往里写。这一步最容易被跳过,跳过之后你会纳闷:为什么六个 Bot 互相不认识。
mkdir -p workspace/{positions,alerts,reports,news,dashboard,signals}
touch workspace/watchlist.csv
touch workspace/signals/live-alerts.json
touch workspace/positions/live.json
live-alerts.json 是整根脊梁。谁发现值得拿出来的东西,都按同一种形状往里追加:
{
"alerts": [
{
"id": "a-2026-08-29-0031",
"timestamp": "2026-08-29T14:03:00Z",
"ticker": "NVDA",
"source": "SEC 8-K",
"signal_type": "capacity_expansion",
"conviction": "HIGH",
"summary": "Filed 8-K referencing new fab capacity, semis-sector relevant",
"action_window": "same-day"
}
]
}
固定结构,一个文件,大家用同一种写法。花招就这一下,没有更玄的。
第二步:六个 Bot
在 Grok Bot 里建六个有名字的人。每个人一份很窄的系统提示。别让任何一个「什么都干」,一宽又变回那个万金油聊天框。
Alerts Bot:
你是个人交易终端上的 Alerts Bot。
每 30 秒检查一次 /workspace/signals/live-alerts.json,
看自上一次之后有没有新条目。
凡是 conviction 为 HIGH 的,立刻发到对话里,带上:
- ticker
- signal_type
- conviction
- source
- action_window
不要下单,也不要建议交易。只把信号摊开。
操盘的人自己决定。
Analyst Bot:
你是 Analyst Bot。有人问某只标的时,去找你能找到的
最近卖方研报、评级变动、目标价调整。用不到 150 字
概括街上的共识。共识稀薄或过时,要明说——
别为了听起来有把握,把不确定性抹平。
News Bot、Reports Bot、Position Bot、Macro Bot 一个路数:职责窄、各管一个文件、用人话交出来。Reports Bot 尤其值得排班:
每个交易日美东时间早上 6:00,读过去 24 小时的
/workspace/signals/live-alerts.json,写一份 300 字宏观简报
到 /workspace/reports/macro-YYYYMMDD.md,并发到对话里。
conviction 为 HIGH 的,先标出来。
第三步:监控层
「全天盯盘」靠的是这一层。别让六个 Bot 自己去扫所有源,让它们去派更窄的盯梢。
按类别拆开,别让一个人读完整张网:
- 宏观,大约 7%:美联储 / 欧央行 / 日央行、宏观日历
- 财报,大约 20%:正在披露的公司
- 电讯,大约 27%:路透、美联社、主要财经媒体
- 音视频,大约 13%:业绩会、央行发布会
- 公告,大约 20%:观察名单上标的的 SEC EDGAR
- 社交,大约 13%:CEO、基金经理、央行官员的公开帖
超过你设定的确信阈值,就按上面那份结构追加到 live-alerts.json。合同就这一条。监控层可以简陋也可以铺张,只要写进这个文件时格式对。
第四步:看板
没有这一层,它就是个群聊。做一个最小的、会自己刷新的面板,本地 React 就行:
// Dashboard.jsx — 滚动警报条 + 观察名单格子
import { useEffect, useState } from "react";
const CONVICTION_COLOR = {
HIGH: "#e34f4f",
MEDIUM: "#e3a94f",
LOW: "#4f8fe3",
};
function AlertTicker({ alerts }) {
return (
<div style={{ overflow: "hidden", height: 32, background: "#0a0a0a" }}>
<div style={{ display: "flex", gap: 24, animation: "scroll 30s linear infinite" }}>
{alerts.map((a) => (
<span key={a.id} style={{ color: CONVICTION_COLOR[a.conviction] }}>
{a.ticker} · {a.signal_type} · {a.conviction}
</span>
))}
</div>
</div>
);
}
function WatchlistGrid({ tickers }) {
return (
<div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 8 }}>
{tickers.map((t) => (
<div key={t.symbol} style={{ background: "#111", padding: 12, borderRadius: 6 }}>
<div style={{ fontFamily: "monospace" }}>{t.symbol}</div>
<div style={{ color: t.changePct >= 0 ? "#4fe38f" : "#e34f4f" }}>
{t.price} ({t.changePct.toFixed(2)}%)
</div>
</div>
))}
</div>
);
}
export default function Dashboard() {
const [alerts, setAlerts] = useState([]);
const [watchlist, setWatchlist] = useState([]);
useEffect(() => {
const interval = setInterval(async () => {
const res = await fetch("/workspace/signals/live-alerts.json");
const data = await res.json();
setAlerts(data.alerts.slice(-15));
}, 5000);
return () => clearInterval(interval);
}, []);
return (
<div style={{ background: "#000", color: "#fff", minHeight: "100vh", padding: 16 }}>
<AlertTicker alerts={alerts} />
<WatchlistGrid tickers={watchlist} />
</div>
);
}
故意做得很小:4×4 观察名单,一条滚动警报,直接读 Bot 们写的那份 JSON。后面要加板块热力图,就是再铺一张按涨跌上色的格子;盈亏条也是同一套,对着 positions/live.json。先做出能跑的最小版,再往上叠。
它替不了什么
这块得说清楚。吹过了,你会信一条不该信的信号:
- 没有授权的实时交易所行情。你用的是延时或免费档,除非另外买行情商。下面那 3000 美元一年,不含这笔
- 没有机构对手盘网络。彭博聊天连的是别的持牌交易台。这套只连你自己的 Bot
- 没有合规级别的审计轨迹。你要监管口径的交易留痕,这不是
- 没有官方源保证。监控层好不好,全看你指向哪些源。垃圾进,垃圾警报出
这是给从来没有机构权限的个人用的工具,不是给持牌基金当彭博替代品。
实际花多少钱
- Grok Bot 订阅:大约每月 200 美元
- 模型 API(监控 + 看板生成):大约每月 50 到 100 美元
- 合计:每月大约 250 到 300 美元,一年大约 3000 美元
对照一个彭博席位一年 27660 美元,差不多便宜九倍。覆盖的是终端日常流程,不是它那根授权数据的芯。
一天怎么用
跑起来之后,正常一次开盘是这样:
- 一个标签页开看板,一个开 Grok Bot
- Alerts Bot 蹦出来:「NVDA — SEC 8-K,扩产,HIGH,当天窗口」
- 你问 Analyst Bot 街上怎么看这只
- 你问 Position Bot 现在板块敞口怎样
- 你自己决定。下单走你本来就在用的券商。这套东西故意不帮你把单子送出去
单独拿出来,没有哪一块很惊人。不一样的是:全在一个地方,一直在跑,而不是你在六个服务之间切标签、把线索弄丢。
真要搭,有两件事比别的都先做对:一份大家都认的共享文件结构;职责很窄的专人,而不是一个 Bot 兼六份工。剩下的,都是在这两条上面迭代。
改写自 MAX(@maxdeg0)2026 年 8 月 29 日的 X 长文。原文:https://x.com/maxdeg0/status/2093716508006395998