Skip to content

feat(codemap): 补符号 summary 语义层(dev 写作纪律 + 抽取 + embedder 升级) #29

Description

@pcliangx

背景 / 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

  • AC-1: coding.md 加「符号语义写作纪律」——可复用面(导出 class/function、service 方法、shared util)必须写一行 intent(行为 + 输入/输出语义,不是复述签名);私有 helper 不强制(避免形式主义)。约定结构化写法(Python docstring 首行 / JSDoc @description / tag)让抽取可机械拉。6 个 dev 执行角色经 coding.md 继承。
  • AC-2: codemap 抽取层拉 docstring/intent 进符号 summary 字段(现恒 None);Python / TS / Java 各自约定来源。
  • AC-3: embedder 输入升级 name+signaturesummary+name+signature(按 embedder.py 注释,存储/检索不变、只换输入);summary 为空时降级现状(兼容遗留/未注释符号)。
  • AC-4: 诚实红线——写的语义仅作召回辅助,复用决策仍 verify 结构(structure_hash)+ 测试;summary 与签名/测试漂移 = feat(codemap): 复用校验门——符号级重复检测 + 强制复用审计 #28 复用审计的 review finding。known-limitations.md 登记「summary = model-authored,可能漂移」。
  • AC-5:(协同 feat(codemap): 复用校验门——符号级重复检测 + 强制复用审计 #28,可选)summary 尽量锚到它实现的 AC/Requirement(Spec-Driven)——有测试兜底、比自由 docstring 更硬、不易漂移,并支撑「按能力查复用」(AC-N ↔ symbol 映射)。

关联

备注

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions