Files
ComicStyleNovel/AGENTS.md
2026-09-02 18:15:53 +08:00

7.6 KiB
Raw Permalink Blame History

AGENTS.md · 漫剧小说项目协作规则

本项目为 50 集古装武侠复仇 AI 漫剧的策划与创作工作区。所有设定、分集、正文均在此迭代。


一、最高优先级:先读设定,再动笔

任何涉及剧情、人物、设定的动作之前,必须先读:

  • .workbuddy/memory/MEMORY.md —— 已确认的全部设定(用户确认过的条目,不得擅自更改)
  • .workbuddy/memory/YYYY-MM-DD.md —— 当日工作日志(按日期读最新的)
  • 50集分集总表.md —— 当前分集总表(工作底稿)

若 MEMORY.md 与总表内容冲突,以 MEMORY.md 为准,并主动提醒用户总表需要同步。


二、协作模式(用户明确要求)

用户先落笔写正文,我负责优化、接顺剧情、把埋下的钩子收拢。不由我代写正文。

  • 用户写一段 → 我改一段,输出可直接用的版本
  • 改稿时可以给出示范性台词/段落,但必须标明「这是示范,不是代写」
  • 用户偏好:在现有方案上给增强建议,表达简短精炼,认可后即推进
  • 发现设定漏洞要直说,并给出修改方案 + 理由;不要为了迎合而放过硬伤
  • 每次设定变更后,同步更新 MEMORY.md 和总表(md + html 两份)

三、HTML 交付物规范(硬性要求 · 手机优先)

本项目交付的任何 HTML 文件,必须在手机上可正常浏览。 用户主要在手机上查看总表,桌面端只是次要场景。

3.1 必须满足的基线

项 要求
viewport <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
横向溢出 全站禁止出现横向滚动条;body{overflow-x:hidden},长文本加 word-break:break-word
正文字号 桌面 ≥14px,移动端 ≥15px(不要为了塞内容缩字号)
安全区 底部留白加 env(safe-area-inset-bottom,0px),适配全面屏
点击目标 可点击元素最小高度 ≥32px,移动端 ≥40px
字号锁定 html{-webkit-text-size-adjust:100%} 防 iOS 横屏自动放大

3.2 表格必须「响应式降级」

本项目大量使用宽表格(分集总表 5 列、人物表 5 列)。禁止让表格在手机上横向滚动或挤压。

标准做法 —— 表格转卡片流(≤768px 生效):

  1. 每个 td 加 data-l="列名" 属性
  2. 移动端 thead{display:none},tr{display:block} 变卡片,td{display:block} 变字段行
  3. td::before{content:attr(data-l); display:block} —— 列名标签独占一行,内容整行铺满。 ⚠️ 不要用 td{display:grid; grid-template-columns:64px 1fr}:标签列会吃掉约 30% 宽度,手机上正文被挤得很窄。标签上、内容下才是手机端的正解。
  4. 每卡首列(td:first-child)作为卡片头:整行铺底色、加粗、隐藏 ::before,可加 box-shadow:inset 3px 0 0 左侧色条
  5. colspan 单元格单独处理:display:block + 行内列名
  6. 极窄屏(≤360px)只收 padding,不再改布局

参考实现见 50集分集总表.html 的 @media (max-width:768px) 段落,可直接复用。

3.2.1 首列宽度(本项目踩过坑)

禁止给首列写死像素宽度 + white-space:nowrap —— 长内容("序章第 4 拍「幼子尸首没找到」"、"榜二 · 自负剑客")会被挤爆或撑破表格。

正确做法:用 CSS 变量统一控制,按表覆盖

table{--ep-w:12em}                        /* 默认 ≈12 个汉字 */
th:first-child,
td.ep{width:var(--ep-w); min-width:var(--ep-w); white-space:normal}
td.ep.num{white-space:nowrap}             /* 纯序号列(集号)例外,防 "5-7" 折行 */
  • 内容长的表(人物、暗线道具、榜单人物)→ 用默认 12em
  • 纯序号的表(分集总表、榜单落点)→ <table style="--ep-w:6em">,避免白白浪费横向空间
  • th 默认 white-space:nowrap,th:first-child 必须改回 normal,否则长表头不换行

