全自动、零代码配置的 Steam 低价余额助手
跨区购买 · 行情分析 · 数据复盘 · 全可视化控制台
功能亮点 · 快速开始 · 策略中心 · 工作原理 · 进阶配置 · 常见问题 · 参与贡献 · 免责声明
从选品→下单→上架→确认,全程 99% 无人工干预;
每笔交易的成本与收益被永久记录,折扣率与盈亏一目了然;
选品与定价基于 变异系数(CV)、趋势拟合(R²) 等数学模型,而非靠感觉。[!NOTE] 💡 项目定位与预期管理 本项目旨在为新手降低“倒余额”门槛,为老手节省时间。 请注意,本程序并非专门的套利工具,也不是万能的无风险低价获取余额的神器。自动购买的饰品在经历 7 天(或数天)的交易冷却期后,其市场表现大部分情况下会趋于您所期望的余额价格。但这并非绝对保证,7 天冷却期结束后的实际折扣比例有可能上升,也有可能下降。 如果您的目的是在短时间内快速获取余额,本工具并不适合您。
告别枯燥的命令行与繁杂的 JSON 配置!系统提供了一个直观、美观且响应丝滑的 Web 前端仪表盘(Dashboard)。所有运行状态、行情看板与系统设置均可在图形界面完成,零代码门槛,让你真正享受现代化的掌控体验。

▲ 图:响应式现代化 Web 仪表盘主页
从 选品 → 下单 → 入库 → 上架 → Steam Guard 确认,整条链路无需人工守候。
桌面环境可通过内嵌浏览器完成登录与 Cookie 提取;无桌面 Linux 服务器会自动降级为手动 Cookie 流程。绑定移动令牌密钥(identity_secret)后,商品上架的二次确认也由程序自动签署。
不靠感觉,不靠经验,只靠数据:
- 变异系数 (CV):量化价格波动幅度,自动排除价格剧烈震荡的高风险品
- 趋势拟合度 (R²):拟合历史价格线性趋势,识别持续下跌或走势紊乱的冷门品
- 参考价计算:根据 Steam 寄售深度与历史成交数据,动态选取最优上架价格,而非简单挂最低价
系统支持实时追踪现有饰品折扣状态以及大盘市场变动,让你对市场趋势一目了然,帮助你捕捉最佳交易时机。

▲ 图:实时追踪现有饰品折扣状态以及市场变动
系统提供了深度的历史饰品数据分析功能,支持复盘特定饰品在长期时间线上的价格走势、成交量变动及盈亏表现,通过回溯历史数据帮助你进一步优化选品策略。

▲ 图:饰品历史价格跳动与成交分析
不仅是饰品倒卖,内置实用的 Steam 商店游戏折扣抓取助手: - 实时折扣拉取:一键批量获取 Steam 平台当前打折游戏的数据。 - 多维动态排序:支持按折扣力度、玩家好评率、历史最低价(史低)等维度进行排序与筛选,方便在倒出 Steam 余额后快速寻找高性价比的消费目标。

▲ 图:折扣雷达——按好评率与降价幅度动态排序的 Steam 游戏列表(图片预留位)
在游戏折扣面板中,右键点击任意游戏卡片,即可一键生成 1920×1080 的高清专属折扣分享卡片:

▲ 图:赛博朋克 2077 折扣分享卡片示例(右键游戏卡片 → 生成高质量折扣分享卡片)
每一笔交易都被永久记录:购入成本、上架价格、最终成交额、实际获得的 Steam 余额,以及综合折扣比率,全部可在数据面板以图表形式呈现。你能清楚地知道每一分钱花在哪、赚了多少。

