没决定的,Agent 自己定。
模型、存储、分层,你没规定的都归它。
意图与实现之间的持续控制层
Agent 每天都在改写你的软件。Noema 让你写下的意图始终有效:看得见,也改得动。
用你自己的话写在 Markdown 里。没规定的部分,Agent 自己决定。Agent 在你的意图允许的范围内,自己完成实现。每个词的实现、依据和值得注意的地方,都看得见。改一句话,或者和 Agent 讨论:它提出修改建议,由你审阅后决定。
问题 01
你仍要在会议里解释系统、在事故里定位问题、在架构演进里做决定,可代码已经不是你一行行写出来的了。
以前读 Agent 的改动
export function streak(days: Date[], tz: string) { let n = 0; for (const d of sortedDesc(days)) { if (!isNextDay(d, n, tz)) break; n++; } return n;}export function computeStreak(entries: CheckIn[], now: Date, tz: string): number { const days = new Set(entries.map((e) => toLocalDay(e.at, tz))); let cursor = toLocalDay(now, tz); let count = 0; while (days.has(cursor)) { count += 1; cursor = prevDay(cursor); } return count;} const REWARD_AT = 7;if (streak(days, tz) >= 7) grantReward(user);export async function maybeReward(user: User, streak: number) { if (streak < REWARD_AT || user.rewards.has("streak-7")) return; await rewards.grant(user.id, "streak-7"); await notify(user.id, { kind: "reward", id: "streak-7" });} export const STREAK_WINDOW_DAYS = 400;现在打开意图对应的说明
连续打卡满 7 天,给用户一个奖励。
1computeStreak 把每条打卡记录换算成用户所在时区的自然日,去重后从今天开始逐日往前数,遇到没有记录的一天就停止;所以漏打一天,连续天数即清零。
连续天数达到 REWARD_AT(7)时,maybeReward 发放一次 streak-7 奖励并通知用户;已领取过的用户不会重复领取。
重要选择按自然日而不是满 24 小时计算;时区取自设备设置。
streak.test.ts 连续 7 天、断一天、同一天重复打卡,3 个用例通过跨时区旅行或凌晨打卡,可能被误判为断签,当前按设备时区计算。要不要把这一点写进意图?
规则 02
Noema 不取代 Agent 的判断,只守住这三条边界。
模型、存储、分层,你没规定的都归它。
你写下的,不会被悄悄忽略或改写。
影响体验、风险和成本的,摆在明处。
自主 03
它不拥有你的表达方式,不拥有你的产品定义,也不要求你替换已经习惯的 Coding Agent。
prose + C4 + DSL + code自然语言、DSL、建模语言、代码,随意混用。
*.noema.md普通 Markdown,Git 管理;不用 Noema 也归你。
ACP / agent adapters继续用你习惯的 Coding Agent,Noema 不替代它。
适合谁 04
线上出问题了。会议室里所有人都看向你:“这段逻辑为什么是这样的?你来解释一下。”
你真的在负责这个系统,还是只是 Agent 的“肉代理”?
代码是 Agent 写的,出了问题要担责的却是你。你在替它解释,自己却说不清它为什么是现在这个样子。
Noema 怎么帮你顺着一条意图,找到它当前的实现,查看证据,看清还有哪些不确定。你解释的,是你真正理解的。
凌晨两点,线上出了事。唯一看得懂那段代码的人上个月已经离职,留下的线索,是一条四百多轮的聊天记录。
你真的掌控着这个产品,还是只是看着它一天天失控?
工程师们审不完每天几千行的变更,只能放行,隐秘的 bug 就这样留了下来。团队一有人员流动,这些代码就成了没人拆得了的炸弹。
Noema 怎么帮你Noema 留下的是人能直接读懂的文档,每一句话都写明了原因。它不依赖某个人的记忆,也不藏在某次会话里,人走了,团队和产品依然有据可查。
一位付费用户发来消息:“为什么导出的文件少了一列?”你盯着屏幕,分不清这是 bug、你的设计,还是 Agent 替你做的选择。
你真的在创业,还是在消费 coding agent 替你做出来的产品?
你的产品做了什么,你是从用户那里才知道的。AI 悄悄做了成百上千个选择,慢慢改写了你以为是自己创作的产品。
Noema 怎么帮你从用户的问题直接追到对应的意图和实现,把你的产品决定和 Agent 的选择分开,把真正重要的那些拿回自己手里。
常见问题 05
不是。编程语言描述实现,Noema 管实现如何回应你的意图。
不用。只写你在意的部分,其余交给 Agent,重要的选择它会让你看到。
可以。不用先把整个代码库整理进 Noema,只为最在意的部分写意图,其余实现照旧由 Agent 发挥。
不会。意图只有你能改,Agent 默认只读,建议也要你确认才生效。
普通的 Markdown 文件,后缀 .noema.md。任何编辑器都能打开,也能放进 Git。
不会。Agent 仍然负责写代码,Noema 是它之上的一层控制。
没有可用的 Coding Agent 时,应用会带你完成选择、安装、登录、验证。首次验证会下载运行环境,界面会告知大小。
错误报告和使用统计是两个独立的开关,在设置的隐私页。只收集固定类别的操作事件,不含你的文字、文件和路径。
下载 06
现在就可以下载 Beta 版,亲自走一遍这个闭环。