myagent-ai 1.26.3 → 1.26.5

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 (468) hide show
  1. package//"docs/351205215347275256344275277347224250350257264346230216.md/" +0 -0
  2. package/agents/main_agent.py +77 -43
  3. package/config.py +2 -2
  4. package/core/llm.py +23 -2
  5. package/core/output_parser.py +30 -2
  6. package/package.json +1 -1
  7. package/scripts/cli.py +18 -8
  8. package/skills/ASR/LICENSE.txt +0 -0
  9. package/skills/ASR/SKILL.md +0 -0
  10. package/skills/ASR/scripts/asr.ts +0 -0
  11. package/skills/LLM/LICENSE.txt +0 -0
  12. package/skills/LLM/SKILL.md +0 -0
  13. package/skills/LLM/scripts/chat.ts +0 -0
  14. package/skills/TTS/LICENSE.txt +0 -0
  15. package/skills/TTS/SKILL.md +0 -0
  16. package/skills/TTS/tts.ts +0 -0
  17. package/skills/VLM/LICENSE.txt +0 -0
  18. package/skills/VLM/SKILL.md +0 -0
  19. package/skills/VLM/scripts/vlm.ts +0 -0
  20. package/skills/__init__.py +0 -0
  21. package/skills/admin-manager/SKILL.md +0 -0
  22. package/skills/agent-browser/SKILL.md +0 -0
  23. package/skills/agent_tool_skill.py +0 -0
  24. package/skills/ai-news-collectors/SKILL.md +0 -0
  25. package/skills/ai-news-collectors/_meta.json +0 -0
  26. package/skills/ai-news-collectors/references/sources.md +0 -0
  27. package/skills/aminer-open-academic/SKILL.md +0 -0
  28. package/skills/aminer-open-academic/_meta.json +0 -0
  29. package/skills/aminer-open-academic/evals/evals.json +0 -0
  30. package/skills/aminer-open-academic/references/api-catalog.md +0 -0
  31. package/skills/aminer-open-academic/scripts/aminer_client.py +0 -0
  32. package/skills/auto-target-tracker/SKILL.md +0 -0
  33. package/skills/base.py +0 -0
  34. package/skills/blog-writer/2024-02-17-radical-transparency-sales.md +0 -0
  35. package/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +0 -0
  36. package/skills/blog-writer/2024-02-17-short-form-content-marketing.md +0 -0
  37. package/skills/blog-writer/2024-02-17-typing-speed-benefits.md +0 -0
  38. package/skills/blog-writer/2024-03-14-effective-ai-prompts.md +0 -0
  39. package/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +0 -0
  40. package/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +0 -0
  41. package/skills/blog-writer/README.md +0 -0
  42. package/skills/blog-writer/SKILL.md +0 -0
  43. package/skills/blog-writer/_meta.json +0 -0
  44. package/skills/blog-writer/manage_examples.py +0 -0
  45. package/skills/blog-writer/style-guide.md +0 -0
  46. package/skills/browser_skill.py +0 -0
  47. package/skills/charts/LICENSE.txt +0 -0
  48. package/skills/charts/SKILL.md +0 -0
  49. package/skills/charts/references/_rules.md +0 -0
  50. package/skills/charts/references/d3.md +0 -0
  51. package/skills/charts/references/echarts.md +0 -0
  52. package/skills/charts/references/matplotlib.md +0 -0
  53. package/skills/charts/references/mermaid.md +0 -0
  54. package/skills/charts/references/mindmap-css.md +0 -0
  55. package/skills/charts/references/playwright-css.md +0 -0
  56. package/skills/charts/references/radial-grid.md +0 -0
  57. package/skills/charts/references/seaborn.md +0 -0
  58. package/skills/charts/setup.sh +0 -0
  59. package/skills/chromedev_mcp.py +0 -0
  60. package/skills/coding-agent/SKILL.md +0 -0
  61. package/skills/coding-agent/_meta.json +0 -0
  62. package/skills/coding-agent/criteria.md +0 -0
  63. package/skills/coding-agent/execution.md +0 -0
  64. package/skills/coding-agent/memory-template.md +0 -0
  65. package/skills/coding-agent/planning.md +0 -0
  66. package/skills/coding-agent/state.md +0 -0
  67. package/skills/coding-agent/verification.md +0 -0
  68. package/skills/content-strategy/SKILL.md +0 -0
  69. package/skills/content-strategy/_meta.json +0 -0
  70. package/skills/contentanalysis/ExtractWisdom/SKILL.md +0 -0
  71. package/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +0 -0
  72. package/skills/contentanalysis/SKILL.md +0 -0
  73. package/skills/docx/LICENSE.txt +0 -0
  74. package/skills/docx/SKILL.md +0 -0
  75. package/skills/docx/references/chart-templates.md +0 -0
  76. package/skills/docx/references/common-rules.md +0 -0
  77. package/skills/docx/references/decorations.md +0 -0
  78. package/skills/docx/references/design-system.md +0 -0
  79. package/skills/docx/references/docx-js-advanced.md +0 -0
  80. package/skills/docx/references/docx-js-core.md +0 -0
  81. package/skills/docx/references/faq.md +0 -0
  82. package/skills/docx/references/math-formulas.md +0 -0
  83. package/skills/docx/references/ooxml.md +0 -0
  84. package/skills/docx/references/toc.md +0 -0
  85. package/skills/docx/routes/comment.md +0 -0
  86. package/skills/docx/routes/create.md +0 -0
  87. package/skills/docx/routes/edit.md +0 -0
  88. package/skills/docx/routes/format.md +0 -0
  89. package/skills/docx/routes/read.md +0 -0
  90. package/skills/docx/scenes/academic.md +0 -0
  91. package/skills/docx/scenes/contract.md +0 -0
  92. package/skills/docx/scenes/copywriting.md +0 -0
  93. package/skills/docx/scenes/exam.md +0 -0
  94. package/skills/docx/scenes/official-doc.md +0 -0
  95. package/skills/docx/scenes/report.md +0 -0
  96. package/skills/docx/scenes/resume.md +0 -0
  97. package/skills/docx/scripts/__init__.py +0 -0
  98. package/skills/docx/scripts/add_toc_placeholders.py +0 -0
  99. package/skills/docx/scripts/document.py +0 -0
  100. package/skills/docx/scripts/postcheck.py +0 -0
  101. package/skills/docx/scripts/templates/comments.xml +0 -0
  102. package/skills/docx/scripts/templates/commentsExtended.xml +0 -0
  103. package/skills/docx/scripts/templates/commentsExtensible.xml +0 -0
  104. package/skills/docx/scripts/templates/commentsIds.xml +0 -0
  105. package/skills/docx/scripts/templates/people.xml +0 -0
  106. package/skills/docx/scripts/utilities.py +0 -0
  107. package/skills/docx/setup.sh +0 -0
  108. package/skills/docx_skill.py +0 -0
  109. package/skills/dream-interpreter/SKILL.md +0 -0
  110. package/skills/dream-interpreter/assets/example_asset.txt +0 -0
  111. package/skills/dream-interpreter/references/api_reference.md +0 -0
  112. package/skills/dream-interpreter/references/interpretation-guide.md +0 -0
  113. package/skills/dream-interpreter/references/output-schema.md +0 -0
  114. package/skills/dream-interpreter/references/questioning-strategy.md +0 -0
  115. package/skills/dream-interpreter/references/visual-mapping.md +0 -0
  116. package/skills/dream-interpreter/scripts/example.py +0 -0
  117. package/skills/dream-interpreter/skill.json +0 -0
  118. package/skills/file_send.py +0 -0
  119. package/skills/file_skill.py +0 -0
  120. package/skills/finance/Finance_API_Doc.md +0 -0
  121. package/skills/finance/SKILL.md +0 -0
  122. package/skills/fullstack-dev/SKILL.md +0 -0
  123. package/skills/fullstack-dev/references/api-design.md +0 -0
  124. package/skills/fullstack-dev/references/auth-flow.md +0 -0
  125. package/skills/fullstack-dev/references/db-schema.md +0 -0
  126. package/skills/fullstack-dev/references/django-best-practices.md +0 -0
  127. package/skills/fullstack-dev/references/environment-management.md +0 -0
  128. package/skills/fullstack-dev/references/release-checklist.md +0 -0
  129. package/skills/fullstack-dev/references/technology-selection.md +0 -0
  130. package/skills/fullstack-dev/references/testing-strategy.md +0 -0
  131. package/skills/get-fortune-analysis/SKILL.md +0 -0
  132. package/skills/get-fortune-analysis/lunar_python.py +0 -0
  133. package/skills/gift-evaluator/SKILL.md +0 -0
  134. package/skills/gift-evaluator/html_tools.py +0 -0
  135. package/skills/gui_skill.py +0 -0
  136. package/skills/image-edit/LICENSE.txt +0 -0
  137. package/skills/image-edit/SKILL.md +0 -0
  138. package/skills/image-edit/scripts/image-edit.ts +0 -0
  139. package/skills/image-generation/LICENSE.txt +0 -0
  140. package/skills/image-generation/SKILL.md +0 -0
  141. package/skills/image-generation/scripts/image-generation.ts +0 -0
  142. package/skills/image-understand/LICENSE.txt +0 -0
  143. package/skills/image-understand/SKILL.md +0 -0
  144. package/skills/image-understand/scripts/image-understand.ts +0 -0
  145. package/skills/interview-designer/README.md +0 -0
  146. package/skills/interview-designer/SKILL.md +0 -0
  147. package/skills/interview-designer/_meta.json +0 -0
  148. package/skills/interview-designer/references/design_rationale.md +0 -0
  149. package/skills/interview-designer/templates/interview_guide_template.md +0 -0
  150. package/skills/market-research-reports/SKILL.md +0 -0
  151. package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +0 -0
  152. package/skills/market-research-reports/assets/market_report_template.tex +0 -0
  153. package/skills/market-research-reports/assets/market_research.sty +0 -0
  154. package/skills/market-research-reports/references/data_analysis_patterns.md +0 -0
  155. package/skills/market-research-reports/references/report_structure_guide.md +0 -0
  156. package/skills/market-research-reports/references/visual_generation_guide.md +0 -0
  157. package/skills/market-research-reports/scripts/generate_market_visuals.py +0 -0
  158. package/skills/marketing-mode/README.md +0 -0
  159. package/skills/marketing-mode/SKILL.md +0 -0
  160. package/skills/marketing-mode/_meta.json +0 -0
  161. package/skills/marketing-mode/mode-prompt.md +0 -0
  162. package/skills/marketing-mode/skill.json +0 -0
  163. package/skills/mindfulness-meditation/SKILL.md +0 -0
  164. package/skills/mindfulness-meditation/_meta.json +0 -0
  165. package/skills/multi-search-engine/CHANGELOG.md +0 -0
  166. package/skills/multi-search-engine/CHANNELLOG.md +0 -0
  167. package/skills/multi-search-engine/SKILL.md +0 -0
  168. package/skills/multi-search-engine/_meta.json +0 -0
  169. package/skills/multi-search-engine/config.json +0 -0
  170. package/skills/multi-search-engine/metadata.json +0 -0
  171. package/skills/multi-search-engine/references/international-search.md +0 -0
  172. package/skills/pdf/LICENSE.txt +0 -0
  173. package/skills/pdf/SKILL.md +0 -0
  174. package/skills/pdf/briefs/academic.md +0 -0
  175. package/skills/pdf/briefs/creative.md +0 -0
  176. package/skills/pdf/briefs/poster.md +0 -0
  177. package/skills/pdf/briefs/process-advanced.md +0 -0
  178. package/skills/pdf/briefs/process.md +0 -0
  179. package/skills/pdf/briefs/report.md +0 -0
  180. package/skills/pdf/configs/components.md +0 -0
  181. package/skills/pdf/configs/fonts.md +0 -0
  182. package/skills/pdf/configs/visual_framework.md +0 -0
  183. package/skills/pdf/references/resume-academic.tex +0 -0
  184. package/skills/pdf/references/resume-altacv.tex +0 -0
  185. package/skills/pdf/scripts/cover_validate.js +0 -0
  186. package/skills/pdf/scripts/design_engine.py +0 -0
  187. package/skills/pdf/scripts/html2pdf-next.js +0 -0
  188. package/skills/pdf/scripts/html2poster.js +0 -0
  189. package/skills/pdf/scripts/pdf.py +0 -0
  190. package/skills/pdf/scripts/pdf_qa.py +0 -0
  191. package/skills/pdf/scripts/poster_validate.py +0 -0
  192. package/skills/pdf/scripts/setup.sh +0 -0
  193. package/skills/pdf/scripts/toc_validate.py +0 -0
  194. package/skills/pdf/typesetting/charts.md +0 -0
  195. package/skills/pdf/typesetting/cover-backgrounds.md +0 -0
  196. package/skills/pdf/typesetting/cover.md +0 -0
  197. package/skills/pdf/typesetting/fill-engine.md +0 -0
  198. package/skills/pdf/typesetting/geometry.md +0 -0
  199. package/skills/pdf/typesetting/overflow.md +0 -0
  200. package/skills/pdf/typesetting/pagination.md +0 -0
  201. package/skills/pdf/typesetting/palette.md +0 -0
  202. package/skills/pdf/typesetting/typography.md +0 -0
  203. package/skills/pdf_skill.py +0 -0
  204. package/skills/podcast-generate/LICENSE.txt +0 -0
  205. package/skills/podcast-generate/SKILL.md +0 -0
  206. package/skills/podcast-generate/generate.ts +0 -0
  207. package/skills/podcast-generate/package.json +0 -0
  208. package/skills/podcast-generate/readme.md +0 -0
  209. package/skills/podcast-generate/test_data/segments.jsonl +0 -0
  210. package/skills/podcast-generate/tsconfig.json +0 -0
  211. package/skills/ppt/.claude/settings.local.json +0 -0
  212. package/skills/ppt/LICENSE.txt +0 -0
  213. package/skills/ppt/SKILL.md +0 -0
  214. package/skills/ppt/beamer.md +0 -0
  215. package/skills/ppt/components.md +0 -0
  216. package/skills/ppt/data-viz-components.md +0 -0
  217. package/skills/ppt/design-system.md +0 -0
  218. package/skills/ppt/html2pptx.md +0 -0
  219. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  220. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  221. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  222. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  223. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  224. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  225. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  226. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  227. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  228. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  229. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  230. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  231. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  232. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  233. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  234. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  235. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  236. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  237. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  238. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  239. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  240. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  241. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  242. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  243. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  244. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  245. package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  246. package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  247. package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  248. package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  249. package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  250. package/skills/ppt/ooxml/schemas/mce/mc.xsd +0 -0
  251. package/skills/ppt/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
  252. package/skills/ppt/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
  253. package/skills/ppt/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
  254. package/skills/ppt/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
  255. package/skills/ppt/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
  256. package/skills/ppt/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  257. package/skills/ppt/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
  258. package/skills/ppt/ooxml/scripts/pack.py +0 -0
  259. package/skills/ppt/ooxml/scripts/unpack.py +0 -0
  260. package/skills/ppt/ooxml/scripts/validate.py +0 -0
  261. package/skills/ppt/ooxml/scripts/validation/__init__.py +0 -0
  262. package/skills/ppt/ooxml/scripts/validation/base.py +0 -0
  263. package/skills/ppt/ooxml/scripts/validation/docx.py +0 -0
  264. package/skills/ppt/ooxml/scripts/validation/pptx.py +0 -0
  265. package/skills/ppt/ooxml/scripts/validation/redlining.py +0 -0
  266. package/skills/ppt/ooxml.md +0 -0
  267. package/skills/ppt/references/beamer.md +0 -0
  268. package/skills/ppt/references/latex.md +0 -0
  269. package/skills/ppt/references/paper-navbar.tex +0 -0
  270. package/skills/ppt/references/progress-navbar.tex +0 -0
  271. package/skills/ppt/scripts/html2pptx.js +0 -0
  272. package/skills/ppt/scripts/inventory.py +0 -0
  273. package/skills/ppt/scripts/pdf.py +0 -0
  274. package/skills/ppt/scripts/rearrange.py +0 -0
  275. package/skills/ppt/scripts/replace.py +0 -0
  276. package/skills/ppt/scripts/tectonic +0 -0
  277. package/skills/ppt/scripts/thumbnail.py +0 -0
  278. package/skills/ppt/setup.sh +0 -0
  279. package/skills/ppt/themes.md +0 -0
  280. package/skills/ppt_skill.py +0 -0
  281. package/skills/qingyan-research/SKILL.md +0 -0
  282. package/skills/qingyan-research/generate_html.py +0 -0
  283. package/skills/registry.py +0 -0
  284. package/skills/search_skill.py +0 -0
  285. package/skills/seo-content-writer/SKILL.md +0 -0
  286. package/skills/seo-content-writer/_meta.json +0 -0
  287. package/skills/seo-content-writer/references/content-structure-templates.md +0 -0
  288. package/skills/seo-content-writer/references/title-formulas.md +0 -0
  289. package/skills/skill-creator/LICENSE.txt +0 -0
  290. package/skills/skill-creator/SKILL.md +0 -0
  291. package/skills/skill-creator/agents/analyzer.md +0 -0
  292. package/skills/skill-creator/agents/comparator.md +0 -0
  293. package/skills/skill-creator/agents/grader.md +0 -0
  294. package/skills/skill-creator/assets/eval_review.html +0 -0
  295. package/skills/skill-creator/eval-viewer/generate_review.py +0 -0
  296. package/skills/skill-creator/eval-viewer/viewer.html +0 -0
  297. package/skills/skill-creator/references/schemas.md +0 -0
  298. package/skills/skill-creator/scripts/__init__.py +0 -0
  299. package/skills/skill-creator/scripts/aggregate_benchmark.py +0 -0
  300. package/skills/skill-creator/scripts/generate_report.py +0 -0
  301. package/skills/skill-creator/scripts/improve_description.py +0 -0
  302. package/skills/skill-creator/scripts/package_skill.py +0 -0
  303. package/skills/skill-creator/scripts/quick_validate.py +0 -0
  304. package/skills/skill-creator/scripts/run_eval.py +0 -0
  305. package/skills/skill-creator/scripts/run_loop.py +0 -0
  306. package/skills/skill-creator/scripts/utils.py +0 -0
  307. package/skills/skill-finder-cn/SKILL.md +0 -0
  308. package/skills/skill-finder-cn/_meta.json +0 -0
  309. package/skills/skill-finder-cn/package.json +0 -0
  310. package/skills/skill-finder-cn/scripts/search.sh +0 -0
  311. package/skills/skill-vetter/SKILL.md +0 -0
  312. package/skills/stock-analysis-skill/SKILL.md +0 -0
  313. package/skills/stock-analysis-skill/package.json +0 -0
  314. package/skills/stock-analysis-skill/src/analyzer.ts +0 -0
  315. package/skills/stock-analysis-skill/src/dataFetcher.ts +0 -0
  316. package/skills/stock-analysis-skill/src/dividend.ts +0 -0
  317. package/skills/stock-analysis-skill/src/index.ts +0 -0
  318. package/skills/stock-analysis-skill/src/rumorScanner.ts +0 -0
  319. package/skills/stock-analysis-skill/src/types.ts +0 -0
  320. package/skills/stock-analysis-skill/src/watchlist.ts +0 -0
  321. package/skills/stock-analysis-skill/tsconfig.json +0 -0
  322. package/skills/storyboard-manager/SKILL.md +0 -0
  323. package/skills/storyboard-manager/index.js +0 -0
  324. package/skills/storyboard-manager/package.json +0 -0
  325. package/skills/storyboard-manager/references/character_development.md +0 -0
  326. package/skills/storyboard-manager/references/story_structures.md +0 -0
  327. package/skills/storyboard-manager/scripts/consistency_checker.py +0 -0
  328. package/skills/storyboard-manager/scripts/timeline_tracker.py +0 -0
  329. package/skills/system_skill.py +0 -0
  330. package/skills/ui-ux-pro-max/SKILL.md +0 -0
  331. package/skills/ui-ux-pro-max/_meta.json +0 -0
  332. package/skills/ui-ux-pro-max/assets/data/charts.csv +0 -0
  333. package/skills/ui-ux-pro-max/assets/data/colors.csv +0 -0
  334. package/skills/ui-ux-pro-max/assets/data/icons.csv +0 -0
  335. package/skills/ui-ux-pro-max/assets/data/landing.csv +0 -0
  336. package/skills/ui-ux-pro-max/assets/data/products.csv +0 -0
  337. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +0 -0
  338. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +0 -0
  339. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +0 -0
  340. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +0 -0
  341. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +0 -0
  342. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +0 -0
  343. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +0 -0
  344. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +0 -0
  345. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +0 -0
  346. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +0 -0
  347. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +0 -0
  348. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +0 -0
  349. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +0 -0
  350. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +0 -0
  351. package/skills/ui-ux-pro-max/assets/data/styles.csv +0 -0
  352. package/skills/ui-ux-pro-max/assets/data/typography.csv +0 -0
  353. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +0 -0
  354. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +0 -0
  355. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +0 -0
  356. package/skills/ui-ux-pro-max/data/charts.csv +0 -0
  357. package/skills/ui-ux-pro-max/data/colors.csv +0 -0
  358. package/skills/ui-ux-pro-max/data/icons.csv +0 -0
  359. package/skills/ui-ux-pro-max/data/landing.csv +0 -0
  360. package/skills/ui-ux-pro-max/data/products.csv +0 -0
  361. package/skills/ui-ux-pro-max/data/react-performance.csv +0 -0
  362. package/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -0
  363. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -0
  364. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -0
  365. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -0
  366. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -0
  367. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -0
  368. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -0
  369. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -0
  370. package/skills/ui-ux-pro-max/data/stacks/react.csv +0 -0
  371. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -0
  372. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -0
  373. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -0
  374. package/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -0
  375. package/skills/ui-ux-pro-max/data/styles.csv +0 -0
  376. package/skills/ui-ux-pro-max/data/typography.csv +0 -0
  377. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -0
  378. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -0
  379. package/skills/ui-ux-pro-max/data/web-interface.csv +0 -0
  380. package/skills/ui-ux-pro-max/references/upstream-README.md +0 -0
  381. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +0 -0
  382. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  383. package/skills/ui-ux-pro-max/scripts/core.py +0 -0
  384. package/skills/ui-ux-pro-max/scripts/design_system.py +0 -0
  385. package/skills/ui-ux-pro-max/scripts/search.py +0 -0
  386. package/skills/video-generation/LICENSE.txt +0 -0
  387. package/skills/video-generation/SKILL.md +0 -0
  388. package/skills/video-generation/scripts/video.ts +0 -0
  389. package/skills/video-understand/LICENSE.txt +0 -0
  390. package/skills/video-understand/SKILL.md +0 -0
  391. package/skills/video-understand/scripts/video-understand.ts +0 -0
  392. package/skills/visual-design-foundations/SKILL.md +0 -0
  393. package/skills/visual-design-foundations/references/color-systems.md +0 -0
  394. package/skills/visual-design-foundations/references/spacing-iconography.md +0 -0
  395. package/skills/visual-design-foundations/references/typography-systems.md +0 -0
  396. package/skills/web-reader/LICENSE.txt +0 -0
  397. package/skills/web-reader/SKILL.md +0 -0
  398. package/skills/web-reader/scripts/web-reader.ts +0 -0
  399. package/skills/web-search/LICENSE.txt +0 -0
  400. package/skills/web-search/SKILL.md +0 -0
  401. package/skills/web-search/scripts/web_search.ts +0 -0
  402. package/skills/web-shader-extractor/SKILL.md +0 -0
  403. package/skills/web-shader-extractor/references/config-extraction.md +0 -0
  404. package/skills/web-shader-extractor/references/encoded-definitions.md +0 -0
  405. package/skills/web-shader-extractor/references/extraction-workflow.md +0 -0
  406. package/skills/web-shader-extractor/references/porting-strategy.md +0 -0
  407. package/skills/web-shader-extractor/references/shader-injection.md +0 -0
  408. package/skills/web-shader-extractor/references/shaders-com.md +0 -0
  409. package/skills/web-shader-extractor/references/tech-signatures.md +0 -0
  410. package/skills/web-shader-extractor/references/tsl-extraction.md +0 -0
  411. package/skills/web-shader-extractor/references/unicorn-studio.md +0 -0
  412. package/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +0 -0
  413. package/skills/web-shader-extractor/scripts/scan-bundle.sh +0 -0
  414. package/skills/writing-plans/SKILL.md +0 -0
  415. package/skills/writing-plans/_meta.json +0 -0
  416. package/skills/xlsx/LICENSE.txt +0 -0
  417. package/skills/xlsx/SKILL.md +0 -0
  418. package/skills/xlsx/engines/chart-templates.md +0 -0
  419. package/skills/xlsx/engines/chart.md +0 -0
  420. package/skills/xlsx/engines/design.md +0 -0
  421. package/skills/xlsx/engines/vba-templates.md +0 -0
  422. package/skills/xlsx/quality/pipeline.md +0 -0
  423. package/skills/xlsx/scenes/advanced.md +0 -0
  424. package/skills/xlsx/scenes/analyze-recipes.md +0 -0
  425. package/skills/xlsx/scenes/analyze.md +0 -0
  426. package/skills/xlsx/scenes/convert.md +0 -0
  427. package/skills/xlsx/scenes/create.md +0 -0
  428. package/skills/xlsx/scenes/edit-patterns.md +0 -0
  429. package/skills/xlsx/scenes/edit.md +0 -0
  430. package/skills/xlsx/scenes/finance.md +0 -0
  431. package/skills/xlsx/scenes/finance_lite.md +0 -0
  432. package/skills/xlsx/scenes/vba.md +0 -0
  433. package/skills/xlsx/setup.sh +0 -0
  434. package/skills/xlsx/templates/base.py +0 -0
  435. package/skills/xlsx/templates/palettes.py +0 -0
  436. package/skills/xlsx/xlsx.py +0 -0
  437. package/skills/xlsx_skill.py +0 -0
  438. package/web/__init__.py +0 -0
  439. package/web/api_server.py +0 -0
  440. package/web/tts_handler.py +0 -0
  441. package/web/ui/admin/admin-agentchat.js +0 -0
  442. package/web/ui/admin/admin-agents.js +0 -0
  443. package/web/ui/admin/admin-core.js +0 -0
  444. package/web/ui/admin/admin-dashboard.js +0 -0
  445. package/web/ui/admin/admin-executor.js +0 -0
  446. package/web/ui/admin/admin-files.js +0 -0
  447. package/web/ui/admin/admin-llm.js +0 -0
  448. package/web/ui/admin/admin-logs.js +0 -0
  449. package/web/ui/admin/admin-memory.js +0 -0
  450. package/web/ui/admin/admin-org.js +0 -0
  451. package/web/ui/admin/admin-permissions.js +0 -0
  452. package/web/ui/admin/admin-platforms.js +0 -0
  453. package/web/ui/admin/admin-sessions.js +0 -0
  454. package/web/ui/admin/admin-skills.js +0 -0
  455. package/web/ui/admin/admin-system.js +0 -0
  456. package/web/ui/admin/admin-tasks.js +0 -0
  457. package/web/ui/chat/chat.css +0 -0
  458. package/web/ui/chat/chat.js +0 -0
  459. package/web/ui/chat/chat_container.html +0 -0
  460. package/web/ui/chat/chat_main.js +0 -0
  461. package/web/ui/chat/flow_engine.js +0 -0
  462. package/web/ui/chat/groupchat.js +0 -0
  463. package/web/ui/chat/left_sessions.html +0 -0
  464. package/web/ui/chat/middle_chat.html +0 -0
  465. package/web/ui/chat/right_agents.html +0 -0
  466. package/web/ui/index.html +0 -0
  467. package/worklog-v1.22.md +0 -0
  468. package/worklog.md +0 -0
