背景
当前 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 的设计理念保持一致
背景
当前 Resonnet 的 skills 接入采用手动文件拷贝和 prompt 拼接的方式实现。与之不同的另一种路径是直接利用 Claude Agent SDK 原生的 Skills 机制。
两种实现路径的差异
allowed_tools中添加 "Skill"config/skills/setting_sources自动发现config/skills/{id}.md.claude/skills/{name}/SKILL.mdAgentDefinition(skills=[...])当前相关代码
app/models/schemas.py:100-102app/core/skills_meta.pyapp/agent/workspace.py:216-263(copy_skills_to_workspace)app/agent/moderator_modes.py:259-271(_build_skill_assignment_section)app/api/skills.pySDK 原生实现参考
IssueLab 项目使用了 SDK 原生方式,相关实现可参考:
src/issuelab/agents/options.py:376-441base_tools.append(\"Skill\")setting_sources=[\"user\", \"project\"]options.py:219-230(_discover_skills_in_path).claude/skills/{skill_name}/SKILL.md建议
可考虑探索将 skills 迁移到 SDK 原生路径,以: