codewave-openclaw-installer 2.1.11 → 2.1.13

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.
Files changed (220) hide show
  1. package/bin/check.mjs +0 -0
  2. package/bin/install.mjs +0 -0
  3. package/package.json +1 -1
  4. package/skills/ppt-master/.env.example +35 -0
  5. package/skills/ppt-master/README.md +90 -0
  6. package/skills/ppt-master/SKILL.md +390 -17
  7. package/skills/ppt-master/audit_report_model_perf.md +213 -0
  8. package/skills/ppt-master/audit_report_portability.md +90 -0
  9. package/skills/ppt-master/audit_report_robustness.md +192 -0
  10. package/skills/ppt-master/audit_report_workflow.md +233 -0
  11. package/skills/ppt-master/fix_report_bid.md +51 -0
  12. package/skills/ppt-master/fix_report_scripts.md +41 -0
  13. package/skills/ppt-master/references/bid-content-example-netease.md +815 -0
  14. package/skills/ppt-master/references/bid-content-template.md +390 -0
  15. package/skills/ppt-master/references/bid-example-netease.md +339 -0
  16. package/skills/ppt-master/references/bid-presentation.md +384 -0
  17. package/skills/ppt-master/references/bid-svgs/03_toc.svg +38 -0
  18. package/skills/ppt-master/references/bid-svgs/04_chapter_company.svg +7 -0
  19. package/skills/ppt-master/references/bid-svgs/05_company_overview.svg +28 -0
  20. package/skills/ppt-master/references/bid-svgs/06_vision_business.svg +45 -0
  21. package/skills/ppt-master/references/bid-svgs/07_product_system.svg +52 -0
  22. package/skills/ppt-master/references/bid-svgs/08_codewave_timeline.svg +29 -0
  23. package/skills/ppt-master/references/bid-svgs/09_certifications.svg +33 -0
  24. package/skills/ppt-master/references/bid-svgs/10_client_logos.svg +25 -0
  25. package/skills/ppt-master/references/bid-svgs/11_brand_mission.svg +14 -0
  26. package/skills/ppt-master/references/bid-svgs/12_chapter_demand.svg +7 -0
  27. package/skills/ppt-master/references/bid-svgs/16_chapter_advantages.svg +7 -0
  28. package/skills/ppt-master/references/bid-svgs/18_platform_arch.svg +24 -0
  29. package/skills/ppt-master/references/bid-svgs/19_function_matrix.svg +35 -0
  30. package/skills/ppt-master/references/bid-svgs/20_dev_arch.svg +29 -0
  31. package/skills/ppt-master/references/bid-svgs/21_source_code.svg +25 -0
  32. package/skills/ppt-master/references/bid-svgs/22_ai_dev.svg +27 -0
  33. package/skills/ppt-master/references/bid-svgs/23_asset_market.svg +33 -0
  34. package/skills/ppt-master/references/bid-svgs/24_multi_org.svg +28 -0
  35. package/skills/ppt-master/references/bid-svgs/25_i18n.svg +22 -0
  36. package/skills/ppt-master/references/bid-svgs/26_multi_tenant.svg +25 -0
  37. package/skills/ppt-master/references/bid-svgs/27_integration.svg +27 -0
  38. package/skills/ppt-master/references/bid-svgs/28_permission.svg +31 -0
  39. package/skills/ppt-master/references/bid-svgs/29_security.svg +25 -0
  40. package/skills/ppt-master/references/bid-svgs/30_ai_capabilities.svg +21 -0
  41. package/skills/ppt-master/references/bid-svgs/31_product_combo.svg +25 -0
  42. package/skills/ppt-master/references/bid-svgs/32_digital_transform.svg +28 -0
  43. package/skills/ppt-master/references/bid-svgs/33_chapter_cases.svg +7 -0
  44. package/skills/ppt-master/references/bid-svgs/34_cummins_case.svg +23 -0
  45. package/skills/ppt-master/references/bid-svgs/35_cpq_cost.svg +22 -0
  46. package/skills/ppt-master/references/bid-svgs/36_tech_platform.svg +18 -0
  47. package/skills/ppt-master/references/bid-svgs/37_platform_value.svg +24 -0
  48. package/skills/ppt-master/references/bid-svgs/38_operation_plan.svg +25 -0
  49. package/skills/ppt-master/references/bid-svgs/39_zpmc_case.svg +21 -0
  50. package/skills/ppt-master/references/bid-svgs/40_zpmc_apps.svg +23 -0
  51. package/skills/ppt-master/references/bid-svgs/41_chapter_service.svg +7 -0
  52. package/skills/ppt-master/references/bid-svgs/42_tech_support.svg +24 -0
  53. package/skills/ppt-master/references/bid-svgs/43_knowledge_transfer.svg +25 -0
  54. package/skills/ppt-master/references/bid-svgs/44_operation_promotion.svg +20 -0
  55. package/skills/ppt-master/references/bid-svgs/45_custom_dev_guide.svg +24 -0
  56. package/skills/ppt-master/references/bid-svgs/46_sla_guarantee.svg +18 -0
  57. package/skills/ppt-master/references/bid-svgs/47_strategic_cooperation.svg +25 -0
  58. package/skills/ppt-master/references/bid-svgs/48_ecosystem.svg +24 -0
  59. package/skills/ppt-master/references/bid-svgs/49_chapter_delivery.svg +23 -0
  60. package/skills/ppt-master/references/bid-svgs/53_pm_intro.svg +24 -0
  61. package/skills/ppt-master/references/bid-svgs/54_after_sales.svg +27 -0
  62. package/skills/ppt-master/references/bid-svgs/55_ending.svg +8 -0
  63. package/skills/ppt-master/references/company_intro.md +93 -0
  64. package/skills/ppt-master/references/company_intro_images/slide1_img00.png +0 -0
  65. package/skills/ppt-master/references/company_intro_images/slide1_img01.png +0 -0
  66. package/skills/ppt-master/references/company_intro_images/slide1_img02.png +0 -0
  67. package/skills/ppt-master/references/company_intro_images/slide1_img03.png +0 -0
  68. package/skills/ppt-master/references/company_intro_images/slide1_img04.png +0 -0
  69. package/skills/ppt-master/references/company_intro_images/slide1_img05.png +0 -0
  70. package/skills/ppt-master/references/company_intro_images/slide1_img06.png +0 -0
  71. package/skills/ppt-master/references/company_intro_images/slide1_img07.png +0 -0
  72. package/skills/ppt-master/references/company_intro_images/slide1_img08.png +0 -0
  73. package/skills/ppt-master/references/company_intro_images/slide1_img09.png +0 -0
  74. package/skills/ppt-master/references/company_intro_images/slide1_img10.png +0 -0
  75. package/skills/ppt-master/references/company_intro_images/slide1_img11.png +0 -0
  76. package/skills/ppt-master/references/company_intro_images/slide1_img12.png +0 -0
  77. package/skills/ppt-master/references/company_intro_images/slide1_img13.png +0 -0
  78. package/skills/ppt-master/references/company_intro_images/slide1_img14.png +0 -0
  79. package/skills/ppt-master/references/company_intro_images/slide1_img15.png +0 -0
  80. package/skills/ppt-master/references/company_intro_images/slide1_img16.png +0 -0
  81. package/skills/ppt-master/references/company_intro_images/slide1_img17.png +0 -0
  82. package/skills/ppt-master/references/company_intro_images/slide1_img18.png +0 -0
  83. package/skills/ppt-master/references/company_intro_images/slide1_img19.png +0 -0
  84. package/skills/ppt-master/references/company_intro_images/slide1_img20.png +0 -0
  85. package/skills/ppt-master/references/company_intro_images/slide1_img21.png +0 -0
  86. package/skills/ppt-master/references/company_intro_images/slide1_img22.png +0 -0
  87. package/skills/ppt-master/references/company_intro_images/slide1_img23.png +0 -0
  88. package/skills/ppt-master/references/company_intro_images/slide1_img24.png +0 -0
  89. package/skills/ppt-master/references/company_intro_images/slide1_img25.png +0 -0
  90. package/skills/ppt-master/references/company_intro_images/slide1_img26.png +0 -0
  91. package/skills/ppt-master/references/company_intro_images/slide1_img27.png +0 -0
  92. package/skills/ppt-master/references/company_intro_images/slide1_img28.png +0 -0
  93. package/skills/ppt-master/references/company_intro_images/slide1_img29.png +0 -0
  94. package/skills/ppt-master/references/company_intro_images/slide2_img30.png +0 -0
  95. package/skills/ppt-master/references/company_intro_images/slide2_img31.jpg +0 -0
  96. package/skills/ppt-master/references/company_intro_images/slide3_img32.png +0 -0
  97. package/skills/ppt-master/references/company_intro_images/slide3_img33.png +0 -0
  98. package/skills/ppt-master/references/drawio-integration.md +144 -0
  99. package/skills/ppt-master/references/executor-base.md +3 -4
  100. package/skills/ppt-master/references/image-generator.md +93 -6
  101. package/skills/ppt-master/references/strategist.md +8 -5
  102. package/skills/ppt-master/requirements.txt +19 -0
  103. package/skills/ppt-master/resources/backgrounds/chapter_bg.png +0 -0
  104. package/skills/ppt-master/resources/backgrounds/company_bg.png +0 -0
  105. package/skills/ppt-master/resources/backgrounds/cover_bg.png +0 -0
  106. package/skills/ppt-master/resources/backgrounds/index.json +40 -0
  107. package/skills/ppt-master/resources/backgrounds/tech_bg.png +0 -0
  108. package/skills/ppt-master/scripts/README.md +1 -1
  109. package/skills/ppt-master/scripts/__pycache__/config.cpython-314.pyc +0 -0
  110. package/skills/ppt-master/scripts/__pycache__/error_helper.cpython-314.pyc +0 -0
  111. package/skills/ppt-master/scripts/__pycache__/pptx_animations.cpython-314.pyc +0 -0
  112. package/skills/ppt-master/scripts/__pycache__/project_utils.cpython-314.pyc +0 -0
  113. package/skills/ppt-master/scripts/arch_diagram.py +370 -0
  114. package/skills/ppt-master/scripts/bid_init.py +79 -0
  115. package/skills/ppt-master/scripts/drawio_gen.py +366 -0
  116. package/skills/ppt-master/scripts/drawio_to_svg.py +458 -0
  117. package/skills/ppt-master/scripts/finalize_svg.py +14 -0
  118. package/skills/ppt-master/scripts/image_backends/__pycache__/__init__.cpython-314.pyc +0 -0
  119. package/skills/ppt-master/scripts/image_backends/__pycache__/backend_aigw_gemini.cpython-314.pyc +0 -0
  120. package/skills/ppt-master/scripts/image_backends/__pycache__/backend_common.cpython-314.pyc +0 -0
  121. package/skills/ppt-master/scripts/svg_finalize/__pycache__/__init__.cpython-314.pyc +0 -0
  122. package/skills/ppt-master/scripts/svg_finalize/__pycache__/crop_images.cpython-314.pyc +0 -0
  123. package/skills/ppt-master/scripts/svg_finalize/__pycache__/embed_icons.cpython-314.pyc +0 -0
  124. package/skills/ppt-master/scripts/svg_finalize/__pycache__/embed_images.cpython-314.pyc +0 -0
  125. package/skills/ppt-master/scripts/svg_finalize/__pycache__/fix_image_aspect.cpython-314.pyc +0 -0
  126. package/skills/ppt-master/scripts/svg_finalize/__pycache__/flatten_tspan.cpython-314.pyc +0 -0
  127. package/skills/ppt-master/scripts/svg_finalize/__pycache__/svg_rect_to_path.cpython-314.pyc +0 -0
  128. package/skills/ppt-master/scripts/svg_page_gen.py +871 -0
  129. package/skills/ppt-master/scripts/svg_quality_checker.py +169 -8
  130. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/__init__.cpython-314.pyc +0 -0
  131. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_context.cpython-314.pyc +0 -0
  132. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_converter.cpython-314.pyc +0 -0
  133. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_elements.cpython-314.pyc +0 -0
  134. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_paths.cpython-314.pyc +0 -0
  135. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_styles.cpython-314.pyc +0 -0
  136. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/drawingml_utils.cpython-314.pyc +0 -0
  137. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_builder.cpython-314.pyc +0 -0
  138. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_cli.cpython-314.pyc +0 -0
  139. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_dimensions.cpython-314.pyc +0 -0
  140. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_discovery.cpython-314.pyc +0 -0
  141. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_media.cpython-314.pyc +0 -0
  142. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_notes.cpython-314.pyc +0 -0
  143. package/skills/ppt-master/scripts/svg_to_pptx/__pycache__/pptx_slide_xml.cpython-314.pyc +0 -0
  144. package/skills/ppt-master/scripts/svg_to_pptx/pptx_builder.py +7 -1
  145. package/skills/ppt-master/scripts/svg_to_pptx/pptx_cli.py +14 -0
  146. package/skills/risk-alert/SKILL.md +110 -0
  147. package/skills/risk-alert/config.example.json +21 -0
  148. package/skills/risk-alert/scheduler.sh +74 -0
  149. package/skills/risk-alert/scripts/analyze-risk.js +414 -0
  150. package/skills/risk-alert/scripts/config-manager.js +241 -0
  151. package/skills/risk-alert/scripts/push-beautiful.js +225 -0
  152. package/skills/risk-alert/scripts/risk-alert.js +136 -0
  153. package/skills/risk-alert/scripts/run-full.js +60 -0
  154. package/skills/risk-alert/trigger-risk-alert.sh +35 -0
  155. package/skills/ppt-master/projects/.gitkeep +0 -0
  156. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/01_cover.svg" → Technology Blue Business/01_cover.svg} +0 -0
  157. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/02_chapter.svg" → Technology Blue Business/02_chapter.svg} +0 -0
  158. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/02_toc.svg" → Technology Blue Business/02_toc.svg} +0 -0
  159. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/03_content.svg" → Technology Blue Business/03_content.svg} +0 -0
  160. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/04_ending.svg" → Technology Blue Business/04_ending.svg} +0 -0
  161. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246/design_spec.md" → Technology Blue Business/design_spec.md} +0 -0
  162. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246//351/207/215/345/272/206/345/244/247/345/255/246logo.png" → Technology Blue Business//316/230c/314/247i/314/200/317/203/342/225/221a/314/212/317/203n/314/203/302/272/317/203/302/241/302/252logo.png"} +0 -0
  163. /package/skills/ppt-master/templates/layouts/{/351/207/215/345/272/206/345/244/247/345/255/246//351/207/215/345/272/206/345/244/247/345/255/246logo2.png" → Technology Blue Business//316/230c/314/247i/314/200/317/203/342/225/221a/314/212/317/203n/314/203/302/272/317/203/302/241/302/252logo2.png"} +0 -0
  164. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/01_cover.svg" +0 -0
  165. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/02_chapter.svg" +0 -0
  166. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/02_toc.svg" +0 -0
  167. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/03_content.svg" +0 -0
  168. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/04_ending.svg" +0 -0
  169. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214 → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202}/design_spec.md" +0 -0
  170. /package/skills/ppt-master/templates/layouts//{346/213/233/345/225/206/351/223/266/350/241/214//346/213/233/345/225/206/351/223/266/350/241/214/345/205/254/345/217/270/351/207/221/350/236/215.png" → 302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202//302/265i/314/210/302/242/317/203o/314/200a/314/212/316/230o/314/202/342/225/242/316/246i/314/201i/314/202/317/203a/314/200/302/274/317/203A/314/212/342/225/225/316/230c/314/247/303/246/316/246/342/202/247i/314/200.png"} +0 -0
  171. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/01_cover.svg" +0 -0
  172. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/02_chapter.svg" +0 -0
  173. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/02_toc.svg" +0 -0
  174. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/03_content.svg" +0 -0
  175. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/04_ending.svg" +0 -0
  176. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/design_spec.md" +0 -0
  177. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241//345/217/263/344/270/212/350/247/222 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201//317/203A/314/212/342/224/202/316/243/342/225/225e/314/200/316/246/302/272/303/206 logo.png"} +0 -0
  178. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/225/206/345/212/241//345/244/247/345/236/213 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203o/314/200a/314/212/317/203e/314/200i/314/201//317/203n/314/203/302/272/317/203/342/202/247i/314/210 logo.png"} +0 -0
  179. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/01_cover.svg" +0 -0
  180. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/02_chapter.svg" +0 -0
  181. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/02_toc.svg" +0 -0
  182. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/03_content.svg" +0 -0
  183. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/04_ending.svg" +0 -0
  184. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/design_spec.md" +0 -0
  185. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204//345/217/263/344/270/212/350/247/222 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//317/203A/314/212/342/224/202/316/243/342/225/225e/314/200/316/246/302/272/303/206 logo.png"} +0 -0
  186. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/345/270/270/350/247/204//345/244/247/345/236/213 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//317/203n/314/203/302/272/317/203/342/202/247i/314/210 logo.png"} +0 -0
  187. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/01_cover.svg" +0 -0
  188. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/02_chapter.svg" +0 -0
  189. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/02_toc.svg" +0 -0
  190. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/03_content.svg" +0 -0
  191. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/04_ending.svg" +0 -0
  192. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/design_spec.md" +0 -0
  193. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243//345/217/263/344/270/212/350/247/222 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//317/203A/314/212/342/224/202/316/243/342/225/225e/314/200/316/246/302/272/303/206 logo.png"} +0 -0
  194. /package/skills/ppt-master/templates/layouts//{344/270/255/346/261/275/347/240/224_/347/216/260/344/273/243//345/244/247/345/236/213 logo.png" → 316/243/342/225/225/302/241/302/265/342/226/222/342/225/234/317/204a/314/201o/314/210_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//317/203n/314/203/302/272/317/203/342/202/247i/314/210 logo.png"} +0 -0
  195. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/01_cover.svg" +0 -0
  196. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/02_chapter.svg" +0 -0
  197. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/02_toc.svg" +0 -0
  198. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/03_content.svg" +0 -0
  199. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/04_ending.svg" +0 -0
  200. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210}/design_spec.md" +0 -0
  201. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204//346/260/264/347/224/265/344/270/211/345/261/200logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//302/265/342/226/221/342/224/244/317/204o/314/210/342/225/241/316/243/342/225/225e/314/210/317/203/342/226/222C/314/247logo.png"} +0 -0
  202. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204//344/270/255/345/233/275/346/260/264/345/212/241logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//316/243/342/225/225/302/241/317/203/302/242/342/225/234/302/265/342/226/221/342/224/244/317/203e/314/200i/314/201logo.png"} +0 -0
  203. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204//345/215/216/344/270/234/351/231/242logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//317/203i/314/200A/314/210/316/243/342/225/225/302/243/316/230O/314/210o/314/201logo.png"} +0 -0
  204. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/345/270/270/350/247/204//347/224/265/345/273/272logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/203/342/225/225/342/225/225/316/246/302/272a/314/210//317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221logo.png"} +0 -0
  205. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/01_cover.svg" +0 -0
  206. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/02_chapter.svg" +0 -0
  207. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/02_toc.svg" +0 -0
  208. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/03_content.svg" +0 -0
  209. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/04_ending.svg" +0 -0
  210. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243 → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201}/design_spec.md" +0 -0
  211. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243//346/260/264/347/224/265/344/270/211/345/261/200logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//302/265/342/226/221/342/224/244/317/204o/314/210/342/225/241/316/243/342/225/225e/314/210/317/203/342/226/222C/314/247logo.png"} +0 -0
  212. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243//344/270/255/345/233/275/346/260/264/345/212/241logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//316/243/342/225/225/302/241/317/203/302/242/342/225/234/302/265/342/226/221/342/224/244/317/203e/314/200i/314/201logo.png"} +0 -0
  213. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243//345/215/216/344/270/234/351/231/242logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//317/203i/314/200A/314/210/316/243/342/225/225/302/243/316/230O/314/210o/314/201logo.png"} +0 -0
  214. /package/skills/ppt-master/templates/layouts//{344/270/255/345/233/275/347/224/265/345/273/272_/347/216/260/344/273/243//347/224/265/345/273/272logo.png" → 316/243/342/225/225/302/241/317/203/302/242/342/225/234/317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221_/317/204A/314/210/342/226/221/316/243/342/225/227u/314/201//317/204o/314/210/342/225/241/317/203/342/225/227/342/225/221logo.png"} +0 -0
  215. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/01_cover.svg" +0 -0
  216. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/02_chapter.svg" +0 -0
  217. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/02_toc.svg" +0 -0
  218. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/03_content.svg" +0 -0
  219. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/04_ending.svg" +0 -0
  220. /package/skills/ppt-master/templates/layouts//{347/247/221/346/212/200/350/223/235/345/225/206/345/212/241 → 317/204/302/272/303/246/302/265e/314/200C/314/247/316/246o/314/202/302/245/317/203o/314/200a/314/212/317/203e/314/200i/314/201}/design_spec.md" +0 -0
