codebee 0.1.83 → 0.1.85

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 CHANGED
@@ -6,6 +6,15 @@ README 元数据带回,供老版本在「发现新版本」时展示新版更
6
6
 
7
7
  ## 未发布
8
8
 
9
+ ## v0.1.85(2026-10-05)
10
+
11
+ - **新增「演示文稿」任务类型(第 18 种)**:逐页大纲 + 讲稿(Markdown,如实声明不生成 PPT 二进制),专属「演示设计顾问」交付契约与结构逻辑/内容密度/视觉呈现/演讲适配四评审维度;此前用「文档」类型将就的演示场景有了正名入口(评审稿候选经批3 巡检实证落地)。
12
+ - **帮助页插件市场文案去数字化**:「600+ 技能」静态下限随六源上游浮动必然过期,改为「技能一键安装」——来源描述保留,数字不再写死。
13
+
14
+ ## v0.1.84(2026-10-05)
15
+
16
+ - **代码评审新增「越范围变更提醒」**:计划锚定了涉及文件的任务,实现轮若动了清单之外的文件,评审员会被点名提醒核对(连带改动属正常、凭空多改要点出)——无人值守任务更难悄悄跑偏。纯提示词指引,不改变通过判定;旧计划/手动任务未锚定文件时不生效。
17
+
9
18
  ## v0.1.83(2026-10-05)
10
19
 
11
20
  - **用量统计模型名不再分裂**:同一模型不同大小写(如 GLM-5.3-Flash 与 glm-5.3-flash)在台账倒序读入时 2:2 平局会随机拆成两行——平局裁断补第三序(大写字母数),统计视图稳定归一。
package/README.md CHANGED
@@ -33,10 +33,10 @@ Trae Agent、OpenClaw……),提供
33
33
  ---
34
34
 
35
35
  <!-- relnotes:start -->
36
- ### 最新版更新内容(v0.1.83)
36
+ ### 最新版更新内容(v0.1.85)
37
37
 
38
- - 用量统计模型名不再分裂:同一模型不同大小写写法稳定归一成一行,不再随台账读入顺序随机拆两行
39
- - 测试面存量红清账六件:建书对账/发布门禁等改版后的滞后断言全部跟上,全量 2143 项零新增红
38
+ - 新增「演示文稿」任务类型(第 18 种):逐页大纲 + 讲稿(Markdown,不生成 PPT 二进制),专属交付契约与四评审维度
39
+ - 帮助页插件市场文案去数字化:「600+ 技能」改「技能一键安装」,数字不再随上游浮动过期
40
40
  <!-- relnotes:end -->
41
41
 
42
42
 
@@ -132,8 +132,8 @@ OpenCode / Continue / Cursor / Trae 十种工具的配置,一次带入全部
132
132
 
133
133
  ### 更多内置能力
134
134
 
135
- - **17 种任务类型**:直接执行、代码、小说、连载小说、自媒体文章、短视频脚本、
136
- 文档、翻译、扫榜选材、缺陷复盘、调研报告、演讲稿、工作汇报、商务邮件、技术方案、简历、标书编制;
135
+ - **18 种任务类型**:直接执行、代码、小说、连载小说、自媒体文章、短视频脚本、
136
+ 文档、翻译、扫榜选材、缺陷复盘、调研报告、演讲稿、演示文稿、工作汇报、商务邮件、技术方案、简历、标书编制;
137
137
  全部支持自定义流程(引擎 / 评审维度 / 阈值 / 轮数 / 提示词覆盖);
138
138
  - **质量闸门与裁决**:评审失败≠0 分照过、降级大纲不开写、超时但已落盘的稿件照常
139
139
  送评审;需要人拍板的事项进「待裁决」队列(徽章 + 提示音),`tools/bee.py`
@@ -239,7 +239,7 @@ python tools\bee.py discard <task> :: 否决——删除任务分支(需输
239
239
  ## 任务类型与自定义流程
240
240
 
241
241
  主表单的「类型」下拉即流程列表,点「管理」可新增/编辑自定义流程(引擎、评审维度、
242
- 阈值、轮数、产出文件名、起草/评审提示词覆盖)。内置 17 种;禅道工单是自动转成
242
+ 阈值、轮数、产出文件名、起草/评审提示词覆盖)。内置 18 种;禅道工单是自动转成
243
243
  `code` 修复任务的集成入口,不另占菜单类型:
244
244
 
245
245
  | 类型 | 引擎 | 流程 |
