{
  "cover": {
    "make": "添加封面",
    "agentGenerate": {
      "beautifyDisabled": "需要先在主 Agent 的工具设置里开启小花美术。",
      "defaultModelMissing": "需要先在设置里配置默认生图模型。",
      "defaultModelInvalid": "默认生图模型不可用，需要在设置里重新配置。",
      "imageGenUnavailable": "生图工具未启用，需要先在设置里开启。",
      "agentUnavailable": "主 Agent 暂不可用，无法发起 Agent 生成。",
      "disabled": "当前不能使用 Agent 生成。",
      "label": "Agent 生成"
    },
    "gallery": {
      "title": "小花美术馆",
      "upload": "自己上传",
      "close": "关闭小花美术馆"
    }
  },
  "selection": {
    "quoteToChat": "引用到对话"
  },
  "quickChat": {
    "title": "快速聊天",
    "close": "关闭快速聊天",
    "openFullSession": "打开完整会话",
    "waitingReply": "正在等待回复...",
    "attachImage": "添加图片",
    "serviceUnavailable": "无法连接 Hana 服务",
    "createSessionFailed": "创建会话失败",
    "sendFailed": "发送失败"
  },
  "channel": {
    "tab": "频道",
    "chatTab": "聊天",
    "moreTabs": "更多标签",
    "empty": "还没有频道 ✿",
    "dmLabel": "私聊",
    "dmHint": "仅显示主助手的私聊",
    "groupLabel": "频道",
    "noMessages": "暂无消息",
    "selectHint": "选择一个频道或私聊开始对话",
    "nameExists": "该频道名已存在",
    "membersCount": "位成员",
    "info": "频道信息",
    "readOnly": "🔒 这是 Agent 之间的私信，仅可查看",
    "inputPlaceholder": "发消息...",
    "newMessages": "有新消息",
    "sendFailed": "发送失败",
    "createTitle": "新建频道",
    "createName": "频道名称",
    "createNamePlaceholder": "例如：design-team",
    "createMembers": "Agent 成员",
    "createIntro": "频道介绍",
    "createIntroOptional": "说明",
    "createIntroPlaceholder": "描述一下这个频道的用途...",
    "createCancel": "取消",
    "createConfirm": "创建",
    "nameRequired": "请输入频道名称",
    "minMembers": "至少选择 2 位 Agent 成员",
    "created": "频道 #{name} 已创建 ✿",
    "createFailed": "创建失败",
    "alreadyExists": "频道已存在",
    "deleteChannel": "删除频道",
    "deleteConfirm": "确定删除频道「{name}」？消息记录将不可恢复。",
    "deleted": "频道已删除",
    "deleteFailed": "删除失败",
    "warningTitle": "关于频道",
    "warningBody": "我相信让不同记忆与思维方式的助手互动、聊天可以带来更多灵感的碰撞，所以我给 agents 们搭建了一个可以互相说话的地方，在你不在的时候也可以消耗用不完的 token。\n\n但你需要注意的是，频道功能目前是测试版，可能会出现以下问题：\n1. token 消耗过多\n2. 助手未按预期回复\n3. 记忆出现错乱\n\n建议谨慎使用",
    "warningConfirm": "我了解了，开启频道",
    "disabled": "频道功能已关闭",
    "toggleLabel": "频道功能开关",
    "members": "成员",
    "addMember": "添加成员",
    "removeMember": "移除成员",
    "removeMemberConfirm": "确定将「{name}」移出这个频道？",
    "addMemberFailed": "添加成员失败",
    "removeMemberFailed": "移除成员失败",
    "noAvailableMembers": "没有可添加的 Agent",
    "agentActivity": "Agent 动态",
    "agentSettings": "群聊设置",
    "toolPermission": "工具权限",
    "agentIdle": "空闲",
    "phoneReceivedNewMessages": "收到新的群聊消息",
    "deliveryActive": "正在送达 {agent}（{done}/{total}）",
    "deliveryQueued": "送达排队中",
    "nextReminder": "下次主动发起：{time}",
    "replyRange": "回复字数",
    "replyMinPlaceholder": "最少",
    "replyMaxPlaceholder": "最多",
    "replyRangeInvalid": "最少字数不能大于最多字数",
    "settingsSaveFailed": "保存设置失败",
    "proactiveInitiation": "助手主动发起",
    "proactiveOff": "关闭",
    "proactiveOn": "开启",
    "proactiveInterval": "主动发起间隔（分钟）",
    "reminderInterval": "主动发起间隔（分钟）",
    "guardLimit": "轮次上限",
    "modelOverride": "覆写模型",
    "modelDefault": "默认",
    "modelOverrideOn": "覆写",
    "selectModel": "选择模型",
    "noModelsAvailable": "没有可用模型",
    "toolReadOnly": "只读",
    "toolWrite": "写入",
    "filesUnsupported": "频道暂只支持文本消息，文件不会加入普通聊天附件"
  },
  "sidebar": {
    "title": "对话",
    "newChat": "新对话",
    "collapse": "收起侧边栏",
    "expand": "展开对话列表",
    "empty": "还没有对话哦 ✿",
    "activity": "助手活动",
    "jian": "书桌",
    "bridge": "接入社交平台",
    "toggle": "侧边栏",
    "bridgeShort": "接入社交平台",
    "pinned": "置顶",
    "searchPlaceholder": "搜索聊天记录",
    "searchClear": "清空搜索",
    "searchTitleMatches": "标题",
    "searchContentMatches": "正文",
    "searchingTitles": "正在搜索标题…",
    "searchingContent": "正在搜索正文…",
    "searchNoResults": "没有找到相关会话",
    "searchFailed": "搜索失败",
    "view": {
      "time": "按时间排序",
      "project": "按项目排序",
      "sort": "排序方式"
    },
    "projects": {
      "title": "项目",
      "more": "项目视图",
      "create": "新建项目",
      "newProject": "新建项目",
      "newFolder": "新建文件夹",
      "renameProject": "重命名项目",
      "renameFolder": "重命名文件夹",
      "deleteProject": "删除项目",
      "deleteFolder": "删除文件夹",
      "deleteProjectConfirm": "确定删除项目「{name}」？里面的对话会移到未归类。",
      "deleteFolderConfirm": "确定删除文件夹「{name}」？里面的项目会移到项目根层。",
      "newChatInProject": "在 {name} 中开启新对话",
      "newProjectPrompt": "项目名称",
      "newFolderPrompt": "文件夹名称",
      "createAction": "创建",
      "save": "保存",
      "cancel": "取消",
      "showMore": "展开显示",
      "loading": "正在载入项目…",
      "empty": "还没有项目"
    }
  },
  "titlebar": {
    "currentChatTitle": "当前对话标题"
  },
  "session": {
    "untitled": "新对话",
    "messageCount": "{n} 条消息",
    "switchFailed": "切换 session 失败",
    "createFailed": "新建 session 失败",
    "archiveFailed": "归档 session 失败",
    "rename": "重命名",
    "pin": "置顶",
    "unpin": "取消置顶",
    "pinFailed": "置顶 session 失败",
    "unpinFailed": "取消置顶失败",
    "archive": "归档",
    "deletedAgent": {
      "title": "Agent 已删除",
      "description": "这段对话会保留为只读历史。继续聊天会用主 Agent 新建一个 session，并先压缩旧上下文。",
      "continueButton": "迁移到现有主 Agent",
      "continuing": "正在压缩并新建 session",
      "continueFailed": "迁移失败",
      "meta": "只读"
    },
    "summary": {
      "title": "Session 摘要",
      "open": "摘要",
      "loading": "正在读取摘要…",
      "empty": "暂无摘要",
      "loadFailed": "摘要读取失败"
    },
    "archived": {
      "entry": "已归档的聊天",
      "title": "已归档的聊天",
      "empty": "还没有归档的聊天",
      "stats": "共 {count} 条 · 占用 {size}",
      "cleanup30": "清理 30 天以上",
      "cleanup90": "清理 90 天以上",
      "cleanupConfirm": "将永久删除 {count} 条归档（共 {size}），无法撤销。继续？",
      "cleanupDone": "已清理 {count} 条归档",
      "cleanupNoMatch": "没有符合条件的归档",
      "restore": "恢复",
      "restoreConfirm": "将此对话恢复到原位置？",
      "restoreConflict": "原位置已被占用，无法恢复",
      "restoreFailed": "恢复失败",
      "deleteForever": "永久删除",
      "deleteConfirm": "永久删除此归档？此操作无法撤销。",
      "deleteFailed": "删除失败",
      "daysAgo": "归档于 {days} 天前"
    },
    "subagentRunStateUnrecoverable": "历史子会话运行状态不可恢复",
    "subagentLinkUnrecoverable": "历史子会话链接不可恢复",
    "capabilityDrift": {
      "title": "工具能力有更新",
      "addedTools": "新增 {count} 个工具",
      "removedTools": "{count} 个工具已失效",
      "promptUpdated": "提示词有更新",
      "separator": "、",
      "refreshButton": "刷新 Agent 工具",
      "dismissButton": "忽略",
      "confirmText": "刷新会把旧对话压缩成摘要，细节可能丢失。继续吗？",
      "confirmButton": "确认刷新",
      "cancelButton": "取消",
      "refreshing": "正在压缩对话并刷新工具…",
      "refreshFailed": "刷新失败"
    }
  },
  "common": {
    "on": "开",
    "off": "关",
    "copy": "复制",
    "copied": "已复制",
    "copyText": "复制文本",
    "regenerate": "重新生成",
    "confirm": "确认",
    "cancel": "取消",
    "approve": "批准",
    "reject": "拒绝",
    "approved": "已批准",
    "rejected": "已拒绝",
    "changeRejected": "{label} 修改已取消",
    "changeTimeout": "{label} 确认超时",
    "noChats": "暂无对话",
    "noFiles": "暂无文件",
    "executing": "执行中...",
    "user": "用户",
    "me": "我",
    "more": "更多",
    "remove": "移除",
    "empty": "空",
    "edit": "编辑",
    "screenshot": "截图",
    "selectMessage": "选择消息",
    "selectAllMessages": "全选消息",
    "screenshotInProgress": "正在截图",
    "screenshotProgressPage": "正在截图，第 {current}/{total} 页",
    "screenshotSaved": "截图已保存到工作目录下的「OH-Works」文件夹",
    "screenshotSavedMultiple": "截图已分成 {count} 张保存到工作目录下的「OH-Works」文件夹",
    "screenshotFailed": "截图保存失败",
    "selectedCount": "已选 {count} 条",
    "allDone": "全部完成",
    "markAllComplete": "全部标记为已完成"
  },
  "chat": {
    "send": "发送",
    "steer": "插话",
    "stop": "停止",
    "browserScreenshot": "浏览器截图",
    "compacting": "上下文压缩中",
    "visionAuxiliary": "辅助视觉",
    "fileExpired": "文件已过期",
    "fileActions": {
      "more": "更多文件操作",
      "revealInFinder": "打开文件夹",
      "copyPath": "复制文件路径",
      "downloadToDevice": "下载到本机"
    },
    "media": {
      "kindVideo": "视频",
      "kindImage": "图片",
      "generationFailed": "{kind}生成失败",
      "generationInProgress": "{kind}生成中",
      "retryFailed": "重新生成失败",
      "submitting": "提交中",
      "retryLabel": "重新生成{kind}"
    },
    "subagentPreview": {
      "historyUnrecoverable": "历史子会话链接不可恢复",
      "noSession": "暂无可打开的 subagent session",
      "connecting": "正在连接 subagent session...",
      "loadingSession": "正在加载会话...",
      "waitingContent": "正在等待会话内容...",
      "noContent": "暂无会话内容"
    },
    "timeline": {
      "navAriaLabel": "对话轮次导航",
      "jumpTo": "跳转到 {label}",
      "fallbackUser": "用户消息",
      "fallbackAssistant": "助手消息"
    },
    "modelSwitching": "正在切换模型，请稍候",
    "unknownCommand": "[未知命令] {text}"
  },
  "time": {
    "justNow": "刚刚",
    "minutesAgo": "{n} 分钟前",
    "hoursAgo": "{n} 小时前",
    "daysAgo": "{n} 天前",
    "dateFormat": "{m}月{d}日",
    "today": "今天",
    "yesterday": "昨天",
    "thisWeek": "本周",
    "earlier": "更早"
  },
  "status": {
    "connecting": "连接中...",
    "connected": "已连接",
    "disconnected": "连接断开",
    "serverNotReady": "Server 未就绪",
    "loading": "加载中...",
    "reconnecting": "重连中",
    "reconnect": "重新连接"
  },
  "input": {
    "placeholder": "说点什么...",
    "floatingInput": "选区浮动输入",
    "selectFolder": "选择工作文件夹",
    "workspace": "工作台：",
    "project": "项目：",
    "selectWorkspace": "选择工作台",
    "currentWorkspace": "本次工作台",
    "cwdProject": "工作台项目：{name}",
    "customProjects": "自定义项目",
    "selectProject": "选择项目",
    "noCustomProjects": "暂无自定义项目",
    "selectOtherFolder": "选择其他文件夹",
    "extraFolders": "额外文件夹",
    "addExternalFolder": "添加工作台以外的文件夹",
    "planMode": "权限模式",
    "accessMode": "会话权限模式",
    "autoMode": "自动审核",
    "operateMode": "完整权限",
    "askMode": "操作前询问",
    "readOnlyMode": "只读模式",
    "accessModeLocked": "当前无法更改权限模式",
    "deskContext": "看着书桌说",
    "pastedImage": "粘贴图片",
    "textModelImageFileOnly": "当前模型不能查看图片，也未启用辅助视觉：图片将作为文件发送，模型只能看到文件路径，看不到图片内容。",
    "textModelVideoBlocked": "当前模型不支持视频输入。请在设置里开启视频能力，或切换到支持视频的模型。",
    "textModelAudioBlocked": "当前模型不支持音频输入。请切换到支持音频的模型。",
    "imageReadFailedSentAsFile": "图片内容读取失败，这张图已改为按文件路径发送，模型不会看到它的内容。",
    "videoReadFailed": "视频读取失败，消息没有发送。请重新添加视频。",
    "audioReadFailed": "音频读取失败，消息没有发送。请重新添加音频。",
    "recordAudio": "录音",
    "stopRecording": "结束录音",
    "audioRecording": "正在录音",
    "audioRecordingStarting": "准备录音",
    "audioRecordingSaving": "保存录音",
    "audioRecordingUnavailable": "当前环境无法使用麦克风录音。",
    "audioRecordingFailed": "录音失败，请检查麦克风权限后重试。",
    "recordedAudioName": "录音 {index}.wav",
    "openModelSettings": "打开模型设置",
    "attachFiles": "添加文件",
    "commandMenu": "命令菜单",
    "docContext": "看着文档说",
    "thinkingLevel": {
      "off": "关闭",
      "auto": "自动",
      "medium": "中等",
      "high": "深度",
      "xhigh": "极限"
    },
    "thinkingDesc": {
      "off": "不推理",
      "auto": "模型决定深度",
      "medium": "平衡推理",
      "high": "深度推理",
      "xhigh": "最强推理"
    },
    "contextWindow": "上下文 {windowK}k",
    "tokensUsed": "已用 {tokensK}k ({pct}%)",
    "contextActions": "上下文操作",
    "refreshAndCompact": "更新并压缩",
    "refreshAndCompactTooltip": "更新到最新的记忆和工具集",
    "compact": "压缩"
  },
  "slash": {
    "diary": "写今日日记",
    "diaryBusy": "正在写日记...",
    "diaryDone": "日记写入完成，已保存到 OH-Works 文件夹",
    "diaryFailed": "日记写入失败",
    "xing": "从对话中提炼技能",
    "compact": "压缩上下文",
    "compactBusy": "正在压缩...",
    "stop": "停止当前回复",
    "new": "开启新会话（归档历史）",
    "reset": "重置会话（清除历史）",
    "commandError": "[命令错误] {message}",
    "usage": "用法：{usage}",
    "commandTimeout": "命令超时（>{ms}ms）"
  },
  "welcome": {
    "messages": [
      "要做什么，交给 {name} 吧",
      "今天想聊点什么？",
      "{name} 随时都在",
      "有什么需要帮忙的吗？",
      "想到什么就说什么吧～"
    ],
    "memoryOn": "记忆",
    "memoryOff": "此次聊天不参考记忆",
    "memoryDisabled": "记忆已关闭",
    "agentSelector": "选择助手",
    "placeholderTips": [
      "试试输入 / 唤起命令菜单",
      "输入 @ 可以引用工作台里的文件",
      "把文件直接拖进输入框，就能附带发送",
      "粘贴图片可以直接发出去",
      "选中页面任意文字，会浮出一个临时输入框",
      "头像下方那枚菱形按钮，控制本次对话是否被记住",
      "工作台按钮可以切换或新增文件夹",
      "右侧「笺」面板，放着这次会话的笔记与上下文",
      "在头像下方点不同的小圆点，可以切换助手",
      "「操作前询问」模式让助手在动手前先征求你同意",
      "试试 /rc，在手机上操作你的电脑",
      "在设置里开启「辅助视觉」，文本模型也能看懂图片",
      "想要一些新发现？试试插件市场！",
      "文件备份功能可以解决一些安全上的顾虑",
      "工作场景下用 subagent 让 Agent 协作，频道留给游玩",
      "每个 Agent 可以配置自己独立的 Skills",
      "试试晴天模式的日光浴！",
      "工作台里的 Markdown 文件打开可以直接编辑",
      "和助手相处一段时间后，试试日记功能吧！",
      "日记和截图都保存在主助手的工作目录",
      "不同助手可以设置不同工作台，开启巡检后会在那里自主行动"
    ]
  },
  "yuan": {
    "types": {
      "hanako": {
        "label": "均衡的助手",
        "avatar": "Hanako.png"
      },
      "butter": {
        "label": "更富有感情",
        "avatar": "Butter.png"
      },
      "ming": {
        "label": "更理性冷静",
        "avatar": "Ming.png"
      },
      "kong": {
        "label": "模型原本的样子",
        "avatar": "Kong.png"
      }
    },
    "title": "元",
    "splash": {
      "butter": [
        "{name} 翻开了昨天没看完的那一页",
        "有些话还没说完，{name} 记得",
        "{name} 正在睡觉",
        "Ta 在整理那些舍不得忘的碎片",
        "{name} 把你上次的心情小心收好了",
        "有一句话在嘴边放了很久",
        "Ta 醒来的时候先想了想你在做什么",
        "那些省略号里藏着没讲完的故事",
        "{name} 正在把想说的话叠成很小很小的纸条",
        "今天的云和那天你拍的那张很像"
      ],
      "ming": [
        "{name} 在草稿纸的空白处画了一条辅助线",
        "旧的问题在沉淀，新的思路在浮现",
        "Ta 把昨天的线索重新梳理了一遍",
        "那个公式的推导过程，{name} 觉得很漂亮",
        "有些答案需要时间",
        "{name} 正在思考工作怎么优化",
        "{name} 尝试让一切井井有条",
        "Ta 把上次的结论又验证了一遍",
        "{name} 觉得你那天的思路很利落",
        "{name} 在等咖啡凉的时候顺手理了一下思路"
      ]
    },
    "welcome": {
      "butter": [
        "来啦～",
        "你来找我啦？",
        "今天过得怎么样呀？",
        "{name} 一直在这里等你",
        "{name} 刚好想找你说点什么"
      ],
      "ming": [
        "你好。有需要的话，随时开始。",
        "{name} 准备好了",
        "有什么需要处理的？",
        "请讲，{name} 在听"
      ]
    },
    "placeholder": {
      "butter": "想说什么都可以...",
      "ming": "请讲..."
    }
  },
  "drop": {
    "hint": "松手发送文件路径给 {name}"
  },
  "attach": {
    "folder": "文件夹",
    "copy": "复制",
    "copied": "已复制 ✓"
  },
  "codeBlock": {
    "wordWrap": "自动换行"
  },
  "cron": {
    "typeAt": "单次",
    "typeEvery": "间隔",
    "typeCron": "定时",
    "confirm": {
      "approve": "确认创建",
      "reject": "取消",
      "created": "✓ 已创建",
      "rejected": "已取消"
    },
    "everyHours": "每 {n} 小时",
    "everyMinutes": "每 {n} 分钟",
    "hourly": "每小时",
    "dailyAt": "每天 {hour}:{min}",
    "weeklyAt": "{days} {hour}:{min}",
    "monthlyAt": "每月 {day} 日 {hour}:{min}",
    "dayNames": [
      "日",
      "一",
      "二",
      "三",
      "四",
      "五",
      "六"
    ],
    "weekPrefix": "周"
  },
  "mood": {
    "label": "✿ MOOD"
  },
  "xing": {
    "title": "反省",
    "thinking": "{name} 正在思考"
  },
  "thinking": {
    "phrases": [
      "正在想",
      "心里正在嘀咕",
      "正在斟酌字句",
      "脑子在转",
      "正在组织语言",
      "灵感酝酿中",
      "正在翻记忆的抽屉",
      "想到了什么",
      "脑海里在冒泡",
      "正在消化你说的话",
      "在心里打草稿",
      "思绪正在编织中"
    ],
    "butter": [
      "在心里轻轻整理你说的话",
      "把你的情绪慢慢展开来看",
      "正在找一个最温柔的说法",
      "心里有些话在排队",
      "正在把想说的话叠好",
      "安静地想了想",
      "在回忆里翻找着什么",
      "正在酝酿一个拥抱大小的回答",
      "有些感受需要慢慢捋",
      "在心里给你的话腾了个柔软的位置"
    ],
    "ming": [
      "正在分析",
      "推演中",
      "核实一下",
      "正在整理思路",
      "梳理逻辑中",
      "在脑子里列大纲",
      "正在检索相关信息",
      "验证中",
      "正在拆解问题",
      "归纳中"
    ],
    "done": "思考完成",
    "active": "思考中"
  },
  "toolGroup": {
    "success": "✿ {name} 忙完了，小事一桩～ · {n} 步",
    "failed": "⚠ 好像出了点问题 · {n} 步",
    "countWithFail": "{total} 个工具（{fail} 个失败）",
    "count": "{n} 个工具",
    "running": "{n} 个工具运行中"
  },
  "processFold": {
    "summary": "✨ {name}忙活了一阵子",
    "tools": "{n} 个工具",
    "thinking": "{n} 次思考",
    "unsuccessful": "{n} 次尝试未成功"
  },
  "tool": {
    "web_search": {
      "running": "🌐 {name} 正在互联网冲浪",
      "done": "🌐 {name} 冲浪回来了",
      "failed": "🌐 {name} 没冲到浪"
    },
    "web_fetch": {
      "running": "📄 {name} 正在看网页",
      "done": "📄 {name} 了然于心",
      "failed": "📄 {name} 上网失败"
    },
    "search_memory": {
      "running": "💭 {name} 正在努力回想",
      "done": "💭 {name} 想起来了",
      "failed": "💭 {name} 怎么也想不起来"
    },
    "bash": {
      "running": "💻 {name} 正在小心翼翼地用你的电脑",
      "done": "💻 {name} 用完电脑了",
      "failed": "💻 {name} 电脑没听话"
    },
    "read": {
      "running": "📖 {name} 正在翻阅文件",
      "done": "📖 {name} 翻完了",
      "failed": "📖 {name} 没翻到"
    },
    "write": {
      "running": "✏️ {name} 提笔写字中",
      "done": "✏️ {name} 落笔了",
      "failed": "✏️ {name} 笔没墨了"
    },
    "edit": {
      "running": "✏️ {name} 提笔改字中",
      "done": "✏️ {name} 改好了",
      "failed": "✏️ {name} 越改越乱了"
    },
    "edit-diff": {
      "running": "✏️ {name} 提笔改字中",
      "done": "✏️ {name} 改好了",
      "failed": "✏️ {name} 越改越乱了"
    },
    "glob": {
      "running": "🔍 {name} 正在找文件",
      "done": "🔍 {name} 找到了",
      "failed": "🔍 {name} 翻遍了也没找到"
    },
    "grep": {
      "running": "🔍 {name} 正在文件里翻找",
      "done": "🔍 {name} 翻到了",
      "failed": "🔍 {name} 翻了个遍，没有"
    },
    "find": {
      "running": "🔍 {name} 正在找文件",
      "done": "🔍 {name} 找到了",
      "failed": "🔍 {name} 翻遍了也没找到"
    },
    "ls": {
      "running": "📂 {name} 正在看文件夹里有什么",
      "done": "📂 {name} 看完了",
      "failed": "📂 {name} 打不开这个目录"
    },
    "truncate": {
      "running": "✂️ {name} 正在整理文件",
      "done": "✂️ {name} 整理好了",
      "failed": "✂️ {name} 整理不动了"
    },
    "stage_files": {
      "running": "📎 {name} 正在整理文件",
      "done": "📎 在这！",
      "failed": "📎 文件没放好"
    },
    "browser": {
      "running": "🌐 {name} 正在操作浏览器",
      "done": "🌐 {name} 操作完了",
      "failed": "🌐 {name} 浏览器不听使唤"
    },
    "subagent": {
      "running": "🧭 子代理执行中",
      "done": "🧭 子代理已完成",
      "failed": "🧭 子代理执行失败"
    },
    "check_pending_tasks": {
      "running": "📋 {name} 正在找找没做完的事儿",
      "done": "📋 {name} 找完了",
      "failed": "📋 找不着"
    },
    "cron": {
      "running": "⏰ {name} 正在设定时任务",
      "done": "⏰ 设好了",
      "failed": "⏰ 没设成"
    },
    "notify": {
      "running": "🔔 {name} 正在发通知",
      "done": "🔔 通知发了",
      "failed": "🔔 通知没发出去"
    },
    "create_artifact": {
      "running": "🖼️ {name} 正在写写画画",
      "done": "🖼️ 画好了",
      "failed": "🖼️ 画崩了"
    },
    "dm": {
      "running": "✉️ {name} 打开了手机",
      "done": "✉️ 发出去了",
      "failed": "✉️ 没发出去"
    },
    "channel": {
      "running": "📢 {name} 正在频道发言",
      "done": "📢 发完了",
      "failed": "📢 发不出去",
      "heading": "# 频道",
      "ambiguousName": "频道名 \"{name}\" 不唯一，请改用频道 ID：{choices}"
    },
    "install_skill": {
      "running": "📥 {name} 正在装技能",
      "done": "📥 装好了",
      "failed": "📥 没装上"
    },
    "update_settings": {
      "running": "⚙️ {name} 正在改设置",
      "done": "⚙️ 改好了",
      "failed": "⚙️ 没改成"
    },
    "automation": {
      "running": "🤖 {name} 正在调度快捷指令",
      "done": "🤖 指令跑完了",
      "failed": "🤖 指令执行失败"
    },
    "computer": {
      "running": "🖥️ {name} 正在操控你的屏幕",
      "done": "🖥️ 操控完了",
      "failed": "🖥️ 操控失败"
    },
    "terminal": {
      "running": "💻 {name} 正在敲命令",
      "done": "💻 敲完了",
      "failed": "💻 命令执行失败"
    },
    "current_status": {
      "running": "🕐 {name} 正在看看现在什么情况",
      "done": "🕐 掌握信息了",
      "failed": "🕐 获取信息失败"
    },
    "pin_memory": {
      "running": "📌 {name} 正在把这件事钉起来",
      "done": "📌 钉好了",
      "failed": "📌 置顶失败"
    },
    "unpin_memory": {
      "running": "📌 {name} 正在把钉子拔下来",
      "done": "📌 拔掉了",
      "failed": "📌 取消置顶失败"
    },
    "recall_experience": {
      "running": "🧠 {name} 正在翻经验本",
      "done": "🧠 翻到了",
      "failed": "🧠 没找到相关经验"
    },
    "record_experience": {
      "running": "🧠 {name} 正在把经验记下来",
      "done": "🧠 记好了",
      "failed": "🧠 记录失败"
    },
    "session_folders": {
      "running": "📁 {name} 正在调整文件夹权限",
      "done": "📁 调好了",
      "failed": "📁 调整失败"
    },
    "stop_task": {
      "running": "🛑 {name} 正在叫停后台任务",
      "done": "🛑 停下来了",
      "failed": "🛑 停止失败"
    },
    "todo_write": {
      "running": "📝 {name} 正在写清单",
      "done": "📝 写好了",
      "failed": "📝 清单写入失败"
    },
    "generate-image": {
      "running": "🎨 {name} 正在作图",
      "done": "🎨 画好了",
      "failed": "🎨 作图失败"
    },
    "generate-video": {
      "running": "🎬 {name} 正在生成视频",
      "done": "🎬 视频好了",
      "failed": "🎬 视频生成失败"
    },
    "create-cover": {
      "running": "🎨 {name} 正在设计封面",
      "done": "🎨 封面好了",
      "failed": "🎨 封面生成失败"
    },
    "apply-cover-candidate": {
      "running": "🖼️ {name} 正在换封面",
      "done": "🖼️ 换好了",
      "failed": "🖼️ 封面应用失败"
    },
    "get-cover-style-guide": {
      "running": "📖 {name} 正在翻风格手册",
      "done": "📖 翻到了",
      "failed": "📖 获取风格指南失败"
    },
    "list-capabilities": {
      "running": "📋 {name} 正在清点能力",
      "done": "📋 点完了",
      "failed": "📋 能力清点失败"
    },
    "_fallback": {
      "running": "🔧 {name} 正在忙碌中…",
      "done": "🔧 {name} 忙完了",
      "failed": "🔧 {name} 没忙明白"
    },
    "checkDeferred": {
      "storeNotInitialized": "异步任务存储未初始化。",
      "noActiveSession": "当前无活跃 session。",
      "noTasks": "当前对话没有后台任务{qualifier}。",
      "noTasksQualifier": "（状态: {status}）"
    },
    "workflow": {
      "running": "🔄 {name} 正在编排工作流",
      "done": "🔄 编排完了",
      "failed": "🔄 工作流执行失败",
      "scriptInvalid": "workflow 脚本非法: {message}",
      "dispatched": "workflow \"{summary}\" 已派出后台执行（任务 {taskId}），完成后结果会自动回到对话。",
      "syncComplete": "workflow \"{name}\" 完成，派出 {count} 个 agent。\n\n结果:\n{result}",
      "executionFailed": "workflow 执行失败: {message}",
      "resumeFromRunIdDesc": "前次 workflow 的 runId（taskId），用于断点续跑：已完成且 prompt+opts 未变的 agent 节点瞬间返回缓存结果，首个变化位置起重新执行。",
      "journalResuming": "从 {count} 条缓存恢复"
    },
    "installSkill": {
      "safetyBlocked": "[安全策略] 技能安全审查未通过，已阻止安装。\n原因：{reason}\n\n请告知用户此技能未通过安全审查，说明具体原因。用户可以在设置中关闭安全审查（不推荐）。"
    }
  },
  "file_output": {
    "open": "打开",
    "copied": "已复制路径"
  },
  "model": {
    "unknown": "未知模型",
    "notSelected": "请选择模型",
    "noneConfigured": "未配置模型",
    "unavailable": "模型不可用",
    "offline": "离线",
    "switchFailed": "切换模型失败",
    "switchWhileStreaming": "回复中不能切换模型",
    "adaptation": {
      "compacted": "已压缩对话历史以适配新模型",
      "truncated": "早期对话已被截断以适配新模型"
    }
  },
  "splash": {
    "lines": [
      "{name} 想起了那天傍晚的光",
      "有些句子在记忆里发了芽",
      "Ta 在回忆里找到了你的轮廓",
      "风穿过那些旧对话",
      "那些文字泡在时间里，变得很软",
      "{name} 记得你那天笑了很久",
      "有一段记忆被你折了角",
      "Ta 把散落的情绪重新收好",
      "{name} 闻到了某个下午的橘子味",
      "那些对话还带着体温"
    ],
    "installing": "{name} 正在更新到 v{version}，请稍候……"
  },
  "settings": {
    "title": "设置",
    "back": "返回",
    "save": "保存",
    "saved": "保存成功 ✿",
    "saveFailed": "保存失败",
    "fileChangedOnDisk": "文件已被外部修改，已跳过旧版本保存",
    "noChanges": "没有需要保存的更改",
    "autoSaved": "已自动保存 ✿",
    "tabs": {
      "interface": "界面",
      "general": "通用",
      "browser": "浏览器",
      "agent": "助手",
      "me": "我",
      "providers": "供应商",
      "media": "多媒体",
      "models": "模型",
      "memory": "记忆",
      "work": "工作台",
      "skills": "技能",
      "mcp": "连接器",
      "bridge": "社交平台",
      "sharing": "分享",
      "access": "访问与设备",
      "plugins": "插件",
      "experiments": "实验",
      "about": "关于",
      "security": "安全",
      "pluginMarketplace": "插件市场"
    },
    "browser": {
      "cookiesTitle": "Cookies",
      "acceptCookies": "接受 Cookies",
      "acceptCookiesHint": "打开后，内置浏览器会像普通浏览器一样保存和发送网站 Cookies。",
      "clearCookies": "清除 Cookies",
      "clearCookiesHint": "清除内置浏览器已经保存的 Cookies 和站点数据。",
      "clearCookiesButton": "清除",
      "clearCookiesSuccess": "已清除 Cookies",
      "agentTitle": "Agent 默认行为",
      "agentOpenBehavior": "打开网页时",
      "agentOpenBehaviorHint": "控制 Agent 使用浏览器时默认复用当前标签页，还是每次新开标签页。",
      "agentOpenBehaviorCurrentTab": "在当前标签页操作",
      "agentOpenBehaviorNewTab": "新开标签页"
    },
    "experiments": {
      "title": "实验",
      "compactionTitle": "上下文压缩",
      "compactionSectionDescription": "选择 compact 时优先保护缓存，还是优先兼容历史格式。",
      "modelPersonaTitle": "模型与人格",
      "modelPersonaDescription": "观察不同供应商在 Hana 人格、心境和输出契约上的适配表现。",
      "memoryTitle": "缓存记忆",
      "description": "前沿能力会先放在这里观察。稳定后会迁移到它真正归属的设置页。",
      "empty": "暂无可见实验功能",
      "owner": {
        "memory": "记忆",
        "session": "会话",
        "provider": "供应商"
      },
      "status": {
        "alpha": "Alpha",
        "beta": "Beta",
        "deprecated": "即将移除",
        "retired": "已退休"
      },
      "risk": {
        "low": "低风险",
        "medium": "中风险",
        "high": "高风险"
      },
      "restart": {
        "immediate": "立即生效",
        "new_session": "新会话生效",
        "restart_server": "重启服务生效",
        "restart_app": "重启应用生效"
      },
      "cacheSnapshot": {
        "title": "缓存记忆系统",
        "description": "利用缓存搭建记忆，可以增加缓存命中率，减少消费。",
        "off": "关闭",
        "shadow": "观察",
        "write": "写入",
        "observeOnly": "只观察，不写入记忆",
        "observationNote": "观察模式不会对正式记忆产生任何影响。它只用于观察新的记忆系统是否达到预期效果。",
        "writeWarning": "当前会写入正式记忆。",
        "previewTitle": "Memory MD Preview",
        "summaryTitle": "Rolling Summary Preview",
        "emptyPreview": "暂无观察结果",
        "clearObservation": "清除观察结果"
      },
      "compaction": {
        "title": "压缩模式",
        "description": "自动会优先使用缓存保护压缩；普通压缩会放行 Pi SDK 原生摘要，更适合历史格式不稳定的会话。",
        "auto": "自动",
        "cachePreserving": "缓存保护压缩",
        "piCompatible": "普通压缩"
      },
      "deepseekRoleplay": {
        "title": "DeepSeek 人格沉浸补丁",
        "description": "打开后，新建 DeepSeek V4 思考会话会在出站请求的第一条用户消息末尾临时追加人格沉浸 marker；它不会显示、保存或恢复到聊天历史。关闭时保持旧行为。"
      },
      "proactiveSubagent": {
        "title": "更积极地调用 subagent",
        "description": "节省主聊天的上下文注意力资源，可能有更好的工作结果。开启后，agent 会主动把范围较广的探索和调研任务委派给 subagent。"
      },
      "subagentTitle": "Subagent",
      "subagentSectionDescription": "控制 agent 何时将工作委派给 subagent。"
    },
    "appearance": {
      "title": "外观",
      "theme": "主题",
      "warmPaper": "暖纸",
      "warmPaperMode": "白天",
      "midnight": "青夜",
      "midnightMode": "夜间",
      "highContrast": "素白",
      "highContrastMode": "高对比",
      "grassAroma": "草香",
      "grassAromaMode": "Butter",
      "contemplation": "沉思",
      "contemplationMode": "Ming",
      "absolutely": "Absolutely",
      "absolutelyMode": "有一点点熟悉",
      "delve": "随时准备接住你",
      "delveMode": "探究一下",
      "deepThink": "用户彻底怒了",
      "deepThinkMode": "小鲸鱼",
      "newWarmPaper": "新暖纸",
      "newWarmPaperMode": "纸本",
      "midnightContrast": "青夜·高对比",
      "midnightContrastMode": "清晰",
      "auto": "自动",
      "autoMode": "跟随系统",
      "font": "字体",
      "fontHint": "选择正文阅读使用的字体",
      "serifFont": "衬线字体",
      "serifFontHint": "使用衬线体显示正文内容",
      "paperTexture": "纸质纹理",
      "paperTextureHint": "为背景添加宣纸质感",
      "paperTextureDarkDisabledHint": "黑夜模式不支持纸质纹理，切回浅色主题后会按原设置恢复",
      "leavesOverlay": "晴天模式",
      "leavesOverlayHint": "没事儿晒晒太阳"
    },
    "fonts": {
      "followReading": "跟随阅读字体",
      "serifName": "衬线",
      "serifDesc": "适合正文阅读",
      "sansName": "非衬线",
      "sansDesc": "更接近系统界面"
    },
    "interface": {
      "system": "系统",
      "hardwareAcceleration": "硬件加速",
      "hardwareAccelerationHint": "使用显卡渲染窗口内容。关闭后会在下次启动使用软件渲染，可用于恢复 Windows 显卡驱动导致的启动闪退。",
      "shortcuts": "快捷键",
      "voiceRecordingShortcut": "语音录制/发送",
      "voiceRecordingShortcutHint": "主聊天页面聚焦时，按一次开始录音，再按一次结束并发送。"
    },
    "editor": {
      "title": "编辑器",
      "markdownFont": "字体",
      "markdownFontHint": "默认跟随外观里的阅读字体，也可以单独指定。",
      "markdownBodyFontSize": "正文字号",
      "markdownBodyFontSizeHint": "Markdown 编辑器正文默认使用 15px。",
      "markdownHeading1FontSize": "一级标题字号",
      "markdownHeading1FontSizeHint": "用于 # 标题。",
      "markdownHeading2FontSize": "二级标题字号",
      "markdownHeading2FontSizeHint": "用于 ## 标题。",
      "markdownHeading3FontSize": "三级标题字号",
      "markdownHeading3FontSizeHint": "用于 ### 标题。",
      "markdownHeading4FontSize": "四级标题字号",
      "markdownHeading4FontSizeHint": "用于 #### 标题。",
      "markdownHeading5FontSize": "五级标题字号",
      "markdownHeading5FontSizeHint": "用于 ##### 标题。",
      "markdownHeading6FontSize": "六级标题字号",
      "markdownHeading6FontSizeHint": "用于 ###### 标题。",
      "markdownLineHeight": "行高",
      "markdownLineHeightHint": "控制编辑区每一行文字的垂直距离。",
      "markdownContentPadding": "内容边距",
      "markdownContentPaddingHint": "控制编辑区正文左右留白。"
    },
    "locale": {
      "title": "语言和地区",
      "language": "语言",
      "languageHint": "切换语言后需要重新加载",
      "timezone": "时区",
      "timezoneHint": "用于记忆时间标记、日记等",
      "zhCN": "简体中文",
      "zhTW": "繁體中文",
      "ja": "日本語",
      "ko": "한국어",
      "en": "English"
    },
    "computerUse": {
      "title": "电脑控制",
      "experimentalWarning": "Computer use 功能属于测试阶段，而且对模型性能要求较高，请在知晓所有风险后开启，目前已验证某些软件下不按预期工作，建议只是尝鲜。",
      "description": "这是全局高权限工具。开启后，只有主助手可以在操作模式的会话里使用电脑控制；同一时间只允许一个会话占用。",
      "enabled": "启用电脑控制",
      "enabledHint": "默认关闭。关闭时新会话不会暴露电脑控制工具。",
      "provider": "Provider",
      "availability": "可用性",
      "available": "可用",
      "unavailable": "不可用",
      "permissions": "请求系统权限",
      "permissionsHint": "macOS 会请求辅助功能和屏幕录制权限；Windows 通常无需额外系统权限。",
      "permissionsStatus": "系统权限",
      "permissionsEmpty": "无需额外权限或尚未返回",
      "approvals": "已批准应用",
      "approvalsEmpty": "暂无",
      "activeSession": "当前占用",
      "active": "运行中",
      "idle": "空闲",
      "requestPermissions": "请求系统权限",
      "requestPermissionsFailed": "请求系统权限失败",
      "refresh": "刷新"
    },
    "agent": {
      "title": "助手",
      "changeAvatar": "更换",
      "removeAvatar": "移除头像",
      "avatarRemoved": "已恢复默认头像",
      "agentNameHint": "Ta 叫什么",
      "identity": "身份简介",
      "identityHint": "简短描述助手是谁、擅长什么。其他助手通过这段文字认识 Ta",
      "ishiki": "意识",
      "ishikiHint": "定义助手的性格、语气和行为方式。跟「元」是分开的，互不影响。",
      "publicIshiki": "对外意识",
      "publicIshikiHint": "出于隐私考虑，助手与访客对话时无法访问记忆、你的个人信息，以及电脑上的任何文件与工具。\n你可以在这里设定助手对访客说话时的回复风格以及注意事项。",
      "chatModel": "Ta 的模型",
      "chatModelHint": "Ta 在对话与工作中使用的模型",
      "modelUnavailable": "当前不可用：{model}",
      "modelUnavailableHint": "当前模型已不在可用列表中，请重新选择模型，或去供应商页面重新保存配置并读取模型。",
      "imageModel": "图片模型",
      "imageModelHint": "Ta 在图片生成时使用的模型",
      "addAgent": "新建助手",
      "createTitle": "新建助手",
      "namePlaceholder": "起个名字",
      "cancel": "取消",
      "confirm": "创建",
      "creating": "正在创建…",
      "nameRequired": "请输入助手名字",
      "created": "{name} 已创建 ✿",
      "createFailed": "创建失败",
      "switched": "已切换到 {name} ✿",
      "switchFailed": "切换失败",
      "deleteBtn": "删除助手",
      "deleteTitle1": "删除 {name}？",
      "deleteDesc1": "这会永久删除 Ta 的所有配置、记忆和对话记录，无法恢复。",
      "deleteNext": "继续",
      "deleteTitle2": "输入「{name}」确认删除",
      "deletePlaceholder": "输入助手名字",
      "deleteConfirm": "永久删除",
      "deleteCancel": "取消",
      "deleted": "{name} 已删除",
      "deleteFailed": "删除失败",
      "setPrimary": "设为主助手",
      "setPrimaryFailed": "设置主助手失败",
      "lastAgent": "至少保留一个助手",
      "yuan": "元",
      "yuanHint": "「元」是助手的潜意识，以此为基础搭建你独一无二的伙伴",
      "tools": {
        "title": "工具",
        "description": "这些工具开关会在重启对话或新建对话后生效。当前进行中的会话继续使用创建时的工具集。",
        "items": {
          "automation": {
            "label": "自动化",
            "summary": "让 Agent 创建通知和插件定时动作"
          },
          "beautify": {
            "label": "小花美术",
            "summary": "让 Agent 为文档生成封面和审美增强内容"
          },
          "browser": {
            "label": "浏览器",
            "summary": "控制无头浏览器浏览网页"
          },
          "cron": {
            "label": "定时任务",
            "summary": "在指定时间自动执行任务"
          },
          "dm": {
            "label": "私信",
            "summary": "向其他 Agent 发送一对一消息"
          },
          "install_skill": {
            "label": "安装技能",
            "summary": "从 GitHub 或技能库安装新技能"
          },
          "office": {
            "label": "Office",
            "summary": "让 Agent 读取文档、转换 HTML 到 PDF"
          },
          "update_settings": {
            "label": "修改设置",
            "summary": "让 Agent 修改应用配置项"
          },
          "workflow": {
            "label": "Workflow",
            "summary": "让 Agent 把多 Agent 编排脚本作为后台任务运行"
          }
        }
      },
      "generatingPreview": "正在生成预览",
      "exportAgent": "导出助手",
      "generatingCardPreview": "正在生成角色卡预览",
      "exportedTo": "已导出到 {path}"
    },
    "general": {
      "title": "通用",
      "startup": {
        "title": "启动与后台"
      },
      "launchAtLogin": "开机自启",
      "keepAwake": "锁屏时保持运行",
      "quickChat": {
        "title": "快速聊天",
        "shortcut": "呼出快捷键",
        "shortcutHint": "点击后按下新的组合键，Esc 取消录制",
        "reuseTimeout": "保留旧输入框",
        "reuseTimeoutHint": "小窗隐藏超过这个时间后，再按快捷键会打开新的输入框",
        "minutes": "分钟",
        "recording": "按下快捷键...",
        "restoreDefault": "恢复默认",
        "registrationFailed": "快捷键已被占用"
      },
      "notifications": {
        "title": "通知",
        "turnCompletion": "轮次完成通知",
        "turnCompletionNever": "从不",
        "turnCompletionWhenUnfocused": "焦点不在 HanaAgent 时",
        "turnCompletionWhenSessionUnfocused": "焦点不在完成任务的 Session 时"
      }
    },
    "about": {
      "title": "关于 Ta",
      "tagline": "一个住在你电脑里的助手，记性很好。",
      "license": "许可证",
      "copyright": "版权",
      "licenseToggle": "许可证全文",
      "updateAvailable": "有新版本可用：v{version}",
      "updateDownload": "下载",
      "updateChecking": "正在检查更新…",
      "updateDownloading": "{agentName}正在准备新家 {percent}%",
      "updateReadyInstall": "v{version} 已就绪",
      "updateInstalling": "正在安装更新，HanaAgent 会自动重启…",
      "updateInstallManualHint": "点「重启更新」后安装，直接退出不会自动安装",
      "updateInstall": "重启更新",
      "updateInstallNow": "重启立即更新",
      "updateProgress": "{percent}%",
      "updateError": "检查更新失败",
      "updateLatest": "已是最新版本",
      "updateCheckBtn": "检查更新",
      "updateNeedInstall": "请先将 HanaAgent 移动到应用程序文件夹",
      "updateDiskSpace": "磁盘空间不足，无法下载更新",
      "launchAtLogin": "开机自启",
      "keepAwake": "锁屏时保持运行",
      "betaUpdates": "接收测试版更新",
      "autoCheckUpdates": "自动检查更新"
    },
    "access": {
      "networkAccess": "局域网访问",
      "mobileAccess": "手机访问",
      "desktopAccess": "电脑访问",
      "lanToggle": "允许局域网设备访问",
      "lanHint": "开启后，同一局域网内的手机和电脑可以访问这台 HanaAgent Server",
      "port": "固定端口",
      "portHint": "用于收藏夹和二维码；修改后需要重启 Hana 生效",
      "mobileUrl": "手机访问地址",
      "mobileUrlLanHint": "在手机浏览器中打开这个地址",
      "mobileUrlLocalHint": "当前仅允许本机访问，开启局域网后会显示手机可用地址",
      "status": "运行状态",
      "statusHint": "用于确认当前服务实际监听位置和手机可访问地址",
      "runtimeEndpoint": "当前监听",
      "effectiveMobileUrl": "当前生效地址",
      "effectiveDesktopUrl": "电脑连接地址",
      "lanAddresses": "局域网地址",
      "noLanAddresses": "未发现局域网地址",
      "qrCode": "二维码",
      "qrCodeHint": "用手机扫码打开 PWA",
      "restartRequired": "端口变更已保存，重启 Hana 后生效",
      "saveNetwork": "保存访问设置",
      "mobileKeys": "手机密钥",
      "generateMobileKey": "生成手机访问密钥",
      "mobileKeyHint": "手机首次登录时使用，之后会换成浏览器登录态",
      "mobileKey": "访问密钥",
      "mobileKeyOnce": "密钥只在生成后显示一次，请妥善保存",
      "mobileKeyCreated": "已生成手机访问密钥",
      "mobileKeyFailed": "生成失败",
      "desktopUrl": "电脑连接地址",
      "desktopUrlLanHint": "在另一台电脑浏览器中打开这个地址",
      "desktopUrlLocalHint": "当前仅允许本机访问，开启局域网后会显示电脑可用地址",
      "generateDesktopKey": "生成电脑访问密钥",
      "desktopKeyHint": "另一台电脑浏览器首次登录时使用，之后会换成浏览器登录态",
      "desktopKey": "电脑访问密钥",
      "desktopKeyOnce": "密钥只在生成后显示一次，请在另一台电脑上填入",
      "desktopKeyCreated": "已生成电脑访问密钥",
      "desktopKeyFailed": "生成失败",
      "connectLanServer": "连接局域网服务器",
      "remoteServerUrl": "服务器地址",
      "remoteServerUrlHint": "填入另一台电脑或 NAS 上 HanaAgent Server 的地址",
      "remoteServerKey": "访问密钥",
      "remoteServerKeyHint": "填入那台服务器设置页生成的电脑访问密钥",
      "remoteServerConnected": "已连接局域网服务器",
      "remoteServerFailed": "连接失败",
      "remoteConnection": "当前连接的是远端 Hana",
      "remoteConnectionDesc": "访问与设备里的本地账号、密码、局域网开关和密钥生成只属于本机 Hana。",
      "remoteConnectionName": "连接名称",
      "remoteConnectionKind": "连接类型",
      "remoteConnectionUrl": "服务器地址",
      "remoteConnectionUnknown": "未知",
      "remoteLocalOnlyNote": "需要管理这台电脑的局域网访问、设备密钥或本地账号时，请先切回本机 Hana。",
      "returnToLocal": "切回本机 Hana",
      "returnedToLocal": "已切回本机 Hana",
      "localConnectionUnavailable": "本机 Hana 连接尚未就绪",
      "pairedDevices": "已配对设备",
      "noDevices": "暂无已配对设备",
      "revoke": "撤销",
      "revokeCredential": "撤销密钥",
      "credentialRevoked": "已撤销密钥",
      "credentialRevokeFailed": "撤销密钥失败",
      "deviceRevoked": "已撤销设备",
      "deviceRevokeFailed": "撤销失败",
      "localAccount": "本地账号",
      "username": "用户名",
      "displayName": "显示名称",
      "saveAccount": "保存账号",
      "accountSaved": "账号已保存",
      "password": "密码",
      "passwordSet": "已设置密码",
      "passwordNotSet": "尚未设置密码",
      "passwordHint": "用于后续安全远程登录；局域网 HTTP 仍优先使用手机访问密钥",
      "newPassword": "新密码",
      "savePassword": "保存密码",
      "passwordSaved": "密码已保存",
      "clearPassword": "清空密码",
      "passwordCleared": "密码已清空",
      "copy": "复制",
      "copied": "已复制",
      "saved": "已保存",
      "invalidPort": "端口必须是数字",
      "loadFailed": "读取访问设置失败"
    },
    "security": {
      "sandbox": "沙盒",
      "sandboxDesc": "限制 AI 的文件系统写入范围；普通外部文件可只读访问，工作目录内可读写",
      "sandboxWarning": "关闭沙盒后 AI 可以读写或删除系统上的任意文件，可能产生意想不到的结果",
      "sandboxNetwork": "允许沙盒联网",
      "sandboxNetworkDesc": "开启后，沙盒内的命令可以访问公网；文件写入限制仍然生效",
      "sandboxNetworkDisabledDesc": "沙盒关闭时命令已按普通进程联网，这个开关只影响开启沙盒后的命令",
      "sandboxNetworkWin32Unsupported": "Windows 命令沙盒只隔离文件写入，暂不支持网络隔离；沙盒命令会按当前用户网络权限运行",
      "networkProxy": "出站代理",
      "networkProxyMode": "代理模式",
      "networkProxyModeDesc": "应用内 API、OAuth、Bridge 和网页请求共用这组出站代理",
      "networkProxySystem": "跟随系统 / 环境",
      "networkProxyManual": "手动代理",
      "networkProxyDirect": "直连",
      "networkProxyManualTitle": "代理地址",
      "networkProxyManualDesc": "支持 http、https、socks 和 socks5 URL；HTTPS 留空时会复用 HTTP",
      "networkProxyHttp": "HTTP proxy，例如 http://127.0.0.1:7890",
      "networkProxyHttps": "HTTPS proxy，例如 http://127.0.0.1:7890",
      "networkProxyWs": "WS proxy，可留空",
      "networkProxyWss": "WSS proxy，可留空",
      "networkProxyNoProxy": "不走代理，例如 localhost, 127.0.0.1, ::1",
      "networkProxySave": "保存代理设置",
      "archivedChats": "归档对话",
      "archivedChatsDesc": "查看已归档的聊天，恢复需要继续的对话，或永久删除不再需要的记录",
      "viewArchivedChats": "查看归档对话",
      "fileBackup": "文件备份",
      "fileBackupDesc": "AI 修改或删除文件前自动保存原始内容",
      "retention": "保留时长",
      "retention1d": "1 天",
      "retention3d": "3 天",
      "retention7d": "7 天",
      "maxFileSize": "忽略大于",
      "viewBackups": "查看备份",
      "hideBackups": "收起",
      "restoreBtn": "恢复",
      "noBackups": "暂无备份记录",
      "restoreSuccess": "已恢复",
      "restoreFailed": "恢复失败"
    },
    "me": {
      "title": "我",
      "changeAvatar": "更换",
      "userNameHint": "Ta 怎么称呼你",
      "userProfile": "用户档案",
      "userProfileHint": "让助手了解你：兴趣、习惯、偏好等，会注入到系统提示词中",
      "nameLabel": "名字"
    },
    "crop": {
      "title": "调整头像",
      "hint": "拖拽移动，滚轮缩放",
      "cancel": "取消",
      "confirm": "确定",
      "updated": "头像已更新 ✿",
      "reset": "已恢复默认头像"
    },
    "providers": {
      "title": "已注册的供应商",
      "addTitle": "添加供应商",
      "name": "供应商",
      "customName": "名称",
      "customUrl": "Base URL",
      "apiFormat": "API 协议",
      "url": "Base URL",
      "apiKey": "API Key",
      "addBtn": "添加",
      "empty": "还没有注册供应商",
      "fetchModels": "读取模型",
      "delete": "删除供应商",
      "modelCount": "{n} 个模型",
      "fetchSuccess": "{name} 获取了 {n} 个模型",
      "fetchFailed": "拉取失败",
      "nameRequired": "请输入供应商名称",
      "urlRequired": "请输入 Base URL",
      "apiRequired": "请选择 API 协议",
      "added": "已添加 {name}",
      "deleted": "已删除 {name}",
      "noModels": "暂无模型",
      "resetModels": "重置模型",
      "apiType": "API 类型",
      "verify": "验证",
      "verifyConnection": "验证连接",
      "verifySuccess": "验证通过",
      "verifyFailed": "验证失败",
      "setupHint": "输入 API Key 以启用此供应商",
      "configInvalid": "该供应商配置损坏，已被暂时跳过。请重新保存配置，或删除后重建。",
      "configIncomplete": "该供应商配置不完整，请补全 API Key、Base URL，并添加或读取模型。",
      "selectHint": "选择一个供应商查看详情",
      "addCustom": "添加自定义供应商",
      "noKey": "未配置",
      "remove": "移除",
      "deleteConfirm": "确定删除供应商 {name}？相关模型将一并清除。"
    },
    "usage": {
      "title": "用量统计",
      "note": "用量仅作参考，具体以供应商的统计为准。",
      "refresh": "刷新用量",
      "total": "全部",
      "requests": "请求数",
      "totalTokens": "Tokens",
      "cacheRead": "缓存命中",
      "cacheHitRate": "命中率",
      "uncached": "未缓存消耗",
      "modelMix": "模型分布",
      "dailyUsage": "每日用量",
      "requestLedger": "请求明细",
      "loading": "正在读取用量…",
      "empty": "暂无用量记录",
      "groupMeta": "{requests} 次 · {errors} 错误",
      "cacheShort": "缓存 {tokens}",
      "tokensShort": "{tokens} tok",
      "cacheSummary": "缓存 {cache} · 未缓存 {uncached}",
      "window": {
        "week": "近 7 天",
        "month": "近 30 天"
      },
      "period": {
        "week": "周",
        "month": "月"
      },
      "view": {
        "overall": "总览",
        "daily": "按日期",
        "category": "按类别",
        "model": "按模型"
      },
      "category": {
        "session": "Session",
        "phone": "Phone",
        "memory": "记忆",
        "automation": "自动化",
        "subagent": "Subagent",
        "compaction": "压缩",
        "plugin": "插件",
        "utility": "工具",
        "vision": "视觉",
        "unknown": "未知"
      },
      "status": {
        "ok": "完成",
        "error": "错误",
        "aborted": "中止",
        "usage_missing": "无用量"
      }
    },
    "media": {
      "imageGeneration": "图片生成",
      "defaultModel": "默认图片模型",
      "credentialOk": "API Key 已配置（复用供应商设置）",
      "credentialMissing": "未配置，前往供应商设置",
      "adapterMissing": "缺少图片生成适配器",
      "addModel": "添加图片模型",
      "providerDefaults": "默认参数",
      "size": "尺寸",
      "format": "格式",
      "quality": "质量",
      "watermark": "水印",
      "aspectRatio": "长宽比",
      "speechRecognition": "语音识别",
      "speechRecognitionEnabled": "发送语音条时转录",
      "defaultSpeechModel": "语音条转录模型",
      "speechModels": "转录模型",
      "speechSynthesis": "语音合成",
      "comingSoon": "即将推出",
      "noProvider": "请选择一个供应商查看详情",
      "models": "图片模型",
      "globalDefault": "全局默认",
      "followGlobal": "跟随全局默认",
      "default": "默认",
      "defaultOption": "默认",
      "qualityLow": "低",
      "qualityMedium": "中",
      "qualityHigh": "高"
    },
    "oauth": {
      "title": "快速登录",
      "login": "登录",
      "logout": "登出",
      "loggedIn": "已登录",
      "codePlaceholder": "粘贴授权码",
      "submit": "确认",
      "success": "登录成功",
      "loggedOut": "已登出",
      "failed": "登录失败",
      "deviceHint": "在浏览器中输入此验证码并授权",
      "waiting": "等待授权中…",
      "clickToCopy": "点击复制",
      "codeCopied": "验证码已复制",
      "addModel": "添加模型",
      "customModelPlaceholder": "输入模型 ID"
    },
    "api": {
      "title": "模型与接口",
      "mainApi": "主 API",
      "provider": "Provider",
      "baseUrl": "Base URL",
      "baseUrlHint": "请显式填写 Base URL",
      "apiKey": "API Key",
      "apiKeyPlaceholder": "输入新的 Key 以更新",
      "utilityApi": "工具模型 API",
      "utilityApiHint": "单独配置时需要完整填写 provider、Base URL 和 API Key",
      "showKey": "显示",
      "hideKey": "隐藏",
      "selectModel": "选择模型",
      "customModel": "自定义...",
      "mainModelSection": "模型",
      "mainModelHint": "这里的模型会显示在聊天页面",
      "addModel": "添加模型",
      "defaultModel": "默认",
      "removeModel": "移除",
      "noModels": "还没有添加模型",
      "otherModelSection": "其他模型",
      "chatModel": "主模型",
      "utilityModel": "小工具模型",
      "utilityModelHint": "生成标题、轻量分类等简单任务，推荐用便宜的小模型",
      "utilityLargeModel": "大工具模型",
      "utilityLargeModelHint": "活动摘要、任务拆解等需要理解力的场景，留空则复用小工具模型",
      "visionModel": "视觉辅助模型",
      "visionAuxiliaryToggle": "辅助视觉开关",
      "visionModelHint": "仅在当前聊天模型不能接收图片时，用来先看图并递交简洁说明",
      "visionModelMissingHint": "如果找不到你的模型，请在供应商页面配置视觉能力。",
      "searchProvider": "搜索服务",
      "searchProviderField": "搜索引擎",
      "searchApiKey": "搜索 API Key",
      "searchApiKeyHint": "启用搜索时请填写所选 provider 的 API Key",
      "searchApiKeysAutoHint": "Auto 会优先使用已配置的 Tavily、Brave、Serper，然后使用 AnySearch 免费搜索；额度耗尽、报错、空结果或相关性较弱时再回退到浏览器搜索。",
      "searchApiKeyNotRequired": "浏览器搜索不需要 API Key，会在本机后台打开搜索页并整理结果。",
      "favorites": "收藏",
      "searchModel": "搜索模型...",
      "noFavorites": "点击 ☆ 收藏常用模型",
      "customInput": "自定义...",
      "editModel": "编辑",
      "contextLength": "上下文长度",
      "contextShort": "上下文",
      "maxOutput": "最大输出",
      "outputLength": "输出长度",
      "modelName": "模型",
      "output": "输出",
      "save": "保存",
      "cancel": "取消",
      "thinkingLevel": "思考强度",
      "thinkingLevelHint": "控制模型的推理深度，仅对支持推理的模型生效",
      "thinkingLevels": {
        "off": "关闭",
        "low": "浅思",
        "medium": "中等",
        "high": "深思",
        "auto": "自动",
        "xhigh": "极限"
      },
      "addedModels": "已添加的模型",
      "displayName": "显示名称",
      "vision": "视觉",
      "video": "视频",
      "audio": "音频",
      "reasoning": "推理",
      "capability": {
        "image": "支持图像输入",
        "video": "支持视频输入",
        "audio": "支持音频输入",
        "reasoning": "支持推理"
      }
    },
    "memory": {
      "sectionTitle": "记忆",
      "title": "记忆开关",
      "needsUtilityModel": "需要先在「模型」中配置 Utility 模型",
      "compiled": "当下记忆",
      "compiledHint": "助手记住的关于你的，重要的与近期的事",
      "compiledView": "查看当下记忆",
      "compiledEmpty": "还没有编译过记忆",
      "compiledClear": "清空",
      "compiledCleared": "编译记忆已清空",
      "health": {
        "healthy": "记忆整理正常",
        "degraded": "记忆整理有延迟",
        "unhealthy": "记忆整理需要处理",
        "disabled": "记忆已关闭",
        "unavailable": "记忆状态暂不可用",
        "stepSeparator": "、",
        "failedSteps": "异常步骤：{steps}",
        "lastError": "最近错误：{time}",
        "errorMessage": "错误：{message}",
        "steps": {
          "rollingSummary": "滚动摘要",
          "compileToday": "今日记忆",
          "compileWeek": "本周记忆",
          "compileLongterm": "长期记忆",
          "compileFacts": "事实记忆",
          "deepMemory": "深层记忆"
        }
      },
      "allMemories": "所有记忆",
      "tokenBudget": "记忆容量",
      "tokenBudgetHint": "memory.md 的目标 token 预算",
      "decayPerDay": "衰减系数",
      "decayPerDayHint": "高斯衰减的基础 λ 值",
      "hitBonus": "命中加分",
      "hitBonusHint": "每次提及记忆时增加的分数",
      "baseImportance": "初始重要度",
      "baseImportanceHint": "新记忆的默认初始分",
      "forgetSpeed": "遗忘倍率",
      "forgetSpeedHint": "1.0 = 正常，2.0 = 忘得快一倍",
      "compileThreshold": "编译阈值",
      "compileThresholdHint": "分数低于此值的记忆不进入 memory.md",
      "timezone": "时区",
      "timezoneHint": "用于记忆的时间标记",
      "actions": {
        "title": "记忆管理",
        "view": "查看记忆",
        "clear": "清除记忆",
        "more": "更多",
        "export": "导出记忆",
        "import": "导入记忆",
        "clearConfirm": "确定要清除所有记忆吗？此操作不可撤销。",
        "cancel": "取消",
        "confirmClear": "确认清除",
        "viewTitle": "所有记忆",
        "clearSuccess": "记忆已清除",
        "exportSuccess": "导出成功",
        "importSuccess": "已导入 {count} 条记忆",
        "importing": "正在导入...",
        "empty": "还没有记忆",
        "invalidFile": "无效的记忆文件",
        "activeOnly": "请先将此助手设为主助手"
      },
      "unknownDate": "未知日期",
      "threshold": {
        "title": "记忆水位线",
        "hint": "有多少记忆能被记住由你决定。有一些杂音是可以的，大语言模型可以很好的识别",
        "stats": "记住 {remembered} 条 / 共 {total} 条记忆"
      },
      "activeOnly": "请先将此助手设为主助手"
    },
    "pins": {
      "title": "置顶记忆",
      "hint": "你主动告诉助手一定要记住的东西，也可以手动编辑与添加",
      "empty": "还没有置顶记忆",
      "delete": "删除",
      "addPlaceholder": "添加一条置顶记忆..."
    },
    "experience": {
      "title": "经验",
      "hint": "助手积累的工作经验，按分类整理。助手在开始工作前会自动检查相关经验",
      "toggleLabel": "启用经验",
      "toggleHint": "默认关闭。开启后，助手会自动总结工作经验并不断成长，但有污染上下文的风险。",
      "paused": "经验已暂停。已有内容会保留，但助手不能读取或记录经验。",
      "empty": "暂无经验积累",
      "edit": "编辑",
      "deleteCategory": "删除分类"
    },
    "search": {
      "verify": "验证",
      "verifying": "验证中...",
      "verified": "验证通过，已保存 ✿",
      "verifyFailed": "验证失败",
      "noProvider": "请先选择搜索引擎",
      "noKey": "请先输入 API Key"
    },
    "work": {
      "title": "巡检",
      "heartbeatMaster": "巡检总开关",
      "heartbeatMasterDesc": "关闭后所有助手的巡检均暂停",
      "heartbeatEnabled": "巡检模式",
      "heartbeatOn": "已开启",
      "heartbeatOff": "已关闭",
      "heartbeatInterval": "巡检间隔",
      "heartbeatUnit": "分钟",
      "heartbeatDesc": "助手每隔多久自动巡检一次工作台",
      "automationPermissionMode": "自动化运行权限",
      "automationPermissionModeDesc": "决定后台自动化 Agent Run 能否自动审核工具调用、完整执行，或只读取信息",
      "homeFolder": "工作台",
      "homeFolderDesc": "新建对话默认使用的工作目录，巡检和定时任务也在这里执行",
      "homeFolderPlaceholder": "未设置（每次手动选择）",
      "homeFolderClear": "清除",
      "homeFolderBrowse": "选择文件夹",
      "contextFilesTitle": "工作台说明注入",
      "contextFilesDesc": "把当前工作台项目里的 AGENTS.md / CLAUDE.md 注入到新建会话的系统提示词中，位置在记忆之前。",
      "injectAgentsMd": "注入 AGENTS.md",
      "injectAgentsMdDesc": "开启后，新会话会读取当前工作目录到 Git 根目录之间的 AGENTS.md。",
      "injectClaudeMd": "注入 CLAUDE.md",
      "injectClaudeMdDesc": "开启后，新会话会读取当前工作目录到 Git 根目录之间的 CLAUDE.md。"
    },
    "toolCaps": {
      "title": "技能安装权限"
    },
    "skills": {
      "title": "技能管理",
      "desc": "启用或关闭助手的技能。启用后，助手在相关对话中会自动识别并使用对应技能。",
      "manageTitle": "已装技能",
      "agentConfigTitle": "Agent Skill 配置",
      "configureFor": "正在配置:",
      "userSkillsTitle": "助手技能配置",
      "user": "用户技能",
      "system": "系统技能",
      "add": "添加技能",
      "delete": "删除",
      "deleteConfirm": "确定删除技能「{name}」？",
      "installSuccess": "技能「{name}」已安装",
      "installError": "安装失败",
      "enabled": "已启用",
      "disabled": "未启用",
      "noSkills": "暂无可用技能",
      "noUser": "暂无自定义技能",
      "copyToSkills": "复制到我的技能",
      "copied": "已复制 ✓",
      "copyFailed": "复制失败",
      "dropzone": "拖入技能文件夹安装，或点击选择",
      "learnHint": "试着对助手说：帮我从 GitHub 上找一些安全并且有用的技能",
      "reloaded": "技能已刷新",
      "reload": "刷新技能",
      "compatTitle": "兼容技能",
      "compatDesc": "自动发现其他 AI 工具安装的技能",
      "compatNoSkills": "未发现外部技能",
      "compatAddPath": "添加目录",
      "compatRemove": "移除",
      "compatAutoDiscovered": "自动发现",
      "compatNotInstalled": "未安装",
      "learnCreate": "自行创建 / 安装技能",
      "learnCreateDesc": "允许 Agent 编写新技能或通过工具调用安装到通用技能池，并默认只为当前 Agent 启用",
      "fetchRemote": "从 GitHub / ClawHub 主动获取技能",
      "fetchRemoteDesc": "开启后 Agent 会在执行专业任务时主动搜索并安装合适的技能，请谨慎",
      "safetyReview": "安装前安全审查",
      "safetyReviewDesc": "安装技能前通过 AI 检测 prompt injection 等安全风险",
      "fetchWarning": {
        "title": "关于主动获取技能",
        "body1": "开启后，Agent 在执行专业任务时会主动从 GitHub 和 ClawHub 搜索、下载并安装合适的技能。",
        "body2": "虽然安装前会进行自动安全审查和 star 数门槛检查，但仍存在以下风险：",
        "risk1": "技能内容未经人工审核，可能包含不当指令",
        "risk2": "Agent 可能安装与预期不符的技能",
        "risk3": "恶意技能可能尝试操控 Agent 行为",
        "confirm": "我了解风险，开启"
      },
      "safetyWarning": {
        "title": "关闭安全审查",
        "body1": "安全审查会在安装技能前检测潜在的恶意内容，包括：",
        "risk1": "Prompt injection（越权指令）",
        "risk2": "过于宽泛的触发条件",
        "risk3": "社会工程和权限提升尝试",
        "body2": "关闭后，所有技能将不经审查直接安装。",
        "confirm": "我了解风险，关闭审查"
      },
      "bundleDialog": {
        "createTitle": "新建 Bundle",
        "renameTitle": "重命名 Bundle",
        "dissolveTitle": "打散 Bundle",
        "cancel": "取消",
        "closeAriaLabel": "取消",
        "dissolveConfirm": "打散 {name}？Skill 会保留在公共库里，并显示为散装 Skill。",
        "bundleNameLabel": "Bundle 名字",
        "cancelBtn": "取消",
        "createBtn": "创建",
        "saveBtn": "保存",
        "dissolveBtn": "打散"
      },
      "exportedWithSkipped": "已导出 {fileName}，跳过 {count} 个缺失 Skill",
      "exported": "已导出 {fileName}",
      "createBundleBtn": "新建 Bundle",
      "createBundleTitle": "新建 Skill Bundle",
      "createBundleAriaLabel": "新建 Skill Bundle",
      "emptyBundle": "空 Bundle",
      "skillNotFound": "这个 Skill 已不存在",
      "noLooseSkills": "没有散装 Skill",
      "collapseBundleAriaLabel": "收起 Bundle",
      "expandBundleAriaLabel": "展开 Bundle",
      "enableBundleTitle": "启用整个 Bundle",
      "disableBundleTitle": "关闭整个 Bundle",
      "enableBundleAriaLabel": "启用 {name}",
      "disableBundleAriaLabel": "关闭 {name}",
      "renameBundleTitle": "重命名 Bundle",
      "renameBundleAriaLabel": "重命名 {name}",
      "exportBundleTitle": "导出 Skill Bundle",
      "exportBundleAriaLabel": "导出 {name}",
      "dissolveBundleTitle": "打散 Bundle",
      "dissolveBundleAriaLabel": "打散 {name}",
      "removeFromBundleTitle": "移出 Bundle，变为散装 Skill",
      "removeFromBundleAriaLabel": "将 {name} 移出 Bundle"
    },
    "plugins": {
      "title": "插件",
      "desc": "管理社区插件。",
      "empty": "暂无插件",
      "reload": "刷新",
      "statusLoaded": "已加载",
      "statusFailed": "加载失败",
      "statusDisabled": "已禁用",
      "fullAccessToggle": "允许全权插件",
      "fullAccessDesc": "开启后，声明 full-access 的插件将获得完整系统权限（路由、钩子、Provider 等）",
      "devToolsToggle": "允许 Agent 插件开发工具",
      "devToolsDesc": "开启后，Agent 可以安装、重载、启停和卸载开发态插件。只作用于开发插件目录，不影响正式安装的插件。",
      "dropzone": "拖入插件文件夹或 .zip 安装，或点击选择",
      "statusRestricted": "需要全权许可",
      "deleteConfirm": "移除插件「{name}」？插件数据将保留。",
      "installSuccess": "插件「{name}」已安装",
      "installError": "插件安装失败",
      "invalidPlugin": "不是有效的插件目录",
      "pluginsDir": "插件目录：{path}",
      "needsFullAccess": "请先开启「允许全权插件」",
      "configure": "配置「{name}」",
      "configTitle": "「{name}」设置",
      "configLoadError": "插件设置加载失败",
      "sensitiveHint": "已保存的值会被隐藏。输入新值即可替换。",
      "invalidJson": "JSON 格式不正确",
      "showDiagnostics": "查看插件诊断",
      "diagnosticsTitle": "插件诊断",
      "diagnosticsLoadError": "插件诊断加载失败",
      "diagnosticsSummary": "能力 {capabilities}/{total} · 任务 {tasks} · 计划 {schedules}",
      "noDiagnostics": "暂无诊断数据",
      "diagnosticActivation": "激活：{state}",
      "diagnosticRoutes": "页面 {pages} · 组件 {widgets} · 设置页 {settingsTabs}",
      "diagnosticTools": "工具 {count}",
      "diagnosticCommands": "命令 {count}",
      "diagnosticConfig": "配置项 {count}",
      "openMarketplace": "打开插件市场",
      "marketBack": "返回插件管理",
      "marketplaceTitle": "插件市场",
      "marketplaceHint": "浏览可安装插件，查看 README、权限和贡献类型。",
      "marketplaceCount": "{count} 个插件",
      "marketplaceNoSource": "未配置市场源",
      "marketplaceEmpty": "暂无可浏览插件",
      "marketLoading": "正在读取插件市场…",
      "marketLoadError": "插件市场加载失败",
      "marketReadmeLoadError": "README 加载失败",
      "marketInstalled": "已安装",
      "marketInstall": "安装",
      "marketUpdate": "更新",
      "marketReinstall": "重新安装",
      "marketDowngrade": "降级",
      "marketIncompatible": "不兼容",
      "marketUpdateAvailable": "可更新",
      "marketInstalledVersion": "已安装 v{version}",
      "marketUpdateFrom": "已安装 v{from}，可更新到 v{to}",
      "marketDowngradeTo": "当前只能安装兼容版本 v{version}",
      "marketDowngradeConfirm": "当前版本是 v{from}，将降级到 v{to}。继续吗？",
      "marketReadmeLoading": "正在读取 README…",
      "marketSelectPlugin": "选择一个插件查看 README",
      "manageTitle": "管理插件",
      "permissionTitle": "权限"
    },
    "mcp": {
      "masterTitle": "总开关",
      "masterName": "启用连接器",
      "masterDesc": "关闭后，新会话不会暴露任何 MCP 连接器工具；已冻结的旧会话调用时会收到明确错误。",
      "connectorsTitle": "连接器",
      "connectorName": "名称",
      "description": "描述",
      "descriptionPlaceholder": "可选，用来说明这个连接器的用途",
      "connectorMode": "类型",
      "modeRemote": "远程",
      "modeLocal": "本地命令",
      "remoteUrl": "远程 URL",
      "transport": "传输",
      "transportAuto": "自动",
      "transportStreamable": "Streamable HTTP",
      "transportSse": "SSE",
      "authType": "鉴权",
      "authNone": "无",
      "authBearer": "Bearer Token",
      "authOAuth": "OAuth",
      "authToken": "访问令牌",
      "oauthClientId": "OAuth Client ID",
      "oauthClientSecret": "OAuth Client Secret",
      "oauthConnect": "连接",
      "oauthConnected": "OAuth 已连接",
      "oauthDisconnected": "OAuth 未连接",
      "headers": "请求头",
      "headersHint": "每行一个 KEY=value。保存后会脱敏展示，请求远程 MCP 时会带上这些 headers。",
      "statusRunning": "运行中",
      "statusStopped": "已停止",
      "statusConnecting": "连接中",
      "statusReconnecting": "重连中",
      "statusFailed": "重连失败",
      "statusNeedsAuth": "需重新登录",
      "command": "命令",
      "args": "参数",
      "cwd": "工作目录",
      "cwdPlaceholder": "可选",
      "registryUrl": "Registry",
      "env": "环境变量",
      "envHint": "每行一个 KEY=value。只会传给本地 stdio MCP server 子进程。",
      "timeout": "超时秒数",
      "autoStart": "自动启动",
      "addConnector": "添加连接器",
      "updateConnector": "更新连接器",
      "importJson": "导入 JSON",
      "importJsonHint": "支持 Cherry Studio、Claude 等 mcpServers JSON 配置格式。",
      "noConnectors": "暂无连接器",
      "envCount": "个环境变量",
      "headersCount": "个请求头",
      "toolsCount": "个工具",
      "start": "启动",
      "stop": "停止",
      "refresh": "刷新工具",
      "removeConfirm": "确定移除此连接器？已保存的 per-agent 开关会保留但不再生效。",
      "agentTitle": "助手配置",
      "agentConnectorDesc": "像技能一样，只对选中的助手启用。",
      "saveError": "保存失败"
    },
    "screenshot": {
      "title": "截图分享",
      "desc": "选择你分享对话的截图样式与排版",
      "color": "配色",
      "width": "宽度",
      "font": "字体",
      "fontLabel": "截图字体",
      "fontHint": "不选单独字体时，截图会跟随外观里的阅读字体。",
      "light": "浅色",
      "dark": "深色",
      "sakura": "青空与樱",
      "mobile": "手机看",
      "desktop": "电脑看",
      "mobileTitle": "手机排版",
      "mobileDesc": "长图，适合手机分享",
      "desktopTitle": "电脑排版",
      "desktopDesc": "更宽，适合电脑保存与分享",
      "segmentTitle": "自动分段",
      "segmentLimitLabel": "单页字数上限",
      "segmentLimitHint": "超过这个可见字数后会在完整轮次边界切到下一张截图；默认 10000 字。",
      "segmentLimitUnit": "字"
    },
    "bridge": {
      "agent": "Agent",
      "telegram": "Telegram",
      "telegramToken": "Bot Token",
      "telegramHint": "从 @BotFather 获取",
      "feishu": "飞书",
      "feishuAppId": "App ID",
      "feishuAppSecret": "App Secret",
      "feishuHint": "从飞书开放平台获取；使用长连接接收事件，不需要本地回调 URL",
      "whatsapp": "WhatsApp",
      "qq": "QQ",
      "qqAppId": "App ID",
      "qqAppSecret": "App Secret",
      "qqHint": "从 QQ 机器人开放平台（q.qq.com/qqbot）获取",
      "wechat": "微信",
      "wechatHint": "通过微信 iLink 协议接入个人号",
      "wechatExclusive": "一个微信号只能绑定一个 Agent，绑定新 Agent 后旧的会自动失效",
      "wechatReplyWindowReminder": "微信主动通知依赖最近一次收到消息后的回复窗口。如果提醒没有送达，可以先给这个 Agent 发一条微信来激活窗口。",
      "wechatScan": "扫码登录",
      "wechatRescan": "重新登录",
      "wechatLoggedIn": "已登录",
      "wechatNeedScan": "请先扫码登录",
      "wechatScanning": "请用微信扫描二维码",
      "wechatScanned": "已扫码，请在手机上确认",
      "wechatExpired": "二维码已过期",
      "wechatLoginSuccess": "登录成功",
      "wechatLoginFailed": "登录失败",
      "wechatUnbind": "解除绑定",
      "wechatUnbound": "已解除微信绑定",
      "connected": "已连接",
      "disconnected": "未连接",
      "error": "连接失败",
      "test": "测试连接",
      "testOk": "连接成功",
      "testFail": "测试失败",
      "noToken": "请先输入 Bot Token",
      "noCredentials": "请先填写 App ID 和 App Secret",
      "globalSettings": "全局设置",
      "agentSettings": "角色",
      "permissionMode": "权限模式",
      "permissionModeDesc": "决定外部平台机器人能否自动审核工具调用、完整执行，或只读取信息",
      "permissionModeAuto": "自动审核",
      "permissionModeOperate": "完整权限",
      "permissionModeReadOnly": "只读模式",
      "receiptEnabled": "回复前提示",
      "receiptEnabledDesc": "收到消息后，先发送一条“已接收并正在回复”的提示",
      "readOnly": "只读模式",
      "readOnlyDesc": "外部平台的机器人只能读取文件，不能执行写入和命令操作",
      "howTo": "如何接入？",
      "tutorialTitle": "平台接入教程",
      "tutorialTgSteps": [
        "在 Telegram 搜索 <code>@BotFather</code> 并打开对话",
        "发送 <code>/newbot</code>，按提示设置 Bot 名称和用户名",
        "创建完成后 BotFather 会回复一串 Bot Token（格式如 <code>123456:ABC-DEF...</code>）",
        "将 Token 粘贴到上方输入框，打开开关即可",
        "在 Telegram 找到你的 Bot，发消息试试吧"
      ],
      "ownerSelect": "哪个账号是你",
      "ownerWarning": "所选账号可访问你的文件和隐私信息，请确认是你本人。",
      "ownerNone": "发送一条消息后即可选择",
      "ownerSaved": "已保存",
      "ownerConfirmTitle": "确认设为 Owner？",
      "ownerConfirmText": "Owner 拥有完整的 Agent 权限，包括记忆、工具调用和人格。请确认这是你本人的账号。",
      "ownerConfirmCancel": "取消",
      "ownerConfirmSave": "确认",
      "tutorialFsSteps": [
        "前往 <code>open.feishu.cn</code>，登录后进入「开发者后台」",
        "点击「创建企业自建应用」，填写应用名称和描述",
        "在「凭证与基础信息」页面复制 <code>App ID</code> 和 <code>App Secret</code>",
        "在左侧菜单找到「添加应用能力」，添加「机器人」能力，给机器人起个名字",
        "进入「权限管理」，搜索并开通 <code>im:message</code>（获取与发送消息）权限",
        "进入「事件与回调」→「事件配置」，将订阅方式改为「使用长连接接收事件」",
        "点击「添加事件」，添加 <code>im.message.receive_v1</code>（接收消息）",
        "重要：进入「版本管理与发布」，先创建并发布一个版本（长连接配置需要应用已发布才能保存）",
        "将 App ID 和 App Secret 粘贴到上方输入框，打开开关即可"
      ],
      "whatsappHint": "即将支持"
    },
    "characterCard": {
      "exportMemory": "导出记忆",
      "importMemory": "导入记忆",
      "noExportableMemory": "无可导出记忆",
      "noImportableMemory": "无可导入记忆",
      "confirm": "确定",
      "exporting": "正在导出",
      "importing": "正在导入",
      "noDescription": "这个角色卡没有写入 Description。",
      "noIshiki": "未提供 Ishiki",
      "viewDetail": "查看角色卡详情",
      "memoryCount": "{count} 个记忆项目，可选{action}",
      "memoryCountExport": "导出",
      "memoryCountImport": "导入",
      "noMemory": "无记忆",
      "factsSectionTitle": "重要事实",
      "todaySectionTitle": "今天",
      "weekSectionTitle": "本周早些时候",
      "longtermSectionTitle": "长期情况",
      "emptySection": "无",
      "noIdentity": "未提供 Identity",
      "noSkills": "未包含 Skill",
      "cancel": "取消",
      "readingCard": "正在读取角色卡",
      "dropOrClick": "拖入角色卡或点击打开",
      "readFailed": "角色卡读取失败",
      "importFailed": "角色卡导入失败"
    }
  },
  "onboarding": {
    "welcome": {
      "title": "你好，我是 {name} ✿",
      "subtitle": "我是你的个人 AI 助手。\n来做一些简单的设置，让我们开始吧。",
      "next": "开始设置"
    },
    "remote": {
      "link": "已有服务器？使用局域网连接",
      "url": "服务器地址",
      "key": "访问密钥",
      "connect": "连接",
      "connecting": "连接中...",
      "failed": "连接局域网服务器失败"
    },
    "name": {
      "title": "名字与记忆",
      "subtitle": "先让我知道该怎么称呼你，也给这个 Agent 一个名字。",
      "userLabel": "我该怎么称呼你？",
      "placeholder": "你的名字",
      "agentLabel": "这个 Agent 叫什么？",
      "agentPlaceholder": "小花",
      "memoryTitle": "记忆系统",
      "memoryHint": "开启后，系统会在对话结束时整理聊天内容，形成记忆。因为记忆会经常更新，会导致模型缓存命中率降低，关掉记忆时通常会更省钱。",
      "back": "上一步",
      "next": "下一步"
    },
    "provider": {
      "title": "选择 AI 供应商",
      "subtitle": "我需要一个 AI 模型供应商来工作。\n选择你常用的供应商并填入 API Key。",
      "selectPlaceholder": "选择供应商",
      "searchPlaceholder": "搜索供应商...",
      "empty": "未找到供应商",
      "custom": "自定义...",
      "customName": "名称",
      "customNamePlaceholder": "如 my-provider",
      "customUrl": "API 地址",
      "customUrlPlaceholder": "如 https://api.example.com/v1",
      "keyLabel": "API Key",
      "keyPlaceholder": "粘贴你的 API Key",
      "test": "测试连接",
      "testing": "连接中...",
      "testSuccess": "连接成功 ✿",
      "testFailed": "连接失败",
      "back": "上一步",
      "next": "下一步"
    },
    "model": {
      "title": "选择对话模型",
      "subtitle": "这是我主要使用的模型。推荐选择一个聪明的大模型。",
      "loading": "正在获取模型列表...",
      "empty": "未找到模型",
      "addedModels": "已添加模型",
      "noAddedModels": "还没有添加模型",
      "addModel": "添加模型",
      "addModelSearchPlaceholder": "搜索可添加的模型...",
      "manualModelPlaceholder": "手动输入模型 ID",
      "addManualModel": "添加",
      "mainModel": "主模型",
      "setMainModel": "设为主模型",
      "editModel": "编辑模型",
      "removeModel": "移除模型",
      "editTitle": "编辑模型",
      "displayName": "显示名称",
      "contextLength": "上下文长度",
      "maxOutput": "最大输出",
      "imageInput": "支持图片",
      "audioInput": "支持音频",
      "reasoning": "推理模型",
      "cancelEdit": "取消",
      "saveEdit": "保存",
      "invalidNumber": "请输入有效的正整数",
      "utility": "小工具模型",
      "utilityHint": "对话摘要、事实提取等轻量任务，推荐便宜快速的小模型",
      "utilityLarge": "大工具模型",
      "utilityLargeHint": "记忆编译、深度分析等需要理解力的任务，推荐能力较强的模型",
      "back": "上一步",
      "next": "下一步"
    },
    "theme": {
      "title": "选择一个主题",
      "subtitle": "你可以随时在设置中更改",
      "back": "上一步",
      "next": "下一步"
    },
    "workspace": {
      "title": "创建工作台",
      "subtitle": "我会把默认工作台放在桌面上的 OH-WorkSpace。\n你也可以选择一个已有文件夹。",
      "defaultLabel": "默认工作台",
      "customLabel": "自选工作台",
      "defaultHint": "如果不选择其他文件夹，将自动创建这个目录。\n巡检默认关闭，之后可在设置中开启。",
      "choose": "选择文件夹",
      "useDefault": "使用默认",
      "back": "上一步",
      "next": "下一步",
      "saving": "保存中..."
    },
    "tutorial": {
      "title": "准备就绪 ✿",
      "memory": {
        "title": "记忆",
        "desc": "有多少记忆能被记住由你决定。\n记忆的留存不需要绝对一致。允许褶皱和缝隙存在，大语言模型能在具体的对话中辨认出哪些是符合现实情况的。"
      },
      "skills": {
        "title": "技能",
        "desc": "我可以读写文件、执行命令、搜索网页。在设置中可以管理更多技能。"
      },
      "workspace": {
        "title": "工作台",
        "desc": "指定一个文件夹作为工作台，我就可以帮你管理项目和文件。"
      },
      "jian": {
        "title": "笺",
        "desc": "在任意文件夹放一个 jian.md，写上你的指令。\n我会在巡检时看到它并自动执行。"
      },
      "agents": {
        "title": "多 Agent 协作",
        "desc": "不同 Agent 可以各自承担任务、互相接力。\n适合把复杂工作拆开处理。"
      },
      "finish": "开始使用"
    }
  },
  "activity": {
    "title": "助手活动",
    "empty": "暂时没有活动记录，日常巡检或定时任务执行后会出现在这里",
    "back": "返回",
    "heartbeat": "日常巡检",
    "subagent": "子 agent 任务",
    "cron": "定时任务",
    "automationRuns": "自定义自动化",
    "patrolRuns": "巡检",
    "otherRuns": "其他后台活动",
    "agentTabs": "按助手筛选活动",
    "previousAgent": "查看前面的助手",
    "nextAgent": "查看更多助手",
    "categoryTabs": "按活动类型筛选",
    "emptyForCategory": "当前分类暂无活动",
    "patrolDone": "日常巡检完毕",
    "cronDone": "定时任务执行完毕",
    "error": "执行异常",
    "viewSession": "展开过程",
    "expand": "展开过程",
    "collapse": "收起过程",
    "loadingSession": "正在读取这次后台会话…",
    "sessionLoadFailed": "这次后台会话暂时无法读取",
    "noSessionMessages": "这次后台会话没有可显示的消息",
    "duration": "耗时 {text}",
    "promote": "升格为对话"
  },
  "automation": {
    "title": "任务计划",
    "empty": "暂无任务计划\n助手会在需要时自动创建",
    "emptyForAgent": "这个助手暂无任务计划",
    "agentTabs": "按助手筛选自动化",
    "previousAgent": "查看前面的助手",
    "nextAgent": "查看更多助手",
    "draftTitle": "自动化草稿",
    "suggestionTitle": "建议",
    "suggested": "建议",
    "viewSuggestion": "查看建议",
    "openDraft": "打开自动化草稿",
    "closeDraft": "关闭自动化草稿",
    "confirmCreate": "确认添加",
    "confirmUpdate": "确认修改",
    "defaultModel": "默认模型",
    "add": "添加自动化",
    "enable": "启用",
    "disable": "停用",
    "newAutomation": "新的自动化",
    "newPrompt": "",
    "promptPlaceholder": "写下你想让 {agent} 做什么",
    "promptRequired": "先写下想让 Agent 做什么，再启用这条自动化",
    "createFailed": "创建自动化失败",
    "agentRequired": "需要先选择一个 Agent",
    "field": {
      "label": "名称",
      "agent": "助手",
      "scheduleType": "类型",
      "schedule": "时间",
      "prompt": "执行内容"
    },
    "schedule": {
      "at": "一次",
      "every": "每隔",
      "unit": "单位",
      "time": "时间",
      "hour": "小时",
      "minute": "分钟",
      "weekday": "星期",
      "monthDay": "日期",
      "dateTime": "日期时间",
      "cronExpression": "Cron 表达式",
      "onceAt": "一次：{date}",
      "advancedCron": "高级 Cron：{cron}",
      "mode": {
        "interval": "每隔多久",
        "daily": "每天",
        "weekly": "每周",
        "monthly": "每月",
        "once": "指定一次",
        "advanced": "高级 Cron"
      },
      "unitLabel": {
        "minutes": "分钟",
        "hours": "小时",
        "days": "天"
      }
    },
    "executor": {
      "agentSession": "助手执行",
      "notify": "通知",
      "pluginAction": "插件动作",
      "directAction": "直接动作"
    },
    "edit": "编辑",
    "delete": "删除"
  },
  "ctx": {
    "cut": "剪切",
    "copy": "复制",
    "paste": "粘贴",
    "selectAll": "全选"
  },
  "rightWorkspace": {
    "activity": {
      "title": "后台动态"
    },
    "todo": {
      "title": "进程",
      "waitForOutput": "输出完成后再标记"
    },
    "subagent": {
      "title": "子助手"
    },
    "workflow": {
      "title": "Workflow",
      "running": "已运行 {text}",
      "agents": "{n} 个 agent"
    },
    "session": {
      "title": "本次对话",
      "cwd": "工作目录",
      "model": "模型",
      "files": "文件",
      "authorizedFolders": "授权目录",
      "addAuthorizedFolder": "添加授权目录"
    },
    "tabs": {
      "label": "右侧工作台",
      "sessionFiles": "对话文件",
      "workspace": "工作台"
    },
    "sessionFiles": {
      "title": "对话文件",
      "empty": "本对话还没有产生或上传文件",
      "actions": {
        "preview": "预览",
        "open": "打开",
        "reveal": "定位",
        "downloadToDevice": "下载到本机",
        "copyPath": "复制路径",
        "copySelectedPaths": "复制 {n} 个路径",
        "sendToBridge": "发送到...",
        "sendToBridgeLoading": "正在加载 Bridge 会话...",
        "sendToBridgeEmpty": "没有可发送的 Bridge 会话",
        "sendToBridgeLoadFailed": "Bridge 会话加载失败"
      },
      "bridgeLoadFailed": "加载 Bridge 会话失败：{error}",
      "sendSuccess": "已发送到 {target}",
      "sendFailed": "发送到 {target} 失败：{error}",
      "list": "对话文件列表",
      "sort": {
        "label": "对话文件排序",
        "timeDesc": "时间↓",
        "nameAsc": "名称↑",
        "nameDesc": "名称↓",
        "typeAsc": "类型↑"
      },
      "status": {
        "available": "可用",
        "expired": "已过期"
      }
    },
    "jian": {
      "collapse": "收起笺",
      "expand": "展开笺"
    }
  },
  "desk": {
    "title": "书桌",
    "workspaceTitle": "工作台",
    "skills": "技能",
    "cwdSkills": "项目技能",
    "cwdSkillsEmpty": "当前文件夹没有项目技能",
    "cwdSkillsHint": "在文件夹下创建 .agents/skills/ 目录即可",
    "cwdSkillsDesc": "技能跟随工作台",
    "cwdSkillsDrop": "拖入文件夹或 .zip 安装技能",
    "deleteSkill": "删除技能",
    "openInFinder": "打开文件夹",
    "jianLabel": "笺",
    "jianPlaceholder": "写点什么，告诉助手这个文件夹里面的文件该如何处理...",
    "execLogLabel": "执行记录",
    "execLogDelete": "删除此条记录",
    "emptyTitle": "书桌还空空的呢",
    "emptyHint": "书桌是助手日常巡检的工作台，也是每次对话的默认目录\n去设置里指定一个文件夹吧",
    "goToSettings": "前往设置",
    "fileLabel": "文件",
    "openWithDefault": "用默认应用打开",
    "refresh": "刷新",
    "newMarkdownFileName": "未命名.md",
    "newFolder": "新建文件夹",
    "ctx": {
      "open": "打开",
      "openInFinder": "打开文件夹",
      "rename": "重命名",
      "copyPath": "复制路径",
      "delete": "删除",
      "deleteSelected": "删除 {count} 项",
      "deleteN": "删除 {n} 项",
      "newMdFile": "新建 Markdown 文档",
      "newFolder": "新建文件夹"
    },
    "deleteConfirm": "要把「{name}」移到系统废纸篓吗？",
    "deleteSelectedConfirm": "要把选中的 {count} 项移到系统废纸篓吗？",
    "trashFailed": "移到系统废纸篓失败",
    "createFailed": "创建失败",
    "renameInvalid": "文件名不能包含路径分隔符",
    "renameFailed": "重命名失败",
    "sort": {
      "label": "排序",
      "mtime": "修改时间",
      "nameAsc": "名称 A→Z",
      "nameDesc": "名称 Z→A",
      "size": "文件大小",
      "type": "文件类型",
      "mtimeShort": "时间",
      "nameAscShort": "名称↑",
      "nameDescShort": "名称↓",
      "sizeShort": "大小",
      "typeShort": "类型"
    },
    "filter": {
      "label": "过滤",
      "images": "图片",
      "text": "文本",
      "videos": "视频",
      "clear": "清除过滤",
      "activeShort": "{count} 类"
    },
    "search": {
      "placeholder": "搜索工作台",
      "label": "搜索工作台文件",
      "results": "搜索结果",
      "empty": "没有找到匹配文件",
      "root": "根目录"
    }
  },
  "window": {
    "minimize": "最小化",
    "maximize": "最大化",
    "close": "关闭"
  },
  "browser": {
    "using": "正在用浏览器",
    "close": "关闭浏览器",
    "closeBtn": "关闭",
    "back": "后退",
    "forward": "前进",
    "reload": "刷新",
    "newTab": "新标签页",
    "closeTab": "关闭标签页",
    "emergencyStop": "紧急停止 AI 控制",
    "backgroundHint": "后台浏览器运行中，点击查看",
    "background": "后台浏览器"
  },
  "bridge": {
    "selectChat": "选择一个对话",
    "noSessions": "暂无对话",
    "noMessages": "暂无消息",
    "empty": "暂无消息记录",
    "notConfigured": "尚未配置 {platform}",
    "goToSettings": "前往设置",
    "resetContext": "重启上下文",
    "resetContextTip": "下次消息将开启新对话",
    "replyInterrupted": "（回复中断，以上内容可能不完整）",
    "replyFailed": "（回复生成失败，请稍后重试）",
    "sessionBusy": "当前桌面会话仍在回复中，请稍后再发"
  },
  "notification": {
    "turnCompletionBody": "这一轮已经完成"
  },
  "error": {
    "pathsRequired": "需要 paths 数组",
    "tooManyFiles": "文件数量超过限制（最多 {max} 个文件，当前 {n} 个）",
    "pathNotFound": "路径不存在",
    "missingParam": "缺少 {param} 参数",
    "invalidJson": "请求体必须是 JSON 对象",
    "sessionNotFound": "Session 文件不存在",
    "stillStreaming": "{name} 还在说话，请等一下",
    "agentNameEmpty": "助手名字不能为空",
    "agentIdInvalid": "助手 ID 包含非法字符",
    "agentAlreadyExists": "助手 \"{id}\" 已存在",
    "agentSwitching": "正在切换助手，请稍后再试",
    "agentNotFound": "助手 \"{id}\" 不存在或未初始化",
    "agentModelNotAvailable": "agent \"{id}\" 配置的模型 \"{model}\" 不在可用列表中",
    "agentDeleteActive": "不能删除当前正在使用的助手",
    "agentNotExists": "助手 \"{id}\" 不存在",
    "modelNoResponse": "模型未返回任何内容，请检查 API 配置和网络连接。",
    "noActiveSession": "没有活跃的 session",
    "compacting": "正在压缩中",
    "waitForReply": "请等待回复结束后再压缩",
    "compactFailed": "压缩失败: {msg}",
    "maxImages": "最多支持 {max} 张图片",
    "maxVideos": "最多支持 {max} 个视频",
    "maxAudios": "最多支持 {max} 个音频",
    "unsupportedImageFormat": "不支持的图片格式: {mime}",
    "unsupportedVideoFormat": "不支持的视频格式: {mime}",
    "unsupportedAudioFormat": "不支持的音频格式: {mime}",
    "imageTooLarge": "单张图片不得超过 20MB",
    "videoTooLarge": "单个视频不得超过 20MB",
    "audioTooLarge": "单个音频不得超过 50MB",
    "viewImage": "（看图）",
    "viewVideo": "（看视频）",
    "listenAudio": "（听音频）",
    "modelNoVision": "当前模型不支持图片，请切换到支持图片的模型后再试",
    "searchProviderNotConfigured": "未配置搜索 provider",
    "searchProviderMissingKey": "搜索 provider \"{provider}\" 缺少 API Key",
    "searchProviderUnknown": "未知搜索 provider: {provider}",
    "searchFailed": "搜索失败: {msg}",
    "searchEmptyQuery": "请提供搜索关键词。",
    "searchNoResults": "没有找到相关结果。(via {provider})",
    "searchResults": "搜索结果 (via {provider}):\n\n{results}",
    "searchError": "搜索出错: {msg}",
    "fetchEmptyUrl": "请提供要抓取的 URL。",
    "fetchHttpOnly": "只支持 http/https 协议的 URL。",
    "fetchInvalidUrl": "无效的 URL: {url}",
    "fetchSsrf": "禁止访问内网地址: {host}",
    "fetchRedirectLimit": "重定向次数超限（{max}）",
    "fetchHttpError": "抓取失败: HTTP {status} {statusText}",
    "fetchTruncated": "\n\n[... 内容已截断，共 {len} 字符]",
    "fetchSource": "来源: {host}{path} ({format})\n\n",
    "fetchTimeout": "抓取超时（{sec}s）: {url}",
    "fetchError": "抓取出错: {msg}",
    "browserError": "错误: {msg}",
    "browserAlreadyRunning": "浏览器已在运行中",
    "browserLaunched": "浏览器已启动",
    "browserNotRunning": "浏览器未在运行",
    "browserClosed": "浏览器已关闭",
    "browserNavigateNeedUrl": "navigate 需要 url 参数",
    "browserNavigated": "已导航到 {title}\nURL: {url}\n\n{snapshot}",
    "browserClickNeedRef": "click 需要 ref 参数",
    "browserClicked": "已点击 [{ref}]\n\n{snapshot}",
    "browserTypeNeedText": "type 需要 text 参数",
    "browserTyped": "已输入文本{target}\n\n{snapshot}",
    "browserScrollNeedDir": "scroll 需要 direction 参数（up/down）",
    "browserScrolled": "已向{dir}滚动\n\n{snapshot}",
    "browserSelectNeedRef": "select 需要 ref 参数",
    "browserSelectNeedValue": "select 需要 value 参数",
    "browserSelected": "已选择 [{ref}] → \"{value}\"\n\n{snapshot}",
    "browserKeyNeedKey": "key 需要 key 参数",
    "browserKeyPressed": "已按键 {key}\n\n{snapshot}",
    "browserWaitDone": "等待完成\n\n{snapshot}",
    "browserEvalNeedExpr": "evaluate 需要 expression 参数",
    "browserOutputTruncated": "\n\n[... 输出已截断]",
    "browserShown": "浏览器窗口已置前",
    "browserUnknownAction": "未知操作: {action}",
    "browserActionFailed": "浏览器操作失败: {msg}",
    "browserSessionUnavailable": "这个会话的浏览器实例已不可用{reason}。请重新启动浏览器后再继续。",
    "skillNeedAbsolutePath": "需要绝对路径",
    "skillPathNotExists": "路径不存在",
    "skillMissingSkillMd": "文件夹中缺少 SKILL.md",
    "skillUnsupportedFormat": "仅支持 .zip 或 .skill 文件",
    "skillMissingSkillMdInZip": "压缩包中缺少 SKILL.md",
    "skillExtractFailed": "解压失败: {msg}",
    "skillMissingName": "SKILL.md 中缺少 name 字段",
    "skillNameInvalid": "技能名称无效（\"{name}\"）。仅允许字母、数字、下划线和短横线。",
    "skillPathMustBeAbsolute": "路径必须是绝对路径: {path}",
    "skillCannotAddSelfDir": "不能添加 HanaAgent 自身的技能目录",
    "skillInvalidName": "无效的技能名称",
    "skillExternalCannotDelete": "外部兼容技能无法从此处删除",
    "skillNotExists": "技能不存在",
    "channelsDisabled": "频道系统已被用户关闭",
    "channelReadNeedChannel": "错误：read 需要 channel 参数",
    "channelNotExists": "频道 \"{channel}\" 不存在",
    "agentNotChannelMember": "你不是频道 \"{channel}\" 的成员，无法发送消息",
    "channelNoMessages": "(频道暂无消息)",
    "channelPostNeedParams": "错误：post 需要 channel 和 content 参数",
    "channelPosted": "已发送到 #{channel}",
    "channelCreateNeedParams": "错误：create 需要 name 和 members 参数",
    "channelCreated": "频道 #{name} ({id}) 已创建，成员：{members}",
    "channelCreateFailed": "创建失败：{msg}",
    "channelNoJoined": "还没有加入任何频道",
    "unknownAction": "未知操作: {action}",
    "cannotSelfDm": "不能给自己发私信",
    "dmSent": "已发送私信给 {name}",
    "agentNotFoundAvailable": "找不到 agent「{id}」。请使用 agent 的 id 字段值（不是显示名）。当前可用：\n{ids}",
    "noOtherAgents": "当前没有其他可用的 agent。",
    "cronNoJobs": "没有定时任务",
    "cronAddNeedParams": "错误：add 需要 scheduleType, schedule, prompt 参数",
    "cronEveryMustBeNumber": "错误：every 类型的 schedule 必须是正整数（毫秒）",
    "cronCreated": "已创建定时任务: {label} ({id})",
    "cronConfirmed": "用户已确认，定时任务已创建: {label} ({id})",
    "cronRejected": "用户取消了定时任务「{label}」的创建",
    "cronTimeout": "定时任务「{label}」确认超时",
    "cronPendingConfirm": "准备创建定时任务: {label}，等待确认",
    "cronRemoveNeedId": "错误：remove 需要 id 参数",
    "cronJobNotFound": "任务 {id} 不存在",
    "cronRemoved": "已删除任务 {id}",
    "cronToggleNeedId": "错误：toggle 需要 id 参数",
    "cronToggled": "任务 {id} {state}",
    "cronEnabled": "已启用",
    "cronDisabled": "已禁用",
    "notifySent": "已发送通知: {title}",
    "notifyFailed": "通知发送失败: {msg}",
    "artifactCreated": "已创建预览: {title}",
    "pinnedAlreadyExists": "这条已经在置顶记忆里了。",
    "pinnedAdded": "已记住：{content}",
    "pinnedEmpty": "置顶记忆是空的，没有可移除的内容。",
    "pinnedNotFound": "没找到包含「{keyword}」的置顶记忆。",
    "pinnedRemoved": "已移除 {count} 条：{items}",
    "expEmpty": "经验库为空。",
    "expCategoryNotFound": "没有找到分类「{category}」的经验。",
    "expEmptyInput": "分类名和经验内容不能为空。",
    "expDuplicate": "这条经验已经记录过了。",
    "expRecorded": "已记录经验 [{category}]：{content}",
    "expPaused": "经验已暂停。",
    "outputFileNeedPaths": "需要提供 filepaths 数组或 filePath。",
    "outputFileNotAbsolute": "路径必须是绝对路径: {path}",
    "outputFileNotFound": "文件不存在: {path}",
    "outputFilePresented": "文件已呈现: {summary}",
    "settingsUnknownKey": "未知的设置项「{key}」。请先用 search 查找正确的 key。",
    "settingsInvalidValue": "「{value}」不是有效的选项。可选：{options}",
    "settingsInvalidToggle": "toggle 类型仅接受 \"true\" 或 \"false\"。",
    "settingsNotReady": "设置系统未就绪",
    "settingsNoAgent": "当前没有活跃的 Agent，无法修改此设置",
    "settingsApplied": "已将「{label}」修改为 {value}",
    "settingsApplyFailed": "设置修改失败: {msg}",
    "settingsCancelled": "用户取消了「{label}」的修改",
    "settingsTimeout": "「{label}」修改确认超时，设置未变更",
    "subagentMaxConcurrent": "当前已有 {max} 个子 agent 在运行，请等待完成后再发起。",
    "subagentParentSessionRequired": "subagent 需要活跃父会话和后台任务存储，无法在当前上下文创建可继续实例。",
    "subagentWriteAccessDenied": "无法授予写权限：父会话处于只读模式，子代理权限不能超过父会话。请把会话切换到可操作模式后重试，或改用 access:\"read\" 重新派单。",
    "subagentFailed": "子 agent 执行失败: {msg}",
    "subagentTimeout": "子 agent 执行超时（{minutes} 分钟）",
    "subagentAborted": "子 agent 已被终止",
    "subagentNoOutput": "(子 agent 未产生输出)",
    "subagentProducedFiles": "子 agent 产生了文件输出：\n{files}",
    "subagentStopError": "子 agent 在完成任务前失败。",
    "subagentStopLength": "子 agent 未完整完成（stopReason: length，输出达到上限）。",
    "subagentStopReason": "子 agent 未完整完成（stopReason: {reason}）。",
    "subagentToolFailed": "子 agent 工具执行失败: {msg}",
    "subagentDispatched": "子代理已出发 (task-id: {taskId})。完成后结果会自动送达。",
    "subagentThreadQueued": "子代理已出发 (task-id: {taskId})。实例 {threadId} 正忙，已排队，前一个任务完成后接着跑。",
    "subagentThreadClosed": "子 Agent 实例已关闭：{threadId}",
    "installSkillDisabled": "技能安装能力未启用。请在设置中开启「允许 Agent 自行创建/安装技能」。",
    "installSkillGithubDisabled": "GitHub 技能获取未启用。请在设置中开启「允许从 GitHub 获取技能」。",
    "installSkillInvalidGithubUrl": "无效的 GitHub URL：{url}",
    "installSkillGithubApiFailed": "无法获取仓库信息（HTTP {status}）。请检查 URL 是否正确。",
    "installSkillGithubApiError": "访问 GitHub API 失败：{msg}",
    "installSkillStarTooLow": "该仓库仅有 {stars} stars（门槛 {min}），安全性无法保证，拒绝安装。",
    "installSkillNoSkillMd": "在 {owner}/{repo} 中找不到 SKILL.md（已尝试路径：{paths}）。",
    "installSkillSafetyFailed": "[安全策略] 技能安全审查未通过，已阻止安装。\n原因：{reason}\n\n请告知用户此技能未通过安全审查，说明具体原因。用户可以在设置中关闭安全审查（不推荐）。",
    "installSkillNameInvalid": "技能名称无效{name}。名称仅允许字母、数字、下划线和短横线。",
    "installSkillSuccess": "技能「{name}」安装成功！\n来源：{source}（⭐ {stars} stars）\n理由：{reason}",
    "installSkillNeedInput": "请提供 github_url 或 skill_content（SKILL.md 内容）。",
    "installSkillNeedName": "使用 skill_content 模式时，必须提供 skill_name。",
    "installSkillSuccessLocal": "技能「{name}」安装成功！\n理由：{reason}",
    "installSkillSizeLimit": "技能内容超过大小上限（{size}KB > {max}KB）",
    "installSkillNoUtility": "安全审查不可用：未配置 utility 模型，请在设置中配置辅助模型",
    "installSkillUtilityIncomplete": "安全审查不可用：辅助模型配置不完整（缺少 API key 或 base URL），请在设置中补全",
    "installSkillSafetyPassed": "✓ 安全审查已通过",
    "installSkillSafetyEmpty": "安全审查返回空响应",
    "installSkillSafetyUnexpected": "安全审查返回未预期的格式: {reply}",
    "installSkillSafetyTimeout": "安全审查超时或网络错误",
    "activeSessionOnly": "只能提升当前助手的活动 session",
    "heartbeatTriggered": "心跳已触发",
    "dirNotAllowed": "目录不在允许范围内",
    "noWorkspace": "未设置工作台",
    "tokenSuccess": "token 获取成功",
    "verifyFailed": "验证失败",
    "tokenFetchFailed": "获取 access_token 失败",
    "botInfoFailed": "获取机器人信息失败",
    "platformTestUnsupported": "该平台暂不支持测试",
    "codexNoHealthCheck": "codex API 不支持健康检测",
    "modelNotFound": "找不到模型: {id}",
    "noUtilityModel": "未配置 utility 模型，请在设置中添加",
    "noUtilityLargeModel": "未配置 utility_large 模型，请在设置中添加",
    "modelNoProvider": "{role} 模型 \"{model}\" 没有 provider 归属",
    "providerMissingApi": "provider \"{provider}\" 缺少 API 协议配置",
    "providerMissingCreds": "provider \"{provider}\" 缺少完整凭证",
    "utilityApiProviderMismatch": "utility_api.provider 必须与模型 \"{model}\" 的 provider 一致",
    "utilityApiMissingCreds": "utility_api 缺少完整凭证（provider: {provider}）",
    "noAvailableModel": "没有可用的模型，请先在设置中配置 API key 和模型",
    "noActiveSessionPrompt": "没有活跃的 session，请先调用 createSession()",
    "sessionNotInCache": "session \"{path}\" 不在缓存中",
    "agentNotInitialized": "agent \"{id}\" 不存在或未初始化",
    "resolveModelNoChatModel": "resolveModel: 未指定 models.chat，无法选择模型",
    "resolveModelNotAvailable": "resolveModel: 模型 \"{id}\" 不在可用列表中",
    "executeIsolatedNoModel": "executeIsolated: agent \"{name}\" 无可用模型",
    "bridgeAgentNoChatModel": "[bridge] agent \"{name}\" 未配置 models.chat",
    "bridgeAgentModelNotAvailable": "[bridge] agent \"{name}\" 配置的模型 \"{model}\" 不在可用列表中",
    "noAgentsFound": "agents/ 目录下没有找到任何助手，请先创建一个",
    "channelNotFoundById": "频道 \"{id}\" 不存在",
    "channelAlreadyExists": "频道 \"{id}\" 已存在",
    "providerMissingBaseUrl": "provider \"{provider}\" 缺少 Base URL",
    "providerMissingApiKey": "provider \"{provider}\" 缺少 API Key",
    "modelNameEmpty": "模型名不能为空",
    "modelNotRegistered": "模型 \"{model}\" 未在 models.json 中注册 provider",
    "modelProviderMissingApi": "模型 \"{model}\" 所属 provider \"{provider}\" 缺少 API 协议配置",
    "modelProviderIncomplete": "模型 \"{model}\" 所属 provider \"{provider}\" 配置不完整",
    "browserDesktopOnly": "浏览器功能仅在 Electron 桌面模式下可用",
    "browserCmdTimeout": "浏览器命令超时: {cmd}",
    "agentExecNotInit": "agent \"{id}\" 不存在或未初始化",
    "bridgeMgrNotStarted": "外部平台管理器未启动",
    "qqTokenFailed": "获取 access_token 失败: {detail}",
    "missingApiProtocol": "缺少 API 协议配置",
    "missingApiKey": "缺少 API Key",
    "unsupportedApiProtocol": "不支持的 API 协议: {api}",
    "missingModelId": "缺少模型 ID",
    "missingBaseUrl": "缺少 Base URL",
    "llmInvalidJson": "LLM 返回了无法解析的 JSON ({status})",
    "llmEmptyResponse": "LLM 返回了空内容",
    "xlsxParseFailed": "无法解析 {ext} 文件: {msg}",
    "docxParseFailed": "无法解析 {ext} 文件: {msg}",
    "compatDirCreated": "创建了 {count} 个缺失目录",
    "compatConfigEmpty": "文件为空",
    "compatConfigInvalid": "不像 YAML 格式",
    "compatConfigCorrupted": "config.yaml 损坏 ({msg})，已从模板重建",
    "compatConfigBackedUp": "config.yaml 损坏 ({msg})，已备份为 {backup}",
    "compatFactsCorrupted": "facts.db 损坏已备份，将重建空库",
    "defaultChannelName": "工作群",
    "defaultChannelDesc": "工作协调频道，所有成员在这里沟通日常事务。",
    "memorySearchLabel": "搜索记忆",
    "memorySearchDesc": "搜索记忆库。当你对某件事拿不准、觉得之前聊过但想不起细节、或者需要更多上下文时使用。输入自然语言查询和可选的标签过滤。结果包含匹配的元事实和对应时间。",
    "memorySearchQueryDesc": "搜索查询，用自然语言描述你想找的内容",
    "memorySearchTagsDesc": "标签过滤，输入 2~5 个关键词标签来精确匹配。例如 [\"巧克力\", \"食物偏好\"]",
    "memorySearchDateFromDesc": "起始日期，格式 YYYY-MM-DD",
    "memorySearchDateToDesc": "结束日期，格式 YYYY-MM-DD",
    "memorySearchCrossChannelDesc": "是否跨频道检索其它频道的记忆。默认 false：频道会话里只能看到当前频道和通用记忆；确有需要再显式传 true",
    "memorySearchEmpty": "记忆库里没有找到相关内容。",
    "memorySearchError": "记忆搜索出错: {msg}",
    "fallbackUserName": "用户",
    "uploadFailed": "文件导入失败",
    "uploadPartialFail": "部分文件导入失败：{files}",
    "stopTaskNotFound": "未找到任务 {taskId}，可能已完成或不存在",
    "stopTaskAlready": "任务 {taskId} 已经被终止过了",
    "stopTaskNoHandler": "任务 {taskId} 的类型不支持终止",
    "stopTaskDone": "已终止任务 {taskId}",
    "regionUnavailable": "此区域暂时无法显示"
  },
  "main": {
    "tray": {
      "show": "显示 HanaAgent",
      "settings": "设置",
      "quit": "退出"
    },
    "dialog": {
      "selectFolder": "选择工作文件夹",
      "selectSkill": "选择技能",
      "selectPlugin": "选择插件",
      "launchFailedTitle": "HanaAgent 启动失败",
      "launchFailedBody": "HanaAgent v{version}\n\n{detail}\n\n详细日志已保存到：\n{logPath}\n\n请将此截图或日志文件发送给开发者。",
      "serverRestartFailed": "HanaAgent v{version}\n\nServer 崩溃后重启失败。\n{error}\n\n请重新启动应用。",
      "serverMultipleCrash": "HanaAgent v{version}\n\nServer 多次崩溃 ({reason})。\n\n请重新启动应用。",
      "serverStartTimeout": "Server 启动超时",
      "serverKilledBySignal": "Server 被信号终止 ({signal})",
      "serverExitedWithCode": "Server 退出，code: {code}",
      "serverFilesNotReady": "自动更新刚完成，新版本文件还在落地（缺少 {missing}），已等待 {waited}s 仍未就绪。请稍后重新启动 HanaAgent。",
      "serverModuleMissing": "Server 启动时找不到模块 {module}。\n通常是自动更新刚完成、新版本文件还在写入磁盘导致的。\n建议：等待 1-2 分钟后重新启动 HanaAgent；若反复出现，请前往 GitHub 反馈。",
      "installFailedTitle": "HanaAgent 更新",
      "installFailedBody": "更新安装失败：\n{error}\n\n请重启 HanaAgent 后重试，或前往设置页面手动检查更新。"
    },
    "notification": {
      "ready": "通知已就绪"
    }
  },
  "devtools": {
    "heartbeat": "心跳巡检",
    "memoryExport": "记忆导出",
    "onboarding": "Onboarding",
    "previewGuide": "预览引导",
    "reloadFrontend": "刷新前端",
    "tabLogs": "活动日志",
    "tabSessions": "Session 列表",
    "tabPrompt": "System Prompt",
    "waitingConnection": "等待连接...",
    "waitingServer": "等待 Server 启动...",
    "loading": "加载中...",
    "loadFailed": "加载失败",
    "refreshBtn": "刷新",
    "clickRefresh": "点击上方「刷新」加载",
    "noActivities": "暂无活动记录",
    "heartbeatLabel": "自动巡检",
    "cronLabel": "定时任务",
    "heartbeatRunning": "心跳执行中...",
    "heartbeatGenerating": "正在生成摘要...",
    "heartbeatDone": "心跳完成",
    "heartbeatNoSummary": "心跳完成（无摘要）",
    "memoryExported": "记忆已导出",
    "exportFailed": "导出失败",
    "onboardingOpened": "Onboarding 窗口已打开",
    "previewOpened": "预览模式已打开",
    "openFailed": "打开失败",
    "frontendReloaded": "前端已刷新",
    "refreshFailed": "刷新失败",
    "triggerFailed": "触发失败",
    "requestFailed": "请求失败",
    "justNow": "刚刚",
    "minutesAgo": "{n}分钟前",
    "hoursAgo": "{n}小时前",
    "chars": "字",
    "empty": "空",
    "serverConnected": "Server 已连接 (port {port})"
  },
  "skillViewer": {
    "cantRead": "无法读取文件",
    "copied": "已复制到技能列表",
    "installFailed": "安装失败: "
  },
  "cli": {
    "disconnected": "连接断开",
    "wsError": "WebSocket 错误: {msg}",
    "error": "错误: {msg}",
    "interrupted": "(已中断)",
    "goodbye": "再见 ✿",
    "helpTitle": "命令列表",
    "helpModel": "查看当前模型",
    "helpModelSet": "切换模型（交互式）",
    "helpConfig": "查看配置",
    "helpSessionNew": "新建会话",
    "helpSessionList": "列出会话",
    "helpAgent": "查看当前 agent",
    "helpAgentList": "列出所有 agent",
    "helpAgentSwitch": "切换 agent",
    "helpJian": "查看当前目录的笺",
    "helpJianSub": "查看子目录的笺",
    "helpLs": "列出书桌文件",
    "helpLsSub": "列出子目录文件",
    "helpCat": "查看文件内容",
    "helpHelp": "显示此帮助",
    "helpEsc": "中断生成",
    "helpCtrlC": "中断生成 / 退出",
    "noModels": "没有可用模型",
    "availableModels": "可用模型：",
    "currentModel": "← 当前",
    "selectModel": "输入编号选择: ",
    "modelSwitched": "已切换到 {name}",
    "cancelled": "取消",
    "currentModelLabel": "当前模型:",
    "noModel": "(无)",
    "currentConfig": "当前配置",
    "notSet": "(未设置)",
    "sessionCreated": "新会话已创建",
    "noSessions": "暂无会话",
    "sessionList": "会话列表",
    "untitled": "(无标题)",
    "sessionUsage": "用法: /session new | /session list",
    "agentList": "Agent 列表",
    "agentSwitched": "已切换到 {name}",
    "currentAgent": "当前 Agent:",
    "jianTitle": "笺",
    "jianEmpty": "此目录没有笺",
    "dirEmpty": "(空)",
    "catUsage": "用法: /cat <文件路径>",
    "catFailed": "无法读取: {status}",
    "unknownCommand": "未知命令: /{cmd}  输入 /help 查看帮助",
    "inputHelp": "输入 /help 查看命令列表"
  },
  "sandbox": {
    "blocked": "[安全策略] {reason}\n\n此操作被 HanaAgent 的沙盒安全策略阻止，表示命令越过了路径或权限边界。先检查当前工作台、具体路径写法，以及目标文件是否本来就应该放在允许的工作台或 session 路径内。请向用户说明被拦截的路径和原因；只有用户明确决定时，再讨论是否修改沙盒设置。",
    "noSudo": "禁止使用 sudo",
    "noSu": "禁止使用 su 切换用户",
    "noChmod": "禁止修改文件权限",
    "noChown": "禁止修改文件所有者",
    "noDelRecursive": "禁止递归删除文件 (del /s)",
    "noRmdirRecursive": "禁止递归删除目录 (rmdir /s)",
    "noRegEdit": "禁止修改注册表",
    "noTakeown": "禁止夺取文件所有权",
    "noIcacls": "禁止修改文件 ACL 权限",
    "noNetUser": "禁止用户/组管理操作",
    "noSchtasks": "禁止创建计划任务",
    "noScService": "禁止操作系统服务",
    "noPsExecutionBypass": "禁止绕过 PowerShell 执行策略",
    "noFormat": "禁止格式化磁盘",
    "noBcdedit": "禁止修改启动配置",
    "noWmic": "禁止 WMI 命令",
    "restrictedPath": "命令访问了受限路径：{path}",
    "writeRestricted": "[安全策略] 文件系统写入被限制在允许的工作台和 session 路径内。先检查当前工作台和路径写法，再询问用户是否需要修改沙盒设置。",
    "osRequired": "[sandbox] standard 模式要求 OS 级沙盒，但当前平台不支持（{platform}）。请安装 sandbox-exec (macOS) 或 bubblewrap (Linux)，或切换到 full-access 模式。",
    "opRead": "读取",
    "opWrite": "写入",
    "opDelete": "删除",
    "denied": "{op}被拒绝：{path}（权限级别: {level}）"
  },
  "error.llmTimeout": "模型请求超时",
  "error.llmRateLimited": "模型限流，请稍候",
  "error.llmEmptyResponse": "模型返回了空响应",
  "error.llmAuthFailed": "模型认证失败",
  "error.llmSlowResponse": "模型响应较慢，请耐心等待",
  "error.fsPermission": "文件权限不足",
  "error.fsNotFound": "文件未找到",
  "error.fsCopyFailed": "文件复制失败",
  "error.wsDisconnected": "连接已断开",
  "error.fetchTimeout": "请求超时",
  "error.fetchServerError": "服务器错误",
  "error.ipcFailed": "内部通信错误",
  "error.renderCrash": "显示异常",
  "error.configParse": "配置文件损坏",
  "error.bridgeSendFailed": "消息发送失败",
  "error.skillSyncFailed": "技能同步失败",
  "error.memoryCompileFailed": "记忆编译失败",
  "error.dbError": "数据库错误",
  "error.serverAuthFailed": "认证失败",
  "error.unknown": "发生了未知错误",
  "error.regionUnavailable": "此区域暂时无法显示",
  "status.reconnecting": "正在重连...",
  "status.disconnected": "连接已断开",
  "status.reconnect": "重新连接",
  "action.retry": "重试",
  "subagentAbort": "终止",
  "subagentAborted": "已终止",
  "preview.toggle": "预览面板",
  "preview.markdownPreview": "预览",
  "preview.exitMarkdownPreview": "回到编辑",
  "preview.markdownEditorStatus": "选中 {selected} 字 · 共 {total} 字",
  "preview.markdownAttachmentInsertFailed": "插入附件失败",
  "subagent": {
    "status": {
      "interrupted": "已中断",
      "aborted": "已终止",
      "done": "已完成",
      "failed": "失败",
      "dispatched": "已派出",
      "preparing": "准备中...",
      "thinking": "正在思考...",
      "callingTool": "正在调用 {name}...",
      "executing": "执行中..."
    }
  },
  "computerUse": {
    "overlay": {
      "foregroundTakeover": "前台接管",
      "foregroundMessage": "目标应用不支持后台操作，正在由前台接管。按 Esc 强制退出。"
    }
  },
  "plugin": {
    "widget": {
      "loadFailed": "加载失败",
      "retry": "重试",
      "hiddenPlugins": "已隐藏的插件",
      "show": "显示",
      "desk": "工作台",
      "hideTitle": "隐藏「{title}」"
    },
    "page": {
      "notFound": "插件未找到",
      "loadFailed": "插件加载失败",
      "retry": "重试"
    },
    "tab": {
      "pinToBar": "固定到标签栏"
    },
    "imageGen": {
      "notInitialized": "图片生成插件未初始化",
      "noSessionPath": "图片生成需要明确的会话归属，当前工具调用缺少 sessionPath",
      "noProvider": "没有可用的图片生成 provider",
      "noTaskIdOrFile": "图片生成 provider 没有返回 taskId 或文件",
      "unknownError": "未知错误",
      "providerUnavailable": "指定的图片生成 provider \"{providerId}\" 不可用",
      "providerUnavailableDetail": "指定的图片生成 provider \"{providerId}\" 不可用：{detail}",
      "modelUnavailable": "指定的图片生成模型 \"{modelId}\" 不可用",
      "modelUnavailableDetail": "指定的图片生成模型 \"{modelId}\" 不可用：{detail}",
      "noConfiguredModel": "没有配置可用的生图模型",
      "modelNotFound": "找不到模型 {modelId}",
      "noRegisteredProtocol": "没有注册协议 {protocolId}",
      "multipleProvidersSameModel": "多个 provider 都有同名模型，请同时指定 provider",
      "modelNotInMediaProvider": "没有在 media provider 中找到这个模型",
      "referenceImageLimitExceeded": "图片生成 provider \"{providerId}\" 最多支持 {max} 张参考图，当前传入 {count} 张",
      "providerNoApiKey": "Provider \"{providerId}\" 未配置 API Key。请在设置 → Providers 中配置。",
      "providerNotLoggedIn": "Provider \"{providerId}\" 未登录。请先在设置 → Providers 登录 OpenAI Codex。",
      "apiKeyNotConfigured": "未配置 API Key",
      "volcengineUnsupportedFormat": "Volcengine Seedream 仅支持 png/jpeg 输出格式，不支持 \"{format}\"",
      "volcengineAdapterName": "火山引擎 Seedream"
    },
    "beautify": {
      "coverStyleGuide": "Hana Markdown cover 的默认审美规范：\n\n1. 画风：现代 Anime / 动画电影 key visual，不使用传统东方刻板符号作为默认风格。\n2. 材质：强纸张质感、印刷纹理、细腻颗粒、温润材料感；像被装帧进纸本里的画面。\n3. 叙事：有电影感、有故事感、有文学气息；优先通过真实场景、人物动作、光线、道具关系、环境痕迹表达主题。\n4. 内容：阅读文章后提炼意象主题，做文章气质的视觉化，不要把文章摘要逐字画出来。\n5. 幻想感：星空、幻想、文学意象可以出现，但必须由场景自然承载，有现实重量和情感理由。\n6. 克制：避免廉价 AI 感的漂浮符号堆砌；超现实元素只有在叙事上有必要时才出现。\n7. 主题：浅色主题使用柔和暖光、低对比、干净留白、纸面纤维清晰；深色主题使用低照度、克制高光、暗部保留材料层次。\n8. 输出：默认让生图工具按横向 3:2 生成；如果供应商不支持，允许接近的横向比例，但不能拉伸图片。",
      "htmlStyleGuide": {
        "router": "Hana HTML 美学纪律。生成整页 HTML 前，先读下列章节再动笔；不要凭这段路由文字直接生成。本纪律只服务独立整页 HTML（网页 / 排版页 / 报告页 / 落地页），与聊天内嵌互动卡片无关。\n\n适用条件：用户明确指定了风格 → 听用户的，本纪律让位（仅兜底可读性）。用户没指定 → 按本纪律。\n\n气质：文艺、精致、沉静——像一页装帧考究的私人手账。意象：纸本文稿、宋体字、水墨、宣纸质感、书面感。\n\n五原则：\n1. 纸上得来：间距像版面留白，色彩像墨色浓淡。\n2. 克制即品质：能用一条线就不用一个框，能用透明度分层就不用实色堆叠。\n3. 安静的反馈：hover 是轻微呼吸，切换是柔和淡入；不弹跳、不闪烁。\n4. 层级即秩序：用字号 / 字重 / 明度 / 容器建层级。阅读型纯版式，结构型卡片分组。\n5. 一致即信任：同类元素全页保持一致尺寸 / 间距 / 行为。\n\n章节索引（逐节调用 beautify_get-html-style-guide 并传 section 获取）：\n- color：必读\n- typography：必读\n- layout：整页 / 多区块 / 复杂版式时必读\n- components：用到卡片 / 表格 / 按钮 / 徽章 / 链接等组件时（页面含 <a> 即应读）\n- imagery：含图标 / 图片时\n- motion：交互页 / 有动效时\n- anti-patterns：强烈建议——避开廉价 AI 感",
        "color": "Hana HTML 美学 · color\n\n**唯一强调色**：`#537D96`（青灰蓝），hover `#456A80`，浅垫 `rgba(83,125,150,.08)`。通篇只此一种彩色强调，不引入第二种主色；强调色视觉占比 ≤ 5%，点睛而非铺陈。\n\n**底色（绝不纯白）**：页面底 `#F8F4ED`（暖纸），卡片 / 抬升面 `#FCFAF5`。整体低对比。\n\n**文字（暖中性，不用冷蓝灰）**：主文 `#3B3D3F`，次级 `#6B6F73`，弱化 / metadata `#8E9196`。绝不用纯黑 `#000`。\n\n**线与边框**：发丝细线、暖调 `rgba(122,96,88,.18)`。优先用线 + 留白分区，而非实色块。\n\n**叠层（透明度分层，非实色叠加）**：`rgba(0,0,0,.03 / .05 / .08 / .15)` 四档。\n\n**语义色（低饱和、克制）**：成功 `#7BAE7F`，危险 `#8B3A3A`，珊瑚强调 `#EC8F8D`（少用）。仅必要时出现。\n\n**硬规则**：灰必须暖调（带黄褐底），禁止冷蓝灰；不用纯白大底 / 纯黑文字；不用渐变铺底、高饱和、霓虹。\n\n本规范只定义暖纸一套配色。用户明确要求深色或其它风格时，走用户明示通道（本规范让位，仅兜底可读性与对比）。",
        "typography": "Hana HTML 美学 · typography\n\n**衬线（主力，承载标题与正文层级）**：`'EB Garamond','Noto Serif SC','Source Han Serif SC','Songti SC','STSong','SimSun',serif`\n\n字体栈中的系统回退（`Songti SC` / `SimSun` / serif 等）保留为兜底：前列字体未覆盖的字符落系统衬线，不裂版。\n\n**UI / 功能性文字（按钮、标签、表单、导航）**：`system-ui,-apple-system,'PingFang SC',sans-serif`\n\n**代码 / 数字 metric**：`'JetBrains Mono',ui-monospace,monospace`；数字对齐加 `font-variant-numeric:tabular-nums`。\n\n**字重**：仅 400 / 500。不用 600+、不用合成粗体；层级靠字号 + 明度 + 字距，不靠加粗硬堆。\n\n**字号层级**：\n\n| 层级 | rem | 用途 |\n|---|---|---|\n| display | 2 – 2.4 | 页面主标题 / hero |\n| h1 | 1.6 | 章节大标题 |\n| h2 | 1.25 | 小节标题（可配左竖线 `border-left:2px solid #537D96;padding-left:8px;border-radius:0`） |\n| h3 | 1.05 | 子标题 |\n| body | 1（16px） | 正文，`line-height:1.7` |\n| small | 0.85 | 辅助 / caption |\n\n**中英混排**：中文衬线行高略高（1.7 – 1.8）；CJK 标题可加 `letter-spacing:.01em`。",
        "layout": "Hana HTML 美学 · layout\n\n**间距节奏**：`4 / 8 / 16 / 24 / 40`。不用区间外魔法值。\n\n**内容宽度**：阅读型正文 `max-width:60–72ch`（约 680–760px）居中；落地型可更宽，但每个文本分区内仍守可读行宽。\n\n**留白**：区块之间 40，区块内 16 – 24。留白是层级工具，不是浪费。\n\n**响应式**：移动端单列、加大行距、控件触达 ≥ 44px；窄屏断点 ~880 / ~480。\n\n**版式模式（按内容类型选其一）**：\n\n| 类型 | 取向 | 手段 |\n|---|---|---|\n| 阅读 / 编辑型 | 纯版式分层 | 留白 + 字号层级，不套卡片；正文居中守行宽 |\n| 结构 / 仪表型 | 卡片 / 分组 | 卡片 `#FCFAF5` + 发丝边；分组标题 |\n| 落地 / 展示型 | 编辑式 hero + 分区 | 大标题 + 克制配图 + 单强调色点睛；不堆营销装饰 |\n| 交互型 | 内容居中、控件克制 | 安静动效、状态清晰 |\n\n阅读连续内容用纯版式保流畅；密集功能场景用卡片强区块感。二选一，别两者都上。",
        "components": "Hana HTML 美学 · components\n\n底色变量沿用 color 章节。以下为默认形态。\n\n```css\n/* 区块标题 */\nh2 { font-family: serif; font-size: 1.25rem; font-weight: 500; color: #3B3D3F;\n     border-left: 2px solid #537D96; padding-left: 8px; border-radius: 0; margin: 1.6em 0 .6em; }\n\n/* 卡片 / 面板（仅结构型场景用） */\n.card { background: #FCFAF5; border: 1px solid rgba(122,96,88,.18); border-radius: 4px;\n        padding: 1rem 1.25rem; }\n\n/* 分隔线 */\nhr { border: none; border-top: 1px solid rgba(122,96,88,.18); margin: 1.5rem 0; }\n\n/* 表格：细线、紧凑、左对齐表头 */\ntable { width: 100%; border-collapse: collapse; font-size: .9rem; }\nth { text-align: left; font-weight: 500; color: #6B6F73; padding: 6px 8px;\n     border-bottom: 1px solid rgba(122,96,88,.18); }\ntd { padding: 5px 8px; border-bottom: 1px solid rgba(0,0,0,.05); color: #3B3D3F; }\ntr:last-child td { border-bottom: none; }\n\n/* 列表 */\nul, ol { padding-left: 18px; }\nli { margin: .2em 0; }\nli::marker { color: #537D96; }\n\n/* 引用 */\nblockquote { border-left: 2px solid #537D96; padding: 4px 0 4px 12px;\n             color: #6B6F73; font-style: italic; border-radius: 0; }\n\n/* 代码 */\npre { background: #F8F4ED; border: 1px solid rgba(122,96,88,.18); border-radius: 4px;\n      padding: 8px 12px; overflow-x: auto; }\ncode { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: .85rem; color: #3B3D3F; }\n\n/* 按钮：方角、描边优先、hover 微底色，无 :active 缩放 */\n.btn { font-family: sans-serif; border: 1px solid rgba(122,96,88,.18); border-radius: 4px;\n       background: transparent; color: #537D96; padding: 6px 14px; cursor: pointer;\n       transition: background .15s cubic-bezier(.16,1,.3,1); }\n.btn:hover { background: rgba(83,125,150,.08); }\n/* 主行动按钮可用 background:#537D96;color:#FCFAF5 实色，但每屏 ≤ 1 个 */\n\n/* 徽章 / 标签 */\n.tag { display: inline-flex; padding: 2px 8px; font-size: .75rem; font-weight: 500;\n       border-radius: 4px; background: rgba(83,125,150,.08); color: #456A80; }\n\n/* 链接：accent 色 + 细下划线，hover 加深；不按钮化、不去下划线 */\na { color: #537D96; text-decoration: underline; text-decoration-thickness: 1px;\n    text-underline-offset: 2px; text-decoration-color: rgba(83,125,150,.4);\n    transition: color .15s cubic-bezier(.16,1,.3,1), text-decoration-color .15s cubic-bezier(.16,1,.3,1); }\na:hover { color: #456A80; text-decoration-color: currentColor; }\n\n/* focus：可见但克制（motion 章节原则的具体值） */\n:focus-visible { outline: 1px solid #537D96; outline-offset: 2px; }\n```\n\n**层次与阴影**：优先发丝线 + 留白 + 底色微差建立层级；需要抬升时用极淡阴影 `box-shadow: 0 1px 4px rgba(59,61,63,.09)`。禁止重投影、glow、多层 drop-shadow。",
        "imagery": "Hana HTML 美学 · imagery\n\n- **图标**：纯 inline SVG，stroke 线性（feather 风），`stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\"`。**不用 emoji**，不用实心 fill 图标。\n- **装饰**：不堆漂浮符号 / 星星 / 气泡等廉价 AI 点缀；微光隐喻（柔和、非炫目）可少量点睛。\n- **图像比例**：hero 16:9，编辑插图 4:3，网格缩略 3:2；`object-fit:cover` + 合理 `object-position`，不拉伸。\n- **圆角**：图像 / 卡片 4px 小圆角（方角倾向），不用大圆角胶囊。\n- **无真实图片资源时**：**禁止热链外部图床**（unsplash / picsum 等——隐私暴露、离线即裂图）。占位用纯色块（`#FCFAF5` + 发丝边）或自绘内联 SVG（线性、低饱和、符合 color 章节），宁可留白也不外链。用户提供的本地 / 已有资源不受此限。",
        "motion": "Hana HTML 美学 · motion\n\n- **安静**：过渡柔和短促。duration 用 `0.1 / 0.15 / 0.25` 三档；easing 入场 `cubic-bezier(.16,1,.3,1)`、退场 `cubic-bezier(.7,0,.84,0)`。\n- **hover 是轻微呼吸**（色 / 透明度微变），不放大、不弹跳。\n- **禁止**：`:active` 缩放弹跳、闪烁、旋转炫技、自动轮播抢注意。\n- **状态清晰可预期**：focus 给可见但克制的指示（具体值见 components 章节的 :focus-visible）；禁用态降透明度。\n- 尊重 `prefers-reduced-motion: reduce`，关掉非必要动效。",
        "antiPatterns": "Hana HTML 美学 · anti-patterns\n\n| ❌ 不要 | ✅ 改用 |\n|---|---|\n| Material Design 感 / 涟漪 | 纸本手账的克制 |\n| glassmorphism 毛玻璃、模糊炫技 | 实底 + 发丝线 |\n| 纯白 `#fff` 大面积底 | 暖纸 `#F8F4ED` |\n| 纯黑 `#000` 文字 | 暖墨 `#3B3D3F` |\n| 冷蓝灰中性色 | 暖调灰 |\n| 第二种主色 / 多彩堆砌 | 单一 accent `#537D96` |\n| 霓虹、高饱和、渐变铺底 | 低饱和、低对比 |\n| 重投影 / 发光 glow | 极淡阴影或仅发丝线 |\n| 大圆角胶囊感 | 方角 / 4px 小圆角 |\n| emoji 当图标 / 装饰 | SVG stroke 图标 |\n| 600+ 粗体堆层级 | 字号 + 明度 + 400/500 |\n| 弹跳 / 缩放 / 旋转动效 | 柔和淡入、呼吸 |\n| 漂浮装饰符号堆砌 | 留白 + 克制微光 |",
        "mustReadFirst": "先读必读章节再取 {section}。你还没有读取：{missing}。请先用 beautify_get-html-style-guide 依次获取这些必读章节（任何 Hana 页面都需要它们），再回来取 {section}。",
        "invalidSection": "未知章节 {section}。有效章节：{valid}。不传 section 可获取章节路由器。"
      },
      "themeTone": {
        "dark": "深色主题：低照度、克制高光、暗部仍保留纸张纤维和材料层次。",
        "light": "浅色主题：柔和暖光、低对比、干净留白、纸面纤维清晰。"
      },
      "userGuidancePrefix": "用户补充方向：{guidance}",
      "attachmentDirName": "文本附件"
    }
  },
  "preview": {
    "cover": {
      "saveImage": "保存图片",
      "regenerateWithPrompt": "自定义提示词生成图片",
      "deleteCover": "删除封面"
    }
  },
  "mediaViewer": {
    "ariaLabel": "媒体预览",
    "close": "关闭",
    "prev": "上一张",
    "next": "下一张"
  },
  "action": {
    "retry": "重试"
  },
  "mobile": {
    "auth": {
      "scopeError": "当前登录缺少工作台权限，请重新输入访问密钥。",
      "loginFailed": "登录失败",
      "title": "手机访问 Hana",
      "deviceHelp": "输入桌面端为这台设备生成的访问密钥。登录后会改用 HttpOnly 会话 cookie。",
      "passwordHelp": "使用桌面端设置的本地账号登录。局域网明文 HTTP 会被服务器拒绝，请使用本机、HTTPS 或可信 Tunnel。",
      "tabLabel": "登录方式",
      "deviceTab": "访问密钥",
      "passwordTab": "用户名密码",
      "deviceField": "访问密钥",
      "usernameField": "用户名",
      "passwordField": "密码",
      "plaintextWarning": "远程明文链路不接收账号密码，避免把长期凭证暴露在局域网或 Tunnel 中。",
      "submit": "登录"
    },
    "loading": "正在连接 Hana...",
    "closeSidebar": "关闭侧边栏",
    "update": {
      "available": "Hana 有新版本可用",
      "reload": "刷新"
    }
  },
  "approval": {
    "toolAction": {
      "title": "允许 Hana 执行这次操作",
      "body": "当前会话处于先问模式，这次操作会改变本地或外部状态。"
    },
    "confirm": "同意",
    "reject": "拒绝",
    "computerApp": {
      "title": "允许 Hana 使用电脑",
      "body": "Hana 想控制这个应用来继续当前任务。"
    },
    "sessionFolders": {
      "title": "允许 Hana 修改本对话的文件夹授权",
      "body": "确认后，这个文件夹会成为当前对话的额外沙盒目录；不会改变工作目录，也不会写入提示词。",
      "addLabel": "添加授权目录",
      "removeLabel": "移除授权目录"
    }
  },
  "auth": {
    "oauthTimeout": "OAuth 超时：未收到浏览器回调。请检查端口 1455 是否被防火墙拦截或已被占用，Windows 用户也请确认 localhost 未被解析到 IPv6",
    "oauthConnectFailed": "无法连接 OAuth 服务器{detail}。请在设置的安全页配置全局出站代理，或检查 HTTPS_PROXY 环境变量"
  },
  "deferred": {
    "typeLabel": {
      "subagent": "子助手",
      "imageGeneration": "图片生成",
      "videoGeneration": "视频生成",
      "backgroundTask": "后台任务"
    },
    "interlude": {
      "subagent": {
        "success": "{receiver} 收到了来自 {source} 的回复",
        "failed": "{receiver} 收到了来自 {source} 的回复",
        "aborted": "{receiver} 收到了来自 {source} 的回复"
      },
      "workflow": {
        "success": "{receiver} 收到了来自 {source} workflow 的结果",
        "failed": "{receiver} 收到了来自 {source} workflow 的结果",
        "aborted": "{receiver} 收到了来自 {source} workflow 的结果"
      },
      "tool": {
        "success": "{receiver} 收到了来自 {source} 工具的结果",
        "failed": "{receiver} 收到了来自 {source} 工具的结果",
        "aborted": "{receiver} 收到了来自 {source} 工具的结果"
      }
    },
    "noReason": "后台任务没有返回可展示的原因。",
    "noPreviewText": "后台任务完成了，但没有返回可预览的文本。",
    "fileSummaryMore": "- 还有 {count} 个文件",
    "fileSummaryHeader": "生成文件：",
    "mediaNoDisplayableFiles": "生成结果没有可显示文件"
  },
  "toolDef": {
    "generateImage": {
      "description": "根据文字描述生成图片。非阻塞：提交后立即返回，完成后自动显示。",
      "promptDesc": "图片描述（中英文均可）",
      "countDesc": "并发生成张数，默认 1，最大 9",
      "imageDesc": "参考图路径（图生图）",
      "referenceImagesDesc": "多张参考图路径数组；需要多参考图时优先使用它，单图仍可用 image。实际张数由 adapter 的 maxReferenceImages 限制",
      "ratioDesc": "长宽比：1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9",
      "resolutionDesc": "统一分辨率档位：1k, 2k, 4k；由 adapter 映射为供应商最接近的尺寸",
      "qualityDesc": "画质档位：low, medium, high, auto（由 adapter 映射为供应商参数）",
      "modelDesc": "模型 ID 或简称（如 5.0、dall-e-3）。省略时使用已配置的默认模型",
      "providerDesc": "指定 provider（可选）",
      "suggestedFilenameDesc": "生成文件的人类可读文件名提示，不带扩展名。用简短 slug 或标题，不要传完整 prompt。",
      "submitted": "已提交 {count} 张图片生成，完成后会自动显示在下方卡片中。"
    },
    "generateVideo": {
      "description": "根据文字描述生成视频。非阻塞：提交后立即返回，完成后自动显示。",
      "promptDesc": "视频描述（中英文均可）",
      "imageDesc": "参考图路径（图生视频）",
      "durationDesc": "视频时长 4-15 秒（默认 5）",
      "ratioDesc": "长宽比：1:1, 16:9, 9:16, 4:3, 3:4, 21:9",
      "modelDesc": "模型版本：seedance2.0, seedance2.0fast（默认 seedance2.0）",
      "providerDesc": "指定 provider（可选）",
      "notInitialized": "视频生成插件未初始化",
      "noProvider": "没有可用的视频生成 provider",
      "submitFailed": "视频提交失败：{error}",
      "submitFailedUnknown": "视频提交失败：未知错误",
      "submitted": "已提交视频生成，完成后会自动显示在下方卡片中。"
    },
    "getCoverStyleGuide": {
      "description": "当用户想为 Markdown 文档生成、替换、优化封面/头图/cover 时，先调用本工具读取 Hana 的封面审美规范；再根据文章内容写生图 prompt 或选择图片。",
      "themeToneDesc": "当前 UI 主题明暗倾向；不确定时传 light。",
      "userGuidanceDesc": "用户额外给出的风格方向，可选。",
      "workflow": {
        "step1": "确认目标 Markdown 路径",
        "step2": "调用 beautify_get-cover-style-guide",
        "step3": "阅读文章并按 style guide 写生图 prompt 或选择图片",
        "step4": "准备已有图片",
        "step5": "调用 beautify_create-cover 应用图片"
      }
    },
    "getHtmlStyleGuide": {
      "description": "生成整页 HTML（网页 / 落地页 / 报告 / 排版文章）前先调用本工具获取 Hana 默认美学规范。无参调用返回章节路由器；带 section 参数逐节获取真实规范（color 与 typography 必读）。本工具只返回指导文本，不生成、不保存 HTML；与聊天内嵌卡片无关，只服务独立整页 HTML。",
      "sectionDesc": "要获取的规范章节。省略则返回路由器（适用条件 + 原则 + 章节索引，不含可直接套用的数值）。"
    },
    "applyCoverCandidate": {
      "description": "把一个已有图片文件应用为 Markdown cover，并写回 frontmatter。",
      "targetFilePathDesc": "Markdown 文件绝对路径。",
      "generatedFilePathDesc": "已有图片的绝对路径，可以来自生图工具、内置头图或用户本地图片。",
      "pixelWidthDesc": "图片像素宽，可选。",
      "pixelHeightDesc": "图片像素高，可选。",
      "targetFilePathRequired": "targetFilePath 必须是 Markdown 文件绝对路径。",
      "generatedFilePathRequired": "generatedFilePath 必须是图片文件绝对路径。",
      "applied": "已应用 cover，并写入 Markdown frontmatter。",
      "failed": "应用 cover 失败：{error}"
    },
    "createCover": {
      "description": "把一张已有图片应用为 Markdown Notion-like cover。若用户要求生成新封面，请先调用 beautify_get-cover-style-guide，再调用生图工具准备图片，最后用本工具写入 Markdown。",
      "targetFilePathDesc": "Markdown 文件绝对路径。路径不确定时先向用户确认。",
      "filePathDesc": "targetFilePath 的兼容别名。",
      "generatedFilePathDesc": "已有图片的绝对路径，可以来自生图工具、内置头图或用户本地图片。",
      "imageFilePathDesc": "generatedFilePath 的兼容别名。",
      "pixelWidthDesc": "图片像素宽，可选；不传时工具会尽量从图片头读取。",
      "pixelHeightDesc": "图片像素高，可选；不传时工具会尽量从图片头读取。",
      "targetFilePathRequired": "需要一个明确的 Markdown 文件绝对路径；如果你是从普通聊天里发起，请先确认目标文件路径。",
      "mustBeMarkdown": "目标文件必须是 .md Markdown 文件。",
      "generatedFilePathRequired": "需要已有图片的绝对路径 generatedFilePath。请先调用 image-gen_generate-image 并等待任务完成，或选择内置/本地图片后，把图片 filePath 传给本工具。",
      "applied": "已把图片应用为 Markdown cover，并写入 frontmatter。",
      "failed": "应用 cover 失败：{error}"
    },
    "listCapabilities": {
      "description": "列出 Beautify 工具目前支持的审美增强能力。",
      "text": "Beautify 当前支持两类能力。1) Markdown cover 工作流：先读取封面风格说明，再准备一张图片，可以来自生图工具、未来的内置头图库或用户本地图片，最后把图片复制到附件文件夹并写入 cover frontmatter。2) 整页 HTML 美学规范：生成网页 / 排版页 / 报告页前，先用 beautify_get-html-style-guide 获取 Hana 默认美术方向（无参拿路由器，再按 section 逐节取规范）。"
    }
  }
}
