sycommon-python-lib 0.2.3a3__tar.gz → 0.2.3a4__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.3a4}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/deep_agent.py +4 -2
  4. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/multi_agent_team.py +7 -2
  5. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/summarization_utils.py +8 -4
  6. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/llm_with_token_tracking.py +17 -0
  7. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/mqlistener_config.py +1 -0
  8. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_client.py +56 -8
  9. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +1 -0
  10. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  11. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/README.md +0 -0
  12. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/setup.cfg +0 -0
  13. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/__init__.py +0 -0
  14. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/cli.py +0 -0
  15. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/core/__init__.py +0 -0
  16. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/core/console.py +0 -0
  17. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/core/models.py +0 -0
  18. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/core/project.py +0 -0
  19. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/core/utils.py +0 -0
  20. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/__init__.py +0 -0
  21. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/README.md.tpl +0 -0
  22. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/__init__.py +0 -0
  23. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/api/query.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/app.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/db/service.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/model/parse.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/.env.tpl +0 -0
  44. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/.gitignore.tpl +0 -0
  45. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/Dockerfile.tpl +0 -0
  46. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/README.md.tpl +0 -0
  47. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/__init__.py +0 -0
  48. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/app.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/app.yaml.tpl +0 -0
  50. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/client/__init__.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/model/__init__.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/model/file_info.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/base/requirements.txt.tpl +0 -0
  55. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/README.md.tpl +0 -0
  56. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/__init__.py +0 -0
  57. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/app.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  59. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  61. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/README.md.tpl +0 -0
  63. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/__init__.py +0 -0
  64. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/api/__init__.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/api/echo.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/app.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/client/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/model/__init__.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/command/templates/web/tools/mq.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/nexus/__init__.py +0 -0
  74. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/__main__.py +0 -0
  76. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/agents/__init__.py +0 -0
  77. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/agents/factory.py +0 -0
  78. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/agents/prompts.py +0 -0
  79. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/__init__.py +0 -0
  80. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/browser.py +0 -0
  81. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/__init__.py +0 -0
  82. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/console.py +0 -0
  83. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/dom.py +0 -0
  84. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/network.py +0 -0
  85. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  86. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/performance.py +0 -0
  87. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  88. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/client.py +0 -0
  89. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/protocol.py +0 -0
  90. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cdp/repl.py +0 -0
  91. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/cli.py +0 -0
  92. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/__init__.py +0 -0
  93. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/cdp_cmd.py +0 -0
  94. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/chat_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/create_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/evaluate_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/init_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/memory_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/resume_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/rollback_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/commands/run_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/__init__.py +0 -0
  103. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/backend.py +0 -0
  104. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/config.py +0 -0
  105. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/display.py +0 -0
  106. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/git_integration.py +0 -0
  107. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/llm.py +0 -0
  108. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/core/state.py +0 -0
  109. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/evaluate/__init__.py +0 -0
  110. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/evaluate/api_evaluator.py +0 -0
  111. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/__init__.py +0 -0
  112. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/compressor.py +0 -0
  113. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/full.py +0 -0
  114. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/hot.py +0 -0
  115. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/manager.py +0 -0
  116. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/memory/warm.py +0 -0
  117. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/mode/__init__.py +0 -0
  118. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/mode/create.py +0 -0
  119. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/mode/optimize.py +0 -0
  120. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/models/__init__.py +0 -0
  121. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/models/config_models.py +0 -0
  122. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/__init__.py +0 -0
  123. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/baseline_tests.py +0 -0
  124. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/checkpoint.py +0 -0
  125. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/convergence.py +0 -0
  126. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/diagnosis.py +0 -0
  127. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/engine.py +0 -0
  128. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/environment.py +0 -0
  129. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/experience.py +0 -0
  130. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/harness_prompts.py +0 -0
  131. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/history.py +0 -0
  132. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/optimization_logger.py +0 -0
  133. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/pre_validation.py +0 -0
  134. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/reward.py +0 -0
  135. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/strategy_bandit.py +0 -0
  136. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/strategy_generator.py +0 -0
  137. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/rl/strategy_prompts.py +0 -0
  138. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycli/skills/__init__.py +0 -0
  139. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/__init__.py +0 -0
  140. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/__init__.py +0 -0
  141. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/agent_manager.py +0 -0
  142. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/chat_events.py +0 -0
  143. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  145. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  146. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  147. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  148. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  149. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/agent/sandbox/session.py +0 -0
  150. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/auth/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/auth/ldap_service.py +0 -0
  152. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  153. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/Config.py +0 -0
  154. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/DatabaseConfig.py +0 -0
  155. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  156. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/EmbeddingConfig.py +0 -0
  157. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/LLMConfig.py +0 -0
  158. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/LangfuseConfig.py +0 -0
  159. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/MQConfig.py +0 -0
  160. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/RedisConfig.py +0 -0
  161. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/RerankerConfig.py +0 -0
  162. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/SentryConfig.py +0 -0
  163. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/XxlJobConfig.py +0 -0
  164. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/config/__init__.py +0 -0
  165. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/async_base_db_service.py +0 -0
  166. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/async_database_service.py +0 -0
  167. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/base_db_service.py +0 -0
  168. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/database_service.py +0 -0
  169. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/elasticsearch_service.py +0 -0
  170. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/redis_service.py +0 -0
  171. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/database/token_usage_db_service.py +0 -0
  172. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/health/__init__.py +0 -0
  173. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/health/health_check.py +0 -0
  174. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/health/metrics.py +0 -0
  175. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/health/ping.py +0 -0
  176. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/heartbeat_process/__init__.py +0 -0
  177. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  178. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  179. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  180. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/__init__.py +0 -0
  181. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/embedding.py +0 -0
  182. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/get_llm.py +0 -0
  183. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/llm_logger.py +0 -0
  184. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/llm_tokens.py +0 -0
  185. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  186. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  187. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/struct_token.py +0 -0
  188. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/sy_langfuse.py +0 -0
  189. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/token_usage_es_service.py +0 -0
  190. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  191. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/llm/usage_token.py +0 -0
  192. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/__init__.py +0 -0
  193. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/async_sql_logger.py +0 -0
  194. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/kafka_log.py +0 -0
  195. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/logger_levels.py +0 -0
  196. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/logger_wrapper.py +0 -0
  197. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/process_logger.py +0 -0
  198. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/logging/sql_logger.py +0 -0
  199. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/__init__.py +0 -0
  200. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/background_execution.py +0 -0
  201. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/context.py +0 -0
  202. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/cors.py +0 -0
  203. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/docs.py +0 -0
  204. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/exception.py +0 -0
  205. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/middleware.py +0 -0
  206. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/monitor_memory.py +0 -0
  207. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/mq.py +0 -0
  208. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/sandbox.py +0 -0
  209. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/timeout.py +0 -0
  210. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/token_tracking.py +0 -0
  211. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  212. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/middleware/traceid.py +0 -0
  213. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/__init__.py +0 -0
  214. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/base_http.py +0 -0
  215. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/log.py +0 -0
  216. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/mqmsg_model.py +0 -0
  217. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/mqsend_config.py +0 -0
  218. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/sandbox.py +0 -0
  219. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/sso_user.py +0 -0
  220. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/token_usage.py +0 -0
  221. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/token_usage_mysql.py +0 -0
  222. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/models/xxljob_handler_config.py +0 -0
  223. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/notice/__init__.py +0 -0
  224. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  225. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/notice/wecom_message.py +0 -0
  226. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  227. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  228. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  229. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  230. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  231. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  232. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  233. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/sentry/__init__.py +0 -0
  234. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/sentry/sy_sentry.py +0 -0
  235. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/services.py +0 -0
  236. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/sse/__init__.py +0 -0
  237. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/sse/event.py +0 -0
  238. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/sse/sse.py +0 -0
  239. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/__init__.py +0 -0
  240. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/example.py +0 -0
  241. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/example2.py +0 -0
  242. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/feign.py +0 -0
  243. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/feign_client.py +0 -0
  244. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_client_base.py +0 -0
  245. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  246. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  247. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_service.py +0 -0
  248. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  249. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  250. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/synacos/param.py +0 -0
  251. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tests/deep_agent_server.py +0 -0
  252. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tests/test_deep_agent.py +0 -0
  253. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tests/test_email.py +0 -0
  254. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tests/test_mq.py +0 -0
  255. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/__init__.py +0 -0
  256. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/async_utils.py +0 -0
  257. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/docs.py +0 -0
  258. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/env.py +0 -0
  259. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/merge_headers.py +0 -0
  260. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/snowflake.py +0 -0
  261. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/syemail.py +0 -0
  262. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/tools/timing.py +0 -0
  263. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/xxljob/__init__.py +0 -0
  264. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon/xxljob/xxljob_service.py +0 -0
  265. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  266. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  267. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  268. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  269. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  270. {sycommon_python_lib-0.2.3a3 → sycommon_python_lib-0.2.3a4}/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.3a4
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.3a4"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -617,7 +617,8 @@ async def create_deep_agent(
617
617
  from deepagents import create_deep_agent as _create_deep_agent
