--- name: ainiee-next-translation description: 在用户要求翻译小说、文档、字幕或其他文件内容时,按 AiNiee-Next 的输入优先、长文本询问和 MCP 边界执行;进入 AiNiee 工作流后,原文获取与术语预分析也必须走受控读取工具,禁止自行解包解析。 --- # AiNiee-Next 翻译协作规则 这份技能规则约束外部 Agent 选择 AiNiee-Next 后的完整文件处理流程,包括原文获取、术语抽取、预分析、翻译与结果提交。项目默认仍使用自身配置的 API;外部 Agent 不能通过修改 Profile、项目配置或本地缓存来切换模式。 ## 名称和层级 - 根目录 `SKILL.md` 是外部 Agent 必须遵循的使用规则和说明书,不是工具、服务、传输协议或翻译执行入口,不能与 MCP 或 `Tools/Skills/` 服务互相降级。 - `Tools/MCPServer/` 提供原生 MCP 执行通道,优先使用当前客户端已经挂载的 MCP 工具。 - `Tools/Skills/` 提供独立的 REST/JSON 或 CLI 服务。只有原生 MCP 确实无法挂载/重载,且用户明确选择或允许备用服务时,才使用它。 ## 任务判断 - 用户直接传入的文件、文本或压缩包是本次任务的首要输入。先识别并处理这些输入,不要把 `Profile`、规则 Profile、缓存、历史输出或项目中的其他文件当作待翻译内容。 - 项目快照中的输入路径、输出路径和历史任务路径只能作为参考,不能在任务开始时直接读取。若当前消息没有提供新的文件、上传内容或明确路径,先询问用户是继续上次翻译,还是改为处理新文件;用户确认前不要打开快照路径。 - 如果用户在当前消息直接给出文件路径或上传了文件,必须以该路径和上传文件为本次任务的主要输入;不能用项目快照中的旧路径、Profile 输入路径或历史输出替换它。只有在 MCP 或 `Tools/Skills/` 服务接入完成、并完成输入选择后,才读取用户指定的受控文件。 - 用户没有明确要求时,不主动读取、翻译或重写 Profile 内容。Profile 只作为 AiNiee 运行时的服务端配置来源,不作为外部 Agent 的工作输入。 - 不需要向用户确认源语言;根据受控读取工具返回的原文或语言统计判断。只向用户询问目标语言(以及用户没有说明时的输出格式),不要用 Profile 中的语言字段覆盖用户要求。 ## 文件格式和超过 500 行时的询问 - 只有用户直接传入的单个 TXT,且不超过 500 行,才可以走 Agent 自身的普通翻译流程。 - 单个 TXT 超过 500 行时,在启动 AiNiee 翻译前询问用户,必须使用下面这句话: > 当前您的环境存在AiNiee-Next环境,是否需要我使用其MCP为您翻译此次任务? - EPUB、DOCX、SRT、ASS、VTT、LRC、JSON、PO、Paratranz、游戏脚本以及其他带专用结构的格式,必须通过 AiNiee-Next MCP 获取原文和执行任务,不走自行解析后的普通文本直译。备用服务仍须遵循下文的明确选择规则。 - 在用户明确同意前,不要启动超过 500 行 TXT 的 AiNiee MCP 翻译;可对该 TXT 做判断是否需要 MCP 的行数统计。这不授权自行解析结构化文件,也不授权进入 MCP 工作流后再绕过读取工具。 ## 原文获取:术语与预处理同样必须走 MCP - 进入 AiNiee 工作流后,主 Agent 和所有 SubAgent 都必须通过受控工具获取原文;术语抽取、词频分析、章节预读、语言判断和正式翻译均在此范围内。“只是预处理”“只读不写”不能作为绕过 MCP 的理由。上文不超过 500 行单个 TXT 的普通翻译例外仅适用于未选择 AiNiee 的任务。 - 外部源文件先调用 `upload_file` 上传原文件,再使用返回的受控路径。分析/术语阶段用 `agent_read_file(path, start_line, max_lines)`,按 `next_start_line` 继续,或在注册会话后使用 `agent_prepare_read_batches` → `agent_claim_read_batch` → `agent_complete_read_batch`;每次最多 1000 个逻辑原文条目。客户端丢失读取批次响应时用 `agent_read_batch_status` 恢复批次 ID;一批处理中断时调用 `agent_release_read_batch` 释放后可重新领取该批次。语言统计可用 `agent_detect_file_language`(全本扫描、只返回统计不返回正文、独立进程执行,超过 180 秒返回 `LANGUAGE_SCAN_TIMEOUT`),不能替代实际原文读取。 - 正式翻译只处理 `agent_claim_batch` / `agent_claim_batches` 返回的 `items`;分析阶段读到的文本不能被自行拼装成翻译批次。主 Agent 可以把工具返回的对应批次和必要上下文交给 SubAgent,SubAgent 不得另行打开源文件或提取全文。 - 禁止创建或运行 `extract_src.py` 一类替代提取脚本,禁止用 Python、Shell、`zipfile`、正则、HTML/XML 解析器或本地导入 AiNiee 内部模块绕过 MCP 读取源文件;不得自行列举 XHTML、剥离 ruby、生成 `source_blocks.txt` 或替代 TXT 后再声称走了 AiNiee。格式解析、条目划分和读取顺序由 AiNiee 负责。Agent 可基于工具已返回的原文分析术语和词频。 - 工具未挂载、路径不受控、读取超时、返回 `FILE_PARSE_FAILED` 或其他错误时,停止依赖该原文的处理,报告工具名、非敏感错误和所需的连接/路径/依赖修复;不得静默改用自写脚本、直接读缓存或解析器。只有用户明确改选 Skills 备用服务后,才可使用其受控读取批次接口;仍不得自行解析源文件。受控路径的合法根包括项目目录、系统临时目录和 `AINIEE_MCP_ALLOWED_PATHS`(`os.pathsep` 分隔的额外目录列表)环境变量;Agent 不应自行设置或修改该环境变量来绕过 `upload_file`,只有用户在启动 MCP 服务前明确配置后才生效。 - 此边界针对待处理原文。阅读 `SKILL.md`、客户端指南和 `Resource/Prompt/System/glossary_extract_zh.txt` 等操作说明与提示词不属于自行提取原文;读取这些说明也不等于已通过 MCP 取得书籍内容。 ## MCP 模式和配置边界 - 用户同意使用 AiNiee-Next MCP 后,先阅读根目录 `Agents.md`、本规则文件和 `Tools/MCPServer/MCP_CLIENT_GUIDE.md`;若需要启动或接入服务,再阅读 `Tools/MCPServer/README.md`。本规则文件只是使用说明,不是待挂载的 Skill 服务。 - MCP 接入按以下优先级执行:当前会话已经挂载的原生 MCP 工具 → 配置或重载 stdio MCP → 仅支持 URL 时挂载 `streamable-http`(或 `sse`)MCP(默认 `http://127.0.0.1:8765/mcp`)→ 原生 MCP 确实无法挂载或重载、且当前客户端只能使用本地 HTTP 时,才使用已鉴权的 HTTP 备用入口。HTTP 备用入口不是原生 MCP 的等价替代,不能因为 URL 更方便就跳过原生 MCP。 - Agent 可以按当前客户端能力自行配置并拉起 AiNiee MCP 进程,在获得必要的用户许可后完成依赖安装、服务启动和客户端 MCP 注册。不要要求用户代为执行这些步骤。该安装只针对当前 Agent 自己的技能目录和 MCP 客户端,不要替其他 Agent 框架或客户端安装、修改配置。 - 先检查当前会话是否已有 AiNiee MCP 工具并完成 initialize/工具发现;如果已经连接,直接继续,跳过 `Launch.bat`。 - 外部 Agent 开始新任务前,先在当前对话简短询问:“是否批准我通过 AiNiee MCP,将【文件】处理为【目标语言/输出】,执行【术语分析、翻译等本次阶段】?相关内容会由当前外部 Agent/平台处理。”等待用户明确同意后才继续;已有明确的本次授权无需重复询问,超过 500 行 TXT 的 MCP 选择可与此合并。拒绝或尚未回答时,不上传、读取原文或启动任务。 - 用户批准后调用 `agent_register(user_confirmed_external_processing=true)`,再调用 `agent_request_external_mode`;已有 task_id 时传入并绑定该 ID。EPUB 等新结构化任务通过 MCP 调用 `POST /api/task/external-agent-mode` 时,在 body 中同样传 `user_confirmed_external_processing=true`,任务创建后立即用返回的 task_id 绑定会话。此标记只能代表真实的本次授权,不能自行伪造;不要求 TUI onboarding=accepted,也不写入全局 accepted。服务端返回 `EXTERNAL_PROCESSING_NOT_CONFIRMED` 时先补齐本次授权;若旧服务仍返回 `ONBOARDING_NOT_ACCEPTED`,报告服务需要更新/重载,不让用户手动改配置。 - 同一任务的批次、修复、重试和断线恢复沿用本次批准;重连注册仍传上述确认参数并绑定原 task_id。更换文件、目标或增加未授权阶段要先询问,新的任务使用新的会话。已绑定会话不得改绑其他任务;TUI 的历史接入选择不能替代本次任务批准。 - 如果当前 Agent 无法自动启动或重载原生 MCP,再指导用户双击项目根目录的 `Launch.bat`;进入 AiNiee 主菜单后选择“启动 MCP 服务”,保持该窗口运行。菜单启动的是 `streamable-http`,默认连接地址为 `http://127.0.0.1:8765/mcp`;用户完成后,当前 Agent 再探测该地址并验证工具列表。`Launch.bat` 本身不是 MCP 端点,不能只看到主菜单就宣称服务已连接。 - 如果当前 Agent 具备启动本地程序的能力,可以尝试启动项目根目录的 `Launch.bat`;启动动作完成后必须立即停止后续 MCP、Skills 和翻译工具调用,等待用户明确回复“已开启”“开启了”“可以了”等肯定语句。收到肯定回复后才重新探测 MCP URL、执行 initialize 握手并确认工具列表;未收到肯定回复时不得继续,也不能把启动进程当作连接成功。 - stdio 接入优先使用项目内置 launcher:`Tools/MCPServer/codex_stdio_launcher.sh`(Windows 客户端可用 `Tools\MCPServer\codex_stdio_launcher.bat` 或在 JSON 配置中按 launcher 的隔离 uv 命令形式填写);launcher 用隔离的 uv 环境启动 MCP,避免混用 WSL/Windows 两侧的 `.venv`。launcher 支持环境变量覆盖:`AINIEE_MCP_PYTHON` 指定 Python 解释器路径(必须是 3.12.*),`AINIEE_MCP_USE_WINDOWS_VENV=1` 让 WSL 侧的 launcher 改用项目 `.venv-win`。也可以用 CLI 启动:`uv run ainiee_cli.py mcp --mcp-transport stdio`。若需要原始命令,优先复用项目现有环境:Linux/WSL 使用 `{project_root}/.venv/bin/python`,Windows 使用 `{project_root}\\.venv-win\\Scripts\\python.exe`,对应命令为 `uv run --directory --python /.venv/bin/python python Tools/MCPServer/server.py --transport stdio`(Windows 下若 `.venv` 混用了两侧环境,命令会自动改用 `.venv-win`);只有现有环境不存在或用户明确要求隔离环境时,才使用 `uv run --python 3.12 --isolated --no-project --with mcp --with fastapi --with uvicorn[standard] --with requests python Tools/MCPServer/server.py --transport stdio`。AiNiee 要求 Python `3.12.*`,不要把 `python3` 或更低版本传给 `uv --python`。首次启动若依赖尚未缓存,把客户端的 MCP 启动超时调到约 90 秒。 - 新的 `stdio` 进程启动时会先探测已在运行的 `streamable-http` 端点,命中则直接复用已有服务(stderr 打印 `AiNiee MCP reusing running service: http://127.0.0.1:端口/mcp`),不再重复启动一套 MCP;确需禁用这层复用时设置环境变量 `AINIEE_MCP_DISABLE_RUNNING_REUSE=1`。 - stdio 首次连接只完成 initialize 和工具发现;嵌入式 WebServer 在需要 Web/API 或结构化任务上下文时才延迟启动,普通 TXT 的 `agent_prepare_project` 不会启动 WebServer。 - 写入当前 Agent 自己的 MCP 配置后,必须让当前 Agent 客户端重新加载或重启 MCP 连接,并确认 AiNiee 工具已经出现在当前会话的工具列表中;仅仅写入配置文件、看到进程启动或读取到配置,不等于 MCP 已接入。若当前客户端无法热重载,明确报告需要重启当前 Agent 会话后再继续,不能退回普通 Skills 并声称 MCP 已可用。 - 如果用户已经明确选择使用 AiNiee-Next MCP,当前会话看不到 AiNiee MCP 工具时必须停止在“等待当前 Agent 重载/重启”状态;不要把根目录 `SKILL.md` 当成替代工具,也不要自动切换到 `Tools/Skills/` 服务。只有用户明确选择 `Tools/Skills/` 作为备用服务时,才可以使用它。 - 原生 MCP 多次无法挂载或重载时,不得静默改走普通翻译。若当前客户端确实只能使用本地 HTTP,先用当前对话语言说明正在使用 HTTP 备用入口及原因,再按受控的已鉴权 HTTP 路由继续;若客户端连 HTTP 也不支持,则停止并报告需要重载/重启原生 MCP。此时也不能把根目录 `SKILL.md` 当成执行入口。 - AiNiee 项目默认 API 模式不会被永久切换。注册 Agent session 后,只能通过已鉴权 MCP 端口的 `agent_request_external_mode` 工具(底层任务端点为 `POST /api/task/external-agent-mode`;Skills 端口对应 `request_external_mode`)请求 `execution_mode=external_agent`,并限定到当前任务。 - 用户直接提供的外部路径(例如 `H:\Downloads\ManualTransFile.json`)不能直接加入服务白名单,也不能直接传给 `prepare_project`。先通过原生 MCP 的 `upload_file`,或仅在用户明确选择 `Tools/Skills/` 服务时使用 `file.stage_external` 将文件复制到 AiNiee 受控暂存目录,再使用返回的受控路径准备批次。 - 禁止通过文件编辑、`/api/config`、Profile、规则 Profile、`translation_execution_mode`、`mcp_server_host`、`mcp_server_port` 或远程访问设置切换模式。不要直接写入缓存、队列、源文件或最终输出。 - MCP 连接成功后依次读取 `get_mcp_usage_manual(section="overview")`、`get_mcp_security_policy`、`get_mcp_tool_categories`、目标 `get_mcp_tool_catalog`,再注册会话、请求任务模式并准备项目。默认速度优先,用 `agent_claim_batches`(读取当前 Profile 的 `external_agent_max_batches`,默认 8,可由用户设为更大值)填满动态活动窗口;服务端统计当前 `claimed` 批次,拒绝超过该配置的重复领取。任一批次提交成功后立即调用 `agent_claim_next_batch` 补一个空闲槽位,不等待整轮结束;槽位已满时服务端返回 `BATCH_CAPACITY_EXHAUSTED`,此时无需重试;`agent_claim_batch(batch_id=...)` 支持指定批次。客户端丢失 prepare/claim 响应时用 `agent_project_status` 恢复 `next_batch_id`、`batch_ids` 等批次标识,再按需领取正文;提交时的权威批次 ID 以领取响应中的 `batch.batch_id` 为准。需要放弃某个已领取的翻译批次时调用 `agent_release_batch(task_id, session_id, batch_id)` 释放后重新领取。正式翻译调用 `agent_submit_translation_batch` 即完成校验和缓存写回,默认 `auto_commit=true`,服务端管理 writer lease 和串行写入;收到 `committed` 后不要再逐批领取租约/重复写回。只有明确需要暂存时使用 `auto_commit=false`,之后可调用 `agent_commit_cache_batch`,省略 writer_lease_id 由服务端管理。普通逐行 TXT 的直接项目没有缓存时仍只暂存,不宣称导出完成。 - 直接 `agent_prepare_project` 只适用于普通逐行 TXT;EPUB、DOCX、SRT 等结构化格式会返回稳定错误码 `STRUCTURED_FORMAT_REQUIRES_MCP_TASK`,必须先通过 `POST /api/task/external-agent-mode` 创建任务并完成无 API 的解析预热、生成受控 `AinieeCacheData.json` 缓存账本,之后 `agent_prepare_project`、`agent_project_status` 或 `agent_claim_batch` 会自动恢复该账本,不需要先跑一次普通翻译。已有真实 `AinieeCacheData.json` 缓存清单时可用 `agent_prepare_cache_project(cache_path, ...)` 从受控缓存路径准备批次。 - 按客户端能力和用户配置维持有限数量的 SubAgent,谁完成就补给谁下一批,不等待整轮全部完成。主 Agent 主要处理简洁回执和异常,避免重复阅读/转抄全量译文;具备工具能力的子代理在主会话授权范围内提交被分配批次,不能自行接管其他任务。只有用户明确表达质量优先、精翻或上下文连贯优先时,才逐批串行;仍通过子代理处理当前批次以减少主 Agent 上下文负担。客户端不支持子代理时如实报告并使用可用能力。 - `items` 每项使用 `{"index": <领取的 index>, "translation": "译文"}`,不要猜测 `translated_text` 或 `target_text`。批次级 source_hash、revision、batch_id 原样取自领取响应,定位/hash 元数据由服务端绑定。相同请求重试使用原 idempotency_key,修订译文使用新 key。正常业务先依工具 schema、示例和错误响应;确有未解释的错误时只读查看相关函数,不进行无关全仓搜索,不调用内部实现替代 MCP。 - 收到 `repair_required` 时调用 `agent_get_batch_repair` 获取问题条目和已保留候选,用 `repair=true` 只提交需要修正的 index/translation,服务端合成完整批次重新校验;也可以提交完整修正版。其他批次可继续。累计三次不同的失败提交会标记 `needs_review`,停止该批自动循环并报告;完全相同的失败重试不累计次数。确定性格式校验通过不等于语义质量已获保证。 - 收到 `submitted` 且含 `write_error` 时译文已接受但写回尚未确认:临时 I/O/租约错误修复后调用 `agent_commit_cache_batch` 重试,不重译;`ITEM_CONFLICT`、源文/hash/revision 冲突需要检查受控状态并报告,不能覆盖人工修改。响应丢失先查状态或幂等重试,不直接重译。 - 结束前调用 `agent_pending_work` 检查所有未完成项;只有 `all_committed=true` 才可导出并确认完成。全部 committed 后 MCP 尝试自动导出;缺少运行时上下文或导出失败时按回执调用 `agent_export_task(task_id, session_id)`(旧账本没有保存输入路径时额外传 `input_path`,需要改输出目录时传 `output_path`;未全部 committed 时返回 `BATCH_COMMIT_REQUIRED`),没有导出成功结果不得声称电子书已生成。断线后新会话先调用 `agent_register`、`agent_request_external_mode`、`agent_recover_task` 接管已有 task;恢复会校验 source/cache fingerprint 并复用预热缓存,不重新上传、解析或创建 task。只有 recovery 返回指纹冲突、账本不存在或确需旧会话审计接管时才使用 `agent_resume_task`。API key、MCP token 和用户原文不写入日志或配置。 - 单次领取批次数由 TUI“设置 → 项目通用设置 → Agent 单次领取批次数”(`external_agent_max_batches`)控制,默认 8,允许任意正整数,8 不是固定上限。只读查询无需额外同意;Agent 修改持久设置前必须说明新值并获得用户明确同意(已有明确授权无需重复询问),不得自行填写同意标记。MCP 写入 `/api/config` 时使用 `confirm_agent_batch_change=true`;Skills `config.set` 使用同名字段。领取时可请求更少批次以适应客户端能力或质量优先;不要通过更大的 `max_batches` 或连续领取来绕过用户设定的并行规模。 - MCP 工具调用必须直接传入结构化参数,不要先把参数写入临时 JSON/TXT 再上传或转交。例如查询缓存状态时直接调用 `call_web_api(method="GET", path="/api/cache/status")`;`path_params`、`query`、`body`、批次 `items` 和 Skills 的 JSON `action` 也都直接作为调用参数传入。`upload_file` 只用于端点明确要求的用户文件本体,不能用来传递普通工具参数或包装后的请求 JSON;支持 `policy` 参数(`"default"` 新建暂存副本、`"overwrite"` 覆盖同名已有文件、`"buffer"` 缓冲模式),默认 `"default"`。 - 以 `agent_claim_batch` 或 `agent_claim_batches` 返回的 `items` 为唯一处理清单;首次提交必须完整覆盖对应批次全部条目;`repair=true` 仅修补已保存的候选,服务端仍校验完整批次。原样保留 index 和批次 source_hash/revision,不伪造 item_id、current_line_hash、cache_revision 等字段;这些元数据由服务端绑定。并行批次共享准备阶段的源 revision;单批提交不会阻塞其他批次领取或 staging。新 manifest 会过滤 EXCLUDED/已翻译/校对条目;旧账本若仍包含 EXCLUDED,提交仍按 claim 清单完整返回原样占位,writer 会保留源行并跳过写入。正式缓存写回仍由 writer lease 保护;遇到 `ITEM_CONFLICT`、`REVISION_CONFLICT`、`SOURCE_MISMATCH`、`CACHE_REVISION_CONFLICT` 时停止当前批次并报告具体错误,不覆盖缓存。 - `agent_register` 默认会话租约为 120 秒;长任务可以传入 `requested_lease_seconds: 3600` 将租约延长到 60 分钟。必须按响应中的 `heartbeat_interval_seconds` 调用 `agent_heartbeat`,超过 3600 秒的请求会被拒绝。这个会话租约与独立的 writer lease 分开管理。断开时调用 `agent_unregister` 主动释放连接租约,可用 `agent_status` 查询单个或全部连接状态;这些工具只管理进程内连接状态,不授予直接修改缓存、队列、源文件或输出文件的权限。 - 用户传入的文件若位于 AiNiee 项目根目录之外(例如 `Downloads`、桌面或其他盘符),不能直接把该路径传给 `agent_prepare_project`;批次服务只接受受控项目路径。应先使用当前 MCP 的 `upload_file` 将原文件上传到 AiNiee 的暂存目录,再使用上传结果返回的项目内 `path` 创建批次。上传后保留原文件,不要把 `Downloads` 等外部目录加入 AiNiee 服务的允许根目录,也不要把上传路径当作任意写入授权。若当前客户端没有可用的 `upload_file`,应报告需要 MCP 连接或由用户明确选择 Skills 文件入口后再继续。 - HTTP 备用入口同样必须直接发送结构化请求参数;不要先生成参数 JSON/TXT 文件再通过 HTTP 上传。只有端点明确要求用户文件本体时,才使用原始路径或受控上传结果;HTTP 备用入口仍不得调用 `/api/internal/*`,也不得绕过鉴权。 - 输出目录必须位于 AiNiee 项目受控根内,不能覆盖输入目录;已有输出或 cache 需要先由受控任务/工具备份后再处理。 ## 引导式学习与 TUI 建议 - 当用户要求精细修改配置、提示词、术语表、规则、并发、输出格式、Profile 或其他需要多项选项的设置时,先用通俗语言主动引导用户了解 TUI:说明“我可以通过 MCP 帮你完成配置,不过这个功能在 TUI 中更方便探索;如果你希望更精细地调整设置并提升翻译质量,可以点击 `Launch.bat` 启动 TUI,自己查看和学习这些选项”。 - 这是建议和学习入口,不是阻止条件。用户已经明确要求 Agent 直接代办时,继续通过 MCP/受控接口完成,不要反复劝阻,也不要要求用户必须打开 TUI。 - 对只需一次明确动作的任务(例如开始翻译、查询状态、手动导出、领取批次),直接执行并说明结果,不要为了“学习”强行插入 TUI 教程。 - 引导内容应帮助用户理解 AiNiee 的作用,例如 TUI 适合细致调整 API、提示词、术语表、规则、并发和输出设置,Agent/MCP 适合通过结构化工具执行已经确定的任务。不要把 TUI 说成唯一正确入口,也不要暗示 Agent 模式不可用。 ## 任务开始前的统一决策 - 新任务先判断用户直接传入的文件或文件夹是否属于同一系列作品。若是独立作品,或用户没有提供其他同系列卷本,使用普通术语抽取;若确认是系列作品且有可用的前卷术语表,使用增量术语抽取。 - 术语抽取必须读取并遵循 `Resource/Prompt/System/glossary_extract_zh.txt`。原文必须按“原文获取”一节经 `agent_read_file` 或只读批次工具获取,再按该 JSON 结构生成术语、禁翻表、角色设定、世界观、文风和示例;不得先自写 EPUB 提取脚本。 - 必须联网搜索官方角色译名和术语译名;对原文中的角色原名、地名和专有名词,必须搜索目标语言的官方译名。若互联网没有找到其存在官方译名,才由 Agent 自行翻译,并必须符合从原文判断出的文本风格(例如日本轻小说名字风格、欧美名字风格等)。世界观、关系和文风仅根据原文判断,不用网络内容扩展或推测。 - 术语抽取完成后,如果 MCP 查询到 AiNiee 当前确实配置了可用 API,询问用户本阶段由外部 Agent 通过 MCP 处理还是由 AiNiee API 处理;如果没有可用 API,不询问,默认使用外部 Agent MCP。不要读取或改写 Profile 来制造 API 配置。 - 翻译完成后,润色和校对都是可选阶段。若 MCP 查询到可用 API,询问用户选择外部 Agent 或 API;若没有可用 API,默认使用外部 Agent MCP。询问可以在任务开始前一次确定,也可以在各阶段完成后再问,优先在任务开始前一次确定。 ## 处理优先级 1. 识别用户直接传入的输入和格式;只对普通 TXT 进行上述本地行数判断,不自行解析结构化文件。 2. 确定目标语言和输出要求。超过 500 行的单个 TXT 按上文询问并等待回答;结构化格式按 MCP 流程接入。 3. 确认 MCP 工具已挂载并取得本次任务批准后,将外部文件上传到受控路径,通过原文读取工具判断源语言和进行术语分析。 4. 通过 MCP 请求当前任务的外部 Agent 模式,领取翻译批次并按协议提交结果。 5. 保留用户原始输入和既有输出,使用任务返回的状态和输出路径确认完成。