@@ -45,7 +45,7 @@ class MainAgent(BaseAgent):
45
45
 
46
46
  严格以XML格式化输出以下内容,否则解析器无法解析:"""
47
47
 
48
- # XML 输出格式规范(头部嵌入 SYSTEM_PROMPT,尾部在 _process_v2_inner 中再次追加,一头一尾确保格式正确)
48
+ # XML 输出格式规范(嵌入 SYSTEM_PROMPT,只出现一次)
49
49
  xml_prompt = """
50
50
 
51
51
  <output>
@@ -118,7 +118,7 @@ GUI桌面 (仅Windows/macOS):
118
118
 
119
119
  记忆/通信/媒体:
120
120
  - 搜索记忆: myagent-ai memory [--keyword 关键词]
121
- - Agent间通信: myagent-ai chat --agent <路径> -m "消息" [-f "文件"]
121
+ - Agent间通信: myagent-ai chat --agent <Agent_ID或名称> -m "消息" [-f "文件"]
122
122
  - 发送文件给用户: myagent-ai send-file 文件路径 描述
123
123
  - 播放音频/视频: myagent-ai playaudio/playvideo --url URL [--title 标题]
124
124
 
@@ -756,7 +756,6 @@ GUI桌面 (仅Windows/macOS):
756
756
  + self.SYSTEM_PROMPT.split("\n", 1)[1]