618
618
 
619
619
  # 根据模型上下文窗口大小配置压缩阈值
620
- summarization_mw = build_summarization_middleware(
620
+ # 返回 (auto_summarization_mw, tool_mw),auto 用于自动压缩,tool_mw 提供 compact_conversation 工具
621
+ auto_summarization_mw, tool_summarization_mw = build_summarization_middleware(
621
622
  model, config.model_name, sandbox_backend,
622
623
  )
623
624
 
@@ -632,7 +633,8 @@ async def create_deep_agent(
632
633
  BackgroundExecutionMiddleware(backend=sandbox_backend),
633
634
  ToolResultTruncationMiddleware(),
634
635
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
635
- summarization_mw,
636
+ auto_summarization_mw,
637
+ tool_summarization_mw,
636
638
  ],
637
639
  }
638
640
  if skills_path:
@@ -584,11 +584,14 @@ 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
+ # 子 agent 共享同一组压缩 middleware
588
+ _auto_mw, _tool_mw = build_summarization_middleware(model, config.model_name, sandbox_backend)
587
589
  middleware = [
588
590
  BackgroundExecutionMiddleware(backend=sandbox_backend),
589
591
  ToolResultTruncationMiddleware(),
590
592
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
591
- build_summarization_middleware(model, config.model_name, sandbox_backend),
593
+ _auto_mw,
594
+ _tool_mw,
592
595
  ]
