Skill检索侧补齐:inject_skills 列表+全文两级渐进披露 #164
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/154-inject-skills-retrieval"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #154
实现内容
inject_skills工具补齐技能检索侧——按 CONTEXT.md「技能(Skill)」条既有设计实现列表+全文两级渐进披露:skill_id:返回全部技能的预览列表(content截断到arise_skill_preview_max_chars,默认 80)skill_id:展开该条全文(超过arise_skill_full_text_max_chars,默认 4000,时截断+truncated: true标记)skill_id:返回错误而不是静默退化成空列表——模型给的 id 大概率是编造/记错的,应如实告知get_skill(id)作为独立的SkillStoragePort方法,不复用list_skills()的 scroll 分页扫描,避免技能库超过 1000 条时出现"列表看得到、全文查不到"的正确性缺口PersistentStorage本身不持有除qdrant_client引用外的任何状态,技能数据完全活在 Qdrant point payload 里,补了专门测试验证范围调整
原 AC 要求三级渐进披露(列表/全文/文件)。实现期 design-verify 核实:本仓库目前没有任何 host 发文件能力(
CapabilitySet无文件位、EgressPort无send_file、ResourcePort的kind枚举不含file)——与用户确认后,文件级拆到独立的 #163,本票收窄到列表+全文两级。CONTEXT.md/design.md/ADR-0006 已同步标注这一范围调整。两轴 review 修复
get_skill对真实 Qdrant server 拒绝格式非法 point id(模型编造的skill_id很可能连 UUID/整数格式都凑不对)补了异常兜底,避免未捕获异常让整轮回复静默消失skill_id、预览截断边界等测试覆盖缺口build_tool_schemasdocstring 补上inject_skills恒可见工具枚举测试
全部 1934 个测试通过;
ruff check/lint-imports/ty check干净;新增逻辑(列表/全文分派、get_skill未命中路径、格式非法 id 兜底、截断边界)均做过 mutation testing 确认能被现有测试捕获。