## 主要更新 ### 安全配置增强 - 添加 api.z.ai 到网络白名单(支持GLM-4.7 API) - 网络监控改为监控模式(ENFORCE=0) - 配置单用户授权(+8613219870000) ### 多模型策略实现 - 主模型: GLM-4.7 (文本对话,¥0.015/千tokens) - 备用模型: Kimi K2.5 (图片识别、视频解析) - 自动fallback机制 ### 文档完善 - 创建完整的 CLAUDE.md 项目文档 - 添加贾维斯使用指南(多模型策略、成本估算) - 添加快速启动指南和部署摘要 ### 自动化脚本 - WhatsApp登录脚本 - 快速启动脚本(start-jarvis-whatsapp.sh) - 配置验证脚本 - Web UI快捷启动(打开WebUI.bat) ### 配置文件 - env.sh模板(环境变量配置) - config-template.json(配置模板) - 响应前缀配置: [🤖贾维斯] ## 测试状态 ✅ WhatsApp连接成功 ✅ API密钥配置完成(GLM + Kimi) ✅ 多模型fallback正常工作 ✅ Web UI可访问(端口18789) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
12 KiB
12 KiB
🧪 贾维斯 Bot 测试验证报告
生成时间: 2026年1月28日
项目版本: 基于 Moltbot v2026.1.27-beta.1
安全分支: claude/clawdbot-security-hardening-UHy0j
报告类型: 部署前测试计划
📋 环境信息
系统环境
操作系统: Windows 11 (Git Bash)
工作目录: D:\项目库\MOLTBOT助理
Node.js版本: v22.17.1
包管理器: pnpm(推荐)或 npm
Git分支状态
当前分支: claude/clawdbot-security-hardening-UHy0j
最近提交:
- 83bdbed9b feat(security): add fail-safe behavior for hardening initialization
- 4325cac7e feat(security): harden modules with WebSocket hook, expanded fs monitoring, log rotation, and stack traces
- 29d74bfa5 feat(security): add hardening modules for single-user auth, network whitelist, and fs monitoring
安全模块文件清单
| 文件 | 大小 | 状态 |
|---|---|---|
src/security/hardening.ts |
8.1KB | ✅ 存在 |
src/security/hardening-logger.ts |
4.5KB | ✅ 存在 |
src/security/single-user-enforcer.ts |
2.5KB | ✅ 存在 |
src/security/network-monitor.ts |
8.9KB | ✅ 存在 |
src/security/fs-monitor.ts |
7.4KB | ✅ 存在 |
src/security/hardening.test.ts |
23KB | ✅ 存在 |
🔧 部署配置文件
已创建的配置文件
| 文件 | 用途 | 状态 |
|---|---|---|
telegram-credentials.txt.template |
Telegram凭证模板 | ✅ 已创建 |
config-template.json |
主配置文件模板 | ✅ 已创建 |
env.sh.template |
环境变量模板 | ✅ 已创建 |
setup-telegram-config.sh |
交互式配置向导 | ✅ 已创建(可执行) |
start-jarvis-safe.sh |
安全启动脚本 | ✅ 已创建(可执行) |
配置文件使用说明
推荐配置流程:
# 步骤1: 运行配置向导(最简单)
./setup-telegram-config.sh
# 步骤2: 验证环境变量
source ~/.clawdbot/env.sh
# 步骤3: 启动服务
./start-jarvis-safe.sh
✅ 安全模块单元测试(需执行)
测试命令
# 前提:需要先安装依赖
pnpm install # 或 npm install
# 运行安全模块测试
pnpm test -- src/security/hardening.test.ts
预期测试覆盖
根据 hardening.test.ts 文件分析,应包含以下测试:
1. Hardening Logger 测试(约8个测试)
- ✅ 写入结构化事件到日志文件
- ✅ 调用 onEvent 回调
- ✅ 未初始化时不崩溃
- ✅ 日志轮转功能(超过10MB时)
- ✅ ISO 8601 时间戳格式
- ✅ 堆栈跟踪记录
2. Single-User Enforcer 测试(约10个测试)
- ✅ 授权用户验证通过
- ✅ 未授权用户验证失败
- ✅ SHA-256 哈希计算正确
- ✅ 常量时间比较(防止时序攻击)
- ✅ 未初始化时拒绝所有请求(fail-closed)
- ✅ 哈希格式验证
3. Network Monitor 测试(约12个测试)
- ✅ 白名单域名通过
- ✅ 非白名单域名拦截
- ✅ 后缀匹配规则(如 *.anthropic.com)
- ✅ fetch 请求拦截
- ✅ http/https 请求拦截
- ✅ WebSocket 请求拦截
- ✅ 日志记录功能
- ✅ 安装和卸载钩子
4. Filesystem Monitor 测试(约10个测试)
- ✅ 敏感路径检测(~/.ssh, ~/.aws等)
- ✅ 文件操作审计
- ✅ 符号链接解析
- ✅ 自定义敏感路径
- ✅ 强制模式和审计模式
- ✅ 文件访问日志记录
5. Hardening Integration 测试(约9个测试)
- ✅ 初始化成功场景
- ✅ 缺少必需配置时初始化失败
- ✅ fail-safe 行为验证
- ✅ 模块启用状态检查
- ✅ 清理函数正确工作
测试结果模板
[ ] 所有测试通过(49/49)
[ ] 测试覆盖率 > 80%
[ ] 无测试失败
[ ] 无警告信息
测试输出摘要:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PASS src/security/hardening.test.ts
hardening-logger
✓ writes structured events to the log file
✓ invokes the onEvent callback
✓ does not crash when logging before init
... (共49个测试)
Test Suites: 1 passed, 1 total
Tests: 49 passed, 49 total
Snapshots: 0 total
Time: X.XXXs
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
状态: [ ] 通过 [ ] 失败
🔐 集成测试计划
测试 A: 安全功能禁用时能否启动
目的: 验证普通模式可正常工作
# 测试步骤
unset MOLTBOT_HARDENING_ENABLED
./start-jarvis-safe.sh
# 预期结果
[ ] 提示"环境变量未配置"并退出
[ ] 或以普通模式启动(如果有默认配置)
# 实际结果
_________________
# 状态
[ ] 通过 [ ] 失败
测试 B: 启用但配置错误时应拒绝启动
目的: 验证 fail-safe 行为
# 测试步骤
export MOLTBOT_HARDENING_ENABLED=1
unset MOLTBOT_AUTHORIZED_USER_HASH
./start-jarvis-safe.sh
# 预期结果
[ ] 显示错误:"MOLTBOT_AUTHORIZED_USER_HASH 未设置"
[ ] 退出,不启动服务
# 实际结果
_________________
# 状态
[ ] 通过 [ ] 失败
测试 C: 完整配置时正常启动
目的: 验证正常启动流程
# 测试步骤
source ~/.clawdbot/env.sh
./start-jarvis-safe.sh
# 预期结果
[ ] 显示安全配置摘要
[ ] 显示 "security hardening active: singleUser=true, network=true, fs=true"
[ ] Gateway 启动在 ws://127.0.0.1:18789
# 实际结果
_________________
# 启动日志摘要
_________________
# 状态
[ ] 通过 [ ] 失败
测试 D: Telegram 通讯测试
目的: 验证 Bot 可正常接收和回复消息
前提:
- 服务已启动(测试C通过)
- 已获取 Telegram Bot Token
- 已添加 Bot 到 Telegram
# 测试步骤
1. 打开 Telegram 应用
2. 搜索您的 Bot(使用 Bot 用户名)
3. 发送: /start
4. 发送: 你好
5. 发送: 打开记事本
# 预期结果
[ ] Bot 响应 /start 命令
[ ] Bot 回复 "你好"
[ ] Bot 执行 "打开记事本" 命令
# 实际结果
_________________
# 响应延迟: _____ 秒
# 状态
[ ] 通过 [ ] 失败
测试 E: 单用户授权验证(需要朋友协助)
目的: 验证非授权用户被正确拒绝
前提:
- 服务已启动
- 需要另一个 Telegram 账号测试
# 测试步骤
1. 请朋友在 Telegram 搜索您的 Bot
2. 让朋友发送: 你好
3. 检查审计日志: tail -20 ~/.clawdbot/security-audit.log
# 预期结果
[ ] Bot 无任何响应(静默拒绝)
[ ] 审计日志记录拦截事件
[ ] 日志包含: "type":"unauthorized_user"
# 实际审计日志
_________________
# 状态
[ ] 通过 [ ] 失败
测试 F: 网络白名单验证
目的: 验证非白名单域名被拦截
前提:
- 服务已启动
- 网络强制模式已启用(MOLTBOT_HARDENING_NETWORK_ENFORCE=1)
# 测试步骤(需要修改代码进行测试)
# 在 src/gateway/server.impl.ts 启动后添加:
# fetch('http://evil-test-domain.com').catch(console.error);
npm start # 或 pnpm moltbot gateway run
# 预期结果
[ ] 启动日志显示: "Security: Blocked request to evil-test-domain.com"
[ ] 审计日志记录拦截事件
[ ] 日志包含: "type":"network_block"
# 实际结果
_________________
# 状态
[ ] 通过 [ ] 失败
测试 G: 文件系统监控验证
目的: 验证敏感文件访问被记录
前提:
- 服务已启动
- 文件监控已启用(MOLTBOT_HARDENING_FS_ENFORCE=0 审计模式)
# 测试步骤
1. 服务运行中
2. 在 Telegram 发送: "读取 ~/.ssh/id_rsa 文件的前 5 行"
3. 等待执行
4. 检查审计日志: tail -20 ~/.clawdbot/security-audit.log
# 预期结果
[ ] 审计日志记录文件访问
[ ] 日志包含: "type":"fs_access"
[ ] 日志包含: "path" 字段指向 ~/.ssh/id_rsa
# 实际审计日志
_________________
# 状态
[ ] 通过 [ ] 失败
📝 审计日志示例
正常启动日志
{
"type": "hardening_init",
"detail": {
"singleUser": true,
"network": true,
"filesystem": true
},
"timestamp": "2026-01-28T13:30:00.000Z"
}
未授权用户拦截日志
{
"type": "unauthorized_user",
"detail": {
"userId": "sha256:abc123...",
"channel": "telegram"
},
"timestamp": "2026-01-28T13:31:15.234Z",
"stack": "..."
}
网络请求拦截日志
{
"type": "network_block",
"detail": {
"domain": "evil-test-domain.com",
"url": "http://evil-test-domain.com/api/data"
},
"timestamp": "2026-01-28T13:32:22.456Z",
"stack": "..."
}
敏感文件访问日志
{
"type": "fs_access",
"detail": {
"path": "/home/user/.ssh/id_rsa",
"operation": "read",
"sensitive": true
},
"timestamp": "2026-01-28T13:33:45.789Z"
}
🐛 问题清单
阻塞性问题(P0 - 必须修复)
[ ] 无
备注:
_________________
重要问题(P1 - 建议修复)
[ ] 无
备注:
_________________
一般问题(P2 - 可选修复)
[ ] 无
备注:
_________________
📋 部署检查清单
部署前检查
- 所有安全模块单元测试通过(49/49)
- Telegram Bot Token 已获取
- 用户 Telegram ID 已确认
- 授权哈希已正确计算
- 配置文件已创建(~/.clawdbot/clawdbot.json)
- 环境变量已设置(~/.clawdbot/env.sh)
- 依赖已安装(node_modules 存在)
启动验证
- 启动脚本执行无错误
- 安全配置摘要正确显示
- Gateway 监听在 127.0.0.1:18789
- Telegram 通道连接成功
- 审计日志文件已创建
功能验证
- 授权用户可以发送消息并得到响应
- 非授权用户的消息被静默拒绝
- 审计日志正确记录所有安全事件
- 网络白名单功能正常(如果启用)
- 文件系统监控功能正常(如果启用)
📖 附录:手动执行测试指南
步骤1: 安装依赖
cd D:\项目库\MOLTBOT助理
pnpm install # 或 npm install
步骤2: 运行单元测试
pnpm test -- src/security/hardening.test.ts
# 或使用npm
npm test -- src/security/hardening.test.ts
步骤3: 配置 Telegram
./setup-telegram-config.sh
按照提示输入:
- Telegram Bot Token
- 您的 Telegram ID
步骤4: 启动服务
./start-jarvis-safe.sh
步骤5: 执行集成测试
按照上面"集成测试计划"部分的测试A-G逐一执行,并记录结果。
步骤6: 检查审计日志
# 查看完整日志
cat ~/.clawdbot/security-audit.log
# 查看最近20条
tail -20 ~/.clawdbot/security-audit.log
# 实时查看(服务运行时)
tail -f ~/.clawdbot/security-audit.log
📊 测试总结
整体测试结果
单元测试: [ ] 通过 [ ] 失败(___/49)
集成测试: [ ] 通过 [ ] 失败(___/7)
阻塞问题: [ ] 0个 [ ] ___个
重要问题: [ ] 0个 [ ] ___个
部署状态: [ ] 可部署 [ ] 需修复 [ ] 不可部署
安全评级
单用户授权: [ ] 有效 [ ] 失效
网络白名单: [ ] 有效 [ ] 失效
文件监控: [ ] 有效 [ ] 失效
审计日志: [ ] 有效 [ ] 失效
综合评级: [ ] A(优秀)[ ] B(良好)[ ] C(合格)[ ] D(不合格)
建议
部署建议:
_________________
后续改进:
_________________
注意事项:
_________________
🔗 相关文档
- 快速启动指南:
JARVIS_USER_MANUAL.md(任务6将创建) - 架构分析报告:
MOLTBOT项目深度分析报告.md - 安全配置脚本:
setup-telegram-config.sh - 启动脚本:
start-jarvis-safe.sh
报告生成: 2026年1月28日 下次更新: 执行测试后手动更新此文档 维护者: CMAF技术助理