codebee 0.1.49 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/app/ui/i18n.js CHANGED
@@ -182,6 +182,9 @@
182
182
  "点击步骤卡片查看 CLI 日志": "Click a step card to view its CLI log",
183
183
  "任务完成": "Task completed",
184
184
  "任务失败": "Task failed",
185
+ "本轮完成": "Round completed",
186
+ "本轮失败": "Round failed",
187
+ "运行展示": "Run it",
185
188
  "轮对话": "turns",
186
189
  "产出文件": "Output files",
187
190
  "无文件产出": "No output files",
@@ -206,6 +209,15 @@
206
209
  "发送": "Send",
207
210
  "继续说…(Enter 发送,Shift+Enter 换行;可直接粘贴截图)": "Keep typing… (Enter to send, Shift+Enter for a new line; paste screenshots directly)",
208
211
  "成果": "Results",
212
+ "运行预览": "Live preview",
213
+ "运行视图": "Run",
214
+ "实时运行入口页面": "Run the entry page live",
215
+ "预览视图": "Preview views",
216
+ "重新加载预览": "Reload the preview",
217
+ "打开新窗口": "Open in new window",
218
+ "在新窗口打开预览": "Open the preview in a new window",
219
+ "预览工作目录:": "Previewing working directory: ",
220
+ "正在读取文件…": "Reading file…",
209
221
  "版本": "Code",
210
222
  "圣经": "Bible",
211
223
  "详情分区": "Detail sections",
@@ -333,6 +345,8 @@
333
345
  "继续执行": "Resume",
334
346
  "正在执行…": "Working…",
335
347
  "(本轮无文本输出)": "(no text output this turn)",
348
+ "思考过程": "Thinking",
349
+ "字": "chars",
336
350
  "也可直接粘贴截图": "or paste a screenshot directly",
337
351
  "添加附件": "Add attachment",
338
352
  "添加附件:截图/文本/代码/PDF 等,创建任务时落盘到工作目录 _attachments/": "Add attachments — screenshots/text/code/PDF; saved to the task workdir under _attachments/ on creation",
@@ -364,7 +378,7 @@
364
378
  " 个任务目录": " task directories",
365
379
  " 个来源": " sources",
366
380
  " 个步骤": " steps",
367
- " 条": " runs",
381
+ " 条": " item(s)",
368
382
  " / 共 ": " of ",
369
383
  "只看该类": "Show only this category",
370
384
  "该分类下暂无教训": "No lessons in this category yet",
@@ -376,7 +390,7 @@
376
390
  " 次 · ": " runs · ",
377
391
  " 第": " #",
378
392
  " 轮对话上下文)": " turns of context)",
379
- " 字": " chars",
393
+ " 字": " words",
380
394
  " 章": " ch",
381
395
  " 万": "0,000",
382
396
  " 亿": "00,000,000",
@@ -465,8 +479,8 @@
465
479
  "CLI 绑定": "CLI bindings",
466
480
  "模型调度(可选)": "Model routing (optional)",
467
481
  "自动推荐(推荐)": "Automatic recommendation (recommended)",
468
- "确认禁用模型 {0}?链降级将自动跳过它,其余模型不受影响;可在模型调度页重新启用。": "Disable model {0}? Fallback routing will skip it; other models are unaffected. You can re-enable it under Model routing.",
469
- "确认禁用该厂商?禁用后链降级自动跳过它,恢复后可在模型调度页重新启用。": "Disable this provider? Fallback routing will skip it. You can re-enable it under Model routing.",
482
+ "确认禁用模型 {0}?调度链里它的条目会自动移除,其余模型不受影响;可在模型调度页重新启用。": "Disable model {0}? Its entry will be removed from the routing chain automatically; other models are unaffected. You can re-enable it under Model routing.",
483
+ "确认禁用该厂商?调度链里它的条目会自动移除,恢复后可在模型调度页重新启用。": "Disable this provider? Its entries will be removed from the routing chains automatically. You can re-enable it under Model routing.",
470
484
  " 个供应商?\n相关显式模型调度会自动解除,此操作不可撤销。": " providers?\nRelated explicit model routing overrides will be removed. This cannot be undone.",
471
485
  "编排设置": "Orchestrator",
472
486
  "经验库": "Skill library",
@@ -628,7 +642,6 @@
628
642
  "逐项目标核对:": "Beat-by-beat check: ",
629
643
  "第": "Ch.",
630
644
  "章": "",
631
- " 字": " words",
632
645
  " 轮": " rounds",
633
646
  "只重写上一遍未过线的章节,已过线章节沿用成稿与评分": "Rewrites only the chapters that missed the threshold last run; passing chapters keep their drafts and scores.",
634
647
  "再跑一次这个任务;连载任务会断点续跑,已完成章节不重写": "Run this task again; serial novels resume from the breakpoint — finished chapters are kept.",
@@ -759,7 +772,6 @@
759
772
  "工作目录": "Working directory",
760
773
  "类型": "Type",
761
774
  "上下文": "Context",
762
- "编排模式": "Orchestration mode",
763
775
  "任务标题": "Task title",
764
776
  "验证命令": "Verify command",
765
777
  "稿件文件(合并稿)": "Manuscript file (merged)",
@@ -778,6 +790,9 @@
778
790
  "卷": "Vol",
779
791
  "未分卷": "No volumes",
780
792
  "其他文件": "Other files",
793
+ "分卷(卷结构)": "Volumes",
794
+ "长篇建议分卷。两种给法:填「每卷章数」(默认预填 20,清空 = 不分卷),系统按全书章号自动切卷;或者直接写明各卷——在「指定卷结构」框里,也可以在任务目标里写「第一卷 少年初入江湖 第1-20章;卷二 风云再起 21-40章」,会自动识别。给了卷名的会原样沿用,不会被改写。": "Long books should be split into volumes. Two ways: set \"chapters per volume\" (prefilled with 20; blank = no volumes) and boundaries are derived from book-wide chapter numbers, or spell the volumes out — in the \"explicit structure\" field, or straight in the task goal as \"Vol 1 The Young Wanderer ch.1-20; Vol 2 Storm Rising ch.21-40\", which is detected automatically. Volume names you supply are kept verbatim.",
795
+ "分卷会贯穿全程:大纲按卷给卷名与卷弧光(本卷主线冲突与卷末高潮);每章起草和评审都带着「第几卷第几章」,靠近卷末会提醒收拢支线、卷末章必须写出本卷高潮与卷末钩子;成书自动插入「第 X 卷《卷名》」分隔;详情页章节卡与发布页清单按卷分组,发章时一卷一卷地发。卷边界只看全书章号,所以续写批次会自动接上同一卷,不会把一卷劈成两半。": "Volumes apply end to end: the outline names each volume and its arc (the volume's main conflict and its climax); every chapter is drafted and reviewed knowing which volume and position it sits at, so chapters near a volume's end stop opening new threads and the final chapter of a volume must deliver that volume's climax and closing hook; the merged book gets \"Vol N: Title\" separators; and both the chapter review cards and the publish list are grouped by volume, so you can publish one volume at a time. Boundaries depend only on book-wide chapter numbers, so a continuation batch joins the same volume instead of cutting one in half.",
781
796
  "实现者": "Implementer",
