Sparks 获取实时数据
Spark 运行在一个沙箱里——一个密封的玻璃房。正是这个沙箱保证了 AI 生成的软件是安全的:里面的代码自己碰不到你的文件、网络或外部世界。
但密封的盒子没法给你看实时股价或今天的天气。所以 Spark 可以通过一个 受审查的门卫(broker) 来请求实时数据——门卫坐在 Spark 和互联网之间。
它如何工作(以及为什么安全)
Spark 自己永远不出门。它只是递一张纸条给门卫:
「帮我查一下 AAPL 的报价。」
门卫拿这张纸条对照一份**允许清单(allowlist)**来检查:
- 这个请求类型被允许吗? 只有预先批准的请求能通过。
- 参数合法吗? 任何东西离开 app 之前都会先校验。
只有两项都通过,才由门卫(而不是 Spark)去发请求,再把结果递回来。不可信的 Spark 代码从头到尾没碰过网络,也永远不会有密钥被放进 Spark 里。
我们永不打破的一条红线:不可信的代码、密钥、自由的网络出口,这三样永远不能同时存在。
现在 Spark 能访问哪些实时数据?
下面就是当前的允许清单——它直接由 app 的门卫配置生成,所以永远不会和真正被允许的内容脱节。
| 能力 | 数据源 | 需要密钥? | 示例用途 |
|---|---|---|---|
| 股票报价 | Yahoo Finance | 否 | 一个盯盘 Spark,显示实时价格和当日涨跌 |
| 股票历史行情(OHLC) | Yahoo Finance | 否 | 可切换时间区间的蜡烛图(K 线) |
| 城市地理编码 | Open-Meteo Geocoding | 否 | 一个天气 Spark,用户输入城市名搜索定位 |
| 天气预报 | Open-Meteo | 否 | 一个仪表盘 Spark,显示当前天气和 7 天预报 |
| 货币汇率 | Frankfurter (ECB) | 否 | 一个实时汇率换算 Spark |
| 历史汇率 | Frankfurter (ECB) | 否 | 一个显示过去一年美元/人民币汇率走势的 Spark |
| 加密货币价格 | CoinGecko | 否 | 一个加密货币盯盘 Spark,显示实时价格和 24h 涨跌 |
| 加密货币历史价格 | CoinGecko | 否 | 一个可切换时间范围的比特币价格走势图 Spark |
如果 Spark 请求清单之外的任何东西,请求会被直接拒绝。
接下来会有什么
- 更多免费公共数据——汇率、天气、资料查询。同一套门卫,允许清单上多加几条而已。
- 更丰富的行情数据——历史价格,用来画蜡烛图(K 线)。
- 需要鉴权的服务——付费 API、你自己的后端;密钥始终留在门卫手里,绝不进入 Spark。
整条路上安全模型始终不变。扩展 Spark 的能力,意味着往门卫的允许清单里加条目——而绝不是给沙箱开一张空白支票。