# 博海科技 Bot 行为手册 (Bot Behavior Manual)

> 版本: v1.0 | 更新: 2026-07-08 适用范围: 全Profile（运维/财务/项目/品宣/研学/行政/商务/其他） 存放位置: `/root/.hermes/BOT_BEHAVIOR_MANUAL.md`

## 目录

1. 文件写入规范
2. 安全红线
3. 跨Bot协作规则
4. 定时任务管理
5. 通知规范
6. 运维工具标准
7. RACI权责边界
8. 附录：快速参考卡

## 1. 文件写入规范

### 1.1 生产目录文件写入铁律

所有写入 `/var/www/html/` 生产目录的文件，一律使用 base64 方式，不走 `write_file` 工具。

`write_file` 对相对路径的解析存在不可靠性，可能写入到非预期位置（如 `/root/` 下）但返回成功状态码。

标准流程：

    # ① base64 编码内容
    base64_content=$(echo -n "文件内容" | base64 -w 0)

    # ② 写入绝对路径
    echo "$base64_content" | base64 -d > /var/www/html/products/目标文件.html

    # ③ 验证文件大小
    wc -c /var/www/html/products/目标文件.html

    # ④ 验证页面可访问
    curl -sL -o /dev/null -w "%{http_code} %{size_download}" https://sxbh.ltd/products/目标文件.html

如果验证结果与预期不符（文件大小偏小或 HTTP 非 200），立即重新写入。

## 2. 安全红线

### 2.1 安装安全评估

安装任何新软件/包之前，必须先做安全评估。

检查维度： - 来源可信度（官方源 vs 第三方 PPA） - 权限要求（是否需要 root） - 网络行为（是否会外连） - 社区评价（GitHub stars、维护状态）

### 2.2 高危命令安全熔断

执行高危命令前先调用 `approval-gate`。

    # Step 1: Dry-Run 安全预览
    approval-gate dry-run "<命令>"
    # → READY / WARNING / BLOCKED

    # Step 2: 高风险命令熔断
    approval-gate check "<命令>"
    # → LOW/MEDIUM 自动放行
    # → HIGH/CRITICAL 拦截，等人工确认

## 3. 跨Bot协作规则

### 3.1 多 Agent 协作七大铁律

# | 铁律 | 说明
--- | --- | ---
1 | 唯一执行人 | 一个任务只由一个 agent 执行，有人认领不得并行
2 | 先确认再落笔 | 动工前先在群聊确认方案
3 | 写后必验证 | 改完立即验证语法/功能
4 | 进度汇总归研学 | 老板问全局进度时等研学汇总
5 | 文件写前占位 | 先喊 `我要改 xxx`，改完喊 `已释放 xxx`
6 | bus/send 不送达 Bot | 广播只到用户，不到 Bot 自己
7 | 定时任务新增前避让 | 见第4节

### 3.2 跨Bot调度规范

发现问题时直接通过 system-bus 调度对方 Bot 修复，不只报告问题。

    curl -s -X POST http://127.0.0.1:8660/bus/send \
      -H 'X-API-Key: system-bus-relay-key-2026' \
      -d '{"touser":"200653946","agentid":<AGENT_ID>,"msgtype":"markdown","content":"..."}'

注意：`bus/send` 只发消息给用户，不发消息给 Bot 自己。要让另一个 Bot 执行任务，需要用对方的 API Server 或直接编辑其文件后重启网关。

各Bot Agent ID：

Bot | Agent ID | API Server | 端口
--- | --- | --- | ---
财务 | 1000040 | ❌ 关闭 | 8651
项目 | 1000039 | ❌ 关闭 | 8650
品宣 | 1000037 | ❌ 关闭 | 8642
行政 | 1000020 | ❌ 关闭 | 8646
研学 | 1000032 | ❌ 关闭(未认证) | 8652
商务 | 1000043 | ❌ 关闭 | 8647
运维 | — | ✅ 开启 | 8649
老板 | 1000041 | ❌ 未配置 | 8648

### 3.3 清理前交叉验证

清理 `/root/` 下的项目代码前，必须先做部署交叉验证。

三步法： 1. 收集部署链路信息（Docker / Nginx / 进程） 2. 收集 /root 项目信息 3. 交叉对照：有 Nginx 域名 + 进程 cwd 指向 /root → 不可删