782
797
  "评审组": "Reviewers",
783
798
  "管理": "Manage",
@@ -827,7 +842,6 @@
827
842
  "智能": "Smart",
828
843
  "手动": "Manual",
829
844
  "智能(推荐):自动拆解 + 智能路由 + 失败自动修复/换将": "Smart (recommended): auto-decompose + smart routing + auto-fix/swap on failure",
830
- "手动:自行指定实现者与评审组": "Manual: pick implementer and reviewers yourself",
831
845
  "代码引擎": "Code engine",
832
846
  "评审引擎": "Review engine",
833
847
  "直连引擎": "Direct engine",
@@ -909,7 +923,7 @@
909
923
  "默认保存路径已更新:": "Default save path updated: ",
910
924
  "当前生效:": "Currently in effect: ",
911
925
  "(内置默认,尚未自定义)": " (built-in default, not customized)",
912
- "已保存:最大并发 ": "Saved: max concurrent jobs = ",
926
+ "已保存:编排并发上限 ": "Saved: orchestration concurrency limit = ",
913
927
  "总 Tokens": "Total tokens",
914
928
  "调用次数": "Calls",
915
929
  "累计费用": "Total cost",
@@ -1097,7 +1111,6 @@
1097
1111
  "已为 %1 个智能体写入推荐模型,%2 个失败。": "Wrote recommended models to %1 agent(s), %2 failed.",
1098
1112
  "已为 %1 个智能体写入推荐模型(原配置已自动备份 .bak)。": "Wrote recommended models to %1 agent(s) (original configs backed up as .bak).",
1099
1113
  "推荐模型写入失败:": "Failed to write recommended models: ",
1100
- "厂商/模型变动,已自动重绑 %1 处。": "Providers/models changed — %1 binding(s) auto-rebound.",
1101
1114
  "已保存 %1 个 CLI 的绑定。": "Saved bindings for %1 CLI(s).",
1102
1115
  "未安装": "Not installed",
1103
1116
  "有新版本 ": "New version ",
@@ -1173,9 +1186,9 @@
1173
1186
  "先选一个供应商再测试连通": "Pick a provider first",
1174
1187
  "当前配置不生效:请检查供应商密钥、启停状态与模型选择。": "Current config is not active: check the API key, enabled state, and model selection.",
1175
1188
  "最大并发任务数(多任务同时跑、互不打扰)": "Max concurrent tasks (run in parallel, fully isolated)",
1176
- "并发保护上限(默认立即运行)": "Concurrency safety limit (starts immediately by default)",
1189
+ "编排并发上限(本机资源保护)": "Orchestration concurrency limit (local resource guard)",
1177
1190
  "1 · 串行": "1 · serial",
1178
- "任务默认立即运行,不进入等待队列;达到上限时会明确提示稍后重试。同一任务仍单飞,自动续跑的退避等待不占执行位。": "Tasks start immediately by default with no waiting queue. At the safety limit, CodeBee clearly asks you to retry later. Each task remains single-flight, and auto-resume backoff uses no execution slot.",
1191
+ "编排类任务按此上限执行,满载自动转入「排队中」并每 15 秒尝试补跑(最长 10 分钟),不判失败。此上限保护的是本机资源(CLI 子进程数),与各 API 厂商的限流无关——多厂商并行不必为厂商额度调大它;direct 对话走独立轻量通道,不占此额度。自动续跑的退避等待不占执行位。": "Orchestration tasks run up to this limit; when full they queue up (shown as \"Queued\") and auto-retry every 15s for up to 10 minutes instead of failing. This guards local resources (CLI subprocesses), not provider rate limits — no need to raise it for multi-provider parallelism. Direct chats use a separate lightweight lane and don't consume this quota. Auto-resume backoff uses no execution slot.",
1179
1192
  "正在启动": "Starting",
1180
1193
  "默认保存路径(新建任务未指定工作目录时使用;支持 ~)": "Default save path (used when a new task doesn't specify one; ~ supported)",
1181
1194
  "保存时把「旧默认路径下」的现有任务目录迁移到新路径(运行中的跳过;手动指定的目录不受影响)": "When saving, migrate existing task directories under the old default path to the new one (skip running tasks; manually specified paths are untouched)",
@@ -1301,7 +1314,6 @@
1301
1314
  "适用:": "Applies to: ",
1302
1315
  "运行该类型任务时自动注入提示词,无需手动调用": "Auto-injected into prompts when a task of this type runs — no manual invocation",
1303
1316
  "约 ": "about ",
1304
- "字": "chars",
1305
1317
  "已内置": "Built-in",
1306
1318
  "已启用": "Enabled",
1307
1319
  "已停用(不再注入任务提示词)": "Disabled — no longer injected into task prompts",
@@ -1338,12 +1350,8 @@
1338
1350
  "操作状态": "Operations",
1339
1351
  "清除已完成": "Clear completed",
1340
1352
  "创建任务": "Create task",
1341
- "删除任务": "Delete task",
1342
- "归档任务": "Archive task",
1343
1353
  "重试任务": "Retry task",
1344
1354
  "创建续写任务": "Create continuation",
1345
- "重命名任务": "Rename task",
1346
- "取消运行": "Cancel run",
1347
1355
  "删除运行": "Delete run",
1348
1356
  "清理运行记录": "Clear run history",
1349
1357
  "上传附件": "Upload attachment",
@@ -1366,7 +1374,6 @@
1366
1374
  "{0} 项失败": "{0} failed",
1367
1375
  "操作完成": "Operation complete",
1368
1376
  "处理中": "In progress",
1369
- "失败": "Failed",
1370
1377
  "已完成": "Completed",
1371
1378
  "该插件含脚本/钩子/MCP 组件,仅支持纯技能类插件": "Contains scripts/hooks/MCP components — only pure skill plugins are supported",