593
596
  shared = config.shared_tools or [get_current_date]
594
597
 
@@ -629,6 +632,7 @@ async def create_multi_agent_team(
629
632
 
630
633
  # 创建协调者 Agent
631
634
  coord_name = config.coordinator_name
635
+ _coord_auto_mw, _coord_tool_mw = build_summarization_middleware(model, config.model_name, sandbox_backend)
632
636
  coordinator_agent = create_deep_agent(
633
637
  model=model,
634
638
  tools=config.shared_tools or [get_current_date],
@@ -644,7 +648,8 @@ async def create_multi_agent_team(
644
648
  BackgroundExecutionMiddleware(backend=sandbox_backend),
645
649
  ToolResultTruncationMiddleware(),
646
650
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
647
- build_summarization_middleware(model, config.model_name, sandbox_backend),
651
+ _coord_auto_mw,
652
+ _coord_tool_mw,
648
653
  ],
649
654
  )
650
655
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- from typing import TYPE_CHECKING
9
+ from typing import TYPE_CHECKING, Tuple
10
10
 
11
11
  from deepagents.middleware.summarization import (
12
12
  SummarizationMiddleware,
@@ -26,7 +26,7 @@ def build_summarization_middleware(
26
26
  trigger_fraction: float = 0.70,
27
27
  keep_fraction: float = 0.10,
28
28
  default_max_tokens: int = 200000,
29
- ) -> SummarizationToolMiddleware:
29
+ ) -> Tuple[SummarizationMiddleware, SummarizationToolMiddleware]:
30
30
  """根据模型上下文窗口大小构建压缩 middleware。
31
31
 
32
32
  使用绝对 token 数而非 fraction 模式,避免要求模型提供 profile 信息。
@@ -40,7 +40,8 @@ def build_summarization_middleware(
40
40
  default_max_tokens: 无法从配置读取时的默认上下文窗口大小。
41
41
 
42
42
  Returns:
43
- SummarizationToolMiddleware 实例(包含自动压缩 + compact_conversation 工具)。
43
+ (SummarizationMiddleware, SummarizationToolMiddleware) 元组。
44
+ 第一个是自动压缩 middleware,第二个是 compact_conversation 工具 middleware。
44
45
  """
45
46
  try:
46
47
  from sycommon.config.Config import Config
@@ -65,4 +66,7 @@ def build_summarization_middleware(
65
66
  "max_length": 2000,
66
67
  },
67
68
  )
68
- return SummarizationToolMiddleware(summ)
69
+ print(f"[Summarization] 压缩配置: model={model_name}, max_tokens={max_tokens}, "
70
+ f"trigger={trigger_tokens} tokens ({trigger_fraction:.0%}), "
71
+ f"keep={keep_tokens} tokens ({keep_fraction:.0%})")
72
+ return summ, 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.3a4
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown