Intent Flow
FreeNot checkedIntentFlow — Comment-Driven Development Framework 注释驱动开发框架:以 @intent 注释为契约的 AI 辅助开发工作流(需求/设计/执行/报告四阶段 + 状态机自动流转),提供 pi 扩展、MCP Server、CLI 三种形态
About
IntentFlow — Comment-Driven Development Framework 注释驱动开发框架:以 @intent 注释为契约的 AI 辅助开发工作流(需求/设计/执行/报告四阶段 + 状态机自动流转),提供 pi 扩展、MCP Server、CLI 三种形态
README
Comment-Driven — 注释驱动开发
这只是一套本地的个人设计思路。读一读本 README 也好,参考别人的方案也好,实际本仓库的代码内容没有必要一定要读。内容只是讲解设计思路,不必照抄——毕竟并没有科学验证过这套思路是永久可行的,顺便说一下这个README也是ai写的,我自己也没怎么看,嗯,这句话也是,再顺便说一下其实我叫这个iflow框架的原因也是ai写的。本仓库的 CLI 基本没卵用,项目内容也管理得混乱。
IntentFlow 是一套以 @intent 注释为核心契约的 AI 辅助开发工作流框架,提供 CLI 和 MCP Server 两种适配形态(VS Code 与 Pi 扩展形态已移除)。
设计思路
Prompt / Skill 的本质
Prompt 和 Skill 的核心价值不是什么精巧的措辞技巧,它的本质很简单:把上下文中重复出现的相同文字提取出来,集成成一份可复用的规则说明。最标准的写法就是一套执行流程、一个阶段的说明。
随着 LLM 越来越强,很多 skill 里的技术性指令可能不再需要了。但有一件事无论模型怎么进化都绕不开——跟用户对齐。用户需求是个无穷底的黑箱,模型再精尖,不跟用户对齐那么最终的结果也只是个一团糟。
所以这套 skill 的核心目的不是"教模型做事",每一份 skill 都是可以被替代的,它们只是在开发流程的关键节点上建立模型与人的对齐锚点。
相关文件:
.dsh/skills/— 工作流 Skill 定义
四个阶段
Requirement(需求) — .dsh/skills/requirement/SKILL.md
要把模糊想法结构化,最重点的事情是反复跟用户对话确定需求细节。侧面辅助手段是联网搜索——从问题角度看看别人怎么解决的,从功能角度看看同类功能解决了什么问题,或者直接随便乱搜找灵感。还有一个关键思路是测试前置:在需求阶段先模拟出一套验证流程,后续代码怎么写都得跟这套测试方法对齐,哪怕用户不会写代码,也能通过测试步骤体会到功能是否达标。
Design(设计) — .dsh/skills/design/SKILL.md
结构设计和需求分析本质上属于同一个阶段,但刻意拆成两个。原因是"结构设计"这件事在前后端、小脚本里有太多不同的做法,需要一个固定的框架来兜住。参考了 DDD 的分层概念,简化成三层:数据结构/接口/仓库放一层,应用逻辑/编排放一层,面向用户或外部接口的放一层叫适配。这套逻辑不分技术栈,前端后端小脚本大致都能套,因为它没讲什么高深的理论,只是一种代码的结构划分。划分的根本原因是——LLM 经常把代码全写在一个文件夹里,文件夹一长写着写着就跑偏了,所以要划分上下文、降低理解难度,人对代码的理解也是一样的道理。
需求+设计两个阶段会生成一份 feature 产出,包含两个文档:需求文档和设计文档,作为本次开发的对齐基准。
这里面附带了一个小机制叫 later-on 备忘录——需求或设计阶段冒出了什么奇妙想法,但跟本次沾边不大或者太复杂,直接记进去,防止过度设计。
Execute(执行) — .dsh/skills/execute/SKILL.md
这是一个多 skill 编排的阶段,核心思路是隔离上下文——测试、写代码、审查三段彼此隔离。
多 agent 的上下文是统一的:写在文件里的 @intent 本身就是子 agent 需要读取和执行的内容。测试 agent 读 requirement 和 design 文档,同时主 agent 把每个文件的 @intent 作为该文件的规格派发给子 agent。子 agent 不需要再考虑"要设计哪些内容"——这些在主线程的上下文里已经满足。同理,写代码的 agent 和审查 agent 也是这样,各司其职,通过统一的 @intent 契约对齐。
Report(报告) — .dsh/skills/report/SKILL.md
接管 Git 对文件改动的关注,对需求理解做打包。通过 feature 这一全局工作流阶段,把每次变更的意图沉淀为意图包(intent package)。后续更新改动时,优先查阅 report 发布的 intent package,方便模型搜索代码内容。
为什么这么设计?目前的 RAG 工具在实际反馈中,很多时候大语言模型宁愿用自己原生的那套 grep 也不愿意用 RAG 自带的代码分析工具。既然这样也就只好顺从——每次代码变动后遗存一份项目的备忘录/方向标,帮助模型分析自己的代码,在后续的设计和改动中提高代码质量。至少模型搜的时候有方向。
本质上,report 这一套就是工程规范中用来全局统一意志的上下文。
AskingUI(UI 规格对齐)
.dsh/skills/asking-ui/SKILL.md + toPencil.md,UI 相关的需求对齐,独立于四阶段流程之外。
核心观点:市面上大多数 UI 需求并不依靠 skill 完成。前端组件库多如牛毛——2D 有 shadcn/MUI/Ant Design/Element Plus 那一大堆,3D 有 three.js 生态,“前端已死”在 AI 出现之前就被喊了多年,因为拼页面的能力早已被库工具化;到了 AI 时代,连调用库的代码都不用写了。所以对模型来说 skill 反倒不是很重要,重点在于知道去搜哪一些库。
asking-ui 因此只做三件事:问清楚颜色要什么样子的、搜索现成组件库做分流判断(能覆盖就直接代码层拼装)、确认配色方案。剩下的全是工程与逻辑层的事。它不画图——画布产出由 toPencil.md 按规则执行,且库组件优先,只画库覆盖不到的定制件。
辅助决策项(产品方向、技术选择、字体层级/间距/阴影、三参数旋钮、无障碍约束、交互触发场景)保留在询问维度里——这些是市场验证过“需要问”的问题,不能因为思路简化就取消。
与四阶段的关系:asking-ui 是 Requirement 阶段的 UI 侧补充,产出需求清单后,是否需要画布规格由分流结论决定。
Loop / 状态机
四个阶段描述了工作流的"静态结构",但开发是一个持续的过程——你怎么知道什么时候该进入下一个阶段?
Loop 的本质是:你拥有无穷的 token 和一套本地的代码库,改代码不需要花什么钱,并且你有无穷的需求可以让 loop 定时去触发。每轮对话结束后自动扫描 .intentflow/ 目录下的 feature 文件夹,检查文件状态变化(requirement.md 出现没有?design.md 出现没有?),一旦检测到新文件出现,自动推送消息提醒进入下一阶段。
对于普通开发者来说这个机制可能显得"过于贵重",但它的核心含义是好的:定时的、按阶段触发的状态机,驱动 skill 执行。
这套思路很多 AI 开发工具都有,有些是在提示词里做手脚,有些是在代码里做手脚。IntentFlow 早期的选择是在代码里——通过 pi 扩展的事件机制实现一个轻量状态机(该实现已随 pi 适配层入档 .archive/retired_pi.008/,当前形态下由工作流 skill 承担阶段流转)。
不兜底哲学
逻辑代码中禁止"以防万一"式兜底。只处理确定会发生的路径,不存在的分支不需要防御。兜底 = 崩了不炸,不是优雅跑。测试未覆盖的兜底就是潜在的 bug。
关于 @intent
一个个人观点(未经科学验证,仅作为设计出发点):代码文件对于大语言模型而言本质上是一份分析语料。文本形式的约束对模型来说本身就是好东西——机器看不懂的代码,模型同样可能看不懂。
尤其是一些接近底层的代码:效率越高、能力越强、越贴近硬件的写法,就越脱离模型知识库里的 token 分布。别说人看不懂,大语言模型想看懂代价也不小。这时候加上注释辅助,模型后续重复分析同一段代码时就能省下大量开销。
我的 @intent 思路默认了一个前提:AI 在理解代码时,并不会采用逐块分析的方式,而是先完整通读整个文件,后续需要修改时再分批处理。
为什么 @intent 写在代码文件里,而不是外部 PRD
PRD(产品需求文档)这类外部文档有一个绕不开的问题:文件腐烂。一旦代码和文档分开维护,就必须同时维护两份内容——代码本身和 PRD。但现实是,大多数人写完代码之后不会再去看文档,写代码之前也不看。PRD 对非专业人士是一种负担.
更现实的问题是:写着写着突然想到一个更好的优化方案,这时候是不是要同时改代码文件和 PRD?很麻烦。
所以不如把 PRD 分层打散,直接写进代码文件本身。这样大语言模型在读取代码语料的时候,顺手就能把 @intent 也一并改了,不存在"忘了更新文档"这回事。
每个文件头顶写一段自然语言 @intent,说明这个文件为什么存在、承担什么职责、边界在哪。人看了能理解,AI 看了也能理解,工具还能读取、追踪、聚类。这是整个框架的契约基础。
输出文档(意图包)的设计思路
IntentFlow 里的输出文档(需求/设计/报告/意图包)本质上是什么?是 AI 上下文的一部分,被截断保存下来,作为项目里一种可维护的事实。
为什么需要截断保存?因为即使不保存,AI 在每次会话的思考过程中也会产生这些内容。区别在于:不保存,每次新 session 都要在黑盒里重新演算一遍;保存下来,后续 session 直接读取即可。
给输出文档定一个格式的意义:
- 统一共识——项目全局开发演进过程中,所有 session 共享同一份事实,不会各说各话
- 省 token——让 agent 重复读取这些内容,上下文中的思考变成定量的,不需要每次重新演算黑盒中的思考内容
- 可干预——你可以手动修改文档,等于手动修改 AI 的思考方向和内容;文档是唯一看得见、摸得着、改得动的思考载体
本意一句话:通过约束和截断 agent 上下文里的内容,形成一种全局可维护的项目事实。
至于维护成本——本项目需要维护的事实极少:只有 .intentflow/ 里的 intent package 导航需要维护,其余都是杂鱼,甚至可以不看。
report:项目的自我改进回路
report 本质上是 execute 阶段的输出文档——它本不是独立存在的内容,只因为需求必须反复与用户确认拍板、无法作为完整工作流嵌入开发,于是独立成了一个 skill。
它的设计经历过三次简化:
- 能力地图 webview——最初想基于范畴论设计一个能力地图/意图包/项目模块图的 GUI 产品,后来意识到这玩意做起来太麻烦、做出来也不好用,放弃。
- 文件夹工程——又意识到:一个良好的架构,它的文件夹本身就已经能表露意图,不需要再用一个 GUI 结构重新表露一遍内容。
- 一个 report 就够——最后发现连文件夹工程都不用搞:每次维护结束之后,声明一遍自己做了什么,就足够了。把这件事集成成一个 skill 之后,反而意外地以项目工程的方式真正做了出来。
由此得到一个结论:所谓项目不可维护,本质上是缺乏工作经验、不会做每一次汇报——每次开发结束不沉淀,项目就逐渐脱离掌控。
至于"生成这么多文档真的合适吗"的疑虑——这些文档本质上只是上下文截断的内容,该生成的还是会生成。真正需要的只是一个指向全局的方向标:让 AI 每次读取时优先知道哪个该读、哪个不该读,而不是全面扫描。
意图包的字段因此只有三段,每段一个事实层级:
- 此次更新了什么——局部事实:当前 feature 的总结
- 几个模块分别干了什么——分块事实:模块如何组合成功能
- 每个文件改动了什么——文件级事实:最重点的一层,它决定了意图包是否可维护,决定了维护后能否生成能力地图,决定了 agent 能否通过能力地图而不是直接扫目录来获得项目的事实
字段设计的目的很简单:可通过关键字检索,检索到的内容可分析、可查找。
与 git 的关系——git 记录的是变更的痕迹(代码层面发生了什么),report 记录的是语义(为什么这么改、模块怎么组合、结论是什么)。AI 读 git log 需要重新理解代码才能还原语义;读 report 直接拿到结论。git 回答"改了什么",report 回答"为什么这么改",两者不是同一层的信息。
与 spec 路线的根本区别:事实的时序。主流方案(spec 驱动)是在项目开始前先建立一套需要维护的全局事实,然后让代码去对齐它——事实先于代码存在,从第一天起就有维护负担。本项目的做法相反:在项目完成、代码确认能跑之后,才沉淀需要维护的事实(report 关账时产生)。因此 requirement/design 只是过程产物——代码跑通后它们就被 report 取代,根本不需要再看;只有 report 是结果事实,才需要维护。前者维护的是"承诺",后者维护的是"既成事实"。
独立化成长——report 沉淀的不是产品,是种子。任何项目想拥有贴合自己内部的意图流,不需要 fork 本仓库:只需通过 .intentflow/ 下 agent 产生的内容和 report.md 里的开发经验重新整合,修改自己的 skill 与工作流即可。核心机制越小越容易被重新实现,垂类内容由各开发者在自己的成长中自行沉淀——这也是本项目刻意保持精简的原因。
渐进式植入——这套方案不需要在项目开始时花大成本确定一份全局事实(项目维护图、全局 spec 之类):入场成本只有一个 .intentflow/ 文件夹和一个 skill。老项目的代码文件动辄几千几万个,就算要维护一份全局事实,最终也得分块描述——那不如一开始就分块。植入是渐进的:先在一个 feature 上用起来,每次关账顺手给涉及的文件补上 @intent,随着项目成长,没有意图的内容逐步变成有意图的内容。像墨水在纸上洇开,每次关账就是一次扩散。
可抛弃性——意图包不依赖本工作流存在:skill 如何更新、流程如何演进、甚至整个方案被抛弃,.intentflow/_packages/ 依然是有效的项目地图——它描述的是项目本身,不是流程。日常开发 AI 本就需要扫描目录,意图包只是省去了这一步,没有增加任何实体。所以采用本方案没有沉没成本:最坏的情况,是留下一张比没有更好的项目地图。
工具能力一览
MCP 工具
| 工具 | 功能 |
|---|---|
check_file_size |
检查文件大小,排除注释统计纯代码行数 |
project_intent |
创建/更新 @intent 注释 |
CLI 命令
iflow check-file-size、iflow trace-dependency-chain、iflow project-intent、iflow list-folder-intents
项目结构
.intentflow/ # 工作流产出(需求/设计/报告/意图包)
.dsh/skills/ # Skill 定义
src/
data/ # 实体 + 接口 + 实现
application/ # 用例编排
adapter/ # CLI / MCP
dist/ # 构建产出
Skill 质量标准参考
核心九条:前置默认、去人称化、过程式声明、极简无歧义、不角色扮演、不冗余、不兜底、流程描述衔接、不用表格。
这些标准同样遵循上面的思路——随着模型越来越强,它们可能被替代,但"与人对齐"这个目标不变。
License
MIT
Installing Intent Flow
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/TheChengXi/intent-flowFAQ
Is Intent Flow MCP free?
Yes, Intent Flow MCP is free — one-click install via Unyly at no cost.
Does Intent Flow need an API key?
No, Intent Flow runs without API keys or environment variables.
Is Intent Flow hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Intent Flow in Claude Desktop, Claude Code or Cursor?
Open Intent Flow on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
by lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
MCPHub
Website to list high quality MCP servers and reviews by real users. Also provide online chatbot for popular LLM models with MCP server support.
MCP Servers Rating and User Reviews
Website to rate MCP servers, write authentic user reviews, and [search engine for agent & mcp](http://www.deepnlp.org/search/agent)
mkinf
An Open Source registry of hosted MCP Servers to accelerate AI agent workflows.
Compare Intent Flow with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
