entari-plugin-hyw 3.3.2__tar.gz → 3.3.4__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.
- {entari_plugin_hyw-3.3.2/src/entari_plugin_hyw.egg-info → entari_plugin_hyw-3.3.4}/PKG-INFO +1 -1
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/pyproject.toml +1 -1
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/config.py +1 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/hyw.py +22 -15
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/pipeline.py +2 -5
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/prompts.py +1 -1
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/search.py +9 -1
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4/src/entari_plugin_hyw.egg-info}/PKG-INFO +1 -1
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/MANIFEST.in +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/README.md +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/setup.cfg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/__init__.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/anthropic.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/deepseek.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/gemini.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/google.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/grok.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/microsoft.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/minimax.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/mistral.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/nvida.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/openai.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/openrouter.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/perplexity.svg +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/qwen.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/xai.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/zai.png +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/highlight.css +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/highlight.js +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/katex-auto-render.js +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/katex.css +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/katex.js +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/tailwind.css +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/package-lock.json +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/package.json +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/tailwind.config.js +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/tailwind.input.css +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.html +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.html.bak +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.j2 +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/__init__.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/history.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/render.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/render.py.bak +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/__init__.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/browser.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/misc.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/playwright_tool.py +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/SOURCES.txt +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/dependency_links.txt +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/requires.txt +0 -0
- {entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "entari_plugin_hyw"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.4"
|
|
8
8
|
description = "Use large language models to interpret chat messages"
|
|
9
9
|
authors = [{name = "kumoSleeping", email = "zjr2992@outlook.com"}]
|
|
10
10
|
dependencies = [
|
|
@@ -17,6 +17,7 @@ class HYWConfig:
|
|
|
17
17
|
intruct_base_url: Optional[str] = None
|
|
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
|
+
search_params: Optional[str] = None # e.g. "&kl=cn-zh" for China region
|
|
20
21
|
extra_body: Optional[Dict[str, Any]] = None
|
|
21
22
|
temperature: float = 0.4
|
|
22
23
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
38
|
-
|
|
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
|
-
|
|
1062
|
-
|
|
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.
|
|
@@ -19,7 +19,7 @@ INTRUCT_SP = """# 你是一个专业的指导专家.
|
|
|
19
19
|
- 用户消息包含链接: 调用 crawl_page 获取内容, 无需其他工具
|
|
20
20
|
- 用户消息包含典型名词、可能的专有名词组合: 调用 internal_web_search
|
|
21
21
|
- 提炼出关键词搜索关键词本身, 不添加任何其他助词, 搜索效果最好
|
|
22
|
-
-
|
|
22
|
+
- 如果用户消息关键词清晰, 使用图片搜索能搜索出诸如海报、地标、物品、角色立绘等, 调用 internal_image_search
|
|
23
23
|
- 用户消息不需要搜索: 不调用工具
|
|
24
24
|
- 调用 set_mode:
|
|
25
25
|
- 绝大部分常规问题: standard
|
|
@@ -90,8 +90,16 @@ class SearchService:
|
|
|
90
90
|
results: List[Dict[str, str]] = []
|
|
91
91
|
|
|
92
92
|
def find_snippet(url: str, domain: str) -> str:
|
|
93
|
-
for ln in lines:
|
|
93
|
+
for i, ln in enumerate(lines):
|
|
94
|
+
# Avoid matching DDG internal links (filter by site, etc) which contain the target URL in query params
|
|
95
|
+
if "duckduckgo.com" in ln:
|
|
96
|
+
continue
|
|
97
|
+
|
|
94
98
|
if url in ln or (domain and domain in ln):
|
|
99
|
+
# If this line looks like the title/link line (e.g. starts with [Title](url) or similar),
|
|
100
|
+
# and the NEXT line exists, return the next line as snippet.
|
|
101
|
+
if i + 1 < len(lines) and len(ln) < 300: # heuristic: title lines are usually shorter
|
|
102
|
+
return lines[i+1][:400]
|
|
95
103
|
return ln[:400]
|
|
96
104
|
# fallback to first non-empty line
|
|
97
105
|
return lines[0][:400] if lines else ""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/anthropic.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/deepseek.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/gemini.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/google.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/grok.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/microsoft.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/minimax.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/mistral.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/nvida.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/openai.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/openrouter.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/perplexity.svg
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/qwen.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/xai.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/icon/zai.png
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/highlight.css
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/highlight.js
RENAMED
|
File without changes
|
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/katex.css
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/katex.js
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/libs/tailwind.css
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/package-lock.json
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/package.json
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/tailwind.config.js
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/tailwind.input.css
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.html
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.html.bak
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/assets/template.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/core/render.py.bak
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw/utils/playwright_tool.py
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/requires.txt
RENAMED
|
File without changes
|
{entari_plugin_hyw-3.3.2 → entari_plugin_hyw-3.3.4}/src/entari_plugin_hyw.egg-info/top_level.txt
RENAMED
|
File without changes
|