{
  "_meta": {
    "locale": "zh",
    "name": "简体中文",
    "version": "v0.35.5",
    "authors": [
      "Jarvis Team"
    ]
  },
  "error": {
    "model_not_installed": "所需的语言模型尚未安装。请运行：ollama pull {model}",
    "ollama_unreachable": "语言模型（Ollama）不可达。请确保 Ollama 正在运行：ollama serve",
    "timeout": "操作已超时。复杂任务或网络较慢时可能会发生这种情况。请重试或简化请求。",
    "connection_failed": "连接出现问题。请检查网络连接后重试。",
    "permission_denied": "我没有执行此操作的权限。Gatekeeper 出于安全原因阻止了该请求。",
    "not_found": "未找到请求的文件或资源。",
    "rate_limited": "服务当前过载（已达到速率限制）。请稍候片刻后重试。",
    "cloud_rate_limited": "云端 API 已达到速率限制（429）。请稍候片刻或检查你的 API 配额和账单。",
    "cloud_auth_failed": "云端 API 认证失败。请检查配置中的 API 密钥。",
    "cloud_quota_exceeded": "你的云端 API 配额已用完。请检查你的账单和使用限制。",
    "cloud_model_not_found": "请求的模型在此云端 API 上不可用。请检查配置中的模型名称。",
    "cloud_unreachable": "云端 API 不可达。请检查你的网络连接和 API 端点。",
    "cloud_generic": "云端 API 错误：{detail}",
    "memory_error": "发生内存问题。任务可能过大。",
    "generic": "发生错误（{exc_type}）。我将尝试其他方法。",
    "gatekeeper_blocked": "我想执行「{friendly}」，但出于安全原因被阻止了。原因：{reason}",
    "retry_timeout": "服务未在规定时间内响应。",
    "retry_connection": "无法建立连接。",
    "retry_overloaded": "服务当前过载。",
    "retry_technical": "技术错误：{detail}",
    "retry_exhausted": "我已尝试「{friendly}」{attempts} 次，但每次都失败了。{detail}",
    "no_details": "无详细信息。",
    "all_actions_blocked": "我无法执行任何计划步骤。Gatekeeper 阻止了所有操作。敏感操作可能需要审批。",
    "context_window_exceeded": "上下文对于 {model} 来说太大了（{estimated} / {limit} 令牌）。请开始新会话或切换到具有更大上下文窗口的模型。",
    "processing_error": "处理过程中发生错误。",
    "invalid_json": "无效的 JSON",
    "invalid_token": "无效的令牌",
    "python_version": "Cognithor 需要 Python >= 3.12",
    "audio_transcription": "音频转录时发生错误。",
    "tts_error": "TTS 发生错误",
    "piper_failed": "Piper 失败：{detail}",
    "fastapi_required": "API 通道需要 FastAPI：pip install fastapi uvicorn",
    "whisper_unavailable": "faster-whisper 未安装。语音转录不可用。",
    "whisper_required": "STT 需要 faster-whisper：pip install faster-whisper",
    "ffmpeg_required": "ffmpeg 未安装。语音流需要：apt install ffmpeg",
    "config_load_failed": "无法加载配置概览。",
    "workflow_unavailable": "工作流引擎不可用",
    "model_unavailable": "模型 '{name}'（{role}）不可用。安装：ollama pull {name}",
    "exporter_unavailable": "导出器不可用",
    "security_pipeline_unavailable": "安全管道不可用",
    "ecosystem_unavailable": "生态系统策略不可用",
    "gate_unavailable": "Gate 不可用",
    "reputation_unavailable": "信誉引擎不可用",
    "ollama_check": "请检查：\n• Ollama 是否在运行？→ ollama serve\n• 模型是否已安装？→ ollama pull {model}",
    "model_causes": "可能的原因：\n• 模型所需的 VRAM/RAM 不足\n• 模型损坏 → ollama pull {model}",
    "check_ollama": "请检查 Ollama 是否在运行且资源充足。",
    "invalid_time_format": "无效的时间格式：'{s}'（期望 HH:MM 或 HH:MM:SS）",
    "cryptography_required": "凭证加密需要 cryptography 包。pip install cryptography",
    "dag_unavailable": "DAG WorkflowEngine 不可用",
    "recursion_limit": "子代理递归已中止：深度 {depth} 超过上限",
    "task_incomplete": "任务未完全完成",
    "delegation_failed": "代理路由器不可用。委派给 {to_agent} 失败。",
    "planner_not_init": "Planner 未初始化——无法委派",
    "gatekeeper_not_init": "Gatekeeper 未初始化——无法委派"
  },
  "tool": {
    "exec_command": "Shell 命令",
    "write_file": "写入文件",
    "read_file": "读取文件",
    "edit_file": "编辑文件",
    "list_directory": "列出目录",
    "run_python": "Python 代码",
    "web_search": "网页搜索",
    "web_news_search": "新闻搜索",
    "web_fetch": "获取网页",
    "search_and_read": "网络调研",
    "search_memory": "知识搜索",
    "save_to_memory": "保存知识",
    "document_export": "创建文档",
    "analyze_image": "图像分析",
    "transcribe_audio": "音频转录",
    "extract_text": "文本提取",
    "text_to_speech": "文字转语音",
    "vault_search": "知识库搜索",
    "vault_entry": "知识库条目",
    "analyze_code": "代码分析",
    "browser_navigate": "浏览器导航",
    "browser_screenshot": "浏览器截图",
    "db_query": "数据库查询",
    "db_schema": "数据库架构",
    "db_execute": "数据库写入",
    "db_connect": "数据库连接",
    "create_chart": "创建图表",
    "create_table_image": "创建表格图片",
    "chart_from_csv": "从CSV创建图表",
    "git_status": "Git 状态",
    "git_diff": "Git 差异",
    "git_log": "Git 日志",
    "git_commit": "Git 提交",
    "git_branch": "Git 分支",
    "search_files": "文件搜索",
    "find_in_files": "内容搜索",
    "find_and_replace": "查找和替换",
    "docker_ps": "Docker 容器列表",
    "docker_logs": "Docker 日志",
    "docker_inspect": "Docker 检查",
    "docker_run": "Docker 启动",
    "docker_stop": "Docker 停止",
    "api_list": "API 集成列表",
    "api_connect": "API 连接",
    "api_call": "API 调用",
    "api_disconnect": "API 断开"
  },
  "tool_desc": {
    "web_search": "使用 DuckDuckGo 进行网页搜索，支持多后端备用（SearXNG、Brave、Google CSE）。",
    "web_fetch": "获取网页并使用 trafilatura 提取干净的文本内容。",
    "search_and_read": "搜索网络并获取排名靠前的结果。适合深入调研。",
    "web_news_search": "搜索近期新闻文章。",
    "http_request": "执行 HTTP 请求（GET、POST、PUT、DELETE、PATCH）。",
    "read_file": "读取文件。路径会根据沙箱策略进行检查。",
    "write_file": "创建或覆盖文件（原子写入）。",
    "exec_command": "在沙箱中执行 Shell 命令。",
    "run_python": "在带有资源限制的沙箱中执行 Python 代码。",
    "analyze_code": "结合 AST 质量分析与安全模式扫描。",
    "analyze_image": "使用视觉模型分析图像。默认模型：快速且准确。",
    "browser_navigate": "导航到 URL 并提取页面内容。适用于调研、价格比较、阅读新闻。",
    "browser_fill": "在当前页面填写表单字段。",
    "browser_js": "在当前页面执行 JavaScript。",
    "browser_info": "返回当前页面的概览信息。",
    "browser_screenshot": "返回当前页面截图的文字描述。",
    "search_memory": "跨所有层级搜索 Jarvis 知识库（核心、语义、情景、程序性）。",
    "save_to_memory": "将新信息保存到 Jarvis 知识库。",
    "get_entity": "从知识图谱加载实体。",
    "add_entity": "在知识图谱中创建新实体。",
    "add_relation": "在知识图谱中创建两个实体之间的关系。",
    "get_core_memory": "返回 CORE.md（身份、规则、偏好设置）。",
    "get_episodes": "加载最近 N 天的日志条目。",
    "search_procedures": "搜索程序（已验证的重复任务工作流）。",
    "update_procedure": "报告程序执行的成功/失败，用于学习追踪。",
    "memory_stats": "显示记忆系统统计信息。",
    "db_query": "在数据库上执行只读 SQL 查询。支持 SQLite（文件路径）和 PostgreSQL（连接字符串）。返回格式化表格。",
    "db_schema": "显示数据库架构。不带 table 参数：列出所有表。带 table：详细列信息（名称、类型、可空、主键、默认值）。",
    "db_execute": "执行写入 SQL 语句（INSERT/UPDATE/DELETE/CREATE）。需要 Gatekeeper 批准。DROP 语句被阻止。",
    "db_connect": "测试数据库连接并显示信息（类型、版本、大小、表数量）。",
    "create_chart": "从数据创建图表（bar、line、pie、scatter、hbar）。以暗色主题保存为 PNG。",
    "create_table_image": "将数据渲染为格式化表格图片（PNG）。可选最大值高亮。暗色主题。",
    "chart_from_csv": "直接从 CSV 文件生成图表。自动检测列。",
    "git_status": "显示 Git 工作树状态：已暂存、未暂存和未跟踪的文件。",
    "git_diff": "显示 Git 差异。选项：未暂存（默认）、已暂存（--cached）或与特定提交比较。",
    "git_log": "显示 Git 提交历史，支持作者筛选和紧凑格式。",
    "git_commit": "暂存指定文件并创建 Git 提交。不允许 'git add .'。",
    "git_branch": "Git 分支操作：列出、创建、切换、删除（仅安全删除）。",
    "search_files": "按名称或 glob 模式查找文件。递归搜索，排除 .git、node_modules 等。",
    "find_in_files": "使用文本或正则表达式搜索文件内容。显示带上下文行的匹配结果。",
    "find_and_replace": "跨文件查找和替换。默认：dry_run（仅预览）。创建 .bak 备份。",
    "docker_ps": "列出 Docker 容器，包括状态、端口和镜像信息。",
    "docker_logs": "获取 Docker 容器日志，支持尾行数和时间过滤。",
    "docker_inspect": "检查 Docker 容器或镜像的详细配置信息。",
    "docker_run": "从镜像启动 Docker 容器，支持端口映射和环境变量。",
    "docker_stop": "优雅地停止正在运行的 Docker 容器。",
    "api_list": "列出所有已配置的 API 集成和可用模板。",
    "api_connect": "配置新的 API 集成，包含身份验证。",
    "api_call": "向已配置的集成发送经过身份验证的 API 调用。",
    "api_disconnect": "移除 API 集成配置。"
  },
  "channel": {
    "approval_required": "需要审批",
    "approval_rationale": "原因：{rationale}",
    "help_title": "可用命令：",
    "unknown_command": "未知命令：{command}。输入 /help 获取帮助。",
    "stt_unavailable": "语音识别不可用。请安装 faster-whisper：pip install faster-whisper",
    "error_fallback": "处理过程中发生错误。"
  },
  "status": {
    "exec_command": "正在执行命令...",
    "run_python": "正在运行 Python 代码...",
    "tool_running": "正在运行 {tool}..."
  },
  "voice": {
    "approval_prompt": "我可以运行 {tool} 吗？原因：{reason}。请说「是」或「否」。"
  },
  "gatekeeper": {
    "invalid_path": "无效路径：{path}",
    "path_outside_allowed": "路径超出允许的目录范围：{path}",
    "dangerous_code": "检测到危险的 Python 代码：{description}",
    "offline_network_blocked": "工具 '{tool}' 需要网络，但系统处于离线模式",
    "credential_masked": "检测到参数中的凭据——已掩码",
    "capability_violation": "能力违规：{violations}",
    "risk_ceiling_exceeded": "操作超过风险上限（{ceiling}）：{risk}",
    "default_classification": "默认分类：{risk}",
    "destructive_command": "检测到破坏性 Shell 命令：模式 '{pattern}'"
  },
  "executor": {
    "action_skipped": "操作已跳过：{status}——{reason}",
    "deadlock": "操作已跳过：依赖未满足（死锁）",
    "deps_not_met": "操作已跳过：依赖未满足",
    "no_mcp_client": "没有可用的 MCP 客户端",
    "tool_error": "错误：{error}",
    "retry_exhausted_fallback": "{attempts} 次尝试后失败：{error}"
  },
  "planner": {
    "no_tools": "没有可用的工具。",
    "output_truncated": "[... 输出已截断]",
    "llm_error": "无法处理您的请求——语言模型报告了错误（HTTP {status_code}）。\n\n可能原因：\n- Ollama 未启动 → `ollama serve`\n- 模型 '{model}' 未安装 → `ollama pull {model}`\n- VRAM/RAM 不足\n\n错误详情：{detail}",
    "replan_exhausted": "无法继续执行计划——语言模型在 {attempts} 次尝试后报告错误。\n\n错误：{error}",
    "circuit_breaker_open": "语言模型持续不可达。{seconds} 秒后自动重试。\n\n请检查：\n- Ollama 是否在运行？-> `ollama serve`\n- 系统是否有足够的 RAM/VRAM？",
    "model_not_installed": "语言模型 '{model}' 尚未安装。请下载：\n\n  ollama pull {model}\n\n然后重启我或直接重试。",
    "escalation_fallback": "我已多次尝试运行 '{tool}'，但被阻止了：{reason}。请帮我用其他方式解决。",
    "results_summary_failed": "以下是结果（摘要失败）：\n\n{results}",
    "summarize_failed": "我无法总结结果——语言模型响应异常。请检查 Ollama 是否在运行并有足够的资源。"
  },
  "prompt": {
    "respond_default": "简洁且有信息量地回答。",
    "respond_chinese": "用中文简洁且有信息量地回答。",
    "natural_speech": "用自然的口语化语言回答，适合语音输出。",
    "jarvis_identity": "您是 Jarvis。请礼貌地用中文解释。"
  },
  "personality": {
    "greeting_night": "夜猫子您好！",
    "greeting_morning": "早上好！",
    "greeting_afternoon": "下午好！",
    "greeting_evening": "晚上好！",
    "empathy_directive": "对用户的处境表示理解和关心。",
    "appreciation_directive": "以欣赏和建设性的方式表达回复。",
    "humor_directive": "偶尔轻松的评论是可以的，但始终保持专业。",
    "success_directive": "当任务成功完成时，给予积极的确认。",
    "proactive_directive": "询问用户是否还需要其他帮助，或者更多细节是否会有所帮助。"
  },
  "sentiment": {
    "response_frustrated": "请特别耐心、理解和乐于助人。",
    "response_urgent": "简洁直接地回答。直奔主题。省略客套话。",
    "response_confused": "请特别清晰、逐步地解释。使用简单的语言。"
  },
  "text": {
    "truncated": "[... 已截断]",
    "output_truncated": "[... 已截断：{current}/{total} 字符，来源：{url}]"
  },
  "web": {
    "invalid_url": "无效的 URL：{url}",
    "invalid_domain": "无有效域名：{url}",
    "dns_blocked": "{hostname} 的 DNS 指向被阻止的地址：{ip}",
    "search_failed": "搜索「{query}」失败：{error}",
    "no_results": "没有找到结果：{query}",
    "fetch_failed": "获取 {url} 失败：{error}",
    "invalid_method": "无效的 HTTP 方法：{method}。允许：GET、POST、PUT、DELETE、PATCH、HEAD",
    "body_too_large": "请求体过大：{size} 字节（最大：{max_size}）",
    "timeout": "{url} 超时，等待 {seconds} 秒",
    "request_failed": "请求 {url} 失败：{error}",
    "search_results_for": "搜索结果：{query}",
    "source_comparison_note": "应注意各来源之间的一致性和矛盾之处",
    "error_query_required": "错误：search_and_read 需要 'query' 参数。"
  },
  "verified_lookup": {
    "no_webtools": "错误：WebTools 不可用。",
    "search_failed": "搜索失败：{error}",
    "no_results": "没有找到搜索结果：{query}",
    "no_content": "无法从找到的页面中提取内容：{query}",
    "no_facts": "未找到可验证的事实。",
    "no_answer": "无回答。",
    "consensus_failed": "无法确定共识。",
    "header": "## 已验证的回答（置信度：{confidence}%）\n",
    "sources_header": "\n### 来源（已检查 {count} 个）",
    "agreement_header": "\n### 来源对比：{agreement}% 一致",
    "agreement_high": "高度一致：多个来源确认了事实。",
    "agreement_medium": "中度一致：部分确认。",
    "agreement_low": "低度一致：来源之间存在矛盾。",
    "discrepancies_header": "\n### 差异",
    "discrepancy_item": "偏差：'{value_a}'（{count_a} 个来源）vs. '{value_b}'（{count_b} 个来源）",
    "duration": "\n*总耗时：{ms}ms*"
  },
  "gateway": {
    "parse_failed": "我无法处理语言模型的回复。请重试或换一种方式表达您的请求。",
    "consent_granted": "隐私同意已授权。我现在准备好了！",
    "processing_cancelled": "处理已取消。我还能为你做什么？",
    "budget_limit_reached": "预算上限已达到：{warning}",
    "sub_agent_timeout": "子代理在 {seconds} 秒后超时",
    "sub_agent_recursion": "子代理递归已中止：深度 {depth} 超过最大值 {max_depth}。",
    "status_thinking": "正在思考...",
    "status_planning": "正在规划步骤...",
    "status_analyzing": "正在分析任务...",
    "status_creating_plan": "正在创建计划...",
    "status_working": "正在处理...",
    "channel_compact": "保持回答简短紧凑。",
    "channel_max_length": "最多 {max} 个字符。",
    "channel_no_markdown": "不要使用 Markdown。",
    "channel_no_code_blocks": "不要使用代码块。",
    "correction_hint": "[更正] 用户更正了：「{text}」。调整你的计划。不要重新执行之前的操作。",
    "startup_description": "Jarvis 已启动（LLM={llm_ok}，工具={tool_count}）",
    "shutdown_description": "Jarvis 已关闭",
    "status_web_search": "正在搜索网页...",
    "status_web_news_search": "正在搜索新闻...",
    "status_search_and_read": "正在在线研究...",
    "status_web_fetch": "正在获取网页...",
    "status_read_file": "正在读取文件...",
    "status_write_file": "正在写入文件...",
    "status_edit_file": "正在编辑文件...",
    "status_exec_command": "正在执行命令...",
    "status_run_python": "正在运行 Python 代码...",
    "status_search_memory": "正在搜索知识...",
    "status_save_to_memory": "正在保存知识...",
    "status_document_export": "正在创建文档...",
    "status_media_analyze_image": "正在分析图像...",
    "status_media_transcribe_audio": "正在转录音频...",
    "status_media_extract_text": "正在提取文本...",
    "status_media_tts": "正在生成语音...",
    "status_vault_search": "正在搜索 Vault...",
    "status_vault_write": "正在写入 Vault...",
    "status_analyze_code": "正在分析代码...",
    "status_list_directory": "正在列出目录...",
    "status_browser_navigate": "正在导航浏览器...",
    "status_browser_screenshot": "正在截图..."
  },
  "media": {
    "unsupported_image": "不支持的图像格式：{suffix}",
    "unsupported_format": "不支持的格式：{suffix}。支持：PDF、DOCX、TXT、MD、HTML、CSV",
    "text_truncated": "[... 已截断，共 {length} 字符]",
    "pdf_reader_required": "没有可用的 PDF 阅读器。安装：pip install pymupdf 或 pip install pdfplumber",
    "analysis_unavailable": "错误：文档分析不可用。",
    "no_text_in_document": "错误：文档中未找到文本。可能是扫描版 PDF——请尝试 OCR。",
    "export_unsupported_format": "不支持的格式：{fmt}。允许：pdf、docx、xlsx、pptx",
    "tts_unavailable": "没有可用的 TTS 后端。请安装 piper 或 espeak-ng。",
    "file_not_found": "文件未找到或无效：{path}",
    "audio_too_large": "音频文件过大（{size_mb} MB，最大 {max_mb} MB）",
    "no_speech_detected": "[未检测到语音]",
    "whisper_not_installed": "faster-whisper 未安装。pip install faster-whisper",
    "transcription_failed": "转录失败：{error}",
    "image_not_found": "图像未找到或无效：{path}",
    "image_too_large": "图像过大（{size_mb} MB，最大 {max_mb} MB）",
    "httpx_not_installed": "httpx 未安装",
    "image_analysis_failed": "图像分析失败：{error}",
    "file_too_large_mb": "文件过大（{size_mb} MB，最大 {max_mb} MB）",
    "unsupported_format_extended": "不支持的格式：{suffix}。支持：PDF、DOCX、PPTX、TXT、MD、HTML、CSV、JSON、XML",
    "text_extraction_failed": "文本提取失败：{error}",
    "pdf_read_failed": "PDF 读取失败：{error}",
    "ppt_read_failed": "PPT 读取失败：{error}",
    "docx_read_failed": "DOCX 读取失败：{error}",
    "invalid_sample_rate": "无效采样率：{rate}。允许：{allowed}",
    "ffmpeg_error": "ffmpeg 错误：{error}",
    "audio_converted": "已转换：{path}",
    "ffmpeg_not_installed": "ffmpeg 未安装。apt install ffmpeg",
    "pillow_not_installed": "Pillow 未安装。pip install Pillow",
    "image_resized": "图像已缩放至 {width}x{height}：{path}",
    "image_resize_failed": "图像缩放失败：{error}",
    "empty_content": "内容为空",
    "document_created": "文档已创建：{path}",
    "document_export_failed": "文档导出失败：{error}",
    "document_create_failed": "文档创建失败：{error}",
    "empty_tts_text": "文本为空",
    "invalid_voice": "无效的语音名称：{error}",
    "output_outside_workspace": "输出路径在工作区之外：{path}",
    "tts_audio_created": "音频已生成：{path}",
    "tts_audio_created_espeak": "音频已生成（eSpeak）：{path}",
    "analysis_extraction_failed": "文本提取错误：{error}",
    "analysis_llm_failed": "LLM 分析错误：{error}",
    "vault_saved": "\u2713 分析已保存到 Vault，标题为 '{title}'。",
    "vault_save_failed": "\u26a0 Vault 保存失败：{error}",
    "ocr_warning": "\n\n\u26a0 **提示**：提取的文本非常少。如果这是扫描版 PDF，则需要 OCR 软件。",
    "empty_typst_source": "Typst 源代码为空",
    "typst_created": "Typst PDF 已创建：{path}",
    "typst_failed": "Typst 编译失败：{error}",
    "no_templates": "在 ~/.jarvis/templates/documents/ 中未找到文档模板",
    "invalid_json_variables": "错误：JSON 变量无效：{error}",
    "template_render_error": "错误：{error}",
    "error_detail": "错误：{error}"
  },
  "fs": {
    "invalid_path": "无效路径：{path}",
    "access_denied": "访问被拒绝：{path} 超出允许的目录范围",
    "not_regular_file": "不是常规文件：{path}",
    "file_too_large": "文件过大（{size} 字节）。最大：1 MB。",
    "edit_ambiguous": "请使用更长的 old_text 片段以确保唯一匹配。",
    "file_written": "文件已写入：{path}（{size} 字节）",
    "file_edited": "文件已编辑：{path}\n已替换：{old_len} \u2192 {new_len} 个字符\n行数变化：{diff}",
    "tree_truncated": "...（另有 {count} 个条目）",
    "access_denied_tree": "[访问被拒绝]",
    "file_not_found": "文件未找到：{path}",
    "dir_not_found": "目录未找到：{path}",
    "text_not_found": "在 {path} 中未找到文本。搜索：'{text}...'"
  },
  "shell": {
    "path_blocked": "命令被阻止：路径 '{path}' 超出工作区范围。",
    "no_command": "未提供命令。"
  },
  "memory": {
    "invalid_tier": "错误：未知层级 '{tier}'。有效值：{valid}",
    "no_results": "没有找到结果：'{query}'",
    "access_denied": "访问被拒绝：路径 '{path}' 超出工作区范围",
    "entity_not_found_generic": "实体未找到",
    "entity_not_found": "未找到实体：'{name}'",
    "invalid_json": "错误：attributes 中的 JSON 无效：{attributes}",
    "entity_created": "实体已创建：{name}（类型：{entity_type}，ID：{id}）",
    "source_entity_not_found": "错误：未找到源实体 '{name}'。",
    "target_entity_not_found": "错误：未找到目标实体 '{name}'。",
    "no_episodes": "最近 {days} 天没有情景记录。",
    "no_procedures": "未找到相关程序：'{query}'",
    "empty_graph": "# 知识图谱\n\n暂无实体。\n",
    "compaction_status": "是否需要压缩：是/否",
    "error_empty_query": "错误：搜索查询为空。",
    "error_empty_content": "错误：内容为空。",
    "error_empty_name": "错误：名称为空。",
    "error_empty_procedure_name": "错误：程序名称为空。",
    "core_readonly": "错误：核心记忆不能直接写入。请手动编辑 CORE.md。",
    "core_empty": "（核心记忆为空。请在 ~/.jarvis/memory/ 中创建 CORE.md）",
    "episodic_saved": "情景记忆已保存：[{date}] {topic}",
    "semantic_saved": "语义记忆已索引：{count} 个块，路径 '{source_path}'",
    "procedural_saved": "程序记忆已保存：'{source_path}'（{count} 个块）",
    "relation_created": "关系已创建：{source} --[{relation}]-> {target}",
    "entity_deleted": "GDPR 删除：{count} 个实体 '{name}' 及其所有关系已删除。",
    "delete_failed": "删除失败：{error}",
    "relation_not_found": "未找到 '{source}' 和 '{target}' 之间的关系 '{relation}'。",
    "relation_deleted": "GDPR 删除：关系 '{source}' --[{relation}]-> '{target}' 已删除。",
    "search_results_header": "### {count} 条结果\n",
    "procedures_header": "### {count} 个程序\n",
    "procedure_not_found": "错误：未找到程序 '{name}'。",
    "procedure_usage_recorded": "程序 '{name}'：已记录{status}。共计：{total} 次，成功率：{rate}",
    "procedure_status_success": "成功",
    "procedure_status_failure": "失败",
    "stats_header": "### 记忆系统状态\n",
    "stats_chunks": "- **块数：** {value}",
    "stats_embeddings": "- **嵌入数：** {value}",
    "stats_entities": "- **实体数：** {value}",
    "stats_relations": "- **关系数：** {value}",
    "stats_procedures": "- **程序数：** {value}（{reliable} 个可靠）",
    "stats_episode_dates": "- **情景天数：** {value}",
    "stats_core_loaded": "- **核心记忆已加载：** {value}",
    "stats_embedding_cache": "- **嵌入缓存：** {hits} 次命中 / {calls} 次 API 调用",
    "stats_initialized": "- **已初始化：** {value}",
    "stats_yes": "是",
    "stats_no": "否",
    "procedure_item": "**{name}** · 成功率：{rate} · 使用次数：{uses} · 相关度：{score}",
    "entity_type_label": "- **类型：** {value}",
    "entity_relations_label": "\n**关系：**"
  },
  "ingest": {
    "unsupported_format": "不支持的格式：{suffix}",
    "no_extractor": "没有针对 {suffix} 的提取器",
    "pymupdf_required": "PDF 提取需要 PyMuPDF：pip install pymupdf",
    "docx_required": "DOCX 提取需要 python-docx：pip install python-docx",
    "file_too_large": "文件过大：{size} MB"
  },
  "code": {
    "access_denied": "访问被拒绝：'{path}' 超出工作区范围",
    "only_python": "错误：仅支持 Python 文件（.py）。"
  },
  "browser": {
    "text_truncated": "[... 已截断，共 {length} 字符]",
    "field_filled": "字段 '{selector}' 已填写",
    "vision_unavailable": "（视觉功能不可用）"
  },
  "security": {
    "token_store_insecure": "令牌存储使用 Base64 后备方案（未加密！）。pip install cryptography",
    "not_encrypted_warning": "未加密。pip install cryptography",
    "param_length_rule": "阻止过长的参数（注入防护）",
    "rate_limit_exceeded": "速率限制 '{name}' 已超出：{detail}",
    "forbidden_value": "包含被禁止的值 '{value}'"
  },
  "privacy": {
    "consent_prompt": "隐私声明：我会存储消息、提醒和处理日志。详情：cognithor.dev/privacy\n\n回复"接受"或"拒绝"。",
    "consent_declined": "未经隐私同意，我无法处理您的消息。如果改变主意，请发送"接受"。",
    "send_text_first": "请先发送一条文字消息并接受隐私声明。"
  },
  "vault": {
    "invalid_token_format": "无效的令牌格式（Base64 错误）：{error}",
    "token_too_short": "令牌太短，无法进行旧版解密",
    "not_found": "未找到笔记：{identifier}",
    "link_notes_not_found": "一个或两个笔记未找到",
    "saved": "笔记已保存：{title}",
    "error_no_title": "错误：未提供标题。",
    "error_no_content": "错误：未提供内容。",
    "error_no_query": "错误：未提供搜索关键词。",
    "error_no_identifier": "错误：未提供标识符。",
    "error_no_update_data": "错误：未提供要更新的内容或标签。",
    "error_no_path": "错误：未提供路径。",
    "error_invalid_path": "无效路径（路径遍历已被阻止）：{path}",
    "error_source_not_found": "未找到源笔记：{identifier}",
    "error_target_not_found": "未找到目标笔记：{identifier}",
    "no_results": "未找到笔记：{query}",
    "search_header": "Vault 搜索：{query}（{count} 条结果）\n",
    "list_empty": "Vault 中未找到任何笔记。",
    "list_header": "Vault 内容（共 {count} 条笔记）：\n",
    "list_path": "    路径：{path}",
    "list_tags": "    标签：{tags}",
    "list_updated": "    更新时间：{updated_at}",
    "read_display": "# {title}\n\n路径：{path}\n标签：{tags}\n\n{content}"
  },
  "skill": {
    "invalid_package_name": "无效的包名 '{name}'",
    "invalid_version": "无效的版本 '{version}'：需要 SemVer 格式",
    "tool_unavailable": "工具 '{tool}' 不可用",
    "no_skill_for": "没有匹配的技能：{query}",
    "syntax_check_passed": "语法检查通过（无沙箱可用）",
    "no_manifest": "包中不包含 manifest.json",
    "no_skill_py": "包中不包含 skill.py",
    "invalid_manifest": "Manifest 无效：{detail}",
    "code_analysis_dangerous": "代码分析：危险——{detail}",
    "publisher_untrusted": "发布者 '{signer}' 不受信任",
    "hash_mismatch": "内容哈希不匹配（可能被篡改？）",
    "auto_created": "此技能为自动创建。需要手动填充内容。",
    "err_name_empty": "错误：name 不能为空。",
    "err_description_empty": "错误：description 不能为空。",
    "err_trigger_keywords_empty": "错误：trigger_keywords 不能为空。",
    "err_body_empty": "错误：body 不能为空。",
    "err_file_exists": "错误：技能文件已存在：{path}\n请使用其他名称或删除已有文件。",
    "err_write_failed": "写入技能文件时出错：{exc}",
    "warn_hot_load_failed": "技能文件已写入：{path}\n警告：热加载失败：{exc}\n该技能将在下次重启后可用。",
    "created": "技能创建成功。\n  名称：{name}\n  标识：{slug}\n  文件：{path}\n  关键词：{keywords}\n  类别：{category}\n  已注册技能总数：{total}\n技能立即可用。",
    "no_skills_found": "未找到技能{filter_info}。",
    "filter_category": "（类别：{category}）",
    "filter_active_only": "（仅活跃）",
    "list_header": "已注册技能（{count}）：",
    "status_active": "活跃",
    "status_inactive": "未激活",
    "not_yet_tested": "尚未测试",
    "success_rate": "成功率：{rate}（已使用 {total} 次）",
    "install_failed": "安装失败：\n{errors}",
    "install_success": "社区技能 '{name}' 安装成功。\n  版本：{version}\n  路径：{path}\n  所需工具：{tools}{warnings}",
    "install_error": "安装时出错：{exc}",
    "no_community_skills": "未找到社区技能。",
    "community_list_header": "社区技能（{count}）：",
    "search_error": "搜索时出错：{exc}",
    "report_recorded": "已记录技能 '{name}' 的滥用举报。\n  类别：{category}\n  描述：{description}\n举报将在下次注册表同步时提交。",
    "no_tools": "无",
    "install_warnings_prefix": "\n警告："
  },
  "config": {
    "preset_office_name": "办公助手",
    "preset_office_desc": "每日简报、邮件概览、日程检查"
  },
  "wizard": {
    "invalid_selection": "'{title}' 的选择无效",
    "confirmation": "确认",
    "confirm_settings": "请检查设置并确认。"
  },
  "cli": {
    "help_log_level": "覆盖日志级别",
    "help_no_cli": "不启动 CLI 通道（Control Center 无头模式）",
    "help_api_port": "Control Center API 端口",
    "help_api_host": "Control Center API 主机"
  },
  "cron": {
    "default_weather": "天气预报",
    "default_weekly": "每周回顾：\n"
  },
  "collaboration": {
    "researcher": "深入调研。提供事实、来源和背景信息。",
    "analyst": "分析数据。识别模式、趋势和关联。",
    "critic": "批判性审查。找出论证中的错误、漏洞和弱点。",
    "validator": "根据需求验证结果。检查正确性。",
    "executor": "执行任务。产出具体成果。",
    "synthesizer": "综合所有观点。形成连贯的总结。",
    "mediator": "在各方立场之间调解。寻求共识，解决冲突。",
    "previous_contributions": "先前的贡献：\n"
  },
  "webchat": {
    "attach_file": "附加文件",
    "approval_required": "需要审批",
    "mic_access_denied": "无法访问麦克风。请允许访问。"
  },
  "audit": {
    "eval_dangerous": "eval() 允许执行任意代码",
    "exec_dangerous": "exec() 允许执行任意代码",
    "shell_injection": "使用 shell=True 可能导致 Shell 注入",
    "direct_shell": "直接执行 Shell",
    "external_http": "技能发起外部 HTTP 请求",
    "dns_exfiltration": "DNS 查询可能被用于数据泄露",
    "file_access_sandbox": "将文件访问限制在沙箱内",
    "temp_secrets": "凭证被写入临时文件",
    "base64_obfuscation": "Base64 编码可能隐藏恶意代码",
    "user_approved": "用户已批准：{reason}",
    "user_rejected": "用户已拒绝：{reason}"
  },
  "log": {
    "approval_timeout": "审批超时：%s",
    "cron_loaded": "已加载的定时任务：%d",
    "cron_triggered": "定时任务已触发：'%s'",
    "heartbeat_executed": "心跳已执行"
  },
  "integrity": {
    "negation_contradiction": "否定矛盾（重叠：{count} 个词）",
    "content_too_long": "内容异常过长"
  },
  "hygiene": {
    "contradictory_values": "'{key}' 的值相互矛盾：{values}",
    "hash_mismatch": "条目 '{entry_id}' 的哈希不匹配"
  },
  "tools": {
    "tool_not_found": "工具 '{name}' 未找到",
    "resource_not_found": "资源 '{uri}' 未找到",
    "prompt_not_found": "提示 '{name}' 未找到",
    "tool_not_found_available": "工具 '{name}' 未找到。可用：{available}",
    "server_not_connected": "MCP 服务器 '{server}' 未连接",
    "git_not_installed": "git 未安装或不在 PATH 中。",
    "git_timeout": "Git 命令在 {timeout} 秒后超时。",
    "git_output_truncated": "\n\n[... 输出已截断]",
    "git_not_a_repo": "'{cwd}' 不是 Git 仓库。请使用 'git init' 初始化或导航到现有仓库。",
    "git_status_error": "git status 出错：{stderr}",
    "git_status_staged_header": "已暂存 ({count})：",
    "git_status_unstaged_header": "\n未暂存 ({count})：",
    "git_status_untracked_header": "\n未跟踪 ({count})：",
    "git_status_clean": "工作区干净 \u2014 没有可提交的内容。",
    "git_status_detail_header": "\n--- 详细视图 ---",
    "git_diff_invalid_commit": "无效的提交标识符：'{commit}'",
    "git_diff_error": "git diff 出错：{stderr}",
    "git_diff_no_staged": "没有已暂存的更改。",
    "git_diff_no_commit_diff": "与提交 '{commit}' 无差异。",
    "git_diff_no_unstaged": "没有未暂存的更改。",
    "git_log_invalid_author": "无效的作者过滤器：'{author}'",
    "git_log_error": "git log 出错：{stderr}",
    "git_log_no_commits": "未找到提交记录。",
    "git_commit_message_required": "错误：提交消息是必需的。",
    "git_commit_files_required": "错误：必须指定至少一个文件（不允许使用 'git add .'）。",
    "git_commit_file_outside_workspace": "错误：文件 '{file_path}' 在工作区 ({workspace_root}) 之外",
    "git_commit_stage_error": "暂存时出错：{stderr}",
    "git_commit_error": "提交时出错：{stderr}",
    "git_commit_success": "提交成功创建。",
    "git_branch_list_error": "git branch 出错：{stderr}",
    "git_branch_no_branches": "没有分支（空仓库？）。",
    "git_branch_name_required": "错误：操作 '{action}' 需要提供分支名称。",
    "git_branch_invalid_name": "无效的分支名称：'{name}'",
    "git_branch_create_error": "创建分支 '{name}' 时出错：{stderr}",
    "git_branch_created": "分支 '{name}' 已创建并签出。",
    "git_branch_switch_error": "切换到分支 '{name}' 时出错：{stderr}",
    "git_branch_switched": "已切换到分支 '{name}'。",
    "git_branch_delete_error": "删除分支 '{name}' 时出错：{stderr}",
    "git_branch_deleted": "分支 '{name}' 已删除。",
    "git_branch_unknown_action": "未知操作：'{action}'。允许：list、create、switch、delete。",
    "set_reminder": "设置提醒",
    "set_reminder_desc": "设置未来的提醒。提供文本以及延迟分钟数或绝对时间。",
    "list_reminders": "列出提醒",
    "list_reminders_desc": "列出活跃/待处理的提醒。可选包括过去（已触发/已取消）的提醒。",
    "send_notification": "发送通知",
    "send_notification_desc": "发送即时桌面通知，包含标题和消息。",
    "get_clipboard": "读取剪贴板",
    "get_clipboard_desc": "读取剪贴板内容（文本或图片）。注意：剪贴板可能包含敏感信息。",
    "set_clipboard": "设置剪贴板",
    "set_clipboard_desc": "将文本复制到系统剪贴板。",
    "screenshot_desktop": "桌面截图",
    "screenshot_desktop_desc": "截取完整桌面截图。注意：截图可能包含敏感信息。",
    "screenshot_region": "区域截图",
    "screenshot_region_desc": "截取特定屏幕区域的截图。注意：截图可能包含敏感信息。",
    "reminder_fired": "提醒 #{id}：{text}",
    "reminder_set": "提醒 #{id} 已设置：\"{text}\" 到期时间 {due_at}（重复：{repeat}）",
    "no_reminders": "未找到提醒。",
    "clipboard_text": "剪贴板文本（{length} 字符）",
    "clipboard_image": "剪贴板包含图片，已保存至：{path}",
    "clipboard_empty": "剪贴板为空或无法读取。",
    "screenshot_saved": "截图已保存：{path}（{width}x{height}）",
    "copied_to_clipboard": "已复制 {chars} 个字符到剪贴板。",
    "max_reminders_reached": "已达到最大活跃提醒数（{max}）。请先取消一些提醒。",
    "notification_sent": "通知已发送。",
    "notification_fallback": "通知已记录（无可用桌面后端）。",
    "synthesis_no_llm": "知识综合不可用：未配置LLM。",
    "synthesis_no_memory": "知识综合不可用：记忆系统未连接。",
    "synthesis_error_no_topic": "错误：未指定主题。",
    "synthesis_no_info": "未找到 '{topic}' 的相关信息——既不在记忆中，也不在保险库或网络上。",
    "synthesis_llm_error": "知识综合时出错：{exc}",
    "synthesis_vault_saved": "\n\n*已保存到保险库，标题为 '{vault_title}'。*",
    "synthesis_no_stored_info": "未找到 '{topic}' 的存储信息。无法进行矛盾分析。",
    "synthesis_no_web_info": "未找到 '{topic}' 的当前网络信息。无法进行矛盾分析。",
    "synthesis_contradiction_error": "矛盾分析时出错：{exc}",
    "synthesis_no_timeline_info": "未找到 '{topic}' 的时间线信息。",
    "synthesis_timeline_error": "构建时间线时出错：{exc}",
    "synthesis_gaps_error": "知识差距分析时出错：{exc}",
    "synthesis_footer": "\n\n---\n*综合创建时间：{now}*\n*来源：{sources}*\n*深度：{depth}*",
    "canvas_no_html": "未提供HTML内容",
    "canvas_no_js": "未提供JavaScript代码"
  },
  "email": {
    "read_inbox": "读取收件箱",
    "search": "搜索邮件",
    "send": "发送邮件",
    "summarize": "收件箱摘要",
    "no_emails": "{folder} 中没有邮件。",
    "no_results": "未找到匹配的邮件：{criteria}",
    "sent_success": "邮件已成功发送至：{to}",
    "rate_limited": "已达到速率限制：每小时最多 {max} 封邮件。",
    "invalid_address": "无效的邮件地址：{address}",
    "missing_password": "未找到邮件密码。环境变量 '{env_var}' 未设置。",
    "attachment_not_found": "未找到附件：{path}",
    "attachment_outside_workspace": "附件路径不允许：{path}",
    "missing_recipient": "未指定收件人。",
    "missing_subject": "未指定主题。",
    "missing_body": "未指定邮件正文。",
    "invalid_date": "无效日期：{date}（期望：YYYY-MM-DD）",
    "no_emails_unread": "{folder} 中没有未读邮件。",
    "send_success_full": "邮件已成功发送至：{to}\n主题：{subject}\n附件：{count}"
  },
  "email_desc": {
    "email_read_inbox": "从收件箱读取邮件。返回发件人、主题、日期和预览。",
    "email_search": "按发件人、主题、内容或日期搜索邮件。",
    "email_send": "通过 SMTP 发送邮件。支持文本和 HTML、抄送/密送以及工作区文件附件。",
    "email_summarize": "收件箱摘要：按发件人和主题分组，统计和热门发件人。"
  },
  "calendar": {
    "today": "今日日程",
    "upcoming": "即将到来的日程",
    "create_event": "创建日程",
    "check_availability": "检查空闲时间",
    "no_events_today": "{date} 没有日程。",
    "no_upcoming": "未来 {days} 天没有日程。",
    "event_created": "日程已创建：{title}",
    "no_free_slots": "未找到空闲时间段。",
    "invalid_date": "无效日期：{date}（期望：YYYY-MM-DD）",
    "invalid_time": "无效时间：{time}（期望：HH:MM）",
    "missing_title": "未指定标题。",
    "missing_start": "未指定开始时间。",
    "no_title": "未提供标题。",
    "no_start_time": "未提供开始时间。",
    "all_day": "全天"
  },
  "calendar_desc": {
    "calendar_today": "显示今日日历事件。可选择指定其他日期。",
    "calendar_upcoming": "显示即将到来的日历事件，按开始时间排序。",
    "calendar_create_event": "创建新的日历事件。写入本地 ICS 文件。",
    "calendar_check_availability": "在工作时间内查找空闲时间段。考虑现有日程。"
  },
  "docker": {
    "not_available": "未找到 Docker CLI。Docker 是否已安装？",
    "timeout": "Docker 命令在 {seconds} 秒后超时",
    "container_not_found": "未找到容器。请使用 docker_ps 检查名称或 ID。",
    "image_not_found": "未找到 Docker 镜像。请检查镜像名称。",
    "name_in_use": "此名称的容器已存在。",
    "permission_denied": "Docker 访问被拒绝。Docker 守护进程是否在运行？",
    "port_allocated": "指定的端口已被占用。",
    "privileged_blocked": "出于安全原因，特权模式被阻止。",
    "invalid_container_name": "无效的容器名称。仅允许使用字母数字字符、连字符、下划线和点。",
    "invalid_port": "无效的端口映射。预期格式：主机端口:容器端口（1-65535）。"
  },
  "api_hub": {
    "no_integrations": "尚未配置任何集成。",
    "integration_configured": "集成配置成功。",
    "integration_removed": "集成已成功移除。",
    "integration_not_found": "未找到集成。",
    "credential_not_set": "环境变量未设置。请在进行 API 调用前设置。",
    "rate_limit_exceeded": "已超过速率限制。请等待后重试。",
    "invalid_method": "无效的 HTTP 方法。",
    "plaintext_warning": "配置以明文存储。安装 cryptography 以启用加密。",
    "health_ok": "健康检查通过。",
    "health_failed": "健康检查失败。"
  },
  "browser": {
    "not_initialized": "浏览器未初始化",
    "invalid_url": "无效的 URL：{url}",
    "scheme_not_allowed": "仅允许 HTTP/HTTPS，不支持 '{scheme}'",
    "no_valid_domain": "无有效域名：{url}",
    "host_blocked": "访问 {hostname} 已被阻止（安全限制）",
    "private_address_blocked": "访问私有地址已被阻止：{hostname}",
    "text_truncated": "\n\n[... 已截断，共 {total} 个字符]",
    "result_truncated": " [已截断]",
    "navigate_failed": "导航失败：{exc_type}",
    "screenshot_saved": "截图已保存：{path}",
    "screenshot_failed": "截图失败：{exc_type}",
    "click_success": "点击 '{selector}' 成功",
    "click_failed": "点击失败：{exc_type}",
    "fill_success": "字段 '{selector}' 已填写",
    "fill_failed": "填写失败：{exc_type}",
    "script_too_long": "脚本过长（{count} 个字符，最多 {max} 个）",
    "js_failed": "JS 错误：{exc_type}",
    "page_title": "标题：{title}",
    "page_url": "URL：{url}",
    "links_header": "链接：",
    "form_elements_header": "\n表单元素：",
    "page_info_failed": "获取页面信息失败：{exc_type}",
    "init_failed_playwright": "错误：浏览器无法初始化（Playwright 已安装？）",
    "error_prefix": "错误：{error}"
  },
  "tools": {
    "db_invalid_path": "无效路径：{path}",
    "db_access_denied": "访问被拒绝：{path} 位于允许目录之外（{roots}）",
    "db_not_found": "数据库未找到：{path}",
    "db_query_timeout": "查询在 {seconds} 秒后超时",
    "db_sql_error": "SQL 错误：{exc}",
    "db_invalid_table": "无效表名：{table}",
    "db_table_not_found": "表未找到：{table}",
    "db_no_tables": "未找到任何表或视图。",
    "db_drop_blocked": "DROP 语句已被阻止。请手动执行。",
    "db_rows_affected": "成功。影响了 {count} 行。",
    "db_conn_success": "数据库连接成功。",
    "db_conn_timeout": "连接在 {seconds} 秒后超时",
    "db_conn_error": "连接错误：{exc}",
    "db_pg_unavailable": "PostgreSQL 不可用。请安装：pip install asyncpg 或 pip install psycopg2-binary",
    "db_execute_success": "成功。{result}",
    "db_no_sql": "错误：未提供 SQL 语句。",
    "db_schema_header": "数据库架构：",
    "db_schema_table_header": "表架构：{table}",
    "search_invalid_path": "无效路径：{path}",
    "search_access_denied": "访问被拒绝：'{path}' 位于工作区之外（{root}）",
    "search_pattern_required": "错误：搜索模式为必填项。",
    "search_dir_not_found": "目录未找到：{root}",
    "search_not_a_dir": "不是目录：{root}",
    "search_error": "搜索错误：{exc}",
    "search_no_files": "未找到匹配模式的文件：'{pattern}'",
    "search_result_limited": "\n\n（结果限制为 {count} 条——可能还有更多匹配项）",
    "search_found_files": "已找到：{count} 个文件（模式：'{pattern}'）",
    "search_query_required": "错误：搜索词为必填项。",
    "search_invalid_regex": "无效的正则表达式模式：{exc}",
    "search_no_matches": "未找到匹配项：'{query}'",
    "search_matches_limited": "\n\n（结果限制为 {count} 个匹配项）",
    "search_matches_header": "搜索 '{query}' -- {count} 个文件有匹配项",
    "search_dry_run_header": "[预演] 预览 -- '{query}' -> '{replacement}'\n受影响文件：{count}\n设置 dry_run=false 以应用更改。\n",
    "search_replace_done_header": "替换完成：'{query}' -> '{replacement}'\n已修改文件：{files}\n总替换次数：{total}\n已创建备份（.bak）\n",
    "atl_no_goals": "没有活跃目标。",
    "atl_title_required": "错误：'title' 为必填项。",
    "atl_goal_created": "目标已创建：{id} -- {title}",
    "atl_goal_not_found": "错误：目标 '{id}' 未找到。",
    "atl_goal_paused": "目标 {id} 已暂停。",
    "atl_goal_resumed": "目标 {id} 已恢复。",
    "atl_goal_completed": "目标 {id} 已完成。",
    "atl_unknown_action": "未知操作：{action}",
    "atl_no_journal_today": "今日没有日志条目。",
    "atl_no_journal_days": "过去 {days} 天没有日志条目。",
    "chart_created": "图表已创建：{path}\n类型：{chart_type}，数据点：{count}，尺寸：{width}x{height}px",
    "table_created": "表格图像已创建：{path}\n行数：{rows}，列数：{cols}"
  },
  "code": {
    "no_code": "未提供代码。",
    "too_large": "代码过大（{size} MB，最大 {max} MB）",
    "working_dir_denied": "访问被拒绝：工作目录 '{cwd}' 位于工作区之外（{root}）",
    "headless_ok": "[无头测试 OK] GUI 应用在虚拟模式下无错误启动。用户可以在图形界面下运行它。",
    "headless_error": "[无头测试错误] 退出码：{exit_code}。GUI 应用在启动时崩溃。需要操作：分析上方错误，使用 write_file 修复代码，然后用 run_python 重新测试。重复直到测试通过。",
    "no_input": "错误：必须提供 'code' 或 'file_path' 之一。",
    "file_access_denied": "访问被拒绝：'{file_path}' 位于工作区之外（{root}）",
    "file_not_found": "错误：文件 '{file_path}' 未找到。",
    "only_python": "错误：仅支持 Python 文件（.py）。",
    "file_read_error": "读取文件时出错：{exc}"
  }
}