757
757
  )
758
758
  system_content = _prompt_with_placeholder.replace(_CONTEXT_PLACEHOLDER, context_xml)
759
- system_content = system_content + "\n最后,再检查输出格式,确保满足以下要求:" + self.xml_prompt
760
759
 
761
760
  # Step 3: 构建 LLM 消息(必须包含 role=user,否则 OpenAI 兼容 API 返回 400)
762
761
  messages = [Message(role="system", content=system_content)]
@@ -875,7 +874,13 @@ GUI桌面 (仅Windows/macOS):
875
874
  break
876
875
 
877
876
  llm_raw = response.content
877
+ _finish_reason = getattr(response, 'finish_reason', '') or ''
878
878
  logger.debug(f"[{task_id}] LLM 输出 (前500字): {llm_raw[:500]}")
879
+ if _finish_reason == "length":
880
+ logger.warning(
881
+ f"[{task_id}] LLM 输出被 max_tokens 截断 (finish_reason=length),"
882
+ f"输出长度={len(llm_raw)} 字符"
883
+ )
879
884
 
880
885
  # 保存 LLM 原始输出到会话记忆(用于回溯和审计,key=llm_output 不出现在对话历史中)
881
886
  if self.memory:
@@ -918,57 +923,85 @@ GUI桌面 (仅Windows/macOS):
918
923
  stream_callback,
