这是 OK-NTE 的社区队伍方案仓库。每个 ZIP 包包含一个
队伍方案,以及该方案实际需要的外置 Python 角色代码。OK-NTE 的“队伍管理”页面会读取本仓库
生成的 teams.json,让用户在工坊内搜索、查看和导入方案。
仓库仅负责静态分发。提交者通过 Pull Request 上传 ZIP,合并后 GitHub Actions 会校验包并更新
索引,再同步 codes/ 与 teams.json 到 CNB 镜像。
- 打开 OK-NTE 的“队伍管理”。
- 点击“工坊”,按名称、角色或作者搜索方案。
- 每个方案默认显示最高版本; 可在右侧详情的版本下拉中选择历史版本, 查看对应说明和成员。
- 点击导入, 确认 ZIP 中展示的元数据后填写本地方案名称和外置代码目录。
角色筛选按界面语言显示名称, 关键词搜索同时支持中英文。搜索和筛选以各方案的最新版信息为准。
也可以点击“导入”选择其他来源提供的本地 ZIP。导入不会覆盖已有的外置代码目录或本地方案; 请为不同版本使用不同目录。
Warning
社区包可以包含外置 Python 代码。CI 只检查 ZIP 结构、JSON 和 Python 语法,不会执行 提交的代码;但导入后,OK-NTE 为运行角色逻辑会加载外置代码。请只导入可信作者或你已自行 审查的来源。
在“队伍管理”中选中要分享的方案,点击“导出”,填写名称、描述、作者和版本。建议版本从
1.0.0 开始,并在每次修改出招逻辑后递增。导出文件名为:
<角色组合>_<作者>_<版本>.zip
文件名仅便于阅读;包内的 team.json 才是权威元数据。
若不同打法导出了同名 ZIP, 保存或上传前请在文件名中加上方案名称以区分, 无须修改包内文件。
- 打开
codes/。 - 点击 Add file → Upload files,上传导出的 ZIP 到
codes/根目录。 - 选择 Create a new branch for this commit and start a pull request,再点击 Propose changes。
- 创建 Pull Request,等待校验通过和维护者审核。
不要直接修改 teams.json。它由发布工作流生成;PR 合并后会自动更新 GitHub 和 CNB 镜像。
所有版本都会保留在索引中; 工坊按作者和方案名称归组, 每组在主列表中只显示一行。
- 作者和方案名称共同标识一个方案。迭代时保持两者不变, 只修改版本、说明或代码。
- 同一队伍的不同打法使用不同方案名称; 更改作者或方案名称会视为新方案。
- 版本必须为三段非负整数, 例如
1.0.0、1.9.0、1.10.0, 每段除0外不能以零开头。 不接受v前缀、预发布后缀或省略段数。 - 工坊按数字比较版本,
1.10.0高于1.9.0; 补传旧版本不会顶替最高版本。 - 同一作者、方案名称和版本不能重复提交, 即使成员或源码不同也必须更新版本号。
ZIP 根目录只能包含 team.json 和 team.json 中声明的外置 .py 文件:
Example_Author_1.0.0.zip
├── team.json
├── character_a.py
└── character_b.py
team.json 包含 1 至 4 个槽位。内置角色引用既有 impl_id;外置角色声明脚本文件、类名和
中英文显示名:
{
"format_version": 1,
"name": "示例队伍",
"description": "队伍循环和使用说明",
"author": "作者昵称",
"version": "1.0.0",
"slots": [
{
"index": 0,
"kind": "builtin",
"impl_id": "builtin:ExampleBuiltin",
"display": {"zh_CN": "内置角色", "en_US": "Builtin Character"}
},
{
"index": 1,
"kind": "external",
"file": "character_a.py",
"class_name": "CharacterA",
"display": {"zh_CN": "角色 A", "en_US": "Character A"}
}
]
}display 可省略,此时会回退为类名或内置实现名。外置脚本必须是 UTF-8 编码、位于 ZIP 根目录、
扩展名为 .py,且 class_name 必须是合法的 Python 标识符。
为避免仓库变成文件托管服务,每个包必须同时满足以下限制:
- ZIP 压缩后不超过 2 MiB,解压总量不超过 2 MiB。
- 最多 5 个文件;单个 Python 文件不超过 512 KiB,
team.json不超过 64 KiB。 - 名称最多 100 字,描述最多 2,000 字,作者最多 64 字,版本最多 32 字。
- 不接受目录项、嵌套路径、路径穿越、重复文件名、符号链接、加密 ZIP、二进制资源或未声明文件。
- 不接受数据库、角色特征、图片、模型、录像、文字出招表、凭据或与方案无关的内容。
- 校验只读取 JSON 并使用 AST 检查 Python 语法,不会导入、实例化或执行提交的 Python。
PR 使用只读权限运行校验,不会接触 CNB 同步密钥。合并到 main 后发布工作流会再次校验,
生成紧凑的 teams.json;索引超过 2 MiB 会警告,超过 5 MiB 会阻止发布。
author是展示信息,不验证 GitHub 身份;请填写稳定且可识别的昵称或社区 ID。- 请仅提交你有权发布的代码,不得包含恶意代码、侵权内容、个人资料或任何凭据。
- 提交者应自行确认代码来源、许可证和第三方依赖;维护者可拒绝或移除不符合规则的包。
- 不提供本地方案自动更新、自动覆盖或自动同步。新版本请使用新的 ZIP 和新的本地外置目录。
python scripts/build_catalog.py --check
python -m unittest discover -s tests -p "test_*.py"- GitHub 主仓库:BnanZ0/ok-nte-char-code
- GitHub 上传目录:codes/
- CNB 镜像:BnanZ0/ok-nte-char-code