3e6e3c08d5713b1241738417b90ffbad3e43f6e8
Curator 之前只过滤 source=='agent',导致两类 skill 仍会被自动归档: 1. owner 已 published 的 skill(user B 在用,结果被 curator 收走) 2. 加进 agent.skills 但 .usage.json 活动不够频繁的 skill 新规则:curator transitions 和 LLM 合并候选**只**作用于同时满足 三条件的 skill —— source=='agent' + published==False + 不被任何 agent.config.yaml 的 skills 字段引用。 curator.py - 新 helper _collect_referenced_skill_names():扫所有 .deer-flow/agents/*/config.yaml 把 skills 字段聚合成 set,一次 curator run 内只调一次 - 新 helper _is_skill_published(name):通过 SkillStore 查 published 状态,失败时返回 False(保守降级到旧行为) - 新 helper _eligible_for_curation(name, entry, owned_set, referenced_set) 三条件合一判定 - apply_automatic_transitions 应用三条件过滤;返回的 counters 加 skipped_referenced / skipped_published 计数 - _render_candidate_list 应用同一过滤,LLM 看不到 protected skill - _make_skill_archive_tool safety net:即使 LLM 编造名字调 archive, 工具内部再做一次"被引用 + published"检查,违规拒绝并记 warning 测试 tests/test_skills_multitenancy.py 新增 5 用例: - test_curator_skips_skill_referenced_by_any_agent - test_curator_skips_published_skill - test_curator_archives_orphan_unpublished_skill - test_skill_archive_tool_refuses_referenced_or_published - test_collect_referenced_skill_names_aggregates_from_disk 跑测试:tests/test_skills_multitenancy.py 17/17,全套 36/36 全过。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Languages
Python
39.2%
TypeScript
35.9%
HTML
22.2%
CSS
1.5%
JavaScript
0.9%
Other
0.2%