客服系统 · 开发/验收任务计划
Agent 执行用 · v3.0 · 2026-04-24 · Per-biz OpenClaw
Agent-Driven
Per-biz Workspace
Phase 1 首业务 5 周
OpenClaw 全工作流
文档定位:AI Agent 执行开发。v3.0 核心:每业务一个独立训练的 OpenClaw workspace,OpenClaw 承担完整工作流;Cloudflare 只做边缘接入 + 前端 + 精简管理台。每任务含范围/产出/验收/依赖,Agent 逐条自检,未通过登记 §17,不得自判通过。
配套:customer-service-plan.html(方案) · prototype.html(原型) · 配置.md(凭据) · customer-service-tasks.md(同内容 MD)
1. v3.0 架构口径
每 biz 一套 OpenClaw workspace,独立训练,OpenClaw 承担完整工作流(AI 首轮 / RAG / 升级判断 / 业务 API / Approvals)。Cloudflare 只做边缘接入 + 前端 + 精简管理台持久化。
| 能力 | 组件 |
| AI 引擎 + 业务工作流 | N × OpenClaw workspace 在 /opt/openclaw/workspaces/{biz}/(每 biz 一套 SOUL.md / skills / workflows / integrations / memory / sessions / approvals / channels) |
| OpenClaw 入口 | Cloudflare Tunnel per-biz ingress:{biz}-cs.int.yitongcs.com |
| 用户前端 | Pages cs-widget,data-biz="{biz}" 决定走哪个 workspace |
| 坐席/管理端 | Pages cs-console + Cloudflare Access SSO + TOTP |
| REST/WS | Workers cs-api(唯一 Worker) |
| WS 终结 | DO BridgeDO(薄转发,无业务状态) |
| 坐席抢单 | DO AgentPresenceDO per biz |
| 主库 | D1 ytk-cs-db(5 表:workspaces/knowledge/agents/training_samples/audit_log) |
| 对象存储 | R2 cs-assets |
| 指标/日志 | Analytics Engine + Logpush |
| 邮件/防刷 | Email Routing + Turnstile |
v2.0 → v3.0 去掉:Vectorize(→ OpenClaw Memory)· Queues(→ OpenClaw 内部事件)· KV 路由规则(→ SOUL.md 决策树)· v2.0 的 SessionDO(→ OpenClaw Sessions 管 + BridgeDO 纯转发)。
2. Agent 执行规范
| 项 | 要求 |
| 上下文 | 读 plan + 配置.md |
| 代码仓库 | CF 端 cs/workers/ + cs/durable-objects/ + cs/pages/ + cs/d1/;OpenClaw 侧每 workspace 独立 git openclaw-ws-{biz} |
| 部署工具 | wrangler / cloudflared / openclaw / gh |
| Secrets | 绝不入库;wrangler secret put;本地 .dev.vars |
| 测试 | Vitest + Miniflare;每 workspace 须有 tests/soul.test.yaml 对 Agent 行为做断言 |
| 遇阻 | 立刻登记 §17,不绕过安全检查 |
3. P0 前置阻塞 P0
T-00-01修复 OpenClaw AI provider
现状:channels list 返 refresh_token_reused/401
操作:yitongkan 执行 openclaw configure / channels login;首选 Claude 4.6 主 + Codex 备
验收:openclaw run --prompt 'ping' 返回文本
T-00-02升级 OpenClaw
目标:2026.4.22+;快照 ~/.openclaw/ 到 /opt/openclaw/backup/YYYYMMDD/
验收:openclaw --version 无告警
T-00-03账号 / 路径规范化
范围:决定 OpenClaw 侧由 yitongkan 或 ytk-cs;目录由 /opt/yitongkan-company/ 迁到 /opt/openclaw/workspaces/
产出:cs/docs/runbook-accounts.md
验收:ls /opt/openclaw/workspaces/ 至少有 _template/ 与 ytk/
T-00-04CF 账户能力核查
范围:Workers Paid / D1 / DO / R2 / Pages / Access / Turnstile / Email / AE / Logpush
产出:cs/docs/cf-resources.md
验收:wrangler whoami / d1 list / r2 bucket list 对得上
4. Workspace 基础 W0
T-10-01创建 workspace 模板 _template/
产出:IDENTITY.md + SOUL.md(最小可用)+ AGENTS.md(白名单)+ skills/faq/ skills/escalate/ + channels.yaml(默认 web-bridge)+ tests/soul.test.yaml(plan#19.2)+ .gitignore(排除 memory/sessions/approvals)
验收:openclaw run --workspace _template --prompt "测试" 启动成功
T-10-02fork ytk/ workspace
操作:openclaw ws clone _template ytk;填 IDENTITY + 基础 SOUL(plan#5.2 示例);git init + push 到 github.com/yitongkan/openclaw-ws-ytk
验收:openclaw run --workspace ytk --prompt "我要投诉" 输出含「转接人工」
T-10-03Cloudflare Tunnel per-biz ingress
操作:cloudflared tunnel create openclaw-tunnel;config.yml 按 plan#6.2;每 biz 加一行 ingress + 一个 Zero Trust App + Service Token
Worker secrets:OPENCLAW_CF_ACCESS_ID_YTK / OPENCLAW_CF_ACCESS_SECRET_YTK(含 biz 后缀便于轮换)
T-10-04Telegram 内测链路
操作:ytk workspace 开启 Telegram channel + approvals
验收:5 人内测 → openclaw approvals list --workspace ytk 有待审;审核后消息 Telegram 落地
T-10-05Integration · ytk-api(主站 API)
产出:integrations/ytk-api.yaml(plan#5A.5)base_url + bearer token + 端点(orders.get / accounts.lookup / vip.status / room.status)+ pii_scrub
密钥:openclaw vault set --workspace ytk YTK_API_TOKEN=...,不入 git
验收:openclaw run --workspace ytk --prompt "调 accounts.lookup 测 contact=18812345678" 返脱敏账户信息
T-10-06Integration · ticket-system
产出:integrations/ticket-system.yaml:POST /v1/tickets;auth=hmac 或 bearer;响应含 ticket.id / tracking_url
验收:staging 创建 ticket 返回 id
T-10-07Integration · dns-admin(备用域名,可选)
产出:integrations/dns-admin.yaml:mTLS;端点 domains.backup.list + domains.backup.activate(后者 confirm_required: true)
验收:list 返回当前 biz 的备用域名列表
T-10-08Workflow · refund(退款流程)
产出:workflows/refund.yaml(plan#5A.2)6 步:collect_identity → verify → collect_order → query_order → ask_reason → confirm → create_ticket → done;含 on_cancel / on_escalate
SOUL 触发:SOUL.md §3A「意图命中 trigger.intents 立刻启动 workflow」
测试:tests/flows/refund.test.yaml mock API 响应 + 固定用户序列;断言 tickets/create 被调 + 返 id;覆盖取消 / 不可退 / 已退款边界
T-10-09Workflow · account-query(简单流程)
产出:1~2 步:调 account/lookup → 返脱敏摘要
验收:触发正确输出;非本人查询返 403 式话术
T-10-10Workflow runtime(OpenClaw 侧)
范围:若 OpenClaw 原生无 workflow runner,需实现 plugins/workflow-runner/(~300 行 TS,读 yaml → state 机 → dispatch);否则出一份调研说明用原生能力即可
验收:T-10-08 / T-10-09 能实际运行
5. Cloudflare 基础设施 W1
T-20-01D1 schema(5 表)
产出:cs/d1/migrations/0001_init.sql(plan#8 五表 + 索引)
验收:apply 成功;sqlite_master 返 5 表
T-20-02初始化 cs_workspaces
范围:插 ytk 一行:stage=bootstrapped,tunnel_host=ytk-cs.int.yitongcs.com,path=/opt/openclaw/workspaces/ytk,channels=["web","telegram"]
验收:管理台能读
T-20-03KV / R2
产出:KV cs-runtime;R2 cs-assets(logs/ 30d,backups/ 30d lifecycle)
验收:list 命令可见
T-20-04仓库骨架
结构:cs/workers/cs-api · cs/durable-objects/{bridge-do,agent-presence-do} · cs/pages/{cs-widget,cs-console} · cs/d1/migrations · cs/shared
验收:pnpm i 通过;wrangler deploy --dry-run 每子项目通过
6. cs-api Worker + BridgeDO W2
T-30-01cs-api Worker
栈:TS + Hono;绑定 D1/KV/R2/BridgeDO/AgentPresenceDO/AE/Email/per-biz OpenClaw secrets
路由:plan#9 全部(/cs/{biz}/* · /agent/* · /admin/*)
biz 路由:URL path {biz} + header X-CS-Biz 双重校验;查 D1 cs_workspaces 拿 tunnel_host
验收:curl + Postman 全覆盖;Miniflare 通过
T-30-02BridgeDO(薄转发)
验收:并发 50 稳定;断连重连可续接 OpenClaw session
T-30-03shared/openclaw-client.ts
API:run / approvals.{list,approve,modify,reject} / sessions.{get,messages} / memory.{search,reindex} / workspaces.soul.{read,write}(write 自动 git commit)
容错:2 次重试 / 10s 超时 / 10s 内 3 次错熔断半开
验收:单测覆盖成功 / 401 / 超时 / 熔断
T-30-04用户鉴权 + Turnstile
范围:主站 JWT / 游客 cookie → BridgeDO upgrade token(KV 15min);首建会话必验 Turnstile
验收:无 token 401;Turnstile fail 拒
T-40-01Web Component 浮窗
栈:TS + Web Component + Shadow DOM;Pages cs.yitongcs.com
嵌入:<script src="https://cs.yitongcs.com/widget.js" data-biz="ytk" async></script>
验收:dist/widget.js.gz ≤ 50KB;dev 端到端对话;宿主 CSS 不污染
T-40-02多 biz 验证
测试:同页挂 data-biz="ytk" + data-biz="bizdemo" 两个 widget
验收:两对话的 matched_faq 来自不同 workspace
8. AgentPresenceDO + 坐席台 W3
T-50-01AgentPresenceDO
范围:per biz 一实例;30s 心跳;Alarm 90s 超时;原子 claim;10s 写 KV 快照
验收:100 并发 claim 1 人成功;90s 无心跳剔除
T-50-02Access SSO + group policies
Apps:cs-console(agents + TOTP)· cs-admin(admins + TOTP + Step-Up)
Worker:校验 Cf-Access-Jwt-Assertion → cs_agents.access_email
验收:未登录跳 Access;/agent/me 返 profile
T-50-03坐席后端 API(透传 Approvals)
范围:plan#9.2 全部;队列 = approvals.list(biz) 透传
操作语义:approve(good_ai)/ modify(待复核)/ reject(bad_ai)三姿态 → OpenClaw approvals API + D1 cs_training_samples
验收:三姿态完整走通;D1 + OpenClaw 数据一致
T-50-04坐席台前端(Angular)
布局:三栏(队列/消息/用户信息),队列按 biz 分 tab(跨业务坐席)
AI 草稿卡:workspace + 置信度 + 引用 skills/faq/entries/*.md 路径可预览
Ctrl+K:搜 workspace memory + 快捷操作
验收:三姿态 D1 + OpenClaw 一致;跨 biz tab 无上下文错乱
9. 管理台 · Workspace W3–W4
T-60-01Workspace 列表
范围:每 biz 卡片:stage / 版本(SOUL.md hash 前 8 位)/ 渠道 / 在线坐席 / 24h 解决率 / 改写率 / LLM 成本
新增 biz:表单 → Worker 调 workspace 创建 skill(或记录待运维手工执行)
验收:新增 bizdemo 后列表出现
T-60-02SOUL.md 在线编辑器
功能:读写 SOUL.md(via workspaces.soul.*);git 历史 + diff;保存 = commit + 审计;可选立即同步;一键回滚 checkout 指定 commit
安全:写入要求 Access Step-Up;必须先跑 tests/soul.test.yaml 全绿才允许生效
验收:改规则 → 保存 → 测试 → 生效;回滚一键恢复
T-60-03Skills / Channels / Memory 视图
Skills:只读列出 skills/ 下条目(文件名 + description)
Channels:展示 channels.yaml;支持开关 Web/Telegram/WhatsApp/Discord
Memory:memory.search 查询,top-5 命中
验收:三 tab 真实数据
T-60-04阶段切换(双签)
流程:POST /admin/workspaces/{biz}/stage body {target, approver_email};要求另一 admin 5 分钟内确认
验收:双签通过才改 stage;审计记两人签名
T-60-05Workflows 可视化管理
列表:读 workflows/*.yaml,展示 name / version / 步骤数 / trigger.intents / 24h 运行数
详情:yaml 编辑器(走 PR)+ 可视化 DAG(只读)+ 漏斗分析(按 step 转化)+ 最近 50 次运行(cs_workflow_runs)
测试回放:一键触发 tests/flows/{flow}.test.yaml
验收:refund DAG 可见;24h 有 20+ 记录;漏斗合理;一键测试有结果
T-60-06Integrations 管理 + 健康检查
列表:读 integrations/*.yaml,展示 base_url / auth type / 端点数 / 健康 / 24h QPS / 错误率
健康检查:Cron 每 1 分钟探活 → KV 缓存;密钥仅显示 metadata(过期时间 / 最后使用),永不展示明文
审计:改 yaml 走 PR;改密钥 Access Step-Up + 双签 + cs_audit_log
验收:三个集成可见;token 设为无效 → 1 分钟内变红 + 邮件告警
T-60-07Workflow 观测埋点
范围:每步进出 / skill call / integration HTTP 写 AE(blob1=biz/blob2=flow_id/blob3=step_id)
入库:workflow 结束写 cs_workflow_runs 摘要
验收:AE 能画漏斗;D1 至少 100 行 refund 样本
10. 管理台 · 知识库 W4
T-60-10FAQ CRUD(per biz)
范围:增删改;发布 = status=published
验收:D1 数据正确
T-60-11同步到 workspace
流程:POST /admin/workspaces/{biz}/sync → 读 D1 published → 写 skills/faq/entries/{id}.md → memory.reindex → 更新 synced_at
失败:单条错标 sync_error,不阻塞其他
验收:同步后相关提问在 workspace 能命中回答
T-60-12批量导入 CSV/JSON
范围:POST /admin/knowledge/import?biz=
验收:100 条 TOP 工单问答入 D1 draft
11. 管理台 · 训练语料 W4
T-60-20Training samples 复核
范围:per-biz 筛选;待复核/good_ai/bad_ai/need_sop;AI vs 人工并排;一键「新建 FAQ」把人工最终作为新 FAQ
验收:复核 10 条 label 正确;新建 FAQ 流程走通
T-60-21月度 JSONL 导出(Cron)
范围:每月 1 日 04:00 → per-biz JSONL → R2 training/{biz}/{yyyy-mm}.jsonl
验收:R2 有文件;格式 {biz,q,a,label} 无错行
T-60-22D1 每日备份(Cron)
范围:03:30 → wrangler d1 export → R2 backups/d1/;保留 30 天
验收:3 天 3 文件;抽 1 可恢复
T-60-23Workspace 每日快照(Cron)
方案:03:45 → OpenClaw 侧 skill 打包 openclaw ws export --workspace={biz} → R2 backups/workspaces/{biz}/
验收:3 天 3 份;可恢复
12. 附件 / 评价 / 移动端 W4
T-70-01R2 附件(presigned)
流程:Widget → /cs/{biz}/upload → R2 S3 presigned PUT 15min;MIME 白名单;10MB 上限
路径:cs/{biz}/{yyyy-mm}/{uuid}.{ext}
验收:上传 → 下载 → 超时 403
T-70-02满意度评价
范围:会话关闭弹 👍/👎 + 文字 → AE + D1(ref OpenClaw session)
验收:差评入 cs_bad_rating_rate_1h(per biz)
T-70-03Android WebView
范围:打开 cs.yitongcs.com/?biz=ytk&channel=android&token=...;附件 JS bridge
验收:Android 机一次含附件会话
13. 监控 / 熔断 / 安全 W5
T-90-01Analytics Engine 埋点(含 biz tag)
指标:plan#16.1 全部;所有 blobs 含 biz 字段
验收:AE SQL 按 biz 分组返回数据
T-90-02告警(per biz)
渠道:Email Routing → alerts@yitongcs.com
规则:error_rate / queue / bad_rating / tunnel,每 biz 独立触发
验收:注入 ytk 故障 → 邮件;bizdemo 不受影响
T-90-03Logpush
验收:wrangler tail 实时;R2 logs/ 有文件
T-B0-01熔断(per biz)
条件:1h 差评 > 10% 或 OpenClaw error > 20% → 该 biz stage 临时置 paused + Email 告警
验收:模拟差评 → 该 biz 降级;其他 biz 正常
T-B0-02Turnstile + rate limit
范围:Widget 首建 Turnstile;/cs/{biz}/session 每 IP 10/min
验收:429 与 fail 均拒绝
T-B0-03Tunnel Token 轮换 SOP
周期:90 天;wrangler secret put OPENCLAW_CF_ACCESS_SECRET_{BIZ}
产出:cs/docs/runbook-tunnel.md
验收:演练一次无感知
T-B0-04出站二次扫描
范围:敏感词常量写在 Worker 代码(非 KV,防篡改);出站二次扫描兜底
验收:10 条样本全拦截转人工
T-B0-05TLS / 保留期 / 审计
要求:TLS 1.3;OpenClaw sessions 保留 180 天(workspace 配置);删会话/导训练集 → Step-Up + audit
验收:curl -vI TLSv1.3;删操作 Step-Up + 审计记录
14. BizN Onboarding E2E 验证 W5
T-A0-01bizdemo 端到端
范围:从零按 plan#14 SOP 走完 7 步到灰度 10%
产出:cs/docs/onboarding-bizdemo.md 记录每步耗时 + 问题
15. 文档 / 培训 W5
T-C0-02Trainer 培训
产出:trainer-handbook.md(如何读 samples → 修 SOUL → 提 PR → 灰度)+ 30 分钟录屏 R2
T-C0-03坐席培训
产出:agent-handbook.md(三姿态 / 跨 biz / Ctrl+K)
16. Phase 1 灰度(per biz)
| 阶段 | 范围 | 前置 |
| G-1 | Telegram Demo(内部 10) | §4 完成 |
| G-2 | dev 100% | §5–§7 完成 |
| G-3 | 生产 10% | §8–§12 完成 + 监控 + 脱敏 |
| G-4 | 生产 50% | G-3 稳定 3 天无 P1 |
| G-5 | 生产 100% | §13 完成 |
BizN 可并行独立灰度节奏。
17. Phase 2 门禁(per biz)P2
| 指标 | 阈值 | 观测 |
| AI 自助解决率 | ≥ 75% | 连续 4 周 |
| 差评率 | ≤ 3% | 连续 4 周 |
| 敏感话题兜底率 | 100% | 30 天 0 漏判 |
| 训练语料覆盖 | TOP 100 / 问 ≥ 20 样本 | 一次性 |
| 熔断演练 | ≥ 1 次 | 历史 |
| SOUL.md 自动化测试 | 100% 通过 | 每次改动 |
18. 阻塞项登记
任务无法推进追加一行;不得跳过任务自判通过。
19. W5 交付清单
- 所有
T-XX-XX done
- ytk workspace 生产 100% ≥ 7 天稳定
- bizdemo 完成端到端隔离验证
- AE per-biz 看板 ≥ 24h 可见
- R2 有 D1 / workspace 两条备份线 30 天
- 运维 / Trainer / 坐席 三套手册 + 录屏
- Tunnel Token 轮换流程演练过
- ytk Phase 2 门禁指标基线已记录