仅当用户明确要求往「🐌库存转移 / ItemTransfer」任务里**新增可搬运物品**(即在 `assets/tasks/ItemTransfer.json` 的 `option.WhatToTransfer.cases` 里加 case,并同步 `assets/data/ItemTransfer/item_order.json` 与 5 个 locale 文件的 `item.*`)时使用。典型触发用语:「给库存转移加 xxx」「ItemTransfer 里新增 xxx」「WhatToTransfer 多一项 xxx」。**不要**在以下场景触发:修改 / 删除已有 ItemTransfer 物品、只改 pipeline 参数或模板图、其他任务的物品配置(AutoStockpile / AutoStockStaple / CreditShopping / SellProduct / DeliveryJobs / BatchUseDetector 等)、物品模型重训 / 新增 class ID、纯咨询"库存转移能搬什么"。
本指南用于在「🐌库存转移(ItemTransfer)」任务中新增一个可选择的物品。整体流程分为两个部分:第一部分是用户要做的事,第二部分是交给 AI 执行的事。
这一部分是用户需要亲自在游戏里确认并在 JSON 中填好的内容,AI 不会替你判断。
assets/data/ItemTransfer/item_order.json 的 category_ordercategory_order,不要动 items 字段。
items 里的数字 key 是识别模型的真实 class ID,由开发者在重训模型时统一维护,用户没法也不应该自己编一个。category_order.<category>(Ore / Plant / / 四选一)数组里,把新增物品的按第 1 步游戏里观察到的位置。
ProductUsable⚠️
category_order里的顺序,是后续 OCR 滚动识别和 locales / ItemTransfer.json 插入顺序的唯一权威来源,必须和游戏里肉眼看到的顺序一致。
请在向 AI 下达任务时,明确告诉它以下两点,否则 AI 无法选对模板:
ItemTransferFindItemInRepo 的 expected / target_class 匹配),还是「纯 OCR」(没有分类模型,只能用 ItemTransferFindItemWithOCR 按中文名识别)。
把这两个信息给 AI 后,AI 会按第二部分的流程自动完成剩下的写入。
以下是交给 AI 的执行流程,用户可忽略。Agent 在收到用户「新增某物品」的请求时,按步骤执行。
在开始前,确保用户已经:
assets/data/ItemTransfer/item_order.json 的 category_order.<category> 里把新增物品的中文名插到了正确位置。若用户没有完整写明具体物品,使用 git diff 查看 assets/data/ItemTransfer/item_order.json,确认新增物品都有哪些。
如果任一信息缺失,必须先向用户确认,不要擅自猜测。
注意:item_order.json 里的 items 字段是识别模型的真实 class ID 表,由开发者维护,Agent 不要新增或修改 items 条目。
items 里有对应条目:Agent 需要用该中文 name 在 items 里反查出数字 key,作为下文模板里 <Id>(expected / target_class)的值。items 里查不到该物品、但用户仍坚持「可识别」,必须停下来提示用户:该物品当前模型没有类别,只能用「纯 OCR」,请用户改口后再继续。items,也不需要任何数字 ID。Agent 只处理用户本次明确指定的新增物品,不要横向扫描 category_order / ItemTransfer.json / locale 文件做"一致性比对"。
category_order 里存在一些条目本来就不在 items 里、不在 assets/tasks/ItemTransfer.json 的 option.WhatToTransfer.cases 里。这是有意为之,不是遗漏。assets/locales/interface/en_us.json 以及 zh_cn.json,搜索该物品所属类别下已有的命名风格(例如 item.CupriumOre、item.AmberRice、item.AketinePowder)。item.<EnglishPascalCase>。
*Ore、瓶 = *Bottle、块 = 词根本身、粉末 = *Powder、种子 = *Seed、装备原件 = *Component、零件 = *Part、电池 = LC/SC/HC 容量前缀 + *Battery 等)。item.LCValleyBattery),准备五种语言的翻译:
zh_cn — 中文简体(等于 item_order.json 里的 name)。zh_tw — 中文繁体。en_us — 英文。ja_jp — 日文。ko_kr — 韩文。category_order 的位置,写入 5 个 locale 文件对 assets/locales/interface/ 下的 5 个文件(zh_cn.json、zh_tw.json、en_us.json、ja_jp.json、ko_kr.json)执行相同的插入:
assets/data/ItemTransfer/item_order.json 的 category_order.<category>,找到新增物品在数组里的前一项与后一项。item.* key(例如前一项是「赤铜瓶」→ 搜 "item.CupriumBottle":)。item.* key 上方,插入新增物品的键值对:
"item.<EnglishPascalCase>": "<该语言的译名>",
💡 locale 文件里
item.*的顺序与category_order严格一致,插入时务必按这个顺序;不要随意追加到末尾。
category_order 的位置,写入 assets/tasks/ItemTransfer.jsonoption.WhatToTransfer.cases 里,搜索前一项的 "name": "<前一项中文名>",定位到它的 case 对象。} 后、后一项 case 的 { 前,插入新增物品的 case 对象。category_order 自然就能推导出插入点(类别的所有项在 cases 里是连续成段的)。根据用户告知的「识别方式 + 排序方向」组合,选对应的模板。四个模板如下。占位符含义:
<Name> — 物品中文名(和 item_order.json 的 name、以及 category_order 里的字符串完全一致)。<LabelKey> — 步骤 1 确定的英文字段名(例如 CupriumOre),label 写成 "$item.<LabelKey>"。<Category> — Ore / Plant / Product / Usable,首字母大写,对应 template 的文件名 ItemTransfer/<Category>.png。<Id> — item_order.json 里该物品的数字 ID。只有「可识别」模板才需要 <Id>,「纯 OCR」模板用不到。蓝铁矿){
"name": "<Name>",
"label": "$item.<LabelKey>",
"pipeline_override": {
"ItemTransferClickItemCategory": {
"template": "ItemTransfer/<Category>.png"
},
"ItemTransferFindItemInRepo": {
"expected": <Id>
},
"ItemTransferFindItemInBag": {
"expected": <Id>
},
"ItemTransferFindItemInBagReturn": {
"expected": <Id>
},
"ItemTransferFindItemFallback": {
"custom_action_param": {
"target_class": <Id>
}
},
"ItemTransferFindItemFallbackBag": {
"custom_action_param": {
"target_class": <Id>
}
},
"ItemTransferFindItemFallbackBagReturn": {
"custom_action_param": {
"target_class": <Id>
}
}
}
}
源矿){
"name": "<Name>",
"label": "$item.<LabelKey>",
"pipeline_override": {
"ItemTransferClickItemCategory": {
"template": "ItemTransfer/<Category>.png"
},
"ItemTransferFindItemInRepo": {
"expected": <Id>
},
"ItemTransferFindItemInBag": {
"expected": <Id>
},
"ItemTransferFindItemInBagReturn": {
"expected": <Id>
},
"ItemTransferRepoToBag": {
"next": [
"ItemTransferClickSortDescending",
"ItemTransferClickItemCategory",
"ItemTransferFindItemInRepo",
"ItemTransferScrollDownwardRepo"
]
},
"ItemTransferFindItemFallback": {
"custom_action_param": {
"target_class": <Id>,
"descending": true
}
},
"ItemTransferFindItemFallbackBag": {
"custom_action_param": {
"target_class": <Id>
}
},
"ItemTransferFindItemFallbackBagReturn": {
"custom_action_param": {
"target_class": <Id>
}
}
}
}
赤铜瓶){
"name": "<Name>",
"label": "$item.<LabelKey>",
"pipeline_override": {
"ItemTransferClickItemCategory": {
"template": "ItemTransfer/<Category>.png",
"next": [
"ItemTransferFindItemWithOCR"
]
},
"ItemTransferRepoToBag": {
"next": [
"ItemTransferClickSortAscending",
"ItemTransferClickItemCategory",
"ItemTransferFindItemWithOCR"
]
},
"ItemTransferBagToRepo": {
"next": [
"ItemTransferFindItemWithOCRBag"
]
},
"ItemTransferBagToOriginRepo": {
"next": [
"ItemTransferFindItemWithOCRBagReturn"
]
},
"ItemTransferFindItemWithOCR": {
"custom_action_param": {
"item_name": "<Name>"
}
},
"ItemTransferFindItemWithOCRBag": {
"custom_action_param": {
"item_name": "<Name>"
}
},
"ItemTransferFindItemWithOCRBagReturn": {
"custom_action_param": {
"item_name": "<Name>"
}
}
}
}
赤铜块){
"name": "<Name>",
"label": "$item.<LabelKey>",
"pipeline_override": {
"ItemTransferClickItemCategory": {
"template": "ItemTransfer/<Category>.png",
"next": [
"ItemTransferFindItemWithOCR"
]
},
"ItemTransferClickSortDescending": {
"next": [
"ItemTransferClickItemCategory",
"ItemTransferFindItemWithOCR"
]
},
"ItemTransferRepoToBag": {
"next": [
"ItemTransferClickSortDescending",
"ItemTransferClickItemCategory",
"ItemTransferFindItemWithOCR"
]
},
"ItemTransferBagToRepo": {
"next": [
"ItemTransferFindItemWithOCRBag"
]
},
"ItemTransferBagToOriginRepo": {
"next": [
"ItemTransferFindItemWithOCRBagReturn"
]
},
"ItemTransferFindItemWithOCR": {
"custom_action_param": {
"item_name": "<Name>",
"descending": true
}
},
"ItemTransferFindItemWithOCRBag": {
"custom_action_param": {
"item_name": "<Name>"
}
},
"ItemTransferFindItemWithOCRBagReturn": {
"custom_action_param": {
"item_name": "<Name>"
}
}
}
}
注意:"升序 / 降序"只适用于仓库查找这一个环节,模板里对应
ItemTransferFindItemWithOCR(纯 OCR)或ItemTransferFindItemFallback(可识别)。只有它需要写"descending": true。 其他*Bag/*BagReturn分支(背包、背包回放)没有升降序的概念,模板里就是不写descending字段,按模板原样照抄即可。不要把这种"只有一个地方带 descending"视为不一致或漏写,这是现有所有条目的统一写法。
<Name> / <LabelKey> / <Category> / <Id>。assets/tasks/ItemTransfer.json 没有语法错误(所有大括号/中括号/逗号匹配)。完成后,Agent 必须逐项确认:
assets/data/ItemTransfer/item_order.json 的 category_order.<category> 已包含新物品,且位置和游戏内肉眼观察顺序一致。item_order.json 的 items 字段(那是模型类别表,只由开发者维护)。<Id> 是从现有 items 里按中文 name 反查到的真实 class ID,不是自己编的。zh_cn / zh_tw / en_us / ja_jp / ko_kr)里都新增了 item.<LabelKey> 条目,且顺序和 category_order 一致。assets/tasks/ItemTransfer.json 的 option.WhatToTransfer.cases 里新增了该物品的 case,位置正确、模板选对(识别方式 × 排序方向 = 4 选 1)。<Category> 对应的 template 文件 ItemTransfer/<Category>.png 写法与同类别其他条目一致。若任何一项没通过,先修复再回复用户。回复用户时,简要说明改了哪几个文件、新增物品落在哪个位置、用了哪个模板,让用户二次确认游戏内顺序是否和代码里一致。