docs(ops): add oclaw and netx ops expert introduction guide

Introduce the ops specialist, netx integration, automation flows, and WhatsApp channel usage with Mermaid diagrams.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-07-14 17:18:08 +08:00
parent ad1b95d0bc
commit 4c85dedf33

View file

@ -0,0 +1,648 @@
# Oclaw 智能运维 — Oclaw + netx 运维专家介绍
> 证据驱动 · 告警闭环 · 多渠道触达 · 可编排自动化
---
## 1. 整体定位
**Oclaw** 是自托管的多专家 AI Agent 平台,提供 Admin、Chat 以及微信/WhatsApp 等渠道接入。
**netx** 是告警-centric 的网络运维平台,负责 UME 告警同步、网元纳管与只读 CLI 执行。
**运维专家(ops specialist)** 是 Oclaw 中的网络运维角色,对外 persona 为「**oclaw智能运维**」。它与 netx 深度集成,形成「数据面 + 推理面」的完整运维闭环。
| 项目 | 角色 | 核心职责 |
|------|------|----------|
| Oclaw | AI 交互与编排层 | Agent 推理、工具调用、Skills、渠道回复 |
| netx | 数据与设备执行层 | 告警采集/查询、网元纳管、安全 CLI |
| 运维专家 | Oclaw 中的 ops 专家 | 查告警、诊断网元、生成报告、触发自动化 |
```mermaid
flowchart LR
subgraph User["用户与渠道"]
Chat[Chat / Admin]
WA[WhatsApp 值班群]
end
subgraph Oclaw["Oclaw"]
GW[Gateway / 路由]
Ops[运维专家 Agent]
Skills[Skills + MCP]
end
subgraph netx["netx"]
API[FastAPI :8890]
PG[(PostgreSQL)]
UME[ZTE UME]
end
Chat --> GW
WA --> GW
GW --> Ops
Ops --> Skills
Skills -->|MCP 13 工具| API
API --> PG
UME --> API
API -->|AI 分析 / 告警推送| Oclaw
```
---
## 2. Oclaw 平台概览
### 2.1 用户入口
- **Admin**:`http://127.0.0.1:8787/admin` — 配置 MCP、专家、渠道、模型
- **Chat**:`http://127.0.0.1:8787/chat` — 与专家对话
- **渠道**:微信、WhatsApp、企微等,可绑定默认专家
### 2.2 专家体系
| specialist | 说明 |
|------------|------|
| **ops** | 网络运维专家(本文重点) |
| generalist | 通用任务 |
| memory | 知识/记忆 |
| image / video / stock | 专项能力 |
### 2.3 交互模式
- **expert**:用户直连某一专家(如 ops)
- **comprehensive**:经理 Agent 编排,按任务委派给 ops 等专家
### 2.4 分层架构
```
runtime/ Agent 循环、路由、Skills、调度
interfaces/ HTTP/WS、Admin UI、Gateway
platform/ 配置、持久化、LLM 传输
tools/ 专家工具、公共工具、MCP 适配
skills/ 可安装技能包(SKILL.md)
```
### 2.5 消息处理流程
```mermaid
flowchart TD
A[入站消息] --> B{渠道路由}
B -->|specialist=ops| C[NetworkOpsAgent]
B -->|comprehensive| D[Manager Agent]
D -->|委派网络任务| C
C --> E[加载 ROLE_SYSTEM + Skills]
E --> F[工具集: network_ops + memory + MCP]
F --> G{Agent 循环}
G -->|调工具拿证据| H[netx / 文件 / 调度等]
H --> G
G -->|生成结论| I[文本 / 附件 / 定时任务]
I --> J[Chat / 渠道回复]
```
---
## 3. 运维专家(Ops Expert)
### 3.1 身份与实现
| 项 | 值 |
|----|-----|
| specialist ID | `ops` |
| 对外名称 | oclaw智能运维 |
| 工具包 | `network_ops+memory` |
| Agent 类 | `NetworkOpsAgent` |
| 角色定义 | `runtime/workspaces/ops/ROLE_SYSTEM.md` |
### 3.2 核心原则
1. **证据优先** — 先用工具查日志、状态、配置,再下结论
2. **变更安全** — 破坏性操作需明确影响范围与回滚方案
3. **可验证输出** — 结论 → 证据 → 最小修复步骤
4. **网元展示** — 一律以 `host_name` 为主键,禁止对用户展示 UUID `ne_id`
### 3.3 工具来源
```mermaid
flowchart TB
Ops[运维专家 Agent]
Ops --> EN[Expert 工具\nnetwork_ops + memory]
Ops --> PU[Public 工具\nread_file / schedule_create 等]
Ops --> MCP[MCP 工具\nmcp__netx__*]
EN --> NT[netx_tools.py\n可选 legacy inline]
MCP --> NX[netx MCP Server\n13 个工具]
```
---
## 4. netx 平台概览
### 4.1 定位与技术栈
netx 是面向 ZTE UME 环境的网络运维平台(v0.2),提供 Web UI、REST API 与 MCP 接入。
| 组件 | 技术 |
|------|------|
| 后端 | Python 3.11+ / FastAPI / PostgreSQL / Netmiko |
| 前端 | React 19 + Vite |
| 默认端口 | API `:8890`,Web UI `:5173` |
### 4.2 数据来源
- **主路径**:UME RESTCONF + WSS 实时订阅(当前告警、网元清单)
- **兼容路径**:ZTE Alarm Monitor Excel 导入
### 4.3 核心模块
| 模块 | 路径 | 能力 |
|------|------|------|
| UME 同步 | `netx_api/ume_sync_service.py` | 告警/网元定时与实时同步 |
| 只读 CLI | `netx_api/ne_exec.py` | 安全的 show/display/ping 执行 |
| 纳管网元 | `netx_api/managed_ne_router.py` | SSH/Telnet 设备 CRUD、跳板机 |
| MCP 代理 | `packages/netx-mcp/` | stdio → HTTP,不直连数据库 |
| Oclaw 桥接 | `netx_api/ap_client.py` | AI 分析回调 |
| 告警推送 | `netx_api/oclaw_alarm_forwarder.py` | 关键告警 WebSocket 转发 |
### 4.4 netx 内部架构
```mermaid
flowchart TB
subgraph Sources["数据源"]
UME[ZTE UME RESTCONF + WSS]
Excel[Alarm Monitor Excel]
end
subgraph Backend["netx_api"]
Main[main.py FastAPI]
Sync[ume_sync_service]
Exec[ne_exec.py]
AP[ap_client → Oclaw]
FWD[oclaw_alarm_forwarder]
end
subgraph Storage["存储"]
PG[(PostgreSQL)]
end
subgraph Access["访问层"]
Web[React Web UI :5173]
MCP[netx-mcp :8890 API]
end
UME --> Sync
Excel --> Main
Sync --> PG
Main --> PG
Exec --> PG
Web --> Main
MCP --> Main
AP --> Oclaw[Oclaw analyze-sync]
FWD --> Oclaw
```
---
## 5. Oclaw ↔ netx 双向集成
### 5.1 三个集成方向
| 方向 | 机制 | 用途 |
|------|------|------|
| Oclaw → netx | MCP(13 工具) | 运维专家查告警、网元、执行 CLI |
| netx → Oclaw | `POST /v1/ap/analyze` | Web UI 一键 AI 告警分析 |
| netx → Oclaw | WebSocket 告警推送 | 关键告警即时通知到渠道 |
### 5.2 集成时序
```mermaid
sequenceDiagram
participant U as 用户 / 渠道
participant O as Oclaw 运维专家
participant M as netx MCP
participant N as netx API
participant E as UME / 设备
U->>O: 查当前 Critical 告警 Top 10
O->>M: mcp__netx__aggregateUmeAlarms
M->>N: GET /v1/ume/alarms/aggregate
N->>E: 读 PG(已同步数据)
N-->>O: 按 host_name 聚合结果
O-->>U: 结论 + 证据 + 建议步骤
Note over N,O: 反向:netx Web UI 触发 AI 分析
N->>O: POST analyze-sync(带告警上下文)
O-->>N: AI 分析结论
Note over N,O: 反向:关键告警推送
E->>N: WSS 新告警
N->>O: WebSocket netx-bridge
O->>U: WhatsApp / 微信通知
```
### 5.3 认证与环境变量
| 用途 | netx | Oclaw |
|------|------|-------|
| AI 分析桥 | `NETX_OCLAW_ANALYZE_TOKEN` | `OCLAW_OPS_AI_SHARED_TOKEN` |
| 告警 WS | `NETX_OCLAW_ALARM_WS_URL` | `ws://127.0.0.1:8787/ws/netx-bridge` |
| MCP 地址 | — | MCP env `NETX_API_URL=http://127.0.0.1:8890` |
详细说明见 [`docs/NETX_MCP_INTEGRATION.md`](../NETX_MCP_INTEGRATION.md)。
---
## 6. MCP 工具一览
在 Oclaw Admin 安装 MCP(`server_id=netx`)并绑定到 ops 专家后,工具以 `mcp__netx__<toolName>` 形式注入。
### UME 告警
| 工具 | 说明 |
|------|------|
| `queryUmeAlarms` | 分页查询当前告警 |
| `aggregateUmeAlarms` | 按维度聚合统计 |
| `runUmeDiagnostics` | 运行诊断规则 |
### UME 网元
| 工具 | 说明 |
|------|------|
| `queryUmeNeInventory` | 网元清单查询 |
| `getUmeNe` | 单个网元详情 |
### 深查分析
| 工具 | 说明 |
|------|------|
| `queryUmeAlarmsRaw` | 原始字段查询 |
| `aggregateUmeAlarmsRaw` | 原始字段聚合 |
| `listUmeAlarmFields` | 可用字段列表 |
| `sqlQueryUme` | 只读 SQL 查询 |
### 纳管网元 CLI
| 工具 | 说明 |
|------|------|
| `listManagedNe` | 列出纳管设备 |
| `getManagedNe` | 设备详情 |
| `execManagedNe` | 执行只读 CLI |
| `listCliTargets` | 可用 CLI 目标 |
---
## 7. 只读 CLI 安全模型
`ne_exec.py` 是 netx 设备自动化的安全核心,对应 MCP 工具 `execManagedNe`。
```mermaid
flowchart TD
A[execManagedNe 请求] --> B{命令校验}
B -->|show/display/ping| C[解析目标设备]
B -->|configure/reload/delete 等| X[拒绝]
C --> D{目标类型}
D -->|纳管网元| E[SSH/Telnet + Netmiko]
D -->|UME 网元| F[Lazy CLI Profile]
E --> G[执行 ≤5 条命令]
F --> G
G --> H[输出 ≤32KB]
H --> I[结构化返回]
```
**约束摘要:**
- 允许前缀:`show`、`display`、`ping`、`ping6`
- 禁止:`configure terminal`、`reload`、`commit`、`delete` 等
- 单次最多 5 条命令,输出上限 32KB
- 凭证 Fernet 加密,需 `NETX_CREDENTIAL_SECRET_KEY`
---
## 8. Ops 专属 Playbook(Skills)
运维专家处理 netx 相关任务时,须加载对应技能:
| Skill | 路径 | 场景 |
|-------|------|------|
| `ops-netx-ume-playbook` | `skills/_workspace/ops/ops-netx-ume-playbook/` | UME 告警查询/聚合/诊断、网元清单 |
| `ops-netx-managed-ne-playbook` | `skills/_workspace/ops/ops-netx-managed-ne-playbook/` | 纳管设备 SSH/Telnet 只读巡检 |
所有专家也可使用的公共技能:
| Skill | 场景 |
|-------|------|
| `scheduled-workflows` | 周期性多步运维任务(告警周报 → PDF → 发群) |
| `channel-file-delivery` | CSV/PDF 报告通过渠道附件发送 |
Ops 私有技能安装目录:`skills/_workspace/ops/<name>/`(`public=false`)。
---
## 9. 自动化场景
### 9.1 定时告警周报
```mermaid
flowchart LR
A[用户描述需求] --> B[schedule_propose\n生成 recipe 草案]
B --> C[用户确认]
C --> D[schedule_create]
D --> E[Scheduler Worker]
E --> F[ops 身份执行]
F --> G[查 netx 告警]
G --> H[生成 PDF]
H --> I[WhatsApp 群发附件]
```
示例:「每周一 9:00 汇总上周值班告警,生成 PDF,发到 WhatsApp 群」
Recipe 自包含,worker 执行时不依赖原始聊天上下文;创建者专家(ops)的工具上下文会被继承。
### 9.2 关键告警实时推送
netx 匹配到关键告警后,经 WebSocket 推送到 Oclaw,再投递到已绑定的 **WhatsApp 告警群**(详见 [§10 WhatsApp 渠道应用](#10-whatsapp-渠道应用))。
### 9.3 Web UI AI 分析
netx 前端 Workbench 可调用 `/v1/ap/analyze`,将告警上下文发给 Oclaw 运维专家做智能分析。
---
## 10. WhatsApp 渠道应用
WhatsApp 是运维场景中最常用的**移动端触达渠道**:值班人员可在群里直接问告警、收周报、收关键告警推送,无需打开 Admin 或 netx Web UI。
### 10.1 技术架构
当前默认链路为 **Baileys sidecar**(WhatsApp Web 协议),不依赖外部 openclaw 服务:
```mermaid
flowchart TB
subgraph Mobile["移动端"]
Phone[WhatsApp 手机端]
Group[运维值班群]
end
subgraph Sidecar["WhatsApp Sidecar"]
Baileys[Baileys Runner\nruntime/operations/whatsapp_bridge/]
Auth[state/auth 登录态]
end
subgraph Oclaw["Oclaw Gateway :8787"]
Inbound[POST /inbound/whatsapp]
Route[渠道路由\nspecialist=ops]
Ops[运维专家 Agent]
OutQ[出站消息队列]
Bridge[WS /ws/netx-bridge]
end
subgraph netx["netx"]
Alarm[关键告警规则]
end
Phone <-->|扫码关联设备| Baileys
Baileys --> Auth
Group -->|群消息 / 私聊| Baileys
Baileys -->|转发入站| Inbound
Inbound --> Route --> Ops
Ops -->|replies + 附件| OutQ
OutQ -->|轮询 pending| Baileys
Baileys -->|回发| Group
Alarm -->|WebSocket netx.alarm| Bridge
Bridge --> OutQ
```
**关键路径:**
| 环节 | 端点 / 脚本 |
|------|-------------|
| 入站 | sidecar → `POST /inbound/whatsapp` → 返回 `replies[]` |
| 出站 | sidecar 轮询 `GET /whatsapp/outbound/pending` 并发送 |
| 登录态 | `data/channel_sidecar/whatsapp/state/auth/` |
| 扩展实现 | `runtime/extensions/whatsapp/` |
### 10.2 安装与设备绑定
```powershell
# 仓库根目录
powershell -ExecutionPolicy Bypass -File .\runtime\operations\scripts\whatsapp_install.ps1
powershell -ExecutionPolicy Bypass -File .\runtime\operations\scripts\whatsapp_login.ps1 # 控制台打印二维码
powershell -ExecutionPolicy Bypass -File .\runtime\operations\scripts\whatsapp_start.ps1
powershell -ExecutionPolicy Bypass -File .\runtime\operations\scripts\whatsapp_status.ps1
```
| 操作 | 说明 |
|------|------|
| 首次登录 | 手机 WhatsApp → 设置 → 已关联的设备 → 扫码 |
| 重启 sidecar | 一般无需重复扫码(登录态落盘) |
| 换号 / 解除关联 | 先 `whatsapp_stop.ps1 -Force`,删除 `state/auth`,再 `whatsapp_login.ps1` |
| 随全栈启动 | `scripts/start_all.ps1`(未安装 sidecar 时自动跳过并告警) |
### 10.3 路由到运维专家
在 Admin 将 WhatsApp 消息路由到 ops 专家,有两种配置入口:
| 配置位置 | 操作 |
|----------|------|
| **Stack 页面** | `WhatsApp dispatch` 控制卡 → 选「绑定专家」→ specialist 选 `ops` |
| **用户/渠道绑定** | `channel=whatsapp` → 按账号配置专家与模式 |
**交互模式:**
- **绑定专家(expert)**:所有消息直连 ops 运维专家(推荐运维群场景)
- **综合(comprehensive)**:经理 Agent 编排,网络任务委派给 ops
**优先级**:账号级配置 > 通道全局配置 > 默认(`expert + generalist`)
**用户归属绑定**(设备已连、需把联系人归属到团队用户):
1. Admin → 用户/渠道绑定 → 渠道选 `whatsapp`
2. 生成绑定码,用户向机器人发送:`bind <绑定码>`
### 10.4 群聊触发策略
WhatsApp 群聊默认**不会响应每条消息**,避免群内噪声触发 Agent:
| 规则 | 默认值 | 环境变量 |
|------|--------|----------|
| 需要 @ 机器人 | 开启 | `AIA_WHATSAPP_GROUP_REQUIRE_MENTION=1` |
| 文本触发词 | `/oclaw`、`|oclaw` | `AIA_WHATSAPP_GROUP_TRIGGERS` |
| 会话作用域 | 按群隔离 | `AIA_WHATSAPP_GROUP_SESSION_SCOPE` |
```mermaid
flowchart TD
A[群消息入站] --> B{是否 @ 了机器人?}
B -->|是| C[进入运维专家处理]
B -->|否| D{含触发词\n/oclaw 或 |oclaw?}
D -->|是| C
D -->|否| E[静默跳过]
C --> F[查 netx / 生成报告 / 回复]
```
私聊消息不受 @ 限制,直接路由到绑定专家。
### 10.5 运维应用场景
#### 场景一:群内交互式运维
值班人员在 WhatsApp 群 @ 机器人提问,运维专家通过 netx MCP 查告警、聚合统计、执行只读 CLI:
```text
用户(群内):@oclaw 查当前 Critical 告警 Top 5,按 host_name 排名
运维专家:
1. 加载 ops-netx-ume-playbook
2. mcp__netx__aggregateUmeAlarms(severity=critical, group_by=alarm_host_name)
3. 返回结论 + 证据表格
```
#### 场景二:关键告警推送到值班群
netx 配置关键告警规则后,匹配到的告警实时推到 WhatsApp 群,无需人工刷新:
```mermaid
sequenceDiagram
participant UME as UME WSS
participant N as netx
participant WS as Oclaw netx-bridge
participant Q as 出站队列
participant SC as WhatsApp Sidecar
participant G as 值班群
UME->>N: 新告警事件
N->>N: key_alert_matcher 规则匹配
N->>WS: WebSocket event: netx.alarm
WS->>WS: 查 whatsapp_alert_binding
WS->>Q: enqueue_channel_outbound_message
SC->>Q: GET /whatsapp/outbound/pending
SC->>G: 发送告警文本
```
**告警消息格式示例:**
```text
[UME Alarm Raised] Fan
Device: LPG-BKM-AN1-ZM3SP (114.0.24.178)
Object: ME{abc},FAN={/module=0}
Severity: major
Cause: Fan The fan speed level is abnormally high
Time: 2026-06-22T19:29:41.086+07:00
notificationId: 1680996323029
```
**Admin 配置告警群:**
1. 打开 Admin → WhatsApp 相关页面(或调用 API)
2. `GET /admin/api/whatsapp/groups` — 列出已知群(需 sidecar 运行且群内有消息)
3. `POST /admin/api/whatsapp/alert-binding` — 绑定 `group_jid` 并启用
4. `POST /admin/api/whatsapp/alert-binding/test` — 发送测试消息验证
#### 场景三:定时周报发到 WhatsApp 群
结合 `scheduled-workflows` + `channel-file-delivery` 技能:
```text
用户(群内):每周一 9 点把上周告警汇总成 PDF 发到这个群
流程:
1. schedule_propose → 生成自包含 recipe(含 netx 查询口径、PDF 路径、投递步骤)
2. 用户确认 preview_markdown
3. schedule_create(recipe=..., output.need_attachments=true)
4. 到点 worker 以 ops 身份执行 → 查 netx → 生成 PDF
5. save_deliverable_attachment → 投递到创建任务时的 WhatsApp 群
```
Recipe 中 `goal` 示例:
> 每周一 09:00 汇总上一自然周值班告警,生成 PDF 发到当前 WhatsApp 群并 @值班人
#### 场景四:附件报告投递
运维专家生成的 CSV / Excel / PDF 不会自动发出,须调用 `save_deliverable_attachment`:
```mermaid
flowchart LR
A[write_file / run_command\n生成 report.xlsx] --> B[save_deliverable_attachment\npath=...]
B --> C[Agent 文字回复摘要]
C --> D[出站携带附件]
D --> E[WhatsApp Sidecar 发送文件]
```
限制:每轮回复通常只发**第一个** deliverable 附件(约 8MB 上限)。
### 10.6 访问控制
Admin 可配置 WhatsApp 联系人白名单/黑名单(`GET /admin/api/whatsapp/access`),控制哪些号码可与机器人交互。未绑定用户的消息按访问策略处理。
### 10.7 相关环境变量
| 变量 | 说明 |
|------|------|
| `AIA_WHATSAPP_ACCOUNT_ID` | 账号 ID,默认 `wa-default` |
| `AIA_WHATSAPP_GROUP_REQUIRE_MENTION` | 群聊是否要求 @ 机器人 |
| `AIA_WHATSAPP_GROUP_TRIGGERS` | 群聊文本触发词 |
| `OCLAW_OPS_AI_SHARED_TOKEN` | netx-bridge 认证(告警推送) |
| `NETX_OCLAW_ALARM_WS_URL` | netx 侧告警 WS 地址 |
---
## 11. 部署与启用
```mermaid
flowchart TD
S1[1. 启动 Oclaw Gateway\nscripts/start_gateway.ps1] --> S2[2. 启动 netx\nscripts/start_netx.ps1]
S2 --> S3[3. 配置 PostgreSQL + UME 连接\n.env]
S3 --> S4[4. Admin 安装 netx MCP\nserver_id=netx]
S4 --> S5[5. Health Check + Sync Tools]
S5 --> S6[6. 绑定 MCP 到 ops 专家]
S6 --> S7[7. 配置双向 Token]
S7 --> S8[8. Chat 选择运维专家验证]
S8 --> S9[9. 可选:WhatsApp sidecar\n安装 + 扫码 + 路由 ops]
S9 --> S10[10. 绑定告警群 + 测试推送]
```
| 步骤 | 命令/配置 |
|------|-----------|
| Oclaw | `powershell -File scripts/start_gateway.ps1 -Background` |
| netx | `powershell -File scripts/start_netx.ps1` |
| MCP | Admin → MCP Servers → 粘贴 `netx/mcp.json` |
| Token | `OCLAW_OPS_AI_SHARED_TOKEN` ↔ `NETX_OCLAW_ANALYZE_TOKEN` |
| 验证 | Chat 选 ops → 「查当前 UME Critical 告警 Top 5」 |
| WhatsApp | `whatsapp_install.ps1` → `whatsapp_login.ps1` → `whatsapp_start.ps1` |
| 路由 ops | Admin Stack → WhatsApp dispatch → 绑定专家 `ops` |
| 告警群 | Admin → 绑定 `group_jid` → `alert-binding/test` |
一键运维栈:`scripts/start_ops.ps1`(Oclaw + netx);全栈含渠道:`scripts/start_all.ps1`。
---
## 12. 总结
| 维度 | 要点 |
|------|------|
| Oclaw | 多专家 AI 平台,提供交互、编排、渠道 |
| netx | 告警数据面 + 安全设备 CLI 执行 |
| 运维专家 | 证据驱动、netx 深度集成、结构化 Playbook |
| 集成契约 | MCP 13 工具 + 双向 API(分析 / 告警推送) |
| 自动化 | 定时工作流 + 渠道附件 + 实时告警通知 |
| WhatsApp | 移动端运维入口:交互查询、告警推送、周报投递 |
**访问地址:**
- Oclaw Admin:`http://127.0.0.1:8787/admin`
- Oclaw Chat:`http://127.0.0.1:8787/chat`
- netx Web UI:`http://127.0.0.1:5173`
- netx API:`http://127.0.0.1:8890`
---
## 相关文档
- [`README.md`](../../README.md) — Oclaw 快速开始
- [`docs/NETX_MCP_INTEGRATION.md`](../NETX_MCP_INTEGRATION.md) — netx MCP 集成
- [`docs/ARCHITECTURE_OVERVIEW.md`](../ARCHITECTURE_OVERVIEW.md) — Oclaw 架构
- [`docs/RUNBOOK.md`](../RUNBOOK.md) — 部署与渠道配置(§4.2 WhatsApp)
- [`runtime/extensions/whatsapp/README.md`](../../runtime/extensions/whatsapp/README.md) — WhatsApp 扩展说明
- [`skills/_workspace/public/channel-file-delivery/SKILL.md`](../../skills/_workspace/public/channel-file-delivery/SKILL.md) — 渠道附件发送
- [`skills/_workspace/public/scheduled-workflows/SKILL.md`](../../skills/_workspace/public/scheduled-workflows/SKILL.md) — 定时工作流
- [`netx/README.md`](../../../netx/README.md) — netx 项目说明
- [`netx/docs/MCP.md`](../../../netx/docs/MCP.md) — netx MCP 工具文档