沒決定的,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 時,App 會帶你完成選擇、安裝、登入、驗證。首次驗證會下載執行環境,畫面上會告知大小。
錯誤回報和使用統計是兩個獨立的開關,在設定的隱私頁。只收集固定類別的操作事件,不含你的文字、檔案和路徑。
下載 06
現在就能下載 Beta 版,親自走一遍這個閉環。