@@ -256,6 +256,7 @@ python tools\bee.py discard <task> :: 否决——删除任务分支(需输
256
256
  | 🕓 缺陷复盘 | direct | 读禅道/Jira 导出 → 产品/开发/测试三视角复盘报告 |
257
257
  | 🔍 调研报告 | review | 起草 → 多维评审(全面性/深度/论据/结论)→ 修订 → 门禁 |
258
258
  | 🎤 演讲稿 | review | 起草 → 多维评审(主题/结构/感染力/语言)→ 修订 → 门禁 |
259
+ | 🖥️ 演示文稿 | review | 逐页大纲 + 讲稿(Markdown,不生成 PPT 二进制)→ 多维评审(结构/密度/呈现/演讲适配)→ 修订 → 门禁 |
259
260
  | 📅 工作汇报 / ✉️ 商务邮件 / 📋 技术方案 / 📄 简历 | review | 各自专属角色、交付约束与评审维度 |
260
261
  | 📑 标书编制 | review | 招标文件对齐评分点 → 多维评审(应答/合规/针对性)→ 修订 → 门禁 |
261
262
 
@@ -21,6 +21,7 @@ TYPE_DIMENSIONS = {
21
21
  "rank_scan": "reasoning",
22
22
  "research": "reasoning",
23
23
  "speech": "writing",
24
+ "presentation": "writing",
24
25
  "weekly_report": "writing",
25
26
  "email": "writing",
26
27
  "tech_proposal": "reasoning",
package/app/core/flows.py CHANGED
@@ -95,6 +95,12 @@ BUILTIN_FLOWS = [
95
95
  "threshold": 7.0, "rounds": 2,
96
96
  "goal_hint": "演讲场合 / 听众 / 时长 / 核心信息",
97
97
  "note": "起草 → 多维评审 → 修订循环 → 发布门禁"},
98
+ {"id": "presentation", "name": "演示文稿", "icon": "i-preview", "engine": "review", "builtin": True,
99
+ "manuscript": "presentation.md",
100
+ "rubric": ["结构逻辑", "内容密度", "视觉呈现", "演讲适配"],
101
+ "threshold": 7.0, "rounds": 2,
102
+ "goal_hint": "演示场合 / 听众 / 大致页数 / 核心信息",
103
+ "note": "演示文稿:逐页大纲与讲稿(Markdown,不生成 PPT 二进制)→ 多维评审 → 修订循环 → 发布门禁"},
98
104
  {"id": "weekly_report", "name": "工作汇报", "icon": "i-clip-check", "engine": "review", "builtin": True,
99
105
  "manuscript": "weekly.md",
100
106
  "rubric": ["重点突出", "数据支撑", "结构清晰", "下一步可执行"],
@@ -1029,13 +1029,64 @@ def _review_depth_note(diff):
1029
1029
  return ""
1030
1030
 
1031
1031
 
1032
- def _run_review(run_id, task, workdir, reviewer, ev):
1032
+ def _norm_rel(path):
1033
+ """归一成仓库相对 posix 路径:反斜杠转正斜杠、剥 ./ 前缀。"""
1034
+ s = str(path or "").replace("\\", "/").strip()
1035
+ return s[2:] if s.startswith("./") else s
1036
+
1037
+
1038
+ def _plan_scope_files(subtasks):
1039
+ """计划全步骤涉及文件并集(保持出现顺序去重)。计划未锚定 files(旧计划/
1040
+ 手动/快路径)返回空列表——越范围检测无从对照即静默跳过。"""
1041
+ out = []
1042
+ for sub in subtasks or []:
1043
+ for f in (sub or {}).get("files") or []:
1044
+ key = str(f)
1045
+ if key and key not in out:
1046
+ out.append(key)
1047
+ return out
1048
+
1049
+
1050
+ def _scope_note(scope_files, changed_files):
1051
+ """越范围编辑提醒(agent-delegate 借鉴):计划锚定了涉及文件,而实际变更
1052
+ 超出声明清单时,点名请评审员核对是否计划外改动。文件型/目录型声明(以 /
1053
+ 结尾)都按「相等或位于其下」匹配;清单外文件只在提醒里点名,不改 pass
1054
+ 判定语义;计划未锚定文件(changed_files=None)不猜范围不提醒。"""
1055
+ declared = []
1056
+ for f in scope_files or []:
1057
+ s = _norm_rel(f)
1058
+ if s and s not in declared:
1059
+ declared.append(s)
1060
+ if not declared or changed_files is None:
1061
+ return ""
1062
+ outside = []
1063
+ for p in changed_files or []:
1064
+ s = _norm_rel(p)
1065
+ if not s or s in outside:
1066
+ continue
1067
+ if not any(s == d or s.startswith(d if d.endswith("/") else d + "/")
1068
+ for d in declared):
1069
+ outside.append(s)
1070
+ if not outside:
1071
+ return ""
1072
+ return ("\n\n## 越范围变更提醒\n计划声明的涉及文件:%s。本次变更还动了清单之外的:%s"
1073
+ "——请核对这些改动是否任务必需(公共依赖连带属正常,凭空多改要点出);"
1074
+ "若属计划锚定疏漏请如实说明,不要仅因此给 blocker。"
1075
+ % ("、".join("`%s`" % d for d in declared[:10]),
1076
+ "、".join("`%s`" % p for p in outside[:8])))
1077
+
1078
+
1079
+ def _run_review(run_id, task, workdir, reviewer, ev, scope_files=None):
1033
1080
  diff = _git_diff(workdir)
1034
1081
  prompt = (CODE_REVIEW_PROMPT
1035
1082
  .replace("__GOAL__", task["goal"])
1036
1083
  .replace("__VERIFY__", task.get("verify_command") or "(未配置)")
1037
1084
  .replace("__DIFF__", diff or "(无法获取 git diff,请综合任务目标谨慎评审)"))
1038
1085
  prompt += _review_depth_note(diff)
1086
+ if scope_files:
1087
+ from . import gitmod
1088
+ changed = [f.get("path") for f in (gitmod.collect_changes(workdir).get("files") or [])]
1089
+ prompt += _scope_note(scope_files, changed)
1039
1090
  if task.get("context"):
1040
1091
  prompt += "\n\n## 原始背景与附件要求\n" + task["context"]
1041
1092
  res = _run_step(run_id, "review", reviewer, prompt, workdir, readonly=True, ev=ev,
@@ -1654,7 +1705,8 @@ def _run_code(run, task, agents, ev, stats, mode):
1654
1705
  else:
1655
1706
  verify_fail_streak[0] = 0
1656
1707
  # 先让确定性验证落盘,再执行模型评审;终态判断会同时使用两份证据。
1657
- review_json = _run_review(run_id, task, workdir, modelhub.bind_agent(reviewer, difficulty), ev)
1708
+ review_json = _run_review(run_id, task, workdir, modelhub.bind_agent(reviewer, difficulty), ev,
1709
+ scope_files=_plan_scope_files(subtasks))
1658
1710
  return review_json, verify_pass, verify_ran
1659
1711
 
1660
1712
  verify_fail_streak = [0] # gate:verify 连败计数(>=2 轮恢复评审参与诊断)
@@ -2231,6 +2283,12 @@ CONTENT_DELIVERY_CONTRACTS = {
2231
2283
  "按场合、听众和时长控制篇幅,使用适合现场说出的短句与自然转场。",
2232
2284
  "开场建立关系,主体围绕一个核心信息展开,结尾给出清晰收束或号召。",
2233
2285
  ]),
2286
+ "presentation": ("演示设计顾问", [
2287
+ "按页组织成逐页大纲:每页一个标题、3-5 条要点与讲者备注(这页讲什么、强调什么),页数与时长匹配。",
2288
+ "先明确受众与演示目标(说服/汇报/教学),每页要点服务同一个核心信息;数据给出口径,不虚构。",
2289
+ "视觉呈现给可执行建议(版式/图表类型/强调方式),引用素材标注来源或「待补」,不虚构截图与图片。",
2290
+ "产出为 Markdown 逐页大纲与讲稿,不生成 PPT 二进制文件。",
2291
+ ]),
2234
2292
  "weekly_report": ("业务汇报顾问", [
2235
2293
  "按成果与影响、关键数据、问题阻塞、下步行动(负责人/时间)组织内容。",
2236
2294
  "只使用用户提供或可核验的数据;缺失数字保留待补项,不虚构业绩。",
package/app/ui/app.js CHANGED
@@ -13357,7 +13357,7 @@ function helpChapterBody(id) {
13357
13357
  '<li><svg class="ico" aria-hidden="true"><use href="#i-git-branch"></use></svg><div><b>' + t("版本工作台") + '</b><span>' + t("任务分支隔离,改动可审可合") + '</span></div></li>' +
13358
13358
  '<li><svg class="ico" aria-hidden="true"><use href="#i-calendar-days"></use></svg><div><b>' + t("自动化") + '</b><span>' + t("定时任务,无人值守") + '</span></div></li>' +
13359
13359
  '<li><svg class="ico" aria-hidden="true"><use href="#i-library"></use></svg><div><b>' + t("经验库") + '</b><span>' + t("内置规范包 + 自动沉淀教训,越用越顺手") + '</span></div></li>' +
13360
- '<li><svg class="ico" aria-hidden="true"><use href="#i-blocks"></use></svg><div><b>' + t("插件市场") + '</b><span>' + t("600+ 技能,一键安装") + '</span></div></li>' +
13360
+ '<li><svg class="ico" aria-hidden="true"><use href="#i-blocks"></use></svg><div><b>' + t("插件市场") + '</b><span>' + t("技能一键安装") + '</span></div></li>' +
13361
13361
  '</ul>';
13362
13362
  }
13363
13363
  if (id === "serial") {
@@ -13399,7 +13399,7 @@ function helpChapterBody(id) {
13399
13399
  '<h3 class="help-h3">' + t("禅道 Bug 自动修复") + '</h3>' +
13400
13400
  '<p class="help-p">' + t("设置 → 禅道:配好地址与产品档案后,定时扫描激活 Bug,按模块路由 / AI 排查定责(前端/后端/双端/非我方);我方端的 Bug 自动创建代码修复任务,修完自动合并、resolve 并回写报告到群里;测试指错人的也会按排查结论改派。合并失败不 resolve 不转派,留人工兜底。") + '</p>' +
13401
13401
  '<h3 class="help-h3">' + t("技能市场") + '</h3>' +
13402
- '<p class="help-p">' + t("设置 → 插件市场:600+ 技能一键安装,来源包括内置库和 ZCode、Anthropic 等多个外部目录。装上的技能会注入智能体能力,按任务类型生效。") + '</p>' +
13402
+ '<p class="help-p">' + t("设置 → 插件市场:技能一键安装,来源包括内置库和 ZCode、Anthropic 等多个外部目录。装上的技能会注入智能体能力,按任务类型生效。") + '</p>' +
13403
13403
  '<h3 class="help-h3">' + t("用量台账") + '</h3>' +
13404
13404
  '<p class="help-p">' + t("设置 → 用量统计:每次调用的模型、token 与费用按多个维度聚合展示,历史运行会在启动时自动回填——每个任务花了多少,一目了然。") + '</p>';
13405
13405
  }
package/app/ui/i18n.js CHANGED
@@ -678,7 +678,7 @@
678
678
  "规划 · 实现 · 评审 · 打磨,接棒交付": "Planner, builders, reviewer and polisher relay the work to done",
679
679
  "连载写作": "Serialized writing",
680
680
  "断点续跑 · 经验沉淀 · 作品资料": "Resume from checkpoints, distilled lessons, book metadata",
681
- "600+ 技能,一键安装": "600+ skills, one-click install",
681
+ "技能一键安装": "Skills install in one click",
682
682
  "版本工作台": "Version workbench",
683
683
  "任务分支隔离,改动可审可合": "Task branches stay isolated; review and merge the changes",
684
684
  "定时任务,无人值守": "Scheduled runs, unattended",
@@ -1934,6 +1934,13 @@
1934
1934
  "方案针对性": "Solution fit",
1935
1935
  "评分点覆盖": "Scoring coverage",
1936
1936
  "商务清晰度": "Commercial clarity",
1937
+ "演示文稿": "Presentation",
1938
+ "演示文稿:逐页大纲与讲稿(Markdown,不生成 PPT 二进制)→ 多维评审 → 修订循环 → 发布门禁": "Presentations: page-by-page outline + speaker notes (Markdown, no PPT binary) → multi-dim review → revision loop → publish gate",
1939
+ "演示场合 / 听众 / 大致页数 / 核心信息": "Occasion / audience / slide count / key message",
1940
+ "结构逻辑": "Structural logic",
1941
+ "内容密度": "Content density",
1942
+ "视觉呈现": "Visual presentation",
1943
+ "演讲适配": "Delivery fit",
1937
1944
  "扫榜选材": "Rank Scan for Topics",
1938
1945
  "抓取七猫/番茄/起点/纵横四平台排行榜公开数据 → AI 提炼跨平台热门题材/人设/差异化切入点,每条附 A-E 跨平台证据分级(快档直出报告)": "Grabs public rankings from Qimao / Fanqie / Qidian / Zongheng → AI distills cross-platform hot genres / character archetypes / differentiation angles, each with an A-E cross-platform evidence grade (fast lane, report straight out)",
1939
1946
  "想写哪个方向(一句话,可留空默认分析总榜热门题材)": "Which direction to write (one sentence; leave empty to analyze the overall hot genres)",
@@ -2619,7 +2626,7 @@
2619
2626
  "设置 → 自动化:把任意任务类型挂上时间表(每天/每周固定时刻),到点自动按真实运行链开跑,结果照常落盘。配合群机器人(钉钉/飞书/企微自动适配)可以把完成状态推到群里。": "Settings → Automation: put any task type on a schedule (fixed daily/weekly times); at the appointed time it runs through the real execution chain and results land as usual. Pair it with a group robot (DingTalk/Feishu/WeCom auto-detected) to push completion status into your group chat.",
2620
2627
  "设置 → 禅道:配好地址与产品档案后,定时扫描激活 Bug,按模块路由 / AI 排查定责(前端/后端/双端/非我方);我方端的 Bug 自动创建代码修复任务,修完自动合并、resolve 并回写报告到群里;测试指错人的也会按排查结论改派。合并失败不 resolve 不转派,留人工兜底。": "Settings → ZenTao: once the address and product profiles are set, active bugs are scanned on a schedule and triaged by module route / AI (frontend / backend / both / not ours); bugs on our side spawn code-fix tasks automatically — when fixed, they merge, resolve, and post the report back to the group chat; bugs misassigned by testers get reassigned per the triage verdict. If the merge fails, it won't resolve or reassign — a human takes over as the fallback.",
2621
2628
  "技能市场": "Skills marketplace",
2622
- "设置 → 插件市场:600+ 技能一键安装,来源包括内置库和 ZCode、Anthropic 等多个外部目录。装上的技能会注入智能体能力,按任务类型生效。": "Settings → Marketplace: 600+ skills install in one click, from the built-in library and external catalogs such as ZCode and Anthropic. Installed skills inject agent capabilities and take effect by task type.",
2629
+ "设置 → 插件市场:技能一键安装,来源包括内置库和 ZCode、Anthropic 等多个外部目录。装上的技能会注入智能体能力,按任务类型生效。": "Settings → Marketplace: skills install in one click, from the built-in library and external catalogs such as ZCode and Anthropic. Installed skills inject agent capabilities and take effect by task type.",
2623
2630
  "用量台账": "Usage ledger",
2624
2631
  "设置 → 用量:每次调用的模型、token 与费用按多个维度聚合展示,历史运行会在启动时自动回填——每个任务花了多少,一目了然。": "Settings → Usage: model, tokens, and cost of every call aggregated across dimensions; historical runs backfill automatically at startup — what each task cost, at a glance.",
2625
2632
 
package/app/ui/index.html CHANGED
@@ -95,6 +95,7 @@
95
95
  <symbol id="i-lang" viewBox="0 0 24 24"><path d="m5 8 6 6"/><path d="m4 14 6-6 2-3"/><path d="M2 5h12"/><path d="M7 2h1"/><path d="m22 22-5-10-5 10"/><path d="M14 18h6"/></symbol>
96
96
  <symbol id="i-file-search" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><circle cx="11.5" cy="14.5" r="2.5"/><path d="m13.3 16.3 1.7 1.7"/></symbol>
97
97
  <symbol id="i-mic" viewBox="0 0 24 24"><rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 10a7 7 0 0 0 14 0"/><path d="M12 19v3"/></symbol>
98
+ <symbol id="i-preview" viewBox="0 0 24 24"><path d="M2 3h20"/><path d="M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3"/><path d="M8 8h8"/><path d="M8 11h5"/><path d="m7 21 5-5 5 5"/></symbol>
98
99
  <symbol id="i-clip-check" viewBox="0 0 24 24"><rect x="8" y="2" width="8" height="4" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><path d="m9 14 2 2 4-4"/></symbol>
99
100
  <symbol id="i-copy" viewBox="0 0 24 24"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></symbol>
100
101
  <symbol id="i-mail" viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></symbol>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebee",
3
- "version": "0.1.83",
3
+ "version": "0.1.85",
4
4
  "description": "CodeBee · 多智能体编排台 — 统一编排本机 AI 编码 CLI(Codex / Claude Code / QwenCode / OpenCode / Aider…):目标→拆解→路由→执行→验证→跨厂商评审→修复→报告。纯 Python 标准库实现,本地 Web UI。",
5
5
  "license": "MIT",
6
6
  "bin": {