旧扩展 @iflow-mcp/harady-cocos-creator-mcp(164 个细粒度工具 + stdio-bridge
转发)整个删除, 换成 cocos-mcp-server v1.7.9(16 个聚合工具, 靠 action 分派)。
新扩展自身起 streamable-http 服务, 不再需要 stdio 桥, 故 .mcp.json 从
node + stdio-bridge.js 改为 { type: "http", url: "http://127.0.0.1:3000/mcp" }。
原配置指向的 client/stdio-bridge.js 已随旧扩展删除, MCP 因此加载失败。
服务器名保留 cocos-creator-mcp(而非 INSTALL.md 建议的 cocos-creator), 以免
打断 CLAUDE.md、cocos-mcp 技能与 settings.local.json 里的
mcp__cocos-creator-mcp__* 允许规则。
gitignore: 新扩展是商业付费产品(vberai), 非 npm 可重装, dist/sidecar/static
共约 16M 发行产物+加密载荷+平台二进制不入库; 顺带忽略 Claude Code 个人本地
配置与编辑器运行时端口文件。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
84 lines
3.1 KiB
JavaScript
84 lines
3.1 KiB
JavaScript
/**
|
|
* Batch auto_knowledge — generate complete COMPONENT_PROPERTIES from d.ts
|
|
* Output: knowledge JSON files + combined TS snippet for knowledge-handler.ts
|
|
*/
|
|
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const mod = require(path.resolve(__dirname, '../dist/tools/cocos/utils/component-knowledge'));
|
|
|
|
const ALL_COMPONENTS = [
|
|
'cc.Label', 'cc.Sprite', 'cc.Button', 'cc.Widget', 'cc.Layout',
|
|
'cc.UITransform', 'cc.RichText', 'cc.ScrollView', 'cc.Toggle',
|
|
'cc.ToggleContainer', 'cc.ProgressBar', 'cc.Slider', 'cc.PageView',
|
|
'cc.Mask', 'cc.Graphics', 'cc.UIOpacity', 'cc.SafeArea',
|
|
'cc.BlockInputEvents', 'cc.LabelOutline', 'cc.LabelShadow',
|
|
'cc.PageViewIndicator', 'cc.EditBox',
|
|
'cc.AudioSource', 'cc.VideoPlayer', 'cc.WebView',
|
|
'cc.ParticleSystem2D', 'cc.ParticleSystem',
|
|
'cc.Camera', 'cc.Canvas', 'cc.Animation', 'cc.SkeletalAnimation',
|
|
'cc.MeshRenderer', 'cc.SkinnedMeshRenderer',
|
|
'cc.DirectionalLight', 'cc.PointLight', 'cc.SpotLight', 'cc.SphereLight',
|
|
'cc.RigidBody2D', 'cc.BoxCollider2D', 'cc.CircleCollider2D', 'cc.PolygonCollider2D',
|
|
'cc.RigidBody', 'cc.BoxCollider', 'cc.SphereCollider', 'cc.CapsuleCollider', 'cc.MeshCollider',
|
|
'cc.MotionStreak', 'cc.Billboard', 'cc.Line',
|
|
'cc.TiledMap', 'cc.TiledLayer',
|
|
'cc.HingeJoint2D', 'cc.DistanceJoint2D', 'cc.SpringJoint2D',
|
|
'cc.FixedJoint2D', 'cc.WheelJoint2D', 'cc.SliderJoint2D',
|
|
'cc.RelativeJoint2D', 'cc.MouseJoint2D',
|
|
'cc.HingeConstraint', 'cc.FixedConstraint', 'cc.PointToPointConstraint',
|
|
'cc.Terrain', 'cc.LODGroup', 'cc.ReflectionProbe',
|
|
'sp.Skeleton', 'dragonBones.ArmatureDisplay',
|
|
];
|
|
|
|
const snippets = [];
|
|
let saved = 0, failed = 0;
|
|
|
|
for (const comp of ALL_COMPONENTS) {
|
|
const className = mod.componentTypeToClassName(comp);
|
|
const dtsInfo = mod.parseDtsClass(className, { recursive: true });
|
|
|
|
if (!dtsInfo) {
|
|
console.log(` ❌ ${comp}: not found in d.ts`);
|
|
failed++;
|
|
continue;
|
|
}
|
|
|
|
const classified = mod.classifyProperties(dtsInfo, null);
|
|
const knowledge = mod.buildRecommendedKnowledge(comp, dtsInfo, classified);
|
|
|
|
// Save knowledge file
|
|
mod.saveKnowledgeFile(comp, knowledge);
|
|
|
|
// Generate TS snippet
|
|
const snippet = mod.generateTsSnippet(comp, knowledge);
|
|
snippets.push(snippet);
|
|
|
|
const propCount = Object.keys(knowledge.properties).length;
|
|
console.log(` ✅ ${comp}: ${propCount} props`);
|
|
saved++;
|
|
}
|
|
|
|
// Write combined snippets to file
|
|
const outputPath = path.resolve(__dirname, '../dev-knowledge/COMPONENT_PROPERTIES_GENERATED.ts');
|
|
const outputDir = path.dirname(outputPath);
|
|
if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
|
|
|
|
const header = `/**
|
|
* AUTO-GENERATED by batch-auto-knowledge.js
|
|
* Date: ${new Date().toISOString()}
|
|
* Components: ${saved}
|
|
*
|
|
* Paste this into COMPONENT_PROPERTIES in knowledge-handler.ts
|
|
*/
|
|
|
|
const COMPONENT_PROPERTIES: Record<string, any> = {\n`;
|
|
|
|
const footer = `\n};\n`;
|
|
|
|
fs.writeFileSync(outputPath, header + snippets.join('\n') + footer, 'utf-8');
|
|
|
|
console.log(`\n Saved: ${saved} | Failed: ${failed}`);
|
|
console.log(` Knowledge files: dev-knowledge/components/`);
|
|
console.log(` TS output: ${outputPath}`);
|