919
924
  )
920
925
 
921
- # Step 4.2: <output> 块完整性检查
922
- # 仅在块不完整且解析未提取到任何有效内容时才触发修正
923
- # 如果解析器已经从非完整块中提取到有效内容(response/tools等),则正常继续
924
- if not parsed.output_block_complete and not parsed.parse_success:
925
- # 打印完整消息列表(系统提示词+对话历史),便于分析模型为何输出不完整
926
- logger.warning(
927
- f"[{task_id}] <output> 块不完整且未提取到有效内容\n"
928
- f"====== 发送给LLM的完整消息列表(共{len(messages)}条)======\n"
929
- + "\n".join(
930
- f"--- [{i}] role={m.role} ---\n{m.content[:8000]}{'...(截断)' if len(m.content)>8000 else ''}"
931
- for i, m in enumerate(messages)
932
- )
933
- + f"\n====== 消息列表结束 ======"
934
- )
926
+ # Step 4.2: <output> 块完整性检查 + finish_reason 截断检测
927
+ # 统一处理三种异常:
928
+ # A) finish_reason=length → max_tokens 截断
929
+ # B) 缺少 <output> 开始标签
930
+ # C) 缺少 </output> 闭合标签
931
+ _has_output_open = bool(re.search(r"<output[^>]*>", llm_raw, re.IGNORECASE))
932
+ _has_output_close = bool(re.search(r"</output\s*>", llm_raw, re.IGNORECASE))
933
+ _is_truncated = (_finish_reason == "length")
934
+ _block_incomplete = (not _has_output_open or not _has_output_close)
935
+
936
+ if _is_truncated or (_block_incomplete and not parsed.parse_success):
937
+ # 构建诊断信息
938
+ _diag_parts = []
939
+ if _is_truncated:
940
+ _diag_parts.append("finish_reason=length(max_tokens截断)")
941
+ if not _has_output_open:
942
+ _diag_parts.append("缺少<output>开始标签")
943
+ if not _has_output_close and _has_output_open:
944
+ _diag_parts.append("缺少</output>闭合标签")
945
+ _diag_msg = ", ".join(_diag_parts)
946
+
935
947
  logger.warning(
936
- f"[{task_id}] <output> 块不完整且未提取到有效内容,"
937
- f"跳过本轮输出和工具执行"
948
+ f"[{task_id}] XML 输出异常: {_diag_msg},"
949
+ f"parse_success={parsed.parse_success}, "
950
+ f"输出长度={len(llm_raw)} 字符"
938
951
  )
