{
    "agents.add":  "+ 添加子智能体",
    "agents.desc":  "描述",
    "agents.descPh":  "展示给模型的用途说明",
    "agents.effort":  "模型 effort",
    "agents.effortCustom":  "自定义 effort",
    "agents.effortDefault":  "（默认）",
    "agents.effortHint":  "留空使用 provider/model 默认推理强度；也可选择常用 low / medium / high，或填写 provider 支持的自定义 effort。回退链格式为 provider/model@effort。",
    "agents.effortPh":  "如 xhigh",
    "agents.fallbackCount":  "回退 {n} 个",
    "agents.fallbacks":  "独立回退模型",
    "agents.fallbacksHint":  "主模型失败时按顺序重启该角色；聚焦输入框可从已配置的 provider/model 快捷选择；留空则不启用角色级回退。不会读取全局 HA 备用链。",
    "agents.fallbacksLoading":  "正在读取可用模型…",
    "agents.fallbacksNoMatch":  "没有匹配的 provider/model",
    "agents.fallbacksPh":  "provider/model@effort，逗号分隔，如 openai/gpt-4o@high, ollama/qwen2.5@low",
    "agents.emptyHint":  "点击「+ 添加子智能体」手动创建，或用「智能新增」从一句话需求生成",
    "agents.emptyTitle":  "暂无自定义子智能体",
    "agents.errBusy":  "当前会话正忙（智能体未空闲），请稍后再试",
    "agents.errGenFailed":  "生成失败（{status}），请重试或缩短需求描述",
    "agents.errNoAgent":  "没有可用的 Agent 上下文",
    "agents.errParse":  "未能解析模型输出，请重试。原始输出：{out}",
    "agents.errRequire":  "需求描述不能为空",
    "agents.gen":  "智能新增",
    "agents.genFieldDesc":  "\"description\": \"一句话中文描述，展示给编排模型看，说明该子智能体的职责\"",
    "agents.genFieldModel":  "\"model\": \"可选，可留空表示继承默认\"",
    "agents.genFieldName":  "\"name\": \"英文标识，2-20 字符，如 reviewer、critic、planner\"",
    "agents.genFieldProvider":  "\"provider\": \"可选，可留空表示继承默认；可用 provider：{providers}\"",
    "agents.genFieldSp":  "\"systemPrompt\": \"该子智能体的系统提示词（{lang}，80 字以内，说明角色与输出要求）\"",
    "agents.genIntro":  "你是一个子智能体配置生成器。用户需求：",
    "agents.genLang":  "中文",
    "agents.genModelHint":  "，当前默认模型：{model}",
    "agents.genSuffix":  "。请生成一个子智能体定义，只输出一个 JSON 对象（不要 markdown 代码块、不要任何其他文字），字段：",
    "agents.model":  "模型",
    "agents.name":  "名称*",
    "agents.namePh":  "如 reviewer",
    "agents.provider":  "模型 provider",
    "agents.req":  "需求*",
    "agents.reqPh":  "描述你想要的新子智能体，如：资深前端设计师，擅长 React 组件评审与 UX 改进；或：数据分析师，负责统计口径与图表解读",
    "agents.sp":  "系统提示词",
    "agents.spPh":  "子智能体的系统提示词（persona），如：你是一名资深代码审查员……",
    "agents.subtitle":  "可复用的编排角色：名称 / 模型 / 系统提示词",
    "agents.title":  "自定义子智能体",
    "agents.toolsAllow":  "工具白名单",
    "agents.toolsDeny":  "工具黑名单",
    "agents.toolsPh":  "逗号或空格分隔，如 read, web_fetch",
    "agents.toolsHint":  "白名单/黑名单任一非空即生效（provider 不支持时自动忽略）。工具名必须与宿主注册名完全一致。",
    "agents.toolsHostList":  "宿主可用工具：{names}",
    "common.add":  "添加",
    "common.cancel":  "取消",
    "common.clear":  "清空",
    "common.defaultInherit":  "（默认/继承）",
    "common.defaultModel":  "默认模型",
    "common.delete":  "删除",
    "common.edit":  "编辑",
    "common.emptyGenerate":  "生成结果为空，请重试",
    "common.enable":  "启用",
    "common.generate":  "生成",
    "common.generating":  "生成中…",
    "common.loading":  "加载中…",
    "common.loadingModelList":  "加载模型列表…",
    "common.loadingModels":  "加载模型…",
    "common.none":  "（无）",
    "common.noneYet":  "（暂无）",
    "common.moveDown":  "下移",
    "common.moveUp":  "上移",
    "common.refresh":  "刷新",
    "common.requiredName":  "名称必填",
    "common.save":  "保存",
    "common.selectModel":  "选择模型…",
    "common.unknown":  "未知",
    "common.unnamed":  "（未命名）",
    "ctx.custom":  "注入内容",
    "ctx.customHint":  "自定义后完全按你的内容注入（原文保留，不翻译）；留空则注入默认的自动编排引导",
    "ctx.evalCustom":  "自定义内容",
    "ctx.evalDefault":  "默认编排引导",
    "ctx.evalEmpty":  "无内容",
    "ctx.evalNone":  "尚未求值",
    "ctx.evalOff":  "已关闭",
    "ctx.hint":  "向系统提示词注入插件上下文（默认自动编排引导，可自定义）；关闭后模型不会获得这些提示",
    "ctx.injectSubagents":  "同时注入子智能体",
    "ctx.injectSubagentsHint":  "开启后子智能体也会获得同一段插件上下文；默认关闭，避免子代理再发起层层编排",
    "ctx.lastEval":  "最近注入",
    "ctx.status":  "注入状态",
    "ctx.statusFail":  "段落未注册：{reason}",
    "ctx.statusHint":  "提示词段落注册与实际注入情况（实时；重启后生效的注册发生在插件启动时）",
    "ctx.statusOk":  "段落已注册（order {order}）",
    "ctx.title":  "上下文注入",
    "debug.enabled":  "调试模式",
    "debug.enabledHint":  "记录内部事件到内存（上限 500 条）",
    "debug.logsCount":  "日志（{n} 条，最新在上）",
    "debug.noLogs":  "（暂无日志；开启调试模式后自动记录）",
    "debug.persist":  "配置持久化",
    "debug.saved":  "已保存 → {path}",
    "debug.show":  "显示开发调试卡片",
    "debug.showHint":  "排查插件内部事件时开启，默认隐藏",
    "debug.subtitle":  "内部事件日志（开启后记录）",
    "debug.title":  "开发调试",
    "debug.writeFailed":  "写入失败: {error}",
    "diag.available":  "可用",
    "diag.configLoaded":  "配置已加载",
    "diag.cursors":  "游标（{n}）",
    "diag.failures":  "失败计数（{n}）",
    "diag.ha":  "HA 状态",
    "diag.haState":  "HA 状态已恢复",
    "diag.injection":  "上下文注入",
    "diag.lang":  "语言",
    "diag.missing":  "缺失",
    "diag.no":  "否",
    "diag.noRuns":  "暂无运行记录",
    "diag.persist":  "配置持久化",
    "diag.persistFail":  "失败",
    "diag.probes":  "探测记录（{n}）",
    "diag.runs":  "最近运行（{n}）",
    "diag.runAborted":  "已中止",
    "diag.runOk":  "完成",
    "diag.runPartial":  "部分失败",
    "diag.runTasks":  "{n} 个子任务",
    "diag.runTruncated":  "完成（输出截断）",
    "diag.subtitle":  "HA 运行态 / 失败计数 / 游标 / 探测 / 最近运行",
    "diag.title":  "诊断",
    "diag.yes":  "是",
    "ha.addFromConfig":  "+ 添加备用模型（从配置读取）",
    "ha.advanced":  "高级设置",
    "ha.advancedHint":  "高级参数，通常保持默认值即可",
    "ha.backupList":  "备用模型（按序轮换，冷却后自动恢复）",
    "ha.backupN":  "备用 {n}",
    "ha.burstWindow":  "突发窗口（毫秒）",
    "ha.burstWindowHint":  "窗口内多次失败才计入阈值，超出窗口计数重置；0 = 关闭",
    "ha.circuitClosed":  "熔断解除：{key}（{reason}）",
    "ha.circuitOpened":  "熔断开启：{key}（{level}）",
    "ha.cmdDesc":  "查看/重置模型高可用状态，手动触发探测恢复",
    "ha.codes":  "回退错误码",
    "ha.codesHint":  "留空 = 全部错误码回退",
    "ha.cooldown":  "隔离冷却(ms)",
    "ha.cooldownHint":  "毫秒；到期自动恢复",
    "ha.currentDefault":  "当前默认模型",
    "ha.degrade":  "上下文超长降级",
    "ha.degradeHint":  "CONTEXT_WINDOW_EXCEEDED 时去掉 reasoningEffort 重试原模型；关闭时不切备用，交给平台压缩处理",
    "ha.emptyHint":  "尚未配置备用模型：模型故障时无法自动切换。可点击「推荐备份」快速添加。",
    "ha.emptyTitle":  "尚未配置备用模型",
    "ha.persist":  "持久化选择",
    "ha.phEffort":  "effort(可选)",
    "ha.phLabel":  "标签",
    "ha.phModel":  "model",
    "ha.phProvider":  "provider",
    "ha.pickBackup":  "选择备用模型",
    "ha.probe":  "冷却后探测恢复",
    "ha.probeFail":  "探测失败：{provider}/{model}（{reason}）",
    "ha.probeHint":  "冷却到期后用小成本调用验证模型可用性，恢复后自动解除隔离",
    "ha.probeOk":  "探测通过：{provider}/{model}",
    "ha.probeUsage":  "用法：/ha probe <provider> <model>",
    "ha.providerThreshold":  "Provider 熔断阈值",
    "ha.providerThresholdHint":  "同一 provider 隔离的模型数达到该值后熔断整个 provider；0 = 关闭",
    "ha.quarantined":  "隔离中的模型（{n}）",
    "ha.recent":  "最近故障切换",
    "ha.recommend":  "推荐备份",
    "ha.reload":  "重新加载配置",
    "ha.reset":  "清除隔离与历史",
    "ha.resetDone":  "已清除隔离、失败计数、游标与历史",
    "ha.runBackup":  "备用 {n} 个",
    "ha.runDisabled":  "模型高可用已停用",
    "ha.runEnabled":  "模型高可用已启用",
    "ha.runLast":  "最近切换: {from} → {to} ({code})",
    "ha.runLoading":  "HA Orchestrator 运行中…",
    "ha.runQuarantine":  "隔离 {n} 个",
    "ha.runtime":  "运行状态",
    "ha.statusCursors":  "游标（{n}）",
    "ha.statusDisabled":  "已禁用",
    "ha.statusEnabled":  "已启用",
    "ha.statusFailures":  "失败计数（{n}）",
    "ha.statusHead":  "HA 状态",
    "ha.statusHistory":  "切换历史（{n}）",
    "ha.statusProbes":  "探测记录（{n}）",
    "ha.statusQuarantine":  "隔离（{n}）",
    "ha.steer":  "停止后引导",
    "ha.steerText":  "[HA] 检测到模型调用失败，已自动切换备用模型，请继续完成当前任务。",
    "ha.subtitle":  "模型失败时自动回退到备用模型",
    "ha.suggestNone":  "暂无可用候选：检查 provider 与模型列表是否可用",
    "ha.thCode":  "原因",
    "ha.thFrom":  "从",
    "ha.thRemaining":  "剩余冷却",
    "ha.threshold":  "失败阈值",
    "ha.thTime":  "时间",
    "ha.thTo":  "到",
    "ha.title":  "模型高可用",
    "ha.unnamedBackup":  "（未命名备用）",
    "hero.activeRuns":  "{n} 个运行中",
    "hero.activeRunsLabel":  "活动编排",
    "hero.backupCount":  "{n} 个备用",
    "hero.backups":  "备用模型",
    "hero.ha":  "模型高可用",
    "hero.healthy":  "全部健康",
    "hero.noActiveRuns":  "暂无运行中编排",
    "hero.orch":  "子智能体编排",
    "hero.quarantined":  "{n} 个隔离中",
    "orch.autoFirst":  "自动（第一个可用）",
    "orch.advanced":  "高级设置",
    "orch.advancedHint":  "委托深度与输入/结果截断参数，通常保持默认值即可",
    "orch.autoResume":  "自动续跑未完成 run",
    "orch.autoResumeHint":  "重试相同任务时，自动复用 30 分钟内同一会话部分完成 run 的已完成子任务，只跑剩余部分（可关闭）",
    "orch.cardDone":  "已完成",
    "orch.cardError":  "执行失败",
    "orch.cardRunning":  "运行中…（{n} 个子任务）",
    "orch.cardRunningProgress":  "进行中 {running} · 已完成 {done}/{total} · 异常 {error}",
    "orch.statDone":  "已完成 {n}",
    "orch.statError":  "异常 {n}",
    "orch.statRunning":  "进行中 {n}",
    "orch.statTotal":  "总 {n}",
    "orch.taskLabel":  "子任务",
    "orch.taskAgent":  "子代理",
    "orch.taskStatus":  "状态",
    "orch.taskLastKey":  "lastKey",
    "orch.cmdDesc":  "查看/检索编排运行记录（runs / show <runId> / presets）；恢复未完成 run 用 /ha-orch-resume <runId>",
    "orch.result":  "结果",
    "orch.resumeCmdDesc":  "按 runId 恢复未完成的编排运行（复用已完成子任务，只跑剩余任务）",
    "orch.resumeDone":  "已恢复并执行完成：{from} → {runId}\n\n{summary}",
    "orch.resumeInjected":  "【ha-orch-resume】已恢复并执行完成：{from} → {runId}（mode: {mode}）。以下是本次恢复 run 的完整子任务结果与汇总。请基于这些结果继续完成你原本的编排任务。\n\n{output}",
    "orch.resumeUsage":  "用法：/ha-orch-resume <runId>（runId 可用 /orchestrate runs 查询）",
    "orch.concurrency":  "默认并发数",
    "orch.concurrencyHint":  "单次编排内子智能体的并行数量",
    "orch.enabledHint":  "模型可获得 orchestrate 工具",
    "orch.groupAdvanced":  "高级",
    "orch.groupBasic":  "基本",
    "orch.groupLimits":  "并发与预算",
    "orch.errBudget":  "子智能体调用预算已用尽（{n}），已中止本次编排",
    "orch.errPartialHint":  "\n[orchestrate runId: {runId}] 本次已记录：{done} 个子任务已完成（{names}），{pending} 个未完成。重试时请调用 orchestrate 并传 resume: \"{runId}\"，可复用已完成结果并只跑剩余任务。",
    "orch.errDisabled":  "orchestrate: 编排功能已在配置页中禁用",
    "orch.errNoNested":  "orchestrate: 子智能体不允许再发起编排，请把任务直接交回主智能体处理",
    "orch.errNoAgentCtx":  "orchestrate: 缺少调用者 Agent 上下文",
    "orch.errNoPreset":  "未找到配方：{name}",
    "orch.errNoProvider":  "orchestrate: 没有可用的子智能体提供方",
    "orch.errNoResumeData":  "旧版运行记录缺少任务定义，无法恢复：{runId}",
    "orch.errAborted":  "编排调用已被取消",
    "orch.errNoRun":  "未找到运行记录：{runId}",
    "orch.errNoService":  "orchestrate: 子智能体服务不可用",
    "orch.errNoTasks":  "orchestrate: 至少需要一个任务",
    "orch.errPresetName":  "配方名称不能为空",
    "orch.errRunDone":  "该 run 已完成，无需恢复：{runId}",
    "orch.errUnknownAgent":  "orchestrate: 未知子智能体 {names}（可用：{available}）",
    "orch.globalConcurrency":  "全局并发上限",
    "orch.globalConcurrencyHint":  "所有编排共享的并发上限（0 = 不限）",
    "orch.hintSection":  "【dsh-ha-orchestrator 插件上下文】你已装配子智能体编排工具 orchestrate（fanout 并行 / pipeline 流水线 / supervisor 评审合成 / map-reduce 并行归约 / router 候选路由）。任务满足以下任一条件时，请在第一轮直接自动调用 orchestrate 编排执行，无需用户明确要求，也不要自己逐项串行处理（尤其是阅读/理解大型项目或代码库时，不要先用 read/glob 顺序浏览）：(1) 可拆成 2 个及以上相互独立的子任务（如阅读大型项目、多文件调研、批量评审、多方案对比、多仓库检查）；(2) 需要按阶段推进（如需求分析→设计→实现计划）；(3) 需要资深评审把关（如代码审查、方案评审、质量验收）；(4) 需要从候选任务中路由选择最合适的一项。调用时自行把目标拆解为 tasks（每个 task 给出清晰、自包含的 prompt）；可为任务补充 outputHint 或 object 根 outputSchema（provider 支持时生效），supervisor 可使用 reviewers/reviewRounds，复杂任务可设置 budgetAgents；即使你还没了解项目，也可以先按模块/目录/文档/代码等维度粗拆 tasks，让子智能体并行阅读后汇总；这是统一编排入口，优先于 subagent/subagent_fork 等逐个分发工具；可用自定义子智能体请先调用 list-subagents 工具查询清单（名称/provider/模型/描述）。多对象调研（如多个 GitHub 仓库、npm 包、竞品）必须按对象逐个拆分 tasks（每个对象至少一个子任务，不要合并成单个大任务），子任务 prompt 中要求给出带来源 URL 的证据与取数时间；合并时保留全部出处（可用 researcher/research-merger 或 mergeInstructions 指定）。",
    "orch.maxAgents":  "最大子智能体数",
    "orch.maxAgentsHint":  "单次编排允许的任务数量上限",
    "orch.mergeDefault":  "审查所有子任务输出，合并为一份准确、完整、去重的最终结论；标注仍然缺失或不确定的部分。",
    "orch.mergedPrefix":  "（承接上一阶段输出）",
    "orch.outputSeparator":  "--- 子任务输出 ---",
    "orch.presetNone":  "暂无配方",
    "orch.presetNotFound":  "未找到配方：{name}",
    "orch.presetSaved":  "配方已保存：{name}",
    "orch.presetsHead":  "配方（{n}）",
    "orch.provider":  "子智能体提供方",
    "orch.rosterHead":  "可用自定义子智能体（tasks[].agent 或顶层 agent 按名称指定）：",
    "orch.rosterHint":  "可用自定义子智能体列表（名称/provider/描述）请调用 list-subagents 工具查询。",
    "orch.routerDefault":  "从以下候选任务中选择最合适的一项并完成它，只输出该项的结果：",
    "orch.runNone":  "暂无运行记录",
    "orch.runNotFound":  "未找到运行记录：{runId}",
    "orch.runsHead":  "最近 {n} 次运行",
    "orch.showHead":  "运行",
    "orch.stageRetry":  "流水线阶段重试",
    "orch.stageRetryHint":  "单阶段失败重试次数（0 = 不重试，失败即中止后续阶段）",
    "orch.maxDepth":  "委托深度上限",
    "orch.maxDepthHint":  "0 = 关闭；1 = 子智能体不能再委托（平台层硬限制，provider 支持时生效）",
    "orch.mergeBodyLimit":  "合并输入·每任务上限",
    "orch.mergeTotalLimit":  "合并输入·总上限",
    "orch.mergeLimitsHint":  "字符数，0 = 默认（8000 / 48000）：merge/supervisor 收到的子任务正文截断",
    "orch.renderRunLimit":  "结果渲染·每任务上限",
    "orch.renderTotalLimit":  "结果渲染·总上限",
    "orch.renderLimitsHint":  "字符数，0 = 默认（8000 / 60000）：orchestrate 工具结果展示截断",
    "orch.sumDone":  "编排完成，共 {n} 个子任务：",
    "orch.sumMerged":  "合并结果：{out}",
    "orch.sumNoOutput":  "（无输出）",
    "orch.sumPipeline":  "pipeline 完成，最终输出：{out}",
    "orch.sumPipelineFailed":  "流水线阶段失败：{reason}（已完成输出：{out}）",
    "orch.sumRouter":  "路由结果：{out}",
    "orch.sumSupervisor":  "supervisor 结论：{out}",
    "orch.title":  "子智能体编排",
    "orch.subtitle":  "fanout / pipeline / supervisor / map-reduce / router 等编排模式的全局参数",
    "orch.toolAgentField":  "每个 task 可用 agent 字段指定自定义子智能体名称；顶层 agent 参数可设默认子智能体，supervisorAgent 可指定监督子智能体，reviewers 可指定并行评审者；task 还可附 outputHint/outputSchema；",
    "orch.toolAutoUse":  "任务满足以下任一条件时，请自动调用本工具，无需用户明确要求，也不要自己逐项串行处理：可拆成 2 个及以上相互独立的子任务（包括阅读大型项目、多文件调研、批量评审、多方案对比、多仓库检查）；需要按阶段流水线推进；需要资深评审把关；或需要从候选任务路由选择一项。对于阅读大型项目这类任务，第一轮就应调用本工具拆成并行子任务，而不是先用 read/glob 顺序浏览；即使你还没了解项目，也可以先按模块/目录/文档/代码等维度粗拆 tasks，让子智能体并行阅读后汇总；可用 outputHint/outputSchema 指定输出格式，supervisor 可配置 reviewers/reviewRounds。多对象调研（如多个 GitHub 仓库、npm 包、竞品）必须按对象逐个拆分 tasks（每个对象至少一个子任务，不要合并成单个大任务），子任务 prompt 中要求给出带来源 URL 的证据与取数时间；合并时保留全部出处（可用 researcher/research-merger 或 mergeInstructions 指定）。这是统一的编排入口；不要用 subagent/subagent_fork 逐个手动分发。",
    "orch.toolDefault":  "不指定时使用默认模型。",
    "orch.toolFanout":  "fanout：把 tasks 并行分发给子智能体执行并汇总；",
    "orch.toolIntro":  "自定义编排多个子智能体。",
    "orch.toolListSubagents":  "获取当前可用的自定义子智能体列表（名称 / provider / 模型 / 描述）。子智能体在 orchestrate 中按名称指定（tasks[].agent、顶层 agent、supervisorAgent、reviewers），先查询此列表再决定用哪个。",
    "orch.toolMapReduce":  "map-reduce：并行拆分执行后统一归约",
    "orch.toolPipeline":  "pipeline：按顺序执行，每个任务的输出作为下一个任务的输入上下文；",
    "orch.toolRouter":  "router：从候选任务中路由选择最合适的一项执行",
    "orch.toolSupervisor":  "supervisor：先并行执行全部任务，再启动一个监督子智能体按 mergeInstructions 审查并合成最终结论。",
    "orch.toolYouAre":  "你是编排者：自行负责把目标拆解为 tasks（每个 task 有清晰、自包含的 prompt）。",
    "orch.usageHowto":  "模型会在适合并行拆解（如阅读大型项目、多文件调研）、多阶段或需要评审的任务上自动调用 orchestrate，无需显式要求。",
    "subagent.title":  "子代理",
    "subagent.count":  "{n} 个子代理",
    "subagent.running":  "正在运行",
    "subagent.recentDone":  "最近已完成",
    "subagent.idle":  "没有正在运行的子代理",
    "subagent.runningCount":  "运行中 {n}",
    "subagent.finishedCount":  "最近完成 {n}",
    "subagent.empty":  "暂无编排记录",
    "subagent.refresh":  "刷新",
    "subagent.close":  "关闭",
    "subagent.openSession":  "打开会话记录",
    "subagent.sessionUnavailable":  "旧记录未关联会话",
    "subagent.statusRunning":  "运行中",
    "subagent.statusCompleted":  "已完成",
    "subagent.statusError":  "异常",
    "subagent.statusPending":  "等待",
    "subagent.model":  "模型",
    "subagent.tokens":  "tokens",
    "subagent.syncing":  "同步中",
    "subagent.notTracked":  "未采集",
    "subagent.more":  "还有 {n} 个子代理",
    "subagent.noRole":  "未命名职责",
    "subagent.lastRun":  "最近运行",
    "section.label":  "HA 与编排",
    "skill.body":  "# dsh-ha-orchestrator 使用与排障\n\n## 能力\n\n- 模型高可用（HA）：模型请求失败时按阈值/冷却自动隔离并切换到备用模型；支持模型级 + Provider 级两层熔断、突发窗口、冷却后真实探测恢复，以及可选的上下文超长降级。\n- 编排：fanout / pipeline / supervisor（多评审者 + 评审轮次）/ map-reduce / router 五种模式；支持全局并发、子智能体调用预算、resume、配方、工具 allow/deny、结构化 outputSchema 与委托深度上限。provider 不支持某项能力时会自动剥离对应字段。\n- 调研预设：内置 researcher 与 research-merger，适合要求官方来源 URL、观测日期、证据保留和冲突并列的多对象调研。\n- 可观测：/ha status|diag|reset|probe、/orchestrate runs|show <runId>|presets、/ha-orch-resume <runId>；运行记录写入 runs.jsonl，并为每个 run 生成包含完整子任务输出的 Markdown 工件。\n\n## 使用方式\n\n1. 配置备用模型：在设置页「模型高可用」卡片点「推荐备份」，或直接填写 provider/model；未配置 backups 时故障无法自动切换。\n2. 让模型编排任务：直接描述任务即可——插件注入的上下文会引导模型在适合拆分的任务上自动调用 orchestrate 工具（fanout/pipeline/supervisor/map-reduce/router）。\n3. 查看运行：/orchestrate runs 列最近运行（含结果摘要），/orchestrate show <runId> 看详情；中断后可用 /ha-orch-resume <runId> 直接恢复未完成子任务，或调用 orchestrate 的 resume 参数复用已完成结果。\n4. 手动探测模型：/ha probe <provider> <model> 立即验证可用性（隔离中的模型探测通过会自动解除隔离）。\n5. 需要固定输出结构时，在 task 中提供 outputHint 或 object 根 outputSchema；需要评审时使用 supervisor 的 reviewers/reviewRounds。\n\n## 排障\n\n- 故障未切换：检查 ha.enabled、backups 非空、codes 错误码过滤是否把该错误码排除了、provider 是否在 llm.listProviders 注册。\n- 模型一直隔离：/ha diag 查看服务可用性与持久化状态；探测失败会延长冷却（60s–5min 间隔），可用 /ha probe 手动验证。\n- 结构化输出或工具裁剪未生效：确认 provider capabilities 支持对应字段；不支持时插件会在启动前安全剥离，而不会让整个子任务失败。\n- /ha 或 /orchestrate 命令不可用：部署缺少 commands 服务时命令自动跳过（插件其余能力不受影响）；/ha diag 会标注缺失服务。\n- 配置未生效：/ha diag 查看 configLoaded、haStateLoaded 与持久化路径；配置存于 dsh-ha-orchestrator.config.json（含 .backup.json），可经设置页「系统」卡片导出/导入。",
    "skill.desc":  "dsh-ha-orchestrator 插件使用与排障：HA 故障切换、编排调用、命令与诊断",
    "skill.whenToUse":  "用户需要配置/排查模型高可用备份与切换、编排子任务，或验证 /ha、/orchestrate 命令与运行记录",
    "sys.copyFailed":  "复制失败：浏览器拒绝了剪贴板访问",
    "sys.copied":  "已复制到剪贴板",
    "sys.copy":  "复制",
    "sys.dictFailed":  "加载失败",
    "sys.dictLoaded":  "已加载",
    "sys.dictStatus":  "字典加载",
    "sys.dshLocale":  "DSH 语言",
    "sys.dshNone":  "（未设置，默认中文）",
    "sys.effective":  "当前生效语言",
    "sys.export":  "导出配置",
    "sys.exportBtn":  "导出",
    "sys.exported":  "已导出，可复制保存",
    "sys.exportHint":  "导出完整配置为 JSON，可复制保存或迁移",
    "sys.import":  "导入配置",
    "sys.importBtn":  "导入并应用",
    "sys.imported":  "已导入并应用，页面刷新中",
    "sys.importHint":  "粘贴完整配置 JSON 整体替换（缺失节回退默认）",
    "sys.importInvalid":  "配置 JSON 无效，请检查后重试",
    "sys.lang":  "插件语言",
    "sys.langAuto":  "跟随系统",
    "sys.langEn":  "English",
    "sys.langHint":  "跟随系统 = 随 DSH 语言自动切换；也可手动固定",
    "sys.langZh":  "中文",
    "sys.rollback":  "自动回滚",
    "sys.rollbackEvent":  "已回滚（{reason}）",
    "sys.rollbackHint":  "目标语言配置加载失败时自动回滚到中文（zh）",
    "sys.rollbackNo":  "未触发",
    "sys.startupNote":  "启动时按 DSH 当前语言选择自动切换语言",
    "sys.subtitle":  "插件语言与运行时状态",
    "sys.title":  "系统"
}
