Skip to main content

Extore Logo

兑所 · Extore

多店隔离的卡密兑换与交付网站。
输入卡密,填写信息,领取商品或查看服务结果。

CI PyPI version Python 3.12+ Native WebMCP MIT License

在线站点 · 使用文档 · 问题反馈 · 赞助项目


Extore 接手支付之后的兑换与交付:验证卡密,将顾客带到对应商品,收集必要信息,再交给商品队列、预设处理器或外部服务。支付与支付订单管理留在上游平台,两边通过制卡接口、Webhook 和签名回调通信。

一个实例可以管理多个独立店铺。平台管理员管理店铺、注册与邮件服务,店主管理自己的商品、队列、配置和附件;商品管理链接继续只授权指定商品。已有单店数据迁移到默认店铺。

能做什么

能力 说明
商品与规格 多商品、SKU 档位、参考价与属性;卡密绑定商品和规格。支持私有商品、快速模板、中英文参数名称与 Markdown 教程。
卡密管理 密码学安全随机卡密,按商品、规格、批次和状态跟踪。文本库存可按非空行生成一卡一文本,复制或下载新卡及对应表。原卡密只在发行时显示。
独立商品队列 每个商品独立处理,显示真实步骤、消息与排位。获授权的 AI 可用 next 原子领取当前任务,--watch 在客户端等待,空队列不反复送进模型。
分步任务流程 商品可定义输入、处理、展示和结束节点,引用前一步结果并配置分支与超时。先准备任务,再逐卡明确开始;已有卡密固定发行时的流程与处理配置。
灵活交付 文本、链接、文件、图片与有序图片集合,支持下拉选项和是/否字段,也可只返回服务状态。一次领取、重复查看、需要重试、附原因的拒绝及主动销毁沿用同一套规则。
批量兑换与路由 网页与 CLI 校验多张卡密,按商品、规格及兼容的冻结输入分组;坏码不挡有效卡,附件每卡独立。签名路由卡先本地验签,再交给固定发行站。
权限与认证 平台管理员使用多个 Passkey;店主可用邮箱密码、可选 TOTP 或多个 Passkey 登录。注册默认关闭,由平台管理员邀请店主。商品链接默认 1 次浏览器登录与 1 个 CLI 绑定,支持委派和会话审计。
自动化与二次开发 开源商品处理器、店铺加密配置、只写秘密与冻结运行限制;Python SDK、兼容的 Webhook v1 和按节点授权的私有 Worker v2,原生 WebMCP 工具按页面、身份与权限动态提供。
命令行操作 manage 管理商品授权,customer 兑换与领取,admin 用固定账号的设备管理本店或平台;默认精简输出,凭证保存到私密文件。AI 主动申请单商品或当前整店队列权限,店长用设备码审批,可追加权限、集中审计与撤销。
界面与存储 SQLite 持久化任务、事件和投递重试;单文件、单卡、单店与全站附件额度,磁盘余量保护;撕纸与分段虚线界面,明暗和语言默认自动。

顾客上传的是兑换材料,管理者上传的是交付文件。预设处理器来自审核后固定版本的开源子模块,商家在预设中选择并填写配置。浏览器 AI 需要原生 WebMCP 支持及实际授权,具体兼容性见工具文档。

兑换流程

卡密 → 对应商品与规格 → 填写参数 / 分步提交 → 商品队列或处理器 → 领取内容 / 查看结果
  1. 商家创建商品,配置输入、输出、处理方式和查看规则,按规格发行卡密。
  2. 顾客输入有效卡密。非公开商品在验证成功后才显示。
  3. 提交参数后创建唯一任务,重复提交返回同一个任务。
  4. 队列管理者、预设处理器或外部平台完成任务,顾客通过领取链接查看进度和结果。

队列商品可修改未来任务的输入输出,已有任务保留各自的结构快照。自动商品发行卡密后锁定处理器和输入输出结构。SKU 的 price 字段是参考价,仅供外部商城配置参考。Extore 只负责兑换与交付,不收款;实际售价、收款和销售库存由商家在上游平台管理。

可选的任务流程把顾客输入、处理和展示串起来。验证或批量准备不会替顾客开始计时;顾客只看到当前允许的题目和明确展示的结果。流程在发行卡密时固定,旧卡没有流程快照时继续走原来的兑换方式。短期敏感输入有有效期,只传给当前获授权的处理节点,不能放到展示、普通事件或最终交付中。

一卡一文本适合已有交付内容的库存;签名兑换路由适合多个 Extore 站点共用入口。普通旧卡密不会被拿去逐个试探其他站点,入口站后端不接收下游路由卡密。

需要重试时,处理者须说明原因并选择「修改后重提」或「原资料重试」;外部故障也能作为原因。拒绝处理会禁用卡密。原任务、规格和步骤计划保留,重新开始后进度归零。

快速运行