▲ 图:直观的盈亏柱状图与综合余额转化率汇总看板(图片预留位)
| 功能模块 | 描述 |
|---|---|
| 🛡️ Steam 令牌获取与验证 | 内置 Steam 移动令牌(Steam Guard)生成与管理模块,支持提取令牌密钥后在控制台直接生成两步验证码(2FA),无需频繁掏出手机;集成自动确认交易功能,彻底解放双手 |
| � 智能代理池中转 | 针对 Steam 严格的风控与区域限制,内置强大的代理池管理(支持自定义长效静止 IP 及 Webshare 自动轮换动态 IP),防止同 IP 频繁请求导致的社区封禁或红信 |
| �🎨 Web 控制台 | 现代化可视化界面,零代码完成所有配置,实时掌控运行状态 |
| 🔑 内嵌 Steam 登录 | 直接在面板输入账号,自动完成登录与 Cookie 提取,无需手动抓包 |
| 🔔 多渠道消息推送 | 内置 PushPlus 微信推送 + 邮件预警,重要事件即时通知 |
| 🔒 一键出厂重置 | 彻底清理代理、令牌、数据库、日志等全部隐私数据,安全迁移无忧 |
[!IMPORTANT] 国内用户必读: 由于网络限制,运行前请务必开启 Steam 加速器(如 Steam++/Watt Toolkit、加速器等),否则程序将无法正常连接 Steam 社区,导致登录失败或行情数据拉取超时。
第 1 步:克隆项目
git clone https://gitee.com/vexed-wilson/AetherSwap.git
cd AetherSwap
第 2 步:安装依赖
# 二选一:桌面/本地运行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 二选一:无桌面 Linux 服务器(避免安装 pywebview)
pip install -r requirements-server.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 Playwright 浏览器(Linux 服务器推荐 --with-deps)
python -m playwright install chromium
# Linux 服务器:
python -m playwright install --with-deps chromium
第 3 步:启动程序
python run.py
程序启动后将自动弹出 Web 控制台,按照首页的「快速开始」卡片引导完成配置即可。
python run.py 会自动判断运行环境:
127.0.0.1:28472 并尝试打开本地窗口/浏览器。0.0.0.0:28472,需要用外部浏览器访问。AETHERSWAP_AGREE_DISCLAIMER=1。常用环境变量:
# 强制服务器模式
set AETHERSWAP_MODE=server # Windows PowerShell 可用 $env:AETHERSWAP_MODE="server"
export AETHERSWAP_MODE=server # Linux/macOS
# 修改监听地址和端口
set AETHERSWAP_HOST=0.0.0.0
set AETHERSWAP_PORT=28472
# 非交互服务启动时跳过免责声明输入
set AETHERSWAP_AGREE_DISCLAIMER=1
使用 Docker 可在无桌面 Linux 服务器上一键启动,无需手动安装 Playwright 系统依赖。
前置条件:已安装 Docker 与 Docker Compose。
# 1. 克隆项目并进入目录
git clone https://gitee.com/vexed-wilson/AetherSwap.git
cd AetherSwap
# 2. 准备环境变量(可选,Docker Compose 会自动读取 .env)
cp .env.example .env
# 3. 确保 config/ 目录存在(首次运行会自动创建数据库等文件)
mkdir -p config log
# 4. 构建并启动
docker compose up -d --build
# 5. 查看日志
docker compose logs -f
启动后通过浏览器访问 http://<服务器IP>:28472 打开 Web 控制台。若要修改宿主机访问端口,请在 .env 中设置 AETHERSWAP_HOST_PORT,容器内监听端口会保持为 28472。强烈建议配置 Nginx 反向代理与访问鉴权,不要将管理面板直接暴露在公网。
常用命令:
docker compose ps # 查看容器状态
docker compose stop # 停止服务
docker compose down # 停止并移除容器
docker compose restart # 重启服务
config/ 与 log/ 目录通过 volume 挂载持久化,容器重建后数据不会丢失。容器内以非 root 用户(uid 1000)运行;若遇到权限问题,请确保宿主机 config/ 与 log/ 目录对 uid 1000 可写。
如果启动时报 cannot import name 'Sentinel' from 'typing_extensions',说明本机 typing_extensions 版本过旧,请执行:
python -m pip install --upgrade typing_extensions
# 或重新安装项目依赖
python -m pip install -r requirements.txt
打开控制台 → 填写手机令牌密钥 → 添加 Steam 账号并验证 → 启动自动任务 🎉
shared_secret、identity_secret 及通知 Token策略中心用于管理自动购入和自动出售的交易决策。现在交易相关参数不再混在设置页里,设置页主要保留账号、通知、代理、刷新、系统等全局配置;具体买什么、怎么买、何时卖、如何定价,请进入左侧导航的【策略中心】。
顶部可以切换:
策略由一串模块组成。每个模块都有类型、参数、依赖和互斥限制。
当前版本开放的是安全声明式模块,而不是任意代码执行。
声明式模块 manifest 示例:
{
"id": "custom.sell.price_floor",
"name": "出售底价保护",
"module_kind": "declarative",
"strategy_types": ["sell"],
"uses_modules": ["pricing.steam_wall_price"],
"stage": "sell.listing_guard",
"conditions": [
{
"left": "outputs.pricing.steam_wall_price.list_price",
"op": "gte",
"value": 15
}
],
"fail_status": "reject",
"message": "上架价低于自定义底价,跳过出售"
}
常用字段说明:
| 字段 | 说明 |
|---|---|
id |
模块唯一 ID,不能覆盖内置模块 |
module_kind |
当前可启用值为 declarative |
strategy_types |
buy 或 sell,也可以同时声明 |
stage |
运行阶段;购入为 buy.candidate_guard,出售为 sell.listing_guard |
uses_modules |
声明依赖哪些前置模块输出,系统会校验顺序 |
conditions |
条件列表,支持 eq/ne/gt/gte/lt/lte/contains/in/exists/between 等操作 |
fail_status |
条件不满足时返回 reject、wait、pass 或 error |
message |
模拟结果和日志中显示的原因 |
声明式模块能读取 item、buy_record、listing、config 和前置模块 outputs。例如:
item.daily_volumeitem.min_pricelisting.list_pricebuy_record.priceoutputs.buy.steam_sell_depth.estimated_ratiooutputs.pricing.steam_wall_price.list_price带有 code、source、entrypoint、command 等字段的外部代码模块只会登记展示,不会执行,也不能加入启用链。这是为了避免用户代码直接影响锁单、付款、上架等高风险动作。
AetherSwap 由两条后台 Pipeline 协同驱动:
SteamDT 行情接口 → 折扣筛选 → 稳定性分析(CV/R²) → 防呆校验 → Buff 自动下单
CV(变异系数)与 R²(趋势拟合度),自动剔除高波动品支付方式说明:当前版本仅支持通过 微信支付 完成购买结账。支付宝等更多支付方式正在规划中,欢迎关注后续更新。
库存监听 → 获取 Steam 寄售深度 → 自动上架 → 令牌签名确认 → 交易数据入库
identity_secret 自动签署 Steam 商品上架二次确认账号、通知、代理、刷新、系统等全局参数可在 Web 控制台的【系统设置】中实时调整,修改立即生效,无需重启。购入/出售决策相关参数请在【策略中心】中通过模块参数管理。
| 参数 | 默认值 | 说明 |
|---|---|---|
stability.days |
30 |
历史价格回溯天数,天数越长分析越稳健 |
stability.cv_threshold |
0.05 |
波动率上限,调高可买入更多品类(风险同步上升) |
stability.r2_threshold |
0.7 |
趋势拟合度下限,调低可接受更多震荡走势品 |
pipeline.max_daily_buy |
- | 每日最大购买金额上限,用于资金风控 |
strategies.active_buy_strategy_id |
system.buy.default |
当前启用的购入策略 ID |
strategies.active_sell_strategy_id |
自动兼容旧配置 | 当前启用的出售策略 ID |
pipeline.sell_strategy |
4 |
旧版出售策略兼容字段;新版本建议在【策略中心】切换出售策略 |
proxy_pool |
- | 自定义代理列表,留空则使用内置 Webshare 自动轮换 |
保守策略提示:默认策略极度保守(宁少赚不亏本)。若想提高买入频率,建议复制系统购入策略后,在【策略中心】调整历史稳定性、最高折扣、卖压保护等模块参数,并先模拟运行。
在程序的自动抢购与下单流程中,支付完成后的确认环节分为两种模式。这取决于你是否在【系统设置】中配置了邮箱(IMAP)信息:
email_user 或 email_pass,程序不会报错或崩溃,而是自动降级为纯手动确认模式。此时页面和后台日志将进入等待倒计时,你需要在 5 分钟(即默认的 email_timeout_seconds=300)内手动在界面上点击确认已支付。如果完成付款但未在 5 分钟内给予系统确认指令,系统会将其视为订单超时并跳过该饰品。💡 建议: 如果你追求尽可能全程挂机和无感体验,建议配置一个专门接收付款通知的邮箱(如开启 IMAP 的 QQ 邮箱 / 网易邮箱等),这将带给你最流畅的半自动化交易流转。
AetherSwap/
├── app/ # FastAPI 后端核心
│ ├── main.py # 应用入口 & 路由注册
│ ├── runtime_env.py # 桌面/服务器模式自动判断
│ ├── strategy_engine.py # 策略中心、模块校验、模拟运行与运行时接入
│ ├── pipeline_steps.py # 采买 / 出售 Pipeline 逻辑
│ ├── database.py # SQLModel ORM & 数据库操作
│ ├── routes/ # FastAPI 路由,包含策略中心 API
│ └── services/ # 后台任务队列与调度
├── buff/ # Buff 平台接口封装
├── steam/ # Steam API & Playwright 自动化
├── steamdt/ # SteamDT 行情数据接口
├── utils/ # 公共工具(代理、推送、配置等)
├── web/ # 前端静态文件(HTML/JS/CSS)
├── tests/ # 单元测试套件
├── run.py # 一键启动入口
├── requirements.txt # 桌面/本地运行依赖清单
└── requirements-server.txt # 无桌面服务器依赖清单
# 运行全部单元测试
pytest -q
# 运行策略中心专项测试
pytest tests/test_strategies.py -q
# 前端脚本语法检查
node --check web/js/strategies.js web/js/main.js web/js/utils.js
Q:报错获取不到历史数据?
请检查steam是否完成登录,历史数据获取需要登录信息用于获取。
Q:我只想倒箱子怎么设置?
将销售量过滤参数设置为2000后适当调整参数即可。
Q:启动后控制台窗口打不开?
请确认依赖安装无报错。若为端口占用,可设置 AETHERSWAP_PORT=其他端口,或直接使用 python -m uvicorn app.api:app --host 0.0.0.0 --port 其他端口。
如果报错类似 cannot import name 'Sentinel' from 'typing_extensions',请升级依赖:
python -m pip install --upgrade typing_extensions
python -m pip install -r requirements.txt
Q:账号登录失败 / Cookie 提取不到?
请确保当前网络(加速器)能够访问 Steam 社区。若自动登录持续失败,可在【账号管理】中手动填入从浏览器获取的 Cookie 作为备用方案。
Q:系统频繁提示"因波动率/斜率放弃购买"?
这是正常的保守行为。若希望增加买入频率,请在设置中将 cv_threshold 调至 0.08,并降低 r2_threshold 至 0.6 左右。调整前请充分理解风险。
Q:如何部署到 Linux 服务器?
AetherSwap 的 FastAPI 架构完整支持无头 Linux 环境。直接运行:
pip install -r requirements-server.txt
python -m playwright install --with-deps chromium
AETHERSWAP_MODE=server AETHERSWAP_AGREE_DISCLAIMER=1 python run.py
也可以直接运行 Uvicorn:
python -m uvicorn app.api:app --host 0.0.0.0 --port 28472
python run.py 会自动判断当前环境:有桌面时打开本地窗口,无桌面 Linux/服务器环境则进入服务器模式并监听 0.0.0.0:28472。可通过 AETHERSWAP_MODE=server|desktop、AETHERSWAP_HOST、AETHERSWAP_PORT 覆盖默认行为;首次以非交互服务运行时,确认已阅读免责声明后可设置 AETHERSWAP_AGREE_DISCLAIMER=1。
再通过外部浏览器访问服务器 IP 即可。强烈建议配置 Nginx 反向代理与访问鉴权,不要将管理面板直接暴露在公网。
Q:策略中心里的用户模块可以直接执行代码吗?
不可以。当前版本只允许启用 module_kind: "declarative" 的安全声明式模块;它只能读取上下文和前置模块输出,再用白名单操作符做判断。带 code、source、entrypoint、command 等字段的外部代码模块只会登记展示,不会执行,也不能加入启用链。
Q:Buff Cookie 过期了怎么办?
在 Web 控制台的【账号管理】中点击「重新登录」。有桌面环境时系统会拉起内嵌浏览器完成重新授权;无桌面服务器会自动切换为手动 Cookie 输入流程。
欢迎任何形式的贡献!请遵循以下流程:
main 创建你的特性分支:git checkout -b feature/my-awesome-featuregit commit -m 'feat: add some awesome feature'git push origin feature/my-awesome-feature提交 Bug 报告或功能建议,请尽量附上完整日志。
如果你在余额倒卖方面有丰富经验,欢迎加入测试、反馈选品策略或参数调优建议——你的实战经验将直接帮助改进算法。
📱 微信:
13738064065
加好友
$ claude mcp add AetherSwap \
-- python -m otcore.mcp_server <graph>