[{"data":1,"prerenderedAt":642},["ShallowReactive",2],{"docs-doc-zh-CN-github-source":3,"docs-list-zh-CN":546},{"doc":4,"locale":543,"available":544},{"id":5,"title":6,"body":7,"description":532,"extension":533,"group":534,"meta":535,"navigation":536,"order":537,"path":538,"section":534,"seo":539,"stem":540,"updated":541,"__hash__":542},"docs_zh\u002Fdocs\u002Fgithub-source.md","GitHub 安装源标准",{"type":8,"value":9,"toc":522},"minimark",[10,19,33,37,40,72,79,82,197,221,228,231,234,244,298,305,348,367,370,377,380,407,413,420,423,502,505,515],[11,12,13,14,18],"p",{},"「下载管理」除了创意工坊，还可以直接从公开的 GitHub 仓库取回作品。仓库本身就是作品包：客户端读仓库根目录的 ",[15,16,17],"code",{},"package.json","，按这份清单校验，再把该提交的源码归档下载下来。作者不需要另外打 release、也不需要上传 zip 资产。",[11,20,21,22,27,28,32],{},"本页是这类仓库需要满足的约定。玩家侧的操作步骤见",[23,24,26],"a",{"href":25},"\u002Fdocs\u002Fdownloads","下载管理","，清单字段见",[23,29,31],{"href":30},"\u002Fdocs\u002Fscnexus-package","星际枢纽压缩包标准","。",[34,35,36],"h2",{"id":36},"客户端做的事",[11,38,39],{},"点「检查并下载」后，应用按四步取回内容：",[41,42,43,52,62,69],"ol",{},[44,45,46,47,51],"li",{},"用「仓库地址」与「分支」向 GitHub 查询该引用的",[48,49,50],"strong",{},"提交号","，并固定在这个提交上。",[44,53,54,55,57,58,61],{},"读取该提交根目录的 ",[15,56,17],{},"（上限 128 KiB），按星际枢纽标准校验，并要求 ",[15,59,60],{},"version"," 是完整的语义化版本。",[44,63,64,65,68],{},"校验通过后显示预览（名称、简介、作者、版本、类型、战役、",[15,66,67],{},"SCNID"," 等清单里有的字段），确认后才开始下载。",[44,70,71],{},"下载该提交的源码归档，落到下载目录，显示为「已完成」；随后由玩家点「安装」进入正常的安装流程。",[11,73,74,75,78],{},"关键点是",[48,76,77],{},"提交号固定","：预览时就把分支解析成具体提交并记录下来，下载用的还是这个提交，所以检查之后作者再往分支推新提交，也不会影响本次下载取到的内容。想要拿到新版本，重新建一次任务即可。",[34,80,81],{"id":81},"仓库要满足什么",[83,84,85,98],"table",{},[86,87,88],"thead",{},[89,90,91,95],"tr",{},[92,93,94],"th",{},"要求",[92,96,97],{},"说明",[99,100,101,123,133,144,166,185],"tbody",{},[89,102,103,107],{},[104,105,106],"td",{},"仓库公开",[104,108,109,110,113,114,113,117,113,120],{},"不读私有仓库，也不需要登录；接口地址固定为 ",[15,111,112],{},"github.com","、",[15,115,116],{},"api.github.com",[15,118,119],{},"raw.githubusercontent.com",[15,121,122],{},"codeload.github.com",[89,124,125,130],{},[104,126,127,128],{},"根目录有 ",[15,129,17],{},[104,131,132],{},"只能是仓库根目录，不能放进子文件夹；一个仓库只能有一个作品",[89,134,135,138],{},[104,136,137],{},"清单符合标准",[104,139,140,141,143],{},"字段、类型、资源路径按",[23,142,31],{"href":30},"校验",[89,145,146,149],{},[104,147,148],{},"版本号完整",[104,150,151,152,155,156,113,159,113,162,165],{},"必须是 ",[15,153,154],{},"1.2.3"," 这类完整语义化版本，",[15,157,158],{},"1.2",[15,160,161],{},"v1.2.3",[15,163,164],{},"最新版"," 都不行",[89,167,168,171],{},[104,169,170],{},"资源真实存在",[104,172,173,174,113,177,180,181,184],{},"清单里 ",[15,175,176],{},"maps[]",[15,178,179],{},"mods[]"," 声明的每个 ",[15,182,183],{},"source_path","，都必须能在仓库里找到文件或组件目录",[89,186,187,190],{},[104,188,189],{},"归档结构简单",[104,191,192,193,196],{},"GitHub 打出的归档只有一层 ",[15,194,195],{},"\u003C仓库名>-\u003C提交号>\u002F"," 目录，作品文件就在这一层里，不能嵌套多层外壳",[11,198,199,200,203,204,113,207,113,210,212,213,216,217,220],{},"实际含义很直接：",[48,201,202],{},"仓库根目录就是作品包的根目录","。把 ",[15,205,206],{},"Maps\u002F",[15,208,209],{},"Mods\u002F",[15,211,17],{}," 直接放在仓库根下即可；为了好看再套一层 ",[15,214,215],{},"src\u002F"," 或 ",[15,218,219],{},"pack\u002F"," 目录会被判为清单不在根部。",[11,222,223,224,227],{},"仓库里可以放手稿、构建脚本、",[15,225,226],{},"README.md"," 这类与安装无关的文件：它们会随归档一起下载，但只有清单声明的资源与附件会被安装。",[34,229,230],{"id":230},"地址与分支怎么写",[11,232,233],{},"「仓库地址」必须是这种形式：",[235,236,242],"pre",{"className":237,"code":239,"language":240,"meta":241},[238],"language-text","https:\u002F\u002Fgithub.com\u002F所有者\u002F仓库\n","text","",[15,243,239],{"__ignoreMap":241},[245,246,247,262,273,293],"ul",{},[44,248,249,250,253,254,257,258,261],{},"只接受 ",[15,251,252],{},"https:\u002F\u002F","，不接受 ",[15,255,256],{},"http:\u002F\u002F","，也不接受网页里的分支路径（",[15,259,260],{},"\u002Ftree\u002Fmain","）或文件路径。",[44,263,264,265,268,269,272],{},"结尾带不带 ",[15,266,267],{},"\u002F"," 都可以；写成 ",[15,270,271],{},".git"," 结尾会自动去掉。",[44,274,275,276,279,280,283,284,113,287,290,291,32],{},"所有者只能是字母、数字与 ",[15,277,278],{},"-","，且以字母或数字开头；仓库名可用字母、数字与 ",[15,281,282],{},"_ . -","，但不能是 ",[15,285,286],{},".",[15,288,289],{},".."," 或单独的 ",[15,292,271],{},[44,294,295,296,32],{},"不支持 GitHub Enterprise 或其他托管平台——地址前缀固定为 ",[15,297,112],{},[11,299,300,301,304],{},"「分支」可以填分支名、标签或提交号，默认 ",[15,302,303],{},"main","：",[83,306,307,317],{},[86,308,309],{},[89,310,311,314],{},[92,312,313],{},"可以写",[92,315,316],{},"不能写",[99,318,319],{},[89,320,321,332],{},[104,322,323,113,325,113,328,331],{},[15,324,303],{},[15,326,327],{},"release\u002F1.x",[15,329,330],{},"v1.2.0","、完整的 40 位提交号",[104,333,334,335,337,338,216,340,343,344,347],{},"以 ",[15,336,267],{}," 开头或结尾、含 ",[15,339,289],{},[15,341,342],{},"@{","、含空白与 ",[15,345,346],{},"~ ^ : ? * [ \\","、含控制字符",[11,349,350,351,353,354,216,356,359,360,366],{},"每一段路径还不能以 ",[15,352,286],{}," 开头、不能以 ",[15,355,286],{},[15,357,358],{},".lock"," 结尾。填错时窗口会即时提示「请输入 ",[23,361,365],{"href":362,"rel":363},"https:\u002F\u002Fgithub.com\u002F%E6%89%80%E6%9C%89%E8%80%85\u002F%E4%BB%93%E5%BA%93",[364],"nofollow","https:\u002F\u002Fgithub.com\u002F所有者\u002F仓库"," 格式的地址」或「请输入分支名称」。",[34,368,369],{"id":369},"体积与结构",[11,371,372,373,376],{},"GitHub 安装源",[48,374,375],{},"不设自己的体积门槛","：既没有「归档文件最大多少 MB」，也不受创意工坊的创作者额度约束。只要仓库推得上去、归档打得出来，客户端就照单取回；真正限制规模的是 GitHub 对单个文件与仓库体积的规则，那与我们无关，也不在我们的检查范围内。",[11,378,379],{},"会被拒绝的只有结构问题。解压前，客户端会把归档的条目过一遍，这些判断与作品大小无关，只用来挡掉无法安全解压的包：",[245,381,382,398,401,404],{},[44,383,384,385,387,388,113,391,113,394,397],{},"路径里出现绝对路径、盘符、",[15,386,289],{},"，或 Windows 保留名（",[15,389,390],{},"con",[15,392,393],{},"aux",[15,395,396],{},"com1"," 等）。",[44,399,400],{},"两个文件只差大小写，解到 Windows 上会互相覆盖。",[44,402,403],{},"单条路径层级过深，或归档条目数量极多——这类包多半是打包工具出了错。",[44,405,406],{},"解压后总量远超合理范围（防止压缩炸弹的硬线），正常战役与模组不会触及。",[11,408,409,410,412],{},"命中时窗口给的是「压缩包结构不安全」一类提示，按正常的目录层级重新打包即可。清单本身的读取上限是独立的一条：根目录 ",[15,411,17],{}," 不能超过 128 KiB，正常清单只有几 KB。",[11,414,415,416,419],{},"需要控制分发体积时，通常不是为了过检查，而是为了玩家下载体验：把模组拆成独立的依赖包，在 ",[15,417,418],{},"dependencies"," 里声明，让安装器先装上游。",[34,421,422],{"id":422},"常见失败与原因",[83,424,425,435],{},[86,426,427],{},[89,428,429,432],{},[92,430,431],{},"现象",[92,433,434],{},"可能原因",[99,436,437,448,468,484,494],{},[89,438,439,445],{},[104,440,441,442,444],{},"提示「无法创建下载任务」，并要求检查仓库是否公开、分支是否存在、根目录 ",[15,443,17],{}," 是否符合标准",[104,446,447],{},"仓库私有或已删除；分支、标签、提交号写错；根目录没有清单；清单字段不合法；版本号不是完整语义化版本",[89,449,450,453],{},[104,451,452],{},"预览里缺字段",[104,454,455,456,113,459,113,462,113,465,467],{},"清单能读，但 ",[15,457,458],{},"name",[15,460,461],{},"description",[15,463,464],{},"author",[15,466,60],{}," 等字段本身没写",[89,469,470,473],{},[104,471,472],{},"任务失败且提示资源缺失",[104,474,475,476,479,480,483],{},"清单声明的 ",[15,477,478],{},".SC2Map"," \u002F ",[15,481,482],{},".SC2Mod"," 不在仓库里，或大小写、相对路径写错",[89,485,486,489],{},[104,487,488],{},"提示清单不在根目录",[104,490,491,492],{},"作品被放进了子文件夹，或仓库里同时存在多份 ",[15,493,17],{},[89,495,496,499],{},[104,497,498],{},"提示清单在检查后发生变化",[104,500,501],{},"极少数情况下 GitHub 返回的内容与固定提交不一致，重新建一次任务即可",[34,503,504],{"id":504},"与创意工坊的分工",[11,506,507,508,511,512,514],{},"GitHub 安装源是",[48,509,510],{},"分发通道","，不是发布渠道：它不经过审核、没有版本记录，也不产生作品编号。要让作品出现在创意工坊、能被按 ",[15,513,67],{}," 下载，仍然要在创作者中心创建作品并上传版本。",[11,516,517,518,521],{},"两者可以并存：仓库持续开发，稳定版本再上传到工坊。仓库里的 ",[15,519,520],{},"scnid"," 字段填该项目实际分配的编号，客户端不会因为这个字段就把仓库内容当成工坊作品。",{"title":241,"searchDepth":523,"depth":523,"links":524},3,[525,527,528,529,530,531],{"id":36,"depth":526,"text":36},2,{"id":81,"depth":526,"text":81},{"id":230,"depth":526,"text":230},{"id":369,"depth":526,"text":369},{"id":422,"depth":526,"text":422},{"id":504,"depth":526,"text":504},"把公开 GitHub 仓库当作安装源时，仓库需要满足的清单与结构要求，以及地址与分支的写法。","md","reference",{},true,30,"\u002Fdocs\u002Fgithub-source",{"title":6,"description":532},"docs\u002Fgithub-source","2026-11-01","Z2GIr5nK2Tn_jiB1lj1FSjdKifmp08FolYQUVCOGSf0","zh-CN",[543,545],"en",[547,554,559,563,569,573,575,580,584,588,589,593,598,603,608,611,616,621,626,631,637],{"path":548,"title":549,"description":550,"order":551,"group":552,"section":553,"contentLocale":543},"\u002Fdocs\u002Feditor","创作流程概览","从在《星际争霸II》编辑器中制作，到打包、分发与更新，说明星际枢纽在创作流程里承担的环节。",1,"start","editor",{"path":555,"title":556,"description":557,"order":551,"group":552,"section":558,"contentLocale":543},"\u002Fdocs\u002Foverview","快速开始","「星际枢纽」是一款专为星际社区服务的枢纽应用","app",{"path":560,"title":561,"description":562,"order":551,"group":534,"section":534,"contentLocale":543},"\u002Fdocs\u002Freference","概述","收录导入、安装与分发内容时依赖的压缩包与安装源约定。",{"path":564,"title":565,"description":566,"order":567,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fcampaign","战役管理","把自制战役导入战役库、激活到游戏，并随时恢复官方战役",10,"usage",{"path":570,"title":571,"description":572,"order":567,"group":568,"section":553,"contentLocale":543},"\u002Fdocs\u002Fpackaging","打包安装包","把编辑器产出的地图、模组与 package.json 组织成一个能被星际枢纽自动识别并安装的压缩包。",{"path":30,"title":31,"description":574,"order":567,"group":534,"section":534,"contentLocale":543},"星际枢纽作品包的目录结构、package.json 清单字段、地图与模组资源声明、启动器与包内资料的写法。",{"path":576,"title":577,"description":578,"order":579,"group":534,"section":534,"contentLocale":543},"\u002Fdocs\u002Fccm-package","CCM 压缩包标准","CCM 用 metadata.txt 描述战役的键值格式、目录布局与安装落点，以及星际枢纽读取这类包时的处理方式。",20,{"path":581,"title":582,"description":583,"order":579,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fcustomize","自制作品","把地图与模组直接装进游戏，指定启动器地图后一键启动",{"path":585,"title":586,"description":587,"order":579,"group":568,"section":553,"contentLocale":543},"\u002Fdocs\u002Ftoolbox","创作工具 · 编码转换","把中文等非 ASCII 文本转成 Galaxy 代码里可用的转义写法，可选直接转码、字符串、文本与触发调试四种输出。",{"path":538,"title":6,"description":532,"order":537,"group":534,"section":534,"contentLocale":543},{"path":590,"title":591,"description":592,"order":537,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fweekly-mutations","每周突变","查看本周突变的地图、因子与社区评分，并查阅全部突变因子",{"path":594,"title":595,"description":596,"order":597,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Freplays","录像管理","按星际资料与录像类型索引录像，支持去重、批量导出与对局数据查看",40,{"path":599,"title":600,"description":601,"order":602,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fworkshop","创意工坊","浏览社区作品、查看详情并下载已审核的发布版本",50,{"path":604,"title":605,"description":606,"order":607,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fcreator","创作者中心与上传管理","创建作品、维护资料、上传新版本并跟踪上传任务",60,{"path":25,"title":26,"description":609,"order":610,"group":568,"section":558,"contentLocale":543},"从 GitHub 或创意工坊取回内容，确认后安装到游戏",70,{"path":612,"title":613,"description":614,"order":615,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Ftools","创作工具","编码转换等本地辅助工具，输入不会上传也不会保存",80,{"path":617,"title":618,"description":619,"order":620,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fai-assistant","智能助手","把本地数据与本机 AI 客户端连起来的受控 MCP 服务",90,{"path":622,"title":623,"description":624,"order":625,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Faccount","账号与个人中心","登录、资料与等级成长，以及两步验证的开启与维护",100,{"path":627,"title":628,"description":629,"order":630,"group":568,"section":558,"contentLocale":543},"\u002Fdocs\u002Fsettings","设置","语言、游戏目录、功能开关与日志隐私，四个标签页逐项说明",110,{"path":632,"title":633,"description":634,"order":635,"group":636,"section":558,"contentLocale":543},"\u002Fdocs\u002Fcontributing","参与开发","参与「星际枢纽」开发的方式：仓库分工、开发环境、提交前检查、代码与文档约定、行为准则，以及安全问题的报告渠道。",200,"contribute",{"path":638,"title":639,"description":640,"order":641,"group":636,"section":558,"contentLocale":543},"\u002Fdocs\u002Flocalization","贡献翻译","界面翻译文件的位置与键名规则、提交流程、本地验证方法，以及新增一门界面语言需要改动的代码位置。",210,1793550745232]