@gadmin2n/schematics 0.0.82 → 0.0.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,7 @@ export const ITActivityDay: ModelConfig =
28
28
  filter: [],
29
29
  sorter: ["id"],
30
30
  },
31
- fields: ["*","!created_at"],
31
+ fields: ["*","!createdAt","!updatedAt","!dateKey"],
32
32
  rowSelection: {
33
33
  actions: [
34
34
  {action: 'INSERT', desc: 'Insert'},
@@ -236,6 +236,7 @@ export function getInspectorActions(
236
236
  label: '修改字段值展示样式',
237
237
  skill: 'list-column-render',
238
238
  promptTemplate: `自定义 ${col(r, f)} 的渲染样式`,
239
+ promptPrefix: '具体要求:',
239
240
  requiresInput: true,
240
241
  inputPlaceholder:
241
242
  '请描述样式要求,例如:用颜色区分状态,ACTIVE 显示绿色,INACTIVE 显示红色',
@@ -247,6 +248,7 @@ export function getInspectorActions(
247
248
  skill: 'page-i18n',
248
249
  promptTemplate: `修改 ${col(r, f)} 的显示名称(通过 i18n 翻译文件)`,
249
250
  requiresInput: true,
251
+ promptPrefix: '修改为:',
250
252
  inputPlaceholder:
251
253
  '请分别提供中文和英文名称,例如:\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
252
254
  promptSuffix:
@@ -255,7 +257,8 @@ export function getInspectorActions(
255
257
  {
256
258
  label: '固定列',
257
259
  skill: 'list-column-fixed',
258
- promptTemplate: `将 ${col(r, f)} 固定到左侧/右侧`,
260
+ promptTemplate: `将 ${col(r, f)} `,
261
+ promptPrefix: '固定到:',
259
262
  requiresInput: true,
260
263
  inputPlaceholder: '请指定固定方向:左 / 右',
261
264
  promptSuffix:
@@ -309,12 +312,13 @@ export function getInspectorActions(
309
312
  fieldSubMenu: 'add-before',
310
313
  },
311
314
  {
312
- label: '在列中添加关联字段',
315
+ label: '在列中添加关联表的字段',
313
316
  skill: 'list-extend-prisma-select',
314
- promptTemplate: `为 ${col(r, f)} 添加关联字段展示`,
317
+ promptTemplate: `为 ${col(r, f)} 添加关联表的字段展示`,
315
318
  requiresInput: true,
319
+ promptPrefix: '要添加的字段:',
316
320
  inputPlaceholder:
317
- '请描述要添加的关联字段,例如:添加 author.name 作者姓名',
321
+ '请描述要添加的关联字段,例如:author.name 作者姓名',
318
322
  promptSuffix:
319
323
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
320
324
  },
@@ -323,7 +327,7 @@ export function getInspectorActions(
323
327
  skill: null,
324
328
  requiresInput: true,
325
329
  promptTemplate: `对 ${r} 列表中的 "${f}" 列进行修改`,
326
- promptPrefix: '要求:\n',
330
+ promptPrefix: '具体要求:',
327
331
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
328
332
  promptSuffix:
329
333
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -351,6 +355,7 @@ export function getInspectorActions(
351
355
  skill: 'page-i18n',
352
356
  promptTemplate: `修改 ${formF(r, f)} 的显示名称(通过 i18n 翻译文件)`,
353
357
  requiresInput: true,
358
+ promptPrefix: '修改为:',
354
359
  inputPlaceholder:
355
360
  '请分别提供中文和英文名称,例如:\n中文:游戏名称\n英文:Game Name\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
356
361
  promptSuffix:
@@ -360,6 +365,7 @@ export function getInspectorActions(
360
365
  label: '字段旁添加帮助提示(含链接)',
361
366
  skill: 'form-field-tooltip',
362
367
  promptTemplate: `为 ${formF(r, f)} 添加 Tooltip 帮助提示(可包含链接)`,
368
+ promptPrefix: '要添加的提示内容:',
363
369
  requiresInput: true,
364
370
  inputPlaceholder:
365
371
  '请描述提示内容,例如:\n提示文字"详见配置文档",链接 https://docs.example.com\n或纯文字:此字段用于关联上游系统的唯一标识',
@@ -370,6 +376,7 @@ export function getInspectorActions(
370
376
  label: '字段联动(显/隐)',
371
377
  skill: 'form-field-dependencies',
372
378
  promptTemplate: `为 ${formF(r, f)} 添加联动依赖(显/隐依赖其他字段)`,
379
+ promptPrefix: '要添加的联动条件:',
373
380
  requiresInput: true,
374
381
  inputPlaceholder:
375
382
  '请描述联动条件,例如:当"类型"字段值为"高级"时才显示此字段',
@@ -380,6 +387,7 @@ export function getInspectorActions(
380
387
  label: '自定义校验逻辑',
381
388
  skill: 'form-custom-validator',
382
389
  promptTemplate: `为 ${formF(r, f)} 添加自定义校验规则`,
390
+ promptPrefix: '要添加的校验规则:',
383
391
  requiresInput: true,
384
392
  inputPlaceholder: '请描述校验规则,例如:必须是正整数且不超过 100',
385
393
  promptSuffix:
@@ -389,6 +397,7 @@ export function getInspectorActions(
389
397
  label: '改为级联选择器',
390
398
  skill: 'form-cascader-component',
391
399
  promptTemplate: `将 ${formF(r, f)} 替换为级联选择器`,
400
+ promptPrefix: '级联层级关系和数据来源:',
392
401
  requiresInput: true,
393
402
  inputPlaceholder:
394
403
  '请描述级联层级和数据来源,例如:省 → 市 → 区,数据来自 /api/regions',
@@ -406,6 +415,7 @@ export function getInspectorActions(
406
415
  label: '修改字段类型',
407
416
  skill: 'prisma-schema-update',
408
417
  promptTemplate: `修改 ${formF(r, f)} 的表单控件类型(@FormItem 注解)`,
418
+ promptPrefix: '修改为:',
409
419
  requiresInput: true,
410
420
  inputPlaceholder:
411
421
  '请说明要改为什么控件类型,例如:改为下拉选择(Select DRAFT|PUBLISHED)、改为开关(Boolean)、改为多行文本(Text)、改为数字输入框(Number)',
@@ -428,6 +438,7 @@ export function getInspectorActions(
428
438
  label: '字段选项从关联接口动态加载',
429
439
  skill: 'form-load-related-data',
430
440
  promptTemplate: `为 ${formF(r, f)} 的选项从关联接口动态加载`,
441
+ promptPrefix: '数据来源(接口):',
431
442
  requiresInput: true,
432
443
  inputPlaceholder:
433
444
  '请描述数据来源接口,例如:从 /api/games 加载游戏列表作为下拉选项',
@@ -435,9 +446,10 @@ export function getInspectorActions(
435
446
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
436
447
  },
437
448
  {
438
- label: '提交前/回填时转换字段数据',
449
+ label: '表单提交前转换字段数据',
439
450
  skill: 'form-data-transform',
440
- promptTemplate: `为 ${formF(r, f)} 添加数据转换逻辑(提交前或回填时)`,
451
+ promptTemplate: `为 ${formF(r, f)} 添加数据转换逻辑(表单提交前)`,
452
+ promptPrefix: '具体转换规则:',
441
453
  requiresInput: true,
442
454
  inputPlaceholder:
443
455
  '请描述转换规则,例如:提交前将数组转为逗号分隔字符串,回填时再拆回数组',
@@ -449,7 +461,7 @@ export function getInspectorActions(
449
461
  skill: null,
450
462
  requiresInput: true,
451
463
  promptTemplate: `对 ${r} 表单中的 "${f}" 字段进行修改`,
452
- promptPrefix: '要求:\n',
464
+ promptPrefix: '具体要求:',
453
465
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
454
466
  promptSuffix:
455
467
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -469,6 +481,7 @@ export function getInspectorActions(
469
481
  label: '修改字段值展示样式',
470
482
  skill: 'show-field-render',
471
483
  promptTemplate: `自定义 ${showF(r, f)} 的显示方式`,
484
+ promptPrefix: '具体要求:',
472
485
  requiresInput: true,
473
486
  inputPlaceholder:
474
487
  '请描述样式要求,例如:将 JSON 格式化展示,或用颜色标签渲染状态',
@@ -479,6 +492,7 @@ export function getInspectorActions(
479
492
  label: '修改描述(label)',
480
493
  skill: 'page-i18n',
481
494
  promptTemplate: `修改 ${showF(r, f)} 的标签名称(通过 i18n 翻译文件)`,
495
+ promptPrefix: '修改为:',
482
496
  requiresInput: true,
483
497
  inputPlaceholder:
484
498
  '请分别提供中文和英文名称,例如:\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
@@ -502,7 +516,7 @@ export function getInspectorActions(
502
516
  skill: null,
503
517
  requiresInput: true,
504
518
  promptTemplate: `对 ${r} 详情页的 "${f}" 字段进行修改`,
505
- promptPrefix: '要求:\n',
519
+ promptPrefix: '具体要求:',
506
520
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
507
521
  promptSuffix:
508
522
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -515,6 +529,7 @@ export function getInspectorActions(
515
529
  label: '增加 模糊匹配 过滤',
516
530
  skill: 'list-search-filter',
517
531
  promptTemplate: `为 ${r} 搜索栏添加模糊匹配过滤(通过修改ui配置)`,
532
+ promptPrefix: '要添加的字段:',
518
533
  requiresInput: true,
519
534
  inputPlaceholder: '请填写要添加模糊搜索的字段名,例如:name、title',
520
535
  promptSuffix:
@@ -524,9 +539,10 @@ export function getInspectorActions(
524
539
  label: '增加 下拉 过滤',
525
540
  skill: 'list-search-filter',
526
541
  promptTemplate: `为 ${r} 搜索栏添加 Select 下拉过滤`,
542
+ promptPrefix: '要添加的字段:',
527
543
  requiresInput: true,
528
544
  inputPlaceholder:
529
- '请填写字段名及选项来源,例如:字段 status,选项 ACTIVE|INACTIVE;或字段 gameId,选项来自关联表 game 的 name 字段',
545
+ '请填写字段名,例如:字段 status;或字段 gameId,选项来自关联表 game 的 name 字段',
530
546
  promptSuffix:
531
547
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
532
548
  },
@@ -534,9 +550,10 @@ export function getInspectorActions(
534
550
  label: '增加 checkbox 过滤',
535
551
  skill: 'list-search-filter',
536
552
  promptTemplate: `为 ${r} 搜索栏添加 Checkbox 多选过滤`,
553
+ promptPrefix: '要添加的字段:',
537
554
  requiresInput: true,
538
555
  inputPlaceholder:
539
- '请填写字段名及选项,例如:字段 category,选项:技术|产品|运营',
556
+ '请填写字段名及选项,例如:字段 category',
540
557
  promptSuffix:
541
558
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
542
559
  },
@@ -544,6 +561,7 @@ export function getInspectorActions(
544
561
  label: '增加 radio 过滤',
545
562
  skill: 'list-search-filter',
546
563
  promptTemplate: `为 ${r} 搜索栏添加 Radio 单选过滤`,
564
+ promptPrefix: '要添加的字段:',
547
565
  requiresInput: true,
548
566
  inputPlaceholder:
549
567
  '请填写字段名及选项,例如:字段 type,选项:全部|在线|离线',
@@ -554,6 +572,7 @@ export function getInspectorActions(
554
572
  label: '添加固定过滤(不可清除)',
555
573
  skill: 'list-search-filter',
556
574
  promptTemplate: `为 ${r} 列表页添加不可被用户清除的固定过滤条件(permanentFilter)`,
575
+ promptPrefix: '要添加的固定过滤条件:',
557
576
  requiresInput: true,
558
577
  inputPlaceholder:
559
578
  '请描述固定过滤条件,例如:始终只显示 status=ACTIVE 的数据,或按当前用户 ID 过滤',
@@ -564,6 +583,7 @@ export function getInspectorActions(
564
583
  label: '移除 过滤字段',
565
584
  skill: 'list-search-filter',
566
585
  promptTemplate: `从 ${r} 搜索栏删除过滤字段`,
586
+ promptPrefix: '要删除的过滤字段:',
567
587
  requiresInput: true,
568
588
  inputPlaceholder: '请填写要删除的过滤字段名',
569
589
  promptSuffix:
@@ -573,6 +593,7 @@ export function getInspectorActions(
573
593
  label: '修改描述(label)',
574
594
  skill: 'page-i18n',
575
595
  promptTemplate: `修改 ${r} 搜索栏某个过滤字段的显示名称(通过 i18n 翻译文件)`,
596
+ promptPrefix: '修改为:',
576
597
  requiresInput: true,
577
598
  inputPlaceholder:
578
599
  '请填写字段名,并分别提供中文和英文名称,例如:\n字段:status\n中文:审核状态\n英文:Review Status\n(翻译 key:resources.{resourceName}.fields.{fieldName})',
@@ -584,7 +605,7 @@ export function getInspectorActions(
584
605
  skill: null,
585
606
  requiresInput: true,
586
607
  promptTemplate: `对 ${r} 列表页的搜索栏进行修改`,
587
- promptPrefix: '要求:\n',
608
+ promptPrefix: '具体要求:',
588
609
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
589
610
  promptSuffix:
590
611
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -601,6 +622,7 @@ export function getInspectorActions(
601
622
  label: '按条件显示',
602
623
  skill: 'list-createbtn-customization',
603
624
  promptTemplate: `为 ${r} 列表页工具栏新建按钮添加条件显示逻辑`,
625
+ promptPrefix: '显示条件:',
604
626
  requiresInput: true,
605
627
  inputPlaceholder:
606
628
  '请描述显示条件,例如:仅角色为 GPU_ADMIN 时才显示新建按钮',
@@ -611,6 +633,7 @@ export function getInspectorActions(
611
633
  label: '修改描述(label)',
612
634
  skill: 'page-i18n',
613
635
  promptTemplate: `修改 ${r} 列表页工具栏新建按钮的显示名称(通过 i18n 翻译文件)`,
636
+ promptPrefix: '修改为:',
614
637
  requiresInput: true,
615
638
  inputPlaceholder:
616
639
  '请分别提供中文和英文,例如:\n中文:新建游戏\n英文:Create Game',
@@ -634,6 +657,7 @@ export function getInspectorActions(
634
657
  label: '按条件显示',
635
658
  skill: 'list-import-customization',
636
659
  promptTemplate: `为 ${r} 列表页工具栏添加按条件显示的 导入按钮`,
660
+ promptPrefix: '显示条件:',
637
661
  requiresInput: true,
638
662
  inputPlaceholder: '请描述显示条件',
639
663
  promptSuffix:
@@ -643,6 +667,7 @@ export function getInspectorActions(
643
667
  label: '修改描述(label)',
644
668
  skill: 'page-i18n',
645
669
  promptTemplate: `修改 ${r} 列表页工具栏导入按钮的显示名称(通过 i18n 翻译文件)`,
670
+ promptPrefix: '修改为:',
646
671
  requiresInput: true,
647
672
  inputPlaceholder: '请分别提供中文和英文',
648
673
  promptSuffix:
@@ -671,6 +696,7 @@ export function getInspectorActions(
671
696
  label: '按条件显示',
672
697
  skill: 'list-export-customization',
673
698
  promptTemplate: `为 ${r} 列表页工具栏添加按条件显示的 导出按钮`,
699
+ promptPrefix: '显示条件:',
674
700
  requiresInput: true,
675
701
  inputPlaceholder: '请描述显示条件',
676
702
  promptSuffix:
@@ -680,6 +706,7 @@ export function getInspectorActions(
680
706
  label: '修改描述(label)',
681
707
  skill: 'page-i18n',
682
708
  promptTemplate: `修改 ${r} 列表页工具栏导出按钮的显示名称(通过 i18n 翻译文件)`,
709
+ promptPrefix: '修改为:',
683
710
  requiresInput: true,
684
711
  inputPlaceholder: '请分别提供中文和英文',
685
712
  promptSuffix:
@@ -715,6 +742,7 @@ export function getInspectorActions(
715
742
  label: '修改描述(label)',
716
743
  skill: 'page-i18n',
717
744
  promptTemplate: `修改 ${r} 列表页工具栏刷新按钮的显示名称(通过 i18n 翻译文件)`,
745
+ promptPrefix: '修改为:',
718
746
  requiresInput: true,
719
747
  inputPlaceholder: '请分别提供中文和英文',
720
748
  promptSuffix:
@@ -748,7 +776,7 @@ export function getInspectorActions(
748
776
  skill: null,
749
777
  requiresInput: true,
750
778
  promptTemplate: `对 ${r} 列表页的工具栏区域(ListPageHeader 组件)进行修改`,
751
- promptPrefix: '要求:\n',
779
+ promptPrefix: '具体要求:',
752
780
  promptSuffix: `注意:ListPageHeader 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 ListPageHeader 的 render props 来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
753
781
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
754
782
  },
@@ -760,6 +788,7 @@ export function getInspectorActions(
760
788
  label: '添加操作按钮',
761
789
  skill: 'list-custom-row-actions',
762
790
  promptTemplate: `为 ${r} 列表页行操作添加自定义按钮(通过CHANGE_STATUS配置 或者 自定义行操作)`,
791
+ promptPrefix: '具体要求:',
763
792
  requiresInput: true,
764
793
  inputPlaceholder:
765
794
  '请描述按钮的名称、修改的状态字段和变更目标的值,例如:添加"发布"按钮,将 status 字段从 PENDING 改为 APPROVED' +
@@ -772,6 +801,7 @@ export function getInspectorActions(
772
801
  label: '添加 跳转至外部链接 按钮',
773
802
  skill: 'list-row-action-external',
774
803
  promptTemplate: `为 ${r} 列表页行操作添加跳转链接按钮`,
804
+ promptPrefix: '具体要求:',
775
805
  requiresInput: true,
776
806
  inputPlaceholder:
777
807
  '请描述按钮名称和跳转目标,例如:添加"查看报表"按钮,跳转到 /reports/:id',
@@ -782,6 +812,7 @@ export function getInspectorActions(
782
812
  label: '添加 跳转至站内页面 按钮',
783
813
  skill: 'list-row-action-link',
784
814
  promptTemplate: `为 ${r} 列表页行操作添加站内页面跳转按钮`,
815
+ promptPrefix: '具体要求:',
785
816
  requiresInput: true,
786
817
  inputPlaceholder:
787
818
  '请描述按钮名称和目标页面,例如:添加"查看详情"按钮,跳转到 /orders/:id/detail',
@@ -792,9 +823,10 @@ export function getInspectorActions(
792
823
  label: '按条件显示 编辑 按钮 ',
793
824
  skill: 'ui-config-update',
794
825
  promptTemplate: `为 ${r} 列表页的 编辑 按钮添加条件显示逻辑(EDIT)`,
826
+ promptPrefix: '显示条件:',
795
827
  requiresInput: true,
796
828
  inputPlaceholder:
797
- '请描述隐藏条件,例如:当 status 为 PUBLISHED 时隐藏 编辑 按钮',
829
+ '请描述显示条件,例如:当 status 为 PENDING 时显示 编辑 按钮',
798
830
  promptSuffix:
799
831
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
800
832
  },
@@ -803,7 +835,7 @@ export function getInspectorActions(
803
835
  skill: null,
804
836
  requiresInput: true,
805
837
  promptTemplate: `对 ${r} 列表页的行操作区域(RowActions 组件)进行修改`,
806
- promptPrefix: '要求:\n',
838
+ promptPrefix: '具体要求:',
807
839
  promptSuffix: `注意:RowActions 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 RowActions 的 render props 来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
808
840
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
809
841
  },
@@ -839,6 +871,7 @@ export function getInspectorActions(
839
871
  label: '添加(固定值,如状态)',
840
872
  skill: 'list-bulk-actions-batch-modify-modal',
841
873
  promptTemplate: `为 ${r} 列表页添加批量编辑弹窗(固定值)`,
874
+ promptPrefix: '具体要求:',
842
875
  requiresInput: true,
843
876
  inputPlaceholder:
844
877
  '请描述要批量修改的字段和固定值,例如:将 status 批量设为 PUBLISHED',
@@ -849,6 +882,7 @@ export function getInspectorActions(
849
882
  label: '添加(用户输入)',
850
883
  skill: 'list-bulk-actions-batch-modify-modal',
851
884
  promptTemplate: `为 ${r} 列表页添加批量编辑弹窗(用户输入)`,
885
+ promptPrefix: '具体要求:',
852
886
  requiresInput: true,
853
887
  inputPlaceholder:
854
888
  '请描述要批量编辑的字段,例如:让用户输入 remark 后批量更新',
@@ -889,7 +923,7 @@ export function getInspectorActions(
889
923
  skill: null,
890
924
  requiresInput: true,
891
925
  promptTemplate: `对 ${r} 列表页的批量操作区域(BulkActions 组件)进行修改`,
892
- promptPrefix: '要求:\n',
926
+ promptPrefix: '具体要求:',
893
927
  promptSuffix: `注意:BulkActions 是公共组件,不可直接修改其源码。\n请优先通过调整列表页中 BulkActions 的 render props(如 renderDeleteButton、extraActions 等)来实现;\n如果 render props 无法满足需求,再在列表页内创建局部组件来替代。\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动`,
894
928
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
895
929
  },
@@ -902,6 +936,7 @@ export function getInspectorActions(
902
936
  skill: 'header-customization',
903
937
  promptTemplate: `修改网站标题文字`,
904
938
  requiresInput: true,
939
+ promptPrefix: '修改为:',
905
940
  inputPlaceholder:
906
941
  '请描述修改内容,例如:\n- 改为"xxx 管理后台"\n- 隐藏标题只保留 Logo',
907
942
  promptSuffix:
@@ -912,6 +947,7 @@ export function getInspectorActions(
912
947
  skill: 'header-customization',
913
948
  promptTemplate: `修改网站 Logo`,
914
949
  requiresInput: true,
950
+ promptPrefix: '具体要求:',
915
951
  inputPlaceholder:
916
952
  '请描述修改内容,例如:\n- 替换为图片 Logo(提供图片路径或 URL)\n- 修改 Logo 颜色\n- 隐藏 Logo',
917
953
  promptSuffix:
@@ -922,7 +958,7 @@ export function getInspectorActions(
922
958
  skill: null,
923
959
  requiresInput: true,
924
960
  promptTemplate: `对页面标题和 Logo 区域进行修改`,
925
- promptPrefix: '要求:\n',
961
+ promptPrefix: '具体要求:',
926
962
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
927
963
  promptSuffix:
928
964
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -936,6 +972,7 @@ export function getInspectorActions(
936
972
  skill: 'header-customization',
937
973
  promptTemplate: `修改顶部导航的业务(游戏)选择器`,
938
974
  requiresInput: true,
975
+ promptPrefix: '具体要求:',
939
976
  inputPlaceholder:
940
977
  '请描述修改内容,例如:\n- 隐藏选择器\n- 修改宽度为 200px\n- 默认选中第一项',
941
978
  promptSuffix:
@@ -945,6 +982,7 @@ export function getInspectorActions(
945
982
  label: '修改语言切换',
946
983
  skill: 'header-customization',
947
984
  promptTemplate: `修改顶部导航的语言切换`,
985
+ promptPrefix: '具体要求:',
948
986
  requiresInput: true,
949
987
  inputPlaceholder:
950
988
  '请描述修改内容,例如:\n- 隐藏语言切换\n- 只保留中文,移除多语言切换',
@@ -956,6 +994,7 @@ export function getInspectorActions(
956
994
  skill: 'header-customization',
957
995
  promptTemplate: `修改顶部导航的用户信息区`,
958
996
  requiresInput: true,
997
+ promptPrefix: '具体要求:',
959
998
  inputPlaceholder:
960
999
  '请描述修改内容,例如:\n- 隐藏用户名,只显示头像\n- 隐藏头像和用户名\n- 点击用户名跳转到个人主页',
961
1000
  promptSuffix:
@@ -966,6 +1005,7 @@ export function getInspectorActions(
966
1005
  skill: 'header-customization',
967
1006
  promptTemplate: `修改顶部导航的整体样式`,
968
1007
  requiresInput: true,
1008
+ promptPrefix: '具体要求:',
969
1009
  inputPlaceholder:
970
1010
  '请描述修改内容,例如:\n- 背景色改为深色 #001529\n- 高度改为 48px\n- 左侧添加系统标题文字',
971
1011
  promptSuffix:
@@ -976,7 +1016,7 @@ export function getInspectorActions(
976
1016
  skill: null,
977
1017
  requiresInput: true,
978
1018
  promptTemplate: `对顶部导航栏(App Header 组件)进行修改`,
979
- promptPrefix: '要求:\n',
1019
+ promptPrefix: '具体要求:',
980
1020
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
981
1021
  promptSuffix:
982
1022
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -994,6 +1034,7 @@ export function getInspectorActions(
994
1034
  skill: 'show-readonly-header',
995
1035
  promptTemplate: `为 ${r} 详情页编辑按钮添加条件显示逻辑`,
996
1036
  requiresInput: true,
1037
+ promptPrefix: '显示条件:',
997
1038
  inputPlaceholder:
998
1039
  '请描述显示条件,例如:仅角色为 ADMIN 时才显示编辑按钮',
999
1040
  promptSuffix:
@@ -1003,6 +1044,7 @@ export function getInspectorActions(
1003
1044
  label: '修改描述(label)',
1004
1045
  skill: 'page-i18n',
1005
1046
  promptTemplate: `修改 ${r} 详情页编辑按钮的显示名称(通过 i18n 翻译文件)`,
1047
+ promptPrefix: '修改为:',
1006
1048
  requiresInput: true,
1007
1049
  inputPlaceholder:
1008
1050
  '请分别提供中文和英文,例如:\n中文:修改\n英文:Edit',
@@ -1033,6 +1075,7 @@ export function getInspectorActions(
1033
1075
  label: '显示(按条件)',
1034
1076
  skill: 'show-readonly-header',
1035
1077
  promptTemplate: `为 ${r} 详情页复制按钮添加条件显示逻辑`,
1078
+ promptPrefix: '显示条件:',
1036
1079
  requiresInput: true,
1037
1080
  inputPlaceholder: '请描述显示条件',
1038
1081
  promptSuffix:
@@ -1042,6 +1085,7 @@ export function getInspectorActions(
1042
1085
  label: '修改描述(label)',
1043
1086
  skill: 'page-i18n',
1044
1087
  promptTemplate: `修改 ${r} 详情页复制按钮的显示名称(通过 i18n 翻译文件)`,
1088
+ promptPrefix: '修改为:',
1045
1089
  requiresInput: true,
1046
1090
  inputPlaceholder:
1047
1091
  '请分别提供中文和英文,例如:\n中文:复制\n英文:Clone',
@@ -1064,7 +1108,8 @@ export function getInspectorActions(
1064
1108
  {
1065
1109
  label: '显示(按条件)',
1066
1110
  skill: 'show-readonly-header',
1067
- promptTemplate: `为 ${r} 详情页删除按钮添加条件显示逻辑`,
1111
+ promptTemplate: `为 ${r} 详情页删除按钮添加条件显示的逻辑`,
1112
+ promptPrefix: '具体逻辑为:',
1068
1113
  requiresInput: true,
1069
1114
  inputPlaceholder:
1070
1115
  '请描述显示条件,例如:当 status 为 PUBLISHED 时隐藏删除按钮',
@@ -1075,6 +1120,7 @@ export function getInspectorActions(
1075
1120
  label: '修改描述(label)',
1076
1121
  skill: 'page-i18n',
1077
1122
  promptTemplate: `修改 ${r} 详情页删除按钮的显示名称(通过 i18n 翻译文件)`,
1123
+ promptPrefix: '修改为:',
1078
1124
  requiresInput: true,
1079
1125
  inputPlaceholder:
1080
1126
  '请分别提供中文和英文,例如:\n中文:删除\n英文:Delete',
@@ -1105,6 +1151,7 @@ export function getInspectorActions(
1105
1151
  label: '修改描述(label)',
1106
1152
  skill: 'page-i18n',
1107
1153
  promptTemplate: `修改 ${r} 详情页刷新按钮的显示名称(通过 i18n 翻译文件)`,
1154
+ promptPrefix: '修改为:',
1108
1155
  requiresInput: true,
1109
1156
  inputPlaceholder:
1110
1157
  '请分别提供中文和英文,例如:\n中文:刷新\n英文:Refresh',
@@ -1124,7 +1171,7 @@ export function getInspectorActions(
1124
1171
  label: '添加 自定义操作按钮(可调接口)',
1125
1172
  skill: 'show-readonly-header',
1126
1173
  promptTemplate: `为 ${r} 详情页工具栏添加自定义操作按钮`,
1127
- promptPrefix: '要求:\n',
1174
+ promptPrefix: '具体要求:',
1128
1175
  requiresInput: true,
1129
1176
  inputPlaceholder:
1130
1177
  '请描述按钮名称和要调用的接口,例如:添加"审核通过"按钮,点击后调用 POST /api/approve/:id',
@@ -1143,7 +1190,7 @@ export function getInspectorActions(
1143
1190
  skill: null,
1144
1191
  requiresInput: true,
1145
1192
  promptTemplate: `对 ${r} 详情页的操作工具栏(show header 区域)进行修改`,
1146
- promptPrefix: '要求:\n',
1193
+ promptPrefix: '具体要求:',
1147
1194
  inputPlaceholder: '请描述你希望 AI 执行的自定义操作',
1148
1195
  promptSuffix:
1149
1196
  '\n你先理解下这个需求,然后找我澄清需求(非技术方案),我确认后再行动',
@@ -97,19 +97,36 @@ export default function DevShell() {
97
97
  });
98
98
  }, []);
99
99
 
100
+ // ── new-conversation + send prompt helper ───────────────────────────────
101
+ // Always start a fresh conversation before sending a prompt. Mirrors the
102
+ // SDK's own "新会话" button: `addConversation('新会话', true)` → emit
103
+ // NEW_CONVERSATION → sendUserPrompt. The second arg `true` forces creation
104
+ // even if the current conversation is empty (no id), so callers always get
105
+ // a fresh slate.
106
+ const startNewConversationAndSend = useCallback(
107
+ async (sdk: any, prompt: string) => {
108
+ await sdk.addConversation('新会话', true);
109
+ // const NEW_CONV = window.ChatSDK?.ChatEventKey?.NEW_CONVERSATION;
110
+ // if (NEW_CONV) sdk.emit(NEW_CONV, {});
111
+ return sdk.sendUserPrompt(prompt);
112
+ },
113
+ [],
114
+ );
115
+
100
116
  // ── send prompt helper ───────────────────────────────────────────────────
101
- const sendPromptToAgent = useCallback((prompt: string) => {
102
- setAgentVisible(true);
103
- const sdk = sdkRef.current;
104
- if (!sdk) return;
105
- setTimeout(() => {
106
- sdk
107
- .sendUserPrompt(prompt)
108
- .catch((err: any) =>
117
+ const sendPromptToAgent = useCallback(
118
+ (prompt: string) => {
119
+ setAgentVisible(true);
120
+ const sdk = sdkRef.current;
121
+ if (!sdk) return;
122
+ setTimeout(() => {
123
+ startNewConversationAndSend(sdk, prompt).catch((err: any) =>
109
124
  console.error('[DevShell] sendUserPrompt failed:', err),
110
125
  );
111
- }, 300);
112
- }, []);
126
+ }, 300);
127
+ },
128
+ [startNewConversationAndSend],
129
+ );
113
130
 
114
131
  // ── persist agent visibility ─────────────────────────────────────────────
115
132
  useEffect(() => {
@@ -124,7 +141,7 @@ export default function DevShell() {
124
141
  header: { logo: '', title: 'Coding Agent' },
125
142
  empty: '',
126
143
  streamingTimeout: 1800,
127
- initialConversation: true,
144
+ initialConversation: false,
128
145
  service: {
129
146
  agentId: import.meta.env.VITE_AGENT_ID,
130
147
  baseURL: import.meta.env.VITE_AGENT_BASE_URL,
@@ -189,8 +206,7 @@ export default function DevShell() {
189
206
  .catch(() => {})
190
207
  .finally(() => {
191
208
  setTimeout(() => {
192
- sdk
193
- .sendUserPrompt(data.payload)
209
+ startNewConversationAndSend(sdk, data.payload)
194
210
  .catch((err: any) =>
195
211
  console.error('[DevShell] sendUserPrompt failed:', err),
196
212
  )
@@ -203,11 +219,10 @@ export default function DevShell() {
203
219
  });
204
220
  } else {
205
221
  setTimeout(() => {
206
- sdk
207
- .sendUserPrompt(data.payload)
208
- .catch((err: any) =>
222
+ startNewConversationAndSend(sdk, data.payload).catch(
223
+ (err: any) =>
209
224
  console.error('[DevShell] sendUserPrompt failed:', err),
210
- );
225
+ );
211
226
  }, 300);
212
227
  }
213
228
  break;
@@ -290,7 +305,7 @@ export default function DevShell() {
290
305
  sdk.on(keys.STREAMING_STOP, handleStreamStop);
291
306
  }
292
307
 
293
- sdk.sendUserPrompt(data.prompt).catch((err: any) => {
308
+ startNewConversationAndSend(sdk, data.prompt).catch((err: any) => {
294
309
  cleanup();
295
310
  iframeRef.current?.contentWindow?.postMessage(
296
311
  {
@@ -308,7 +323,7 @@ export default function DevShell() {
308
323
  }
309
324
  window.addEventListener('message', handleMessage);
310
325
  return () => window.removeEventListener('message', handleMessage);
311
- }, [applyPageContext]);
326
+ }, [applyPageContext, startNewConversationAndSend]);
312
327
 
313
328
  // ── Escape key stops inspect ─────────────────────────────────────────────
314
329
  useEffect(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gadmin2n/schematics",
3
- "version": "0.0.82",
3
+ "version": "0.0.83",
4
4
  "description": "Gadmin - modern, fast, powerful node.js web framework (@schematics)",
5
5
  "main": "dist/index.js",
6
6
  "files": [