- ```svg<svg... ✅ - ```svg <svg... ✅ - ```xml<svg... ✅ - ```xml <svg... ✅ - ``` xml<svg... ✅ - ``` svg<svg... ✅ - ```<svg... ✅(无语言标识) 这样无论 LLM 输出哪种格式,都能正确实时绘制和复制图片到剪贴板了。
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
(function registerProductCanvasModule(global) {
|
|
'use strict';
|
|
|
|
if (!global.ModuleRegistry) {
|
|
throw new Error('ModuleRegistry 未初始化');
|
|
}
|
|
|
|
const parseResponse = (content) => Utils.parseSVGResponse(content);
|
|
|
|
global.ModuleRegistry.register({
|
|
id: 'product-canvas',
|
|
label: '产品画布',
|
|
icon: 'ph:pen-nib-duotone',
|
|
renderer: 'svg',
|
|
promptKey: 'canvas',
|
|
storageNamespace: 'module:product-canvas',
|
|
chat: {
|
|
placeholder: '描述你的产品定位、用户画像、价值主张等内容…',
|
|
streamStartToken: '```svg',
|
|
contextWindow: 10
|
|
},
|
|
artifact: {
|
|
type: 'svg',
|
|
fence: 'svg',
|
|
startPattern: /```\s*(?:svg|xml)?\s*<svg/i,
|
|
parser: parseResponse
|
|
},
|
|
hooks: {
|
|
onActivate() {
|
|
// 保留扩展点,后续可追加自定义逻辑
|
|
}
|
|
},
|
|
exports: {
|
|
allowSvg: true,
|
|
allowPng: true,
|
|
allowClipboard: true,
|
|
allowCode: true
|
|
},
|
|
ui: {
|
|
placeholderText: '生成的产品画布将在此处显示'
|
|
}
|
|
});
|
|
})(window);
|