Files
mcn-short-video/.workbuddy/memory/2026-08-27.md
T

172 lines
26 KiB
Markdown
Raw Normal View History

# 2026-08-27 工作日志
## mcn-dou-analysis 定为主版本 + 源/dsh 差异判断(09:40-09:59)
- 用户宣布 `project/短视频脚本创作/V1.0/subskill/mcn-dou-analysis/` 为抖音账号分析技能**主版本**(源技能),已写入 MEMORY.md
- **差异判断结论**:dsh 副本(`C:\Users\maidou\.dsh\skills\mcn-dou-analysis\`)无独有新方法论内容需回流,全部差异四类:①环境路径特化(账号表→`D:\dshworkspace\达人账号表.xlsx`、路径配置/铁律避坑从 references-add 并入 references/、README 标注 dsh 状态)②位置互换内容一致(路径配置.md/铁律避坑 2 文件完全一致)③纯换行符差异(mcp-config.json、账号数据分析执行避坑.md)④注释补充
- 源 `references-add/创作流程/`、`知识库/01_账号设定`、`知识库/12_拆解评估` 为**空目录**(无文件)
## 脚本注释回流(以 dsh 为准,09:55)
- **背景**:TOP6 定义分散是之前特意要治的问题,dsh 版脚本补充了「执行镜像」注释强化,用户指示以 dsh 为准回流
- **修改**(源技能 2 文件 6 处,代码逻辑零改动):
- `scripts/excel_tool.py` 4 处:docstring 模式说明、用法示例注释、select_top6 函数 docstring、argparse help —— 均补「默认数量为 SKILL.md『视频筛选标准』的执行镜像,调整时须同步本处」
- `scripts/select_top6.py` 2 处:顶部 docstring、`# 解析 --count` 注释
- **验证**:`tr -d '\r'` 后 diff 与 dsh **完全一致** ✅
## 待办/未决
- references-add/README.md 两边差异已展示(dsh 版含「当前状态:②dsh环境」blockquote + ③用户环境启用流程;源版含「①开发机/②dsh环境」合并行)——用户要求"两边应该相同",统一方案待确认(建议通用中性版)
## README 统一版(10:06 完成)
- 用户指示:环境判断参考 SKILL.md 两步判定模型,两边应一致
- 重写 `references-add/README.md` 为**通用中性版**,源 + dsh 同步(diff 验证 ✅ 完全一致):
- 顶部「当前状态」blockquote → **三环境两步判定**(与 SKILL.md 第 51 行完全一致:无 D:\AgentSkill=③用户环境;在 D:\AgentSkill\ 下=①开发机;含 .dsh=②dsh)+ references-add 机制只服务③的说明
- 修改规则表格恢复**三行齐全**(①开发机/②dsh环境/③用户环境),①行补「开发机直接改标准库,不使用增量库机制」
- 保留 dsh 版机制增强:②dsh「增量并入标准库」、③用户环境启用流程、标题「机制说明」
- 措辞取 dsh 版:「获取视频列表」「(机制文档)」「③ 用户环境中」
- **新发现(未处理)**:SKILL.md 第 75 行「当前机器源技能路径 `D:/AgentSkill/mcn-video-script/project/V1.0`」为**过时路径**——实际脚本创作技能在 `project/短视频脚本创作/V1.0/`(08-26 重构后),`project/V1.0` 是重构前旧结构;dsh 副本同样存在,需两边一起改,待用户确认
## SKILL.md 源技能路径修正(10:08 完成,用户确认)
- 修正 SKILL.md 第 75 行「脚本创作技能(权威源)」路径:`D:/AgentSkill/mcn-video-script/project/V1.0` → `D:/AgentSkill/mcn-video-script/project/短视频脚本创作/V1.0`
- 源 + dsh 两边同步修改;验证:新路径两边各 1 处 ✅、全技能范围旧路径 `mcn-video-script/project/V1.0` **零残留** ✅
- 剩余 17 行 SKILL.md 差异均为原有 dsh 环境特化(账号表位置/路径配置位置/增量库状态说明),非本次引入,符合 .dsh 单向只读保留
## 「源精简=dsh」方案执行完成(10:10-10:30)
- 用户选定:source references-add 只留 README.md(对齐 dsh 现状)
- **移动结果**:`references/路径配置.md` + `references/铁律避坑规则/`(账号设定执行避坑.md + 账号数据分析执行避坑.md)已从 references-add 并入源 references/ 标准库(时间戳 15:20/16:07 与 dsh 一致=真实 mv 保留时间戳;期间 mv/rmdir 报 "No such file" 为沙箱视图误报,真实磁盘已到位)
- **引用更新**(8 处,全部按 dsh 版对齐):SKILL.md ×3(行 40 引用+加粗、行 52 三环境括号说明、2.2 表补「产出路径配置」行 + 更新「增量库」行含「当前①开发机/②dsh环境状态」)+ feature ×5(01/02/05 路径配置、03/04 铁律避坑)+ 行 51 微小表述「③用户环境独立使用」
- **验证**:
- references-add 两侧均只剩 README.md 且 diff 完全一致 ✅
- references/ 全目录归一化 diff:仅剩 3 文件 4 处环境特化(feature/01、02 账号表路径 `D:\dshworkspace\` ×3、feature/03 12段基准说明 ×1),按单向只读保留 ✅
- SKILL.md 归一化 diff:17 处 → **5 处**(账号表位置 ×2 处、账号类型判定行序互换 ×1、增量库状态视角 ×1——源=①开发机/dsh=②dsh),全部合理 ✅
- references-add 残留引用:源仅剩 `本地接口调用规范.md:4` 历史来源说明(与 dsh 一致)✅
- **铁律避坑规则 diff 经验**:`diff -r` 直接对比中文 md 会因 CRLF/LF 误报整文件差异,必须 `tr -d '\r'` 归一化后对比;文件名含空格需用 `find -print0` + `while read -d ''`,for 循环按空格切分会把文件名拆断
## 账号信息数据源红线(10:16-10:25,用户环境反馈)
- **反馈**:昨天用户环境「分析账号/获取数据」时 AI 优先查 MCP 达人信息(`list_hot_accounts`/`hot_account_detail`),而非浏览器访问账号页面
- **根因**:文档默认流程虽是浏览器优先,但无显式红线;MCP 服务暴露带 account 工具且未标边界,AI 按工具名误用
- **固化**(源 + dsh 双副本同步 6 处编辑):SKILL.md 规则表「账号信息数据源(红线)」行(浏览器优先、如无必要不用 MCP、hot_account 非功能一数据源、浏览器访问不了才兜底+注明来源)、feature/01「数据源优先级(红线)」块、MCP_工具调用规范.md 工具清单「工具边界(数据源红线)」备注
- **名称纠正(10:19 用户反馈)**:`list_hot_accounts`/`hot_account_detail` **不是热门账号/榜单**,是 **MCN 内部账号库**(内部维护的达人账号,含人设/赛道/标签/代表作,非抖音页面实时数据;工具命名 hot_accounts 有误导性)——6 处文案已改「内部账号库查询」,验证「热门账号榜单/列表/详情」零残留 ✅、源/dsh 一致 ✅
- **验证**:三处新增源/dsh diff 一致 ✅(MCP 规范两侧完全一致)
- **三层化沉淀**:失误与规避记录 #013(已含内部账号库纠正)+ 本日志
## 10:25 同步到远程仓库
- 提交 f025ad3(13M/3R/1A):mcn-dou-analysis 内嵌副本结构整合——references-add/ 的路径配置.md+铁律避坑规则2文件迁入 references/(git 识别为 rename),五功能文件/SKILL.md/MCP规范/excel_tool.py/select_top6.py 同步更新,记忆+失误记录
- push 成功,browser-harness 未再误入(.gitignore 条目生效);origin/main = 本地 HEAD = f025ad3,工作区 0 改动;跟踪引用照旧重建
## 10:30-11:00 MCN工作台开发(V1.0 本地 Web 入口)
- **用户需求**:在 `project/短视频脚本创作/V1.0/mcn-work-shop/` 开发工作台,方便使用技能 + 查看生成内容;形态=**本地 Web 服务**(非静态页);产出默认读桌面 MCNSkill项目 + 支持手动配置;挂成技能(说「打开工作台」自动拉起);**不同步 dsh**
- **实现**:server.js 零依赖 Node(http/fs/path 原生,端口8899占用自动+1)+ public/ 三件套(index.html/style.css/app.js 零 CDN)+ start.bat(managed node 优先回退系统 node)
- API:/api/roots(默认+自定义根)/api/tree(递归目录树,深度≤4,跳隐藏/权限/占用)/api/read(md/json/txt/csv 在线预览,>5MB 拒绝)/api/download;路径白名单防穿越(默认根+自定义根,403 拦截)
- 前端:🧭技能导航(5大功能块+典型问法+三种创作模式,数据对齐帮助文档)+📁产出浏览(账号树折叠/搜索过滤/迷你 markdown 渲染器/json 格式化/xlsx 下载提示/设置弹窗 localStorage 记忆根目录)
- **验证全过**:静态页 2744B+12983B+8573B、tree 5 账号中文路径正常、read md/json 正常、越权 403、xlsx 415 提示下载、download 正常
- **技能挂载(仅 V1.0)**:SKILL.md 新增「MCN工作台」章节(触发语+启动步骤+两页签说明+不同步声明),last_change 更新;帮助文档开头补「打开工作台」提示行;**dsh/Lite 均未改**(用户明确,属刻意 divergence)
- **边界**:工作台是入口+查看器,技能执行仍在 WorkBuddy 对话(无网页→agent API);xlsx 暂不支持在线预览(零依赖取舍),后续可加服务端解析
## 工作台修复:文案更名 + 弹窗关闭失效(10:40)
- **用户反馈 2 条**:①「产出目录设置」改为「项目地址设置」②点击关闭按钮无法关闭弹窗
- **修复**:
- 文案统一「产出目录」→「项目地址」(index.html 5 处:设置按钮 title/下拉 title/弹窗标题/说明/placeholder;app.js 错误提示;server.js 启动日志;SKILL.md 工作台章节),仅 V1.0,dsh/Lite 不动
- **弹窗关闭失效根因**:`.modal-mask{display:flex}` 作者样式优先级覆盖 `hidden` 属性 UA 默认 `display:none`,`hidden=true` 不生效 → style.css 补 `.modal-mask[hidden]{display:none}`(同优先级后声明胜出)
- server.js 静态响应补 `Cache-Control: no-store`(否则浏览器缓存旧 css/js);之前一次 Edit 因缩进不匹配静默未生效,复查 grep 发现后重改
- **验证**:重启服务(8899,注意小米 MiPCAudio 也占 0.0.0.0:8899 但工作台用 127.0.0.1 互不冲突);curl 核验 api/静态 200、修复规则与文案已上线、响应头 no-store ✅;SKILL.md last_change 更新
- **遗留**:browser-harness 技能环境未安装(仅 SKILL.md),无法浏览器实测,用户刷新页面确认
## 工作台问法复制功能(10:44)
- **用户问**:能否点工作台功能按钮后 AI 会话自动处理?**查证结论**:不能——工作台功能卡是静态说明,WorkBuddy 无「网页/本地 HTTP → 触发会话」官方接口;触发入口仅对话框人工发话 + 官方「远程遥控」IM 机器人(企微/QQ/飞书/钉钉,Claw 设置);第三方博客的 URL scheme/本地 HTTP 方案无官方确认不可靠
- **用户选定**:功能卡改「点一下复制问法 → 粘贴对话执行」(AskUserQuestion 3 选 1)
- **实现**:qa-row 加 copyable + data-q + title;事件委托点击复制(去外层引号);navigator.clipboard.writeText + execCommand 兜底;toast 提示「已复制」1.8s;intro 提示行「点击任意问法即可复制」;CSS hover 高亮 + 📋 图标
- **验证**:curl 核验 app.js 8 处 / index.html 1 处 / style.css 5 处改动已上线 ✅;SKILL.md 工作台章节+last_change 更新;仅 V1.0 不同步 dsh/Lite
## dsh 插件页面盘点(10:50,调研分析,未开发)
- **对象**:`D:\dshworkspace\plugin_package`(5 插件 3556 行 client.js 全读):dsh-plugin-mcn(主插件:首页+AI写脚本+AI写作复盘+AI会话)、douyin-accounts(热门账号)、douyin-account-detail(账号详情)、douyin-video-detail(视频详情)、mcn-schedule(计划任务)
- **核心结论**:dsh 插件页面 =「数据管理 + 任务触发」界面,全部依赖 dsh 宿主 `/mcn/api/*` + SQLite(db.js 存 account/video/rewrite/review/persona)+ MCP 解析 + AI 会话桥接(creative/rewrite/analyze/extract 触发 AI);我们的工作台 = 零依赖 Node 读产出文件,无 DB 无 AI 桥接 → 分层迁移:✅读文件可落地(视频详情3tab、账号设定、脚本/分镜查看,产出浏览已部分覆盖);⚠️需 DB 重建(账号/视频列表、周榜、复盘、计划任务);❌按钮触发AI在 WorkBuddy 无桥接做不了(上轮已确认)
- **页面清单(8 视图)**:工作台首页(统计条+入口网格+抖音周榜)/热门账号/账号详情(信息卡+3tab+视频列表)/视频详情(信息卡+3tab)/AI写脚本(列表+源vsAI对比+分镜)/AI写作复盘(评分+报告)/AI会话(任务会话)/计划任务(定时CRUD)
- **待用户决策落地范围**
## MCN工作台数据功能页开发完成(11:00-11:20)
- **用户选定**:全做 + 抖音周榜(数据在 `D:\dshworkspace\抖音榜单`),4 项:精致展示页/账号视频管理库/prompt 快捷触发/周榜
- **数据源探查结论**:dsh 库 `~/.dsh/mcn-plugin.db` 有现成数据(hot_accounts 7 / account_videos 597 / account_video_source 39 / account_video_analysis 12 / account_persona 5 / rewrite_log 17 / storyboard_log 3 / script_review 2);周榜 JSON `抖音周榜_{赛道}_{日期}.json`(9 赛道×2 日期,字段 rank/accountName/comprehensiveScore/followers/newFans/newLikes/newComments/newShares/newInteraction/profileUrl);达人账号表 D:\dshworkspace\达人账号表.xlsx
- **技术路线**:Node 22.22.2 `node:sqlite` 直接只读 dsh 库(实验性但可用);新增 `dsh-data.js`(数据访问层:listAccounts/listAccountVideos/getPersona/getVideoDetail/getVideoScript/listRewrites/listStoryboards/getReviewDetail/getReviewFull/getStats/rankingMeta/getRanking);server.js 注册 13 个 `/api/dsh/*` 路由
- **前端重构**:index.html 改为 hash 路由(首页/产出浏览/ranking/accounts/account/:id/video/:id/rewrites/reviews);app.js 拆为路由核心(工具/markdown/复制/首页/产出浏览/设置),新增 data-pages.js(6 个数据页:周榜/热门账号/账号详情/视频详情/AI写脚本/复盘)
- **关键降级**:所有「触发AI」按钮(导入/解析/改写/提炼/复盘/创作)→ 点一下复制 prompt 到剪贴板(WorkBuddy 无 AI 会话桥接);只读展示不写库
- **修复**:getRanking 参数 date 与局部变量重名(SyntaxError);视频详情标题被 esc 转义(infoGrid 加 raw 参数);账号详情视频 ID 加详情链接
- **验证**:13 个 API curl 全过(meta/stats/accounts/ranking/video-detail/rewrites 数据正确);前端 3 JS 语法检查过;静态资源 200
- **遗留**:browser-harness 环境未装,无法浏览器实测,页面运行时效果待用户点验;xlsx 在线预览未做(零依赖取舍)
## 工作台数据库隔离:复制 dsh 库到工作台(11:44)
- **用户需求**:数据库复制一份到工作台文件夹,两边数据各访问各的(工作台读自有副本,不再读 dsh 原库)
- **执行**:`cp ~/.dsh/mcn-plugin.db → mcn-work-shop/mcn-plugin.db`(4.2MB);dsh-data.js `DSH_DB` 从 `homedir()/.dsh/mcn-plugin.db` 改为 `__dirname/mcn-plugin.db`(移除 homedir import);server.js dshGuard 文案改「工作台数据库」
- **gitignore**:根 .gitignore 加 `mcn-work-shop/mcn-plugin.db`(数据文件不提交 git)
- **验证**:重启服务,`/api/dsh/meta` 返回 dbPath=`D:\AgentSkill\...\mcn-work-shop\mcn-plugin.db`,accounts total 7 正常 ✅;SKILL.md 工作台章节数据边界同步更新
- **隔离语义**:工作台副本为静态快照,dsh 原库后续更新不会自动同步到工作台(需再手动复制);工作台只读副本不写回
- **外链新标签打开**(11:40 前置):视频/账号外链由 `<a target=_blank>` 改为 `data-ext` + 全局委托 `window.open(url,'_blank')`,被拦截时兜底复制链接
## 工作台图标全面扁平化(12:14)
- **需求**:美化所有页面,图标换成扁平化向量图标、不要底色(原 emoji 有彩色/底色感)
- **实现**:app.js 加 `ICON_PATHS`(Lucide 风格线性:24 viewBox / stroke currentColor / fill none)+ `svgIcon(name,size)` + `initIcons()`(把 `[data-icon]` 占位替换成 SVG);EXT_ICON 改图标名(md=file-text/json=file-code/xlsx/csv=table/bak=file);替换范围=header 按钮(home/help/settings)、logo(film)、首页 data-card(trending-up/users/pen/flask)、帮助页 5 功能块(lightbulb/pen/refresh/chart/wrench)、三模式(zap/users/wrench)、文件树目录/文件图标(folder/folder-open/file-*)、弹窗关闭 ✕→x、页面标题
- **CSS**:`.ic`(inline-block/vertical-align/flex-shrink)+ .logo/.data-card-icon/.page-title/.mode-name/.recent-card-title/.modal h3/.ghost 加 flex 对齐 + 图标用主题色 currentColor 无底色
- **保留的语义符号**(非图标):✅❌⚠️ 状态、☆ 收藏、▾▸ 展开箭头、👈 提示
- **验证**:双文件语法过、跨文件无 svgIcon 冲突、静态资源 200 ✅
- **微调(12:26)**:①功能图标加亮色区分(ICON_COLORS:trending-up橙红/users蓝/pen紫/flask绿/lightbulb金黄/refresh青/chart红/wrench深灰,svgIcon 按 name 注入 style color)②「AI写剧本」这类文字标题前去掉图标(recent-scripts 标题/recent-card 标题/data-pages 页面标题/三种创作模式标题),保留功能卡片图标(data-card/func-card)作视觉标识
## 首页新增 AI写剧本快捷卡片(11:48)
- **需求**:主页功能入口下方加「AI写剧本」卡片列表,点击快速查看剧本内容,最多 4 行
- **后端**:dsh-data.js 加 `listRecentScripts(limit)`(rewrite_log 联 hot_accounts/account_videos,status=done 有内容按 id 倒序取前 N);server.js 加 `/api/dsh/recent-scripts?limit=4`
- **前端**:renderHome 在 data-cards 后加 recent-scripts 区块(标题 + 「查看全部→」链到 #/rewrites);router 首页分支调 loadRecentScripts() 异步填充;openRecentScript 弹窗用 renderMarkdown 渲染 script_text 全文;app.js 加 fmtTime;style.css 加 recent-card 网格卡片样式
- **验证**:recent-scripts 返回 4 条(旧梦留声机账号,脚本长度 2614-4015),静态资源 200 ✅
## 帮助页拆分 + AI写剧本卡片迭代(11:52-11:57)
- 功能帮助快速提问区(5大功能块+问法+三模式)独立成 #/help 页,header 加「❓帮助」按钮(设置左边),首页只留功能入口卡+AI写剧本卡
- AI写剧本卡片迭代:2 列布局(minmax 380px)、最多 8 个(limit=8)、卡片 min-height 172px、预览 5 行(line-clamp 5)
## 修复:数据功能页全部无法点击(11:58,P0)
- **症状**:首页 4 个数据功能卡点击后跳回首页,看似"点不动"
- **根因**:app.js 加的 `function fmtTime`(函数声明,挂 window)与 data-pages.js 的 `const fmtTime`(全局词法绑定)**跨 script 同名冲突** → `SyntaxError: Identifier 'fmtTime' has already been declared` → data-pages.js 整个加载失败 → window.DataPages 未定义 → router 走「未知路由→首页」兜底
- **修复**:app.js 的 `fmtTime` 重命名 `fmtDate`(3 处:定义 + 2 处使用),消除冲突
- **验证**:vm 模拟跨 script 全局,确认无冲突;node -c 双文件语法过;curl 确认 fmtDate 3 处 / fmtTime 零残留 ✅
- **教训**:多 script 文件共享全局作用域,`function 声明` 与 `const/let` 同名会跨文件冲突(node -c 单文件查不出);给全局工具函数命名前应 grep 全项目避免与其它文件撞名
## 19:25 工作台触发的 AI 会话归入 mcn-workshop 空间分组
- **需求**:工作台功能创建的 AI 会话显示到 mcn-workshop 空间分组
- **机制**:WorkBuddy 左侧会话栏按 cwd(工作目录)分组;workspaces 表每行一个空间(path+last_opened_at)
- **实现**:①创建目录 `D:\AgentSkill\mcn-workshop` 并插入 workspaces 表(路径格式必须与其他行一致 `D:\AgentSkill\xxx`;bash MSYS 会把反斜杠转正斜杠,需用 Write 写 node 脚本执行避开);②server.js `/api/run` 的 cwd 改为 `D:\\AgentSkill\\mcn-workshop`(cwds JSON 数组)
- **验证**:POST /api/run 后 cwds=`["D:\\AgentSkill\\mcn-workshop"]` ✅;WorkBuddy 消费后新会话 cwd=`D:\AgentSkill\mcn-workshop`、is_background_automation=1 ✅(会话 3b28ab3c)
- **注意**:8899 端口曾被旧实例/多实例占用(避让到 8900/8901),按端口清理 node 进程后恢复单一实例;MiPCAudio 占 0.0.0.0:8899 需排除(PID 20604)
## 12:31 同步到远程仓库
- 提交 5f5b4f1(120 文件,含工作台 mcn-work-shop/ + impeccable/taste-skill 设计技能 + 记忆/文档)
- 修正 .gitignore:`mcn-work-shop/mcn-plugin.db` → `**/mcn-work-shop/mcn-plugin.db`(带斜杠规则会锚定根目录,未匹配到 project/ 子路径,导致数据库副本被误暂存,已 git rm --cached)
- push 成功 f025ad3..5f5b4f1;origin/main 跟踪引用照旧被沙箱拦截丢失,已手动重建 refs/remotes/origin/main
## 12:38 browser-harness 源码纳入版本管理(仅排除 Windows 环境)
- **用户需求**:仓库除 browser-harness 的 Windows 环境文件外,其余文件都要提交
- **检查发现**:browser-harness 是嵌套 git 仓库(clone 自 browser-use/browser-harness,main@f5eaf90),根 .gitignore 的 `browser-harness/` 把整个目录都忽略了,导致 181 个源码文件(SKILL.md/README/src/skills/tests/docs,仅 460K)也没提交,不只是 envs 环境
- **用户决策**:删除嵌套 .git,envs 环境继续忽略
## 20:2x-20:3x 工作台路由刷新回首页问题(P0 排查修复 + browser-harness 真实验证)
- **症状**:访问 http://localhost:8899/#/ranking 刷新后 URL 变 #/ 回首页;外部浏览器/WorkBuddy 面板均复现;点击进入正常
- **排查过程**:①怀疑 iframe/sessionStorage(排除,外部浏览器也一样)→ ②Edge headless 复现但 virtual-time 与 await 冲突(首页同步渲染正常、数据页 await 挂起空 view,误导)→ ③注入探针发现 headless 加载 #/ranking 时 location.hash 变 #/(headless 特性)→ ④**browser-harness 真实验证**(用户提示可用,环境在 mcn-dou-analysis/subskills/browser-harness,用 PYTHONPATH=src + python -m browser_harness.run + BU_CDP_URL=http://127.0.0.1:9223 独立 Chrome 调试实例)→ ⑤诊断 __diag 实锤:**setTimeout(0) 时 dp=undefined(data-pages.js 未加载完)**
- **真正根因**:script 标签下载**并行**——app.js 先下载完执行,其末尾 boot 立即 router()(或 setTimeout(0))时 **window.DataPages 尚未定义**(data-pages.js 还在下载/未执行)→ 数据页路由被当未知路由 → `location.hash='#/'` 兜底回首页(URL 变 #/)。点击进入正常因页面运行中两 JS 已加载
- **修复**:boot 改为 **DOMContentLoaded + 50ms 轮询等 DataPages 就绪再 router()**;router 兜底加保护(数据页名 + DataPages undefined 时不跳首页,等待下次)
- **验证(browser-harness 实测)**:直接访问 #/ranking 渲染周榜页 ✅;#/ranking 刷新停留 ✅;首页↔周榜切换 ✅;周榜 20 行完整 ✅
- **环境调用法(重要复用)**:BH=mcn-dou-analysis/subskills/browser-harness;`PYTHONPATH="$BH/src" "$BH/envs/browser-harness/python.exe" -m browser_harness.run`(heredoc 传 Python);独立调试 Chrome:`chrome.exe --remote-debugging-port=9223 --user-data-dir=...` + `BU_CDP_URL=http://127.0.0.1:9223`;PYTHONPATH 必须指向 src/(含 browser_harness 包)
- **执行**:rm -rf browser-harness/.git(2.7M);.gitignore `browser-harness/` → `**/browser-harness/envs/`;git add -A 提交 175 源码 + .gitignore 共 176 文件
- **继续忽略**:envs/(191M conda 环境)、src/browser_harness.egg-info/(Python 打包元数据,6 文件)、__pycache__/
- **提交**:9248cbe,push 025d28f..9248cbe 成功,跟踪引用照旧重建,本地与远程一致
## 19:17 工作台按钮直接触发 WorkBuddy AI 会话(Automation 方案,推翻复制 prompt 结论)
- **用户纠正**:之前结论「WorkBuddy 无网页→会话触发接口,按钮只能复制 prompt」有误。用户提供 POC 文档(桌面「新建 文本文档 (2).txt」)+ 明确要求用 **Automation 方案**(非 CLI),让任务在左侧会话栏可见
- **dsh 插件参考**(D:/dshworkspace/plugin_package/dsh-plugin-mcn):按钮 → POST /mcn/api/creative {prompt} → `getOrCreateCreativeAgent(sid)` 固定会话 + `agent.followup(userMessage)` 触发执行;执行中 409 防重;用户到 AI会话视图查看
- **WorkBuddy Automation 链路(实测验证)**:往 `~/.workbuddy/workbuddy.db` 的 `automations` 表写 once 任务(scheduled_at=now)→ WorkBuddy 运行时自动消费(19:16:22 实测)→ 创建会话(automation_runs.thread_id / runtime_state.running_conversation_id)→ 左侧会话栏可见 → 结果落 automation_runs(result_success=1)
- **automations 表关键字段**(用 automation_update 工具创建样本反推):id=`automation-{毫秒}`、status=ACTIVE、schedule_type=once、next_run_at=毫秒、scheduled_at=`YYYY-MM-DDTHH:mm`(本地无秒)、cwds=JSON数组、created_at/updated_at=毫秒、skills_json/connector_ids_json='[]'、model_id=deepseek-v4-flash、permission_mode=fullAccess、owner_user_id=当前用户ID(sessions.user_id)、owner_status=confirmed
- **实现**:server.js 加 `POST /api/run`(node:sqlite 写 automations,owner_user_id 从 sessions 最新取,cwd=D:/AgentSkill/mcn-video-script);data-pages.js firePrompt 从复制改为提交执行 + 5 秒防连点;SKILL.md 工作台章节 5 更新
- **验证**:curl POST /api/run 成功(automation-1787829463480),WorkBuddy 8 秒内消费(run IN_PROGRESS + 新会话 a16583b8)✅;node:sqlite 写 workbuddy.db 用事务测试无污染
- **注意**:CLI 方案(codebuddy -p)也验证可用但需 `--model auto`(默认模型 500),用户最终选用 Automation 方案
## 20:45 短视频提示词生成去 V1.0 层(git mv 上移)
- **用户需求**:仓库中 `project/短视频提示词生成/V1.0` 显示冗余(单版本无需版本层),删除重新按正确路径提交
- **检查**:目录内 138 文件无 `提示词生成/V1.0` 路径引用(路径配置.md 用环境两步判定不写死路径、SKILL.md 无 V1.0 引用)→ 可安全移动
- **执行**:`git mv V1.0/{SKILL.md,references,references-add,参考skills} → project/短视频提示词生成/`;rmdir 空 V1.0;git ls-files 确认 V1.0 零残留
- **记忆更新**:MEMORY.md 分镜脚本条目路径改 `project/短视频提示词生成/` + 历史事件补 08-27 去层记录
- **对照**:短视频脚本创作保留 V1.0/Lite1.0 层(两版本需区分),提示词生成单版本直挂