mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
4.8 KiB
4.8 KiB
Skills 集成 E2E 测试指南
本文档指导如何手动进行 Skills 集成功能的端到端测试。
架构说明
Lime 的 Skills 集成基于 aster-rust 框架的 SkillTool:
用户消息 → AI Agent → SkillTool → global_registry → 执行 Skill
↑
|
load_lime_skills() 加载 ~/.lime/skills/
关键组件:
AsterAgentState::load_lime_skills()- 启动时加载 SkillsAsterAgentState::reload_lime_skills()- 安装/卸载后刷新aster::skills::global_registry()- 全局 Skill 注册表aster::skills::SkillTool- AI 调用 Skills 的工具
前置条件
- Lime 应用已构建并可运行
- 至少配置了一个可用的 AI Provider(如 OpenAI API Key)
- 终端可以访问
~/.lime/skills/目录
测试场景
场景 1:Skills 自动加载
目的:验证 Agent 初始化时能正确加载 Skills
步骤:
- 创建测试 Skill:
mkdir -p ~/.lime/skills/test-greeting
cat > ~/.lime/skills/test-greeting/SKILL.md << 'EOF'
---
name: test-greeting
description: 一个简单的问候技能,用于测试 Skills 集成
---
# 问候技能
当用户请求问候时,使用以下格式回复:
"你好!我是 Lime 助手,很高兴为你服务!"
请始终使用中文回复。
EOF
- 启动 Lime 应用:
cd lime && npm run tauri dev
-
打开开发者工具(Cmd+Option+I),查看控制台日志
-
预期结果:
- 日志中应显示
[AsterAgent] 成功加载 1 个 Lime Skills 到 global_registry - 日志中应显示
[AsterAgent] 已注册 Skill: user:test-greeting
- 日志中应显示
场景 2:AI 自动调用 Skill
目的:验证 AI 能根据用户意图自动调用 Skill
步骤:
-
确保测试 Skill 已创建(见场景 1)
-
在 Lime 聊天界面发送消息:
请用问候技能跟我打个招呼 -
预期结果:
- AI 应该识别到
test-greetingSkill - AI 应该调用 Skill 并返回问候语
- 响应中应包含 "你好!我是 Lime 助手"
- AI 应该识别到
场景 3:通过斜杠命令调用 Skill
目的:验证用户可以通过 /skill-name 显式调用 Skill
步骤:
-
在聊天界面发送:
/test-greeting -
预期结果:
- AI 应该直接执行
test-greetingSkill - 返回问候语
- AI 应该直接执行
场景 4:安装新 Skill 后动态刷新
目的:验证安装新 Skill 后 AI 能立即发现
步骤:
- 在 Lime 运行时,创建新 Skill:
mkdir -p ~/.lime/skills/test-calculator
cat > ~/.lime/skills/test-calculator/SKILL.md << 'EOF'
---
name: test-calculator
description: 一个简单的计算器技能
---
# 计算器技能
当用户请求计算时,执行数学运算并返回结果。
支持:加法、减法、乘法、除法
EOF
-
在 Lime Skills 页面点击刷新(或重新进入页面)
-
发送消息:
请用计算器技能帮我算 123 + 456 -
预期结果:
- AI 应该能发现新安装的
test-calculatorSkill - AI 应该调用该 Skill 并返回计算结果
- AI 应该能发现新安装的
场景 5:卸载 Skill 后不再可用
目的:验证卸载 Skill 后 AI 不再能调用
步骤:
- 删除测试 Skill:
rm -rf ~/.lime/skills/test-greeting
-
在 Lime Skills 页面点击刷新
-
发送消息:
/test-greeting -
预期结果:
- AI 应该提示找不到该 Skill
- 或者 AI 应该说明该 Skill 不可用
清理测试数据
测试完成后,清理测试 Skills:
rm -rf ~/.lime/skills/test-greeting
rm -rf ~/.lime/skills/test-calculator
常见问题排查
Skills 没有被加载
- 检查目录是否存在:
ls -la ~/.lime/skills/ - 检查 SKILL.md 文件格式是否正确
- 查看应用日志中是否有错误信息
AI 没有调用 Skill
- 确认 Skill 已被加载(查看启动日志)
- 尝试使用更明确的指令,如 "使用 xxx 技能"
- 检查 Skill 的
description是否清晰描述了用途
动态刷新不生效
- 确认调用了
reload_lime_skills() - 检查日志中是否有刷新相关的输出
- 尝试重启应用
自动化测试(未来计划)
后续可以使用 Playwright 或 Tauri 的测试框架实现自动化 E2E 测试:
// 示例:Playwright E2E 测试
test('AI should auto-invoke skill based on intent', async ({ page }) => {
// 1. 创建测试 Skill
await createTestSkill('test-greeting');
// 2. 启动应用
await launchLime();
// 3. 发送消息
await page.fill('[data-testid="chat-input"]', '请用问候技能跟我打招呼');
await page.click('[data-testid="send-button"]');
// 4. 验证响应
await expect(page.locator('[data-testid="chat-message"]'))
.toContainText('你好!我是 Lime 助手');
});