新任务启动包 · 降低探索量的 12 条
用法:把这一篇整份贴给新会话,或按 1–12 顺序自己执行。每一条都给了勾选框、命令和判据;判据不满足就先停下修环境,不要开始写业务代码。这份包要解决的浪费很具体:253 个会话反复探索同一套环境、Prisma 输出目录迁了四次、basePath 尾斜杠踩了两次、手机端 FAB 被遮了三次。
为什么是 12 条而不是 30 条:两个月里真正重复付学费的动作只有三类——重新认识环境、重新试错工具链、重新定义验收。所以 12 条按「读、跑、守、验」四组切,每组三条,各自闭环。多写的条目不会被读,能被记住的清单通常不超过一屏。每条都配判据,是因为「检查过了」和「检查通过」是两件事,前者只需要一句话,后者需要一个数字。
A 组:先读,别先动手
-
1. 读三份底座,顺序不能反:
C:/Users/cag/WorkBuddy/2026-11-10-15-37-22/WorkBuddy交接白皮书.md→ 本工作区.workbuddy/memory/最近三天日志 → 目标项目notes/README.md。 判据:能复述出端口分工(3000 门户 / 3001 词汇 / 3102 笔记)、5 个计划任务名、当前公网入口。复述不出来就再读一遍,不要靠猜。 -
2. 读约定与已知坑,不要重推:
notes/README.md的约定 1–13 与「已知坑」段、notes/AUDIT-REPORT.md、notes/表格功能方案.md(若任务涉及表格)。 判据:能说出三条铁律(table-layout:fixed+<colgroup>显式列宽 + 只画合并锚点格)和两条禁令(不引 Canvas 引擎、不重建已有巡检机制)。 -
3. 定位本次任务的父笔记与邻居:父笔记
cmwftobmk003plh8cyg6iongb下已有 D01–D15 对话档案、画像、评分、踩坑地图四篇。 判据:知道「哪些结论已经被验证过」。看到重复的坑,先查踩坑地图,不要重新试错。
B 组:先跑,确认环境活着
- 4. 三端口 + 五任务 + 一条隧道,一次查完:
curl -s -o /dev/null -w "portal:%{http_code}\n" http://127.0.0.1:3000/
curl -s -o /dev/null -w "notes:%{http_code}\n" http://127.0.0.1:3102/notes/
curl -s -o /dev/null -w "pub:%{http_code}\n" https://cag.quest/
Get-ScheduledTask -TaskName "Kaoyan*" | Select TaskName, State
Get-ScheduledTaskInfo -TaskName KaoyanNotes | Select LastRunTime, LastTaskResult
判据:三个 200;LastTaskResult 为 0x41301(267009)才是运行中。出现 267014 或 1,先看第 5 条的构建链,不要改业务代码。
-
5. 构建链自检,三条各一次:
.next/BUILD_ID是否存在且时间新;notes/scripts/trace-guard.js是否仍在 build 命令里;prisma/schema.prisma的output与lib/db.ts的 import 是否指向同一个generated/db。 判据:三者一致。不一致就先统一,再谈功能——这是四次迁目录留下的债,任何一次不同步都会在 generate 时变成EPERM或运行时报模块找不到。 -
6. 浏览器与身份,各跑一条最小用例:Playwright 用
executablePath指向本机 Edge(插件要 chromium-1210,本机只有 1243);权限类用例走127.0.0.1:3000(门户注入身份),接口类走3102(默认匿名)。 判据:一条匿名请求返回 401/403,一条带身份请求返回 200。两条都过,才说明身份链路是通的。
C 组:三条不能碰的线
-
7. 不可动清单:
.workbuddy/(项目数据不是缓存)、portal/data/portal-secret.txt、notes.db、ops/launch.ps1的 UTF-8 BOM、已有的 5 个计划任务与selfheal.mjs。 判据:改动前能说出「动了会怎样」。动 BOM 会导致任务LastTaskResult=1;重建巡检会和后台自愈打架,两周后才被用户发现。 -
8. 会话纪律:一个可验收模块 = 一个会话;单会话 ≤50 次工具调用、≤150K 上下文,超出就切并交白皮书。 判据:每完成一个模块(如「表格 P1 验收通过」)就落一份交接,而不是继续在同一会话里开下一个模块。依据:工具调用数与 token 相关 r=0.998,指令长度只有 r=0.19——省字没用,少轮才有用。
-
9. 改动纪律:改代码前
Stop-ScheduledTask,改完 build,再Start;删目录用 PowerShellRemove-Item -Recurse -Force,不用rm -rf;generate失败先停服务杀端口,不换输出目录绕过。 判据:build 前后BUILD_ID时间戳变化;LastTaskResult回到 267009;prisma-generate.log无 EPERM。
D 组:验收与收尾,写死不许口头
- 10. 开工前先写断言,五行模板:
验收:① 桌面 1440 与手机 390 均无横向滚动(scrollWidth-clientWidth = 0)
② 目标页与相邻页 200,全流程 0 个 4xx
③ 控制台 0 error,0 混合内容
④ 写入后重新读取一致(不是只看提交成功)
⑤ 服务重启后 30 秒内首页 200
判据:这五行能在开工前贴进对话。写不出来,说明需求还没想清,先给方案不要动手。
-
11. 交付前四件套:桌面 + 390px、浅色 + 深色、0 个 4xx、0 个 JS 报错;涉及表格再加一条「编辑器与页面同宽截图一致」。 判据:四张截图 + 一段控制台输出。依据:字体度量差 9% 就是这么发现的——两端不同源,肉眼看不出,截图一比就现形。D12 的 89 张配图能一次过,是因为每张都在同一视口、同一主题下重拍;反过来,贴纸 FAB 的三次返工,都是只在桌面截图里确认过。
-
12. 收尾三件套:新坑写回当天日志(症状/根因/修法/检查项四段);报一行账(工具调用数、约耗 token、最贵环节);留回滚点(备份文件或版本号)。 判据:下一个人只看日志就能复现你的修法。做不到,就等于这次没修。
症状速查:先查这一格,别从头排查
| 症状 | 先查 | 对应条目 |
|---|---|---|
白屏 / ChunkLoadError | 是否 Stop 后再 Start;chunk 是否新旧混用 | E3 |
日志 Ready 但端口不监听 | 是否在服务运行时 build 过 | E2 |
prisma generate 报 EPERM | 端口进程是否还在;输出目录是否与 import 一致 | T2 / 第 5 条 |
Unexpected token '<' | 是 308 到 HTML(少尾斜杠),还是网关 524(包太大) | T3 / N5 |
| 登录了仍提示未登录 | 是否在 3102 直连;门户是否保留 Host 头 | N4 |
| 域名解析到旧 IP | IPv6 DNS 是否还是 fe80::1;缓存是否未过期 | N2 / N3 |
| 公网 502 或 443 超时 | 节点 443 是否被平台屏蔽 | N1 |
| 手机端横向溢出 | FAB 是否被底栏/贴纸坞遮挡;坐标是否夹紧 | F1 类 |
| 编辑器与页面排版不一致 | 字体栈、字号、padding 是否两端同源 | F3 |
| 新参数对老数据无效 | 是否只写进了新生成的数据 | F1 |
还有一条不在清单里、但决定这 12 条能不能落地:判据必须由提需求的人给,而不是由执行者自己定。这两个月的 364 条断言(表格 210、手册 154)之所以有效,是因为其中一半是从用户原话里直接抄下来的——「裸表」「0 重叠」「0 横向溢出」「每批 12 个」都是原话里就带数字的词。反过来,凡是「看着舒服」「别再卡了」这类判据,最后都变成了多轮往返。清单给的是动作,判据给的是终点;没有终点的动作,做得再快也只是在扩大搜索范围。
最小开场白(可直接复制)
先读白皮书 + 本工作区最近三天日志 + notes/README.md,复述端口、计划任务、当前域名。
然后按启动包第 4–6 条自检环境,把结果贴给我(三个状态码 + LastTaskResult + BUILD_ID 时间)。
环境没问题再动手;今天只做一个可验收模块,开工前先给我验收断言。
已确认的坑不要重试:Prisma 不换输出目录、rm 不用 rm -rf、权限用例走 3000。
这 12 条的共同目的不是「规范」,而是把已经付过学费的结论变成默认动作。当前 84.9 分里最低的一维是返工控制(75.4),而返工的主要来源不是能力,是每次从零探索。