codebee 0.1.83 → 0.1.84
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 +4 -0
- package/README.md +2 -3
- package/app/core/pipeline.py +54 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@ README 元数据带回,供老版本在「发现新版本」时展示新版更
|
|
|
6
6
|
|
|
7
7
|
## 未发布
|
|
8
8
|
|
|
9
|
+
## v0.1.84(2026-10-05)
|
|
10
|
+
|
|
11
|
+
- **代码评审新增「越范围变更提醒」**:计划锚定了涉及文件的任务,实现轮若动了清单之外的文件,评审员会被点名提醒核对(连带改动属正常、凭空多改要点出)——无人值守任务更难悄悄跑偏。纯提示词指引,不改变通过判定;旧计划/手动任务未锚定文件时不生效。
|
|
12
|
+
|
|
9
13
|
## v0.1.83(2026-10-05)
|
|
10
14
|
|
|
11
15
|
- **用量统计模型名不再分裂**:同一模型不同大小写(如 GLM-5.3-Flash 与 glm-5.3-flash)在台账倒序读入时 2:2 平局会随机拆成两行——平局裁断补第三序(大写字母数),统计视图稳定归一。
|
package/README.md
CHANGED
|
@@ -33,10 +33,9 @@ Trae Agent、OpenClaw……),提供
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
35
|
<!-- relnotes:start -->
|
|
36
|
-
### 最新版更新内容(v0.1.
|
|
36
|
+
### 最新版更新内容(v0.1.84)
|
|
37
37
|
|
|
38
|
-
-
|
|
39
|
-
- 测试面存量红清账六件:建书对账/发布门禁等改版后的滞后断言全部跟上,全量 2143 项零新增红
|
|
38
|
+
- 代码评审新增「越范围变更提醒」:实现轮动了计划锚定文件之外的文件时,评审员会被点名核对——无人值守任务更难悄悄跑偏
|
|
40
39
|
<!-- relnotes:end -->
|
|
41
40
|
|
|
42
41
|
|
package/app/core/pipeline.py
CHANGED
|
@@ -1029,13 +1029,64 @@ def _review_depth_note(diff):
|
|
|
1029
1029
|
return ""
|
|
1030
1030
|
|
|
1031
1031
|
|
|
1032
|
-
def
|
|
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 轮恢复评审参与诊断)
|
package/package.json
CHANGED