codebee 0.1.49 → 0.1.50
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/CHANGELOG.md +24 -0
- package/README.md +4 -150
- package/app/core/aiflavor.py +14 -0
- package/app/core/builtin_agent.py +450 -32
- package/app/core/knowledge.py +432 -405
- package/app/core/manager.py +76 -3
- package/app/core/modelhub.py +53 -5
- package/app/core/pipeline.py +158 -66
- package/app/core/preview.py +293 -0
- package/app/core/runner.py +336 -144
- package/app/core/settings.py +7 -1
- package/app/core/store.py +74 -2
- package/app/core/zentao.py +63 -13
- package/app/main.py +66 -1
- package/app/ui/app.js +397 -102
- package/app/ui/i18n.js +41 -30
- package/app/ui/index.html +45 -2
- package/app/ui/style.css +206 -26
- package/package.json +1 -1
package/app/ui/i18n.js
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"发送": "Send",
|
|
207
207
|
"继续说…(Enter 发送,Shift+Enter 换行;可直接粘贴截图)": "Keep typing… (Enter to send, Shift+Enter for a new line; paste screenshots directly)",
|
|
208
208
|
"成果": "Results",
|
|
209
|
+
"运行预览": "Live preview",
|
|
210
|
+
"运行视图": "Run",
|
|
211
|
+
"实时运行入口页面": "Run the entry page live",
|
|
212
|
+
"预览视图": "Preview views",
|
|
213
|
+
"重新加载预览": "Reload the preview",
|
|
214
|
+
"打开新窗口": "Open in new window",
|
|
215
|
+
"在新窗口打开预览": "Open the preview in a new window",
|
|
216
|
+
"预览工作目录:": "Previewing working directory: ",
|
|
217
|
+
"正在读取文件…": "Reading file…",
|
|
209
218
|
"版本": "Code",
|
|
210
219
|
"圣经": "Bible",
|
|
211
220
|
"详情分区": "Detail sections",
|
|
@@ -333,6 +342,8 @@
|
|
|
333
342
|
"继续执行": "Resume",
|
|
334
343
|
"正在执行…": "Working…",
|
|
335
344
|
"(本轮无文本输出)": "(no text output this turn)",
|
|
345
|
+
"思考过程": "Thinking",
|
|
346
|
+
"字": "chars",
|
|
336
347
|
"也可直接粘贴截图": "or paste a screenshot directly",
|
|
337
348
|
"添加附件": "Add attachment",
|
|
338
349
|
"添加附件:截图/文本/代码/PDF 等,创建任务时落盘到工作目录 _attachments/": "Add attachments — screenshots/text/code/PDF; saved to the task workdir under _attachments/ on creation",
|
|
@@ -364,7 +375,7 @@
|
|
|
364
375
|
" 个任务目录": " task directories",
|
|
365
376
|
" 个来源": " sources",
|
|
366
377
|
" 个步骤": " steps",
|
|
367
|
-
" 条": "
|
|
378
|
+
" 条": " item(s)",
|
|
368
379
|
" / 共 ": " of ",
|
|
369
380
|
"只看该类": "Show only this category",
|
|
370
381
|
"该分类下暂无教训": "No lessons in this category yet",
|
|
@@ -376,7 +387,7 @@
|
|
|
376
387
|
" 次 · ": " runs · ",
|
|
377
388
|
" 第": " #",
|
|
378
389
|
" 轮对话上下文)": " turns of context)",
|
|
379
|
-
" 字": "
|
|
390
|
+
" 字": " words",
|
|
380
391
|
" 章": " ch",
|
|
381
392
|
" 万": "0,000",
|
|
382
393
|
" 亿": "00,000,000",
|
|
@@ -465,8 +476,8 @@
|
|
|
465
476
|
"CLI 绑定": "CLI bindings",
|
|
466
477
|
"模型调度(可选)": "Model routing (optional)",
|
|
467
478
|
"自动推荐(推荐)": "Automatic recommendation (recommended)",
|
|
468
|
-
"确认禁用模型 {0}
|
|
469
|
-
"
|
|
479
|
+
"确认禁用模型 {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.",
|
|
480
|
+
"确认禁用该厂商?调度链里它的条目会自动移除,恢复后可在模型调度页重新启用。": "Disable this provider? Its entries will be removed from the routing chains automatically. You can re-enable it under Model routing.",
|
|
470
481
|
" 个供应商?\n相关显式模型调度会自动解除,此操作不可撤销。": " providers?\nRelated explicit model routing overrides will be removed. This cannot be undone.",
|
|
471
482
|
"编排设置": "Orchestrator",
|
|
472
483
|
"经验库": "Skill library",
|
|
@@ -628,7 +639,6 @@
|
|
|
628
639
|
"逐项目标核对:": "Beat-by-beat check: ",
|
|
629
640
|
"第": "Ch.",
|
|
630
641
|
"章": "",
|
|
631
|
-
" 字": " words",
|
|
632
642
|
" 轮": " rounds",
|
|
633
643
|
"只重写上一遍未过线的章节,已过线章节沿用成稿与评分": "Rewrites only the chapters that missed the threshold last run; passing chapters keep their drafts and scores.",
|
|
634
644
|
"再跑一次这个任务;连载任务会断点续跑,已完成章节不重写": "Run this task again; serial novels resume from the breakpoint — finished chapters are kept.",
|
|
@@ -759,7 +769,6 @@
|
|
|
759
769
|
"工作目录": "Working directory",
|
|
760
770
|
"类型": "Type",
|
|
761
771
|
"上下文": "Context",
|
|
762
|
-
"编排模式": "Orchestration mode",
|
|
763
772
|
"任务标题": "Task title",
|
|
764
773
|
"验证命令": "Verify command",
|
|
765
774
|
"稿件文件(合并稿)": "Manuscript file (merged)",
|
|
@@ -778,6 +787,9 @@
|
|
|
778
787
|
"卷": "Vol",
|
|
779
788
|
"未分卷": "No volumes",
|
|
780
789
|
"其他文件": "Other files",
|
|
790
|
+
"分卷(卷结构)": "Volumes",
|
|
791
|
+
"长篇建议分卷。两种给法:填「每卷章数」(默认预填 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.",
|
|
792
|
+
"分卷会贯穿全程:大纲按卷给卷名与卷弧光(本卷主线冲突与卷末高潮);每章起草和评审都带着「第几卷第几章」,靠近卷末会提醒收拢支线、卷末章必须写出本卷高潮与卷末钩子;成书自动插入「第 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
793
|
"实现者": "Implementer",
|
|
782
794
|
"评审组": "Reviewers",
|
|
783
795
|
"管理": "Manage",
|
|
@@ -827,7 +839,6 @@
|
|
|
827
839
|
"智能": "Smart",
|
|
828
840
|
"手动": "Manual",
|
|
829
841
|
"智能(推荐):自动拆解 + 智能路由 + 失败自动修复/换将": "Smart (recommended): auto-decompose + smart routing + auto-fix/swap on failure",
|
|
830
|
-
"手动:自行指定实现者与评审组": "Manual: pick implementer and reviewers yourself",
|
|
831
842
|
"代码引擎": "Code engine",
|
|
832
843
|
"评审引擎": "Review engine",
|
|
833
844
|
"直连引擎": "Direct engine",
|
|
@@ -1097,7 +1108,6 @@
|
|
|
1097
1108
|
"已为 %1 个智能体写入推荐模型,%2 个失败。": "Wrote recommended models to %1 agent(s), %2 failed.",
|
|
1098
1109
|
"已为 %1 个智能体写入推荐模型(原配置已自动备份 .bak)。": "Wrote recommended models to %1 agent(s) (original configs backed up as .bak).",
|
|
1099
1110
|
"推荐模型写入失败:": "Failed to write recommended models: ",
|
|
1100
|
-
"厂商/模型变动,已自动重绑 %1 处。": "Providers/models changed — %1 binding(s) auto-rebound.",
|
|
1101
1111
|
"已保存 %1 个 CLI 的绑定。": "Saved bindings for %1 CLI(s).",
|
|
1102
1112
|
"未安装": "Not installed",
|
|
1103
1113
|
"有新版本 ": "New version ",
|
|
@@ -1301,7 +1311,6 @@
|
|
|
1301
1311
|
"适用:": "Applies to: ",
|
|
1302
1312
|
"运行该类型任务时自动注入提示词,无需手动调用": "Auto-injected into prompts when a task of this type runs — no manual invocation",
|
|
1303
1313
|
"约 ": "about ",
|
|
1304
|
-
"字": "chars",
|
|
1305
1314
|
"已内置": "Built-in",
|
|
1306
1315
|
"已启用": "Enabled",
|
|
1307
1316
|
"已停用(不再注入任务提示词)": "Disabled — no longer injected into task prompts",
|
|
@@ -1338,12 +1347,8 @@
|
|
|
1338
1347
|
"操作状态": "Operations",
|
|
1339
1348
|
"清除已完成": "Clear completed",
|
|
1340
1349
|
"创建任务": "Create task",
|
|
1341
|
-
"删除任务": "Delete task",
|
|
1342
|
-
"归档任务": "Archive task",
|
|
1343
1350
|
"重试任务": "Retry task",
|
|
1344
1351
|
"创建续写任务": "Create continuation",
|
|
1345
|
-
"重命名任务": "Rename task",
|
|
1346
|
-
"取消运行": "Cancel run",
|
|
1347
1352
|
"删除运行": "Delete run",
|
|
1348
1353
|
"清理运行记录": "Clear run history",
|
|
1349
1354
|
"上传附件": "Upload attachment",
|
|
@@ -1366,7 +1371,6 @@
|
|
|
1366
1371
|
"{0} 项失败": "{0} failed",
|
|
1367
1372
|
"操作完成": "Operation complete",
|
|
1368
1373
|
"处理中": "In progress",
|
|
1369
|
-
"失败": "Failed",
|
|
1370
1374
|
"已完成": "Completed",
|
|
1371
1375
|
"该插件含脚本/钩子/MCP 组件,仅支持纯技能类插件": "Contains scripts/hooks/MCP components — only pure skill plugins are supported",
|
|
1372
1376
|
" 个供应商(google 等协议)仅登记,不支持注入 CLI,未出现在上面的下拉中。": " provider(s) (google etc.) are registry-only, can't inject into CLIs, and are hidden from the dropdown above.",
|
|
@@ -1406,7 +1410,6 @@
|
|
|
1406
1410
|
"调用": "Calls",
|
|
1407
1411
|
"费用": "Cost",
|
|
1408
1412
|
"轮": " rounds",
|
|
1409
|
-
"章": " chapters",
|
|
1410
1413
|
"万": "K",
|
|
1411
1414
|
"亿": "B",
|
|
1412
1415
|
"年": "",
|
|
@@ -1541,8 +1544,8 @@
|
|
|
1541
1544
|
"做法": "Best practice",
|
|
1542
1545
|
"已验证有效的做法(程序性记忆)": "Verified working procedure (procedural memory)",
|
|
1543
1546
|
"已清除 ": "Cleared ",
|
|
1544
|
-
"已禁用厂商 {0}
|
|
1545
|
-
"已禁用模型 {0} · {1}
|
|
1547
|
+
"已禁用厂商 {0}:调度链已自动移除它的条目,绑定页可重新启用": "Provider {0} disabled: its entries were removed from the routing chains — re-enable on the Bindings page",
|
|
1548
|
+
"已禁用模型 {0} · {1},调度链已自动移除它;绑定页可重新启用": "Model {0} · {1} disabled: its entry was removed from the routing chain — re-enable on the Bindings page",
|
|
1546
1549
|
"已静默 {0} 的告警(恢复后自动重新武装)": "Muted {0}'s alert (auto-rearms on recovery)",
|
|
1547
1550
|
"开始升级": "Start upgrade",
|
|
1548
1551
|
"当前状态不支持": "Not supported in the current state",
|
|
@@ -1608,7 +1611,7 @@
|
|
|
1608
1611
|
"评分点覆盖": "Scoring coverage",
|
|
1609
1612
|
"商务清晰度": "Commercial clarity",
|
|
1610
1613
|
"扫榜选材": "Rank Scan for Topics",
|
|
1611
|
-
"
|
|
1614
|
+
"抓取七猫+番茄排行榜公开数据 → AI 提炼跨平台热门题材/人设/差异化切入点(快档直出报告)": "Grabs public Qimao + Fanqie ranking data → AI distills cross-platform hot genres / character archetypes / differentiation angles (fast lane, report straight out)",
|
|
1612
1615
|
"想写哪个方向(一句话,可留空默认分析总榜热门题材)": "Which direction to write (one sentence; leave empty to analyze the overall hot genres)",
|
|
1613
1616
|
|
|
1614
1617
|
// —— 插件市场远程来源名(market_remote.py)——
|
|
@@ -1632,6 +1635,7 @@
|
|
|
1632
1635
|
"要解决什么问题、约束条件(工期/技术栈/预算)、给谁评审": "Problem to solve, constraints (timeline / stack / budget), who reviews it",
|
|
1633
1636
|
"目标岗位 + 个人经历(可贴旧简历附件),几年经验投什么职级": "Target role + experience (attach the old resume), years of experience and the level you're applying for",
|
|
1634
1637
|
"实现 → 验证命令 → 跨厂商评审 → 自动修复/换将": "Implement → verify command → cross-provider review → auto-fix / swap agent",
|
|
1638
|
+
"按难度动态编排:简单任务走实现+验证短链,复杂任务增加规划、评审、修复与换将": "Orchestrated by difficulty: simple tasks take a short implement-and-verify path; complex ones add planning, review, fixing and agent swapping",
|
|
1635
1639
|
"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
1640
|
"起草 → 多维评审 → 修订循环 → 发布门禁": "Draft → multi-dim review → revision loop → publish gate",
|
|
1637
1641
|
"大纲 → 逐章起草 → 每章多维评审修订 → 全局一致性评审 → 合并(可断点续跑)": "Outline → chapter-by-chapter drafting → per-chapter multi-dim review & revision → global consistency review → merge (resumable)",
|
|
@@ -1983,7 +1987,6 @@
|
|
|
1983
1987
|
"正在安装 wechatauto-replica…(约 1-3 分钟)": "Installing wechatauto-replica… (1-3 minutes)",
|
|
1984
1988
|
"安装完成,依赖已就绪": "Installed — dependency ready",
|
|
1985
1989
|
"安装失败,详见状态行": "Install failed — see status line",
|
|
1986
|
-
"扫描失败:": "Scan failed: ",
|
|
1987
1990
|
"安装失败:": "Install failed: ",
|
|
1988
1991
|
"谁占着端口、属于哪个项目一目了然;「仅本机」的端口外网不可达。关闭只发温和信号,系统进程与本服务自身拒绝关闭。": "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
1992
|
"端口": "Port",
|
|
@@ -1991,9 +1994,7 @@
|
|
|
1991
1994
|
"项目": "Project",
|
|
1992
1995
|
"仅本机": "local only",
|
|
1993
1996
|
"本服务": "this service",
|
|
1994
|
-
"关闭": "Close",
|
|
1995
1997
|
"没有发现监听端口": "No listening ports found",
|
|
1996
|
-
"扫描失败:": "Scan failed: ",
|
|
1997
1998
|
"结束占用端口 %1 的进程?先温和关闭,无效会自动强制结束(系统进程会被拒绝)": "Kill the process holding port %1? Gentle close first, forced kill if ignored (system processes are refused)",
|
|
1998
1999
|
"已关闭": "Closed",
|
|
1999
2000
|
"未能关闭": "Could not close",
|
|
@@ -2023,10 +2024,13 @@
|
|
|
2023
2024
|
"自动 resolve Bug": "Auto-resolve bugs",
|
|
2024
2025
|
"自动合并代码": "Auto-merge code",
|
|
2025
2026
|
"定时扫描": "Scheduled scan",
|
|
2026
|
-
"
|
|
2027
|
+
"扫描间隔": "Scan interval",
|
|
2028
|
+
"分钟": "min",
|
|
2029
|
+
"定时扫描的间隔,最小 5 分钟": "Interval between scheduled scans; 5 minutes minimum",
|
|
2027
2030
|
"已保存(不改就留空)": "Saved (leave blank to keep)",
|
|
2028
2031
|
"定时扫描已开启,每 ": "Scheduled scan on, every ",
|
|
2029
2032
|
" 小时一次": " h",
|
|
2033
|
+
" 分钟一次": " min",
|
|
2030
2034
|
",下次 ": ", next ",
|
|
2031
2035
|
"定时扫描未开启(仍可手动「立即扫描」)": "Scheduled scan off (manual \"Scan Now\" still works)",
|
|
2032
2036
|
"上次扫描 ": "Last scan ",
|
|
@@ -2080,7 +2084,6 @@
|
|
|
2080
2084
|
"禅道账号,转派/升级用": "ZenTao account for transfer/escalation",
|
|
2081
2085
|
"空 = 指回报告人": "blank = back to reporter",
|
|
2082
2086
|
"模块路由(模块 → 端/人,排查优先级最高)": "Module routes (module → side/owner, top triage priority)",
|
|
2083
|
-
"拉取模块清单": "Fetch modules",
|
|
2084
2087
|
"+ 加路由": "+ Add route",
|
|
2085
2088
|
"模块 ID": "Module ID",
|
|
2086
2089
|
"转给谁(禅道账号,可空)": "Transfer to (ZenTao account, optional)",
|
|
@@ -2112,7 +2115,6 @@
|
|
|
2112
2115
|
"— 选产品 —": "— Pick a product —",
|
|
2113
2116
|
"(已关闭)": " (closed)",
|
|
2114
2117
|
"已拉到 ": "Fetched ",
|
|
2115
|
-
"、": ", ",
|
|
2116
2118
|
" 个产品": " products",
|
|
2117
2119
|
" 个账号": " accounts",
|
|
2118
2120
|
",产品/负责人已是下拉选择": " — products/owners are now dropdowns",
|
|
@@ -2308,27 +2310,22 @@
|
|
|
2308
2310
|
"下次:": "Next: ",
|
|
2309
2311
|
"未配置可用模型,请先到「绑定」页设置": "No usable model configured — set one up on the Bindings page first",
|
|
2310
2312
|
"还没有摘要": "No digests yet",
|
|
2311
|
-
" 条": " msg(s)",
|
|
2312
2313
|
"群摘要设置已保存": "Digest settings saved",
|
|
2313
|
-
"保存失败:": "Save failed: ",
|
|
2314
2314
|
"扫描完成,生成": "Scan finished — ",
|
|
2315
2315
|
" 条新摘要": " new digest(s)",
|
|
2316
2316
|
"扫描完成,暂无新内容": "Scan finished — nothing new",
|
|
2317
2317
|
"扫描有问题:": "Scan issue: ",
|
|
2318
|
-
"扫描失败:": "Scan failed: ",
|
|
2319
2318
|
|
|
2320
2319
|
// —— 群摘要·微信直连(wx_reader sidecar)——
|
|
2321
2320
|
"从本机微信自动拉取(微信直连)": "Pull automatically from local WeChat (direct connection)",
|
|
2322
2321
|
"64 位 Python 路径(需装 wechatauto-replica)": "64-bit Python path (with wechatauto-replica installed)",
|
|
2323
2322
|
"例如 C:\\Users\\HP\\anaconda3\\envs\\wxprobe\\python.exe": "e.g. C:\\Users\\HP\\anaconda3\\envs\\wxprobe\\python.exe",
|
|
2324
2323
|
"选择要监听的群({0})": "Pick groups to watch ({0})",
|
|
2325
|
-
"刷新群列表": "Refresh group list",
|
|
2326
2324
|
"搜索群名": "Search group name",
|
|
2327
2325
|
"群列表为空,点「刷新群列表」": "Group list is empty — click \"Refresh group list\"",
|
|
2328
2326
|
"没有匹配的群": "No matching groups",
|
|
2329
2327
|
"刷新中…": "Refreshing…",
|
|
2330
2328
|
"群列表已更新:": "Group list updated: ",
|
|
2331
|
-
"刷新失败:": "Refresh failed: ",
|
|
2332
2329
|
"转知识库": "To Knowledge Base",
|
|
2333
2330
|
"已转入": "Saved",
|
|
2334
2331
|
"已转入知识库(草稿态,转正后才会注入任务提示词)": "Saved to the knowledge base (draft — it won't feed task prompts until approved)",
|
|
@@ -2359,10 +2356,12 @@
|
|
|
2359
2356
|
"合并导入:保留本机现有数据,备份包里的同名条目覆盖进来。替换导入:先清空本机数据目录再整体落入(宠物锁与历史导入备份除外)——只在想把新机器变成备份包原样时使用。": "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
2357
|
"路径重映射(换电脑/换路径时把旧路径改写为新路径,推荐开启)": "Path remap (rewrite old paths to the new machine/path — recommended)",
|
|
2361
2358
|
"确认导入": "Import now",
|
|
2362
|
-
"重启服务生效": "Restart to apply",
|
|
2363
2359
|
"每日清理": "Daily cleanup",
|
|
2364
2360
|
"每天自动清理运行过程日志、发布截图、配置备份残留等可再生数据(保留运行记录与结果报告),防止磁盘越积越满。手稿、任务记录、经验库等用户数据永不清理。": "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
2361
|
"启用每日自动清理": "Enable daily automatic cleanup",
|
|
2362
|
+
"打开/运行前直写 claude 配置": "Write claude config on open/run",
|
|
2363
|
+
"把绑定供应商写进 ~/.claude/settings.json(一键打开与每次运行前)": "Write the bound provider into ~/.claude/settings.json (One-click Open and before every run)",
|
|
2364
|
+
"开启后 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
2365
|
"保留天数": "Retention (days)",
|
|
2367
2366
|
"立即清理": "Clean up now",
|
|
2368
2367
|
"清理发布浏览器缓存(需重新扫码登录)": "Clear publishing browser cache (requires QR re-login)",
|
|
@@ -2457,6 +2456,13 @@
|
|
|
2457
2456
|
"项目资料与沉淀": "Project docs and notes",
|
|
2458
2457
|
"装技能扩展能力": "Install skills to extend",
|
|
2459
2458
|
"定时与周期执行": "Scheduled and recurring runs",
|
|
2459
|
+
|
|
2460
|
+
// —— 侧栏常驻:用量条 + 计数徽章 ——
|
|
2461
|
+
"本月用量": "This month",
|
|
2462
|
+
"本月用量与费用(点击看完整统计)": "Usage and cost this month (click for full stats)",
|
|
2463
|
+
"本月还没有调用": "No runs this month yet",
|
|
2464
|
+
" tokens · ": " tokens · ",
|
|
2465
|
+
"正在运行或排队 ": "Running or queued: ",
|
|
2460
2466
|
};
|
|
2461
2467
|
|
|
2462
2468
|
// ---------- 工具 ----------
|
|
@@ -2543,6 +2549,11 @@
|
|
|
2543
2549
|
if (typeof window.cmpDirectBtnSync === "function") {
|
|
2544
2550
|
window.cmpDirectBtnSync(); // 「自动推荐/推荐」等词也要换语言
|
|
2545
2551
|
}
|
|
2552
|
+
// 顶栏标题不走 data-i18n(页名随当前页变,静态属性给不了),换语言后在这里补画;
|
|
2553
|
+
// 组名读的是左栏导航文本,此时已被上面的重译扫过,拿到的是新语言的组名
|
|
2554
|
+
if (typeof window.renderPageCrumb === "function") {
|
|
2555
|
+
window.renderPageCrumb();
|
|
2556
|
+
}
|
|
2546
2557
|
}
|
|
2547
2558
|
|
|
2548
2559
|
// 暴露
|
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
|
|
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>
|
|
@@ -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>
|
|
@@ -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="
|
|
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>
|
|
@@ -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>
|