需要 Python 3.12+、uv 和 Linux。完整环境、部署和备份说明见运行指南。内置自动处理器还需要系统安装 bubblewrap 0.12 及以上和 libseccomp;Python 包安装不会提供这些依赖。Arch Linux 可执行:

sudo pacman -S --needed bubblewrap libseccomp

从 PyPI 安装后,可直接使用 extore 命令:

uv tool install extore
export EXTORE_DATA="$HOME/.local/share/extore"
extore init
extore serve

另开一个终端,设置相同的 EXTORE_DATA 后运行 extore worker。extore --help 查看全部命令,extore --version 查看版本。生产环境还须配置 EXTORE_ORIGIN 并提供 HTTPS,见运行指南。

也可以从源码运行:

git clone --recurse-submodules https://github.com/TokenNotIncluded/extore.git
cd extore
uv sync --frozen
uv run extore init
uv run extore serve

另开一个终端,在项目目录启动 worker,处理自动发货和 Webhook 投递:

uv run extore worker

打开 http://localhost:8000。在 2.5 秒内点击左上角 Logo 5 次,或直接访问 /admin。平台管理员首次使用初始化密码注册 Passkey,之后关闭这套首次密码登录;店主账号使用独立的邮箱密码和可选 TOTP,也可添加多个 Passkey。平台管理员先配置 SMTP,再邀请店主。邀请、邮箱确认和密码重置邮件采用统一响应式排版,并保留纯文本版本;详见多店与账号。

首次登录、认证恢复与运行边界
  • Passkey 需要 HTTPS 或 localhost;部署前确定固定域名。平台管理员首次密码会话只能注册 Passkey,不能管理商品。
  • 平台管理员丢失全部 Passkey 时,在服务器执行 uv run extore reset-auth 恢复首次密码登录;店主使用邮件重置自己的密码,开启 TOTP 时还须提供第二因素或恢复码。两者均保留业务数据。详见认证恢复。
  • API 与 worker 共享数据目录和配置,一个数据库只运行一个 worker。数据目录、数据库、issuance.key 和 master-secrets.key 都要妥善保护和备份。详见生产运行。
  • 领取链接是凭证。一次领取会消耗查看机会;销毁不能撤回已下载的副本、外部内容或历史备份。未知、超时或崩溃的交付默认等待核实,下游须用稳定任务 ID 去重。详见自动处理与领取。

命令行与 AI 接入

完整 CLI 要求 0.6.0 及以上;也可在该版本源码目录用 uv run extore … 执行。安装与完整操作见 CLI 指南。

# 商品授权:CLI 显示网址和短码,由你在浏览器确认权限
extore manage login --device-code --origin https://extore.example.com --product PRODUCT_ID
extore manage queues --all

# 原子领取;持续等待由 CLI 完成,不反复把空队列交给模型
extore manage next --all --origin https://extore.example.com --watch --limit 1

# 本店当前全部队列商品:先申请,再由店长核对商品清单和权限
extore manage login --device-code --origin https://extore.example.com --shop SHOP_ID --pipelines-all --no-wait

# 顾客:卡密从私密文件标准输入读取
extore customer exchange --origin https://extore.example.com --codes-stdin < /path/to/private-codes.txt

# 店主:首次在浏览器用真实 Passkey 批准此设备
extore admin login --origin https://extore.example.com

# 已有邮箱账号的店主:隐藏输入密码及已开启的第二因素
extore admin login --origin https://extore.example.com --email owner@example.com

本店队列授权只覆盖批准清单内的队列商品,之后新建的商品需要再次申请。AI 可提出追加商品或权限,店长可减少申请范围再批准;拒绝、取消或到期的申请不会改变原授权。成功追加保留原任务处理者身份;每次写入仍使用一个商品的独立授权,客户端可以聚合查看多个队列。后台会话管理可查看、撤销整份流水线授权并释放其处理中任务。店主设备授权最多 30 天,8 小时会话由本机私钥续签;后续 JSON 写操作另用一次性设备签名。列表默认摘要,任务详情和教程按需读取,制卡与新授权链接保存为 0600 文件。

SMTP 凭据、TOTP 密钥与店铺处理器配置加密保存。店主可以回读、编辑明确声明为普通文本的交付模板与说明;账号密钥和未声明类型的配置只返回是否已设置。配置档案还支持普通工作流变量、只写秘密与运行资源上限,网页和店主 CLI 均可管理。已有卡密冻结整份档案修订,修改变量、秘密或资源上限不改变旧卡;处理器通过只读环境取得对应版本。配置与工作流说明

