内容
体育引擎
[
[
[](https://github.com/Buzzr-app/dfs-engine)
[](https://buzzr-app/dfs-engine/)
**Script、无依赖的体育投注和 DFS 应用引擎** —的竞猜结算、体育赔率计算和透明的游戏娱乐评分。每个包都纯函数:无 I框架锁定、无原生依赖。,获得确定性、可决策,并附带验证报告跟踪,因为在 `if > line)` 上结算资金的原因。由 Buzz款体育社交应用)生产和构建。
## 软件
| 软件包 | 功能 | 安装命令 ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | --------------------------------| [`@buzzr/dfs-engine`](www.npmjs.combuzzr/dfs-engine) | DFS 结算操作系统注策略、评分、赔付、审计跟踪、批量结算 | `npm i @buzzr/dfs-engine` |
| [`@buzzr/bets-core`](https://www.npmjs.com/package/@buzzr/bets-core) | 赔率计算:无抽佣公平赔率、混合投注、EV、Kelly 赌注、CLV、周期分析 | `npm i @buzzr/bets-core` |
| [`@buzzr/entertainment-engine`](https://www.npmjs.com/package/@buzzr/entertainment-engine) | 透明的娱乐评分、混合机器学习预测、个性化游戏推荐 | `npm i @buzzr/entertainment-engine` |
| [`@buzzr/mcp`](https://www.npmjs.com/package/@buzzr/mcp) | MCP 服务器,向 AI 代理公开引擎(8 种工具) | `npx -y @buzzr/mcp` |
| [`@buzzr/dfs-cli`](https://www.npmjs.com/package/@buzzr/dfs-cli) | 通过命令行评分 DFS 参赛作品 | `npm i -g @buzzr/dfs-cli` |
| [`@/dfs-react`](https://www.npmjs.com/package/@buzzfs-react) | UI 视图模型(React/Vue/Svelte/vanilla;无 React 依赖) | `npm i @buzzr/dfs-react` |
| [`@buzzr/dfs-testkit`](https://www.npmjs.com/packager/dfs-testkit) | 测试夹具 + 模拟统计提供者 | `npm i -D @buzzr/dfs-testkit` |
| [`@buzzr/dfs-provider-espn`](https://www.npmjs.com/package/@buzzr/dfs-provider-espn) | ESPN 形状的统计提供者接口 | `npm i @buzzr/dfs-provider-espn` |
| [`@buzzr/dfs-provider-sportradar`](https://www.npmjs.com/package/@buzzr/dfs-provider-sportradar) | Sportradar 形状的统计提供者接口 | `npm i @buzzr/dfs-provider-sportradar` |
| [`@buzzr/dfs-engine-test-vectors`](https://www.npmjs.com/package/@buzzr/dfs-engine-test-vectors) | 证明您的集成评分与 Buzzr 的评分相同的黄金测试数据 | `npm i -D @buzzr/dfs-engine-test-vectors` |
所有软件包:TypeScript 优先,具有完整的 `.d.ts`、ESM + CJS 构建(CLI 仅为 ESM),Node >= 22,MIT 许可证,在家族以外无运行时依赖。
## 架构
```mermaid
flowchart LR
subgraph data["您的数据层"]
ESPN["@buzzr/dfs-provider-espn"]
SR["@buzzr/dfs-provider-sportradar"]
Custom["自定义统计提供者"]
end
subgraph core["核心引擎(纯函数)"]
Engine["@buzzr/dfs-engine<br/>投注策略 · 评分 · 赔付 · 审计"]
Bets["@buzzr/bets-core<br/>赔率 · 混合投注 · EV · Kelly · CLV"]
Ent["@buzzr/entertainment-engine<br/>娱乐评分 · 机器学习 · 推荐"]
end
subgraph consumers["消费者"]
CLI["@buzzr/dfs-cli"]
React["@buzzr/dfs-react"]
MCP["@buzzr/mcp → AI 代理"]
App["您的应用 / Buzzr 应用"]
end
subgraph testing["测试"]
Testkit["@buzzr/dfs-testkit"]
Vectors["@buzzr/dfs-engine-test-vectors"]
end
ESPN --> Engine
SR --> Engine
Custom --> Engine
Engine --> CLI
Engine --> React
Engine --> MCP
Bets --> MCP
Ent --> MCP
Engine --> App
Bets --> App
Ent --> App
Testkit -.-> Engine
Vectors -.-> Engine
```
## 快速入门
### 结算 DFS 参赛作品 — `@buzzr/dfs-engine`
```ts
import { createDfsEngine, defineStatProvider } from '@buzzr/dfs-engine';
const provider = defineStatProvider({
id: '我的统计数据',
getGameLog: ({ leg }) => fetchGameLogRows(leg.playerId, leg.gameDate),
});
const engine = createDfsEngine({ statProviders: [provider] });
const result = await engine.settleEntry(entry, { statProviderId: '我的统计数据' });
// result.status, result.payout, result.legs[].actual, result.auditTrail, ...
// v5:使用共享的、记忆化的统计数据缓存,一次调用结算整个比赛
const batch = await engine.settleEntries(entries, { statProviderId: '我的统计数据' });
```
PrizePicks 和 Underdog 风格的投注类型的投注策略已内置并版本化;自定义投注策略通过 `defineBookPolicy` 插件,v5 添加了投注策略验证和预测市场(Kalshi 风格)投注策略。
### 计算投注赔率 — `@buzzr/bets-core`
```ts
import {
americanOddsToImpliedProbability,
calculateNoVigFairLine,
calculateExpectedValue,
calculateKellyStake,
} from '@buzzr/bets-core';
americanOddsToImpliedProbability(-120); // 0.545455
const fair = calculateNoVigFairLine({
selected: { side: '主队', americanOdds: -120 },
opposite: { side: '客队', americanOdds: 100 },
}); // 移除抽佣 → 主队公平概率
const ev = calculateExpectedValue({ stake: 100, americanOdds: 120, winProbability: 0.5 });
const kelly = calculateKellyStake({ bankroll: 1000, americanOdds: 120, winProbability: 0.5 });
// kelly.recommendedStake — 默认四分之一 Kelly
```
v5 还提供了混合投注数学(`combineAmericanOdds`、`calculateParlayFairValue`)、闭市价值分析(`calculateRollPeriod`、`calculateDraw、`calculateStreaks。
### 评分游戏 — `@buzzr/entertainment-engine`
```ts
import { resolveBuzzScores, isMustWatch } from '@buzzr/entertainment-engine';
const scores = resolveBuzzScores(
{
league: 'NBA',
status: '已结束',
entertainmentScore: 87,
predictedEntertainmentScore: 74,
},
{ upcomingLike: false },
);
// scores.entertainmentScore, scores.predictedEntertainmentScore,
// scores.source (哪个模型获胜),scores.diagnostics (原因)
isMustWatch(scores.entertainmentScore); // 必须观看的阈值布尔值
```
v5 添加了校准的 ML 置信度、DST 安全的黄金时间检测、搜索热度和明星力量特征,以及 `rankGamesForUser` 个性化推荐。
### 提供给 AI 代理 — `@buzzr/mcp`
将以下内容添加到您的 MCP 客户端配置(Claude Desktop、Claude Code、Cursor 等):
```json
{
"mcpServers": {
"buzzr": {
"command": "npx",
"args": ["-y", "@buzzr/mcp"]
}
}
}
```
服务器将引擎公开为 8 种工具 — 结算参赛作品、计算混合投注 EV/Kelly、游戏评分 — 因此代理获得准确的投注数学,而不是虚构的数字。
## Buzzr 生产环境中使用
这些软件包是从 Buzzr 体育应用中提取并为其提供支持的;DFS 滑块评分、体育博彩投注跟踪和每个游戏卡上的娱乐评分都通过完全相同的代码运行。应用是每个版本的第一个使用者,因此已发布的 API 是我们自己使用的 API。
## 开发
```bash
npm ci
npm run typecheck
npm test
npm run build
```
## 发布强化
在发布或制作版本之前,请运行:
```bash
npm run verify
npm run audit:high
```
`verify` 运行类型检查、lint、格式检查、测试、覆盖率、构建、文档、导出冒烟测试、软件包大小检查和所有软件包的 dry-run 打包。
## 报告错误
对于软件包缺陷,请使用 GitHub 错误报告模板。包括软件包版本、Node 版本、投注策略/玩法类型、提供者数据形状和最小重现。
对于结算正确性或安全敏感问题,请遵循 [SECURITY.md](SECURITY.md),以便在公开披露前对报告进行分类。
## 链接
- [API 文档(typed](https://buzz.github.io/dfs-engine [问题](https:///Buzzr-app-engine/issues)
- [AGENTS.md](AGENTS.md AI 编码代理此存储库
-.txt](ll) — 机器可读的软件包索引
##
MIT