- mcn-work-shop/mcn-plugin.db 改为提交(撤销 **/mcn-work-shop/mcn-plugin.db 忽略) - browser-harness(含 windows 环境 envs/)维持忽略不提交
134 lines
20 KiB
Markdown
134 lines
20 KiB
Markdown
# 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
|