内置商品处理器采用固定代码的离线运行环境,需要 Linux、bubblewrap 0.12 及以上(bwrap)、libseccomp 和可用的内核命名空间。当前只支持 stdin/stdout 文本与资源链接预设,执行时间、进程地址空间、CPU 与输出上限;禁止联网、fork、外部程序及创建文件。隔离不可用时拒绝执行,不降级为宿主直接运行。复杂文档和 PPT 仍由外部 AI 通过 CLI 队列处理并上传文件。商家不能增加命令、挂载或联网能力;处理器可读取授予的秘密,代码仍须审核,秘密不会自动进入交付模板。付款适配和受控支付服务尚未实现,现有预设不代表已完成真实付款。

设备码登录要求 0.7.0 及以上。网页可一键复制不含凭证的商品机器人提示词:机器人申请设备码,你在 /cli/device 输入短码,核对商品、权限、设备指纹与期限,再明确批准。主动商品申请不要求先创建管理链接;本店流水线只给队列权限,商品管理的额外权限须单独明确申请。既有商品管理链接通过 --existing-link 设备码流程绑定,浏览器与 CLI 绑定次数独立。文档里的提示词也可直接复制,配合已授权的 CLI 使用。上传只保存材料,提交或交付需明确执行下一步;持续运行机器人由接入方安排。

任务流程、富类型字段、文本库存、签名兑换路由和 next --watch 是 0.8.0 的接口能力。next 返回当前任务、当前节点和应使用的授权;断线后先恢复同一请求,不能直接另领一单。详见AI 队列处理。Extore 不内置持续运行的通用 AI 模型;复杂文档或 PPT 的制作质量、持续运行、外部付款和真实提供商交付需要分别验收,接口可用不等于这些工作已经完成。

文档

文档 内容
快速入门与运行指南 本地运行、管理权限、认证恢复、生产配置、Docker 与 Arch Linux 部署
接口与事件协议 商品、SKU、卡密、队列、附件、完整事件定义与签名回调
CLI 指南 商品完整管理、卡密、授权、队列与私密输出
顾客 CLI · 店主 CLI 批量兑换、材料与交付;Passkey 设备批准和全店操作
多店与账号 平台与店主边界、邮箱邀请、TOTP、SMTP、加密处理器配置与存储额度
可复制 AI 提示词 商品处理、店主运营与顾客领取的操作模板
任务流程 · 一卡一文本 冻结的分步流程、当前题目、计时与敏感输入;按规格导入交付库存
AI 队列处理 原子领取、等待、断线恢复与按当前节点交付
兑换路由协议 · 路由配置 本地验签、公开路由配置和固定发行站
原生 WebMCP 原生工具、浏览器支持、权限范围与确认要求
Python SDK 预设处理器协议、任务结果、外部验签与回调示例
私有 Worker v2 · SDK v2 按店铺、任务、尝试和节点签名派发,结果与附件幂等回调
0.8.0 更新说明 本轮能力、兼容性与仍需单独验收的边界
0.8.1 更新说明 商品删除、回收站恢复与独立删除权限;保留旧卡密和任务
验收记录 已记录的验证结果、对接边界与限制
产品定义 · 设计说明 项目范围、交互和视觉原则

服务运行后,/docs 提供交互式 OpenAPI 文档。普通事件和既有回调保持 v1;流程私有 Worker 使用独立的 v2 签名与节点范围。

贡献

欢迎通过 Issues 提交可复现的问题或功能建议,也欢迎提交 Pull Request。修改前请阅读产品定义与设计说明,保持店铺与商品权限隔离和既有视觉语言。

常用检查如下;完整检查项以 CI 工作流为准:

uv run ruff check extore scripts tests
uv run ruff format --check extore scripts tests
uv run pytest -q
node --test tests/*.test.cjs

Pull Request 请说明行为变化和验证结果。内置预设处理器在独立仓库维护,主项目通过子模块固定版本。反馈或示例中请删除卡密、管理链接、领取凭证、密钥和顾客资料。

赞助

如果 Extore 帮到了你,可以通过 donate.lmm.best 支持项目维护。

Extore 项目累计赞助

许可证

Extore 使用 MIT License。预设处理器子模块的许可见其仓库。

Metadata

Release files for extore 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for extore 0.8.1
File Size Uploaded
extore-0.8.1.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for extore 0.8.1
File Interpreter ABI Platform
extore-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / extore-0.8.1.tar.gz

Download URL extore-0.8.1.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
f8abb5996d082374e01f3598f3404ea804c4a13d4068a3241e849e802d8bd021
BLAKE2b-256 checksum
How to use checksums
a6c2655a082f69300228b2ccc0b9aa5cea4e1d75f4bd1b70d308f322f0168145
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Omarchy","version":"4.0.4","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / extore-0.8.1-py3-none-any.whl

Download URL extore-0.8.1-py3-none-any.whl
Size 567.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fd1d1eabd3ddcac37e2659ea75dc5bf72b0ce089fab7eda8b428de1a7d66c896
BLAKE2b-256 checksum
How to use checksums
b03171eabf152a8833a3332e5aa299474489e53c7cb1605079315295c8a4bd80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Omarchy","version":"4.0.4","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.9.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page