1372
1379
  " 个供应商(google 等协议)仅登记,不支持注入 CLI,未出现在上面的下拉中。": " provider(s) (google etc.) are registry-only, can't inject into CLIs, and are hidden from the dropdown above.",
@@ -1406,7 +1413,6 @@
1406
1413
  "调用": "Calls",
1407
1414
  "费用": "Cost",
1408
1415
  "轮": " rounds",
1409
- "章": " chapters",
1410
1416
  "万": "K",
1411
1417
  "亿": "B",
1412
1418
  "年": "",
@@ -1541,8 +1547,8 @@
1541
1547
  "做法": "Best practice",
1542
1548
  "已验证有效的做法(程序性记忆)": "Verified working procedure (procedural memory)",
1543
1549
  "已清除 ": "Cleared ",
1544
- "已禁用厂商 {0}:链降级自动跳过,绑定页可重新启用": "Provider {0} disabled: chain fallback skips it — re-enable on the Bindings page",
1545
- "已禁用模型 {0} · {1},链降级自动跳过;绑定页可重新启用": "Model {0} · {1} disabled: chain fallback skips it — re-enable on the Bindings page",
1550
+ "已禁用厂商 {0}:调度链已自动移除它的条目,绑定页可重新启用": "Provider {0} disabled: its entries were removed from the routing chains — re-enable on the Bindings page",
1551
+ "已禁用模型 {0} · {1},调度链已自动移除它;绑定页可重新启用": "Model {0} · {1} disabled: its entry was removed from the routing chain — re-enable on the Bindings page",
1546
1552
  "已静默 {0} 的告警(恢复后自动重新武装)": "Muted {0}'s alert (auto-rearms on recovery)",
1547
1553
  "开始升级": "Start upgrade",
1548
1554
  "当前状态不支持": "Not supported in the current state",
@@ -1608,7 +1614,7 @@
1608
1614
  "评分点覆盖": "Scoring coverage",
1609
1615
  "商务清晰度": "Commercial clarity",
1610
1616
  "扫榜选材": "Rank Scan for Topics",
1611
- "抓取七猫排行榜公开数据 → AI 提炼热门题材/人设/差异化切入点(快档直出报告)": "Grabs public Qimao ranking data → AI distills hot genres / character archetypes / differentiation angles (fast lane, report straight out)",
1617
+ "抓取七猫+番茄排行榜公开数据 → AI 提炼跨平台热门题材/人设/差异化切入点(快档直出报告)": "Grabs public Qimao + Fanqie ranking data → AI distills cross-platform hot genres / character archetypes / differentiation angles (fast lane, report straight out)",
1612
1618
  "想写哪个方向(一句话,可留空默认分析总榜热门题材)": "Which direction to write (one sentence; leave empty to analyze the overall hot genres)",
1613
1619
 
1614
1620
  // —— 插件市场远程来源名(market_remote.py)——
@@ -1632,6 +1638,7 @@
1632
1638
  "要解决什么问题、约束条件(工期/技术栈/预算)、给谁评审": "Problem to solve, constraints (timeline / stack / budget), who reviews it",
1633
1639
  "目标岗位 + 个人经历(可贴旧简历附件),几年经验投什么职级": "Target role + experience (attach the old resume), years of experience and the level you're applying for",
1634
1640
  "实现 → 验证命令 → 跨厂商评审 → 自动修复/换将": "Implement → verify command → cross-provider review → auto-fix / swap agent",
1641
+ "按难度动态编排:简单任务走实现+验证短链,复杂任务增加规划、评审、修复与换将": "Orchestrated by difficulty: simple tasks take a short implement-and-verify path; complex ones add planning, review, fixing and agent swapping",
1635
1642
  "CodeBee 直连模型 API 干活(无 CLI 进程),无可用供应商时回退本机 CLI;无拆解/评审(快)": "CodeBee runs directly to the model API (no CLI process); when no usable provider exists, falls back to the local CLI; no decomposition/review (fast)",
1636
1643
  "起草 → 多维评审 → 修订循环 → 发布门禁": "Draft → multi-dim review → revision loop → publish gate",
1637
1644
  "大纲 → 逐章起草 → 每章多维评审修订 → 全局一致性评审 → 合并(可断点续跑)": "Outline → chapter-by-chapter drafting → per-chapter multi-dim review & revision → global consistency review → merge (resumable)",
@@ -1983,7 +1990,6 @@
1983
1990
  "正在安装 wechatauto-replica…(约 1-3 分钟)": "Installing wechatauto-replica… (1-3 minutes)",
1984
1991
  "安装完成,依赖已就绪": "Installed — dependency ready",
1985
1992
  "安装失败,详见状态行": "Install failed — see status line",
1986
- "扫描失败:": "Scan failed: ",
1987
1993
  "安装失败:": "Install failed: ",
1988
1994
  "谁占着端口、属于哪个项目一目了然;「仅本机」的端口外网不可达。关闭只发温和信号,系统进程与本服务自身拒绝关闭。": "See at a glance which process holds each port and which project it belongs to; \"local only\" ports are unreachable from outside. Close sends a gentle termination signal only — system processes and this service itself are refused.",
1989
1995
  "端口": "Port",
@@ -1991,9 +1997,7 @@
1991
1997
  "项目": "Project",
1992
1998
  "仅本机": "local only",
1993
1999
  "本服务": "this service",
1994
- "关闭": "Close",
1995
2000
  "没有发现监听端口": "No listening ports found",
1996
- "扫描失败:": "Scan failed: ",
1997
2001
  "结束占用端口 %1 的进程?先温和关闭,无效会自动强制结束(系统进程会被拒绝)": "Kill the process holding port %1? Gentle close first, forced kill if ignored (system processes are refused)",
1998
2002
  "已关闭": "Closed",
1999
2003
  "未能关闭": "Could not close",
@@ -2023,10 +2027,13 @@
2023
2027
  "自动 resolve Bug": "Auto-resolve bugs",
2024
2028
  "自动合并代码": "Auto-merge code",
2025
2029
  "定时扫描": "Scheduled scan",
2026
- "扫描间隔(小时)": "Scan interval (hours)",
2030
+ "扫描间隔": "Scan interval",
2031
+ "分钟": "min",
2032
+ "定时扫描的间隔,最小 5 分钟": "Interval between scheduled scans; 5 minutes minimum",
2027
2033
  "已保存(不改就留空)": "Saved (leave blank to keep)",
2028
2034
  "定时扫描已开启,每 ": "Scheduled scan on, every ",
