15 KiB
15 KiB
2026-09-02 工作日志
工作台 UI 调整(09:53-10:15)
- 09:53 打开 MCN 工作台(服务重启,PID 32336,
?v=20260902-0953#/) - 账号详情页账号信息(data-pages.js:412-413):去掉「年龄」「地区」,重排两行——行1=抖音号/作品数/获取视频,行2=赛道/AI制作/粉丝/获赞;简介/账号定位/视频列表不变
- 视频详情字段间隔/对齐(style.css:383-385 + data-pages.js:552-556,多轮迭代定稿):
- 需求:字段横向间隔参考账号信息(flex+80px)→ 但「分享/收藏」与「时长/发布时间」要求跨行对齐
- 迭代教训:flex 内容宽度天然不跨行对齐;独立 .info-row 容器各自 grid 也不会对齐(跨容器不共享列轨道)
- 终版方案:8 字段(账号/视频ID/时长/发布时间 + 点赞/评论/分享/收藏)合并进同一个
.video-grid容器(2行×4列 grid,repeat(4, minmax(min-content, max-content))+ gap 10px 80px + justify-content:start),列轨道跨行共享→严格对齐,列宽贴合内容非均分;标签行 info-wide 占满整行 - 视频ID 限宽 220px(.vid-limited,省略号+hover title 全量)
- 服务未重启(纯静态资源,Cache-Control: no-store,重开页面即生效)
失误与规避:浏览器操作工具选择(10:15)
- 失误:验证页面时误用 agent-browser(system 技能列表可见),未遵守铁律「浏览器操作一律 browser-harness」(user 级技能)
- 检查:browser-harness 环境未安装——技能目录只有 SKILL.md,无 subskills/browser-harness/envs/(browser-harness.exe 不存在)
- 规避:需要浏览器自动化/截图时,先查
C:\Users\maidou\.workbuddy\skills\browser-harness\subskills\browser-harness\envs\browser-harness\Scripts\browser-harness.exe;未装则uv tool install --python 3.12 --upgrade --force browser-harness+ doctor 验三要素;不装 agent-browser
browser-harness 真实环境定位 + 对齐实测通过(10:20 纠正昨日误判)
- 纠正:browser-harness 并未"未安装"——真身在源技能
project/短视频脚本创作/V1.0/subskill/mcn-dou-analysis/subskills/browser-harness/(envs/browser-harness/python.exe 完整存在,已验证);另有C:/Users/maidou/.dsh/skills/browser-harness/src(无 envs)与D:/miniconda3/envs/browser-harness(08-28 用过)两处 - 昨天实测主流方式(非 python IPC):Node + WebSocket 直连 9223 CDP 脚本(mcn-work-shop/cdp-verify-.mjs、cdp-measure-.mjs 等 30+ 个),Runtime.evaluate 测量 DOM;browser-harness python 调用(BU_CDP_URL=9223 + PYTHONPATH=/src + env python -m browser_harness.run heredoc)今天实测 IPC 超时(daemon 0.1.8 vs client 0.1.10 版本不匹配)
- 9223 调试 Chrome:
chrome.exe --remote-debugging-port=9223 --user-data-dir=C:/Users/maidou/.workbuddy/tmp/bh-chrome-9223;新开 Tab 访问 localhost 会 chrome-error,必须复用现有 8900 标签页 - 对齐实测(新脚本 cdp-align-videoinfo.mjs):视频详情 .video-grid 8 字段逐列 left 完全一致(账号@41=点赞@41、视频ID@157=评论@157、时长@404=分享@404、发布时间@549=收藏@549,差 0)✅ 结构修复生效
browser-harness 移至主技能 subskill(16:00-16:25,用户要求收尾)
- 目录移动:
V1.0/subskill/mcn-dou-analysis/subskills/browser-harness/→V1.0/subskill/browser-harness/(envs/src 完整;mcn-dou-analysis/subskills 现仅剩 nuwa-skill-main) - 路径说明更新三处:① mcn-dou-analysis/SKILL.md「browser-harness 依赖(红线)」行——技能本体改为 主技能
短视频脚本创作/subskill/browser-harness/(不再挂 mcn-dou-analysis 下)+ dsh 环境~/.dsh/skills/browser-harness/;② references/浏览器搜索抖音账号操作规范.md 第159行环境说明 + 第175行技能本体,两处同步新位置;③ V1.0/SKILL.md 新增「外部技能依赖:浏览器工具(browser-harness)」小节登记 - 残留检查:全仓库 grep
mcn-dou-analysis/subskills/browser-harness与旧~/.dsh/skills/browser-harness无残留 ✅ - git:rename 识别完美(175 R + 3 文档修改,envs 被 .gitignore 忽略不进库),commit a255abd,push 8278865..a255abd 成功(fetch 无分叉)
- 注:M70h3o 轮询任务(S6 修复后重跑 6 创作任务)completed 通知已收到,但任务已不在存储中,验证结果无法追溯
趋势折线图收尾:数据管线实测 + push(16:23-16:35)
- 4 个 commit 统一 push:4473f15 /
dd15f12/d43578e/ cad3560,c314723..cad3560 main -> main(fetch 确认无分叉) - 真实 API 管线验证通过(关键:路由是
/api/dsh/account-videos?accountId=1629&pageSize=500,响应字段items非 list;/api/account-videos返回 Not Found):- 36 条全量视频、时间升序正确(2026/04/15 → 2026/08/17)
- numOf 解析 "3.5万"→35000 正确;点赞 2.6万
1838万 / 评论 45432万,双 grid 独立 y 轴量级适配良好 - tooltip 格式化、NaN 检查、语法检查全部通过
- 验证经验:Git Bash 下 /tmp 路径映射有问题(-o /tmp/x.json 落盘失败),临时文件用工作区内路径(.trend-check.json 用完即删)
- 浏览器实渲染未验证(9223 调试实例未开,遵守 Chrome 红线不主动开启),页面已带
?v=20260902-f#/account/1629重开供用户查看
趋势图「看不到」排查 + tab 直达修复(11:19-11:30)
- 根因:非代码 bug——图表只在「视频列表」tab 渲染,而重开 URL
#/account/1629默认停在「账号信息」tab(data-pages.jstab='info'),用户打开看不到图表 - 排查过程:① ECharts 资源完整(Node 拉取 1121883B/MIME 正确;curl 0B 是输出重定向假象)② 服务端 data-pages.js 含图表代码且语法 OK ③ 路由分发正常 ④ API 数据管线 36 条正常 ⑤ 9222 无 CDP 响应、9223 未开(遵守红线不主动开)
- 修复两处(data-pages.js):① hash 第三段支持直达 tab——
#/account/1629/persona→ 视频列表(含趋势图);② renderTrendChart 去掉静默 return——echarts 缺失显示「图表组件未加载」、数据不足显示「暂无足够视频数据」空态提示 - 重开
?v=20260902-tabfix#/account/1629/persona直达视频列表 tab - 经验:图表/交互元素「看不到」先查默认状态(tab/滚动/折叠)是否遮挡,再查资源与代码;Node vm 沙箱无法完整模拟 ECharts 6(缺浏览器 API,MozPerspective 报错属预期)
趋势图「白色横杠」根因 + 容器结构修复(11:27-11:32,P0 级 UI bug)
- 用户反馈:「只有一条白色横杠」→ 图表容器渲染了但高度失效
- 根因:data-pages.js 466 行
panel = '<div class="trend-chart" id="trendChart"></div>'——.trend-chart与#trendChart同挂一个 div,而 CSS 是后代选择器.trend-chart #trendChart { height: 240px },后代选择器匹配不到自身 → 容器高度只剩 padding(8+4=12px),ECharts 画布被压缩成一条细杠 - 修复:拆两层
<div class="trend-chart"><div id="trendChart"></div></div>,后代选择器命中,240px 高度生效 - 经验固化:HTML 结构
class+id同挂一个元素时,后代选择器(父 class 子 id)必然失效——class 是外壳、id 是内层必须拆两个元素;写 CSS 后代选择器前先核对 HTML 层级 - commit d9cbfd8;重开
?v=20260902-heightfix#/account/1629/persona
趋势图单图双 Y 轴彩色版(11:30,用户要求)
- 需求:「这两个折线可以放在一张图里,图要彩色的,Y轴数字单位用 w 万」
- 实现(data-pages.js renderTrendChart 重写):原双 grid 上下分区 → 单 grid 双 Y 轴(左=点赞红 #E54D42 / 右=评论蓝 #3B82F6),各带同色面积渐变;
wanTickformatter——≥1万显示「x万」(整万不带小数),<1万原值;tooltip marker 跟随序列色;X 轴 MM/DD - 量级设计:点赞 2.6万
1838万 vs 评论 45432万(60 倍差),双 Y 轴独立刻度是单图能看清两线的关键 - commit a0934c1;重开
?v=20260902-singlechart#/account/1629/persona
趋势图时间轴倒序(11:37,用户明确)
- 需求:「时间从左到右 新到旧,阅读习惯是从左到右 先看新的」
- 排序改为
new Date(b.t) - new Date(a.t)(倒序,左新右旧);此前我一度改过又按默认升序改回,用户明确后定稿 - commit f6ea791;重开
?v=20260902-desc#/account/1629/persona
趋势图半年时间窗口(11:39,用户要求)
- 需求:「图表展示 最新视频发布时间倒推半年的数据」
- 实现(renderTrendChart):排序后以最新发布(pts[0])为锚点
setMonth(-6)得 halfYearAgo,ptsWin = pts.filter(≥halfYearAgo),tooltip/xAxis/series 全部改用 ptsWin;不足 2 点显示「近半年暂无足够视频数据」 - 实测:账号 1629 最新 2026/08/17、锚点 2026-02-16,36 条全在窗口内(数据本身跨度 04/15~08/17 不足半年)
- commit 44fa126;重开
?v=20260902-halfyear#/account/1629/persona
参考skills 目录删除恢复(11:30,用户选择恢复)
- 工作区检测
script-writing-studio(38 文件)+seedance2.0-prompt-skill(77 文件)共 115 个删除(11:25 发生,非本会话操作) - 用户选择「恢复文件」→ git checkout 还原,工作区干净;SKILL.md 记载「参考skills 源文件已移除」与磁盘现状冲突,后续留意是否用户主动清理
Chrome 不主动关闭红线(10:29,用户明确)
- 用户原话:「没有用户要求 开启的chrome浏览器不要关掉」
- 固化三处:① 操作规范.md 新增 5.7 浏览器进程生命周期(红线)——已开启 Chrome(9223 调试实例/用户 Chrome/daemon 连接实例)一律不主动关闭,除非用户明确要求;只可自行回收本次任务自己启动的临时实例;② mcn-dou-analysis/SKILL.md 浏览器操作红线补第⑦条;③ V1.0/SKILL.md browser-harness 小节补进程生命周期红线
- 记忆:项目 MEMORY.md 工作方式约定新增「Chrome 不主动关闭(09-02)」;commit dc21faf(未 push,距上次 push 不足 2 小时)
主技能 subskill → subskills 更名(10:31,用户要求)
- 目录:
V1.0/subskill/→V1.0/subskills/(browser-harness/mcn-dou-analysis/mcn-script-review/mcn-video-prompt;git 识别 500+ R100 纯重命名保留历史) - 路径说明同步:V1.0/SKILL.md(96/105行)、Lite1.0/SKILL.md(66行)、mcn-dou-analysis/SKILL.md browser-harness 红线行、操作规范.md(159/175行)、mcn-work-shop app.js SKILL_HINT_ACCOUNT
- 重要发现:用户环境
~/.workbuddy/skills/短视频脚本创作/与源仓库project/短视频脚本创作/V1.0/同 inode(junction/链接)——改源仓库即自动同步用户环境,无需重复编辑(ls -i 验证 SKILL.md/app.js inode 相同) - 边界:mcn-dou-analysis 内部
subskills/nuwa-skill-main为正常结构不动;dsh 副本~/.dsh/skills/mcn-dou-analysis/单向只读未动 - 残留检查:project/ 下全类型 grep
subskill/(排除 subskills/)零命中;memory 历史日志为 append-only 不改写 - git:commit 11fe8d4(520 文件),push a255abd..11fe8d4 成功
账号详情页 tab 结构调整(16:25,用户要求)
- 需求原话:「账号详情 下面的视频列表 改为账号设定内容,视频列表放到现在账号设定tab下,改名为视频列表」
- 修改(data-pages.js renderAccountDetail):
- tab 定义:
persona标签「账号设定」→「视频列表」 - info tab(账号信息):移除视频列表表格,内联展示账号设定内容(空态/文字版/卡片+文字切换),小节标题「账号设定」
- persona tab:改为视频列表表格 + list-footer(批量/分页)
- 加载逻辑:persona 数据从「点击 persona tab 时才加载」改为「info tab 首屏即加载」(
if (tab==='info' && persona===null) await loadPersona(),与视频数据并行 dvP/await 拆分);tab 点击处理器去掉冗余 persona 加载
- tab 定义:
- 验证:bindPager/bindBatchBar 均用 querySelectorAll/空值守卫,容器缺元素不报错;data-rewrite(AI创作)点击时仍
if (!persona) await loadPersona()兜底;data-extract 绑定全局查找在 info tab 同样生效 - 服务未重启(纯静态资源),重开页面
?v=20260902#/account/1629(旧梦留声机)验证
账号信息精简(10:53,用户要求)
- 需求:「账号信息 不显示 简介,账号定位 改为收起时 显示4行」
- 修改:① data-pages.js info tab 删除「简介」info-row;② style.css
.clamp-textmax-height 240px→96px(=4行×15px×1.6),展开按钮阈值 length>200→>120(与 4 行匹配) - 重开
?v=20260902-b#/account/1629验证
视频列表标题/账号设定间距(10:55,用户要求)
- 需求:「视频列表 tab 下面的 视频列表标题可以去掉,账号设定 内容部分 左右减少20PX 间隔」
- 修改:① data-pages.js persona tab 删除
<h3>视频列表</h3>标题(info tab 的「账号设定」小节标题保留);② style.css.persona-wrappadding 0 20px→0(账号设定内容左右间隔去除) - 重开
?v=20260902-c#/account/1629验证
前3条重写请求 + 执行方式失误与固化(11:57-12:05)
- 用户需求:「前3条重新写,写完后6条一起诊断」——6 条 AI 创作任务(09-01 18:28 创建)中,前3条(automation-1788258518460→video309、1788258521485→video313、1788258524508→video315)用 18:33 优化前技能,后3条用优化后技能
- 失误(用户指出):我第一步在会话内直接写脚本草稿(tmp/new-309.md),未走工作台 AI 会话任务机制——违反技能边界(生成/改写必须走技能会话)+ 产出不入库/不在会话栏/不走技能 = 影子脚本
- 根因:执行方式没有固化成语义触发规则;重写任务没有先判定"要不要进工作台"再动手
- 固化(用户确认"固化就行不需要防呆,模型自己判断意图")三处:① SKILL.md 关键规则新增「〇执行方式判定(P0)」+ 原「〇方案与执行分离」顺延为「〇·1」;② SKILL.md 工作台章节新增第6条铁律(工作台任务必须 POST /api/run + skills 参数,重跑=复用原prompt,禁止会话内手写草稿),原6/7条顺延为7/8;③ 自动化任务调度机制.md 新增第八节「重新执行历史任务的标准姿势」(取prompt→提交→轮询→验证落库)
- 验证:用户技能目录
~/.workbuddy/skills/短视频脚本创作/与源仓库 V1.0 同 inode 软链接(stat 确认 2533274790401285 相同)→ 改源即改用户环境,AI 任务能读到新规则 - frontmatter updated_at 09-02;commit 47475d0(未 push)
- 下一步:确认后按标准姿势提交前3条重写任务(复用原 prompt + skills:['短视频脚本创作']),完成后 6 条一起按 mcn-script-review 诊断