Skip to content

建议:探索 Claude Agent SDK 原生 Skills 机制作为替代方案 #1

@gqy20

Description

@gqy20

背景

当前 Resonnet 的 skills 接入采用手动文件拷贝和 prompt 拼接的方式实现。与之不同的另一种路径是直接利用 Claude Agent SDK 原生的 Skills 机制。

两种实现路径的差异

特性 当前实现 SDK 原生路径
Skill 工具 未启用 "Skill" 工具 需要在 allowed_tools 中添加 "Skill"
Skills 发现 手动拷贝到 config/skills/ 配置 setting_sources 自动发现
文件路径 config/skills/{id}.md .claude/skills/{name}/SKILL.md
触发方式 Moderator 手动分配 Agent 根据上下文自动选择
预加载 手动拼接 prompt 使用 AgentDefinition(skills=[...])

当前相关代码

  • DEFAULT_ALLOWED_TOOLS: app/models/schemas.py:100-102
  • Skills 加载: app/core/skills_meta.py
  • 拷贝逻辑: app/agent/workspace.py:216-263 (copy_skills_to_workspace)
  • 分配逻辑: app/agent/moderator_modes.py:259-271 (_build_skill_assignment_section)
  • API 端点: app/api/skills.py

SDK 原生实现参考

IssueLab 项目使用了 SDK 原生方式,相关实现可参考:

  • 核心配置:src/issuelab/agents/options.py:376-441
    • 启用 Skill 工具:base_tools.append(\"Skill\")
    • 配置 setting_sources:setting_sources=[\"user\", \"project\"]
  • Skills 发现:options.py:219-230 (_discover_skills_in_path)
  • Skills 目录:.claude/skills/{skill_name}/SKILL.md

建议

可考虑探索将 skills 迁移到 SDK 原生路径,以:

  • 简化手动拷贝和分配逻辑
  • 利用 Agent 的上下文感知能力自动选择 skill
  • 与 Claude Agent SDK 的设计理念保持一致

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions