sycommon-python-lib 0.2.3a3__tar.gz → 0.2.3a5__tar.gz

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 (270) hide show
  1. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/deep_agent.py +2 -1
  4. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/multi_agent_team.py +4 -2
  5. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/summarization_utils.py +14 -5
  6. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/llm_with_token_tracking.py +17 -0
  7. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/mqlistener_config.py +1 -0
  8. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_client.py +56 -8
  9. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +1 -0
  10. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  11. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/README.md +0 -0
  12. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/setup.cfg +0 -0
  13. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/__init__.py +0 -0
  14. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/cli.py +0 -0
  15. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/core/__init__.py +0 -0
  16. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/core/console.py +0 -0
  17. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/core/models.py +0 -0
  18. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/core/project.py +0 -0
  19. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/core/utils.py +0 -0
  20. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/__init__.py +0 -0
  21. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/README.md.tpl +0 -0
  22. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/__init__.py +0 -0
  23. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/api/query.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/app.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/db/service.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/model/parse.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/.env.tpl +0 -0
  44. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/.gitignore.tpl +0 -0
  45. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/Dockerfile.tpl +0 -0
  46. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/README.md.tpl +0 -0
  47. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/__init__.py +0 -0
  48. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/app.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/app.yaml.tpl +0 -0
  50. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/client/__init__.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/model/__init__.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/model/file_info.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/base/requirements.txt.tpl +0 -0
  55. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/README.md.tpl +0 -0
  56. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/__init__.py +0 -0
  57. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/app.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  59. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  61. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/README.md.tpl +0 -0
  63. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/__init__.py +0 -0
  64. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/api/__init__.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/api/echo.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/app.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/client/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/model/__init__.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/command/templates/web/tools/mq.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/nexus/__init__.py +0 -0
  74. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/__main__.py +0 -0
  76. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/agents/__init__.py +0 -0
  77. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/agents/factory.py +0 -0
  78. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/agents/prompts.py +0 -0
  79. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/__init__.py +0 -0
  80. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/browser.py +0 -0
  81. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/__init__.py +0 -0
  82. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/console.py +0 -0
  83. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/dom.py +0 -0
  84. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/network.py +0 -0
  85. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  86. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/performance.py +0 -0
  87. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  88. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/client.py +0 -0
  89. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/protocol.py +0 -0
  90. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cdp/repl.py +0 -0
  91. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/cli.py +0 -0
  92. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/__init__.py +0 -0
  93. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/cdp_cmd.py +0 -0
  94. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/chat_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/create_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/evaluate_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/init_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/memory_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/resume_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/rollback_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/commands/run_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/__init__.py +0 -0
  103. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/backend.py +0 -0
  104. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/config.py +0 -0
  105. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/display.py +0 -0
  106. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/git_integration.py +0 -0
  107. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/llm.py +0 -0
  108. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/core/state.py +0 -0
  109. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/evaluate/__init__.py +0 -0
  110. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/evaluate/api_evaluator.py +0 -0
  111. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/__init__.py +0 -0
  112. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/compressor.py +0 -0
  113. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/full.py +0 -0
  114. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/hot.py +0 -0
  115. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/manager.py +0 -0
  116. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/memory/warm.py +0 -0
  117. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/mode/__init__.py +0 -0
  118. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/mode/create.py +0 -0
  119. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/mode/optimize.py +0 -0
  120. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/models/__init__.py +0 -0
  121. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/models/config_models.py +0 -0
  122. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/__init__.py +0 -0
  123. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/baseline_tests.py +0 -0
  124. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/checkpoint.py +0 -0
  125. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/convergence.py +0 -0
  126. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/diagnosis.py +0 -0
  127. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/engine.py +0 -0
  128. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/environment.py +0 -0
  129. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/experience.py +0 -0
  130. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/harness_prompts.py +0 -0
  131. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/history.py +0 -0
  132. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/optimization_logger.py +0 -0
  133. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/pre_validation.py +0 -0
  134. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/reward.py +0 -0
  135. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/strategy_bandit.py +0 -0
  136. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/strategy_generator.py +0 -0
  137. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/rl/strategy_prompts.py +0 -0
  138. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycli/skills/__init__.py +0 -0
  139. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/__init__.py +0 -0
  140. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/__init__.py +0 -0
  141. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/agent_manager.py +0 -0
  142. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/chat_events.py +0 -0
  143. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  145. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  146. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  147. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  148. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  149. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/agent/sandbox/session.py +0 -0
  150. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/auth/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/auth/ldap_service.py +0 -0
  152. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  153. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/Config.py +0 -0
  154. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/DatabaseConfig.py +0 -0
  155. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  156. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/EmbeddingConfig.py +0 -0
  157. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/LLMConfig.py +0 -0
  158. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/LangfuseConfig.py +0 -0
  159. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/MQConfig.py +0 -0
  160. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/RedisConfig.py +0 -0
  161. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/RerankerConfig.py +0 -0
  162. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/SentryConfig.py +0 -0
  163. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/XxlJobConfig.py +0 -0
  164. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/config/__init__.py +0 -0
  165. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/async_base_db_service.py +0 -0
  166. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/async_database_service.py +0 -0
  167. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/base_db_service.py +0 -0
  168. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/database_service.py +0 -0
  169. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/elasticsearch_service.py +0 -0
  170. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/redis_service.py +0 -0
  171. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/database/token_usage_db_service.py +0 -0
  172. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/health/__init__.py +0 -0
  173. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/health/health_check.py +0 -0
  174. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/health/metrics.py +0 -0
  175. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/health/ping.py +0 -0
  176. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/heartbeat_process/__init__.py +0 -0
  177. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  178. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  179. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  180. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/__init__.py +0 -0
  181. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/embedding.py +0 -0
  182. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/get_llm.py +0 -0
  183. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/llm_logger.py +0 -0
  184. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/llm_tokens.py +0 -0
  185. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  186. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  187. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/struct_token.py +0 -0
  188. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/sy_langfuse.py +0 -0
  189. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/token_usage_es_service.py +0 -0
  190. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  191. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/llm/usage_token.py +0 -0
  192. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/__init__.py +0 -0
  193. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/async_sql_logger.py +0 -0
  194. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/kafka_log.py +0 -0
  195. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/logger_levels.py +0 -0
  196. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/logger_wrapper.py +0 -0
  197. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/process_logger.py +0 -0
  198. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/logging/sql_logger.py +0 -0
  199. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/__init__.py +0 -0
  200. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/background_execution.py +0 -0
  201. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/context.py +0 -0
  202. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/cors.py +0 -0
  203. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/docs.py +0 -0
  204. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/exception.py +0 -0
  205. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/middleware.py +0 -0
  206. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/monitor_memory.py +0 -0
  207. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/mq.py +0 -0
  208. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/sandbox.py +0 -0
  209. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/timeout.py +0 -0
  210. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/token_tracking.py +0 -0
  211. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  212. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/middleware/traceid.py +0 -0
  213. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/__init__.py +0 -0
  214. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/base_http.py +0 -0
  215. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/log.py +0 -0
  216. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/mqmsg_model.py +0 -0
  217. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/mqsend_config.py +0 -0
  218. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/sandbox.py +0 -0
  219. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/sso_user.py +0 -0
  220. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/token_usage.py +0 -0
  221. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/token_usage_mysql.py +0 -0
  222. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/models/xxljob_handler_config.py +0 -0
  223. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/notice/__init__.py +0 -0
  224. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  225. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/notice/wecom_message.py +0 -0
  226. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  227. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  228. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  229. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  230. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  231. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  232. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  233. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/sentry/__init__.py +0 -0
  234. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/sentry/sy_sentry.py +0 -0
  235. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/services.py +0 -0
  236. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/sse/__init__.py +0 -0
  237. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/sse/event.py +0 -0
  238. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/sse/sse.py +0 -0
  239. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/__init__.py +0 -0
  240. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/example.py +0 -0
  241. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/example2.py +0 -0
  242. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/feign.py +0 -0
  243. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/feign_client.py +0 -0
  244. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_client_base.py +0 -0
  245. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  246. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  247. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_service.py +0 -0
  248. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  249. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  250. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/synacos/param.py +0 -0
  251. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tests/deep_agent_server.py +0 -0
  252. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tests/test_deep_agent.py +0 -0
  253. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tests/test_email.py +0 -0
  254. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tests/test_mq.py +0 -0
  255. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/__init__.py +0 -0
  256. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/async_utils.py +0 -0
  257. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/docs.py +0 -0
  258. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/env.py +0 -0
  259. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/merge_headers.py +0 -0
  260. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/snowflake.py +0 -0
  261. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/syemail.py +0 -0
  262. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/tools/timing.py +0 -0
  263. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/xxljob/__init__.py +0 -0
  264. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon/xxljob/xxljob_service.py +0 -0
  265. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  266. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  267. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  268. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  269. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  270. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a5}/tests/test_sycli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.3a3