3.2.2 空字段在手机上折叠

分集总表有大量内容为「—」的单元格,在卡片流里会变成一整行占位,非常浪费。用脚本打标记后由 CSS 隐藏:

// 移动端:内容为「—」的字段行折叠,并重算卡片最后一条可见行的边框
var t = (td.textContent || '').replace(/[\s\u00a0]/g, '');
td.classList.toggle('is-empty', mq.matches && (t === '—' || t === '-' || t === ''));
table td.is-empty{display:none}
table tr td.last-vis{border-bottom:none}   /* 可见的最后一行要去边框,否则卡片底部双线 */
  • 标记必须随 matchMedia 变化重算(横竖屏切换 / 转桌面宽度)
  • 首列(卡片头)内容不会为空,不受影响
  • 本次共折叠 71 个空字段行,分集总表每卡从 5 行降到 3-4 行

3.3 导航与浏览体验

  • 顶部 sticky 章节导航:移动端横向滚动的 chip 条(overflow-x:auto; scrollbar-width:none),桌面端换行常驻
  • 每个 h2 加 id 与 scroll-margin-top(避开吸顶栏)
  • 右下角回到顶部悬浮按钮:滚动超过 60% 屏高才出现,避开安全区
  • 导航点击用 scrollIntoView({behavior:'smooth'})

3.4 其他约定

  • 颜色全部走 CSS 变量,禁止硬编码色值(暗色模式靠覆盖 :root 变量实现,成本极低)
  • 必须适配 @media (prefers-color-scheme: dark)
  • 保留 @media print 样式,打印时隐藏导航与按钮
  • 中文引号:代码里只用 ASCII 直引号;正文自然语言用中文引号
  • 不使用任何外部 CDN / 网络字体 / 外链资源(离线可用)
  • 单文件交付,<style> 与 <script> 内联

3.5 交付检查清单

产出 HTML 后逐条自检:

  • 手机竖屏(375px)下无横向滚动
  • 表格在窄屏已转为卡片流,列名标签独占一行、正文整行铺满(不是 64px + 内容的栅格)
  • 首列宽度用 --ep-w 变量控制,无写死像素宽度 + nowrap 的长内容列
  • 内容为「—」的空字段行在手机上已折叠,卡片底部无双线
  • 顶部导航可横向滑动,点击能跳转
  • 深色模式下文字与背景对比度正常
  • 底部内容不被悬浮按钮遮挡
  • 断网状态下打开无缺失样式

四、文件与产物约定

文件 用途 更新规则
50集分集总表.md 分集总表工作底稿,用户可直接改 设定变更即同步
50集分集总表.html 分集总表一屏总览,手机浏览用 与 md 同步,遵循第三节规范
.workbuddy/memory/MEMORY.md 长期设定(用户已确认的部分) Edit 工具原地改,不覆盖
.workbuddy/memory/YYYY-MM-DD.md 当日工作日志 只追加(append-only)
  • 正文文件命名:第XX集.md 或按用户指定
  • 交付后用 present_files 呈现,HTML 放第一位(自动打开预览)

五、写作铁律(详见总表第六节,共 20 条)

核心几条,落笔前必看:

  1. 闪回必须由「现在」的某个东西扎进去,不许写"他想起了八年前"
  2. 每次闪回只补一块,且必须翻案——不是加信息,是改写上一块的意思
  3. 不写「原谅」、不写「冤冤相报何时了」——放过 = 自厌,不是慈悲
  4. 化名不能姓沈
  5. 女二父亲只能废,不能杀(他必须活到 41 集交付下落)
  6. 一夜覆灭只能是男主一个人——师门只做加成,绝不代打
  7. 榜单不能充当男主的实力证明,他真正的实力必须自己打出来
  8. 发病是配额化的:动一次真气有代价,丹药只够撑一夜