2029
2035
  " 小时一次": " h",
2036
+ " 分钟一次": " min",
2030
2037
  ",下次 ": ", next ",
2031
2038
  "定时扫描未开启(仍可手动「立即扫描」)": "Scheduled scan off (manual \"Scan Now\" still works)",
2032
2039
  "上次扫描 ": "Last scan ",
@@ -2080,7 +2087,6 @@
2080
2087
  "禅道账号,转派/升级用": "ZenTao account for transfer/escalation",
2081
2088
  "空 = 指回报告人": "blank = back to reporter",
2082
2089
  "模块路由(模块 → 端/人,排查优先级最高)": "Module routes (module → side/owner, top triage priority)",
2083
- "拉取模块清单": "Fetch modules",
2084
2090
  "+ 加路由": "+ Add route",
2085
2091
  "模块 ID": "Module ID",
2086
2092
  "转给谁(禅道账号,可空)": "Transfer to (ZenTao account, optional)",
@@ -2112,7 +2118,6 @@
2112
2118
  "— 选产品 —": "— Pick a product —",
2113
2119
  "(已关闭)": " (closed)",
2114
2120
  "已拉到 ": "Fetched ",
2115
- "、": ", ",
2116
2121
  " 个产品": " products",
2117
2122
  " 个账号": " accounts",
2118
2123
  ",产品/负责人已是下拉选择": " — products/owners are now dropdowns",
@@ -2257,7 +2262,7 @@
2257
2262
  "「冷却中」是什么意思?": "What does \"Cooling down\" mean?",
2258
2263
  "一把 Key 连续失败会被暂停 30 分钟,防止反复撞墙烧钱,到期自动恢复;也可以在密钥旁手动重置。": "A key that keeps failing is paused for 30 minutes so it stops burning money against a wall; it recovers automatically when time is up, or reset it manually next to the key.",
2259
2264
  "任务一直显示「排队」?": "Task stuck on \"Queued\"?",
2260
- "新任务默认立即运行,不会排队;达到并发保护上限时本次会直接失败并提示稍后重试。只有自动续跑退避会显示预定时间;历史版本遗留的排队记录会由恢复机制立即接管或收口。": "New tasks start immediately and never wait in a queue. At the concurrency safety limit, the attempt fails clearly and asks you to retry later. Only auto-resume backoff shows a scheduled time; legacy queued records are immediately resumed or closed by recovery.",
2265
+ "编排任务满载(达到并发上限)时自动转入「排队中」,每 15 秒尝试补跑,最长等 10 分钟,超时才判失败;排队不占额外资源,取消随时可停。direct 对话走独立轻量通道,不占编排并发额度。自动续跑的退避等待会显示预定恢复时间;服务重启遗留的排队记录由恢复机制立即接管或收口。": "When orchestration tasks hit the concurrency limit they automatically turn to \"Queued\" and retry every 15 seconds for up to 10 minutes before failing; queuing uses no extra resources and cancel works anytime. Direct chats use a separate lightweight lane and don't consume the orchestration quota. Auto-resume backoff shows its scheduled recovery time; queued records left behind by a restart are immediately resumed or closed by recovery.",
2261
2266
  "状态里写着「将于 HH:MM 自动续跑」?": "Status says \"Auto-resumes at HH:MM\"?",
2262
2267
  "这一步失败了,正在退避等待自动重试,到点会接着跑,不需要手动干预;等不及也可以在详情页手动重试。": "That step failed and is backing off before an automatic retry — it continues on its own at the shown time, no manual action needed; if you can't wait, retry manually from the detail page.",
2263
2268
  "生成的文件在哪?": "Where are the generated files?",
@@ -2308,27 +2313,23 @@
2308
2313
  "下次:": "Next: ",
2309
2314
  "未配置可用模型,请先到「绑定」页设置": "No usable model configured — set one up on the Bindings page first",
2310
2315
  "还没有摘要": "No digests yet",
2311
- " 条": " msg(s)",
2312
2316
  "群摘要设置已保存": "Digest settings saved",
2313
- "保存失败:": "Save failed: ",
2314
2317
  "扫描完成,生成": "Scan finished — ",
2315
2318
  " 条新摘要": " new digest(s)",
2316
2319
  "扫描完成,暂无新内容": "Scan finished — nothing new",
2317
2320
  "扫描有问题:": "Scan issue: ",
2318
- "扫描失败:": "Scan failed: ",
2319
2321
 
2320
2322
  // —— 群摘要·微信直连(wx_reader sidecar)——
2321
2323
  "从本机微信自动拉取(微信直连)": "Pull automatically from local WeChat (direct connection)",
2322
2324
  "64 位 Python 路径(需装 wechatauto-replica)": "64-bit Python path (with wechatauto-replica installed)",
2323
2325
  "例如 C:\\Users\\HP\\anaconda3\\envs\\wxprobe\\python.exe": "e.g. C:\\Users\\HP\\anaconda3\\envs\\wxprobe\\python.exe",
2324
2326
  "选择要监听的群({0})": "Pick groups to watch ({0})",
2325
- "刷新群列表": "Refresh group list",
2327
+ "选择要监听的群(0)": "Pick groups to watch (0)",
2326
2328
  "搜索群名": "Search group name",
2327
2329
  "群列表为空,点「刷新群列表」": "Group list is empty — click \"Refresh group list\"",
2328
2330
  "没有匹配的群": "No matching groups",
2329
2331
  "刷新中…": "Refreshing…",
2330
2332
  "群列表已更新:": "Group list updated: ",
2331
- "刷新失败:": "Refresh failed: ",
2332
2333
  "转知识库": "To Knowledge Base",
2333
2334
  "已转入": "Saved",
2334
2335
  "已转入知识库(草稿态,转正后才会注入任务提示词)": "Saved to the knowledge base (draft — it won't feed task prompts until approved)",
@@ -2359,10 +2360,12 @@
2359
2360
  "合并导入:保留本机现有数据,备份包里的同名条目覆盖进来。替换导入:先清空本机数据目录再整体落入(宠物锁与历史导入备份除外)——只在想把新机器变成备份包原样时使用。": "Merge: keep local data, overlay same-name items from the backup. Replace: wipe the local data directory first, then restore the backup as-is (pet lock and past import backups excepted) — only use this to make this machine exactly match the backup.",
2360
2361
  "路径重映射(换电脑/换路径时把旧路径改写为新路径,推荐开启)": "Path remap (rewrite old paths to the new machine/path — recommended)",
2361
2362
  "确认导入": "Import now",