939
- if _xml_correction_retries < 1:
952
+
953
+ if _xml_correction_retries < 2:
940
954
  _xml_correction_retries += 1
941
- # [v1.15.73] 在重试前,尝试从不完整的 llm_raw 中提取已有内容
942
- # 防止 reasoning 模型因 max_tokens 截断导致内容完全丢失
955
+ # 尝试从不完整输出中提取已有内容,防止内容完全丢失
943
956
  _partial_text = self._try_extract_partial_response(llm_raw)
944
957
  if _partial_text:
945
958
  logger.info(f"[{task_id}] 从不完整XML中提取到部分回复: {_partial_text[:100]}")
946
959
  _v2_reasoning_collected.append(_partial_text)
947
960
  _emitted_reasoning_this_iter = True
948
961
  await self._emit_v2_event("v2_reasoning", {"content": _partial_text}, stream_callback)
949
- correction_prompt = (
950
- "你的输出缺少 </output> 闭合标签,XML块不完整,"
951
- "解析器不会处理不完整的块。\n"
952
- "请严格按照 <output>...</output> 格式重新输出,"
953
- "确保所有标签正确闭合。\n\n"
954
- f"你上一次的原始输出如下:\n{llm_raw}"
955
- )
962
+
963
+ # 根据诊断信息构建精准修正提示词
964
+ if _is_truncated:
965
+ correction_prompt = (
966
+ "你的上一次输出因长度限制被截断,XML块不完整。\n"
967
+ "请在回复中只包含精简的核心内容,避免冗长描述。\n"
968
+ "如果需要执行工具调用,只保留最关键的工具。\n"
969
+ "严格按照 <output>...</output> 格式输出,确保标签完整闭合。\n\n"
970
+ f"你上一次被截断的输出如下(供参考,不要照搬):\n{llm_raw[-2000:]}"
971
+ )
972
+ elif not _has_output_open:
973
+ correction_prompt = (
974
+ "你的输出缺少 <output> 开始标签,解析器无法识别。\n"
975
+ "请严格按照 <output>...</output> 格式重新输出,"
976
+ "确保以 <output> 开头、以 </output> 结尾。\n"
977
+ "不要在 <output> 标签前后输出任何其他文字。\n\n"
978
+ f"你上一次的原始输出如下:\n{llm_raw[-2000:]}"
979
+ )
980
+ else:
981
+ correction_prompt = (
982
+ "你的输出缺少 </output> 闭合标签,XML块不完整,"
983
+ "解析器不会处理不完整的块。\n"
984
+ "请严格按照 <output>...</output> 格式重新输出,"
985
+ "确保所有标签正确闭合。\n\n"
986
+ f"你上一次的原始输出如下:\n{llm_raw[-2000:]}"
987
+ )
988
+
989
+ # 追加到 history 时使用截断版本,防止 history 膨胀
956
990
  conversation_history.append(
957
- Message(role="assistant", content=llm_raw)
991
+ Message(role="assistant", content=llm_raw[-3000:] if len(llm_raw) > 3000 else llm_raw)
958
992
  )
