技術解析 · Field Manual 2026-05-30 版本快照
github.com/nexu-io/html-anything · 5.4k ★
</>
Agentic HTML Editor / Skill Template Runtime

Local-first Agentic HTML Editor 技術解析。

HTML Anything 是一個 local-first 的 agentic HTML editor:瀏覽器提供輸入、模板選擇與 sandbox preview,Next.js API 在本機呼叫你已登入的 coding-agent CLI,透過 SSE 把代理輸出的 HTML 串流回 iframe,最後一鍵輸出 WeChat、X、Zhihu、HTML 或 PNG。

75 skills
Template Library
9 modes
Delivery Surfaces
8+ CLI
Agent Adapters
Apache
License 2.0
01
Repository Signal

以本機 coding-agent CLI 為後端的設計產線架構解析。

HTML Anything 接受 Markdown、CSV、JSON、SQL 或零散筆記作為輸入,輸出經設計的 HTML。它不持有 LLM key,不將生成工作移至雲端。它偵測本機已登入的 Claude Code、Codex、Cursor Agent、Gemini CLI 等工具,由既有訂閱與 session 承擔推理工作。

repo metadata 顯示專案以 HTML/Next 為主,採 Apache-2.0 授權,homepage 是 open-design.ai/html-anything/。README 把它定位為「agentic HTML editor」,強調 75 個 SKILL.md 技能模板、9 種交付 surface、local sandbox preview,以及 WeChat/X/Zhihu/PNG/HTML 匯出。

架構分三層:agent adapter 不知道模板語義,template registry 不知道 CLI 細節,export layer 不知道 prompt 怎麼組裝。這種切分讓「新增 agent」、「新增 skill」、「新增 export target」各自成為獨立 PR。

02
Runtime Loop

核心閉環是 detect、prompt、spawn、stream、preview、export。

HTML Anything Conversion Loop
Input Skill Agent CLI SSE Iframe Export

next/src/app/api/agents/route.ts 負責偵測本機可用 CLI;next/src/lib/agents/argv.ts 定義每個 agent 的 argv、stdin/stdout protocol 與 line parser;next/src/app/api/convert/route.ts 載入 skill、組 prompt、呼叫 invokeAgent,再把 agent stdout 轉成 text/event-stream

前端收到 SSE event 後把 HTML 追加到 iframe srcdoc,使用者可即時看到生成中的頁面。若輸出跑偏,可中斷並重試。若已有上一版 HTML,API 支援 editFromHtmleditFromContent,以最小差異修改降低多輪修改的創意漂移。

