Files
mcn-short-video/.workbuddy/memory/2026-08-27.md
T
maogeigei 797edc9208 chore(MCN工作台): 提交工作台数据库副本,移除其 ignore 规则
- mcn-work-shop/mcn-plugin.db 改为提交(撤销 **/mcn-work-shop/mcn-plugin.db 忽略)
- browser-harness(含 windows 环境 envs/)维持忽略不提交
2026-08-27 12:37:42 +08:00

134 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 全项目避免与其它文件撞名
## 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