3
+ Version: 0.2.3a5
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.3a3"
3
+ version = "0.2.3a5"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -616,7 +616,8 @@ async def create_deep_agent(
616
616
  # 创建 agent
617
617
  from deepagents import create_deep_agent as _create_deep_agent
618
618
 
619
- # 根据模型上下文窗口大小配置压缩阈值
619
+ # 创建 compact_conversation 工具 middleware
620
+ # 自动压缩由 deepagents 内置的 SummarizationMiddleware 处理(通过 model.profile 获取阈值)
620
621
  summarization_mw = build_summarization_middleware(
621
622
  model, config.model_name, sandbox_backend,
622
623
  )
@@ -584,11 +584,12 @@ async def create_multi_agent_team(
584
584
  from deepagents import create_deep_agent
585
585
  from deepagents.middleware.subagents import CompiledSubAgent
586
586
 
587
+ summarization_mw = build_summarization_middleware(model, config.model_name, sandbox_backend)
587
588
  middleware = [
588
589
  BackgroundExecutionMiddleware(backend=sandbox_backend),
589
590
  ToolResultTruncationMiddleware(),
590
591
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
591
- build_summarization_middleware(model, config.model_name, sandbox_backend),
592
+ summarization_mw,
592
593
  ]
593
594
  shared = config.shared_tools or [get_current_date]
594
595
 
@@ -629,6 +630,7 @@ async def create_multi_agent_team(
629
630
 
630
631
  # 创建协调者 Agent
631
632
  coord_name = config.coordinator_name
633
+ coord_summarization_mw = build_summarization_middleware(model, config.model_name, sandbox_backend)
632
634
  coordinator_agent = create_deep_agent(
633
635
  model=model,
634
636
  tools=config.shared_tools or [get_current_date],
@@ -644,7 +646,7 @@ async def create_multi_agent_team(
644
646
  BackgroundExecutionMiddleware(backend=sandbox_backend),
645
647
  ToolResultTruncationMiddleware(),
646
648
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
647
- build_summarization_middleware(model, config.model_name, sandbox_backend),
649
+ coord_summarization_mw,
648
650
  ],
649
651
  )
650
652
 
@@ -1,7 +1,8 @@
1
1
  """上下文压缩 middleware 构建工具。
2
2
 
3
- 根据 nacos 中配置的模型 maxTokens,用绝对 token 数设置压缩阈值,
4
- 避免依赖模型 profile 信息(部分模型不提供 profile)。
3
+ 根据 nacos 中配置的模型 maxTokens,用绝对 token 数设置压缩阈值。
4
+ 仅创建 SummarizationToolMiddleware(compact_conversation 工具),
5
+ 自动压缩由 deepagents 内置的 SummarizationMiddleware 处理(通过 model.profile 获取阈值)。
5
6
  """
6
7
 
7
8
  from __future__ import annotations
@@ -27,9 +28,14 @@ def build_summarization_middleware(
27
28
  keep_fraction: float = 0.10,
28
29
  default_max_tokens: int = 200000,
29
30
  ) -> SummarizationToolMiddleware:
30
- """根据模型上下文窗口大小构建压缩 middleware。
31
+ """根据模型上下文窗口大小构建 compact_conversation 工具 middleware。
31
32
 
32
- 使用绝对 token 数而非 fraction 模式,避免要求模型提供 profile 信息。
33
+ 自动压缩由 deepagents 内置的 SummarizationMiddleware 处理,
34
+ 它通过 model.profile.max_input_tokens(由 LLMWithTokenTracking 从 nacos 配置注入)
35
+ 计算压缩阈值。
36
+
37
+ 此处创建的 SummarizationToolMiddleware 仅提供 compact_conversation 手动压缩工具,
38
+ 使用 nacos 配置的 maxTokens 作为其内部 SummarizationMiddleware 的阈值参数。
33
39
 
34
40
  Args:
35
41
  model: LLM 实例。
@@ -40,7 +46,7 @@ def build_summarization_middleware(
40
46
  default_max_tokens: 无法从配置读取时的默认上下文窗口大小。
41
47
 
42
48
  Returns:
43
- SummarizationToolMiddleware 实例(包含自动压缩 + compact_conversation 工具)。
49
+ SummarizationToolMiddleware 实例(提供 compact_conversation 工具)。
44
50
  """
45
51
  try:
46
52
  from sycommon.config.Config import Config
@@ -65,4 +71,7 @@ def build_summarization_middleware(
65
71
  "max_length": 2000,
66
72
  },
67
73
  )
74
+ print(f"[Summarization] compact_conversation 工具配置: model={model_name}, max_tokens={max_tokens}, "
75
+ f"trigger={trigger_tokens} tokens ({trigger_fraction:.0%}), "
76
+ f"keep={keep_tokens} tokens ({keep_fraction:.0%})")
68
77
  return SummarizationToolMiddleware(summ)
@@ -230,6 +230,23 @@ class LLMWithTokenTracking(BaseChatModel):
230
230
  "output_tokens": total_output,
231
231
  })
232
232
 
233
+ def _resolve_model_profile(self):
234
+ """从 llmConfig.maxTokens 构建 profile,供 deepagents 计算压缩阈值使用。"""
235
+ if self.llmConfig and self.llmConfig.maxTokens:
236
+ return {"max_input_tokens": self.llmConfig.maxTokens}
237
+ if self.llm and hasattr(self.llm, 'profile') and self.llm.profile:
238
+ return self.llm.profile
239
+ return None
240
+
241
+ @property
242
+ def profile(self):
243
+ p = self._resolve_model_profile()
244
+ return p
245
+
246
+ @profile.setter
247
+ def profile(self, value):
248
+ pass
249
+
233
250
  def bind_tools(self, tools, *, tool_choice=None, **kwargs):
234
251
  """绑定工具 - 委托给底层 LLM,返回绑定后的 Runnable"""
235
252
  return self.llm.bind_tools(tools, tool_choice=tool_choice, **kwargs)
@@ -32,6 +32,7 @@ class RabbitMQListenerConfig(BaseModel):
32
32
  auto_delete: bool = Field(False, description="是否自动删除队列")
33
33
  auto_parse_json: bool = Field(True, description="是否自动解析JSON消息")
34
34
  prefetch_count: int = Field(2, description="mq同时消费数量")
35
+ max_concurrent_tasks: int = Field(5, description="handler 最大并发任务数")
35
36
 
36
37
  class Config:
37
38
  """模型配置"""
@@ -13,6 +13,7 @@ from aio_pika.abc import (
13
13
  )
14
14
  from sycommon.rabbitmq.rabbitmq_pool import RabbitMQConnectionPool
15
15
  from sycommon.logging.kafka_log import SYLogger
16
+ from sycommon.middleware.context import current_trace_id
16
17
  from sycommon.models.mqmsg_model import MQMsgModel
17
18
 
18
19
  logger = SYLogger
@@ -41,6 +42,7 @@ class RabbitMQClient:
41
42
  auto_delete: bool = False,
42
43
  auto_parse_json: bool = True,
43
44
  create_if_not_exists: bool = True,
45
+ max_concurrent_tasks: int = 5,
44
46
  **kwargs,
45
47
  ):
46
48
  self.connection_pool = connection_pool
@@ -73,6 +75,10 @@ class RabbitMQClient:
73
75
  self._connect_lock = asyncio.Lock()
74
76
  self._reconnect_semaphore = asyncio.Semaphore(1)
75
77
 
78
+ # 异步任务并发控制(方案C:收到即ACK + create_task)
79
+ self._task_semaphore = asyncio.Semaphore(max_concurrent_tasks)
80
+ self._running_tasks: set = set()
81
+
76
82
  @property
77
83
  async def is_connected(self) -> bool:
78
84
  if self._closed:
@@ -231,9 +237,9 @@ class RabbitMQClient:
231
237
  f"后台重连尝试 {attempt + 1}/{max_attempts} 失败: {e}")
232
238
  logger.warning(f"后台重连已达最大尝试次数 {max_attempts},放弃重连")
233
239
 
234
- async def set_message_handler(self, handler: Callable[..., Coroutine]) -> None:
235
- if not inspect.iscoroutinefunction(handler):
236
- raise TypeError("消息处理器必须是协程函数")
240
+ async def set_message_handler(self, handler: Callable) -> None:
241
+ if not callable(handler):
242
+ raise TypeError("消息处理器必须是可调用对象")
237
243
  self._message_handler = handler
238
244
 
239
245
  async def _process_message_callback(self, message: AbstractIncomingMessage):
@@ -246,20 +252,50 @@ class RabbitMQClient:
246
252
 
247
253
  SYLogger.set_trace_id(msg_obj.traceId)
248
254
 
249
- if self._message_handler:
250
- await self._message_handler(msg_obj, message)
251
-
255
+ # 先 ACK,让 RabbitMQ 确认投递成功
252
256
  await message.ack()
253
257
 
258
+ # 将 handler 投递到后台任务,不阻塞消费循环
259
+ if self._message_handler:
260
+ task = asyncio.create_task(
261
+ self._safe_execute_handler(msg_obj, message)
262
+ )
263
+ self._running_tasks.add(task)
264
+ task.add_done_callback(self._running_tasks.discard)
265
+
254
266
  except json.JSONDecodeError as e:
255
- # JSON解析失败,消息格式错误,记录日志并ACK(避免无限循环)
256
267
  logger.error(f"消息JSON解析失败,消息将被丢弃: {e}", exc_info=True)
257
268
  await message.ack()
258
269
  except Exception as e:
259
- # 处理异常,记录日志并ACK(避免消息重复消费)
260
270
  logger.error(f"消息处理异常,消息将被丢弃: {e}", exc_info=True)
261
271
  await message.ack()
262
272
 
273
+ async def _safe_execute_handler(self, msg_obj: MQMsgModel, message: AbstractIncomingMessage):
274
+ """在 Semaphore 控制下安全执行 handler,支持异步和同步阻塞 handler"""
275
+ async with self._task_semaphore:
276
+ try:
277
+ if not self._message_handler:
278
+ return
279
+ handler = self._message_handler
280
+ if inspect.iscoroutinefunction(handler):
281
+ await handler(msg_obj, message)
282
+ else:
283
+ # 同步阻塞 handler:丢进线程池,手动传递 traceId
284
+ trace_id = msg_obj.traceId
285
+ loop = asyncio.get_running_loop()
286
+
287
+ def _sync_wrapper():
288
+ SYLogger.set_trace_id(trace_id)
289
+ try:
290
+ return handler(msg_obj, message)
291
+ finally:
292
+ SYLogger.reset_trace_id(
293
+ current_trace_id.set(None))
294
+
295
+ await loop.run_in_executor(None, _sync_wrapper)
296
+ except Exception as e:
297
+ logger.error(f"异步任务执行失败: {e}", exc_info=True)
298
+
263
299
  async def start_consuming(self) -> Optional[ConsumerTag]:
264
300
  if self._closed:
265
301
  raise RuntimeError("客户端已关闭,无法启动消费")
@@ -391,6 +427,18 @@ class RabbitMQClient:
391
427
 
392
428
  await self.stop_consuming()
393
429
 
430
+ # 等待后台任务完成(优雅退出)
431
+ if self._running_tasks:
432
+ logger.info(f"等待 {len(self._running_tasks)} 个后台任务完成...")
433
+ try:
434
+ await asyncio.wait_for(
435
+ asyncio.gather(*self._running_tasks, return_exceptions=True),
436
+ timeout=15.0
437
+ )
438
+ except asyncio.TimeoutError:
439
+ logger.warning(f"等待后台任务超时,剩余 {len(self._running_tasks)} 个任务将被丢弃")
440
+ self._running_tasks.clear()
441
+
394
442
  if self._channel and not self._channel.is_closed:
395
443
  try:
396
444
  await self._channel.close()
@@ -158,6 +158,7 @@ class RabbitMQClientManager(RabbitMQCoreService):
158
158
  auto_parse_json=kwargs.get('auto_parse_json', True),
159
159
  create_if_not_exists=create_if_not_exists,
160
160
  prefetch_count=kwargs.get('prefetch_count', 2),
161
+ max_concurrent_tasks=kwargs.get('max_concurrent_tasks', 5),
161
162
  )
162
163
 
163
164
  # 4. 连接客户端
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.3a3
3
+ Version: 0.2.3a5
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown