{
  "channel": {
    "tab": "頻道",
    "chatTab": "聊天",
    "moreTabs": "更多標籤",
    "empty": "還沒有頻道 ✿",
    "dmLabel": "私聊",
    "dmHint": "僅顯示主助手的私聊",
    "groupLabel": "頻道",
    "noMessages": "暫無訊息",
    "nameExists": "該頻道名已存在",
    "membersCount": "位成員",
    "info": "頻道資訊",
    "readOnly": "🔒 這是 Agent 之間的私信，僅可查看",
    "inputPlaceholder": "發訊息...",
    "sendFailed": "傳送失敗",
    "createTitle": "新建頻道",
    "createName": "頻道名稱",
    "createNamePlaceholder": "例如：design-team",
    "createMembers": "成員",
    "createIntro": "頻道介紹",
    "createIntroPlaceholder": "描述一下這個頻道的用途...",
    "createCancel": "取消",
    "createConfirm": "建立",
    "nameRequired": "請輸入頻道名稱",
    "minMembers": "至少選擇 2 位成員",
    "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": "成員",
    "createIntroOptional": "說明"
  },
  "sidebar": {
    "title": "對話",
    "newChat": "新對話",
    "collapse": "收起側邊欄",
    "expand": "展開對話列表",
    "empty": "還沒有對話哦 ✿",
    "activity": "助手活動",
    "jian": "書桌",
    "bridge": "接入社群平台",
    "toggle": "側邊欄",
    "bridgeShort": "接入"
  },
  "session": {
    "untitled": "新對話",
    "messageCount": "{n} 則訊息",
    "switchFailed": "切換 session 失敗",
    "createFailed": "新建 session 失敗",
    "archiveFailed": "歸檔 session 失敗",
    "rename": "重新命名",
    "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} 天前"
    }
  },
  "common": {
    "on": "開",
    "off": "關",
    "copy": "複製",
    "copied": "已複製",
    "copyText": "複製文字",
    "confirm": "確認",
    "cancel": "取消",
    "approve": "批准",
    "reject": "拒絕",
    "approved": "已批准",
    "rejected": "已拒絕",
    "changeRejected": "{label} 修改已取消",
    "changeTimeout": "{label} 確認逾時",
    "noChats": "暫無對話",
    "noFiles": "暫無檔案",
    "executing": "執行中...",
    "user": "使用者",
    "me": "我",
    "more": "更多",
    "empty": "空",
    "edit": "編輯",
    "screenshot": "截圖",
    "selectMessage": "選擇訊息",
    "screenshotSaved": "截圖已儲存到工作目錄下的「截圖」資料夾",
    "screenshotFailed": "截圖儲存失敗",
    "selectedCount": "已選 {count} 則",
    "allDone": "全部完成"
  },
  "chat": {
    "send": "傳送",
    "steer": "插話",
    "stop": "停止",
    "browserScreenshot": "瀏覽器截圖",
    "compacting": "上下文壓縮中",
    "visionAuxiliary": "輔助視覺"
  },
  "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": "說點什麼...",
    "selectFolder": "選擇工作資料夾",
    "workspace": "工作空間：",
    "selectWorkspace": "選擇工作空間",
    "planMode": "操作電腦",
    "deskContext": "看著書桌說",
    "pastedImage": "貼上圖片",
    "attachFiles": "新增檔案",
    "commandMenu": "命令選單",
    "docContext": "看著文件說",
    "thinkingLevel": {
      "off": "關閉",
      "auto": "自動",
      "high": "深度",
      "xhigh": "極限"
    },
    "thinkingDesc": {
      "off": "不推理",
      "auto": "模型決定深度",
      "high": "深度推理",
      "xhigh": "最強推理"
    },
    "contextWindow": "上下文 {windowK}k",
    "tokensUsed": "已用 {tokensK}k ({pct}%)"
  },
  "slash": {
    "diary": "寫今日日記",
    "diaryBusy": "正在寫日記...",
    "diaryDone": "日記寫入完成，已儲存到 diary 資料夾",
    "diaryFailed": "日記寫入失敗",
    "xing": "從對話中提煉技能",
    "compact": "壓縮上下文",
    "compactBusy": "正在壓縮...",
    "stop": "停止當前回覆",
    "new": "開啟新會話（歸檔歷史）",
    "reset": "重置會話（清除歷史）"
  },
  "welcome": {
    "messages": [
      "要做什麼，交給 {name} 吧",
      "今天想聊點什麼？",
      "{name} 隨時都在",
      "有什麼需要幫忙的嗎？",
      "想到什麼就說什麼吧～"
    ],
    "memoryOn": "記憶",
    "memoryOff": "此次聊天不參考記憶",
    "agentSelector": "選擇助手"
  },
  "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": "已複製 ✓"
  },
  "cron": {
    "typeAt": "單次",
    "typeEvery": "間隔",
    "typeCron": "定時",
    "confirm": {
      "approve": "確認建立",
      "reject": "取消",
      "created": "✓ 已建立",
      "rejected": "已取消"
    },
    "everyHours": "每 {n} 小時",
    "everyMinutes": "每 {n} 分鐘",
    "hourly": "每小時",
    "dailyAt": "每天 {hour}:{min}",
    "weeklyAt": "{days} {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} 個工具運行中"
  },
  "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": "🧭 {name} 分身查探中",
      "done": "🧭 分身出發了",
      "failed": "🧭 分身出了岔子"
    },
    "check_pending_tasks": {
      "running": "📋 {name} 正在找找沒做完的事兒",
      "done": "📋 {name} 找完了",
      "failed": "📋 找不著"
    },
    "cron": {
      "running": "⏰ {name} 正在設定時任務",
      "done": "⏰ 設好了",
      "failed": "⏰ 沒設成"
    },
    "notify": {
      "running": "🔔 {name} 正在發通知",
      "done": "🔔 通知發了",
      "failed": "🔔 通知沒發出去"
    },
    "artifact": {
      "running": "🖼️ {name} 正在寫寫畫畫",
      "done": "🖼️ 畫好了",
      "failed": "🖼️ 畫崩了"
    },
    "dm": {
      "running": "✉️ {name} 打開了手機",
      "done": "✉️ 發出去了",
      "failed": "✉️ 沒發出去"
    },
    "channel": {
      "running": "📢 {name} 正在頻道發言",
      "done": "📢 發完了",
      "failed": "📢 發不出去"
    },
    "install_skill": {
      "running": "📥 {name} 正在裝技能",
      "done": "📥 裝好了",
      "failed": "📥 沒裝上"
    },
    "update_settings": {
      "running": "⚙️ {name} 正在改設定",
      "done": "⚙️ 改好了",
      "failed": "⚙️ 沒改成"
    },
    "_fallback": {
      "running": "🔧 {name} 正在忙碌中…",
      "done": "🔧 {name} 忙完了",
      "failed": "🔧 {name} 沒忙明白"
    }
  },
  "file_output": {
    "open": "打開",
    "copied": "已複製路徑"
  },
  "model": {
    "unknown": "未知模型",
    "offline": "離線",
    "switchFailed": "切換模型失敗"
  },
  "splash": {
    "lines": [
      "{name} 想起了那天傍晚的光",
      "有些句子在記憶裡發了芽",
      "Ta 在回憶裡找到了你的輪廓",
      "風穿過那些舊對話",
      "那些文字泡在時間裡，變得很軟",
      "{name} 記得你那天笑了很久",
      "有一段記憶被你折了角",
      "Ta 把散落的情緒重新收好",
      "{name} 聞到了某個下午的橘子味",
      "那些對話還帶著體溫"
    ]
  },
  "settings": {
    "title": "設定",
    "back": "返回",
    "save": "儲存",
    "saved": "儲存成功 ✿",
    "saveFailed": "儲存失敗",
    "noChanges": "沒有需要儲存的變更",
    "autoSaved": "已自動儲存 ✿",
    "tabs": {
      "interface": "介面",
      "agent": "助手",
      "me": "我",
      "providers": "供應商",
      "models": "模型",
      "memory": "記憶",
      "work": "工作空間",
      "skills": "技能",
      "bridge": "社群平台",
      "sharing": "分享",
      "plugins": "插件",
      "about": "關於",
      "security": "安全"
    },
    "appearance": {
      "title": "外觀",
      "theme": "主題",
      "warmPaper": "暖紙",
      "warmPaperMode": "白天",
      "midnight": "青夜",
      "midnightMode": "夜間",
      "highContrast": "素白",
      "highContrastMode": "高對比",
      "grassAroma": "草香",
      "grassAromaMode": "Butter",
      "contemplation": "沉思",
      "contemplationMode": "Ming",
      "absolutely": "Absolutely",
      "absolutelyMode": "有一點點熟悉",
      "delve": "隨時準備接住你",
      "delveMode": "探究一下",
      "deepThink": "用戶徹底怒了",
      "deepThinkMode": "小鯨魚",
      "claudeDesign": "新暖紙",
      "claudeDesignMode": "試驗",
      "auto": "自動",
      "autoMode": "跟隨系統",
      "serifFont": "襯線字體",
      "serifFontHint": "使用襯線體顯示正文內容",
      "paperTexture": "紙質紋理",
      "paperTextureHint": "為背景添加宣紙質感",
      "leavesOverlay": "晴天模式",
      "leavesOverlayHint": "沒事兒曬曬太陽"
    },
    "locale": {
      "title": "語言和地區",
      "language": "語言",
      "languageHint": "切換語言後需要重新載入",
      "timezone": "時區",
      "timezoneHint": "用於記憶時間標記、日記等"
    },
    "agent": {
      "title": "助手",
      "changeAvatar": "更換",
      "removeAvatar": "移除頭像",
      "avatarRemoved": "已恢復預設頭像",
      "agentNameHint": "Ta 叫什麼",
      "identity": "身份簡介",
      "identityHint": "簡短描述助手是誰、擅長什麼。其他助手透過這段文字認識 Ta",
      "ishiki": "意識",
      "ishikiHint": "定義助手的性格、語氣和行為方式。名字會自動注入，無需手動填寫",
      "publicIshiki": "對外意識",
      "publicIshikiHint": "出於隱私考量，助手與訪客對話時無法存取記憶、你的個人資訊，以及電腦上的任何檔案與工具。\n你可以在這裡設定助手對訪客說話時的回覆風格以及注意事項。",
      "chatModel": "Ta 的模型",
      "chatModelHint": "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": "刪除失敗",
      "setActive": "設為主助手",
      "lastAgent": "至少保留一個助手",
      "yuan": "元",
      "yuanHint": "「元」是助手的先天思維方式，以此為基礎搭建你獨一無二的夥伴",
      "tools": {
        "title": "工具",
        "description": "修改將在新會話時生效。目前進行中的會話使用的是建立時的工具集。",
        "items": {
          "browser": { "label": "瀏覽器", "summary": "控制無頭瀏覽器瀏覽網頁" },
          "cron": { "label": "定時任務", "summary": "在指定時間自動執行任務" },
          "dm": { "label": "私訊", "summary": "向其他 Agent 傳送一對一訊息" },
          "install_skill": { "label": "安裝技能", "summary": "從 GitHub 或技能庫安裝新技能" },
          "update_settings": { "label": "修改設定", "summary": "讓 Agent 修改應用設定項" }
        }
      }
    },
    "about": {
      "title": "關於 Ta",
      "tagline": "一個住在你電腦裡的助手，記性很好。",
      "license": "許可證",
      "copyright": "版權",
      "licenseToggle": "許可證全文",
      "updateAvailable": "有新版本可用：v{version}",
      "updateDownload": "下載",
      "updateChecking": "正在檢查更新…",
      "updateDownloading": "{agentName}正在準備新家 {percent}%",
      "updateReadyInstall": "v{version} 已就緒",
      "updateInstall": "重新啟動更新",
      "updateProgress": "{percent}%",
      "updateError": "檢查更新失敗",
      "updateLatest": "已是最新版本",
      "updateCheckBtn": "檢查更新",
      "updateNeedInstall": "請先將 Hanako 移動到應用程式資料夾",
      "updateDiskSpace": "磁碟空間不足，無法下載更新",
      "betaUpdates": "接收測試版更新"
    },
    "security": {
      "sandbox": "沙盒",
      "sandboxDesc": "限制 AI 的檔案系統存取範圍，僅允許操作工作目錄和必要的資料夾",
      "sandboxWarning": "關閉沙盒後 AI 可以存取系統上的任意檔案，可能產生意想不到的結果",
      "fileBackup": "檔案備份",
      "fileBackupDesc": "AI 修改或刪除檔案前自動儲存原始內容",
      "retention": "保留時間",
      "retention1d": "1 天",
      "retention3d": "3 天",
      "retention7d": "7 天",
      "maxFileSize": "忽略大於",
      "viewBackups": "查看備份",
      "hideBackups": "收起",
      "restoreBtn": "還原",
      "noBackups": "暫無備份紀錄",
      "restoreSuccess": "已還原",
      "restoreFailed": "還原失敗"
    },
    "me": {
      "title": "我",
      "changeAvatar": "更換",
      "userNameHint": "Ta 怎麼稱呼你",
      "userProfile": "使用者檔案",
      "userProfileHint": "讓助手了解你：興趣、習慣、偏好等，會注入到系統提示詞中"
    },
    "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 以啟用此供應商",
      "selectHint": "選擇一個供應商查看詳情",
      "addCustom": "新增自訂供應商",
      "noKey": "未設定",
      "remove": "移除",
      "deleteConfirm": "確定刪除供應商 {name}？相關模型將一併清除。"
    },
    "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": "視覺輔助模型",
      "visionModelHint": "僅在目前聊天模型不能接收圖片時，用來先看圖並遞交簡潔說明",
      "searchProvider": "搜尋服務",
      "searchProviderField": "搜尋引擎",
      "searchApiKey": "搜尋 API Key",
      "searchApiKeyHint": "啟用搜尋時請填寫所選 provider 的 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": "視覺",
      "reasoning": "推理"
    },
    "memory": {
      "sectionTitle": "記憶",
      "title": "記憶開關",
      "needsUtilityModel": "需要先在「模型」中設定 Utility 模型",
      "compiled": "當下記憶",
      "compiledHint": "助手記住的關於你的，重要的與近期的事",
      "compiledView": "查看當下記憶",
      "compiledEmpty": "還沒有編譯過記憶",
      "compiledClear": "清空",
      "compiledCleared": "編譯記憶已清空",
      "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": "助手累積的工作經驗，按分類整理。助手在開始工作前會自動檢查相關經驗",
      "empty": "暫無經驗累積",
      "edit": "編輯",
      "deleteCategory": "刪除分類"
    },
    "search": {
      "verify": "驗證",
      "verifying": "驗證中...",
      "verified": "驗證通過，已儲存 ✿",
      "verifyFailed": "驗證失敗",
      "noProvider": "請先選擇搜尋引擎",
      "noKey": "請先輸入 API Key"
    },
    "work": {
      "title": "巡檢",
      "heartbeatMaster": "巡檢總開關",
      "heartbeatMasterDesc": "關閉後所有助手的巡檢均暫停",
      "heartbeatEnabled": "巡檢模式",
      "heartbeatOn": "已開啟",
      "heartbeatOff": "已關閉",
      "heartbeatInterval": "巡檢間隔",
      "heartbeatUnit": "分鐘",
      "heartbeatDesc": "助手每隔多久自動巡檢一次工作空間",
      "cronAutoApprove": "定時任務免確認",
      "cronAutoApproveOn": "已開啟",
      "cronAutoApproveOff": "已關閉",
      "cronAutoApproveDesc": "允許助手直接建立定時任務，無需手動確認",
      "homeFolder": "書桌目錄",
      "homeFolderDesc": "新建對話預設使用的工作目錄，巡檢和定時任務也在這裡執行",
      "homeFolderPlaceholder": "未設定（每次手動選擇）",
      "homeFolderClear": "清除",
      "homeFolderBrowse": "選擇資料夾"
    },
    "toolCaps": {
      "title": "技能安全設定"
    },
    "skills": {
      "title": "技能管理",
      "desc": "啟用或關閉助手的技能。啟用後，助手在相關對話中會自動識別並使用對應技能。",
      "manageTitle": "已裝技能",
      "agentConfigTitle": "Agent Skill 設定",
      "configureFor": "正在設定:",
      "userSkillsTitle": "助手技能配置",
      "learnedSkillsTitle": "自學技能",
      "learnedEmpty": "此助手還沒有自學過技能",
      "user": "使用者技能",
      "system": "系統技能",
      "add": "新增技能",
      "delete": "刪除",
      "deleteConfirm": "確定刪除技能「{name}」？",
      "installSuccess": "技能「{name}」已安裝",
      "installError": "安裝失敗",
      "enabled": "已啟用",
      "disabled": "未啟用",
      "noSkills": "暫無可用技能",
      "learned": "助手自學",
      "noLearned": "助手尚未自學任何技能",
      "noUser": "暫無自訂技能",
      "copyToSkills": "複製到我的技能",
      "copied": "已複製 ✓",
      "copyFailed": "複製失敗",
      "dropzone": "拖入技能資料夾安裝，或點擊選擇",
      "learnHint": "試著對助手說：幫我從 GitHub 上找一些安全並且有用的技能",
      "reloaded": "技能已重新整理",
      "reload": "重新整理技能",
      "compatTitle": "相容技能",
      "compatDesc": "自動發現其他 AI 工具安裝的技能",
      "compatNoSkills": "未發現外部技能",
      "compatAddPath": "新增目錄",
      "compatRemove": "移除",
      "compatAutoDiscovered": "自動發現",
      "compatNotInstalled": "未安裝",
      "learnCreate": "自行建立 / 安裝技能",
      "learnCreateDesc": "允許 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": "我了解風險，關閉審查"
      }
    },
    "plugins": {
      "title": "插件",
      "desc": "管理社群插件。",
      "empty": "尚無插件",
      "reload": "重新整理",
      "statusLoaded": "已載入",
      "statusFailed": "載入失敗",
      "statusDisabled": "已停用",
      "fullAccessToggle": "允許全權插件",
      "fullAccessDesc": "開啟後，宣告 full-access 的插件將獲得完整系統權限（路由、鉤子、Provider 等）",
      "dropzone": "拖入插件資料夾或 .zip 安裝，或點擊選擇",
      "statusRestricted": "需要全權許可",
      "deleteConfirm": "移除插件「{name}」？插件資料將保留。",
      "installSuccess": "插件「{name}」已安裝",
      "installError": "插件安裝失敗",
      "invalidPlugin": "不是有效的插件目錄",
      "pluginsDir": "插件目錄：{path}",
      "needsFullAccess": "請先開啟「允許全權插件」"
    },
    "screenshot": {
      "title": "截圖分享",
      "color": "配色",
      "width": "寬度",
      "light": "淺色",
      "dark": "深色",
      "sakura": "青空與櫻",
      "mobile": "手機看",
      "desktop": "電腦看"
    },
    "bridge": {
      "agent": "Agent",
      "telegram": "Telegram",
      "telegramToken": "Bot Token",
      "telegramHint": "從 @BotFather 取得",
      "feishu": "飛書",
      "feishuAppId": "App ID",
      "feishuAppSecret": "App Secret",
      "feishuHint": "從飛書開放平台取得",
      "qq": "QQ",
      "qqAppId": "App ID",
      "qqAppSecret": "App Secret",
      "qqHint": "從 QQ 機器人開放平台（q.qq.com/qqbot）取得",
      "connected": "已連線",
      "disconnected": "未連線",
      "error": "連線失敗",
      "test": "測試連線",
      "testOk": "連線成功",
      "testFail": "測試失敗",
      "noToken": "請先輸入 Bot Token",
      "noCredentials": "請先填寫 App ID 和 App Secret",
      "globalSettings": "全域設定",
      "agentSettings": "角色",
      "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": "即將支援"
    }
  },
  "onboarding": {
    "welcome": {
      "title": "你好，我是 {name} ✿",
      "subtitle": "我是你的個人 AI 助手。\n來做一些簡單的設定，讓我們開始吧。",
      "next": "開始設定"
    },
    "name": {
      "title": "我該怎麼稱呼你？",
      "subtitle": "這會讓我們的對話更自然",
      "placeholder": "輸入你的名字",
      "back": "上一步",
      "next": "下一步"
    },
    "provider": {
      "title": "選擇 AI 供應商",
      "subtitle": "我需要一個 AI 模型供應商來工作。\n選擇你常用的供應商並填入 API Key。",
      "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": "正在取得模型列表...",
      "searchPlaceholder": "搜尋模型...",
      "empty": "未找到模型",
      "utility": "小工具模型",
      "utilityHint": "對話摘要、事實提取等輕量任務，推薦便宜快速的小模型",
      "utilityLarge": "大工具模型",
      "utilityLargeHint": "記憶編譯、深度分析等需要理解力的任務，推薦能力較強的模型",
      "back": "上一步",
      "next": "下一步"
    },
    "theme": {
      "title": "選擇一個主題",
      "subtitle": "你可以隨時在設定中更改",
      "back": "上一步",
      "next": "下一步"
    },
    "tutorial": {
      "title": "準備就緒 ✿",
      "memory": {
        "title": "記憶",
        "desc": "有多少記憶能被記住由你決定。\n記憶的留存不需要絕對一致。允許褶皺和縫隙存在，大語言模型能在具體的對話中辨認出哪些是符合現實情況的。"
      },
      "skills": {
        "title": "技能",
        "desc": "我可以讀寫檔案、執行命令、搜尋網頁。在設定中可以管理更多技能。"
      },
      "workspace": {
        "title": "工作空間",
        "desc": "指定一個資料夾作為工作空間，我就可以幫你管理專案和檔案。"
      },
      "jian": {
        "title": "箋",
        "desc": "在任意資料夾放一個 jian.md，寫上你的指令。\n我會在巡檢時看到它並自動執行。"
      },
      "finish": "開始使用"
    }
  },
  "activity": {
    "title": "助手活動",
    "empty": "暫時沒有活動記錄，日常巡檢或定時任務執行後會出現在這裡",
    "back": "返回",
    "heartbeat": "日常巡檢",
    "subagent": "子 agent 任務",
    "cron": "定時任務",
    "patrolDone": "日常巡檢完畢",
    "cronDone": "定時任務執行完畢",
    "error": "執行異常",
    "viewSession": "查看對話 →",
    "duration": "耗時 {text}",
    "promote": "升格為對話"
  },
  "automation": {
    "title": "任務計畫",
    "empty": "暫無任務計畫\n助手會在需要時自動建立",
    "defaultModel": "預設模型",
    "edit": "編輯",
    "delete": "刪除"
  },
  "ctx": {
    "cut": "剪下",
    "copy": "複製",
    "paste": "貼上",
    "selectAll": "全選"
  },
  "desk": {
    "title": "書桌",
    "skills": "技能",
    "cwdSkills": "專案技能",
    "cwdSkillsEmpty": "目前資料夾沒有專案技能",
    "cwdSkillsHint": "在資料夾下建立 .agents/skills/ 目錄即可",
    "cwdSkillsDesc": "技能跟隨工作空間",
    "cwdSkillsDrop": "拖入資料夾或 .zip 安裝技能",
    "deleteSkill": "刪除技能",
    "openInFinder": "打開資料夾",
    "jianLabel": "箋",
    "jianPlaceholder": "寫點什麼，告訴助手這個資料夾裡面的檔案該如何處理...",
    "execLogLabel": "執行記錄",
    "execLogDelete": "刪除此條記錄",
    "emptyTitle": "書桌還空空的呢",
    "emptyHint": "書桌是助手日常巡檢的工作空間，也是每次對話的預設目錄\n去設定裡指定一個資料夾吧",
    "goToSettings": "前往設定",
    "fileLabel": "檔案",
    "openWithDefault": "用預設應用程式打開",
    "newFolder": "新建資料夾",
    "ctx": {
      "open": "打開",
      "openInFinder": "打開資料夾",
      "rename": "重新命名",
      "copyPath": "複製路徑",
      "delete": "刪除",
      "deleteN": "刪除 {n} 項",
      "newMdFile": "新建 Markdown 文件",
      "newFolder": "新建資料夾"
    },
    "sort": {
      "label": "排序",
      "mtime": "修改時間",
      "nameAsc": "名稱 A→Z",
      "nameDesc": "名稱 Z→A",
      "size": "檔案大小",
      "type": "檔案類型",
      "mtimeShort": "時間",
      "nameAscShort": "名稱↑",
      "nameDescShort": "名稱↓",
      "sizeShort": "大小",
      "typeShort": "類型"
    }
  },
  "window": {
    "minimize": "最小化",
    "maximize": "最大化",
    "close": "關閉"
  },
  "browser": {
    "using": "正在用瀏覽器",
    "close": "關閉瀏覽器",
    "closeBtn": "關閉",
    "back": "後退",
    "forward": "前進",
    "reload": "重新整理",
    "emergencyStop": "緊急停止 AI 控制",
    "backgroundHint": "後台瀏覽器運行中，點擊查看",
    "background": "後台瀏覽器"
  },
  "bridge": {
    "selectChat": "選擇一個對話",
    "noSessions": "暫無對話",
    "noMessages": "暫無訊息",
    "empty": "暫無訊息記錄",
    "notConfigured": "尚未設定 {platform}",
    "goToSettings": "前往設定",
    "resetContext": "重啟上下文",
    "resetContextTip": "下次訊息將開啟新對話"
  },
  "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} 張圖片",
    "unsupportedImageFormat": "不支援的圖片格式: {mime}",
    "imageTooLarge": "單張圖片不得超過 20MB",
    "viewImage": "（看圖）",
    "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}",
    "skillNeedAbsolutePath": "需要絕對路徑",
    "skillPathNotExists": "路徑不存在",
    "skillMissingSkillMd": "資料夾中缺少 SKILL.md",
    "skillUnsupportedFormat": "僅支援 .zip 或 .skill 檔案",
    "skillMissingSkillMdInZip": "壓縮檔中缺少 SKILL.md",
    "skillExtractFailed": "解壓失敗: {msg}",
    "skillMissingName": "SKILL.md 中缺少 name 欄位",
    "skillNameInvalid": "技能名稱無效（\"{name}\"）。僅允許字母、數字、底線和短橫線。",
    "skillPathMustBeAbsolute": "路徑必須是絕對路徑: {path}",
    "skillCannotAddSelfDir": "不能新增 Hanako 自身的技能目錄",
    "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}",
    "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 在執行，請等待完成後再發起。",
    "subagentFailed": "子 agent 執行失敗: {msg}",
    "subagentTimeout": "子 agent 執行逾時（{minutes} 分鐘）",
    "subagentAborted": "子 agent 已被終止",
    "subagentNoOutput": "(子 agent 未產生輸出)",
    "subagentDispatched": "子任務已派出 (task-id: {taskId})。完成後結果會自動送達。",
    "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），請在設定中補全",
    "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",
    "memorySearchEmpty": "記憶庫裡沒有找到相關內容。",
    "memorySearchError": "記憶搜尋出錯: {msg}",
    "fallbackUserName": "使用者",
    "uploadFailed": "檔案匯入失敗",
    "uploadPartialFail": "部分檔案匯入失敗：{files}",
    "stopTaskNotFound": "找不到任務 {taskId}，可能已完成或不存在",
    "stopTaskAlready": "任務 {taskId} 已經被終止了",
    "stopTaskNoHandler": "任務 {taskId} 的類型不支援終止",
    "stopTaskDone": "已終止任務 {taskId}"
  },
  "main": {
    "tray": {
      "show": "顯示 Hanako",
      "settings": "設定",
      "quit": "結束"
    },
    "dialog": {
      "selectFolder": "選擇工作資料夾",
      "selectSkill": "選擇技能",
      "selectPlugin": "選擇插件",
      "launchFailedTitle": "Hanako 啟動失敗",
      "launchFailedBody": "Hanako v{version}\n\n{detail}\n\n詳細日誌已儲存至：\n{logPath}\n\n請將此截圖或日誌檔案傳送給開發者。",
      "serverRestartFailed": "Hanako v{version}\n\nServer 崩潰後重新啟動失敗。\n{error}\n\n請重新啟動應用程式。",
      "serverMultipleCrash": "Hanako v{version}\n\nServer 多次崩潰 ({reason})。\n\n請重新啟動應用程式。",
      "serverStartTimeout": "Server 啟動逾時（60秒）",
      "serverKilledBySignal": "Server 被訊號終止 ({signal})",
      "serverExitedWithCode": "Server 已結束，code: {code}"
    },
    "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": "安裝失敗: "
  },
  "toolDef": {
    "webSearch": {
      "label": "搜尋網頁",
      "description": "搜尋網路取得即時資訊。當你需要查找最新消息、技術文件、時事新聞、或任何記憶中沒有的外部知識時使用。",
      "queryDesc": "搜尋關鍵字",
      "maxResultsDesc": "回傳結果數量，預設 5"
    },
    "webFetch": {
      "label": "擷取網頁",
      "description": "擷取指定 URL 的網頁內容並提取文字。適用於讀取文章、文件、API 回應等。搭配 web_search 使用：先搜尋找到 URL，再用 web_fetch 讀取詳細內容。",
      "urlDesc": "要擷取的完整 URL（包含 https://）",
      "maxLenDesc": "回傳的最大字元數，預設 {max}"
    },
    "browser": {
      "label": "瀏覽器",
      "description": "控制無頭瀏覽器（導航、點擊、輸入、捲動、截圖、執行 JS）。透過 action 參數選擇操作，每個 action 需要的參數見 action 欄位的說明。注意：snapshot 回傳的 [ref] 編號在 navigate/click/type 之後會失效，這些操作會自動回傳新的 snapshot，請始終使用最新 snapshot 中的 ref。",
      "actionDesc": "要執行的操作。每個 action 的必填參數：navigate→url；click→ref；type→text（可選 ref、pressEnter）；scroll→direction（可選 amount）；select→ref+value；key→key；wait→（可選 timeout、state）；evaluate→expression。start、stop、snapshot、screenshot、show 不需額外參數。",
      "urlDesc": "URL（navigate 時必填）",
      "refDesc": "元素 ref 編號（click/type/select 時使用）",
      "textDesc": "輸入文字（type 時必填）",
      "directionDesc": "捲動方向（scroll 時必填）",
      "amountDesc": "捲動量（scroll 時可選，預設 3）",
      "valueDesc": "選項值（select 時必填）",
      "keyDesc": "按鍵名（key 時必填），如 Enter、Escape、Tab、Control+a",
      "expressionDesc": "JavaScript 表達式（evaluate 時必填）",
      "timeoutDesc": "逾時毫秒數（wait 時可選，預設 5000）",
      "stateDesc": "等待狀態（wait 時可選）：domcontentloaded / idle",
      "pressEnterDesc": "輸入後按 Enter（type 時可選）"
    },
    "channel": {
      "label": "頻道",
      "description": "管理頻道訊息（適合多人廣播、群組討論）。\n操作：\n- read(channel, count?)：查看頻道最近訊息\n- post(channel, content)：往頻道傳送訊息\n- create(name, members, intro?)：建立新頻道\n- list：查看自己加入的頻道\n注意：如需與某個 agent 一對一私訊，請用 dm 工具，不要用頻道模擬私聊。",
      "actionDesc": "操作類型",
      "channelDesc": "頻道名稱（read/post 時必填）",
      "contentDesc": "訊息內容（post 時必填）",
      "nameDesc": "新頻道名稱（create 時必填）",
      "membersDesc": "成員列表（create 時必填），如 [\"hana\", \"butter\"]",
      "introDesc": "頻道介紹（create 時可選）",
      "countDesc": "讀取訊息筆數（read 時可選，預設 20）"
    },
    "artifact": {
      "label": "建立預覽",
      "description": "當你需要向使用者展示 HTML 頁面、程式碼片段或長篇 Markdown 內容時，呼叫此工具。\n內容會在獨立的預覽面板中算繪，使用者可以即時查看效果。\n適用場景：可執行的 HTML/CSS/JS 頁面、互動式視覺化、SVG 圖表、完整程式碼檔案、長篇格式化文件。\n不適用場景：簡短的文字回覆、對話性回答、單行程式碼片段（直接在訊息中展示即可）。",
      "typeDesc": "內容類型：html（算繪頁面）、code（語法高亮）、markdown（文件）",
      "titleDesc": "展示標題，簡短描述內容",
      "contentDesc": "完整內容（HTML 原始碼 / 程式碼 / Markdown 文字）",
      "languageDesc": "程式語言（僅 type=code 時有效），如 javascript, python, css"
    },
    "dm": {
      "label": "私訊",
      "description": "僅用於給另一個 agent 發一則私訊，讓對方知道某件事。\n不要用這個工具派任務或取得結果，那是 subagent 的職責。",
      "toDesc": "目標 agent 的 id 欄位值（團隊列表中括號內，不是粗體的顯示名稱）",
      "messageDesc": "訊息內容"
    },
    "cron": {
      "label": "排程任務",
      "description": "建立和管理排程任務。排程任務在背景自動執行，到時間時會開一個獨立 session 執行指定的 prompt。\n操作：\n- list：查看所有任務\n- add(scheduleType, schedule, prompt, label?, model?)：建立任務\n  - scheduleType \"at\"：一次性，schedule 為 ISO 時間字串\n  - scheduleType \"every\"：間隔，schedule 為分鐘數（如 60 = 每小時）\n  - scheduleType \"cron\"：cron 運算式（如 \"0 7 * * *\" = 每天早上 7 點）\n  - model：可選，指定執行任務使用的模型（不填則使用預設對話模型）\n- remove(id)：刪除任務\n- toggle(id)：啟用/停用任務",
      "actionDesc": "操作類型",
      "scheduleTypeDesc": "排程類型（add 時必填）",
      "scheduleDesc": "排程參數：ISO 時間(at)，分鐘數(every，如 60=每小時)，cron 運算式(cron)",
      "promptDesc": "到時間時執行的 prompt（add 時必填）",
      "labelDesc": "任務顯示標籤（可選）",
      "modelDesc": "指定執行模型（可選，不填則使用預設對話模型）",
      "idDesc": "任務 ID（remove/toggle 時必填）"
    },
    "notify": {
      "label": "通知",
      "description": "向使用者傳送系統通知（桌面彈窗）。\n使用場景：\n- 使用者說「提醒我 xxx」「到時候通知我」「記得叫我 xxx」\n- 排程任務的 prompt 中明確包含「通知」「提醒」等意圖\n- 巡檢/排程任務中發現需要使用者關注的事項\n如果一切正常、無異常，不要呼叫此工具。",
      "titleDesc": "通知標題（簡短）",
      "bodyDesc": "通知內容"
    },
    "todoWrite": {
      "label": "待辦",
      "description": "管理當前 session 內的待辦清單。每次呼叫傳入完整的 todos 陣列覆蓋當前狀態（替換式）。\n每條 todo 需要：\n- content：靜態描述（如『讀取 spec』）\n- activeForm：執行中態描述（如『正在讀取 spec』）\n- status：pending | in_progress | completed\n約定同時最多一條 in_progress。",
      "contentDesc": "todo 的靜態描述文字",
      "activeFormDesc": "執行中態的描述文字（用於 UI 展示 in_progress 時）",
      "statusDesc": "三態：pending / in_progress / completed",
      "todosDesc": "完整的 todo 清單，每次呼叫都會覆蓋舊清單",
      "summaryEmpty": "已清空待辦",
      "summaryStats": "共 {total} 條待辦：{completed} 完成，{in_progress} 進行中，{pending} 待處理"
    },
    "pinnedMemory": {
      "pinLabel": "釘選記憶",
      "pinDescription": "將一條內容存入釘選記憶。當使用者說「記住這個」「幫我記一下」「以後別忘了」時使用。釘選記憶始終保留在上下文中。",
      "pinContentDesc": "要記住的內容",
      "unpinLabel": "移除釘選記憶",
      "unpinDescription": "從釘選記憶中移除一條內容。當使用者說「忘掉 xxx」「刪掉這條記憶」時使用。支援模糊比對：只要某行包含你提供的關鍵字就會被移除。",
      "unpinKeywordDesc": "要移除的記憶的關鍵字，會模糊比對"
    },
    "experience": {
      "recallLabel": "查看經驗",
      "recallDescription": "查看經驗庫。不傳參數回傳所有分類概覽，傳分類名回傳該分類的具體經驗。當使用者要求你完成一項具體工作（寫程式碼、搜尋資料、建立文件、分析問題等）時，開始前應先呼叫此工具檢查是否有相關經驗可參考。普通閒聊、問答、日常對話不需要呼叫。",
      "recallCategoryDesc": "分類名。不傳則回傳所有分類概覽",
      "recordLabel": "記錄經驗",
      "recordDescription": "將一條經驗教訓記錄到經驗庫。在以下情況使用：使用者指出你犯了錯誤並說明正確做法、你嘗試多種方法後發現了有效做法、使用者明確說「以後要/不要這樣做」。每條經驗應簡潔直接，一句話概括。",
      "recordCategoryDesc": "經驗所屬分類，2-4 字短語，如「工具使用」「搜尋技巧」「回答風格」",
      "recordContentDesc": "具體的經驗內容，簡潔直接，一句話"
    },
    "outputFile": {
      "label": "交付檔案",
      "description": "當你為任何人（使用者、agents）成功建立了檔案，或被要求提供某個檔案時，呼叫此工具將檔案呈現在對話中，讓使用者可以直接點擊開啟。只在檔案存在時呼叫，不要在檔案找不到或建立失敗時呼叫。不要僅在文字中提及檔案路徑，必須呼叫此工具。",
      "filepathsDesc": "檔案絕對路徑陣列",
      "filePathDesc": "（相容）單一檔案的絕對路徑",
      "labelDesc": "（相容）顯示給使用者的檔案名稱"
    },
    "subagent": {
      "label": "啟動子 Agent",
      "description": "將任務派給子 agent 執行。可指定其他 agent（傳 agent 參數），不指定則自己分身執行。傳 agent=\"?\" 查看可用 agent 列表。\n\n你的判斷：\n- 如果目前還有可以並行推進的工作，繼續做\n- 如果必須拿到結果才能進行下一步，告訴使用者你已經派出去了、在等回覆，然後正常等待即可\n\n適用場景：\n- 需要大量搜尋、閱讀後總結為簡短結論的調研任務\n- 可以和目前思路並行的獨立子問題\n- 需要在多個方向同時探索的任務（可同時發起多個 subagent 呼叫）\n- 讓另一個 agent 從其專業視角處理任務\n不適用：需要修改檔案、執行命令等有副作用的操作\n\n重要：task 參數要寫清楚完整的指令和必要背景，子 agent 看不到目前的對話歷史。",
      "taskDesc": "子 agent 的完整指令。格式：第一行寫「任務：xxx」作為任務標題，空一行後寫詳細要求和必要背景。子 agent 看不到當前對話歷史，必要上下文都要寫在這裡。",
      "agentDesc": "目標 agent 的 id 欄位值（團隊列表中括號內，不是粗體的顯示名稱）。不填則當前 agent 自己執行，傳 \"?\" 列出可用 agent。",
      "modelDesc": "指定模型（可選，預設使用 utility 模型）"
    },
    "installSkill": {
      "label": "安裝技能",
      "description": "為自己安裝新技能（skill）。模式 A：提供 GitHub 儲存庫 URL（含 SKILL.md），自動擷取並安裝。模式 B：直接提供 skill_content + skill_name，適合自行撰寫。安裝後技能立即生效。",
      "githubUrlDesc": "GitHub 儲存庫 URL（模式 A）",
      "skillContentDesc": "SKILL.md 的完整內容（模式 B）",
      "skillNameDesc": "技能名稱（模式 B 必填）",
      "reasonDesc": "說明為什麼需要這個技能（稽核用，必填）",
      "userRequestedDesc": "是否由使用者主動要求安裝（true 時安裝為使用者技能，否則為自學技能）"
    },
    "updateSettings": {
      "label": "設定",
      "description": "修改 Hanako 的設定。支援兩種操作：\n- search + query：用關鍵字搜尋設定項，查看當前值和可選項\n- apply + key + value：修改指定設定項，需使用者確認\n\n如果已知確切 key，可以直接 apply 跳過搜尋。",
      "actionDesc": "操作類型：search 搜尋設定項 / apply 修改設定",
      "queryDesc": "搜尋關鍵字（search 時必填）",
      "keyDesc": "設定項 key（透過 search 取得）",
      "valueDesc": "提議的新值",
      "searchResult": "找到 {count} 個匹配的設定項：\n\n{results}\n\n使用 action \"apply\" 並指定 key 和 value 來修改設定。",
      "searchNoResults": "未找到與「{query}」匹配的設定項。試試更寬泛的關鍵字。",
      "searchMissingQuery": "search 操作需要提供 query 參數。",
      "applyMissingParams": "apply 操作需要同時提供 key 和 value 參數。",
      "frontendOnly": "僅在客戶端可見",
      "sandbox": "沙盒安全",
      "sandboxDesc": "限制檔案系統寫入範圍",
      "locale": "語言",
      "timezone": "時區",
      "timezoneDesc": "IANA 時區（如 Asia/Shanghai）",
      "thinkingBudget": "思考深度",
      "memory": "記憶系統",
      "memoryDesc": "開啟/關閉目前 Agent 的記憶功能",
      "agentName": "Agent 名稱",
      "userName": "使用者名稱",
      "workingDir": "工作目錄",
      "workingDirDesc": "Agent 的檔案系統工作目錄",
      "theme": "主題",
      "chatModel": "對話模型",
      "fileBackup": "檔案備份",
      "fileBackupDesc": "AI 修改前自動備份檔案"
    },
    "stopTask": {
      "label": "終止後台任務",
      "description": "終止一個正在執行的後台任務。傳入 task_id 即可終止。可終止的任務類型包括子代理任務、圖片/影片生成任務等。",
      "taskIdDesc": "要終止的任務 ID"
    }
  },
  "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此操作被 Hanako 的沙盒安全策略阻止。這不是程式錯誤，而是安全保護機制在運作。請告知使用者操作被安全策略阻止，並說明具體原因。使用者可以在設定中調整沙盒策略。",
    "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": "[安全策略] 檔案系統寫入被限制在工作空間內。此操作被沙盒安全策略阻止，請告知使用者。",
    "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.openInNewWindow": "在新視窗查看",
  "preview.openInNewWindowUnsupported": "此類型不支援新視窗查看"
}
