Files
edgeever/README.zh-TW.md
edgeever-updater[bot] 67cf5297de chore: update EdgeEver from v2.18.0
EdgeEver-Upstream-Commit: 4235f3f2f1f68ad94802612362d1daea6dabb3cb
2026-11-03 09:33:32 +00:00

354 lines
32 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div align="center">
<h1>
<img src="assets/brand/edgeever-icon.svg" alt="EdgeEver Logo" width="48" align="absmiddle" /> EdgeEver
</h1>
<p>
<b>AI 原生知識庫與 Evernote / Obsidian 替代方案,支援多端瞬時同步與原生 MCP。Cloudflare 免費代管或 Docker 自行託管</b>
</p>
<p>
<a href="https://github.com/tianma-if/edgeever/stargazers"><img src="https://img.shields.io/github/stars/tianma-if/edgeever?style=social" alt="GitHub Stars" /></a>
<a href="https://github.com/tianma-if/edgeever/network/members"><img src="https://img.shields.io/github/forks/tianma-if/edgeever?style=social" alt="GitHub Forks" /></a>
<a href="https://github.com/tianma-if/edgeever"><img src="https://img.shields.io/badge/Git_Clones-40K%2B%20%2F%2014d-brightgreen?style=social&logo=git" alt="Git 克隆量" /></a>
<a href="https://github.com/tianma-if/edgeever/pkgs/container/edgeever"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fghcr-badge.elias.eu.org%2Fapi%2Ftianma-if%2Fedgeever%2Fedgeever&query=downloadCount&style=social&logo=docker&label=Docker%20Pulls" alt="Docker Pulls" /></a>
<a href="https://www.producthunt.com/products/edgeever?utm_source=other&utm_medium=social"><img src="https://img.shields.io/badge/Product%20Hunt-ea532a?style=social&logo=product-hunt" alt="Product Hunt" /></a>
<a href="https://hellogithub.com/repository/tianma-if/edgeever" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=150fee4403f6433880bda91e9576ac06&claim_uid=TWNAjisURpnhL1l&theme=small" alt="Featured|HelloGitHub" /></a>
<a href="#贊助與支持"><img src="https://img.shields.io/badge/Sponsor-支持專案-ea4aaa?logo=github-sponsors" alt="贊助與支持" /></a>
</p>
<p>
<a href="README.zh-CN.md">简体中文</a> | <b>繁體中文</b> | <a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.pl-PL.md">Polski</a>
</p>
<p>
<a href="#wechat-group"><img src="assets/readme/community/wechat.svg" alt="WeChat" width="16" height="16" align="absmiddle" /> 微信交流群</a> &nbsp;|&nbsp;
<a href="https://demo.edgeever.org">🌐 線上展示</a> &nbsp;|&nbsp;
<a href="#全平台用戶端與瀏覽器外掛">📱 用戶端與外掛下載</a> &nbsp;|&nbsp;
<a href="#features">核心功能與場景矩陣</a>
</p>
<p align="center">
<img src="assets/readme/edgeever-hero-v6.png" alt="EdgeEver 產品工作區預覽" width="800" />
</p>
</div>
EdgeEver 是一款現代化的開源筆記與個人知識庫工作區。它延續經典高效的三欄工作區體驗(目錄樹 · 筆記列表 · 編輯寫作),同時具備完全開放的資料架構與原生 AI Agent 聯動能力,讓個人知識沉澱更輕量、更自由。
> 💡 **終身免伺服器,100% 免費**
> EdgeEver 可以免費執行在 Cloudflare 配額內,無需購買或維護伺服器;希望使用 VPS、NAS 或家用伺服器的使用者,也可以透過 Docker 部署同一套應用程式。
> ⭐ 如果 EdgeEver 對你有幫助,歡迎點個 Star。你的支持會幫助更多人發現這個專案。
## 為什麼做 EdgeEver
很多**筆記與個人知識庫**的使用者,核心需求只是一個**可靠、開放、回應迅速**的個人知識庫。然而,當下的主流方案都各有痛點:
* **印象筆記 / Evernote**:擁有最無感、最絲滑的多端雲端同步體驗。然而隨著它演進為全功能商業套件,廣告與附加功能漸多,系統開銷也隨之走高;加之免費版配額收緊、高級 AI 訂閱昂貴,且難以靈活接入現代自託管與私有 AI 工作流。
* **Obsidian**:Markdown 開放,核心閉源;官方同步收費,第三方同步繁瑣;純本地檔案依賴遍歷掃描,當筆記累積到數千上萬條或載入複雜外掛後,冷啟動與全庫檢索明顯卡頓遲緩;圖片與附件與文字混存,儲存庫體積極易膨脹導致行動端同步緩慢,且刪除筆記後殘留附件難清理;對於「隨時隨地隨手記」的輕量場景來說偏重。
* **Joplin**:老牌開源三欄筆記,但介面觀感與編輯互動彷彿還停留在十幾年前,缺乏現代軟體的精緻與流暢感;官方高速同步(Joplin Cloud)需付費訂閱,免費同步若走 WebDAV 或雲端硬碟,受限於逐檔輪詢,筆記與附件增多後(尤其在行動端)同步緩慢,而自建 Joplin Server 又必須自備伺服器維護,缺少零成本 Serverless 方案;此外它沒有可在瀏覽器即開即用的完整 Web 工作區,也缺乏原生 AI Agent(MCP/ACP)與多模態知識型態。
* **Memos / Flomo 等輕量筆記**:雖然簡單好用,但時間軸卡片版面與習慣了經典「三欄工作流程」的使用者有著天然的互動習慣差異。
* **思源筆記等區塊級知識庫**:功能深厚且支援開源自託管,但全盤的「區塊級(Block)」架構使得日常隨手記錄與連續排版書寫的心智負擔偏重;且缺少零伺服器成本的 Serverless 部署型態,多端同步主要依賴官方付費訂閱,或需額外付費解鎖 S3/WebDAV 同步特性並自備儲存。
**EdgeEver 恰好填補了這一空白**:全端開源,提供真正**零感知、低延遲的多端瞬時雲端同步**,且全部服務均可免費自行託管;同時保留經典三欄版面與流暢排版,萬條筆記常駐依然輕盈絲滑,原生支援接入 AI Agent,部署維護零門檻、零費用。
## 線上展示
- Demo 網址:[https://demo.edgeever.org](https://demo.edgeever.org)
公開展示環境會在每天凌晨 3:00(北京時間)自動重設並還原範例筆記,請不要儲存私密內容。
## 全平台用戶端與瀏覽器外掛
### 用戶端下載
<p>
<a href="https://github.com/tianma-if/edgeever/releases/latest"><img src="assets/readme/platforms/macos.svg" alt="下載 macOS 用戶端" width="40" height="40" /></a>&nbsp;&nbsp;
<a href="https://github.com/tianma-if/edgeever/releases/latest"><img src="assets/readme/platforms/windows.svg" alt="下載 Windows 用戶端" width="40" height="40" /></a>&nbsp;&nbsp;
<a href="https://github.com/tianma-if/edgeever/releases/latest"><img src="assets/readme/platforms/tux.svg" alt="下載 Linux x86_64 AppImage 預覽版" width="40" height="40" /></a>&nbsp;&nbsp;
<a href="https://play.google.com/store/apps/details?id=org.edgeever.mobile&hl=zh-TW"><img src="assets/readme/platforms/google-play.svg" alt="從 Google Play 下載 Android 用戶端" width="40" height="40" /></a>&nbsp;&nbsp;
<a href="https://apps.apple.com/tw/app/edgeever/id6792625631"><img src="assets/readme/platforms/app-store.svg" alt="從 App Store 下載 iOS 用戶端" width="40" height="40" /></a>
</p>
> iOS 用戶端需要使用非中國大陸區 Apple ID 下載。
### 瀏覽器網頁擷取外掛
<p>
<a href="https://chromewebstore.google.com/detail/edgeever-web-clipper/gjadpfmanienmlofajibkfkkpfdkclgo"><img src="https://raw.githubusercontent.com/alrra/browser-logos/58881b84c4d73adc03c06fa2c275a7abee02d935/src/chrome/chrome.svg" alt="為 Google Chrome 安裝 EdgeEver 網頁擷取外掛" width="36" height="36" /></a>&nbsp;&nbsp;
<a href="https://chromewebstore.google.com/detail/edgeever-web-clipper/gjadpfmanienmlofajibkfkkpfdkclgo"><img src="https://raw.githubusercontent.com/alrra/browser-logos/58881b84c4d73adc03c06fa2c275a7abee02d935/src/edge/edge.svg" alt="為 Microsoft Edge 安裝 EdgeEver 網頁擷取外掛" width="36" height="36" /></a>&nbsp;&nbsp;
<a href="https://addons.mozilla.org/zh-TW/firefox/addon/edgeever-web-clipper/"><img src="https://raw.githubusercontent.com/alrra/browser-logos/58881b84c4d73adc03c06fa2c275a7abee02d935/src/firefox/firefox.svg" alt="為 Firefox 安裝 EdgeEver 網頁擷取外掛" width="36" height="36" /></a>
</p>
- 支援一鍵擷取網頁內文為純淨 Markdown,或選取文字與圖片精準儲存,直傳自託管執行個體。
- 深度適配 20+ 主流平台結構化擷取:涵蓋社群(X、小紅書、微信公眾號、即刻、豆瓣、Threads、Bluesky)、社群與資訊(知乎、Reddit、GitHub、V2EX、Hacker News、Medium、Substack)及影音播客(Bilibili、YouTube、小宇宙)等。
<a id="features"></a>
## 核心功能與場景矩陣
一站式連結「靈感擷取 · 深度創作 · 知識沉澱」的全能工作區(👉 **[查看 19 個實機案例展示與最佳實踐](docs/best-practices.zh-CN.md)**):
| 模組 | 基礎功能 | 進階特性 |
| :--- | :--- | :--- |
| **寫作與編輯** | • 經典三欄工作區,面板寬度自由調節<br>• 富文字所見即所得與 Markdown 雙視圖切換<br>• 程式碼語法突顯、數學公式、待辦清單與專注模式<br>• 秒級自動儲存、多端瞬時同步與版本歷程回溯 | • **原生海報筆記**:畫布級圖文排版與視覺卡片,按兩下即改<br>• **微信公眾號一鍵排版**:一鍵轉內嵌樣式富文字直接貼上後台<br>• **高質感長圖分享**:質感主題海報與 Monogram 頭像,支援 MD/HTML/PDF 匯出 |
| **組織與檢索** | • 無限層級筆記本與目錄樹導覽<br>• 標籤體系(Tags)與筆記拖放排序、批次合併/移動<br>• 毫秒級即時全文搜尋與歷史記錄篩選 | • **獨立知識庫網站發布**:一鍵將整個筆記本公開發布為帶目錄樹導覽的獨立靜態網站(支援密碼保護)<br>• 多帳號與工作區多空間資料實體隔離 |
| **擷取與附件** | • 桌面與行動端全格式附件上傳(PDF、Office、影音等)<br>• 瀏覽器選取網頁文字與圖片精準擷取<br>• 手機系統分享一鍵轉存全網圖片與微信文章 | • **全渠道結構化擷取**:深度適配小紅書、X (Twitter)、知乎、Reddit、GitHub 等 20+ 平台<br>• **微信聊天記錄一鍵歸檔**:整段對話轉筆記,保留時間軸、引用、表情與附件<br>• **端側靜默壓縮**:圖片上傳前壓縮 50%–90%;分塊串流上傳安全支援最大 1 GiB 附件 |
| **資料與視覺化** | • 原生表格編輯與 Markdown 表格繪製<br>• 原生 Mermaid 流程圖、循序圖與架構圖繪製 | • **AI 多維表格**:自然語言一句話產生業務資料庫(含標籤、日期等欄位)<br>• **線上公開收集表單**:多維表格一鍵產生免登入外鏈表單,填報資料即時入庫<br>• **AI 智慧資訊圖與導圖**:一鍵產生時間線、對比圖、象限矩陣及心智圖 |
| **AI 與生態** | • 側邊伴隨式 AI 助手,選取範圍/全文一鍵摘要、翻譯與修飾潤色<br>• BYOK(自備金鑰):相容 OpenAI、Anthropic、Gemini 等主流協定 | • **原生 Agent 協定互聯**:內建 MCP(外部 Agent 讀寫筆記)與 ACP(桌面端直接喚起 Codex、Claude Code、CodeBuddy 等本機 Agent 協同創作)<br>• **AI RSS 智慧訂閱日報**:定時聚合資訊來源,AI 自動過濾雜訊並產生精煉日報<br>• 開放外掛開發文件自由擴充 |
| **多端同步與底座** | • 電腦、手機全端秒級無感同步,無裝置數量限制<br>• 官方涵蓋 Web / macOS / Windows / Linux / iOS / Android 全平台<br>• 離線優先與同步佇列:斷網流暢寫作,連網自動復原並增量同步<br>• 標準 SQLite 儲存,無損 ZIP 封存與 Markdown 匯出匯入 | • **終身零伺服器成本**:100% 執行於 Cloudflare 免費配額(容量約 15 萬條短筆記與 5 萬張圖片)<br>• **彈性 Docker 自託管**:私有 VPS/NAS 一鍵部署,輕鬆承載百萬級筆記與瞬時同步<br>• 伺服端防暴力破解限流保護與安全資料隔離 |
## 部署
Cloudflare 是建議的零伺服器部署方式;希望使用 VPS、NAS 或家用伺服器的使用者也可以選擇 Docker。
Cloudflare 線上部署可以選擇以下兩種方式之一:
### 方案一:交給 AI Agent 部署(建議)
將下方提示詞直接複製傳送給 AI Agent(如 Codex、Claude、Cursor、WorkBuddy、Antigravity、OpenClaw、Hermes Agent 等)。執行過程中,如需存取 GitHub 或 Cloudflare,請確認權限範圍並依提示完成授權。
```text
請全程透過 GitHub 和 Cloudflare 線上部署 EdgeEver:
1. Fork https://github.com/tianma-if/edgeever。
2. 在 Cloudflare 中建立 D1 `edgeever` 與 R2 `edgeever-resources`。
3. 在 Workers & Pages 中選擇「Start with Hello World!」,建立名為 `edgeever` 的 Worker。
4. 在該 Worker 的 Settings → Variables and Secrets 中新增執行時 Secret
`EDGE_EVER_AUTH_PASSWORD`,值為使用者指定的登入密碼(建議至少 32 個字元),並點選 Deploy。
管理員使用者名稱預設為 `admin`。
5. 確認 Secret 已部署後,在該 Worker 的 Settings → Builds → Connect 中連接 Fork 的
`main` 分支。
6. 在 Settings → Builds → API token 中選擇或建立用於部署的
Cloudflare API Token,並確認它具備目標帳戶的 D1 讀取及編輯權限。
7. 在 Fork 的 GitHub 儲存庫中進入 Actions → Update deployed EdgeEver,依提示啟用工作流程,
選擇 `main` 分支並點選 Run workflow。在 Cloudflare 確認對應建置成功、部署完成後,驗證 `/api/health` 和 `/api/openapi.json`,
再用管理員使用者名稱和密碼驗證登入。
後續由該工作流程自動同步正式版本,持續獲得功能更新與問題修復。
```
> 詳細約定與要求請查看:[AI Agent 線上部署約定](docs/agent-deploy-cloudflare.zh-CN.md)。
### 方案二:手動線上部署
<details>
<summary>📖 展開查看:網頁端 7 步手動部署流程</summary>
請嚴格依照以下順序,在網頁端完成 7 步設定:
1. **Fork 儲存庫**:在 GitHub 點選右上角 **Fork**,將專案 Fork 到您的個人帳戶下。
2. **建立 Cloudflare 資源**:建立 D1 `edgeever` 與 R2 `edgeever-resources`。
3. **建立 Worker**:在 Cloudflare Workers & Pages 中選擇 Create application → Start with Hello World!,命名為 `edgeever` 並部署。此時是預留服務,第 7 步才部署 EdgeEver。
4. **設定管理員密碼**:在該 Worker 的 Settings → Variables and Secrets 中,選擇 Secret 類型,新增 `EDGE_EVER_AUTH_PASSWORD` 並點選 Deploy。值為您指定的登入密碼,建議至少 32 個字元。完成後再連接 Fork。
5. **連接 Fork**:在既有 Worker 的 Settings → Builds → Connect 中選擇 Fork 和正式環境分支 `main`。
6. **設定部署權限**:在 Settings → Builds → API token 中選擇或建立用於部署的 Cloudflare API Token,並確認它具備目標帳戶的 D1 讀取及編輯權限。
7. **建置並驗證**:在 Fork 的 GitHub 儲存庫中進入 Actions → Update deployed EdgeEver,依提示啟用工作流程, 選擇 `main` 分支並點選 Run workflow。在 Cloudflare 確認對應建置成功、部署完成後,確認 `/api/health` 回傳 `200`,並驗證登入。後續由該工作流程自動同步正式版本,持續獲得功能更新與問題修復。
> 📖 包含具體參數與建置指令的詳細步驟,請查看 [線上部署完整文件](docs/deploy-cloudflare-button.zh-CN.md)。
</details>
<details>
<summary>📌 查看 Cloudflare 部署須知(自訂網域綁定與 R2 免費額度)</summary>
> **網域與存取**:實例部署完成後,可以直接使用 Cloudflare 預設分配的 `*.workers.dev` 網域存取,也可以在 Worker 設定中的 **Settings → Domains & Routes** 綁定自己的自訂網域。
>
> **Cloudflare R2 開通**:雖然 Cloudflare R2 儲存提供了足夠寬裕、在筆記場景中完全不會超量的[免費儲存額度](https://developers.cloudflare.com/r2/pricing/#free-tier),但需先開通 R2 subscription 並綁定付款方式。Cloudflare [官方支援](https://developers.cloudflare.com/billing/get-started/update-billing-info/#supported-payment-methods) 銀聯(UnionPay)、Visa、Mastercard 等金融卡與信用卡,以及 PayPal、Apple Pay、Google Pay 等付款方式。
</details>
### 方案三:在 VPS 或 NAS 上使用 Docker
Docker 與 Cloudflare 共用同一套前端、API 路由、業務服務、鑑權、MCP 實作和 migration。容器使用 SQLite,並支援本機檔案或 S3 相容附件儲存,提供 `amd64` 與 `arm64` 映像。詳見[使用 Docker 部署 EdgeEver](docs/deploy-docker.zh-CN.md)和[自行託管與 Docker 架構](docs/self-hosting-architecture.zh-CN.md)。
使用 GitHub 託管的安裝指令碼和官方 GHCR 映像:
```sh
curl -fsSL https://edgeever.org/install.sh | bash
```
此指令會自動拉取最新映像、產生管理員密碼,並使用 Docker Compose 啟動 EdgeEver。手動部署與設定說明見 [Docker 部署文件](docs/deploy-docker.zh-CN.md)。
安裝後預設每日自動更新。如需手動更新,請在部署伺服器上執行 `~/edgeever/update.sh`。
> 💡 **網路提示**:官方映像檔託管於 GitHub(GHCR)。若在部分網路環境下遇到拉取緩慢或逾時,請在部署前自行設定可用的網路代理或可信的映像檔加速服務。
---
## 進階設定與管理
### 資料匯入匯出與備份
無論是日常資料備份、跨實例無縫遷移,還是從既有筆記平台遷入,EdgeEver 均提供完整可靠的資料流轉方案:
- **EdgeEver 原生備份與還原**:在應用程式內進入 **個人中心** -> **匯入與匯出**,可隨時匯出或匯入 EdgeEver ZIP 封存檔。解壓縮後的 `notes/` 目錄保留清晰的純文字 Markdown 檔案與附件,可直接用於本機封存或獨立閱讀;內部結構化中繼資料則支援在不同 EdgeEver 實例間無損完整還原。匯入時保留目標實例的既有資料,同 ID 內容自動覆蓋更新。
- **第三方筆記平滑遷入**:
- **Evernote(印象筆記)遷入**:請參考 [docs/evernote-migration-guide.md](docs/evernote-migration-guide.md)
- **flomo 筆記遷入**:請参考 [docs/flomo-migration-guide.md](docs/flomo-migration-guide.md)
- **Memos 筆記遷入**:請參考 [docs/memos-migration-guide.md](docs/memos-migration-guide.md)
- **Notion 筆記遷入**:請參考 [docs/notion-migration-guide.md](docs/notion-migration-guide.md)
### AI 與 MCP 協定互聯
在 **個人中心** -> **API / MCP** 中建立 API Token 並一鍵複製 Remote MCP 設定,即可讓 Claude Code、Cursor、Antigravity、OpenClaw 等 AI Agent 在帳號授權範圍內安全管理你的知識庫。系統支援文字筆記、圖表筆記(心智圖、流程圖與架構圖)、多維表格筆記與原生海報筆記的完整增刪改查,Agent 還可管理筆記本目錄、標籤、附件、歷史版本、筆記範本與 AI 指令。
> 💡 **情境啟發:**
> 讓 AI 真正成為你的知識管家與創作外腦——不僅能將方案秒級產生為可互動的心智圖、流程圖、架構圖與多維表格,還能為 AI Agent 提供私有脈絡。憑藉 EdgeEver 強大的富文字編輯與精美排版能力,AI 協同沉澱的不再是冰冷文字,而是結構工整、排版優雅、隨時可一鍵分發的高品質知識資產。
### 多帳號登入與儲存管理
部署完成後,單一實例支援多帳號登入。
實例管理員可以在 **個人中心** -> **帳號管理** 中建立、停用成員帳號或重設密碼。每個成員擁有完全隔離的個人空間,包括筆記本、筆記、附件、回收筒、匯入匯出和 MCP Token 等。系統同時提供直觀的儲存用量面板,可即時掌握實例整體與各帳號的附件儲存占用明細。
### 儲存擴充與第三方圖床
- **OSS 物件儲存**:實例 Owner 可在**設定 → 進階設定 → OSS 物件儲存**中設定相容 S3 API 的物件儲存。切換儲存不會遷移或影響既有附件。
- **桌面端 PicGo 圖床**:桌面端可以把新插入的圖片交給本機或你信任的遠端 PicGo、PicList 服務(例如 NAS),再由它上傳到 GitHub、SM.MS、又拍雲、七牛雲或自建圖床。位址只需以 `/upload` 結尾,經過反向代理的 PicList 也能使用。
- **桌面端 CloudFlare ImgBed 圖床**:桌面端也可以用 API Token 把新插入的圖片直接上傳到你自建的 [CloudFlare ImgBed](https://github.com/MarSeventh/CloudFlare-ImgBed)。上傳目錄支援 `{Y}/{m}/{d}`、`{memoId}` 等 PicList 風格的佔位符。
### 外掛與個人化主題
Web 與桌面版支援功能外掛與個人化主題,可從官方市集、GitHub 或 Manifest 網址一鍵安裝,並隨工作區跨端同步。開發者可使用 `@edgeever/plugin-api` 擴充功能,詳情參閱[外掛開發文件](docs/plugin-development.zh-CN.md)與[官方外掛市集上架政策](docs/plugin-marketplace-policy.zh-CN.md)。
---
## 開發者指南與貢獻
### 快速開始
```sh
bun install
bun run dev
```
本機開發預設自動登入,首次帳號為 `owner` / `edgeever-local-dev`;測試登入頁可主動登出。
### 架構設計與技術棧
#### 技術棧選型
- Bun workspace monorepo,包含 Web、API、官網與共享型別套件。
- 前端:Vite、React、React Router、TanStack Query,UI 基於 Tailwind CSS、shadcn/ui、Radix UI。
- 编辑器:TipTap / ProseMirror,支援 Markdown;PWA 使用 vite-plugin-pwa、Workbox、Dexie。
- Android App:`apps/mobile` 中的 Expo + React Native,採用 SQLite 本機儲存與增量同步。
- iOS App:`apps/ios` 中的原生 SwiftUI(iOS 17+),內建 TipTap EditorBundle、GRDB 本機鏡像/outbox,介面與 Android 殼層對齊。
- 原生桌面版:Electron + Rust sidecar,兼顧跨平台一致體驗與高效能本機資料服務;基於 SQLite 支援離線編輯、連網後增量同步與本機備份。
- 網頁擷取:Manifest V3、Mozilla Readability、Turndown,支援 Chrome、Microsoft Edge 與 Firefox。
- 後端:一套基於 Hono/Zod 的業務應用,提供 REST API 與 Remote MCP;Cloudflare 使用 Workers/D1/R2,Docker 使用 Bun/SQLite/本機檔案或 S3。
- 官網:Astro 靜態網站,位於 `apps/site`,可獨立建置並部署到 Cloudflare Pages。
#### 目錄結構
<details>
<summary>📁 展開查看:Monorepo 專案目錄結構</summary>
```text
apps/web Vite + React 前端、PWA、離線草稿與同步佇列
apps/extension Chrome/Edge/Firefox Manifest V3 網頁擷取擴充功能
apps/api Cloudflare Worker + Hono API、MCP endpoint
apps/mobile Expo + React Native Android App
apps/ios 原生 SwiftUI iOS App(TipTap EditorBundle、GRDB)
apps/desktop Electron 桌面版殼層、preload bridge 與原生打包設定
apps/site Astro 官方網站,可獨立部署
packages/client Web 與行動端共享的 API Client
packages/shared 共享型別、Zod schema、TipTap / Markdown 內容轉換
crates/desktop-sidecar
Rust sidecar,負責本機 SQLite、離線資料、備份與資源服務
scripts Wrangler 封裝、密碼雜湊、CLI、MCP stdio bridge、Evernote ENEX 匯入
migrations D1/SQLite 共用、只增不改的資料庫 migration
docs 架構、遷移與部署文件
.github/workflows Web、行動端、iOS、桌面版打包、部署與 Release 的 CI
wrangler.toml Cloudflare Workers、Assets、D1、R2 設定
```
</details>
#### 資料儲存模型
EdgeEver 在資料庫中同時保存三種內容形態,以兼顧編輯效能、開放性與全庫檢索效率:
```text
content_json TipTap/ProseMirror 文件,編輯器權威格式
content_markdown API、Agent、匯入匯出與外部生態取用格式
content_text 全文搜尋、摘要與快速索引使用
```
### 核心機制與設計決策
- **端側靜默壓縮**:為避免在 Serverless(如 Cloudflare Worker)上執行圖片轉碼消耗寶貴的運算額度,圖片壓縮全部放在 Web 用戶端上傳前完成(PNG/JPEG/WebP/AVIF 轉 WebP,最大邊限制 2560px;不減小體積則保留原圖)。伺服端 REST API 與 MCP 介面直接入庫用戶端傳輸的原始內容。
- **離線優先與同步時序**:Web、PWA 與桌面版會在使用者停止編輯 30 秒後自動上傳增量,並在前景頁面可見時每 5 分鐘拉取一次雲端變更;視窗重新聚焦或手動重新整理時立即同步。開發者可在 [`apps/web/src/lib/workspace-refresh.ts`](apps/web/src/lib/workspace-refresh.ts) 中調整相關時序常數(`DEFERRED_MEMO_SYNC_DELAY_MS` 與 `BACKGROUND_WORKSPACE_REFRESH_INTERVAL_MS`)。
### 參與程式碼貢獻
我們非常歡迎社群貢獻!貢獻前請留意以下約定:
- 提交程式碼前請仔細閱讀 [貢獻程式碼須知](CONTRIBUTING.zh-CN.md)。
- **分支與部署隔離**:如果您的 GitHub Fork 同時用於線上部署 EdgeEver,請將 `main` 分支嚴格保留為唯讀部署分支;請從官方 `upstream/main` 建立新分支進行功能開發並提交 Pull Request,嚴禁在部署用的 `main` 分支上直接修改程式碼或執行 Sync fork。
---
## 社群與回饋
- **問題回饋與功能建議**:遇到 Bug、功能建議或部署疑問,請優先提交 [GitHub Issues](https://github.com/tianma-if/edgeever/issues),方便社群沉澱並檢索解決方案。
<hr>
<h3 id="wechat-group">微信交流群</h3>
歡迎加入 EdgeEver AI 交流群,這裡聚集了大量 Vibe Coding 與 AI 玩家。一起交流前沿 AI 生產力與個人知識庫的最佳實踐。
> 掃描下方 QR Code 或加入微信 `m1245207870`(備註「EdgeEver 進群」),群主將手動邀請入群。
<p align="center">
<img src="assets/wechat-group-qr.jpg" alt="微信聯絡人 QR Code" width="260" />
</p>
## 友情連結
- [LINUX DO](https://linux.do/) —— 技術交流與開源專案分享社群。
## 贊助與支持
EdgeEver 是免費開源專案。保持跨平台用戶端(macOS、Windows、Linux、iOS、Android)的持續演進、真機測試、憑證簽章以及多執行時期生態建設,都需要長期的精力與資源投入。
- [支持 EdgeEver](docs/sponsor.zh-CN.md) —— 透過微信支付或支付寶自願贊助
- [贊助商與合作夥伴](docs/partners.zh-CN.md) —— 支持基礎設施、開發工具、服務或社群合作
## 致謝
- EdgeEver 的筆記產品設計也參考了 [Evernote(印象筆記)](https://evernote.com/)、[Notion](https://www.notion.com/) 等成熟筆記工具的公開產品體驗。相關功能由 EdgeEver 獨立設計與實作。
- 心智圖與視覺化圖表筆記的產品設計參考了 [XMind](https://xmind.com/) 和 [ProcessOn](https://www.processon.com/) 等圖表工具的公開產品體驗。相關功能由 EdgeEver 獨立設計與實作。
- EdgeEver 的海報設計工作台借鑑了向阳乔木(joeseesun)的 [Qiaomu Design](https://github.com/joeseesun/qiaomu-cover-design),並基於其 MIT 開源授權改編了範本與字型排版引擎。
- EdgeEver 圖片分享卡片的主題視覺與排版參考了 [流光卡片](https://fireflycard.shushiai.com/),感謝其設計帶來的啟發。
- EdgeEver 的微信公眾號一鍵排版與精選文章視覺樣式參考了 [gzh-design-skill](https://github.com/isjiamu/gzh-design-skill),感謝其在公眾號排版與視覺設計上的啟發。
## 商標與品牌使用
EdgeEver 名稱、Logo 及其他品牌識別用於識別官方專案。Fork 或修改版可以說明其「基於 EdgeEver」,但不得暗示官方身分或誤導使用者。開源授權不授予商標權利;其他使用須事先取得專案維護者的書面許可。
## 免責聲明
EdgeEver 是一款完全獨立的開源筆記軟體,由個人和社群自主開發維護。本專案與 Evernote®(印象筆記)及其關聯公司不存在任何商業合作、授權、贊助或隸屬關係。
EdgeEver 是自行託管軟體。除官方展示實例外,專案維護者不託管、控制或審核使用者內容。實例中儲存或展示的內容由使用者或實例營運者負責,不代表專案維護者的立場。
## 貢獻者
<!-- readme-contributors:start -->
<p align="left">
<a href="https://github.com/tianma-if"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/5895871?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@tianma-if" /></a>
<a href="https://github.com/dkoryto"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/2572180?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@dkoryto" /></a>
<a href="https://github.com/sivdead"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/27731043?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@sivdead" /></a>
<a href="https://github.com/thorufur"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/55167?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@thorufur" /></a>
<a href="https://github.com/yulei666"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/7358439?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@yulei666" /></a>
<a href="https://github.com/arsaboo"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/18319734?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@arsaboo" /></a>
<a href="https://github.com/alyyasser"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/16476111?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@alyyasser" /></a>
<a href="https://github.com/MadlyFX"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/4896705?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@MadlyFX" /></a>
<a href="https://github.com/claude"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/81847?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@claude" /></a>
<a href="https://github.com/Crowszzz"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/75199133?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@Crowszzz" /></a>
<a href="https://github.com/Shunamxiao"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/92215296?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@Shunamxiao" /></a>
<a href="https://github.com/nzhdotme"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/9588882?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@nzhdotme" /></a>
<a href="https://github.com/mookim-eth"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/97934198?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@mookim-eth" /></a>
<a href="https://github.com/imgdown"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/348032096?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@imgdown" /></a>
<a href="https://github.com/X77seven"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/171017641?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@X77seven" /></a>
<a href="https://github.com/Sergmay911"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/304439776?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@Sergmay911" /></a>
<a href="https://github.com/0xfelixli"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/81979996?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@0xfelixli" /></a>
<a href="https://github.com/Z-DDV"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/122068983?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@Z-DDV" /></a>
<a href="https://github.com/CottonChou"><img src="https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/17818375?v=4&h=96&w=96&fit=cover&mask=circle&maxage=7d" width="48" height="48" alt="@CottonChou" /></a>
</p>
<!-- readme-contributors:end -->