关键词命中
todo.json
里的任务, AI 读出
剩余步骤、自动加载技能规则、从上次断点继续。
whoami
Flow2Spec · 让 AI 一直知道你在做什么
AI 协作框架 · Memory Coding(知识库只是一环)
compare before-after
真实场景:某大型互联网公司业务后端 trn-fe-ops-commerce-api · 796 文件 / 4.7 MB · 416 个接口
> 改一下评价模板文案库的批量重评分 AI: 这个模块的表在哪? AI: batchReScore 是同步还是异步? AI: 有没有锁?幂等键是什么? AI: 返回格式是什么?错误码是多少? AI: (翻遍 416 个接口、796 份文件、4.7 MB 源码…)
> 改一下评价模板文案库的批量重评分 [matcher 命中] m-product-review-template-library [加载依赖] 4 个 topic · 约 300 行 AI: 已知 — fire-and-forget Redis 锁 smp:product-review:template-library :batch-rescore:lock(TTL 10 分钟) 单次最多 100 条 · 错误码 101 AI: 开始改,预计 3 处文件。
du -sh . && cat .Knowledge/manifest-routing.json
在一个已经深度使用 Flow2Spec 的真实生产仓库里,这些数字每天都在生长。
diff market.md
上半:市面五家各做什么,不做什么。下半:Flow2Spec 自己的 5 条能力,映到每家的空位。
.Knowledge/ 一份 · Cursor / Claude / Codex
原生加载并存
f2s-kb-feat/fix 改代码带改知识 · 不是一次性生成
.task/ 跨会话续作 · f2s-git-commit
提交前强制查 KB 覆盖
f2s-kb-feat / fix 一样腐化 —— 差别是会被缺口闸门喊出来,不是静默偏差。
tree -L 1 -d
知识层随项目走 · 规则层随工具走 · 生命周期不同,分开是最基本的决策。
.Knowledge/
是知识环(一环);进度、读法、维护由任务环、规则环、技能环分担。
知识环 .Knowledge/ · manifest
任务环 .task/ · 续作清单
规则环 rules · 怎么读 · 怎么做
技能环 f2s-* · 维护与触发
≠ 模型 Memory(私有) · ≠ 裸 RAG(概率猜) · Flow2Spec ≠ 只有知识库
.task/ 任务环在仓内并列。
.Knowledge/ · 任务环 .task/ · 规则环 · 技能环(分列,勿说三环)topicDependencies 纵链(第 7 页)cat match·匹配 && expand·展开 && verify·校验 && act·执行
在知识环上横读收窄:用户说一句「改评价模板文案库的批量重评分」,Flow2Spec 走四步:
resolve topicDependencies('product-review-template-library')
知识环 L2 纵链:你只说了「商品评价」三个字,topicDependencies
已拉齐通用约定 → 子域边界 → C 端白名单 → 本域细则。
topicDependencies 四层 topic 自动展开cat .Knowledge/topics/{groupon,coupon}-context.md | grep "必须\|禁止"
另一条主线:拼团 + 通用券。这些约束凭 AI「看代码」绝对猜不出来 —— 写在 topic 里直接挡掉。
groupon-setting.json ·
validField / maxUserJoins / needNewGuest
必须先读再动。
activityCode 查
promotionId + couponConfigId,改造必经
@/utils/couponHelper.js。status 语义:0=失败
· 1=成功 · 2=已领取 ·
3=已领完 · 4=不可领。f2s-kb-fix 写进 topic → 后续直接挡错cat .task/completed/20260511-product_review_review_publish_flow/task.md
一个横跨三端、9 步、分多次会话完成的真实任务 —— 中途任何一次下班关机,下次只说一句「继续」。
todo.json
里的任务, AI 读出
剩余步骤、自动加载技能规则、从上次断点继续。
.task/ ├── todo.json ← 任务索引 · 命中关键词即续作 ├── active/ │ └── template_ai_score/ │ ├── task.md ← checklist([x] = 进度) │ ├── context.md ← 涉及文件 · 资料链接 │ └── user-todos.md ← 用户线下待办(DDL · 发版) └── completed/ └── 20260511-product_review_review_publish_flow/ ├── task.md ← 全部 ✅ ├── context.md └── user-todos.md
todo.json → 命中关键词
→ 读出 task.md 剩余步骤
→ 从断点继续
todo.json 命中 → task.md 断点续作user-todos.md:DDL / 开关 / 发版 — Agent 干不了的落盘f2s skills --list
按阶段选 f2s-*,不必记全表;
flow2spec init 落盘模板与路由,日常在对话里点名技能即可。
按技术方案写代码走规则
implement-tech-design(非单独 f2s 技能名);多文件已有能力用
f2s-doc-add 一条龙入库。
f2s progressive --no-upfront-cost
最小可用集是 1 条 manifest + 1 个 matcher + 1 份 topic,其余**随需求长出来**。
# 生成 .Knowledge/ + 工具配置 $ npx @double-codeing/flow2spec@latest init
# 喂一份架构文档 /f2s-doc-arch /f2s-doc-add
# 一条命令走完:改 + 记 + 提交校验 /f2s-kb-feat # 新功能 → 代码 + topic 同步入库 /f2s-kb-fix # 修 bug → 更新 topic 防再踩 /f2s-git-commit # 提交前检查 topic 覆盖 + 规范信息
# 代码超前了 / 合并冲突了 /f2s-kb-sync # 同步能力到知识库,先出大纲再落盘 /f2s-kb-merge # rebase/merge 后处理上下文冲突
.Knowledge/ ├── manifest-routing.json ← 路由表 ├── matchers/ │ └── *.json ← 关键词分片 ├── topics/ │ └── <topic>.md ← 主题知识 ├── stock-docs/ │ └── *.md ← 存量文档 └── req-docs/ └── *.md ← 需求 + 方案 flow2spec.config.json ├── subAgent: true/false ← 子 agent 开关 └── switchAgentVerification ← 交叉校验 changeTracking.feat/fix/implement ← 变更追踪
f2s-* 内置规则主题(包模板 → init 落盘) ├── f2s-config-check.md ← 技能前置强制步骤 ├── f2s-knowledge-preflight.md ← 知识库首读约束 ├── f2s-karpathy-guidelines.md ← Karpathy 编码准则 ├── f2s-task.md ← 变更追踪规范 └── f2s-flow2spec-unified-entry.md ← 知识读取顺序 init 补齐骨架 → f2s-* 技能随需求生长 → 缺口闸门防静默偏差
f2s-* 技能代写、代改、代校验
./demo.sh --case product-review-template-library
一条主线 6 步走通 · 期间穿插十余次 feat/fix 小迭代,都在同一条知识链上生长。
product-review /
common-modules /
social-media-platform 已有事实:发现
(a)
批量方法没说够数是否补查、(b)
并列怎么破没讲、(c)
图片上传工具没点名、(d)
接口是新建还是复用现有没确认 → 继续追问。
needCount 不足时补查吗?|L|
最小相等时按什么兜底?图片上传复用 admin
utils 还是新建?BC 接口从零实现吗(当前 0)?
req-docs/商品评价_模版文案库_需求澄清.md(10 小节
· U⊆L 三档规则)+ 配套
商品评价_文章发布流程改造_技术方案.md(postType /
imageUrls / publishStatus 流转)
req-docs/商品评价_模版文案库_技术方案.md + 5 份
DDL(文案库 / 标签 / 关联 / 评分规则 / agent prompt)。
.task/active/template_ai_score/
req-docs/ 里的技术方案,AI 触发
f2s-implement-tech-design,自动拆 8 步
checklist:建评分规则表 → 模型 → aiScoreHelper(先 mock)→ 4 个
CRUD + serverless 注册 → 入库 fire-and-forget 触发评分 →
批量重评分接口 → 列表/详情透传 aiScore → KB
同步。每步勾钩,中断可续。
c1d2e3f · 新增
rpAiForPeta
rpAiForPeta(fields, model, apiKey, endpoint) ·
按映射提字段 → 拼 prompt → 调指定模型 ·
model 白名单 gpt-4o-mini / deepseek-chat · endpoint
须白名单域名 · 超时 30s
f4a5b6c ·
C端新增图片上传方法
POST /api/c/upload/image
· 限制格式 jpg/png/webp · 鉴权复用发帖 token ·
禁止 base64 直传
a7b8c9d ·
用户上传的文章也需要评分
scoreContent
已通用 → 发帖接口加评分调用 ·
结果不进模版库表,新开 user_article_score
c8d9e0f1 · 评分漏传 title
scoreContent 只把 content 扔给
Agent,标题完全没进去
scoreContent(title, content, model?),prompt
里把标题作为独立上下文。六个 handler 都补一下调用。要改
topic 吗?
title: string · 必传 · 用于 Agent 理解主题意图
2a3b4c5d · scoreContentBatch 串行改并发
for-await
改 Promise.all 并发触发,实测 10 条 9
秒。顺手把繁忙错误码 AI_BUSY 从字面量拆到
_enum——避免后面又飞散。
6e7f8a9b · 标签软删改物理删
commerce_review_template_library_tag_rel。topic「标签生命周期」那段原来写的是「软删保留 180
天」,我直接改成「物理删 + 事务清关联」
🚀 feat(product-review): 模版文案库 + AI 评分 · 不
add -A · 不跳 hooks · 不自动 push。B 端管理 UI
另起仓库走同一套。
f2s-req-clarify:成批问 → 你答 → 查缺 → 再追问,两轮定稿f2s-req-backend:四层依赖 + 技术方案 + 5 份 DDLf2s-kb-feat / ⑤ f2s-kb-fix:代码与 topic 同步f2s-git-commit:三查通过;不自动 pushecho "not a silver bullet"
Flow2Spec 用结构投入换长期复利。下面三种场景,结构投入不划算,别硬上。
.Knowledge/ — 工具不能替代纪律f2s-kb-upgrade(知识库模板升级,≠
单独 init)
npx @double-codeing/flow2spec@latest initf2s-kb-upgrade 对齐模板;勿把单独 init 当升级