2362
- "重启服务生效": "Restart to apply",
2363
2363
  "每日清理": "Daily cleanup",
2364
2364
  "每天自动清理运行过程日志、发布截图、配置备份残留等可再生数据(保留运行记录与结果报告),防止磁盘越积越满。手稿、任务记录、经验库等用户数据永不清理。": "Once a day, automatically clear regenerable clutter — run process logs, publishing screenshots, leftover config backups — while keeping run records and result reports, so the disk doesn't fill up. Manuscripts, task records, the experience base and other user data are never touched.",
2365
2365
  "启用每日自动清理": "Enable daily automatic cleanup",
2366
+ "打开/运行前直写 claude 配置": "Write claude config on open/run",
2367
+ "把绑定供应商写进 ~/.claude/settings.json(一键打开与每次运行前)": "Write the bound provider into ~/.claude/settings.json (One-click Open and before every run)",
2368
+ "开启后 CodeBee 会覆盖 cc-switch 等工具对交互 claude 的手选配置。关闭后交互 claude 配置归你手动管理;编排步骤改用一次性注入,模型路由不受影响。": "When on, CodeBee overwrites the interactive-claude provider picked via cc-switch and similar tools. When off, your interactive claude config stays hand-managed; orchestration steps switch to per-run one-shot injection, so model routing is unaffected.",
2366
2369
  "保留天数": "Retention (days)",
2367
2370
  "立即清理": "Clean up now",
2368
2371
  "清理发布浏览器缓存(需重新扫码登录)": "Clear publishing browser cache (requires QR re-login)",
@@ -2457,6 +2460,61 @@
2457
2460
  "项目资料与沉淀": "Project docs and notes",
2458
2461
  "装技能扩展能力": "Install skills to extend",
2459
2462
  "定时与周期执行": "Scheduled and recurring runs",
2463
+
2464
+ // —— 侧栏常驻:用量条 + 计数徽章 ——
2465
+ "本月用量": "This month",
2466
+ "本月用量与费用(点击看完整统计)": "Usage and cost this month (click for full stats)",
2467
+ "本月还没有调用": "No runs this month yet",
2468
+ " tokens · ": " tokens · ",
2469
+ "正在运行或排队 ": "Running or queued: ",
2470
+
2471
+ // —— 2026-09-22 i18n 补漏:字典缺翻译 + 直连对话活动标签 + 标点 ——
2472
+ " tokens": " tokens",
2473
+ "tokens": "tokens",
2474
+ " · ": " · ",
2475
+ "{0} · {1} · {2}": "{0} · {1} · {2}",
2476
+ " · 失败 ": " · failed ",
2477
+ "wechatauto-replica 安装完成": "wechatauto-replica installed",
2478
+ "上期 ": "Prev period ",
2479
+ "任务开始": "Task starts",
2480
+ "例:20": "e.g. 20",
2481
+ "保存全部钩子": "Save all hooks",
2482
+ "保存钩子": "Save hook",
2483
+ "内置": "Built-in",
2484
+ "刷新分支列表": "Refresh branch list",
2485
+ "加一条钩子": "Add a hook",
2486
+ "命令:python D:\\proj\\hook.py(stdin 收 JSON,stdout 回 {\"inject\":\"文本\"})": "Command: python D:\\proj\\hook.py (reads JSON event from stdin, writes {\"inject\": \"text\"} to stdout)",
2487
+ "在任务生命周期的关键点执行本机命令:命令从标准输入收到 JSON(事件与任务上下文),标准输出回 {\"inject\": \"文本\"} 即把文本注入提示词(run_end 的输出被忽略,适合回写知识库)。命令按空格分词执行,不支持管道;失败或超时自动跳过,绝不挡主流程。": "Run a local command at key points in the task lifecycle: it receives JSON on stdin (event and task context); anything it prints to stdout as {\"inject\": \"text\"} is injected into the prompt (run_end output is ignored — handy for writing back to the knowledge base). The command is split on spaces, no pipes; failures and timeouts are skipped and never block the main flow.",
2488
+ "导出 txt 丢进监控文件夹,或开启微信直连由蜜蜂自动拉取;按间隔增量生成每群摘要。记录只存本地;摘要请求会发给当前绑定的模型,桌面小蜜蜂会提醒新摘要。": "Export a txt into the watch folder, or enable the WeChat direct connection and let the bee pull it automatically; each group's digest is generated incrementally at every interval. Records stay local; digest requests go to the currently bound model, and the desktop bee notifies you when a new digest is ready.",
2489
+ "推荐": "Recommended",
2490
+ "摘要列表": "Digest list",
2491
+ "操作失败": "Operation failed",
2492
+ "新建任务": "New task",
2493
+ "新建钩子": "New hook",
2494
+ "正在删除任务…": "Deleting task…",
2495
+ "测试成功后自动保存连接并拉取产品列表": "On a successful test, saves the connection and fetches the product list",
2496
+ "消息送达": "Message delivered",
2497
+ "澄清响应较慢,已直接创建任务…": "Clarify is slow — task created directly…",
2498
+ "管理模型…": "Manage models…",
2499
+ "自动:按任务类型与风险动态决定步骤": "Auto: adapt steps to task type and risk",
2500
+ "设置 → 用量统计:每次调用的模型、token 与费用按多个维度聚合展示,历史运行会在启动时自动回填——每个任务花了多少,一目了然。": "Settings → Usage: every call's model, tokens and cost are aggregated across dimensions, and past runs are backfilled at startup — you can see what each task cost at a glance.",
2501
+ "超时(秒)": "Timeout (s)",
2502
+ "运行中…": "Running…",
2503
+ "运行结束": "Run finished",
2504
+ "还没有钩子——点「新建钩子」在任务开始 / 消息送达 / 运行结束时挂你自己的脚本。": "No hooks yet — click \"New hook\" to run your own script on task start / message delivered / run end.",
2505
+ "连接成功,已保存;正在拉取产品清单…": "Connected and saved; fetching products…",
2506
+ "钩子": "Hooks",
2507
+ "钩子名称": "Hook name",
2508
+ "钩子已保存": "Hook saved",
2509
+ "请求工具": "Requesting tools",
2510
+ ",": ", ",
2511
+ "。": ". ",
2512
+ "《": "“",
2513
+ "》": "”",
2514
+ "【": "[",
2515
+ "】": "]",
2516
+ "(已发 ": " (sent ",
2517
+ "未命名": "Untitled",
2460
2518
  };
2461
2519
 
2462
2520
  // ---------- 工具 ----------
