Skip to main content

item-transfer

仅当用户明确要求往「🐌库存转移 / 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、纯咨询"库存转移能搬什么"。

Quellinformationen

Repository
isHarryh/MaaEnd
Letzte Quellaktivität
15. Juli 2026 um 17:41
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
2
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
item-transfer
description
仅当用户明确要求往「🐌库存转移 / 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 新增物品指南 本指南用于在「🐌库存转移(ItemTransfer)」任务中新增一个可选择的物品。整体流程分为两个部分:**第一部分是用户要做的事**,**第二部分是交给 AI 执行的事**。 --- ## 第一部分:用户操作步骤(Agent 跳过此部分) > 这一部分是用户需要亲自在游戏里确认并在 JSON 中填好的内容,AI 不会替你判断。 ### 1. 在游戏内确定物品在仓库中的排列顺序 1. 打开游戏内的仓库界面,切到物品对应的分页(矿物 / 植物 / 产物 / 可用道具)。 2. 排序方式与游戏默认一致(默认按升序看一遍,**从左到右、从上到下**记录下所有物品的顺序)。 3. 找到新增的物品在该分页里的位置,确认它**前后是哪一个物品**。 ### 2. 把新增物品的中文名插入 `assets/data/ItemTransfer/item_order.json` 的 `category_order` - **用户只需要改 `category_order`,不要动 `items` 字段。** `items` 里的数字 key 是识别模型的真实 class ID,由开发者在重训模型时统一维护,用户没法也不应该自己编一个。 - 在 `category_order.<category>`(`Ore` / `Plant` / `Product` / `Usable` 四选一)数组里,把新增物品的**中文名**按第 1 步游戏里观察到的位置**插入到正确的位置**。 - 前一个是谁、后一个是谁必须和游戏里完全一致。 - 中文名要和游戏里显示的完全一致,不要加空格或改字。 > ⚠️ `category_order` 里的顺序,是后续 OCR 滚动识别和 **locales / ItemTransfer.json 插入顺序**的唯一权威来源,必须和游戏里肉眼看到的顺序一致。 ### 3. 告诉 AI 两件事 请在向 AI 下达任务时,明确告诉它以下两点,否则 AI 无法选对模板: - **识别方式**:这个物品是「**可识别**」(有训练好的分类模型,用 `ItemTransferFindItemInRepo` 的 `expected` / `target_class` 匹配),还是「**纯 OCR**」(没有分类模型,只能用 `ItemTransferFindItemWithOCR` 按中文名识别)。 - 一般新物品、模型没来得及训的物品用「纯 OCR」。 - 老物品、有分类 ID 的用「可识别」。 - **排序方向**:这个物品在升序排列下靠前,就用「**升序**」;在升序下非常靠后、但在降序下靠前,就用「**降序**」。 - 目的是让 OCR 滚动查找从近端开始,减少滚动距离。 把这两个信息给 AI 后,AI 会按第二部分的流程自动完成剩下的写入。 --- ## 第二部分:AI 执行步骤(仅供 Agent 阅读) > 以下是交给 AI 的执行流程,用户可忽略。Agent 在收到用户「新增某物品」的请求时,按步骤执行。 ### 前置条件 在开始前,确保用户已经: 1. 在 `assets/data/ItemTransfer/item_order.json` 的 `category_order.<category>` 里把新增物品的**中文名**插到了正确位置。 2. 明确告知该物品是「可识别 / 纯 OCR」以及「升序 / 降序」。 若用户没有完整写明具体物品,使用 `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」,请用户改口后再继续。 - 如果用户选「纯 OCR」,则 Agent 完全不需要读 `items`,也不需要任何数字 ID。 ### 作用域约束 **Agent 只处理用户本次明确指定的新增物品**,不要横向扫描 `category_order` / `ItemTransfer.json` / locale 文件做"一致性比对"。 - `category_order` 里存在一些条目**本来就**不在 `items` 里、不在 `assets/tasks/ItemTransfer.json` 的 `option.WhatToTransfer.cases` 里。这是**有意为之**,不是遗漏。 - 发现这些"差异"时,**不要去汇报、不要去修复、不要追问用户**。只要专注完成本次用户点名的那几个物品的写入即可。 ### 步骤 1:查找物品的英文字段名(label 的 i18n key) 1. 读取 `assets/locales/interface/en_us.json` 以及 `zh_cn.json`,搜索该物品所属类别下已有的命名风格(例如 `item.CupriumOre`、`item.AmberRice`、`item.AketinePowder`)。 2. 根据游戏内已发布的英文名 / 日文名 / 韩文名 / 繁中名,确定该物品的规范字段名 `item.<EnglishPascalCase>`。 - 命名参考已有条目的风格(矿 = `*Ore`、瓶 = `*Bottle`、块 = 词根本身、粉末 = `*Powder`、种子 = `*Seed`、装备原件 = `*Component`、零件 = `*Part`、电池 = `LC/SC/HC` 容量前缀 + `*Battery` 等)。 - 如果查不到官方翻译,优先使用语义合理的英文 PascalCase 名,并在回复里告诉用户「我这里用的名字是 xxx,如果官方译名不同请告诉我修改」。 3. 确定好字段名后(例如 `item.LCValleyBattery`),准备五种语言的翻译: - `zh_cn` — 中文简体(等于 `item_order.json` 里的 `name`)。 - `zh_tw` — 中文繁体。 - `en_us` — 英文。 - `ja_jp` — 日文。 - `ko_kr` — 韩文。 - 如果某种语言的官方译名暂时查不到,则直接对中文名进行翻译,并提示用户确认。 ### 步骤 2:按 `category_order` 的位置,写入 5 个 locale 文件 对 `assets/locales/interface/` 下的 **5 个文件**(`zh_cn.json`、`zh_tw.json`、`en_us.json`、`ja_jp.json`、`ko_kr.json`)执行相同的插入: 1. 读取 `assets/data/ItemTransfer/item_order.json` 的 `category_order.<category>`,找到新增物品在数组里的**前一项**与**后一项**。 2. 在 locale 文件中搜索前一项对应的 `item.*` key(例如前一项是「赤铜瓶」→ 搜 `"item.CupriumBottle":`)。 3. 在该行**下方**、后一项的 `item.*` key **上方**,插入新增物品的键值对: ```json "item.<EnglishPascalCase>": "<该语言的译名>", ``` 4. 保持缩进、引号、逗号与相邻行严格一致,不要破坏 JSON 结构。 > 💡 locale 文件里 `item.*` 的顺序与 `category_order` 严格一致,插入时务必按这个顺序;不要随意追加到末尾。 ### 步骤 3:按 `category_order` 的位置,写入 `assets/tasks/ItemTransfer.json` #### 3.1 找到插入位置 1. 在 `option.WhatToTransfer.cases` 里,搜索前一项的 `"name": "<前一项中文名>"`,定位到它的 case 对象。 2. 在该 case 对象的 **闭合 `}`** 后、后一项 case 的 **`{`** 前,插入新增物品的 case 对象。 3. 如果新增物品是类别里的第一项或最后一项,按 `category_order` 自然就能推导出插入点(类别的所有项在 `cases` 里是连续成段的)。 #### 3.2 选择模板 根据用户告知的「识别方式 + 排序方向」组合,选对应的模板。四个模板如下。占位符含义: - `<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」模板用不到。** --- ##### 模板 A:可识别 + 升序(参考:`蓝铁矿`) ```json { "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> } } } } ``` ##### 模板 B:可识别 + 降序(参考:`源矿`) ```json { "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> } } } } ``` ##### 模板 C:纯 OCR + 升序(参考:`赤铜瓶`) ```json { "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>" } } } } ``` ##### 模板 D:纯 OCR + 降序(参考:`赤铜块`) ```json { "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"视为不一致或漏写,这是现有所有条目的统一写法。 #### 3.3 插入 case 对象 1. 把选好的模板填入实际的 `<Name>` / `<LabelKey>` / `<Category>` / `<Id>`。 2. 将填好的 case 对象插入到 3.1 定位到的位置。 3. 确保相邻 case 之间有且仅有一个逗号分隔,末尾最后一个 case 后无多余逗号。 4. 插入完成后,用 JSON 解析器检查 `assets/tasks/ItemTransfer.json` 没有语法错误(所有大括号/中括号/逗号匹配)。 ### 步骤 4:自检清单 完成后,Agent 必须逐项确认: - [ ] `assets/data/ItemTransfer/item_order.json` 的 `category_order.<category>` 已包含新物品,且位置和游戏内肉眼观察顺序一致。 - [ ] **没有**擅自修改 `item_order.json` 的 `items` 字段(那是模型类别表,只由开发者维护)。 - [ ] 如果用了「可识别」模板,`<Id>` 是从现有 `items` 里按中文 `name` 反查到的真实 class ID,不是自己编的。 - [ ] 5 个 locale 文件(`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` 写法与同类别其他条目一致。 - [ ] 所有 JSON 文件可以被正常解析,逗号 / 引号没写错。 若任何一项没通过,先修复再回复用户。回复用户时,简要说明改了哪几个文件、新增物品落在哪个位置、用了哪个模板,让用户二次确认游戏内顺序是否和代码里一致。
Auf GitHub ansehen