Reflex Build Knowledge 机制详解:用项目知识与应用指令为 AI Agent 建立跨提示词的记忆
【免费下载链接】reflex🕸️ Web apps in pure Python 🐍项目地址: https://gitcode.com/GitHub_Trending/re/reflex
在 Reflex(Web apps in pure Python)的 AI 构建平台 Reflex Build 中,Knowledge(知识)是让 AI agent 在多次生成中保持一致性的关键机制:它提供可复用的上下文,使同一批规则能指导不止一个提示词,而不是每次对话都要重新口头叮嘱。Reflex Build 把「项目级知识」与「仅作用于当前应用的应用指令」明确分层管理。读完本篇,你能掌握三层上下文的职责划分(项目知识 / 应用指令 / 设计系统)、各自的入口位置与维护实践,并对照 Reflex 仓库源码理解 Reflex 在「仓库级 agent 记忆」(AGENTS.md / CLAUDE.md)上落地的同源设计思想。
为什么需要 Knowledge:跨提示词的持久上下文
Reflex Build 的工作流是:用自然语言描述需求,agent 制定计划、修改 Python 源码、运行应用并在Preview中展示结果(参见 What Is Reflex Build)。但自然语言提示词是「一次性」的:如果团队约定了术语表、架构规则或数据命名规范,而每次只靠临时提醒 agent,生成结果就会在不同应用、不同成员之间漂移。
Knowledge 的定位正是解决这个问题:为 agent 提供应作用于多个提示词的、可复用的上下文。Reflex Build 将这类上下文分为两类,分别挂在不同的作用域上:
| 层级 | 名称 | 作用范围 | 典型内容 |
|---|---|---|---|
| 项目 | Project Knowledge(项目知识) | 同一项目下的所有应用 | 产品术语与受众、组织级架构与安全规则、共享数据概念与命名规范、各团队都应使用的链接或参考资料 |
| 应用 | App Instructions(应用指令) | 仅当前应用 | 文案用词偏好、状态管理方式约束、UI 必备状态要求等 |
这种分层的意义在于:共享的、跨应用的规则沉淀在项目层,避免在每个应用里重复维护;只跟某个应用产品形态相关的规则则留在应用层,避免污染同项目里的其他应用。
项目知识(Project Knowledge):全项目共享的指导原则
项目知识用于存放同一项目内多个应用共同遵守的指导内容。官方文档给出的适用场景包括:
- 产品术语与受众(Product terminology and audience)——例如统一「workspace」与「tenant」的叫法、明确目标用户是内部运营还是外部客户;
- 组织级架构或安全规则(Organization-wide architecture or security rules)——例如「所有对外 API 必须走统一网关」「密钥只能存放于 Secrets」;
- 共享数据概念与命名规范(Shared data concepts and naming conventions)——例如表名、字段命名、时间戳时区约定;
- 每个应用团队都应使用的链接或参考资料(Links or references that every app team should use)——例如内部组件规范、品牌文档地址。
管理入口
- 项目侧边栏中的Knowledge入口:在这里直接创建和管理整个项目共享的知识条目;
- 应用的Knowledge面板中提供的 project-knowledge 链接:在应用上下文里也能跳转到项目知识进行查看与维护。
从产品结构设计看,这种「项目侧栏入口 + 应用面板快捷链接」的双入口布局,正是为了让两种作用域的上下文都能被方便地发现和编辑,减少「规则写在 A 处、却在 B 处失效」的维护盲区。
应用指令(App Instructions):只约束当前应用的规则
应用指令存放只应作用于当前应用的规则,与项目知识互为补充。
添加步骤
- 打开目标应用;
- 点击应用右上角的 more 菜单(更多菜单);
- 选择Knowledge,在面板中录入应用指令。
官方文档给出的应用指令示例,非常典型地展示了「短、具体、可执行」的写法:
Use "workspace" instead of "tenant" in user-facing copy. Keep state transformations in State methods rather than UI components. Every data table must include loading, empty, and error states.三条指令分别对应文案约定(用 "workspace" 替代 "tenant")、Reflex 框架层面的实现约束(状态转换放在State方法中而非 UI 组件里,这与 Reflex 的事件-状态模型一致)、以及 UI 完整性要求(数据表必须包含加载中、空态、错误态)。
保存行为与质量原则
- 保存时机:应用指令在你切换到另一个控件时自动保存,没有显式的「保存」按钮,编辑后切换焦点即生效;
- 质量原则:文档明确要求指令保持short, specific, and current(简短、具体、常新维护)。相互矛盾或已过时的指令会让生成结果变得不可预测——这是使用应用指令时最重要的一条约束:随着应用演进,要及时删除失效规则,而不是只增不减。
与设计系统(Design Systems)的职责划分
Knowledge 不是 agent 上下文的唯一载体。Reflex Build 还专门提供了 Design Systems,用于承载可复用的视觉指导:颜色 token、排版、间距、组件样式等品牌规则。两者必须各司其职:
- 放入 Design System:视觉层面的可复用规范(颜色、字体、间距、组件模式)。设计系统归属项目,可被项目内所有应用复用,且同一时刻只有一个处于激活状态;
- 放入 Knowledge:行为规则与架构规则(例如「状态转换放在 State 方法中」「表格必须有 loading/empty/error 三态」)。这类内容不属于视觉范畴,混入设计系统会模糊每种上下文的用途。
划分原则可以概括为一句话:让每一种上下文来源都有清晰的目的(each source of context has a clear purpose)。视觉规则进设计系统,行为与架构规则进 Knowledge,agent 在生成时才不会在两类信息之间混淆。
源码印证:Reflex 如何处理「agent 的持久记忆」
平台侧的 Knowledge 功能(项目知识/应用指令)运行在 Reflex Build 服务中,但 Reflex 仓库本身实现了同一设计哲学的另一个落点:给本地仓库里的 AI 编码助手(Cursor、Claude Code、Codex 等)提供持久上下文。对照阅读这两处实现,能更完整地理解 Reflex 对 agent 记忆的分层策略。
仓库级指令文件:AGENTS.md 与 CLAUDE.md
按 AGENTS.md and CLAUDE.md 文档 的说明:
AGENTS.md被遵循 AGENTS.md 约定 的 agent(Cursor、OpenCode、OpenAI Codex 等)读取,CLAUDE.md被 Claude Code 读取;- 一个 Reflex 项目应在项目根目录、
rxconfig.py旁至少放置其中一个文件; reflex init默认会在项目根写入一个 starterAGENTS.md(可用--no-agents关闭),Claude Code 用户还会得到一个通过@AGENTS.md语法导入的CLAUDE.md。
受管区块(managed section)的实现细节
这个机制的核心是「受管标记区 + 用户自定义区」的文件结构,与平台侧 Knowledge 的「共享条目独立维护」异曲同工。相关实现:
- 标记常量定义在 config.py:
BEGIN_MARKER = "<!-- reflex managed begin (do not edit inside this block; add custom content outside the markers) -->" END_MARKER = "<!-- reflex managed end -->"刷新逻辑在 frontend_skeleton.py 的
initialize_agents_md(L126-L160):先拉取规范内容,再用_plan_agents_md决定写哪个文件、以何种动作写入,最后由_apply_agents_md_action落地;_apply_agents_md_action(L86-L123)的行为值得注意:- 若文件中已有合法的 begin/end 标记对,只替换标记区之间的内容,标记外的用户内容原样保留;
- 若标记缺失、不配对或顺序错误,则丢弃游离标记、把受管区块前置写入,同样保留用户内容。
这意味着重复执行
reflex init既能刷新官方维护的 Reflex 约定,又不会破坏用户在标记外补充的项目专属规则(内部约定、lint/测试命令、目录布局等)。网络容错:
initialize_agents_md中拉取规范AGENTS.md失败只记录 warning 而不中断 init(L147-L152),离线时项目初始化依然成功。
对照总结:Reflex 的三层 agent 上下文
| 层 | 载体 | 作用范围 | 维护方式 |
|---|---|---|---|
| 平台项目层 | Project Knowledge | 项目内所有应用 | 侧边栏 Knowledge 面板集中管理 |
| 平台应用层 | App Instructions | 单个应用 | 应用 more 菜单 → Knowledge,焦点切换即自动保存 |
| 本地仓库层 | AGENTS.md/CLAUDE.md | 进入仓库的 AI 编码助手 | reflex init写入受管区块,标记外内容受保护 |
三层分别服务「浏览器里用自然语言构建的 agent」与「在 IDE/CLI 中改源码的编码助手」,但设计原则一致:上下文按作用域分层、共享内容单点维护、矛盾与过时的指令要及时清理。
实践清单
综合文档与源码实现,管理 Reflex agent 上下文时的建议:
- 先定边界再写规则:跨应用共享的进 Project Knowledge,单应用的进 App Instructions,纯视觉的进 Design Systems;
- 指令写成祈使句短规则:如 "Keep state transformations in State methods rather than UI components",避免长篇叙述;
- 定期清理:矛盾或过时的指令会让生成不可预测,应用形态变化时同步修订知识条目;
- 本地仓库配套维护
AGENTS.md:把内部代码规范、测试命令写入受管标记之外,并依赖reflex init的受管区块刷新机制保持 Reflex 通用约定常新。
更多 Reflex Build 的提示与评审技巧,可继续参考 Reflex Build Best Practices。
【免费下载链接】reflex🕸️ Web apps in pure Python 🐍项目地址: https://gitcode.com/GitHub_Trending/re/reflex
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考