fix(skills): 修复导入技能时 SKILL 内容丢失导致无法正常工作

- 前端 handleSubmit/handleCreateApp 发送 skillsContent;handleHubImport 对 skill 把目录 URL 作为 download_url
- 后端 upload_app 对 skill 类型写入 skill_content(手动粘贴或 Hub 抓取)
- 新增 _fetch_skill_content 按目录 URL 抓取真实 SKILL.md 回填(best-effort,仅接受有效 markdown)
- 清理 50 条空壳 skill 记录(skill_content 为空,不可恢复)
- 经 E2E 验证:手动粘贴/Hub 抓取/MCP 重导三条路径均能正确落库
This commit is contained in:
QihuAI Design committed 2026-07-17 10:46:47 +08:00
1 parent 47d38ca173
commit 2ae5d9f9b5
2 files changed
+100 -1

No files matched your search

+11
View File
@@ -544,6 +544,8 @@ const CreateToolModal: React.FC<CreateToolModalProps> = ({ appType, onClose, onS
// 关键修复:把粘贴的 MCP 传输代码随提交一起发给后端,否则后端拿不到代码、URL 为空、永远连不上
mcpCode: appType === 'mcp' ? mcpCode.trim() : undefined,
mcpTransport: appType === 'mcp' ? mcpTransport : undefined,
// 关键修复:把粘贴/上传的 SKILL 内容随提交一起发给后端,否则 skill_content 为空、技能在对话里失效
skillContent: appType === 'skill' ? (skillsContent.trim() || skillsFile || '') : undefined,
} as any);
}, 1500);
}, 2000);
@@ -1506,6 +1508,11 @@ const MarketPage: React.FC = () => {
payload.download_url = mcpCode;
payload.mcp_transport = (data as any).mcpTransport || 'streamable_http';
}
// 关键修复:手动创建的 skill 把真实 SKILL 内容作为 skill_content 传给后端落库
const skillContent = (data as any).skillContent as string | undefined;
if (data.type === 'skill' && skillContent) {
payload.skill_content = skillContent;
}
await marketAPI.createApp(payload);
// 重新加载列表
loadApps();
@@ -1533,6 +1540,10 @@ const MarketPage: React.FC = () => {
if (isMcp && url) {
payload.download_url = url;
}
// skill Hub 导入:把目录 URL 作为 download_url 发后端,后端自动抓取真实 SKILL.md 回填 skill_content
if (!isMcp && url) {
payload.download_url = url;
}
await marketAPI.createApp(payload);
// 重新加载列表
loadApps();