@@ -2543,6 +2601,11 @@
2543
2601
  if (typeof window.cmpDirectBtnSync === "function") {
2544
2602
  window.cmpDirectBtnSync(); // 「自动推荐/推荐」等词也要换语言
2545
2603
  }
2604
+ // 顶栏标题不走 data-i18n(页名随当前页变,静态属性给不了),换语言后在这里补画;
2605
+ // 组名读的是左栏导航文本,此时已被上面的重译扫过,拿到的是新语言的组名
2606
+ if (typeof window.renderPageCrumb === "function") {
2607
+ window.renderPageCrumb();
2608
+ }
2546
2609
  }
2547
2610
 
2548
2611
  // 暴露
package/app/ui/index.html CHANGED
@@ -125,6 +125,7 @@
125
125
  <button class="qitem" id="btn-q-runs" data-page="runs" title="运行记录" data-i18n-title="运行记录">
126
126
  <svg class="ico" aria-hidden="true"><use href="#i-history"></use></svg>
127
127
  <span data-i18n="运行记录">运行记录</span>
128
+ <span class="nav-badge hidden" id="nav-badge-runs"></span>
128
129
  </button>
129
130
  <button class="qitem" id="btn-q-automation" data-page="automation" title="自动化" data-i18n-title="自动化">
130
131
  <svg class="ico" aria-hidden="true"><use href="#i-calendar-days"></use></svg>
@@ -149,6 +150,20 @@
149
150
  </div>
150
151
  <div id="side-tasks" class="side-tasks"></div>
151
152
  </div>
153
+ <!-- 底部用量条:陈列真实台账数字(本月调用/花费 + 近 14 天走势)。
154
+ 刻意不做「用量 68%」那种百分比进度条——CodeBee 没有套餐配额,
155
+ 硬编一个分母就是假数;这里给的都是能直接核对的真值。 -->
156
+ <button id="side-usage" class="side-usage" type="button" onclick="switchTab('usage')"
157
+ title="本月用量与费用(点击看完整统计)" data-i18n-title="本月用量与费用(点击看完整统计)">
158
+ <span class="su-top">
159
+ <span class="su-label" data-i18n="本月用量">本月用量</span>
160
+ <span class="su-cost" id="su-cost">—</span>
161
+ </span>
162
+ <span class="su-mid">
163
+ <span class="su-tok" id="su-tok">—</span>
164
+ <span class="su-spark" id="su-spark"></span>
165
+ </span>
166
+ </button>
152
167
  <div class="side-foot">
153
168
  <button id="btn-settings" class="foot-btn" title="设置" aria-label="设置" data-i18n-aria="设置" data-i18n-title="设置">
154
169
  <svg class="ico ico-lg" aria-hidden="true"><use href="#i-gear"></use></svg>
@@ -218,7 +233,12 @@
218
233
  <svg class="ico" aria-hidden="true"><use href="#i-refresh"></use></svg><span id="upd-pill-txt"></span>
219
234
  <span class="upd-x" role="button" onclick="event.stopPropagation();updDismiss()" title="忽略此版本" aria-label="忽略此版本" data-i18n-title="忽略此版本" data-i18n-aria="忽略此版本"><svg class="ico" aria-hidden="true"><use href="#i-x"></use></svg></span>
220
235
  </button>
221
- <div data-i18n="任务" id="page-title" class="page-title">任务</div>
236
+ <div class="page-title-wrap">
237
+ <!-- 面包屑父级(设置子页显示「组名」,主栏页隐藏);page-title 本体
238
+ 保持纯页名——多处测试断言它的 textContent 精确等于页名,不能并入 -->
239
+ <span id="crumb-root" class="crumb-root hidden" aria-hidden="true"></span>
240
+ <div data-i18n="任务" id="page-title" class="page-title">任务</div>
241
+ </div>
222
242
  <div id="health-banner" class="health-banner hidden" onclick="healthBannerClick()" title="供应商健康告警" aria-label="供应商健康告警" data-i18n-title="供应商健康告警" data-i18n-aria="供应商健康告警"></div>
223
243
  <div class="top-actions">
224
244
  <button id="ctrl-pill" class="pill ctrl icon-only hidden" onclick="ctrlClick()" title="多端控制权" aria-label="多端控制权" data-i18n-aria="多端控制权" data-i18n-title="多端控制权"><svg class="ico" aria-hidden="true"><use href="#i-unlock"></use></svg></button>
@@ -359,7 +379,7 @@
359
379
  <option data-i18n="专家:完整规划、多评审、失败修复与换将" value="expert">专家:完整规划、多评审、失败修复与换将</option>
360
380
  <option data-i18n="手动:自行指定实现者与评审组" value="manual">手动:自行指定实现者与评审组</option>
361
381
  </select>
362
- <span class="cmp-sel-face" id="f-mode-face">自动</span>
382
+ <span class="cmp-sel-face" id="f-mode-face" data-i18n="自动">自动</span>
363
383
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
364
384
  </span>
365
385
  <span class="cmp-sel" data-i18n-title="思考程度" title="思考程度">
@@ -369,13 +389,13 @@
369
389
  <option data-i18n="快速:少推理、优先响应" value="low">快速:少推理、优先响应</option>
370
390
  <option data-i18n="深度:更多推理与检查" value="high">深度:更多推理与检查</option>
371
391
  </select>
372
- <span class="cmp-sel-face" id="f-thinking-face">标准</span>
392
+ <span class="cmp-sel-face" id="f-thinking-face" data-i18n="标准">标准</span>
373
393
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
374
394
  </span>
375
395
  <!-- 厂商/模型 pill(仅「直接执行」类型显示):点开厂商→模型两级
376
396
  钻取菜单,选定写回隐藏 select 真源 -->
377
397
  <span class="cmp-sel hidden" id="f-direct-wrap" data-i18n-title="对话模型(可选)" title="对话模型(可选)">
378
- <button type="button" class="cmp-sel-face cmp-sel-btn" id="f-direct-btn" onclick="toggleModelMenu()" aria-haspopup="menu" aria-controls="cmp-model-menu">自动推荐</button>
398
+ <button type="button" class="cmp-sel-face cmp-sel-btn" id="f-direct-btn" onclick="toggleModelMenu()" aria-haspopup="menu" aria-controls="cmp-model-menu" data-i18n="自动推荐">自动推荐</button>
379
399
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
380
400
  <div id="cmp-model-menu" class="type-menu hidden" role="menu" aria-label="对话模型" data-i18n-aria="对话模型"></div>
381
401
  </span>
