aih5 ↔ WorkBuddy 全指令結構定義 · 觸發詞 / 參數 / 回應格式 / 優先級
所有 H5 → WorkBuddy 指令遵循以下統一格式:
{
"cmd": "指令觸發詞(string)",
"id": "UUID 請求ID",
"timestamp": "ISO8601 時間戳",
"priority": 1-5,
"session": "用戶會話ID",
"params": {
// 指令特定參數
}
}
| 優先級 | 數值 | 說明 | 處理策略 |
|---|---|---|---|
| 立即 | P0 / 5 | OCR掃描、香灸配方緊急處理 | 同步返回結果 |
| 高 | P1 / 4 | 文件歸檔、AI分類 | <30秒響應 |
| 中 | P2 / 3 | 搜索查詢、索引更新 | <2分鐘響應 |
| 低 | P3 / 2 | R2同步、批量處理 | 排隊執行 |
| 背景 | P4 / 1 | 統計報告、數據整理 | 定時批量 |
{
"ok": true/false,
"id": "對應請求ID",
"cmd": "指令觸發詞",
"timestamp": "ISO8601",
"data": {
// 指令特定回應數據
},
"error": {
"code": "ERR_XXX",
"message": "錯誤描述"
}
}
共計 12 個核心指令,分為四大類:文件操作、AI處理、系統管理、查詢統計
| 觸發詞 | 名稱 | 優先級 | 功能描述 |
|---|---|---|---|
file_add |
文件歸檔 | P1 | 上傳文件 → AI識別類型 → 自動命名 → 存入R2 → 索引寫入D1 |
file_delete |
文件刪除 | P1 | 刪除R2文件 + 清除D1索引(軟刪除,30天內可恢復) |
file_rename |
文件重命名 | P2 | AI分析文件名 → 建議規範名 → 用戶確認後更新R2+D1 |
file_move |
文件移動 | P2 | 將文件移至目標分類/目錄,更新D1路徑映射 |
| 觸發詞 | 名稱 | 優先級 | 功能描述 |
|---|---|---|---|
ocr_scan |
OCR 掃描識別 | P0 | 上傳圖片 → OCR識別 → 返回文本(香灸配方、紙質SOP專用) |
ai_classify |
AI 自動分類 | P1 | 分析文件內容 → 匹配D1類別標籤 → 返回分類結果 + 置信度 |
ai_tag |
AI 智能標籤 | P2 | 分析文件 → 生成關鍵詞標籤(最多10個)→ 寫入D1索引 |
ai_summary |
AI 文件摘要 | P3 | 對長文本/音頻/視頻生成摘要,返回要點列表 |
r2_sync |
R2 定時同步 | P4 | 本地文件 ↔ R2存儲桶雙向同步,生成變更日誌 |
| 觸發詞 | 名稱 | 優先級 | 功能描述 |
|---|---|---|---|
model_route |
AI 模型路由 | P2 | 切換默認AI模型(Clawbot / OpenClaw / 豆包大模型),無需重啟 |
sync_status |
同步狀態查詢 | P4 | 查詢本地 ↔ R2 ↔ D1 當前同步狀態,返回詳細日誌 |
| 觸發詞 | 名稱 | 優先級 | 功能描述 |
|---|---|---|---|
search |
智能搜索 | P2 | 在D1索引中全文搜索文件名/標籤/摘要,返回排序結果 |
觸發場景:用戶點擊「上傳文件」,選擇圖片/文檔/音頻/視頻後一鍵歸檔
// H5 → WorkBuddy(請求)
{
"cmd": "file_add",
"id": "req-20260425-001",
"timestamp": "2026-04-25T14:30:00+08:00",
"priority": 4,
"session": "sess-abc123",
"params": {
"file_name": "會議錄音_20260425.m4a",
"file_type": "audio", // image | document | audio | video | other
"file_size": 2048576, // bytes
"r2_key": "uploads/20260425/meeting-001.m4a",
"labels": ["會議", "2026-04"], // 用戶自定義標籤(可選)
"auto_classify": true // 是否自動AI分類
}
}
// WorkBuddy → H5(成功回應)
{
"ok": true,
"id": "req-20260425-001",
"cmd": "file_add",
"timestamp": "2026-04-25T14:30:03+08:00",
"data": {
"d1_id": "file-d1-20260425-001",
"r2_url": "https://r2.example.com/...", // 簽名下載鏈接
"tags": ["會議", "2026-04", "商務"],
"category": "會議記錄",
"confidence": 0.92
}
}
觸發場景:用戶拍攝香灸配方卡片/紙質SOP,即時轉文字
特殊要求:響應時間 <5秒,支援中英文混合、手寫字識別
// H5 → WorkBuddy
{
"cmd": "ocr_scan",
"id": "req-20260425-ocr-001",
"timestamp": "2026-04-25T14:35:00+08:00",
"priority": 5,
"session": "sess-abc123",
"params": {
"image_key": "ocr/20260425/recipe-001.jpg",
"mode": "formula", // formula | sop | general
"lang": "zh-CN", // 識別語言
"save_to_d1": true
}
}
// WorkBuddy → H5
{
"ok": true,
"id": "req-20260425-ocr-001",
"cmd": "ocr_scan",
"data": {
"text": "艾灸配方:足三里穴,溫灸15分鐘...",
"confidence": 0.97,
"entities": [
{ "type": "穴位", "value": "足三里", "pos": [12, 15] },
{ "type": "時長", "value": "15分鐘", "pos": [20, 24] }
],
"d1_id": "ocr-d1-20260425-001"
}
}
// H5 → WorkBuddy
{
"cmd": "ai_classify",
"id": "req-20260425-cls-001",
"priority": 4,
"params": {
"d1_id": "file-d1-20260425-001",
"force": false // true = 重新分類覆蓋
}
}
// WorkBuddy → H5
{
"ok": true,
"data": {
"primary_category": "會議記錄",
"categories": [
{ "name": "會議記錄", "score": 0.92 },
{ "name": "商務文檔", "score": 0.65 },
{ "name": "私人文件", "score": 0.12 }
],
"tags": ["會議", "決策", "2026-Q2"],
"reason": "檢測到時間標記、參與者列表、決策結論等結構"
}
}
// H5 → WorkBuddy
{
"cmd": "search",
"id": "req-20260425-search-001",
"priority": 3,
"params": {
"query": "香灸 配方 足三里",
"scope": "all", // all | tags | filename | content
"limit": 20,
"sort": "relevance" // relevance | date_desc | date_asc
}
}
// WorkBuddy → H5
{
"ok": true,
"data": {
"total": 3,
"results": [
{
"d1_id": "file-d1-20260424-015",
"filename": "香灸配方大全.pdf",
"tags": ["香灸", "配方", "中醫"],
"relevance": 0.95,
"snippet": "...足三里穴,主治胃腸疾病..."
}
]
}
}
// H5 → WorkBuddy
{
"cmd": "model_route",
"id": "req-20260425-route-001",
"params": {
"provider": "doubao", // clawbot | openclaw | doubao
"model": "doubao-pro" // 提供商特定模型名
}
}
// WorkBuddy → H5
{
"ok": true,
"data": {
"current_provider": "doubao",
"current_model": "doubao-pro",
"status": "switched"
}
}
POST https://aih5.pages.dev/api/webhook
Content-Type: application/json
X-Session-Key: {session_key}
X-Device-ID: {device_id}
| 機制 | 說明 |
|---|---|
| X-Session-Key | H5 登錄後頒發的會話密鑰,過期時間 24小時 |
| X-Device-ID | H5 設備指紋,防止跨設備攻擊 |
| Rate Limit | 每IP每分鐘 60 請求;P0 指令限 10次/分鐘 |
| HMAC 簽名 | 可選:請求體 HMAC-SHA256 校驗,防止篡改 |
| 代碼 | 說明 | 處理建議 |
|---|---|---|
ERR_AUTH | 會話無效/過期 | 引導重新登錄 |
ERR_RATE_LIMIT | 觸發限速 | 等待後重試 |
ERR_FILE_TOO_LARGE | 文件超過限制 | 提示壓縮或分割 |
ERR_OCR_FAILED | OCR識別失敗 | 建議重新拍攝 |
ERR_R2_UPLOAD | R2上傳失敗 | 稍後重試或更換網絡 |
ERR_D1_WRITE | D1寫入失敗 | 技術團隊排查 |
ERR_MODEL_TIMEOUT | AI模型響應超時 | 降級或稍後重試 |
-- 文件索引表
CREATE TABLE files (
id TEXT PRIMARY KEY, -- UUID
filename TEXT NOT NULL,
file_type TEXT NOT NULL, -- image|document|audio|video|other
r2_key TEXT NOT NULL,
size_bytes INTEGER,
category TEXT,
tags TEXT, -- JSON array
summary TEXT,
confidence REAL, -- AI分類置信度
created_at TEXT,
updated_at TEXT,
deleted_at TEXT -- 軟刪除時間戳
);
-- 標籤表
CREATE TABLE tags (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
color TEXT,
use_count INTEGER DEFAULT 0
);
-- 操作日誌表
CREATE TABLE logs (
id TEXT PRIMARY KEY,
file_id TEXT,
cmd TEXT,
user_id TEXT,
status TEXT, -- success|fail|pending
error_code TEXT,
created_at TEXT
);
-- 用戶配置表
CREATE TABLE config (
key TEXT PRIMARY KEY,
value TEXT,
updated_at TEXT
);
r2://aih5-bucket/
├── uploads/ # 用戶上傳文件
│ └── {YYYYMMDD}/
│ └── {uuid}.{ext}
├── ocr/ # OCR 臨時圖片
│ └── {YYYYMMDD}/
│ └── {uuid}.jpg
├── signed/ # 臨時簽名下載(7天過期)
│ └── {uuid}/
│ └── {filename}
└── backup/ # 定時備份
└── {YYYYMMDD-HH}/
https://aih5.pages.dev/api/download/{r2_key}?expires={timestamp}&sig={hmac}
# 過期時間:默认 7 天(可配置)
# HMAC 密鑰:R2_SECRET_KEY
👤 用戶 H5 App WorkBuddy R2 Storage D1 Database
| | | | |
| [1] 選擇文件上傳 | | | |
|──────────────────────>│ | | |
| | [2] 分塊上傳 | | |
| |───────────────────> | |
| | | [3] 創建R2預簽URL | |
| | |─────────────────────────────────────────>|
| | | [4] 返回預簽URL | |
| |<────────────────────────────────────────────────────────────────|
| | [5] 直接上傳到R2 | | |
| |─────────────────────────────────────────> |
| | | [6] Webhook: file_add |
| | |<─────────────────────────────────────────|
| | | [7] AI分類分析 | |
| | |──────────────────────────────────────────>|
| | | [8] 寫入D1索引 | |
| | |──────────────────────────────────────────>|
| | [9] 返回結果 | | |
|<───────────────────────│ | | |
| | | | |
| [10] 顯示文件卡片 | | | |
| (含標籤/分類/下載鏈) | | | |
batch 指令,支持一次提交多個操作share 指令,支持文件跨用戶共享(基於 R2 策略)T02 H5 框架搭建時,需在 H5 前端實現:
<input type="file"> + 分塊上傳)file_add / ocr_scan 等指令)