檔案作用
Agent detectionnext/src/lib/agents/detect.ts掃描 PATH 與常見本機 bin 目錄,找出可用 coding-agent CLI。
Adapternext/src/lib/agents/argv.ts每個 CLI 一個 thin adapter,處理 argv 與 JSON-line/delta parsing。
Convert APInext/src/app/api/convert/route.ts組 prompt、spawn agent、回傳 SSE stream。
Template loadernext/src/lib/templates/loader.ts載入 SKILL.md frontmatter、example 與設計 metadata。
Previewnext/src/components/preview-pane.tsx把輸出放入 sandboxed iframe,隔離 host page。
Exportnext/src/lib/export/*把同一份 HTML 轉成 WeChat、Zhihu、PNG、deck、Notion、Remotion 等目標。
03
Quickstart

workspace 很小, 但 agent 必須留在你的本機。

root package 只保留 workspace metadata 與 scripts/guard.ts;主要 Next app 在 next/,E2E 測試在 e2e/next/package.json 使用 Next 16.2.6、React 19.2.4、Tailwind v4、zustand、juice、modern-screenshot、xlsx、papaparse、marked、highlight.js 與 dompurify。

git clone https://github.com/nexu-io/html-anything cd html-anything pnpm install pnpm -F @html-anything/next dev # browser: http://localhost:3000
pnpm exec tsx scripts/guard.ts pnpm -F @html-anything/next typecheck pnpm -F @html-anything/next test pnpm -F @html-anything/next build pnpm -F @html-anything/e2e typecheck pnpm -F @html-anything/e2e test
雲端部署僅適用於 UI layer。負責 spawn claudecodexcursor-agent 的 API 側必須留在本機或受信任的 single-operator runtime。README 明確將安全邊界定義為 local-only。
04
Agent Adapters

沿用本機既有登入憑證,將 coding-agent CLI 接入 HTML renderer

Claude Code

claude -p

使用 stream-json、verbose、partial messages 與 bypassPermissions。parser 也能從 Write tool call 救回 HTML,避免只收到「已輸出到檔案」。

OpenAI Codex

codex exec

使用 --json--sandbox workspace-write 與網路開關設定。適合把 Codex CLI 變成本機 HTML 生成後端。

Cursor / Gemini

stream JSON

Cursor Agent 與 Gemini CLI 都走 stream-json 類協定,前端可即時 append delta 到 preview iframe。

Other CLIs

thin argv shapes

README 主打 8 個 CLI;程式碼也可看到 OpenClaw、Qoder、DeepSeek 等路徑。ACP JSON-RPC 類 agent 目前仍明確丟 unsupported error。

Parser State

防重複輸出

makeParser 保存跨行狀態,避免 agent 同時輸出 token delta 與 final assistant message 時把 HTML append 兩次。

BYOK

Zero app-level API key

HTML Anything 不收你的模型 API key;它沿用你在本機 CLI 內完成的 login、auth 或 subscription。

05
Template System

SKILL.md 資料夾即技能單元:frontmatter 驅動模板分類與設計約束。

每個技能是一個資料夾:SKILL.mdexample.html、可選 assets/references/。frontmatter 描述 mode、scenario、surface、preview、design_system 等欄位,template picker 依此分類。新增技能以新增可讀、可審、可測的資料夾為單位,無需實作 plugin 介面。

README 說明技能 prompt 內建硬性約束:CJK-first font stack、8px baseline grid、contrast ≥ 4.5、不能用 lorem ipsum、必須使用真實資料。這些約束以結構化規則形式寫入 prompt,降低 agent 生成通用 AI 樣板內容的機率。

Surface代表技能適用交付物
Prototypeprototype-websaas-landingdashboard網頁原型、SaaS landing、資料看板。
Deckdeck-swiss-internationaldeck-guizang-editorialKeynote 風格簡報、編輯感長頁、課程模組。
Socialcard-twittercard-xiaohongshuX/Twitter、微博、小紅書卡片。
Frame / VFXvideo-hyperframesframe-glitch-title1920x1080 影片 frame、Remotion/Hyperframes 前置腳本。
Officepm-speceng-runbookfinance-report產品規格、工程 runbook、財務摘要、HR onboarding。
06
Export Layer

同一份 HTML, 針對不同平台做最後一哩格式化。

WeChat / Zhihu

CSS inline

juice 將 CSS inline 化,配合平台需要的 markers;Zhihu 另處理 LaTeX image placeholder。

PNG

High-DPI screenshot

modern-screenshot 把 iframe render 成 2x PNG,再走 ClipboardItem 或下載。

Deck

Presentation handling

next/src/lib/deck.ts 與 export/deck 支援 slide navigation、deck extraction 與簡報場景。

Remotion

Hyperframes handoff

frame 與 vfx 技能輸出可交給 Hyperframes/Remotion 後續 render mp4。這是 roadmap 的高價值方向。

Export adapter 層負責將平台格式規格收斂成獨立模組。當內容團隊需要同時發佈 WeChat、X、Zhihu 與 PNG 社群圖,此層可獨立維護,與 prompt 組裝邏輯解耦。
07
Security Boundary

local-first 不等於無風險, 因為 API 可以 spawn CLI。

  • 不要把本機 agent-spawn API 直接暴露到公網。 /api/convert 會啟動本機 CLI,README 明確把它視為 single-operator local API。
  • Host allowlist 是必要防線。 next/src/middleware.ts 透過 Host header allowlist 防 DNS rebinding,預設只允許 loopback hostname。
  • sandboxed iframe 隔離 preview。 使用者生成 HTML 放在 iframe sandbox 裡,允許腳本與 same-origin,但隔離 host page 的 cookies/localStorage。
  • 技能模板要保留真資料約束。 一旦 skill prompt 允許 lorem ipsum 或捏造數據,生成速度會變快,但可信度會下降。
  • 多 agent 支援會擴大測試矩陣。 新增 adapter 時要同時補 argv parser、spawn 行為、錯誤處理與 E2E 覆蓋。
08
Codex Playbook

把 HTML Anything 當作 agent UI runtime 來研究。

01

先讀 adapter 測試

next/src/lib/agents/__tests__/argv.test.ts 是理解 CLI 協定差異的入口。

02

新增 skill 從鄰居複製

複製相近 SKILL.md,改 frontmatter、硬性設計規則與 example.html

03

用 export adapter 拆平台問題

新平台不要改 prompt,先新增 next/src/lib/export/<target>.ts

04

保留 prompt diff-edit

editFromHtml 是降低多輪修改漂移的關鍵,適合拿來做版本化內容工作流。

05

把安全設為產品要求

Host guard、sandbox preview、local-only deployment 不應被視為可選項;這是 spawn-agent 架構的基本代價。