@@ -0,0 +1,213 @@
1
+ # PPT Master — 审计报告 2: 模型兼容性 & 性能分析
2
+
3
+ > 审计时间: 2026-04-07 | 审计范围: SKILL.md + references/ + 工作流全链路
4
+
5
+ ---
6
+
7
+ ## A. 模型兼容性分析
8
+
9
+ ### A1. 每步骤上下文窗口需求
10
+
11
+ | Step | 必须加载的文件 | 字符数估算 | 最低上下文窗口 |
12
+ |------|---------------|-----------|---------------|
13
+ | **Step 1** (源内容处理) | SKILL.md | ~32K chars | 低 — 仅执行脚本命令 |
14
+ | **Step 3** (模板选择) | SKILL.md + layouts_index.json | ~35K chars | 低 |
15
+ | **Step 4** (Strategist) | SKILL.md + strategist.md + design_spec_reference.md + shared-standards.md + canvas-formats.md + 源文档内容 | **~80K chars + 源文档** | **🔴 高 — 最大瓶颈** |
16
+ | **Step 4.5** (述标) | + bid-presentation.md + bid-content-template.md | 再加 ~27K chars → **~107K chars** | **🔴 极高** |
17
+ | **Step 5** (图片生成) | SKILL.md + image-generator.md + design_spec | ~60K chars | 中 |
18
+ | **Step 6** (Executor) | SKILL.md + executor-base.md + executor-{style}.md + shared-standards.md + image-layout-spec.md + svg-image-embedding.md + design_spec + 源文档 | **~95K chars + 源文档** | **🔴 高** |
19
+ | **Step 7** (后处理) | SKILL.md(仅脚本命令) | ~32K chars | 低 — 仅运行脚本 |
20
+
21
+ **严重程度: 🔴 高**
22
+
23
+ **关键发现**: Step 4 (Strategist) 和 Step 6 (Executor) 是上下文窗口瓶颈。加上源文档内容(一般 10K-50K chars),总输入轻松超过 **150K chars (~60K tokens)**。述标场景 Step 4.5 更是达到 ~107K chars 仅参考文件就有。
24
+
25
+ **影响**:
26
+ - GPT-3.5 (4K/16K context): ❌ 完全不可用
27
+ - GPT-4 (8K/32K): ❌ 不可用(Strategist 阶段就会溢出)
28
+ - Claude Haiku (200K context): ✅ 窗口够,但质量存疑
29
+ - Claude Sonnet/Opus (200K): ✅ 推荐
30
+ - GPT-4o (128K): ⚠️ 勉强够用,述标场景可能吃紧
31
+ - Gemini 1.5/2.0 (1M+): ✅ 窗口充裕
32
+
33
+ ### A2. 特定模型能力依赖
34
+
35
+ | 依赖能力 | 用到的地方 | 模型限制 |
36
+ |---------|-----------|---------|
37
+ | **复杂结构化输出 (SVG)** | Step 6 Executor 生成完整 SVG 代码 | 🔴 核心依赖 — 弱模型生成的 SVG 质量极差 |
38
+ | **长文档理解** | Step 4 需理解全文并规划 55 页内容大纲 | 🟡 需要强推理能力 |
39
+ | **精确遵循格式规范** | design_spec.md 模板填写、SVG 坐标计算 | 🟡 弱模型容易偏离规范 |
40
+ | **子代理协作** | Step 6 分批并行生成 SVG | ⚠️ 依赖 OpenClaw subagent 能力,非模型特性 |
41
+ | **JSON 生成** | arch_diagram.py 的输入 JSON | 🟢 大多数模型可胜任 |
42
+
43
+ **未发现的依赖**: 无 Claude artifact、GPT function calling 等平台特定依赖。Skill 设计为模型无关,但**实际上强依赖高质量代码生成能力**。
44
+
45
+ ### A3. 弱模型可行性评估
46
+
47
+ | 模型 | Strategist (Step 4) | Executor (Step 6 SVG) | 总体可用性 |
48
+ |------|---------------------|----------------------|-----------|
49
+ | **GPT-3.5** | ❌ 上下文不够 | ❌ SVG 质量极差 | ❌ 不可用 |
50
+ | **Claude Haiku** | ⚠️ 能规划但深度不够 | ❌ SVG 坐标/布局频繁出错 | ❌ 不推荐 |
51
+ | **GPT-4o-mini** | ⚠️ 基本可用 | 🟡 简单页面可以,复杂布局出错率高 | ⚠️ 仅简单 PPT |
52
+ | **Claude Sonnet** | ✅ 良好 | ✅ SVG 质量好 | ✅ 推荐 |
53
+ | **Claude Opus** | ✅ 优秀 | ✅ SVG 质量最佳 | ✅ 最佳选择 |
54
+ | **GPT-4o** | ✅ 良好 | 🟡 SVG 中等,需更多修复 | 🟡 可用 |
55
+ | **Gemini 2.0 Flash** | ✅ 良好 | 🟡 SVG 质量参差 | 🟡 可用 |
56
+
57
+ **严重程度: 🟡 中**
58
+
59
+ **建议**: SKILL.md 应明确声明最低模型要求(如 "需要 Claude Sonnet 级别或更高"),避免用户用弱模型尝试后得到垃圾输出。
60
+
61
+ ### A4. SVG 质量与模型关系
62
+
63
+ SVG 生成是整个 Skill 质量的**核心决定因素**。差异表现在:
64
+
65
+ 1. **坐标精度**: 弱模型频繁出现文字超出 viewBox、元素重叠
66
+ 2. **CSS/样式**: 弱模型可能生成 `rgba()` 等不兼容语法(skill 已有 quality checker 处理)
67
+ 3. **布局合理性**: 强模型能生成视觉平衡的布局,弱模型倾向于堆砌元素
68
+ 4. **代码体积**: 弱模型生成冗余代码,单页 SVG 可能膨胀 2-3 倍
69
+
70
+ **严重程度: 🔴 高** — 这是用户体验的最大变量
71
+
72
+ ---
73
+
74
+ ## A5. References 文件大小统计
75
+
76
+ | 文件 | 字节数 | 字符数 | 用于步骤 |
77
+ |------|--------|--------|---------|
78
+ | bid-content-template.md | 31,796 | 18,740 | Step 4.5 |
79
+ | image-generator.md | 24,217 | 24,131 | Step 5 |
80
+ | strategist.md | 18,513 | 18,141 | Step 4 |
81
+ | shared-standards.md | 16,819 | 16,695 | Step 4, 6 |
82
+ | bid-presentation.md | 15,062 | 8,227 | Step 4.5 |
83
+ | executor-consultant-top.md | 10,349 | 9,889 | Step 6 |
84
+ | executor-base.md | 10,129 | 9,951 | Step 6 |
85
+ | executor-consultant.md | 7,180 | 7,122 | Step 6 |
86
+ | template-designer.md | 6,496 | 6,446 | 模板创建 |
87
+ | executor-general.md | 6,070 | 6,046 | Step 6 |
88
+ | svg-image-embedding.md | 6,089 | 6,039 | Step 6 |
89
+ | image-layout-spec.md | 5,620 | 5,600 | Step 6 |
90
+ | company_intro.md | 4,066 | 2,688 | 述标 |
91
+ | drawio-integration.md | 4,200 | 4,173 | Step 5 |
92
+ | canvas-formats.md | 2,902 | 2,828 | Step 4 |
93
+ | **合计** | **169,508** | **146,716** | |
94
+
95
+ 另外:
96
+ - SKILL.md: 37,759 bytes / 32,009 chars
97
+ - design_spec_reference.md: 9,726 bytes
98
+
99
+ **全部参考材料总计: ~217K bytes / ~188K chars**
100
+
101
+ ### A6. 55 页 PPT Token 估算
102
+
103
+ 假设:1 token ≈ 4 chars (英文) 或 ≈ 1.5 chars (中文混合)
104
+
105
+ | 阶段 | Input tokens | Output tokens | 说明 |
106
+ |------|-------------|---------------|------|
107
+ | **Step 4 Strategist** | ~80K | ~8K | 读参考文件 + 源文档 → 输出 design_spec |
108
+ | **Step 5 图片生成** | ~5K | ~2K | 仅生成 prompt(架构图是脚本生成) |
109
+ | **Step 6 Executor (55页)** | 55 × ~25K = **~1.4M** | 55 × ~8K = **~440K** | 每页需读 design_spec + 规范 + 生成 SVG |
110
+ | **Step 6 Speaker Notes** | ~60K | ~15K | 读所有 SVG + 生成讲稿 |
111
+ | **Step 7 后处理** | ~5K | ~1K | 仅运行脚本命令 |
112
+ | **总计** | **~1.55M** | **~466K** | |
113
+
114
+ **严重程度: 🔴 高**
115
+
116
+ **关键发现**:
117
+ - 一次完整 55 页 PPT 约消耗 **~2M tokens**(输入+输出)
118
+ - Step 6 占总消耗的 **~90%**
119
+ - 如果用 Claude Opus ($15/M input, $75/M output),单次生成成本约 **$15 input + $33 output = ~$48**
120
+ - 如果用 Claude Sonnet ($3/$15),约 **~$11.5**
121
+ - 如果用子代理分 3 批并行,总 token 不变但每个子代理的上下文更小(更高效)
122
+
123
+ ---
124
+
125
+ ## B. 性能瓶颈分析
126
+
127
+ ### B1. 每步骤预估耗时
128
+
129
+ | Step | 操作 | 快模型 (Sonnet) | 慢模型 (Opus) | 瓶颈类型 |
130
+ |------|------|----------------|---------------|---------|
131
+ | **1. 源内容处理** | 脚本转换 PDF/DOCX→MD | 5-15s | 5-15s | I/O |
132
+ | **2. 项目初始化** | 脚本创建目录 | 2-3s | 2-3s | I/O |
133
+ | **3. 模板选择** | ⛔ 用户交互 | 0s (人工) | 0s | 人工等待 |
134
+ | **4. Strategist** | 读文件 + 八项确认 + 输出 design_spec | 30-60s LLM + ⛔ 用户确认 | 60-120s LLM | **LLM** |
135
+ | **4.5 述标初始化** | bid_init.py 复制 46 SVG | 2-3s | 2-3s | I/O |
136
+ | **5. 图片生成** | arch_diagram.py + 可选 AI 生图 | 5-10s (架构图) + 20-25s/张 (AI) | 同左 | **API/脚本** |
137
+ | **6. Executor (55页)** | 生成 55 个 SVG + speaker notes | **15-25 min** | **30-50 min** | **🔴 LLM 主瓶颈** |
138
+ | **7. 后处理+导出** | 4 个脚本串行 | 20-40s | 20-40s | I/O/脚本 |
139
+
140
+ ### B2. 并行化分析
141
+
142
+ | 步骤 | 可否并行 | 当前实现 | 改进空间 |
143
+ |------|---------|---------|---------|
144
+ | Step 1-4 | ❌ 严格串行 | 串行 ✅ | 无(依赖上游输出) |
145
+ | **Step 5 图片 + Step 6 SVG** | ⚠️ 部分可并行 | 串行 ❌ | 🟡 架构图生成可与首批 SVG 并行 |
146
+ | **Step 6 SVG 页面间** | ✅ 可并行 | ✅ 已实现子代理 2-3 批 | 🟢 当前设计合理 |
147
+ | **Step 6 SVG + Speaker Notes** | ❌ Notes 依赖所有 SVG | 串行 ✅ | 无 |
148
+ | Step 7 各子步骤 | ❌ 串行依赖 | 串行 ✅ | 无(pipeline) |
149
+
150
+ **当前并行策略评价**: ✅ 已做了最关键的并行(Step 6 子代理分批生成 SVG),这是正确的。
151
+
152
+ ### B3. 55 页 PPT 总生成时间估算
153
+
154
+ #### 普通场景(自由设计,55 页)
155
+
156
+ | 阶段 | 快模型 (Sonnet) | 慢模型 (Opus) |
157
+ |------|----------------|---------------|
158
+ | Step 1-4 (含用户交互) | ~3 min | ~5 min |
159
+ | Step 5 (架构图 × 3) | ~30s | ~30s |
160
+ | **Step 6 (3 批子代理并行)** | **~8 min** | **~18 min** |
161
+ | Step 6 (Speaker Notes) | ~2 min | ~4 min |
162
+ | Step 7 (后处理+导出) | ~1 min | ~1 min |
163
+ | **总计** | **~15 min** | **~28 min** |
164
+
165
+ #### 述标场景(46 固定 + 9 动态)
166
+
167
+ | 阶段 | 快模型 | 慢模型 |
168
+ |------|--------|--------|
169
+ | Step 1-4.5 | ~3 min | ~5 min |
170
+ | **Step 6 (仅 9 页,无需子代理)** | **~3 min** | **~6 min** |
171
+ | Step 7 | ~1 min | ~1 min |
172
+ | **总计** | **~7 min** | **~12 min** |
173
+
174
+ **述标场景的 bid_init.py 优化非常有效**,将 Step 6 耗时削减 80%+。
175
+
176
+ ### B4. 图片生成耗时与优化
177
+
178
+ | 图片类型 | 当前耗时 | 优化空间 |
179
+ |---------|---------|---------|
180
+ | arch_diagram.py (本地) | ~2-5s/张 | 🟢 已经很快 |
181
+ | drawio_gen.py (本地) | ~3-5s/张 | 🟢 已经很快 |
182
+ | AI 背景图 (API) | ~20-25s/张 | 🟡 已有分类复用策略(6-8 张),合理 |
183
+ | AI 背景图 (全量) | 55 × 25s = ~23 min | ❌ Skill 已避免此情况 ✅ |
184
+
185
+ **评价**: 图片策略设计得当 — 架构图用本地脚本(快),背景图用分类复用(省),述标禁用 AI 生图(最快)。
186
+
187
+ ---
188
+
189
+ ## 发现汇总与改进建议
190
+
191
+ | # | 发现 | 严重程度 | 改进建议 |
192
+ |---|------|---------|---------|
193
+ | 1 | **无最低模型要求声明** | 🔴 高 | 在 SKILL.md 顶部添加 `## Prerequisites > Model: Claude Sonnet or equivalent (128K+ context, strong code gen)` |
194
+ | 2 | **Step 6 是绝对瓶颈** (55页 ~8-18min) | 🟡 中 | 当前子代理并行已是最佳方案;可考虑增加到 4-5 批(但受限于并发) |
195
+ | 3 | **单次生成 ~2M tokens** | 🟡 中 | 无法大幅削减(每页 SVG 需要规范上下文);可考虑让子代理只读 executor-base + 一个精简版 design_spec 摘要,而非全部参考文件 |
196
+ | 4 | **Strategist 阶段上下文过大** (~80K chars) | 🟡 中 | 可将 strategist.md 中不常用的部分拆为"高级参考"按需加载,减少默认上下文 |
197
+ | 5 | **述标场景 references 特别大** (~107K chars 仅参考文件) | 🟡 中 | bid-content-template.md (18K chars) 可拆分为固定模板数据文件 + 精简指引 |
198
+ | 6 | **弱模型 SVG 质量差无降级方案** | 🟡 中 | 可增加"简单模式":减少页面复杂度、使用更多模板、减少自由布局 |
199
+ | 7 | **子代理上下文重复传输** | 🟢 低 | 每个子代理都需读完整 design_spec + executor 规范;可考虑预生成精简版"子代理指令包" |
200
+ | 8 | **$48/次 (Opus) 成本较高** | 🟢 低 | Sonnet ~$11 已可接受;述标场景 ~$3-5 很经济 |
201
+ | 9 | **Step 5 和 Step 6 可部分并行** | 🟢 低 | 架构图生成可与首批非架构图页 SVG 并行,但收益有限(架构图本身很快) |
202
+
203
+ ---
204
+
205
+ ## 结论
206
+
207
+ **模型兼容性**: Skill 实际要求 **Claude Sonnet 级别或更高**(128K+ 上下文、强 SVG 代码生成能力)。弱模型不可用但 SKILL.md 未明确声明。
208
+
209
+ **性能**: Step 6 (Executor) 占总耗时 60-70%,已通过子代理并行优化。述标场景的 bid_init.py 是优秀的性能优化。55 页普通 PPT 约 15-28 分钟,述标 PPT 约 7-12 分钟,均在可接受范围。
210
+
211
+ **Token 消耗**: 55 页约 2M tokens,成本 $11-48 取决于模型。主要消耗在 Step 6 的重复上下文加载,有一定优化空间。
212
+
213
+ **最关键的改进**: 在 SKILL.md 中声明最低模型要求,避免用户无效尝试。
@@ -0,0 +1,90 @@
1
+ # PPT Master Skill - 可移植性 & 打包审计报告
2
+
3
+ **审计日期**: 2026-04-07
4
+ **审计范围**: `ppt-master` skill 目录
5
+
6
+ ---
7
+
8
+ ## 1. 依赖声明 🔴 阻塞
9
+
10
+ **问题**: 没有 `requirements.txt` 或任何依赖声明文件。
11
+
12
+ **扫描到的第三方 Python 依赖**(需 pip 安装):
13
+
14
+ | 包名 | 使用位置 |
15
+ |------|----------|
16
+ | `Pillow` (PIL) | `analyze_images.py`, `rotate_images.py` |
17
+ | `PyMuPDF` (fitz) | `pdf_to_md.py` |
18
+ | `numpy` | `scripts/*.py` |
19
+ | `python-pptx` | `svg_to_pptx/pptx_builder.py` |
20
+ | `google-genai` | `image_backends/backend_gemini.py` |
21
+ | `openai` | `image_backends/backend_openai.py` |
22
+ | `requests` | 多个 image backend |
23
+
24
+ **其他工具依赖**:
25
+ - `pandoc` (外部命令行工具) — `doc_to_md.py` 调用
26
+ - `Node.js` — `web_to_md.cjs` 需要
27
+
28
+ **修复建议**: 创建 `requirements.txt`,至少包含核心依赖;可选依赖用 `requirements-optional.txt` 或 extras。
29
+
30
+ ---
31
+
32
+ ## 2. 环境配置 🟢 没问题
33
+
34
+ - `.env.example` 存在且内容完整
35
+ - 列出了所有支持的 image backend 及对应 API key
36
+ - 有清晰的放置说明(`${SKILL_DIR}/../.env`)
37
+ - `config.py` 使用 `Path(__file__).parent.parent` 相对路径,无硬编码
38
+
39
+ ---
40
+
41
+ ## 3. 路径硬编码 🟢 没问题
42
+
43
+ 全面扫描所有 `.py` 和 `.md` 文件,**未发现任何硬编码的绝对路径**(如 `C:\Users\xxx` 或 `/home/xxx`)。
44
+
45
+ `config.py` 使用 `Path(__file__).parent.parent` 动态计算项目根目录,所有路径基于此相对构建。
46
+
47
+ ---
48
+
49
+ ## 4. 跨平台兼容性 🟢 没问题
50
+
51
+ - 使用 `pathlib.Path` 处理路径(跨平台安全)
52
+ - `subprocess.run` 仅用于调用 `pandoc`(跨平台工具),且有 `FileNotFoundError` 错误处理和多平台安装提示(macOS/Ubuntu/Windows)
53
+ - 无 Windows-only 或 Unix-only 的系统命令调用
54
+ - `web_to_md.cjs` 使用 Node.js(跨平台)
55
+
56
+ ---
57
+
58
+ ## 5. README / 入门文档 🟡 需改进
59
+
60
+ **现状**:
61
+ - `scripts/README.md` 有工具索引和 Quick Start 命令
62
+ - `scripts/docs/` 下有分主题文档
63
+ - `.env.example` 有注释说明
64
+ - 多个项目子目录有 `README.md`
65
+
66
+ **缺失**:
67
+ - **skill 根目录缺少 `README.md`** — 没有顶层入门文档
68
+ - 没有统一的"安装步骤"文档(安装 Python、pip install、pandoc 等)
69
+ - `SKILL.md` 是给 AI agent 看的,不是人类安装指南
70
+
71
+ **修复建议**: 在 skill 根目录创建 `README.md`,包含:
72
+ 1. 项目简介
73
+ 2. 系统要求(Python 3.x, Node.js, pandoc)
74
+ 3. 安装步骤(pip install -r requirements.txt)
75
+ 4. .env 配置说明
76
+ 5. 快速开始示例
77
+
78
+ ---
79
+
80
+ ## 总结
81
+
82
+ | 检查项 | 评级 | 说明 |
83
+ |--------|------|------|
84
+ | 依赖声明 | 🔴 阻塞 | 无 requirements.txt,别人无法知道要装什么包 |
85
+ | 环境配置 | 🟢 没问题 | .env.example 完整清晰 |
86
+ | 路径硬编码 | 🟢 没问题 | 全部使用相对路径 |
87
+ | 跨平台 | 🟢 没问题 | pathlib + 跨平台工具 |
88
+ | 入门文档 | 🟡 需改进 | 缺少根目录 README 和安装指南 |
89
+
90
+ **整体可移植性评分**: ⚠️ **有阻塞项** — 修复 `requirements.txt` 后基本可打包分发。
@@ -0,0 +1,192 @@
1
+ # PPT Master Skill 审计报告 3: 健壮性 & 通用性
2
+
3
+ **审计日期**: 2026-04-07
4
+ **审计范围**: scripts/*.py, scripts/image_backends/*.py, scripts/svg_finalize/*.py, scripts/svg_to_pptx/*.py, SKILL.md, references/*.md, templates/
5
+
6
+ ---
7
+
8
+ ## A. 健壮性检查
9
+
10
+ ### A1. 异常处理(try/except 覆盖率)
11
+
12
+ | 指标 | 数值 |
13
+ |------|------|
14
+ | 总脚本数(scripts/*.py) | 24 |
15
+ | 含 try/except 的脚本数 | 15 |
16
+ | **无任何 try/except 的脚本** | **9(37.5%)** |
17
+ | try 语句总数 | 59 |
18
+ | except 语句总数 | 64 |
19
+
20
+ **❌ 无异常处理的脚本**:
21
+
22
+ | 脚本 | 风险等级 | 说明 |
23
+ |------|----------|------|
24
+ | `arch_diagram.py` | 🟡 中 | 架构图生成核心脚本,JSON 解析、SVG 写入无保护 |
25
+ | `bid_init.py` | 🟡 中 | 述标初始化脚本,文件复制操作无保护 |
26
+ | `drawio_gen.py` | 🟡 中 | DrawIO 生成脚本,XML 构建无保护 |
27
+ | `drawio_to_svg.py` | 🟡 中 | DrawIO→SVG 转换,外部格式解析无保护 |
28
+ | `error_helper.py` | 🟢 低 | 错误辅助工具本身,可接受 |
29
+ | `gemini_watermark_remover.py` | 🟢 低 | 辅助工具 |
30
+ | `pptx_animations.py` | 🟡 中 | PPTX 动画处理 |
31
+ | `svg_page_gen.py` | 🔴 高 | **SVG 页面生成核心脚本**,文件读写、命令行解析无保护 |
32
+ | `svg_to_pptx.py` | 🔴 高 | **SVG→PPTX 转换入口脚本**,整个流程无保护 |
33
+
34
+ **建议**: `svg_page_gen.py` 和 `svg_to_pptx.py` 是流水线关键节点,崩溃会导致整个 PPT 生成失败,必须添加 try/except。
35
+
36
+ ### A2. API 调用超时和重试机制
37
+
38
+ **✅ 图片生成后端(优秀)**
39
+
40
+ 所有 13 个 image_backends 均实现了统一的重试机制:
41
+ - `backend_common.py` 定义 `MAX_RETRIES=3`, `RETRY_BASE_DELAY=10`, `RETRY_BACKOFF=2`
42
+ - 所有后端统一使用 `retry_delay()` 函数计算指数退避延迟
43
+ - HTTP 请求均设置了 `timeout`(180-300秒)
44
+ - 区分 rate-limit 错误和普通错误,分别处理
45
+ - 轮询模式(BFL/Replicate)有 `timeout_seconds=300` 上限
46
+
47
+ **❌ 非图片生成脚本**
48
+
49
+ | 脚本 | 问题 |
50
+ |------|------|
51
+ | `web_to_md.py` | ✅ 有 timeout=30 |
52
+ | `doc_to_md.py` | ❌ 调用 subprocess 无 timeout |
53
+ | `pdf_to_md.py` | ⚠️ 部分有 try/except,但无重试 |
54
+ | `arch_diagram.py` | ❌ 无任何超时/重试 |
55
+ | `drawio_gen.py` | ❌ 无任何超时/重试 |
56
+
57
+ ### A3. 文件 I/O 编码处理
58
+
59
+ **✅ 优秀 — 中文处理全面**
60
+
61
+ 统计发现 **70+ 处**显式使用 `encoding='utf-8'`,覆盖了所有文件读写操作:
62
+ - 所有 SVG 文件读写:✅ `encoding='utf-8'`
63
+ - 所有 Markdown 文件读写:✅ `encoding='utf-8'`
64
+ - PPTX XML 生成:✅ `encoding='UTF-8'`
65
+ - Web 抓取:✅ `response.apparent_encoding` 自动检测
66
+ - Windows 终端输出:✅ `svg_position_calculator.py` 专门处理了 `sys.stdout.reconfigure(encoding='utf-8')`
67
+ - `project_manager.py` 使用 `errors="replace"` 容错读取
68
+
69
+ **⚠️ 潜在问题**: 项目目录中大量文件名包含乱码(如 `svg_final\01_???????????.svg`),说明 Windows 上中文文件名存在编码问题。这是 Windows+PowerShell 的系统级问题,非脚本 bug,但仍影响可靠性。
70
+
71
+ ### A4. 进程中断恢复能力
72
+
73
+ **❌ 无中间状态保存机制**
74
+
75
+ - 没有检查点(checkpoint)文件记录已完成的步骤
76
+ - 没有"增量生成"逻辑(不会跳过已生成的 SVG)
77
+ - 如果在 30 页 SVG 生成到第 15 页时中断,需要全部重新生成
78
+ - `svg_to_pptx.py` 无断点续传能力
79
+
80
+ **缓解因素**:
81
+ - SKILL.md 中的流程设计将述标场景拆分为只需手动生成 9 页(其余 46 页由 `bid_init.py` 复制),降低了重新生成的成本
82
+ - 图片生成的结果保存在 `images/` 目录,不会丢失
83
+ - SVG 文件逐个保存,已生成的不会被覆盖
84
+
85
+ **建议**: 在 `finalize_svg.py` 和 `svg_to_pptx.py` 中添加"跳过已存在文件"逻辑。
86
+
87
+ ### A5. SKILL.md 中的 Fallback 策略
88
+
89
+ | 场景 | 是否有 Fallback | 描述 |
90
+ |------|-----------------|------|
91
+ | 图片生成失败 | ✅ 有 | "falls back to pure SVG design for that page. Image generation failure MUST NOT block the pipeline." |
92
+ | SVG 生成失败(单页) | ⚠️ 隐式 | 无显式 fallback 策略。如果某页 SVG 生成失败,SKILL.md 未说明是跳过还是重试 |
93
+ | 子 Agent 执行异常 | ✅ 有 | "If sub-agents fail, generate the 9 manual pages directly using `write` tool — do NOT retry sub-agents in a loop." |
94
+ | SVG 质量检查失败 | ✅ 有 | 提到 `--fix` 自动修复,以及手动修复指引 |
95
+ | PPTX 导出失败 | ❌ 无 | 无 fallback 策略 |
96
+
97
+ ---
98
+
99
+ ## B. 通用性检查
100
+
101
+ ### B1. 特定项目/公司名称硬编码扫描
102
+
103
+ **扫描关键词**: 星宇车灯、xingyuche、CodeWave、网易、NetEase
104
+
105
+ | 文件 | 匹配数 | 性质 |
106
+ |------|--------|------|
107
+ | `SKILL.md` | 1 | 示例中的 `"brand": "CodeWave"` — **仅作为 JSON 示例** |
108
+ | `bid-content-template.md` | **50+** | 🔴 **深度硬编码** — 整个 55 页述标内容模板全部写死为网易/CodeWave |
109
+ | `bid-presentation.md` | **30+** | 🔴 **深度硬编码** — 述标大纲结构中固化了网易公司信息 |
110
+ | `company_intro.md` | **15+** | 🔴 **完全硬编码** — 公司介绍3页全部是网易固定内容 |
111
+ | `references/bid-svgs/` | 55个SVG | 🔴 **完全硬编码** — 预制 SVG 全部包含网易/CodeWave 品牌内容 |
112
+ | `projects/` | 全部项目 | 仅作为历史项目存档,不影响通用性 |
113
+
114
+ **结论**:
115
+
116
+ - **自由设计模式(Free Design)**: ✅ **完全通用**。SKILL.md 的主流程不依赖特定公司,模板系统支持 21 种风格,用户可以用任何主题生成 PPT。
117
+ - **述标模式(Bid Presentation)**: ❌ **完全不通用**。55 页结构中 46 页是网易/CodeWave 的固定内容,仅适用于网易智企投标场景。如果用户要生成"医疗行业方案PPT",述标模式完全无法使用。
118
+
119
+ **"医疗行业方案PPT"可行性分析**:
120
+ - 使用 Free Design 模式:✅ 完全可行
121
+ - 使用述标模式:❌ 完全不可行(46页网易公司介绍内容无法替换)
122
+
123
+ ### B2. 模板系统检查
124
+
125
+ **✅ 模板系统设计良好**
126
+
127
+ | 维度 | 状态 | 详情 |
128
+ |------|------|------|
129
+ | 目录结构 | ✅ 规范 | `templates/layouts/` 按风格分目录,每个含 5 个标准 SVG + design_spec.md |
130
+ | 模板数量 | ✅ 丰富 | 21 种风格(品牌10 + 通用3 + 场景4 + 政务3 + 特殊1) |
131
+ | 索引文件 | ✅ 有 | `layouts_index.json` 提供机器可读的模板索引 |
132
+ | 标准文件 | ✅ 统一 | 每个模板必含 `01_cover.svg, 02_toc.svg, 02_chapter.svg, 03_content.svg, 04_ending.svg` |
133
+ | 自定义模板 | ✅ 支持 | `workflows/create-template.md` 提供模板创建工作流 |
134
+ | 模板切换 | ✅ 方便 | 只需在 Strategist 阶段选择不同 layout 名称 |
135
+ | 图表模板 | ✅ 丰富 | 33 种标准图表模板 |
136
+ | 图标库 | ✅ 丰富 | 640+ 矢量图标 |
137
+
138
+ **⚠️ netease_zhiqi 模板特殊性**: 该模板有 16 个 SVG(远多于标准 5 个),包含 `03_content_architecture.svg`、`03_content_bullet.svg` 等扩展页面类型。这些额外变体只在该模板中可用,其他模板不具备。
139
+
140
+ ### B3. bid-presentation.md 适配性分析
141
+
142
+ **❌ 述标流程极度 specific**
143
+
144
+ | 问题 | 严重程度 | 说明 |
145
+ |------|----------|------|
146
+ | 55 页固定结构 | 🔴 高 | 页面数量、顺序、章节划分全部写死 |
147
+ | 46/55 页为网易内容 | 🔴 高 | 公司介绍、产品功能、技术优势、案例全部是网易/CodeWave |
148
+ | 固定人名 | 🔴 高 | 项目团队页包含具体人名(如"陈飞") |
149
+ | 固定客户案例 | 🔴 高 | 康明斯、振华重工案例完全写死 |
150
+ | 固定数据 | 🔴 高 | "28年互联网发展史"、"~32000员工"等数据 |
151
+ | 预制 SVG | 🔴 高 | `references/bid-svgs/` 包含 55 个预制 SVG,全部为网易品牌 |
152
+
153
+ **能否适配不同类型的投标书?**
154
+
155
+ | 场景 | 可行性 | 工作量 |
156
+ |------|--------|--------|
157
+ | 网易智企其他项目投标 | ✅ 可行 | 仅需修改 9 个动态页 |
158
+ | 网易其他部门投标 | ⚠️ 部分可行 | 需修改产品介绍、案例等约 20 页 |
159
+ | 非网易公司投标 | ❌ 不可行 | 需重写 46 个固定页 + 所有预制 SVG |
160
+
161
+ ---
162
+
163
+ ## 综合评分
164
+
165
+ | 维度 | 评分 | 说明 |
166
+ |------|------|------|
167
+ | 异常处理 | ⭐⭐⭐☆☆ (3/5) | 关键脚本缺失,但 image_backends 做得好 |
168
+ | API 超时/重试 | ⭐⭐⭐⭐☆ (4/5) | 图片后端优秀,其他脚本欠缺 |
169
+ | 编码处理 | ⭐⭐⭐⭐⭐ (5/5) | 全面且一致 |
170
+ | 中断恢复 | ⭐⭐☆☆☆ (2/5) | 无检查点机制 |
171
+ | Fallback 策略 | ⭐⭐⭐⭐☆ (4/5) | 覆盖了主要场景 |
172
+ | 自由设计通用性 | ⭐⭐⭐⭐⭐ (5/5) | 模板丰富,完全通用 |
173
+ | 述标模式通用性 | ⭐☆☆☆☆ (1/5) | 完全绑定网易/CodeWave |
174
+ | 模板系统 | ⭐⭐⭐⭐⭐ (5/5) | 设计优秀,可扩展 |
175
+
176
+ ---
177
+
178
+ ## 优先修复建议
179
+
180
+ ### P0(关键)
181
+ 1. **`svg_to_pptx.py` 和 `svg_page_gen.py` 添加 try/except**:这两个是流水线出口,任何未捕获异常都会导致整个 PPT 生成失败
182
+ 2. **述标模式参数化**:将 `bid-content-template.md` 中的公司信息抽取为变量(公司名、产品名、案例等),支持通过配置文件替换
183
+
184
+ ### P1(重要)
185
+ 3. **添加增量生成逻辑**:在 `finalize_svg.py` 中检查 `svg_final/` 是否已有对应文件,跳过已完成的页面
186
+ 4. **`arch_diagram.py` 添加异常处理**:JSON 解析失败时给出明确错误信息
187
+ 5. **SVG 单页生成失败 fallback**:在 SKILL.md 中明确说明某页 SVG 生成失败时的处理策略(跳过/占位/重试)
188
+
189
+ ### P2(改进)
190
+ 6. **述标 SVG 预制件参数化**:将 `references/bid-svgs/` 中的 SVG 改为模板,支持变量替换
191
+ 7. **添加进度跟踪文件**:在项目目录中维护 `progress.json` 记录各步骤完成状态
192
+ 8. **`doc_to_md.py` subprocess 调用添加 timeout**