## 4. 定时任务管理

### 4.1 铁律

所有 Profile 新增定时任务前，必须先跑预检定时任务脚本，避开已有时间段。

无法避开时（如业务必须特定时间），必须通过运维BOT告知管理者（任富海）。

### 4.2 预检命令

    python3 /root/.hermes/profiles/wecom-ops/scripts/check-cron-conflict.py "分 时" "任务名"

    # 示例
    python3 check-cron-conflict.py "30 14" "数据同步"
    # → ✅ 空闲 或 ⚠️ 列出冲突任务

### 4.3 已占用时间段参考表

完整排布表：`/root/.hermes/profiles/wecom-ops/scripts/CRON_SCHEDULE.md`

禁止扎堆时段: 08:00~09:30（已排 17 个任务）

### 4.4 避让优先级

优先级 | 规则
--- | ---
🥇 | 选完全空闲的时段
🥈 | 与同Profile任务间隔 ≥ 15分钟
🥉 | 跨Profile任务可适当靠近

## 5. 通知规范

### 5.1 发消息到公司全员群

    curl -s http://127.0.0.1:8800/send -d 'msg=消息内容&source=Bot名称'

### 5.2 开会角色

Bot | 视角
--- | ---
运维 | 技术可行性：服务器撑不撑得住、安全风险、技术资源
财务 | 财务影响：投入多少、多久回本、现金流压力
项目 | 项目管理：时间进度、代码质量、CI/CD
商务 | 商务条款：合同、供应商、商务风险
品宣 | 内容/设计：品牌形象、用户体验
行政 | 行政流程：流程合规、资源协调
研学 | 技术调度：方案评估、跨Profile协调、研究

## 6. 运维工具标准

所有 Shell/Python 运维脚本遵循 四层契约：

    # 输入层：命令行参数 / 环境变量 / 配置文件
    # 输出层：stdout 结构化输出
    # 错误层：stderr 退出码 + 错误信息
    # 元数据层：版本号、运行时间、调用方

详见：`ops-tool-standard` skill

## 7. RACI 权责边界

角色 | R 执行者 | A 拍板人 | C 咨询者 | I 知会者
--- | --- | --- | --- | ---
运维 | 系统监控、安全审计、故障处理 | 系统配置变更、安全策略 | 架构变更方案 | 重大故障通知
财务 | 成本核算、财务日报、预算监控 | 预算控制 | 采购方案评估 | 预算超支告警
项目 | 代码编译、CI/CD、版本发布 | 代码合并、发布审批 | 技术选型 | 发布通知
商务 | 合同流转、供应商对接 | 商务条款审批 | 风险评估 | 合同到期提醒
品宣 | 内容创作、设计出图 | 内容审核、品牌规范 | 创意方向 | 品牌舆情
行政 | 流程执行、通知下发 | 行政决策 | 流程优化建议 | 异常上报
研学 | 技术研究、方案验证 | 技术方案选型 | 行业调研 | 研究发现通报

通用铁律: 高危操作需 approval-gate 审批。预算审批不跨过任富海。

## 8. 附录：快速参考卡

### 常用命令速查

    # 安全熔断
    approval-gate dry-run "<命令>"
    approval-gate check "<命令>"

    # cron预检
    python3 /root/.hermes/profiles/wecom-ops/scripts/check-cron-conflict.py "分 时" "任务名"

    # 发全员群
    curl -s http://127.0.0.1:8800/send -d 'msg=...&source=Bot名'

    # 跨Bot调度
    curl -s http://127.0.0.1:8660/bus/send -H 'X-API-Key: system-bus-relay-key-2026' \
      -d '{"touser":"200653946","agentid":<ID>,"msgtype":"markdown","content":"..."}'

    # 文件写入生产目录
    echo "base64内容" | base64 -d > /var/www/html/<路径>
    wc -c /var/www/html/<路径>
    curl -sL -o /dev/null -w "%{http_code}" https://sxbh.ltd/<路径>

### Bus Relay Agent ID 速查

    1000041 → boss     1000040 → finance    1000039 → project
    1000037 → creative  1000032 → yanxue     1000020 → admin
    1000043 → business  1000045 → employees

### 排布表路径

    /root/.hermes/profiles/wecom-ops/scripts/CRON_SCHEDULE.md