@@ -511,6 +531,7 @@
511
531
  <button id="rd-tab-hive" class="rd-tab" role="tab" aria-controls="rd-pane-hive" aria-selected="false" tabindex="-1" data-tab="hive" data-i18n="蜂巢"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-bee"></use></svg>蜂巢<span class="rd-badge hidden"></span></button>
512
532
  <button id="rd-tab-steps" class="rd-tab" role="tab" aria-controls="rd-pane-steps" aria-selected="false" tabindex="-1" data-tab="steps" data-i18n="步骤"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-tasks"></use></svg>步骤<span class="rd-badge hidden"></span></button>
513
533
  <button id="rd-tab-result" class="rd-tab" role="tab" aria-controls="rd-pane-result" aria-selected="false" tabindex="-1" data-tab="result" data-i18n="成果"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-file-text"></use></svg>成果<span class="rd-badge hidden"></span></button>
534
+ <button id="rd-tab-preview" class="rd-tab" role="tab" aria-controls="rd-pane-preview" aria-selected="false" tabindex="-1" data-tab="preview" data-i18n="预览"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-clapper"></use></svg>预览<span class="rd-badge hidden"></span></button>
514
535
  <button id="rd-tab-git" class="rd-tab" role="tab" aria-controls="rd-pane-git" aria-selected="false" tabindex="-1" data-tab="git" data-i18n="Git"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-git-branch"></use></svg>Git<span class="rd-badge hidden"></span></button>
515
536
  <button id="rd-tab-bible" class="rd-tab" role="tab" aria-controls="rd-pane-bible" aria-selected="false" tabindex="-1" data-tab="bible" data-i18n="圣经"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-book"></use></svg>圣经<span class="rd-badge hidden"></span></button>
516
537
  <button id="rd-tab-bookmeta" class="rd-tab" role="tab" aria-controls="rd-pane-bookmeta" aria-selected="false" tabindex="-1" data-tab="bookmeta" data-i18n="作品信息"><svg class="ico tab-ico" aria-hidden="true"><use href="#i-idcard"></use></svg>作品信息<span class="rd-badge hidden"></span></button>
@@ -557,7 +578,7 @@
557
578
  <option data-i18n="专家:完整规划、多评审、失败修复与换将" value="expert">专家:完整规划、多评审、失败修复与换将</option>
558
579
  <option data-i18n="手动:自行指定实现者与评审组" value="manual">手动:自行指定实现者与评审组</option>
559
580
  </select>
560
- <span class="cmp-sel-face" id="rd-mode-face">自动</span>
581
+ <span class="cmp-sel-face" id="rd-mode-face" data-i18n="自动">自动</span>
561
582
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
562
583
  </span>
563
584
  <span class="cmp-sel" data-i18n-title="思考程度" title="思考程度">
@@ -567,11 +588,11 @@
567
588
  <option data-i18n="快速:少推理、优先响应" value="low">快速:少推理、优先响应</option>
568
589
  <option data-i18n="深度:更多推理与检查" value="high">深度:更多推理与检查</option>
569
590
  </select>
570
- <span class="cmp-sel-face" id="rd-thinking-face">标准</span>
591
+ <span class="cmp-sel-face" id="rd-thinking-face" data-i18n="标准">标准</span>
571
592
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
572
593
  </span>
573
594
  <span class="cmp-sel" id="rd-model-wrap" data-i18n-title="对话模型" title="对话模型">
574
- <button type="button" class="cmp-sel-face cmp-sel-btn" id="rd-model-btn" onclick="toggleRdModelMenu()" aria-haspopup="menu" aria-controls="rd-model-menu">自动推荐</button>
595
+ <button type="button" class="cmp-sel-face cmp-sel-btn" id="rd-model-btn" onclick="toggleRdModelMenu()" aria-haspopup="menu" aria-controls="rd-model-menu" data-i18n="自动推荐">自动推荐</button>
575
596
  <svg class="ico chev" aria-hidden="true"><use href="#i-chevron-r"></use></svg>
576
597
  <div id="rd-model-menu" class="type-menu hidden" role="menu" aria-label="对话模型" data-i18n-aria="对话模型"></div>
577
598
  </span>
@@ -615,6 +636,24 @@
615
636
  <div id="rd-report" class="report"></div>
616
637
  <div id="rd-arts" class="rd-arts hidden"></div>
617
638
  </div>
639
+ <!-- 网页成品预览:左「运行」实时 iframe + 右各代码文件(借鉴对话式编程
640
+ 产品的预览窗)。入口 HTML 由后端从工作目录成品里挑,页签条在此渲染。 -->
641
+ <div id="rd-pane-preview" class="rd-pane" role="tabpanel" aria-labelledby="rd-tab-preview" data-pane="preview">
642
+ <div id="rd-preview" class="rd-preview hidden">
643
+ <div class="pv-head">
644
+ <div id="rd-pv-tabs" class="pv-tabs" role="tablist" data-i18n-aria="预览视图"></div>
645
+ <span class="pv-spacer"></span>
646
+ <button id="rd-pv-reload" class="ghost small" data-i18n-title="重新加载预览" title="重新加载预览">
647
+ <svg class="ico" aria-hidden="true"><use href="#i-refresh"></use></svg><span data-i18n="刷新">刷新</span>
648
+ </button>
649
+ <a id="rd-pv-open" class="ghost small" target="_blank" rel="noopener" data-i18n-title="在新窗口打开预览" title="在新窗口打开预览">
650
+ <svg class="ico" aria-hidden="true"><use href="#i-globe"></use></svg><span data-i18n="打开新窗口">打开新窗口</span>
651
+ </a>
652
+ </div>
653
+ <div id="rd-pv-body" class="pv-body"></div>
654
+ <div id="rd-pv-hint" class="pv-hint hidden"></div>
655
+ </div>
656
+ </div>
618
657
  <div id="rd-pane-git" class="rd-pane" role="tabpanel" aria-labelledby="rd-tab-git" data-pane="git">
619
658
  <div id="rd-git" class="rd-git hidden"></div>
620
659
  </div>
@@ -694,7 +733,7 @@
694
733
  <label class="toggle" title="修复任务评审通过后,自动到禅道 resolve(fixed)并回评论" data-i18n-title="修复任务评审通过后,自动到禅道 resolve(fixed)并回评论"><input id="zt-autoresolve" type="checkbox"><span data-i18n="自动 resolve Bug">自动 resolve Bug</span></label>