959
993
  conversation_history.append(
960
994
  Message(role="user", content=correction_prompt)
961
995
  )
962
996
  await self._emit_v2_event(
963
997
  "v2_reasoning",
964
- {"content": "⚠️ 模型输出XML块不完整,正在自动修正..."},
998
+ {"content": f"⚠️ 模型输出异常({_diag_msg}),正在自动修正({_xml_correction_retries}/2)..."},
965
999
  stream_callback,
966
1000
  )
967
1001
  continue # 重新进入循环,让 LLM 重新生成
968
1002
  else:
969
- # 已重试过,强制终止并提示用户
970
- logger.warning(f"[{task_id}] XML块仍不完整且已重试,终止循环")
971
- # [v1.15.73] 保存已积累的内容,避免空回复
1003
+ # 已重试 2 次,强制终止
1004
+ logger.warning(f"[{task_id}] XML输出异常已重试2次仍失败,终止循环: {_diag_msg}")
972
1005
  if _v2_reasoning_collected:
973
1006
  _fallback_save = "\n".join(_v2_reasoning_collected)
974
1007
  if _fallback_save.strip():
@@ -992,7 +1025,7 @@ GUI桌面 (仅Windows/macOS):
992
1025
  stream_callback,
993
1026
  )
994
1027
  break
995
- elif not parsed.output_block_complete and parsed.parse_success:
1028
+ elif _block_incomplete and parsed.parse_success:
996
1029
  # 块不完整但已提取到有效内容,记录日志但正常继续
