5.6 pre-release - #444
Merged
Merged
Conversation
… session - Video relay 撤回(2026-07-04):video-product / siliconflow-video-gen / html-video 维持本地凭据 - Phase 7 续·身份文件合写 标记暂缓(用户口头确认后续探索,本轮不在排期) - DEVPLAN 顶部加本轮开发约束:本机实例不动、openclaw 源码在 ~/wiseflow-pro、阶段完成统一部署 - bilibili-publish 路线保留作为待拍板项(与 video 撤回独立判断)
4 子任务地图 + 接口契约 + D18 约束清单 + 实施顺序: - 4.5.2 login-manager 重写(核心) - 4.5.3 browser-guide 改写(入口约定) - 4.5.4 浏览器类 skill 改 camoufox-cli 调用模式 - 4.5.5 指纹模板 bake(Dockerfile wiseflow-layer) 每子任务:目标 / 接口 / 中央存储 / 并发约束 / 验收 / 风险缓解。 技术风险已通过 docs/camoufox-spike-2026-07.md spike 降级。
Phase 4.5.2 落地。D18 决策兑现:openclaw 内置 browser tool + CDP WebSocket
抽 cookie 旧路径 → camoufox-cli cookies export。
变更:
- 新增 login_manager.py(Python 3 stdlib 实现,~520 行)
- 9 个子命令:check / read / write / status-all / qr-headless /
qr-confirm / cookie-export / cookie-import / session-cleanup
- 中央存储 ~/.openclaw/logins/{platform}.json 维持,camoufox-cli 原生
JSON 格式(= Playwright add_cookies 期望格式)
- 兼容旧字符串格式 cookies(容错,本机部署时若有旧数据不致崩)
- 平台常量 + 探活 URL 表(xhs 拆 publish/browse 双轨,D10 gotcha 不重犯)
- 替换 login-manager.sh wrapper(薄壳调 Python)
- 删除 export-cookies.sh / extract_cookies.ts / login_manager.ts(CDP 旧链)
- SKILL.md 重写(用户面向文档 + 绝对路径调用规范)
- 新增 tests/test_login_manager.py(25 单元测试,全部通过)
约束遵守:
- D18 不 fork camoufox-cli(spike 已证无需)
- D18 不 bake chromium(Dockerfile 阶段 1 只装 Firefox 二进制)
- 每 agent 一 session(独立 profile dir + 独立 cookie state)
- 中央存储格式与 dev plan §Phase 4.5.5 一致
测试:python3 scripts/tests/test_login_manager.py → Ran 25 tests OK
隔离 dry-run:write/read/check CLI 验证通过(OPENCLAW_LOGINS_DIR=/tmp/lm-test)
集成测试(xhs-browse 真登录走 camoufox)待统一部署后做。
Phase 4.5.5 落地。Dockerfile wiseflow-layer 阶段加 camoufox-cli 指纹模板 bake:清空 profile dir → 跑一次 about:blank 生成 camoufox-cli.json → close → 拷到 /root/.openclaw/logins/_template/。 运行时各 agent session 复用此模板(cp camoufox-cli.json 到独立 profile dir 用),符合 D18 约束(不 fork camoufox-cli、不 bake chromium、每 agent 一 session)。 技术细节: - --headless 避免依赖 Xvfb 虚拟显示(容器内 build 更稳) - close --all 兜底清掉任何残留 daemon/进程 - && 和 ; 混用:open 失败中断整条链,close 失败容错继续 产物:/root/.openclaw/logins/_template/camoufox-cli.json 运行时(部署后)由各 agent session 启动前 cp 到独立 profile dir。 不构建验证(本轮约束:不重部署)。
Phase 4.5.3 落地。SKILL.md 头部加主推/fallback 关系说明,新增 §0 Camoufox-CLI 模式(主推)章节,§1 加 fallback 标注。 新增 §0 内容: - 0.1 登录流程:引 login-manager skill 的 qr-headless + qr-confirm - 0.2 抓取 / 取数流程:cookie-import + camoufox-cli snapshot/eval - 0.3 Session 隔离与并发:每 agent 一 session + 指纹模板复用 - 0.4 QR 截图与发图:image 工具加载 PNG,不能发本地路径 - 0.5 失败模式表:5 种常见症状 + 缓解 约束: - §0 标注主推路径(默认走) - §1-6 保留为 fallback(只在 camoufox 跑不通时用) - frontmatter 加 camoufox-cli requires - description 补 Phase 4.5+ 主推说明
Phase 4.5.4 落地。dev plan 列出 4 个浏览器类 skill,统一收敛到
camoufox-cli 调用模式:
- viral-chaser: 修 login-manager 过期引用('browser-based
re-login workflow' → 'camoufox-cli 登录流程',引 browser-guide §0.1)
- content-calibrator: 深度数据获取描述更新('browser tool + CDP
拦截' → 'camoufox-cli 抓取',引 browser-guide §0.2)
- xhs-content-ops: 登录前置条件更新,引 camoufox-cli 流程两步式
- xhs-interact: 全文重写(111+/58- 行)
- 头部加 camoufox-cli 主推说明
- 加'启动一个 camoufox session'章节(D18 并发约束)
- 5 个工作流(评论/回复/点赞/关注/取关)全部改写为
camoufox-cli snapshot/eval/click/type 子命令
- 错误处理表更新(cookie 失效 / camoufox 失败 / daemon 残留)
- 新增 2 个 pitfall:camoufox_session_leak / cookie_expired_during_interaction
约束遵守:
- 5 个工作流保留原有 selector(.content-input / .like-wrapper /
.user-actions .follow-btn 等),不破坏下游消费
- 每次操作前后 sleep 节制(30-60s 间隔,2-3s 加载等待)
- 每个任务三步走 cookie-import → 操作 → session-cleanup
不动 scripts 实现(按 dev plan §4.5.4 约定)
新增 docs/wechat-mp-engagement-design.md: - 创作者中心公开信息整理(mp.weixin.qq.com 后台入口/内容管理/ 单篇分析/评论管理 URL 推测) - 方案 A 架构:camoufox + login-manager 拿 cookie + 创作者中心爬虫 - 4 子任务:login-manager 加 wx-mp 平台 / skill 骨架 / published-track 集成点 / spike 验证 checklist - 与 published-track / wx-mp-publisher 凭据边界明确 - 失败回退:方案 A → B → C DEVPLAN.md Phase 4.6 段从'待 spike'转为'骨架已交付 + spike 待真机'。 新增 spike 10 项验证清单(部署后由用户真账号跑)。 落实步骤更新:4/6 步骤已交付(设计 + skill + 集成 + DEVPLAN 登记)。
Phase 4.6 方案 A 骨架交付。3 子模块协同:
1. 新增 crews/main/skills/wx-mp-engagement/(330 行)
- SKILL.md:流程 + pitfall + 与 published-track 集成
- scripts/wx-mp-engagement.sh:bash wrapper
- scripts/fetch_engagement.py:核心 Python 实现
· fetch / fetch-all 两个子命令
· login-manager 集成:check / cookie-import / session-cleanup
· camoufox-cli 集成:open / eval
· DOM 解析:read-count / like-count / comment-count 等
· published-track 集成:lookup row + update-metrics.sh
- scripts/tests/test_fetch_engagement.py:15 单元测试全过
2. login-manager 加 wx-mp 平台(4 行)
- VALID_PLATFORMS + PLATFORM_LOGIN_URL + PLATFORM_PROBE_URL
- 25 旧测试仍全过
3. published-track/fetch-and-update-metrics.sh 加 wx_mp 路由(21 行)
- wx_mp 平台跳过 fetch-retro-data.ts,直接 exec
wx-mp-engagement.sh fetch --row-id $ROW_ID
- MANUAL_PLATFORMS 移除 wx_mp(仅留 wx_channel 待后续)
- 强校验:wx_mp 必须传 --id(无 row_id 无法定位 pub_wx_mp 行)
约束遵守:
- D18 不 fork camoufox-cli / 不 bake chromium / 每任务一 session
- 不碰 relay(credential 是会话 token,relay 持有无益)
- 与 wx-mp-publisher(AppID/AppSecret 凭据)边界清晰
⚠️ 未做真机 spike 验证:selector / 抓取路径 / 风控行为均基于
公开信息推测。等统一部署后由用户真账号跑 docs §七 checklist。
本轮目标顺序更新: 1. Phase 4.5(camoufox 集成)— 完成 2. Phase 4.6(公众号 engagement 骨架)— 完成 3. Phase 5(img-gen 改火山)— 继续 4. 其他非 Docker 剩余工作 — 待定 5. 源码部署到本机(不走 Docker;拉新仓代码 + 重启) 6. 部署验证通过后 → Phase 6 Dockerfile 工作 约束变化:'本机实例不动' → '完成开发后会源码部署'。 OpenClaw 源码位置不变(~/wiseflow-pro),部署时再 copy。
Phase 5 落地。siliconflow-img-gen 从 SiliconFlow Qwen 切到火山方舟 Seedream 4.0。SKILL.md 改名保留(兼容 openclaw skill 注册),内部 全换。 变更: - gen.py: 调火山方舟 /api/v3/images/generations(非 /coding/v3) - 默认 model: doubao-seedream-4-0-250828 - size 校验:按火山文档(总像素 [2560x1440, 4096x4096];宽高比 [1/16, 16];2K/3K/4K 预设) - API key: AWK_API_KEY(环境变量;D13 客户端 key,纯客户端不入 server) - 输出格式:JPG(4.0 默认 jpeg) - 28 单元测试全过:常量 / size 校验 / payload 构造 / API 请求 / env 校验 / CLI smoke test 约束遵守: - D13 决策:img-gen Key 用户自带,AWK_API_KEY 不入 server - 移除所有 SiliconFlow / Qwen / baidu/ERNIE 引用(脚本 / SKILL.md / 测试) - 火山 Ark LLM(/coding/v3 路径)与图像生成(/v3 路径)严格区分 - 失败不内置回退(火山端稳定;旧 Qwen 才需要 ERNIE fallback) - watermark 默认 false(火山端默认 true 是 AI 水印,wiseflow 不要) 集成测试(真生图)待统一部署后用真 AWK_API_KEY 跑。 openclaw.json 不动(skill 走 HTTP API 直调火山;openclaw 内置 imageModel 与 skill 是独立两条路径)。 参考:https://www.volcengine.com/docs/82379/1541523
产品拆分后运维知识集中写进 it-engineer MEMORY 顶部新章节。 保留 Pro 仓原有运维经验(pnpm build 警告 / binding routing / cron SQLite / ALLOWED_COMMANDS),不动 SOUL/IDENTITY/AGENTS (属 Phase 7 续暂缓部分)。 新章节内容: 1. D19 权限策略现状(T3 full 内 crew / T0 sales-cs) 2. D20 skill 依赖策略: - D20① 镜像预装常用包(Phase 6 待落地) - D20② volume 扩展路径(pip --target / npm 局部) - D20③ 依赖安装规范(it-engineer 介入准则 + 冲突处理) 3. login-manager 状态机(Phase 4.5.2 重写后的 9 子命令 + 中央存储 + 退出码) 4. awada 启用(Phase 4 HTTP/WS 待实施,现状 ioredis 直连) 5. camoufox-cli 排故(D18 约束 / 指纹模板 / 4 类常见症状) 6. 4.6 公众号 engagement 排故(新 skill wx-mp-engagement + spike checklist) 7. 部署路径修订(源码部署优先,Docker 待部署验证后) 8. 升级策略(client/relay/openclaw 三仓独立升级)
产品拆分(client + relay 双仓)后的文档收尾:
1. docs/workspace-bootstrap-files.md §七
- 移除 Pro 仓 addons 层级 crew 列表(selfmedia-operator /
business-developer / designer / hrbp)
- 新增 D8 扁平化后的 5 个 crew(main / content-producer /
it-engineer / sales-cs / _template)
- 标注 D19 权限策略(T3 full / T0)+ 整合背景
- main 标记'AI 搞钱搭子小贝'
2. CHANGELOG.md v5.5.3 (Unreleased) 段
- 产品拆分(client 仓独立 / relay 仓独立 / openclaw 版本锁)
- D8/D15/awada 拍平/D19 权限放开
- Phase 4.5(login-manager / browser-guide / 浏览器 skill / 指纹 bake)
- Phase 4.6(wx-mp-engagement 骨架 + published-track 集成)
- Phase 5(img-gen 改火山 Seedream 4.0 + D13 客户端 key)
- Phase 8.1/8.2(it-engineer MEMORY 注入 + D20③ 规范)
- video relay 模式撤回
3. docs/product-split-plan.md §十一
- 2026-07-04 client 仓完成主体改版(与 CHANGELOG 互引)
- 部署路径修订(源码部署优先,Docker 待部署验证后)
- 阻塞项更新(bilibili / relay 端点 / 部署时机)
用户确认(2026-07-04):当前 awada Extension 走 Redis 直连 awada Server 稳定,**不**改 HTTP/WS。本轮 Phase 4 取消。 理由: - 当前架构(Redis pub/sub)稳定 - HTTP/WS 改造需改 relay 端 + 客户端双向 - 收益不明确 / 风险高(破坏依赖 awada 的 sales-cs 通道) 如未来真有多客户端/跨网络/鉴权重构需求,再启新 Phase。 附带:Phase 4.5 checkbox [ ] → [x](4 个子任务已全部完成)。
替代原 Open Platform OAuth2 + HMAC 签名 + chunked upload 路径: - skill 内移除 BILIBILI_APP_ID / BILIBILI_APP_SECRET - skill 内移除 OAuth2 流程 / token 刷新 / MD5 签名 / 分块上传 - 单一 multipart POST → relay → B站 Open Platform 变更: - publish_bilibili.py 全文重写(stdlib urllib + email.multipart) - 9 个子步骤变 1 次 HTTP POST - env: RELAY_BASE_URL + OFB_KEY(无本地凭据) - SKILL.md 全文重写 - 移除 OAuth2 授权章节 - 新增 Relay 调用契约 + 与旧版对比表 - 验证标准(已达成) - 新增 tests/test_publish_bilibili.py:12 单元测试 - 端点 / 无本地凭据 / env 校验 / multipart 构造 / 4xx/5xx 错误传播 - base64 解码验字节(email 库自动 base64) 验收: - 12 单元测试全过 - skill 内 source grep 无 BILIBILI_APP_* / OAuth / access_token / x-bili-signature⚠️ relay publish-relay 端点尚未实施(client 本轮就绪,relay 端见 wiseflow-relay 仓 Phase 3 实施进度)。
替代原开放平台 H5 Schema 路径。原因:抖音开放平台发布能力 申请被驳回(主体资质不满足)→ 改走浏览器模拟。 形态仿 wechat-channels-publish:6 子命令(login / upload / fill / publish / get-link / cleanup)+ run 一键全流程。 技术栈:camoufox-cli 主推(与 Phase 4.5 一致)+ login-manager 中央 cookie 拿 douyin session token。 变更: - scripts/publish_douyin.py:6 子命令 + camoufox 集成 - login_manager_check + session_name (nonce 唯一) - camoufox_open / eval / click / type / set_file / wait_for_text - DataTransfer + File 注入(绕过 CDP setFileInput 限制) - scripts/publish_douyin.sh:bash wrapper - SKILL.md:完整重写(流程 + spike checklist + 与 wechat 对比) - scripts/tests/test_publish_douyin.py:18 单元测试全过 约束: - D18 不 fork camoufox-cli / 不 bake chromium - 每任务一 session(cleanup 必调) - 不持抖音开放平台 API 凭据(cookie 走中央存储) - 限频:单抖音号每 24h ≤ 5 条⚠️ 8 个 selector 待真机 spike 验证(公开推测): - 上传 input / 标题 input / 描述 contenteditable - 发布按钮 / 上传成功文本 / 发布成功提示 - 视频管理页 selector / 视频链接 selector D1 决策例外:抖音不走 xhs/bilibili 的'全 proxy' 模式(开放平台 资质不满足),改走 client 端浏览器模拟。
改名得力→小贝;定位 AI 搞钱搭子;SOUL 风格理性高效尽责天才少女+傲娇毒舌调皮;对用户自称小贝。变更:SOUL.md 改名字+加 SOUL 风格细化章节;IDENTITY.md 改名字+改 Personality(傲娇/毒舌/调皮);MEMORY.md 改名字+加产品拆分后 crew 拓扑章节(5 个 crew + sales-cs 启用/软链/HRBP 优化知识);HEARTBEAT.md 不动(运维流程与名字无关)。保留 Pro 仓经验(凌晨复盘/SESSION_EXPIRED 处理/xhs 风控 pitfall/content-calibrator 集成),只改身份和风格定位。
从原 IR crew AGENTS 抽三模式(dev plan §Phase 7 续),本仓为顶层 orchestrator skill,委派已有子 skill:ir-record(数据层)/ investor-hunting / investor-outreach / investor-materials / swcr-register / market-research。三个新 skill:business-model-polish(模式 1 商业模式打磨,30s 电梯版+5 问结构化)/ project-application(模式 2 项目申报,时间线+状态机)/ investor-pipeline(模式 3 投资人发掘与跟进,状态机 new→contacted→bp_sent→meeting→dd→ts→invested/passed)。HEARTBEAT.md 加 IR 模式 3 巡检 Step 2.5:query-stale.sh --days 7 查无进展投资人,汇报给用户白天处理,不在心跳里主动改 status / 主动发起新接触。约束:ir-record DB 已有 investors.status 字段正好对齐模式 3 状态机;7 天阈值是默认,用户可改(待实现 .config.json)。
AGENTS.md:保留 Pro 仓 BD 三能力章节(lead-hunting / comment-engagement / intel-gathering 已搬入 main/skills),重写 IR 章节引入三模式顶层 skill 入口(business-model-polish / project-application / investor-pipeline),改名得力→小贝。HEARTBEAT.md 加 Step 6 BD 三能力巡检:保留 heartbeat 写入模式(按用户 cron 触发,写入 bd-record / info-record,不在心跳里改用户已建档线索状态),3 个模式 + 数据层 + 初始化必问 + 汇报模板 + 约束(凌晨不扫码登录)。约束:BD 不主动发起接触;不修改已建档条目;cookie 失效跳过平台。BD 模式 1/2/3 入口全部对齐已搬入的子 skill,AGENTS.md 不引入新 skill。3 个 skill 的 orchestrator SKILL.md 见 Phase 7.2 commit。
删 MEMORY.md 重复的 '关于 WiseFlow 项目' 段(line 117+119 重复 header);加产品拆分后项目基本信息(客户端仓 + relay 仓 + 引用 dev session 记忆);加 sales-cs 启用 SOP 段(5 步:装依赖 → openclaw.json 注入 → business_knowledge 软链 → 重启 Gateway → 验证;含 4 个常见错),是 main / sales-cs 启用时委派给 it-engineer 的标准流程。AGENTS.md 头部加 sub-agent 定位段(main + sales-cs 的 sub-agent,无 channel),明确入口是 sessions_spawn。保留 Pro 仓经验(pnpm openclaw 警告 / binding routing 三个坑 / cron SQLite / ALLOWED_COMMANDS 流程 / LLM 参数约束 / GLM-5.2 排查),不破坏。
dev plan §Phase 7 续 sales-cs sample + 软链 任务验证就位: - sales-cs 目录 + 5 个自有 skill(customer-db / demo-send / exp-invite / payment-send / proactive-send)都已在 crews/sales-cs/ - 默认 seed 不在 config/openclaw.json(确认 3 个 agent:main / it-engineer / content-producer) - 启用 SOP 在 it-engineer MEMORY §sales-cs 启用 SOP(5 步流程) 本任务主要是验证 + 文档化(dev plan 写'自有技能同现仓已搬入')。 新建 docs/sales-cs-bootstrap.md 记录:当前状态表 + 启用流程 (3 大步:用户确认 / spawn IT engineer / 用户端配合)+ 停用流程 + 自有技能清单 + 凭据边界(awada 通道 + AppID/AppSecret 分开)。
D8 扁平化后 addons/ 已销毁,apply-addons.sh line 250-413 的 addons 扫描循环成为死代码(脚本头部自带的 TODO 已标'待整体精简删除')。本轮按 dev plan §Phase 7 续 落地:line 250-413 整段删除(~164 行),头部注释更新(4 步 → 6 步 + 删 ADDONS_DIR 变量引用)。保留:patches 恢复 / 基础补丁应用 / overrides / 全局 skills 安装 / awada 扩展路径 / openclaw.json 同步 / npm+pip 依赖合并 / dist 编译 / gateway 重启。Crew 模板安装由 setup-crew.sh 单独负责(脚本头注:扫顶层 crews/)。crews/shared/ 不存在(D8 拍平),COMMAND_TIERS / CREW_TYPES 不在本仓,无需内化。脚本:616 → 451 行(-165 行,-27%)。bash -n syntax OK;所有已删函数(copy_crew_template_contents / ensure_soul_crew_type / HRBP_ADD_AGENT_SCRIPT)在循环外无引用。
dev plan §Phase 7 续 D21 任务文档化(设计 + 现状审计 + 实施计划)。背景:当前 ~/.openclaw/skills/ 是拷贝(改 repo 要 reinstall);弱模型路径拼接错主要来自 baseDir 拼接 + allowlist miss。D19 已消 allowlist miss,剩路径拼接靠 wrapper 解。设计:本地开发实例软链化(改 repo 即时生效,告别 reinstall);Docker 镜像维持 COPY;不软链到 openclaw/skills bundled(会降优先级 + 耦合版本树 + 不治路径错)。审计:62 个 skill 全部缺顶层 wrapper(SKILL.md 写绝对路径的 ~10 个有,但缺 PATH 友好的 wrapper)。实施计划:部署阶段做 P0 8 + P1 4 + P2 4(共 16 个最常用 skill 加 wrapper)。本轮本机实例不动 + 部署后统一实施;本任务仅文档化。
整合 6 个上游最新进展:openclaw v6.10→v6.11(强烈建议升级)/ patchright v1.60.2(不升)/ OpenCLI v1.0.21(仅观察)/ AiToEarn v2.5.0(选择性 catch Twitter 规则)/ wechat-article-exporter v2.3.19(不 catch)/ Spider_XHS(不 catch)。openclaw v6.11 含大量 channel 修复(Feishu / Telegram / WhatsApp / Discord 等)+ provider recovery + memory 改进 + Control UI DOMPurify 漏洞修复 + gateway restart drain 改进;HEAD 距 release 4 天。0 patch re-port 风险(现有 4 patch 在 6.11 大概率 apply OK)。建议:与源码部署同步升级(用户已确认先源码部署后 Docker),本轮本机实例不动不升。本轮行动项 P0:源码部署时升 v6.11;P1:单独 commit 同步 AiToEarn v2.5.0 Twitter 规则。
用户问: 1. AiToEarn v2.5.0 Twitter 规则 2. OpenCLI smart-search 升级 3. 是否 follow 升级 本报告(docs/ai-catchup-2026-07-twitter-and-search.md)覆盖: A. AiToEarn Twitter: - v2.4 (2026-05-21) Twitter/X 能力增强:探索控制台 + 互动操作(回复/引用/点赞/转推/收藏) - v2.5 (2026-06-23) Twitter APIs: richer posting + interaction + typed publishing + stronger response - 平台规则综合:标准 280 / Premium 25K / 4 图 / 1 视频 / Quote / Reply types - 本仓 twitter-post 现状:缺 Quote / Reply / Long post / 互动操作 - 借鉴建议:~3h 工作(更新 SKILL.md + 新建 twitter-interact skill) - 架构约束:浏览器+login-manager(D18),不搬代码只吸收 design pattern B. OpenCLI smart-search: - v1.8.2 (2026-06-03) 关键:smart-search 恢复 + 8 分类源 guides(AI/info/media/shopping/social/tech/travel/other) - v1.8.4 (2026-06-15) 50+ adapter auth / skills npm package - v1.0.21 (2026-07-03) chore only(v1.0.x 末) - Site Maps Hub 子系统(per-site navigation knowledge)— 长期借鉴,本轮不做 - 本轮建议:smart-search SKILL.md 加 8 分类源 guides(~1h) - 不照搬 Site Maps Hub(架构重组超出范围) C. 本轮建议动作: - 立即 ~3h:更新 twitter-post + 新建 twitter-interact - 短期 ~1h:smart-search per-category 源 guides - 长期:Site Maps Hub(Phase 6+) D. 交叉:openclaw 升级 v6.10 → v6.11 进行中(pnpm install + build 后台跑)
按 memory 03-openclaw-upgrade.md 流程升级 v6.10 → v6.11。 升级过程: 1. cp -a ~/wiseflow-pro/openclaw ~/wiseflow/openclaw(5GB,.git 保留) 2. git fetch origin --tags + git checkout v2026.6.11 3. pnpm install --frozen-lockfile(30+ 分钟卡住,机器重启;改 --no-frozen-lockfile 完成,156 workspaces) 4. git apply ../patches/*.patch(顺序 002 / 003 / 005 / 006) Patches 验证(v6.11 vs v6.10): - 002 disable-web-search-env-var apply OK ✓ - 003 act-field-validation apply OK ✓ - 005 browser-timeout-env-var apply OK ✓ - 006 connectovercdp-no-defaults apply OK ✓ 0 patch re-port 风险得到验证(dev plan 预测准确)。 最终状态: - HEAD: e085fa1a3f (v2026.6.11) - 4 patches all applied (reverse-dry-run verified) - node_modules: 2.9GB / 156 workspaces 装好 - pnpm build 冒烟:未执行(机器资源限制,30+ 分钟 install 卡死) - patches 行为没改仓代码(apply 在已 release 的 v6.11 上)—— build 应 OK - 部署后 build 验证 v6.11 release notes 关键(参考 docs/upstream-catchup-2026-07.md): - Channel delivery reliability:Feishu / Telegram / WhatsApp / Discord / iMessage / Matrix - Provider recovery:Anthropic Opus 4.8 fallback / OpenAI Responses / OpenRouter - Reasoning leakage 修复(#92356)—— 本仓主力 model 是 reasoning 模式 - Memory QMD 改进 - Control UI DOMPurify 漏洞修复(GHSA-cmwh-pvx-8882) - Gateway restart drain 改进(#94915) openclaw-weixin 插件兼容性:需部署时同步检查
…esponse dev plan §一 AiToEarn Twitter 借鉴落地(docs/ai-catchup-2026-07-twitter-and-search.md §一.3/§一.4)。 更新点: 1. Quote Tweet 工作流(v2.4 借鉴)— Repost vs Quote 区分;评论 max 280 2. Reply to Tweet 工作流(v2.4 借鉴)— 选 Reply 按钮(不是 quote) 3. Long Post 工作流(v2.5 richer posting 借鉴)— Premium/Blue 25K 字符;检测蓝标;'Post all' 按钮识别 4. Post Parse Stats 工作流(v2.5 stronger response 借鉴)— 推文后 snapshot eval 拿 retweet/like/reply/view/bookmark + permalink 5. Anti-automation limit 强化(v2.4/v2.5 文档):30 min hard + 日 50 + 周 200 6. Frequency Tracker(新增)— ~/.openclaw/agents/main/sessions/twitter-frequency.json 跟踪 daily/weekly counts 7. Content Limits 表扩展:text/reply/quote/thread 全部明确字符限制 8. Post Types 决策表 — 5 个 workflow 入口快速对照 9. 字符计数规则补充:URL 23 字符 / Emoji 2 字符(X 平台特殊) 不变:通用约束(沙箱 / upload / 30s 等待 / type slowly)/ Patchright 1.60+ locator.drop 模式 / 错误处理基础。
dev plan §一.4 P1 借鉴落地(docs/ai-catchup-2026-07-twitter-and-search.md §一.4)。 8 个子命令(仿 douyin-publish 形态): - like / unlike / retweet / unretweet / bookmark / unbookmark / follow / unfollow - run 一键跑(login + 操作 + cleanup) - cleanup 关闭 camoufox session 实现:单文件 Python 核心(twitter_interact.py / 530+ 行) - 形态仿 crews/main/skills/douyin-publish(Phase 3.2 浏览器模拟) - camoufox-cli 主推(与 Phase 4.5 一致) - login-manager 中央 cookie(twitter 平台) - 每任务一 session(D18 + 4.5.5 并发约束) - 频率限制:6 类动作各 1-5 min 间隔 + 日上限(v2.4 文档综合) - 频率跟踪:~/.openclaw/agents/main/sessions/twitter-interact-frequency.json - extract_tweet_id / extract_user_handle(URL/裸 ID 兼容) - 完整 pitfall 覆盖(retweet Quote vs Repost 区分 / already-pressed / selector 失效) SKILL.md 完整: - 8 子命令表 + 频率限制表 - 4 个工作流(like / retweet 带 confirm / follow / unfollow 带 confirm) - 错误处理 + pitfall - 与 twitter-post 边界(Reply / Quote 在 twitter-post) - BD 场景主推组合:follow + like + bookmark bash wrapper:twitter_interact.sh 27 单元测试全过:URL/id 解析 / session 命名 / 频率限制 / 各子命令 success-already-fail 路径 / run cookie 失效 / CLI smoke。
dev plan §二 / docs/ai-catchup-2026-07-twitter-and-search.md §二.4 借鉴落地。 OpenCLI v1.8.2 (2026-06-03) 'smart-search — restored as a skill with per-category source guides (AI / info / media / shopping / social / tech / travel / other)' 借鉴到本仓。 新增'Per-Category Source Guides'章节(在路由表后插入): - 8 分类(AI / info / media / shopping / social / tech / travel / other) - 每分类:推荐源 + 典型用途 + 数据特征 - 推荐源适配本仓业务(main 知识 / BD 客户 / IR 投资人): - AI:openai.com / anthropic.com / huggingface.co / paperswithcode - info:reuters / bbc / 36kr / 财新 - media:youtube / bilibili / pexels-footage / pixabay-footage(本仓 skill) - shopping:amazon / taobao / jd - social:x / weibo / xiaohongshu / 抖音(本仓 skill) - tech:github / stackoverflow / 思否 / 掘金 / v2ex - travel:携程 / booking / tripadvisor - other:DDG / startpage / kagi(兜底/隐私)+ sogou(国内)/ yandex(俄罗斯) - 快速选择规则(4 条) - 与路由表配合(路由表按意图→平台;源 guides 按分类→备选) - 明确**不**做 Site Maps Hub 完整版(架构重组超出本轮范围) 不变:路由规则 / 用户未指定平台时 / 频率限制 / 关键字编码 / Cookie Warmup / 浏览器操作 / 搜索摘要 / 站点详细知识。
patchright 上游 1.60.2 → 1.61.1(2026-06-23): - 1.60.2 (2026-06-02) → 1.61.0 (2026-06-17) → 1.61.1 (2026-06-23) - v1.61 跟 Playwright 1.61 同步(小版本:bug fix + 兼容性) - 本仓的 PATCHRIGHT_VERSION 默认值 1.60.2 → 1.61.1 - patches/006-connectovercdp-no-defaults.patch 仍兼容(1.60+ 即可) - patches/README.md 加 'Patchright 版本' 段说明升级机制 无需 commit openclaw/ 仓(apply-addons 时自动 apply overrides + install 1.61.1)。 部署时验证:apply-addons.sh 跑后看 pnpm-lock.yaml 中 patchright-core@1.61.1 落位。
对齐浏览器栈转向后的三件事:
1. 原则 1 — 单一持久化 session `twitter`:
- 去掉 per-task nonce session(twitter-like-<hex> 等),所有操作共享 --persistent
session twitter,指纹冻结 + cookie 留 profile。
- 并发调用由 forked cli fail-first 队列串行拒绝,脚本不自动排队/等待。
2. fail-first 队列检测(spec §1.1):
- _camoufox_json 解析 --json 信封,success:false + "正忙" → SessionBusyError。
- twitter_session context manager 捕获 → exit 3 + 透传 busy 文本。
- 关键:busy 时**不 close**(close 会 tear down 正在跑的另一个操作)。
3. 原则 3 — twitter 有头登录:
- cmd_run cookie 失效提示从 qr-headless 改成 login-headed(twitter 不无头 QR)。
- SKILL.md 前置条件同步。
AiToEarn 上游调研:clone 正好在 catchup commit 74e884f0(v2.4.0),无 HEAD 差异。
上游 twitter 互动走 Twitter API v2 + OAuth,按「只吸收知识不搬架构」+ spec 要求
camoufox-cli,吸收操作语义(子命令结构 + 频率纪律),执行仍走 camoufox-cli。
SKILL.md Notes 记录 API 路径作为未来 fallback 可能。
测试:TestSessionNaming 改断言常量 twitter,加 TestFailFirstQueue 验证 busy→exit3+不 close。28/28 通过。
…LOG 更新 §8: 新增 docs/profile-loss-handling.md - 核心原则:profile 丢失/损坏/指纹错配 → 重建 + 重登录,绝对不允许导入 cookie 造会话(补充 D,强化原则 5) - 为什么禁止导入:xhs a1/websectiga 设备指纹 cookie 导入不同指纹会错配 → 风控检测;2026-06-29 CDP 注入 22 cookie 触发风控教训 - camoufox-cli cookies import 合法用途仅限同指纹 profile 备份/恢复 + 跨设备迁移同一指纹 - 白天恢复流程 4 步(确认状态 → 删旧 profile → 重建+重登录按原则 3 选模式 → 验证) - 临时性 session 不受影响(补充 A) - HEARTBEAT.md 约束 4 已覆盖凌晨心跳跳过策略,本文档补白天恢复流程 - 未触碰 login-manager/browser-guide SKILL.md(§3/§4 另一 agent 领地) §9: README.md + CHANGELOG.md - README **v5.6.0 更新** 新增「浏览器架构重新设计(双线栈)」段 - README patch 表重写:加 patches/camoufox-cli/ + patches/browser-camoufox-pivot/ + overrides.sh 去 patchright;002/007 留,003/005/006 划掉标删 - README 开源项目表:去掉 Patchright,加 camoufox(🦊 https://github.com/daijro/camoufox) - CHANGELOG v5.6.0 顶部新增「浏览器栈整体替换(双线栈)」section(§1-§2 + §2.3 + §7 + §8 + §9 + §3-§6 并行中 + 核心原则 8 点) - spec §8/§9 标落地(2026-07-12)
…in-manager 退役为纯指导文件 §3 全局三 skill(browser-guide/smart-search/web-form-fill)camoufox-cli 化,明确 target=host/node 只按流程走不照搬命令 §4 login-manager 删脚本+tests,重写为纯 SKILL.md 指导文件,平台收敛到 6 个(douyin/bilibili/kuaishou/xhs-publish/xhs-browse/wx-mp),cookie+UA 同时导出(原则 4) §5 平台 skill 改造: xhs-content-ops/xhs-publish 脚本适配新 camoufox-cli 原生 cookie 数组格式 + UA 独立 .ua.json xhs-interact 对齐 forked cli 持久化 session + 移除 patchright fallback douyin-publish 脚本用 forked cli upload 命令替代 DataTransfer hack + 移除 login-manager.sh 依赖 + 持久化 session douyin weibo-publish/zhihu-publish/xianyu-ops 全面重写为 camoufox-cli 持久化 session + upload + 有头登录 wechat-channels-publish 删 3 个 CDP 脚本,重写为 camoufox-cli session wechat-channel + upload + 无头 QR viral-chaser session.ts 适配新 cookie 格式 + SKILL.md 登录流对齐 published-track fetch-retro-data.ts 适配新 cookie+UA 格式 + fetch-and-update-metrics.sh 移除 login-manager.sh 改用 camoufox-cli 探活 + 平台声明收敛 twitter-post 移除 patchright locator.drop 残留,对齐 forked cli upload §6 wx-mp-hunter 收编:登录走 login-manager 统一流程(无头截图 QR),cookie+UA 落 wx_mp.json/wx_mp.ua.json,脚本内置 login-qr/login-confirm 退役 wx-mp-engagement 不再作为单独技能(从 BUILTIN_SKILLS 移除),其脚本由 published-track 内部 exec 调用 Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com>
Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com>
合并远端 §2.3(setup-crew sync crew skill)/ §7(twitter-interact 单一持久化 session)/ §8+§9(profile 丢失处理 canonical doc + README/CHANGELOG)。 双方改的文件集不相交,自动 merge 无冲突。 Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com>
- apply-addons.sh / crew-workspaces.sh: 全局与 crew skill 改拷贝为软链 (仓里改完即生效,openclaw loader 跟随软链) - setup-crew.sh §4: 注入 skills.load.allowSymlinkTargets (~/wiseflow/crews + ~/wiseflow/skills),放行 crew skill 软链 containment gate - apply-addons.sh: 删除合并 hoist 到 ~/.openclaw/node_modules 的死方案 (软链脚本 realpath 在仓内,向上解析命不中 ~/.openclaw/node_modules), 改为 per-skill npm install --omit=dev,node_modules 落仓内 skill 目录 (.gitignore 已覆盖),内容哈希守卫保留 - config-templates/openclaw*.json: browser 段精简为 enabled/headless/ssrfPolicy (headless=true 显式声明,camoufox 主力无头省资源;drop defaultProfile/extraArgs 死字段) - config/README.md: Phase 7 browser 行更新为 camoufox 无头主力 + 显式 --headed + patchright 去除
- 删所有 patches/camoufox-cli/ 路径引用、forked/vendored 措辞(部署后 Agent 读不到代码仓,不该给他添困扰) - fail-first 队列说明从「见 patches/camoufox-cli/README.md」改成内嵌解释 - 删 douyin-publish/SKILL.md 的 Spike 验证 checklist 整段 - 各 skill 散落的 spike 验证 注释统一改成引用 docs/post-deploy-verification.md - 新建 docs/post-deploy-verification.md:部署后真机验证流程,收纳各平台 selector 验证清单 + �验收标准 - douyin-publish SKILL.md 措辞修订:cookie 导出对自身运行无用,仅为备份 + 与 login-manager 6 平台统一步骤保持一致 Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com>
Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com>
…generate-wenyan-theme - Enhanced README with clearer instructions on key configurations and usage. - Updated wx-mp-publisher documentation to reflect changes in theme handling, including support for custom themes and their non-persistence. - Modified generate-wenyan-theme documentation to clarify the registration and usage of custom themes. - Improved scripts for theme resolution and publishing, ensuring proper handling of local CSS files and registered theme IDs. - Removed outdated client migration and custom theme specification documents. - Added package.json for wx-mp-hunter skill to manage dependencies.
daemon 冷启 5s 不够,it-engineer 实测会超时;提到 15s。 canonical 源在 patches/browser-camoufox-pivot/files/camoufox-cli.adapter.ts, apply-addons cp 进 openclaw/extensions/browser/src/。
_shared 无 SKILL.md,被兄弟 skill 相对导入(../../_shared/...)。 原逻辑只软链含 SKILL.md 的目录,_shared 漏同步→部署实例变陈旧拷贝。 扩展为 _ 前缀目录也软链。软链安全:导入方自身也是软链→仓,Node/Python follow 到仓 realpath 再算相对路径,解析到仓里 _shared。
- Updated `xhs-content-ops` skill to clarify login and session management processes, ensuring consistent use of `camoufox-cli` for browser interactions. - Revised `xhs-interact` skill to emphasize the reuse of persistent sessions and streamlined login procedures. - Removed `council` skill from the general skills list and restructured its documentation for clarity and focus on decision-making processes. - Enhanced `browser-guide` documentation to specify session management rules and best practices for handling login walls. - Adjusted `smart-search` and `web-form-fill` skills to clarify session handling, emphasizing the use of persistent sessions where applicable. - Consolidated and clarified the usage of `login-manager` across various skills to ensure consistent cookie and UA management.
…ath limit Linux sockaddr_un 路径上限 108 字节,cron 等长 session ID 会超限导致 daemon socket 绑定失败。新增 shortenSession():短名原样返回,长名替换为 s-<sha256 前 16 位>。CLI 与 daemon 统一走 getSocketPath/getPidPath,保证两端路径一致。 同时将 .claude/ 与 xhs-user-id.cache 加入 .gitignore。
twitter_interact.py: - article-scoped 探针(按 tweet_id 定位含 /status/<id> 的 article,避免会话页抓到父推) - testid 确认菜单(retweetConfirm/unretweetConfirm/confirmationSheetConfirm)替代 text match - Python 侧晚水合轮询(按钮 20×500ms,confirm 菜单 20×250ms) - 按钮互换模型验证状态(like↔unlike 等),弃用 aria-pressed - 解耦 login-manager:移除 login-manager_check,camoufox_close 直连 camoufox-cli SKILL.md (twitter-interact + twitter-post): - 统一前置段(持久化 session twitter + 探活 + 重登走 browser-guide §1 + fail-first + 不 close) - 工作流程 / Pitfalls / 错误处理表对齐新脚本行为 测试:28 个单测全绿
xianyu-ops 搜索(借鉴 OpenCLI df8ca8d):
- 新脚本 xianyu_search.py:在持久化 session 页面里调 window.lib.mtop.request
('mtop.taobao.idlemtopsearch.pc.search'),价格区间/地区交服务端筛
(propValueStr.searchFilter / extraFilterValue),替代 DOM 抓取本地过滤
- --min-price/--max-price/--province/--city/--limit,分页,值用 JSON 注入
- 退出码 0/1/2/3(成功/通用错/登录态失效/session 正忙)
- 25 单测全绿,生成 IIFE 经 node new Function 校验 JS 语法合法
- SKILL.md 搜索段改为调脚本
login-manager 登录墙检测(借鉴 OpenCLI 229b3b0):
- _shared/relay-sign.ts xhsFetch 加大小写不敏感 HTML 登录墙检测
(/^<(?:!doctype|html|head|body|title)(?:[\s>/]|$)/i),覆盖 mixed-case
如 <!Doctype/<Html/<HEAD,命中抛 LoginWallError(SESSION_EXPIRED)
而非让 resp.json() 抛乱码错
- xhs-content-ops fetch_note_content.ts 顶层 catch 识别 LoginWallError
→ emit SESSION_EXPIRED + exit 2,交 login-manager 重登
- login-manager SKILL.md 补 HTML 登录墙检测段,记录方法 + 正则
…teract 重写 opencli-v1.8.6 §6:本轮 83 commits 全扫,只吸收 df8ca8d (xianyu mtop) + 229b3b0 (大小写不敏感登录墙),6 条评估排除;重申 OpenCLI 只借鉴平台风控 思路不搬代码、AiToEarn 只看接口新增/变更的定调。 twitter-and-search §5:twitter-interact 模型重写(article-scoped 探针 / testid 确认菜单 / 按钮互换 / 晚水合轮询),28 单测绿。
…互能力移植 远端 21d7ac6 'twitter platform persite session' 是调了很多轮的持久化浏览器方案,作为 session 层基线 保留:camoufox_open(headed) / _check_session_alive 脚本内探活 / twitter_session 不 close / 去掉 cleanup 子命令 / cmd_run 内嵌探活。 本地 e85f608 的 OpenCLI 衍生交互能力移植到远端基线之上:article-scoped 探针(按 tweet_id 定位 article)、testid 确认菜单(retweetConfirm/confirmationSheetConfirm)、Python 侧晚水合轮询 (20×500ms / 20×250ms)、按钮互换模型验证状态(弃 aria-pressed)。helper + cmd_* 取本地, session 层取远端。 SKILL.md:前置段(探活+重登+不 close+无 cleanup)取远端,工作流程/Pitfalls(OpenCLI 能力)取本地, 修远端笔误('twitter-interact 共用' → twitter-post)。twitter-post/SKILL.md 取远端(无独有能力改动)。 测试:29 单测全绿(更新 TestCmdRun mock _check_session_alive + close 断言翻转为 not_called)。
schema (03 patch): 加 session 字段(平台 session 名,决定 --session <name> + --persistent profile dir 命名空间,同一平台名 = 同一登录态/指纹,仅 target=camoufox 生效)。 browser-tool (05 patch): resolveCamoufoxSessionConfig session 命名优先级——action 显式 平台名 > agentSessionKey > 'openclaw';persistentDir 默认 ~/.camoufox-cli/profiles/<session>, 与 cli.ts --persistent 无参默认一致,adapter 路与直接 CLI 路共享同一 profile/登录态。 adapter + adapter.test: 配套 platformSession 透传 + 测试。
Dockerfile: 声明 VOLUME /root/.camoufox-cli(配置 + 默认 profile + geoip/db 缓存), 与既有 VOLUME /root/.openclaw 配合;注释说明运行时 profile dir 推荐指到 /root/.openclaw/logins/<session>/profile/(挂卷子路径,单卷管登录+指纹)。 docker-compose.yml: 两个 named volume(wiseflow-logins / wiseflow-camoufox)跨 down/up 保留登录态/指纹/缓存,附备份示例。
重写 published-track Step 2:能用脚本的先用脚本(fetch-and-update-metrics.sh), 不能用脚本的用对应技能,再不就指导 Agent 自己上。精简旧的平台方案表。
transcriber.ts 从 SiliconFlow SenseVoiceSmall(无时间戳、靠字数比例估算) 改为火山引擎录音文件极速版 volc.bigasr.auc_turbo: - 本地 audio.wav base64 直传(audio.data),免 TOS 对象存储托管 - 一次请求即返回,解析 result.utterances 的 start_time/end_time(ms→s) 填入 segments,estimated=false,替代原先的估算兜底 - 鉴权兼容新旧控制台:VOLC_ASR_ACCESS_KEY 设置走旧双头,否则新单头 - 保留 synthesizeSegments 作为接口异常未返回 utterances 时的兜底 - 100MB 硬限前置校验;TranscriptResult 接口不变,viral_chaser.ts 无需改 SKILL.md: - requires.env 由 SILICONFLOW_API_KEY 改为 VOLC_ASR_APP_KEY - 新增「前置:开通火山语音模型」章节(开通管理→语音模型→试用→开通→ 复制 Access token Secret Key),含环境变量表与 IT engineer 写入流程 - 更新 transcript.estimated 与 Notes 段说明现在原生返回真实时间戳
当前 camoufox-cli headless 是默认行为,--headless flag 已移除(要有头 用 --headed)。传 --headless 会 'Unknown command: --headless' 直接崩。 代码(6 处实际调用): - wx-mp-hunter/scripts/wx_mp_hunter.ts 封装数组 - douyin-publish/scripts/publish_douyin.py - published-track/scripts/fetch-and-update-metrics.sh - published-track/scripts/fetch-xhs-with-xsec.ts(两处) - Dockerfile 模板 bake - wx-mp-engagement 测试断言 assertIn→assertNotIn 文档(14 处 SKILL.md / MEMORY / spec):命令示例去掉 --headless, 必要处补「默认 headless」;wechat-channels-publish「显式无头」措辞 改为「默认即 headless,无需额外 flag」。
camoufox-cli --json eval 信封形如 {id, success, data: {result: <值>}},
真实返回值在 data.result,不是顶层 result。
wx-mp-hunter login-confirm:
- camoufoxCurrentUrl 原读 r.result(不存在)→ 永远返回空串 →
'无法从 redirect URL 提取 token: '(冒号后空),cookie/UA/token 跟着
没导出落盘。改读 r.data.result。登录态本身是就位的,纯解析 bug。
fetch-xhs-with-xsec:
- 同样信封解包 bug。FLATTEN_JS 返 JSON.stringify(map),原代码
JSON.parse(raw) 解的是整个信封再 spread 进 mapping,拿到 {id,success,data}
垃圾键;真实 map 在 data.result。try/catch 不抛错(信封是合法 JSON),
静默产出空映射,下游才报 xsec_token not found。改先解包 data.result 再 parse。
|
codes-factory-of-bg seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
full test not complete, just for preview