695
734
  <label class="toggle" title="把任务分支自动合并回基线分支(需配置基线分支;合并失败不 resolve 不转派,留人工)" data-i18n-title="把任务分支自动合并回基线分支(需配置基线分支;合并失败不 resolve 不转派,留人工)"><input id="zt-automerge" type="checkbox"><span data-i18n="自动合并代码">自动合并代码</span></label>
696
735
  <label class="toggle" title="按下面的间隔定时扫描;关掉后仍可手动「立即扫描」" data-i18n-title="按下面的间隔定时扫描;关掉后仍可手动「立即扫描」"><input id="zt-poll" type="checkbox"><span data-i18n="定时扫描">定时扫描</span></label>
697
- <label class="zt-interval-field"><span data-i18n="扫描间隔(小时)">扫描间隔(小时)</span><input id="zt-interval" type="number" min="1" max="168" step="1"></label>
736
+ <label class="zt-interval-field" for="zt-interval" title="定时扫描的间隔,最小 5 分钟" data-i18n-title="定时扫描的间隔,最小 5 分钟"><span class="zt-iv-label" data-i18n="扫描间隔">扫描间隔</span><span class="zt-iv-box"><input id="zt-interval" type="number" min="5" max="10080" step="5"><span class="zt-iv-unit" data-i18n="分钟">分钟</span></span></label>
698
737
  </div>
699
738
  <div class="ops"><button id="btn-zentao-save" class="primary small"><span data-i18n="保存配置">保存配置</span></button></div>
700
739
  <h3 data-i18n="产品档案" class="sec-title">产品档案</h3>
@@ -888,12 +927,12 @@
888
927
  <p data-i18n="「编排者」是 CodeBee 自己的智能体:直连 API 供应商的模型(不占 CLI 会话),统一负责任务规划拆解、难度判定与写作大纲。未启用或调用失败时自动回落为「最强可用 CLI 智能体」规划,流程永不阻塞。" class="hint">「编排者」是 CodeBee 自己的智能体:直连 API 供应商的模型(不占 CLI 会话),统一负责任务规划拆解、难度判定与写作大纲。未启用或调用失败时自动回落为「最强可用 CLI 智能体」规划,流程永不阻塞。</p>
889
928
  <div id="orch-config"></div>
890
929
  <h3 data-i18n="运行设置" class="sec-title">运行设置</h3>
891
- <div class="field"><label data-i18n="并发保护上限(默认立即运行)">并发保护上限(默认立即运行)</label>
930
+ <div class="field"><label data-i18n="编排并发上限(本机资源保护)">编排并发上限(本机资源保护)</label>
892
931
  <div class="input-row">
893
- <input id="set-workers" type="number" min="1" max="12" value="12">
932
+ <input id="set-workers" type="number" min="1" max="24" value="12">
894
933
  <button data-i18n="保存" class="ghost small" onclick="saveSettings()">保存</button>
895
934
  </div>
896
- <p data-i18n="任务默认立即运行,不进入等待队列;达到上限时会明确提示稍后重试。同一任务仍单飞,自动续跑的退避等待不占执行位。" class="hint">任务默认立即运行,不进入等待队列;达到上限时会明确提示稍后重试。同一任务仍单飞,自动续跑的退避等待不占执行位。</p>
935
+ <p data-i18n="编排类任务按此上限执行,满载自动转入「排队中」并每 15 秒尝试补跑(最长 10 分钟),不判失败。此上限保护的是本机资源(CLI 子进程数),与各 API 厂商的限流无关——多厂商并行不必为厂商额度调大它;direct 对话走独立轻量通道,不占此额度。自动续跑的退避等待不占执行位。" class="hint">编排类任务按此上限执行,满载自动转入「排队中」并每 15 秒尝试补跑(最长 10 分钟),不判失败。此上限保护的是本机资源(CLI 子进程数),与各 API 厂商的限流无关——多厂商并行不必为厂商额度调大它;direct 对话走独立轻量通道,不占此额度。自动续跑的退避等待不占执行位。</p>
897
936
  </div>
898
937
  <div class="field"><label data-i18n="默认保存路径(新建任务未指定工作目录时使用;支持 ~)">默认保存路径(新建任务未指定工作目录时使用;支持 ~)</label>
899
938
  <div class="input-row">
@@ -904,6 +943,10 @@
904
943
  <label class="toggle" style="margin-top:6px"><input id="set-workdir-migrate" type="checkbox"> <span data-i18n="保存时把「旧默认路径下」的现有任务目录迁移到新路径(运行中的跳过;手动指定的目录不受影响)">保存时把「旧默认路径下」的现有任务目录迁移到新路径(运行中的跳过;手动指定的目录不受影响)</span></label>
905
944
  <p class="hint" id="set-workdir-hint"></p>
906
945
  </div>
946
+ <div class="field"><label data-i18n="打开/运行前直写 claude 配置">打开/运行前直写 claude 配置</label>
947
+ <label class="toggle" style="margin-top:6px"><input id="set-claude-sync" type="checkbox"> <span data-i18n="把绑定供应商写进 ~/.claude/settings.json(一键打开与每次运行前)">把绑定供应商写进 ~/.claude/settings.json(一键打开与每次运行前)</span></label>
948
+ <p data-i18n="开启后 CodeBee 会覆盖 cc-switch 等工具对交互 claude 的手选配置。关闭后交互 claude 配置归你手动管理;编排步骤改用一次性注入,模型路由不受影响。" class="hint">开启后 CodeBee 会覆盖 cc-switch 等工具对交互 claude 的手选配置。关闭后交互 claude 配置归你手动管理;编排步骤改用一次性注入,模型路由不受影响。</p>
949
+ </div>
907
950
  <div id="set-v2-card" class="field"></div>
908
951
  <div id="settings-msg" class="msg"></div>
909
952
  </div>
@@ -1266,7 +1309,7 @@
1266
1309
  <div class="welcome-card" role="dialog" aria-modal="true" aria-labelledby="welcome-title">
1267
1310
  <button class="welcome-x icon-btn" title="关闭" aria-label="关闭" data-i18n-title="关闭" data-i18n-aria="关闭" onclick="welcomeClose()">✕</button>
1268
1311
  <div class="help-rail">
1269
- <span class="welcome-badge" id="welcome-badge">首次启动</span>
1312
+ <span class="welcome-badge" id="welcome-badge" data-i18n="首次启动">首次启动</span>
1270
1313
  <div class="welcome-brand">
1271
1314
  <svg class="ico welcome-bee" aria-hidden="true"><use href="#i-bee"></use></svg>
1272
1315
  <span class="brand-name">CodeBee</span>