entari-plugin-hyw 3.3.3__tar.gz → 3.3.5__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.

Potentially problematic release.


This version of entari-plugin-hyw might be problematic. Click here for more details.

Files changed (52) hide show
  1. {entari_plugin_hyw-3.3.3/src/entari_plugin_hyw.egg-info → entari_plugin_hyw-3.3.5}/PKG-INFO +1 -1
  2. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/pyproject.toml +1 -1
  3. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/config.py +1 -0
  4. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/hyw.py +22 -15
  5. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/pipeline.py +2 -5
  6. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/prompts.py +1 -0
  7. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/search.py +1 -1
  8. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5/src/entari_plugin_hyw.egg-info}/PKG-INFO +1 -1
  9. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/MANIFEST.in +0 -0
  10. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/README.md +0 -0
  11. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/setup.cfg +0 -0
  12. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/__init__.py +0 -0
  13. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/anthropic.svg +0 -0
  14. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/deepseek.png +0 -0
  15. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/gemini.svg +0 -0
  16. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/google.svg +0 -0
  17. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/grok.png +0 -0
  18. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/microsoft.svg +0 -0
  19. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/minimax.png +0 -0
  20. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/mistral.png +0 -0
  21. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/nvida.png +0 -0
  22. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/openai.svg +0 -0
  23. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/openrouter.png +0 -0
  24. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/perplexity.svg +0 -0
  25. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/qwen.png +0 -0
  26. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/xai.png +0 -0
  27. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/icon/zai.png +0 -0
  28. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/highlight.css +0 -0
  29. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/highlight.js +0 -0
  30. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/katex-auto-render.js +0 -0
  31. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/katex.css +0 -0
  32. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/katex.js +0 -0
  33. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/libs/tailwind.css +0 -0
  34. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/package-lock.json +0 -0
  35. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/package.json +0 -0
  36. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/tailwind.config.js +0 -0
  37. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/tailwind.input.css +0 -0
  38. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/template.html +0 -0
  39. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/template.html.bak +0 -0
  40. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/assets/template.j2 +0 -0
  41. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/__init__.py +0 -0
  42. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/history.py +0 -0
  43. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/render.py +0 -0
  44. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/core/render.py.bak +0 -0
  45. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/__init__.py +0 -0
  46. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/browser.py +0 -0
  47. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/misc.py +0 -0
  48. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw/utils/playwright_tool.py +0 -0
  49. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw.egg-info/SOURCES.txt +0 -0
  50. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw.egg-info/dependency_links.txt +0 -0
  51. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw.egg-info/requires.txt +0 -0
  52. {entari_plugin_hyw-3.3.3 → entari_plugin_hyw-3.3.5}/src/entari_plugin_hyw.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: entari_plugin_hyw
3
- Version: 3.3.3
3
+ Version: 3.3.5
4
4
  Summary: Use large language models to interpret chat messages
5
5
  Author-email: kumoSleeping <zjr2992@outlook.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "entari_plugin_hyw"
7
- version = "3.3.3"
7
+ version = "3.3.5"
8
8
  description = "Use large language models to interpret chat messages"
9
9
  authors = [{name = "kumoSleeping", email = "zjr2992@outlook.com"}]
