BASHCAT
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 2025 年 LLM Agent 開發框架完整指南:AutoGen、CrewAI、LangGraph 到底該選哪個? ![llm-agent-framework-cover](https://hackmd.io/_uploads/SyZiTkx4Wg.jpg) 三個月前,我在 Reddit 上看到一個帖子:「What's going on with AutoGen and AG2?」 帖子底下吵成一團。有人說 AutoGen 被微軟放棄了,有人說要趕快遷移到 AG2,還有人困惑地問:「我上週才開始學 AutoGen,現在該怎麼辦?」 說實話,那時候我也一頭霧水。 我正在評估要用哪個框架來建立公司的多代理人客服系統,結果發現這個領域在 2024 年底發生了翻天覆地的變化。AutoGen 分裂了、OpenAI 把 Swarm 升級成正式 SDK、Anthropic 推出了 MCP 協議還捐給了 Linux Foundation... 如果你也正在選擇 LLM Agent 框架,這篇文章應該能幫你省下不少冤枉路。 --- ## 先搞清楚:什麼是 LLM Agent? 在深入比較框架之前,我們得先對齊一下概念。 你可以把 LLM Agent 想像成一個超級聰明的助理。這個助理不只會回答問題,還能主動規劃任務、使用各種工具、甚至自己判斷下一步該做什麼。 傳統的 LLM 應用是這樣的:你問一個問題,它給你一個答案。結束。 但 Agent 不一樣。你給它一個目標,比如「幫我研究這家公司然後寫一份報告」,它會: 1. 先規劃需要哪些步驟 2. 上網搜尋公司資訊 3. 讀取財報 PDF 4. 分析數據 5. 撰寫報告 6. 如果發現資訊不足,自己決定要不要再查更多 這種「自主決策 + 工具使用 + 多步驟執行」的能力,就是 Agent 的核心。 那什麼是「多代理人系統」呢? 想像你要做一個複雜的專案,不可能一個人包辦所有事。你會組建團隊:有人負責研究、有人負責寫程式、有人負責測試、有人負責專案管理。 多代理人系統就是這個概念。不同的 Agent 扮演不同角色,互相協作完成任務。一個 Agent 可能專門負責寫程式,另一個專門負責 code review,第三個負責執行測試... 聽起來很美好對吧?問題是,怎麼讓這些 Agent 順暢協作、不會互相打架、還能可靠地完成任務? 這就是為什麼我們需要框架。 --- ## 2024 年底發生了什麼事? 如果你在 2024 年中開始學 AutoGen,恭喜你,你選了當時最熱門的框架。 微軟研究院開發的 AutoGen 是多代理人領域的先驅,GitHub 上有超過 4 萬顆星。文件完整、社群活躍、企業級支援。 然後,2024 年 11 月,事情變得複雜了。 ### AutoGen 分裂事件 簡單來說,AutoGen 的核心貢獻者和微軟產生了分歧。一群人離開微軟,創建了新的組織 AG2AI,fork 了 AutoGen 並改名為 AG2。 現在的狀況是這樣的: **AG2(社群版)** - 由原始核心開發者維護 - 繼承了 `pyautogen` 和 `autogen` 套件名稱 - Apache 2.0 開源授權 - 保持向後相容,你的舊程式碼可以直接跑 - 持續在 0.3.x 版本上開發新功能 **Microsoft AutoGen 0.4(微軟版)** - 微軟進行的完全重寫 - 新的 API 設計,不向後相容 - 可能會與 Semantic Kernel 整合 - 更注重企業級功能 怎麼說呢,這有點像 Node.js 和 io.js 當年的分裂,或是 MySQL 和 MariaDB。 對開發者來說,這意味著你需要做選擇: - 如果你重視穩定性和向後相容 → 跟著 AG2 - 如果你已經深度使用微軟生態系統 → 考慮等 AutoGen 0.4 穩定 - 如果你還沒開始 → 可能值得考慮其他框架 這件事也讓我意識到,選擇開源框架時,專案的治理結構和社群健康度有多重要。 --- ## 六大主流框架深度比較 好,現在來看看 2025 年你有哪些選擇。 ### LangGraph:給需要精確控制的人 如果你用過 LangChain,對 LangGraph 應該不陌生。它是 LangChain 團隊開發的圖結構編排框架。 核心概念很直接:把工作流程想像成一張圖,節點是操作,邊是流程。你可以精確控制狀態、設定條件分支、處理重試邏輯。 ```python from langgraph.graph import StateGraph # 定義狀態和節點 workflow = StateGraph(State) workflow.add_node("research", research_agent) workflow.add_node("write", writing_agent) workflow.add_edge("research", "write") ``` **優點**: - 精確的狀態控制 - 內建斷點和人工介入機制 - 平行執行支援 - 可視化工作流程 **缺點**: - 學習曲線陡峭,你需要習慣「用圖思考」 - 對簡單任務來說可能過度設計 **適合場景**:複雜的多步驟工作流程、需要條件分支和重試邏輯、已經在用 LangChain 生態系統。 有個 Reddit 用戶說得很傳神:「LangGraph feels like writing a state machine with GPT agents.」 ### CrewAI:角色扮演的直覺設計 CrewAI 的設計哲學完全不同。它把 Agent 想像成團隊成員,每個成員有自己的角色、目標和工具。 ```python from crewai import Agent, Task, Crew researcher = Agent( role="Research Analyst", goal="Find comprehensive information", tools=[search_tool] ) writer = Agent( role="Content Writer", goal="Create engaging articles" ) crew = Crew(agents=[researcher, writer], tasks=[...]) crew.kickoff() ``` 看到了嗎?這個 API 設計就是在模擬真實的團隊協作。 **優點**: - API 直覺,學習曲線平緩 - 快速原型開發 - 角色定義清晰 - 文件和範例豐富 **缺點**: - 當需求變複雜時,會撞到設計的天花板 - 客製化程度有限 - 有團隊反映,用了 6-12 個月後不得不改用其他框架 **適合場景**:快速原型、團隊協作模型契合業務邏輯、初學者入門。 說實話,如果你只是想快速驗證一個想法,CrewAI 可能是最快的選擇。但如果你知道這個專案會長期發展,可能要三思。 ### AutoGen/AG2:對話式的靈活彈性 即使經歷了分裂,AutoGen 的核心設計理念依然有價值。它強調的是「對話式」的多代理人協作。 ```python from autogen import AssistantAgent, UserProxyAgent assistant = AssistantAgent("assistant", llm_config=llm_config) user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"}) user_proxy.initiate_chat(assistant, message="Write a Python function to...") ``` Agent 之間透過對話來協作,就像真人在聊天室裡討論問題一樣。 **優點**: - 極高的靈活性 - 強大的程式碼執行能力 - 適合複雜的對話式問題解決 - 企業級的錯誤處理 **缺點**: - 目前的分裂狀況造成困惑 - 需要花時間理解該跟哪個版本 **適合場景**:需要複雜對話邏輯、程式碼生成和執行、企業環境。 ### MetaGPT:模擬軟體公司 MetaGPT 的野心很大:它想模擬一整間軟體公司的運作方式。 你給它一個需求,它會自動分配角色:產品經理、架構師、工程師、測試人員... 然後這些「虛擬員工」會協作完成整個軟體開發流程。 ```python from metagpt.software_company import generate_repo repo = generate_repo("Create a 2048 game") print(repo) # 輸出完整的專案結構和程式碼 ``` 這聽起來很科幻,但確實可以產出可運行的程式碼。 **優點**: - 端到端的軟體開發自動化 - 結構化的角色分工 - 適合程式碼生成任務 **缺點**: - 應用場景相對侷限 - 對非軟體開發任務支援有限 **適合場景**:自動化程式碼生成、軟體開發任務。 ### OpenAI Agents SDK:官方的優雅設計 還記得 OpenAI 在 2024 年發布的 Swarm 嗎?那是一個實驗性的多代理人框架。 現在 Swarm 已經進化成正式的 OpenAI Agents SDK,成為生產就緒的解決方案。 ```python from openai import Agent, Swarm agent = Agent( name="Assistant", instructions="You are a helpful assistant", tools=[...] ) client = Swarm() response = client.run(agent=agent, messages=[...]) ``` Reddit 上有人這樣評價:「Agents SDK is designed in such an elegant way that it SEEMS lightweight and under-featured. But it's actually quite powerful.」 **優點**: - API 設計優雅簡潔 - 與 OpenAI 生態系統無縫整合 - 生產就緒 - 快速部署 **缺點**: - 綁定 OpenAI 模型 - 相對其他框架功能較少 **適合場景**:主要使用 OpenAI 模型、快速開發、偏好簡潔設計。 ### Claude Agent SDK:安全優先的選擇 Anthropic 不只推出了 Claude Agent SDK,還創造了可能改變整個產業的 MCP 協議。 ```python from claude_agent_sdk import Agent agent = Agent( model="claude-3-opus", tools=[...], # MCP 原生支援 ) ``` 因為 MCP 是 Anthropic 開發的,Claude Agent SDK 自然有最好的 MCP 支援。 **優點**: - MCP 協議原生支援 - 安全性設計優先 - Claude 模型的能力 - 簡潔的 API **缺點**: - 生態系統相對較新 - 綁定 Anthropic 模型 **適合場景**:重視安全性、使用 Anthropic 模型、需要 MCP 整合。 --- ## MCP 協議:不得不提的遊戲規則改變者 講到這裡,我必須特別談談 Model Context Protocol(MCP)。 MCP 是 Anthropic 在 2024 年底推出的開放標準,目的是解決一個根本問題:如何讓 AI 模型安全、標準化地連接外部服務和資料? 你可以把 MCP 想像成 AI 世界的 USB-C。不管你是什麼設備,只要支援 USB-C,就能互通。同樣的,不管你用什麼 AI 模型或框架,只要支援 MCP,就能使用相同的工具和資料來源。 2025 年 12 月,Anthropic 把 MCP 捐贈給了 Linux Foundation 下的 Agentic AI Foundation。這意味著 MCP 已經不再是某一家公司的東西,而是整個產業的標準。 目前支援 MCP 的框架包括: - Claude Agent SDK(原生支援) - PydanticAI - LangChain/LangGraph(透過整合) - 越來越多的框架正在加入 為什麼這很重要? 因為你寫的 MCP 工具可以跨框架使用。今天你用 CrewAI 開發,明天想換成 LangGraph,那些 MCP 工具不用重寫。 這對整個生態系統的標準化有重大意義。 ```mermaid flowchart LR subgraph "AI 模型" A[Claude] B[GPT-4] C[其他 LLM] end subgraph "MCP 協議層" D[標準化介面] end subgraph "外部服務" E[資料庫] F[API] G[檔案系統] H[其他工具] end A --> D B --> D C --> D D --> E D --> F D --> G D --> H ``` --- ## 如何選擇?一個實用的決策框架 說了這麼多,你可能還是想問:「那我到底該選哪個?」 這裡有一個決策流程供你參考: ```mermaid flowchart TD A[開始選擇框架] --> B{主要需求是什麼?} B -->|快速原型驗證| C[CrewAI] B -->|複雜工作流程控制| D[LangGraph] B -->|對話式問題解決| E{生態系統偏好?} B -->|軟體開發自動化| F[MetaGPT] E -->|Microsoft 生態| G[AutoGen 0.4 / Semantic Kernel] E -->|社群版本 / 穩定性| H[AG2] E -->|OpenAI 生態| I[OpenAI Agents SDK] E -->|安全優先 / Anthropic| J[Claude Agent SDK] C --> K[開始開發] D --> K F --> K G --> K H --> K I --> K J --> K ``` 更具體一點: **選 CrewAI 如果**: - 你需要快速驗證想法 - 團隊協作的比喻符合你的業務邏輯 - 你是 AI Agent 新手 **選 LangGraph 如果**: - 你需要精確控制工作流程 - 有複雜的條件分支和重試邏輯 - 你已經在用 LangChain **選 AG2 如果**: - 你之前用 AutoGen,想要穩定的遷移路徑 - 需要複雜的對話式協作 - 重視社群治理 **選 Microsoft AutoGen 0.4 如果**: - 你深度整合 Microsoft 生態系統 - 願意接受新 API 的學習成本 - 考慮未來與 Semantic Kernel 整合 **選 OpenAI Agents SDK 如果**: - 你主要用 OpenAI 模型 - 偏好簡潔的 API 設計 - 需要快速部署到生產 **選 Claude Agent SDK 如果**: - 安全性是首要考量 - 你想充分利用 MCP 協議 - 使用 Anthropic 模型 還有一個選項越來越多團隊在採用:**混合使用**。 比如用 LangGraph 做主要的工作流程編排,但在某些子任務中使用 CrewAI 的角色定義。或者用 OpenAI Agents SDK 做主要開發,但透過 MCP 連接各種工具。 --- ## 生產環境的真實考量 選好框架只是開始。真正的挑戰是讓它在生產環境中穩定運行。 Anthropic 的工程團隊有一個很好的建議:**從簡單開始**。 很多模式其實只需要幾行程式碼就能實現,不一定需要複雜的框架。他們特別強調:「如果你用框架,確保你理解底層程式碼。錯誤的假設是客戶最常見的問題來源。」 這句話值得反覆咀嚼。 ### 成本控制 LLM 調用不便宜。一個多代理人系統可能在一個任務中呼叫十幾次 LLM,費用很快就會累積。 建議: - 設定預算上限和監控 - 考慮哪些步驟真的需要用大模型 - 快取可重複使用的結果 - 評估是否某些任務可以用小模型處理 ### 延遲管理 多代理人系統的延遲是個大問題。Agent A 呼叫 LLM,等回應,然後 Agent B 再呼叫,再等回應... 串聯起來可能要等很久。 建議: - 盡可能平行化 - 考慮使用串流 - 設定合理的 timeout - 讓用戶知道系統在做什麼(進度指示) ### 可觀察性 當系統出問題時,你需要知道是哪個 Agent 在哪個步驟做了什麼決定。 推薦工具: - Langfuse - LangWatch - Phoenix (Arize) - Weights & Biases ### 安全性 Agent 可以執行程式碼、存取外部 API、處理敏感資料。這些能力也帶來風險。 注意事項: - 沙盒化程式碼執行 - 限制 Agent 的權限範圍 - 提示注入防護 - 敏感資料處理策略 --- ## 寫在最後 2025 年的 LLM Agent 框架領域,說實話,還是有點混亂。 AutoGen 分裂了、新框架不斷冒出來、MCP 正在成為標準、每隔幾週就有重大更新... 但混亂也意味著機會。這個領域還在快速演進,現在入場的人有機會影響未來的發展方向。 我的建議是: 1. **不要追逐最新最熱門的**。選一個適合你需求的框架,深入學習。 2. **理解底層原理**。框架只是工具,理解 Agent 的設計模式更重要。 3. **關注 MCP**。這可能是未來幾年最重要的標準化趨勢。 4. **從簡單開始**。不要一開始就設計複雜的多代理人系統。先用單一 Agent 驗證價值,再逐步擴展。 5. **投資可觀察性**。當系統變複雜時,你會慶幸自己早早建立了監控。 最後,如果你問我會選哪個? 我目前的專案選了 LangGraph 搭配 MCP。學習曲線確實陡峭,但精確的控制能力在生產環境中很有價值。 但這只是我的選擇。你的情況可能完全不同。 希望這篇文章能幫你在這個快速變化的領域中找到方向。如果你有任何問題或想分享你的經驗,歡迎交流。 --- ## 參考資料 | 來源 | 標題 | | |------|------|--------| | [GitHub](https://github.com/ag2ai/ag2) | AG2 (formerly AutoGen) Repository | ⭐⭐⭐⭐⭐ | | [Microsoft](https://microsoft.github.io/autogen/stable/) | AutoGen 0.4 Documentation | ⭐⭐⭐⭐⭐ | | [Anthropic](https://www.anthropic.com/engineering/building-effective-agents) | Building Effective Agents | ⭐⭐⭐⭐⭐ | | [Anthropic](https://www.anthropic.com/news/model-context-protocol) | Introducing the Model Context Protocol | ⭐⭐⭐⭐⭐ | | [DataCamp](https://www.datacamp.com/tutorial/crewai-vs-langgraph-vs-autogen) | CrewAI vs LangGraph vs AutoGen | ⭐⭐⭐⭐ | | [Datagrom](https://www.datagrom.com/data-science-machine-learning-ai-blog/langgraph-vs-autogen-vs-crewai-comparison-agentic-ai-frameworks) | Top 3 Trending Agentic AI Frameworks | ⭐⭐⭐⭐ | | [ZenML](https://www.zenml.io/blog/llm-agents-in-production-architectures-challenges-and-best-practices) | LLM Agents in Production | ⭐⭐⭐⭐ | | [ClickHouse](https://clickhouse.com/blog/how-to-build-ai-agents-mcp-12-frameworks) | How to build AI agents with MCP | ⭐⭐⭐⭐ |

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully