背景 / Why
复用检查(#28 )的精度取决于 codemap 索引了多少语义信号 。这条 issue 是复用门的供给侧/索引侧 ——从 #28 拆出单独追踪。
已核实的现状(codemap 内部):
codemap 的 search/embedder.py 今天只吃 name + signature + file_path (纯确定性字段)。
注释白纸黑字:设计原定 summary + name ,但「LLM summary 层(07 §5)未实现、summary 恒 None 」,故降级用确定性字段;并留了口子「summary 层落地后此处升级输入即可,存储/检索不变 」。
抽取层(extract/*.py)根本没抽 docstring ,符号只有 name/signature/行号/type。
含义 :现在语义检索 / 重复检测的 recall 基本只到「名字/签名相似 」——「同样的行为、换个名字重写一遍 」查不出来,正是「class/function/method 废弃重造」最难抓的那种。summary 插槽现成、就差填。
本 issue 的思路 :让 dev agent 写码时顺手写 intent 语义 (比 LLM post-hoc 生成更省、更准、还兼当人读文档),抽取进 summary 字段,embedder 升级输入 → 大幅提升 #28 的召回精度。
验收标准 / AC
关联
Related issues: feat(codemap): 复用校验门——符号级重复检测 + 强制复用审计 #28 (复用校验门——检查侧 :codemap reuse/duplicates 子命令 + review 复用审计门)。本 issue = 供给侧 (写码语义纪律 + 抽取 + embedder),两者合起来复用门才完整、精度才够。
ADR: 待开 ADR-028 (可与 feat(codemap): 复用校验门——符号级重复检测 + 强制复用审计 #28 同一 ADR 分两节,或本 issue 单列);先例 ADR-021
Refs: tools/codemap/src/codemap/search/embedder.py(第 7-9 行:当前只吃 name+signature、summary 恒 None 的注释)· tools/codemap/src/codemap/extract/*.py(未抽 docstring)· docs/design/deeply-understand/06-semantic-search.md(§2 原设计 summary+name)· 07 §5(LLM summary 层未实现)· .claude/standards/coding.md · docs/known-limitations.md
备注
背景 / Why
复用检查(#28)的精度取决于 codemap 索引了多少语义信号。这条 issue 是复用门的供给侧/索引侧——从 #28 拆出单独追踪。
已核实的现状(codemap 内部):
search/embedder.py今天只吃name + signature + file_path(纯确定性字段)。summary + name,但「LLM summary 层(07 §5)未实现、summary 恒 None」,故降级用确定性字段;并留了口子「summary 层落地后此处升级输入即可,存储/检索不变」。extract/*.py)根本没抽 docstring,符号只有 name/signature/行号/type。含义:现在语义检索 / 重复检测的 recall 基本只到「名字/签名相似」——「同样的行为、换个名字重写一遍」查不出来,正是「class/function/method 废弃重造」最难抓的那种。summary 插槽现成、就差填。
本 issue 的思路:让 dev agent 写码时顺手写 intent 语义(比 LLM post-hoc 生成更省、更准、还兼当人读文档),抽取进 summary 字段,embedder 升级输入 → 大幅提升 #28 的召回精度。
验收标准 / AC
coding.md加「符号语义写作纪律」——可复用面(导出 class/function、service 方法、shared util)必须写一行 intent(行为 + 输入/输出语义,不是复述签名);私有 helper 不强制(避免形式主义)。约定结构化写法(Python docstring 首行 / JSDoc@description/ tag)让抽取可机械拉。6 个 dev 执行角色经 coding.md 继承。name+signature→summary+name+signature(按embedder.py注释,存储/检索不变、只换输入);summary 为空时降级现状(兼容遗留/未注释符号)。known-limitations.md登记「summary = model-authored,可能漂移」。AC-N ↔ symbol映射)。关联
tools/codemap/src/codemap/search/embedder.py(第 7-9 行:当前只吃 name+signature、summary 恒 None 的注释)·tools/codemap/src/codemap/extract/*.py(未抽 docstring)·docs/design/deeply-understand/06-semantic-search.md(§2 原设计 summary+name)· 07 §5(LLM summary 层未实现)·.claude/standards/coding.md·docs/known-limitations.md备注