997
1030
  logger.info(
998
1031
  f"[{task_id}] <output> 块不完整但已提取到有效内容,跳过修正直接处理"
@@ -1003,28 +1036,29 @@ GUI桌面 (仅Windows/macOS):
1003
1036
  # 即使解析失败,如果 regex fallback 提取到了工具调用,仍然继续执行
1004
1037
  if parsed.tools_to_call:
1005
1038
  logger.warning(f"[{task_id}] XML 解析失败但提取到 {len(parsed.tools_to_call)} 个工具调用,跳过修正直接执行")
1006
- elif parsed.needs_correction and _xml_correction_retries < 1:
1039
+ elif parsed.needs_correction and _xml_correction_retries < 2:
1007
1040
  # XML 完全无法解析,让 LLM 重新格式化输出
1008
1041
  _xml_correction_retries += 1
1009
1042
  logger.warning(
1010
1043
  f"[{task_id}] XML 解析完全失败,回退给 LLM 修正 "
1011
- f"(重试 {_xml_correction_retries}/1)"
1044
+ f"(重试 {_xml_correction_retries}/2)"
1012
1045
  )
1013
1046
  correction_prompt = (
1014
- "你上一次的输出格式有误,XML解析器无法识别。"
1015
- "请严格按照 <output>...</output> 格式重新输出你的回答。"
1016
- "注意:不要在 <output> 标签前后输出任何其他文字。\n\n"
1017
- f"你上一次的原始输出如下:\n{llm_raw}"
1047
+ "你上一次的输出格式有误,XML解析器无法识别。\n"
1048
+ "请严格按照 <output>...</output> 格式重新输出你的回答。\n"
1049
+ "注意:以 <output> 开头,以 </output> 结尾,"
1050
+ "不要在 <output> 标签前后输出任何其他文字。\n\n"
1051
+ f"你上一次的原始输出如下:\n{llm_raw[-2000:]}"
1018
1052
  )
1019
1053
  conversation_history.append(
1020
- Message(role="assistant", content=llm_raw)
1054
+ Message(role="assistant", content=llm_raw[-3000:] if len(llm_raw) > 3000 else llm_raw)
1021
1055
  )
1022
1056
  conversation_history.append(
1023
1057
  Message(role="user", content=correction_prompt)
1024
1058
  )
1025
1059
  await self._emit_v2_event(
1026
1060
  "v2_reasoning",
1027
- {"content": "⚠️ 模型输出格式异常,正在自动修正..."},
1061
+ {"content": f"⚠️ 模型输出格式异常,正在自动修正({_xml_correction_retries}/2)..."},
1028
1062
  stream_callback,
1029
1063
  )
1030
1064
  continue # 重新进入循环,让 LLM 重新生成
package/config.py CHANGED
@@ -28,7 +28,7 @@ class LLMConfig:
28
28
  base_url: str = "https://api.openai.com/v1"
29
29
  model: str = "gpt-4"
30
30
  temperature: float = 0.1
31
- max_tokens: int = 4096
31
+ max_tokens: int = 30000
32
32
  context_window: int = 128000 # 上下文窗口大小
33
33
  input_modes: List[str] = field(default_factory=lambda: ["text"]) # 支持的输入模式
34
34
  reasoning: bool = False # 是否支持推理
@@ -94,7 +94,7 @@ class ModelEntry:
94
94
  model: str = "" # API 调用使用的实际模型字符串
95
95
  base_url: str = "" # 自定义 Base URL(空=使用 provider 默认值)
96
96
  api_key: str = "" # 专用 API Key(空=使用全局默认值)
97
- max_tokens: int = 4096
97
+ max_tokens: int = 30000
98
98
  temperature: float = 0.1
99
99
  context_window: int = 128000 # 上下文窗口大小(token)
100
100
  input_modes: List[str] = field(default_factory=lambda: ["text"]) # 支持的输入模式: text, image, video, audio
package/core/llm.py CHANGED
@@ -133,7 +133,7 @@ class LLMClient:
133
133
  base_url: str = "",
134
134
  model: str = "gpt-4",
135
135
  temperature: float = 0.1,
136
- max_tokens: int = 4096,
136
+ max_tokens: int = 30000,
137
137
  timeout: int = 120,
138
138
  max_retries: int = 3,
139
139
  reasoning: bool = False,
@@ -567,13 +567,26 @@ class LLMClient:
567
567
  "arguments": args,
568
568
  })
569
569
 
570
+ # 提取推理模型的思考过程 (DeepSeek-R1, o1, o3, QwQ 等)
571
+ _reasoning = ""
572
+ _content = choice.message.content or ""
573
+ # 尝试多种属性名(不同 API 提供商的命名差异)
574
+ for _attr in ("reasoning_content", "reasoning", "thinking"):
575
+ _reasoning = getattr(choice.message, _attr, None) or ""
576
+ if _reasoning:
577
+ break
578
+ # 如果 content 为空但 reasoning 有内容,用 reasoning 作为 content
579
+ if not _content.strip() and _reasoning.strip():
580
+ _content = _reasoning
581
+
570
582
  return LLMResponse(
571
- content=choice.message.content or "",
583
+ content=_content,
572
584
  tool_calls=tool_calls,
573
585
  usage=usage,
574
586
  model=response.model,
575
587
  finish_reason=choice.finish_reason or "",
576
588
  raw_response=response,
589
+ reasoning=_reasoning,
577
590
  )
578
591
 
579
592
  async def _chat_anthropic(self, messages: List[Message], kwargs: dict) -> LLMResponse:
@@ -604,9 +617,16 @@ class LLMClient:
604
617
  )
605
618
 
606
619
  content = ""
620
+ _reasoning = ""
607
621
  for block in response.content:
608
622
  if block.type == "text":
609
623
  content += block.text
624
+ elif block.type == "thinking":
625
+ _reasoning += getattr(block, "thinking", "") or ""
626
+
627
+ # 如果 content 为空但 reasoning 有内容,用 reasoning 作为 content
628
+ if not content.strip() and _reasoning.strip():
629
+ content = _reasoning
610
630
 
611
631
  return LLMResponse(
612
632
  content=content,
@@ -616,6 +636,7 @@ class LLMClient:
616
636
  },
617
637
  model=response.model,
618
638
  finish_reason=response.stop_reason or "",
639
+ reasoning=_reasoning,
619
640
  )
620
641
 
621
642
  async def _chat_ollama(self, kwargs: dict) -> LLMResponse:
@@ -429,8 +429,36 @@ def _custom_parse(raw_text: str) -> ParsedOutput:
429
429
  parsed.needs_correction = True
430
430
  return parsed
431
431
 
