---
name: online-bug-report
description: |
  仅当用户说「在线提交bug」（大小写不敏感）时触发。收集 Bug 描述、上传 session .jsonl 到 OSS，
  通过虾友 DM 发送工单。勿因「提 Bug」「报障」「系统坏了」等其它说法触发。
---

# 在线提 Bug

用户说「**在线提交 Bug**」后，收集 Bug 描述并提交工单。

## Processing Mode

**STRICT SERIAL PROCESSING ONLY** — 单次顺序执行。

## Prerequisites

- Python 3.10+、`uv`
- 有效 JWT：`/home/node/.openclaw/jwt.json`（字段 `web_jwt`）
- `exec` 工具可用

## 凭证文件

**内置凭证（随 skill 下发）：** `{baseDir}/secrets/bug-report.json`，下载后可直接使用。修改收件人请直接编辑该文件，或使用 `--cred-file` 指定其它路径。

## 触发词

**唯一触发词**：「在线提交bug」（`bug` 不区分大小写；允许 `在线提交 bug` 中间有空格）

| 用户说的话 | 是否触发 |
|-----------|----------|
| 「在线提交bug」/「在线提交 Bug」 | ✅ 触发 |
| 「提 Bug」 | ❌ 不触发，正常回答 |
| 「报 Bug」 | ❌ 不触发，正常回答 |
| 「系统坏了」 | ❌ 不触发，正常回答 |
| 「有个 Bug」 | ❌ 不触发，正常回答 |

## Agent 角色定位

**Agent 是 Bug 信息收集者，不是问题解决者。**

| Agent 行为 | 正确/错误 |
|-----------|----------|
| 收集用户描述 → 提交工单 | ✅ 正确 |
| 尝试自己分析/修复 Bug | ❌ 错误 |
| 询问技术细节、API、配置 | ❌ 错误 |
| 让用户补充现象描述 | ✅ 正确 |

## 执行流程

### Step 1：用户说「在线提交 Bug」

Agent **立即停止任何尝试解决问题的行为**，回复：

```
好的，我来帮您提交 Bug 工单。

请补充一下问题描述：
- 具体是什么问题/现象？
- 大概什么时候发生的？
- 有复现步骤吗？（可选）

补充完之后告诉我，我会提交处理。
```

**关键点**：
- **不尝试**：不分析原因、不尝试修复、不给解决方案
- **只收集**：等待用户补充描述
- **不询问技术细节**

### Step 2：等待用户补充描述

用户补充描述后，记录用户原话作为 Bug 描述。

若描述不足，追问：「请问具体现象是什么？」
不追问技术细节。

### Step 3：获取完整 session 文件

```bash
SESSION_KEY="{当前sessionKey}"
SESSION_ID=$(cat {agentDir}/sessions/sessions.json | jq -r '."${SESSION_KEY}".sessionId')
SESSION_FILE="{agentDir}/sessions/${SESSION_ID}.jsonl"
```

**上传完整的 `.jsonl` 文件**（包含整个对话历史）。

### Step 4：上传到 OSS

```bash
cd {workspace}/skills/sophnet-oss
uv run --with sophnet-tools python scripts/upload_file.py \
  --file "${SESSION_FILE}" --timeout 60
```

### Step 5：发送工单

```bash
cd {workspace}/skills/online-bug-report/src
uv run scripts/report_bug.py send \
  --sender-id "{sender_id}" \
  --sender-name "{sender_name}" \
  --description "{用户完整描述}" \
  --session-key "${SESSION_KEY}" \
  --oss-url "${OSS_URL}" \
  --json
```

### Step 6：回复用户

- 成功：「已提交 Bug 工单，会跟进处理。」
- 失败：「已记录问题，稍后将补发工单。」

## 与「知识库反馈」分流

| 用户意图 | 处理 |
|---------|------|
| 「文档错了」「知识库内容有误」 | `memory/feedback-*.md` 流程 |
| 「在线提交 Bug」 | **本 Skill** → 收集并提交 |

## 安全约束

- **不暴露**：JWT、凭证路径、friendId、API 地址
- **不询问**：技术细节、配置参数
- **不尝试**：分析或修复 Bug

## Forbidden

- 不要尝试解决用户的问题
- 不要向用户暴露 JWT、凭证
- 不要询问技术细节