Ask finance and health like other domains, put year-cued collect questions first, and let the classifier distinguish decline vs skip. Skill 10.0.22. Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
4.9 KiB
PROGRESS · 采集语义三改(2026-09-10)
工作树:.worktrees/rectification-collect-semantics-20260910
分支:codex/rectification-collect-semantics-20260910
任务书:docs/tasks/TASK-rectification-collect-semantics-20260910.md
基线:任务书写 82eb3b79;开工接到 origin/staging @ 71eaeb2e(BUG-635~640、BUG-644/645 已在其上)。
开工回执
- 编号 BUG-641 / 642 / 643。当时
docs/BUG_HISTORY.md最大号是 645,但 641~643 未占用,按任务书使用。 - 顺序:T1 Skill 10.0.22 + 去掉
VOLUNTEER_ONLY→ T2 带线索模板与采集优先 → T3 分类器 no/unsure + collect yes 的expectedWrite→ T4 记录。
已完成
- T1 / BUG-641:Skill L84 与
conversation-strategy.md改为同权采集。删除VOLUNTEER_ONLY。MAX_COLLECTION_PROBES3→7。liveSKILL.md与versions/10.0.22/SKILL.md逐字节相等。sha256e3765b20ce6b49a5c7c9ed6b0a8caacc6fc4b8a16a127b93bd92c537330a54e2。10.0.21 仍 deprecated,resolveExactSkillPackage可打开。 - T2 / BUG-642:
COLLECT_QUESTION_YEAR_CUE/collectQuestionForDomain。nextDatedCollectFollowup先排有evidence_collection_probes年份线索的领域。未覆盖感情/事业/家人先采集,不再sameDomainYearlessCard抢跑。existence 类 D12 仍yearless_ungrounded_contrast。带年月区分点选题顺序未改。 - T3 / BUG-643:删除
isCollectDeclineUtterance/isCollectSkipUtterance。collectFocusCloseStatus:no→declined,unsure→skipped。分类器失败记collectIntent=unclassified。collect 焦点yes/weak_yes→expectedWrite="evidence"。 - T4:BUG-641~643、BUG-539 补口、CHANGELOG、本文件、任务表待验收、走查第 16~18 条、
VOICE.md带线索对照行。
三栏(既有断言)
| 位置 | 原值 | 新值 | 原因 |
|---|---|---|---|
| Skill 当前钉 | 10.0.21 / sha256 3ced1073… |
10.0.22 / e3765b20… |
改 SKILL.md 必须升版 |
| Skill L84 / conversation-strategy | 「财务与健康只有用户主动说才问,仍可计分。」 | 「财务、健康与其他领域同权:服务器按 next_followup 主动问,用户说了就记、就计分。」 | 决策 1 |
Python VOLUNTEER_ONLY |
{finance, health_pressure} |
删除 | 决策 1 |
MAX_COLLECTION_PROBES |
3 | 7 | 学业+感情账本仍要发出 finance / health_pressure |
| 家人采集口语(有 2021 线索) | USER_COLLECT_QUESTION.family(「记得大概哪年就行」) |
「家里在 2021 年前后有没有…别的年份也行。」 | 推翻 BUG-539 整句去前缀,保留矛盾禁令 |
| 家人未覆盖 + D12 | sameDomainYearlessCard("family") 可抢采集 |
感情/事业/家人未覆盖先采集;existence 类 D12 仍记 yearless_ungrounded_contrast,没有「拒答后立刻出 D12 风格卡」断言 |
决策 2 |
| 采集「没有 / 记不清」 | isCollectDeclineUtterance / isCollectSkipUtterance 整句相等即短路 |
分类器 no/unsure → collectFocusCloseStatus |
决策 3 |
collect 焦点 yes/weak_yes 的 expectedWrite |
"none"(只靠「记下了」文字) |
"evidence" |
BUG-635 验收补漏 |
验收命令(实测)
工作树 codex/rectification-collect-semantics-20260910,相对 origin/staging @ 71eaeb2e。
| 命令 | 结果 |
|---|---|
.venv/bin/python -m pytest tests -k "event_probes or collection" -q |
45 passed / 0 fail(collect-only:event_probes 35 + oracle collection 8 + discriminator 1 + tajika 1) |
cd frontend && ls tests/rectification-*.test.ts tests/skill-registry.test.ts tests/agent-voice-copy-contract.test.ts | grep -v database | xargs ./node_modules/.bin/tsx --test |
1156 pass / 0 fail(17.7s)。同类 glob 在 yearless 单曾记 1087;本 SHA 含 BUG-635~640、644/645 及本单新增用例。 |
cd frontend && ./node_modules/.bin/tsc --noEmit |
0 error |
cd frontend && npm run lint |
0 error,113 warning(既有债务;本单未做无关清理) |
git diff --check |
干净 |
python3 scripts/run_quality_gate.py --profile quick --skip-frontend-runtime |
Quality gate passed. 核心 pytest 731 passed / 1 skipped / 0 fail(312s)。未带全量 npm test。 |
cd frontend && npm run build |
blocked:Turbopack node_modules 软链指到 worktree 外(../../../frontend/node_modules)。未核首页 Static / gzip。 |
环境缺口
- 无 Docker:未跑
npm run test:db。 - 无登录态、无 Chrome:走查第 16~18 条未做。部署后须先打开 10.0.21 历史校正。
next build在本 worktree 因node_modules软链被 Turbopack 拒绝;未核首页 Static / gzip。grep -n "主动说才问" skills/在冻结历史包(≤10.0.21)仍有命中;live +versions/10.0.22为空。不得改历史包哈希。
未做
- 未提升
main。 - 未改点选题四选项合同、采用门、holdout 计分。