10
10
  dependencies = [
@@ -18,6 +18,7 @@ class HYWConfig:
18
18
  search_base_url: str = "https://lite.duckduckgo.com/lite/?q={query}"
19
19
  image_search_base_url: str = "https://duckduckgo.com/?q={query}&iax=images&ia=images"
20
20
  search_params: Optional[str] = None # e.g. "&kl=cn-zh" for China region
21
+ search_limit: int = 8
21
22
  extra_body: Optional[Dict[str, Any]] = None
22
23
  temperature: float = 0.4
23
24
  max_turns: int = 10
@@ -11,31 +11,38 @@ class HYW:
11
11
  """
12
12
  def __init__(self, config: HYWConfig):
13
13
  self.config = config
14
- self.pipeline = ProcessingPipeline(config)
14
+ # No persistent pipeline - we create one per request to ensure thread safety
15
+ # self.pipeline = ProcessingPipeline(config)
15
16
  logger.info(f"HYW V2 (Ironclad) initialized - Model: {config.model_name}")
16
17
 
17
18
  async def agent(self, user_input: str, conversation_history: List[Dict] = None, images: List[str] = None,
18
19
  selected_model: str = None, selected_vision_model: str = None, local_mode: bool = False) -> Dict[str, Any]:
19
20
  """
20
21
  Main entry point for the plugin (called by __init__.py).
22
+ Creates a fresh pipeline instance for each request to avoid state contamination (race conditions).
21
23
  """
22
- # Note: 'images' handling is skipped for V2 initial stability MVP as per user focus on 'search hangs'.
23
- # We can re-integrate vision later, but for now we focus on Text/Search stability.
24
-
25
- # Delegate completely to pipeline
26
- result = await self.pipeline.execute(
27
- user_input,
28
- conversation_history or [],
29
- model_name=selected_model,
30
- images=images,
31
- selected_vision_model=selected_vision_model,
32
- )
33
- return result
24
+ pipeline = ProcessingPipeline(self.config)
25
+ try:
26
+ # Delegate completely to pipeline
27
+ result = await pipeline.execute(
28
+ user_input,
29
+ conversation_history or [],
30
+ model_name=selected_model,
31
+ images=images,
32
+ selected_vision_model=selected_vision_model,
33
+ )
34
+ return result
35
+ finally:
36
+ await pipeline.close()
34
37
 
35
38
  async def close(self):
36
39
  """Explicit async close method. NO __del__."""
37
- if self.pipeline:
38
- await self.pipeline.close()
40
+ # Close shared resources
41
+ try:
42
+ from ..utils.search import close_shared_crawler
43
+ await close_shared_crawler()
44
+ except Exception:
45
+ pass
39
46
 
40
47
  # Legacy Compatibility (optional attributes just to prevent blind attribute errors if referenced externally)
41
48
  # in V2 we strongly discourage accessing internal tools directly.
@@ -1058,8 +1058,5 @@ class ProcessingPipeline:
1058
1058
  await self.search_service.close()
1059
1059
  except Exception:
1060
1060
  pass
1061
- try:
1062
- from ..utils.search import close_shared_crawler
1063
- await close_shared_crawler()
1064
- except Exception:
1065
- pass
1061
+ # Do NOT close shared crawler here, as pipeline instances are now per-request.
1062
+ # Shared crawler lifecycle is managed by HYW.close() or global cleanup.
@@ -62,6 +62,7 @@ AGENT_SP = """# 你是一个 Agent 总控专家, 你需要理解用户意图,
62
62
  - 工具引用:
63
63
  - 搜索摘要引用: 使用 `search:数字id` 如 `search:3`
64
64
  - 页面内容引用: 使用 `page:数字id` 如 `page:5`
65
+ - 图片内容不引用
65
66
  - 每个引用必须分开标注
66
67
  - 在正文底部添加 references 代码块:
67
68
  - 用不到的条目不写, 没有专家给信息就不写.
@@ -33,7 +33,7 @@ class SearchService:
33
33
  """
34
34
  def __init__(self, config: Any):
35
35
  self.config = config
36
- self._default_limit = 8
36
+ self._default_limit = getattr(config, "search_limit", 8)
37
37
  self._crawler: Optional[AsyncWebCrawler] = None
38
38
 
39
39
  def _build_search_url(self, query: str) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: entari_plugin_hyw
3
- Version: 3.3.3
3
+ Version: 3.3.5
4
4
  Summary: Use large language models to interpret chat messages
5
5
  Author-email: kumoSleeping <zjr2992@outlook.com>
6
6
  License: MIT