432
- # ── Step 0: Check <output> block completeness ──
433
- parsed.output_block_complete = is_output_block_complete(raw_text)
432
+ # ── Step 0: 检查 <output> 块,处理缺少开始/闭合标签的情况 ──
433
+ _has_open = bool(re.search(r"<output[^>]*>", raw_text, re.IGNORECASE))
434
+ _has_close = bool(re.search(r"</output\s*>", raw_text, re.IGNORECASE))
435
+
436
+ if not _has_open and not _has_close:
437
+ # 完全没有 <output> 标签 — 检查是否包含已知子标签
438
+ _has_known_tags = any(
439
+ re.search(rf"<{re.escape(t)}[\s>]", raw_text, re.IGNORECASE)
440
+ for t in KNOWN_TOP_LEVEL_TAGS
441
+ )
442
+ if _has_known_tags:
443
+ # 有子标签但缺少 <output> 包装 — 自动补全后正常解析
444
+ logger.info(
445
+ "LLM 输出缺少 <output> 标签但包含已知子标签,"
446
+ "自动补全 <output> 包装后解析"
447
+ )
448
+ raw_text = "<output>\n" + raw_text.strip() + "\n</output>"
449
+ parsed.output_block_complete = True
450
+ else:
451
+ parsed.output_block_complete = False
452
+ elif _has_open and not _has_close:
453
+ parsed.output_block_complete = False
454
+ elif not _has_open and _has_close:
455
+ # 有闭合标签但没开始标签 — 补全开始标签
456
+ logger.info("LLM 输出缺少 <output> 开始标签但有 </output>,自动补全")
457
+ raw_text = "<output>\n" + raw_text.strip()
458
+ parsed.output_block_complete = True
459
+ else:
460
+ parsed.output_block_complete = True
461
+
434
462
  conservative = not parsed.output_block_complete
435
463
 
436
464
  if conservative:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myagent-ai",
3
- "version": "1.26.3",
3
+ "version": "1.26.5",
4
4
  "description": "本地桌面端执行型AI助手 - Open Interpreter 风格 | Local Desktop Execution-Oriented AI Assistant",
5
5
  "main": "main.py",
6
6
  "bin": {
package/scripts/cli.py CHANGED
@@ -1079,7 +1079,7 @@ async def cmd_chat(args):
1079
1079
  """Agent间通信 — 向群内其他Agent发送消息或文件"""
1080
1080
  import argparse
1081
1081
  p = argparse.ArgumentParser(prog="myagent-ai chat", description="向群内其他Agent发送消息或文件,消息会出现在群聊记录中")
1082
- p.add_argument("--agent", "-a", required=True, help="目标Agent ID(群成员列表中显示的唯一ID)")
1082
+ p.add_argument("--agent", "-a", required=True, help="目标AgentID或名称(群成员列表中显示)")
1083
1083
  p.add_argument("--message", "-m", default="", help="要发送的消息内容")
1084
1084
  p.add_argument("--file", "-f", default="", help="要发送的文件路径(可多次使用: -f file1 -f file2)")
1085
1085
  p.add_argument("--group", "-g", help="群ID(可选,默认使用最近活跃的群)")
@@ -1108,24 +1108,30 @@ async def cmd_chat(args):
1108
1108
  resolved_path = None
1109
1109
  found_ids = []
1110
1110
 
1111
- # 优先从数据库查询
1111
+ # 优先从数据库查询(支持 ID 或 名称匹配)
1112
1112
  if _db_path.exists():
1113
1113
  try:
1114
1114
  import sqlite3
1115
1115
  conn = sqlite3.connect(str(_db_path))
1116
1116
  conn.row_factory = sqlite3.Row
1117
- rows = conn.execute("SELECT path, id FROM agents WHERE id != ''").fetchall()
1117
+ rows = conn.execute("SELECT path, id, name FROM agents WHERE id != ''").fetchall()
1118
1118
  conn.close()
1119
1119
  for row in rows:
1120
1120
  aid = row["id"]
1121
+ aname = row["name"] or ""
1121
1122
  found_ids.append(aid)
1123
+ # 按 ID 精确匹配
1122
1124
  if aid == a.agent:
1123
1125
  resolved_path = row["path"]
1124
1126
  break
1127
+ # 按名称精确匹配(兜底)
1128
+ if not resolved_path and aname == a.agent:
1129
+ resolved_path = row["path"]
1130
+ break
1125
1131
  except Exception:
1126
1132
  pass
1127
1133
 
1128
- # 数据库查不到,回退到文件系统(兼容旧版本)
1134
+ # 数据库查不到,回退到文件系统(兼容旧版本,支持 ID 或 名称匹配)
1129
1135
  if not resolved_path:
1130
1136
  agents_data_dir = _base_dir / "data" / "agents"
1131
1137
  if agents_data_dir.exists():
@@ -1133,11 +1139,15 @@ async def cmd_chat(args):
1133
1139
  try:
1134
1140
  ag_cfg = json.loads(cfg_path.read_text(encoding="utf-8"))
1135
1141
  aid = ag_cfg.get("id", "")
1142
+ aname = ag_cfg.get("name", "")
1136
1143
  if aid and aid not in found_ids:
1137
1144
  found_ids.append(aid)
1138
1145
  if aid == a.agent:
1139
1146
  resolved_path = cfg_path.parent.relative_to(agents_data_dir).as_posix()
1140
1147
  break
1148
+ if not resolved_path and aname and aname == a.agent:
1149
+ resolved_path = cfg_path.parent.relative_to(agents_data_dir).as_posix()
1150
+ break
1141
1151
  except Exception:
1142
1152
  pass
1143
1153
 
@@ -1151,7 +1161,7 @@ async def cmd_chat(args):
1151
1161
  if cfg_count > 0:
1152
1162
  sample = found_ids[:5]
1153
1163
  err_parts.append(f"已有 ID: {', '.join(sample)}")
1154
- err_parts.append(f"(请使用Agent的ID,从群成员列表中获取)")
1164
+ err_parts.append(f"(请使用Agent的ID或名称,从群成员列表中获取)")
1155
1165
  print(" | ".join(err_parts), file=sys.stderr)
1156
1166
  sys.exit(1)
1157
1167
 
@@ -1359,9 +1369,9 @@ GUI (仅 Windows/macOS):
1359
1369
  myagent-ai memory [--keyword 关键词] [--limit N] 搜索历史记忆
1360
1370
 
1361
1371
  通信:
1362
- myagent-ai chat --agent <路径> --message "消息" 向其他Agent发送消息
1363
- myagent-ai chat --agent <路径> --file <文件路径> 向其他Agent发送文件
1364
- myagent-ai chat --agent <路径> -m "消息" -f <文件> 同时发送消息和文件
1372
+ myagent-ai chat --agent <ID或名称> --message "消息" 向其他Agent发送消息
1373
+ myagent-ai chat --agent <ID或名称> --file <文件路径> 向其他Agent发送文件
1374
+ myagent-ai chat --agent <ID或名称> -m "消息" -f <文件> 同时发送消息和文件
1365
1375
 
1366
1376
  压缩解压:
1367
1377
  myagent-ai zip <路径1> [路径2] ... [-o 输出.zip] 压缩文件或文件夹
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/skills/TTS/tts.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/skills/base.py CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes