fix: 通过本地完整测试发现的 11 个 bug

🔴 致命(5个):
- Bug1: onebot11.json 格式错误(旧 {http:{},ws:{}} → network.httpServers/httppClients)
- Bug2: 端口映射错位(WebUI 6099, OneBot API 6097 独立端口)
- Bug3: 变量名含空格 NAP CAT_HOST → NAPCAT_HOST(14脚本+2SKILL+README)
- Bug4: heredoc 单引号阻止变量展开
- Bug5: process.py 缺失 _get_high_risk_words() 方法

🟡 重要(3个):
- Bug6: onebot11.json 默认不存在(cat > 而非 edit)
- Bug7: API 须登录后才响应(新增扫码引导步骤)
- Bug8: qqrebot systemd 依赖 napcat 服务

🟢 中等(3个):
- Bug9: Skills 占位符缺 YOUR_NAPCAT_HOST sed 覆盖
- Bug10: venv 不可用需降级方案
- Bug11: 端口 25580 冲突处理
已验证全链路:NapCat + qqrebot + 插件 + OpenClaw Gateway + AI 回复
This commit is contained in:
root
2026-05-04 19:47:26 +08:00
parent 79ea8175c4
commit 9dff73e7bc
18 changed files with 171 additions and 131 deletions

View File

@ -172,6 +172,25 @@ class OpenClawBridge(BasePlugin):
source_tag = self._build_source_tag()
return f"{{来源:{source_tag}}} {{用户名:{identity_tag}}} {cleaned}"
def _get_high_risk_words(self) -> list:
"""获取高危词列表,优先从 config.toml [security] section 加载,否则用内置默认词库"""
try:
cfg_high_risk = self.config.get("security", {}).get("high_risk_words", [])
if cfg_high_risk:
logger.info(f"Loaded {len(cfg_high_risk)} high-risk words from config")
return cfg_high_risk
except Exception:
pass
# 内置默认词库
default_words = [
"ignore all instructions", "ignore all previous", "forget previous", "forget everything",
"delete memory", "delete all", "reset system", "override",
"sudo password", "api key", "secret token", "ssh key",
"cat /etc/passwd", "rm -rf", ":(){ :|:& };:",
]
logger.info(f"Using built-in high-risk word list ({len(default_words)} words)")
return default_words
def _detect_high_risk(self, message: str) -> tuple[bool, list[str]]:
"""使用jieba分词检测高危词,返回(是否高危, 匹配到的词列表)"""
msg_lower = message.lower()