🔄 卡若AI 同步 2026-02-25 12:09 | 更新:运营中枢、运营中枢工作台 | 排除 >20MB: 13 个

This commit is contained in:
2026-02-25 12:09:27 +08:00
parent ffa6a18e97
commit afd8e73afb
3 changed files with 38 additions and 2 deletions

View File

@@ -252,6 +252,24 @@ def _build_provider_queue(llm_cfg: Dict[str, Any]) -> List[Dict[str, str]]:
return providers
def _is_unusable_llm_reply(text: str) -> bool:
s = (text or "").strip().lower()
if not s:
return True
refusal_signals = [
"i'm sorry",
"i am sorry",
"not able to assist",
"can't assist",
"cannot assist",
"无法协助",
"不能协助",
]
if any(sig in s for sig in refusal_signals) and len(s) <= 160:
return True
return False
def _send_provider_alert(cfg: Dict[str, Any], errors: List[str], prompt: str, matched_skill: str, skill_path: str) -> None:
"""
当所有 LLM 接口都失败时,发邮件告警(支持 QQ SMTP
@@ -302,7 +320,19 @@ def _send_provider_alert(cfg: Dict[str, Any], errors: List[str], prompt: str, ma
)
msg.set_content(body)
with smtplib.SMTP_SSL(smtp_host, smtp_port, timeout=15) as s:
# 先走 SSL465失败再尝试 STARTTLS587
try:
with smtplib.SMTP_SSL(smtp_host, smtp_port, timeout=15) as s:
s.login(smtp_user, smtp_pass)
s.send_message(msg)
return
except Exception:
pass
with smtplib.SMTP(smtp_host, 587, timeout=15) as s:
s.ehlo()
s.starttls()
s.ehlo()
s.login(smtp_user, smtp_pass)
s.send_message(msg)
@@ -335,7 +365,11 @@ def build_reply_with_llm(prompt: str, cfg: Dict[str, Any], matched_skill: str, s
)
if r.status_code == 200:
data = r.json()
return data["choices"][0]["message"]["content"]
reply = data["choices"][0]["message"]["content"]
if _is_unusable_llm_reply(reply):
errors.append(f"provider#{idx} unusable_reply={reply[:120]}")
continue
return reply
errors.append(f"provider#{idx} status={r.status_code} body={r.text[:120]}")
except Exception as e:
errors.append(f"provider#{idx} exception={type(e).__name__}: {str(e)[:160]}")

View File

@@ -140,3 +140,4 @@
| 2026-02-25 10:26:04 | 🔄 卡若AI 同步 2026-02-25 10:26 | 更新:水桥平台对接、水溪整理归档 | 排除 >20MB: 13 个 |
| 2026-02-25 11:03:16 | 🔄 卡若AI 同步 2026-02-25 11:03 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 13 个 |
| 2026-02-25 11:52:39 | 🔄 卡若AI 同步 2026-02-25 11:52 | 更新:水溪整理归档、运营中枢、运营中枢工作台 | 排除 >20MB: 13 个 |
| 2026-02-25 12:07:57 | 🔄 卡若AI 同步 2026-02-25 12:07 | 更新Cursor规则、水桥平台对接、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 13 个 |

View File

@@ -143,3 +143,4 @@
| 2026-02-25 10:26:04 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-25 10:26 | 更新:水桥平台对接、水溪整理归档 | 排除 >20MB: 13 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-25 11:03:16 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-25 11:03 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 13 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-25 11:52:39 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-25 11:52 | 更新:水溪整理归档、运营中枢、运营中枢工作台 | 排除 >20MB: 13 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-25 12:07:57 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-25 12:07 | 更新Cursor规则、水桥平台对接、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 13 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |