[{"data":1,"prerenderedAt":2111},["ShallowReactive",2],{"navigation_docs":3,"-ai-docus-ai-implementation":352,"-ai-docus-ai-implementation-surround":2106},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":43,"body":354,"description":2094,"extension":2095,"links":2096,"meta":2097,"navigation":1024,"path":44,"seo":2104,"stem":45,"__hash__":2105},"docs/ai/docus-ai-implementation.md",{"type":355,"value":356,"toc":2065},"minimark",[357,361,378,383,386,455,458,462,467,476,483,501,504,511,529,532,539,655,659,665,684,687,689,693,697,703,706,709,757,761,766,772,838,842,848,900,904,907,937,941,947,985,989,1000,1170,1172,1176,1179,1182,1202,1205,1208,1228,1231,1235,1246,1250,1267,1271,1274,1277,1283,1456,1459,1464,1542,1545,1552,1727,1729,1733,1736,1739,1859,1862,1997,1999,2002,2005,2045,2048,2050,2061],[358,359,43],"h1",{"id":360},"docus-ai-功能完整實作指南",[362,363,364,365,369,370,373,374,377],"p",{},"Docus 是基於 Nuxt 4 的現代文件系統框架，其中最引人注目的特色之一就是原生支援 AI 整合。本文將深入探討 Docus 的三大 AI 功能：",[366,367,368],"strong",{},"LLMs 整合","、",[366,371,372],{},"MCP Server"," 和 ",[366,375,376],{},"AI Assistant","。",[379,380,382],"h2",{"id":381},"概觀docus-ai-架構","概觀：Docus AI 架構",[362,384,385],{},"Docus 的 AI 功能由三個核心模組組成：",[387,388,389,405],"table",{},[390,391,392],"thead",{},[393,394,395,399,402],"tr",{},[396,397,398],"th",{},"功能",[396,400,401],{},"用途",[396,403,404],{},"端點",[406,407,408,429,443],"tbody",{},[393,409,410,416,419],{},[411,412,413],"td",{},[366,414,415],{},"LLMs Integration",[411,417,418],{},"將文件內容轉換為 LLM 友好的格式",[411,420,421,425,426],{},[422,423,424],"code",{},"/llms.txt",", ",[422,427,428],{},"/llms-full.txt",[393,430,431,435,438],{},[411,432,433],{},[366,434,372],{},[411,436,437],{},"讓 AI 工具（如 Cursor、VS Code）直接查詢文件",[411,439,440],{},[422,441,442],{},"/mcp",[393,444,445,449,452],{},[411,446,447],{},[366,448,376],{},[411,450,451],{},"內建的問答聊天機器人",[411,453,454],{},"內嵌於文件網站",[456,457],"hr",{},[379,459,461],{"id":460},"一llms-integrationllmstxt","一、LLMs Integration（llms.txt）",[463,464,466],"h3",{"id":465},"什麼是-llmstxt","什麼是 llms.txt？",[362,468,469,472,473,475],{},[422,470,471],{},"llms.txt"," 是一種標準化的文件格式，讓 LLM（大型語言模型）能夠快速理解你的文件結構。當 AI 工具存取你的文件網站時，它可以先讀取 ",[422,474,424],{}," 來獲得整體概覽。",[362,477,478,479,482],{},"Docus 透過整合 ",[422,480,481],{},"nuxt-llms"," 模組，自動生成以下檔案：",[484,485,486,494],"ul",{},[487,488,489,493],"li",{},[366,490,491],{},[422,492,424],{},"：精簡版，包含頁面標題、路徑與描述",[487,495,496,500],{},[366,497,498],{},[422,499,428],{},"：完整版，包含所有文件內容（適合大上下文窗口的模型）",[463,502,503],{"id":503},"自動生成原理",[362,505,506,507,510],{},"Docus 會在建置時掃描 ",[422,508,509],{},"/content"," 目錄中的所有 Markdown 檔案，並提取：",[512,513,514,523,526],"ol",{},[487,515,516,517,373,520],{},"Frontmatter 中的 ",[422,518,519],{},"title",[422,521,522],{},"description",[487,524,525],{},"頁面路徑",[487,527,528],{},"內容結構",[463,530,531],{"id":531},"設定方式",[362,533,534,535,538],{},"在 ",[422,536,537],{},"nuxt.config.ts"," 中自訂 LLMs 輸出：",[540,541,546],"pre",{"className":542,"code":543,"filename":537,"language":544,"meta":545,"style":545},"language-ts shiki shiki-themes github-dark","export default defineNuxtConfig({\n  llms: {\n    domain: 'https://your-docs.com',\n    title: 'My Documentation',\n    description: 'Technical documentation for My Product',\n    full: {\n      title: 'My Documentation - Complete Reference',\n      description: 'Full documentation including implementation details',\n    },\n  },\n})\n","ts","",[422,547,548,568,574,587,598,609,615,626,637,643,649],{"__ignoreMap":545},[549,550,553,557,560,564],"span",{"class":551,"line":552},"line",1,[549,554,556],{"class":555},"snl16","export",[549,558,559],{"class":555}," default",[549,561,563],{"class":562},"svObZ"," defineNuxtConfig",[549,565,567],{"class":566},"s95oV","({\n",[549,569,571],{"class":551,"line":570},2,[549,572,573],{"class":566},"  llms: {\n",[549,575,577,580,584],{"class":551,"line":576},3,[549,578,579],{"class":566},"    domain: ",[549,581,583],{"class":582},"sU2Wk","'https://your-docs.com'",[549,585,586],{"class":566},",\n",[549,588,590,593,596],{"class":551,"line":589},4,[549,591,592],{"class":566},"    title: ",[549,594,595],{"class":582},"'My Documentation'",[549,597,586],{"class":566},[549,599,601,604,607],{"class":551,"line":600},5,[549,602,603],{"class":566},"    description: ",[549,605,606],{"class":582},"'Technical documentation for My Product'",[549,608,586],{"class":566},[549,610,612],{"class":551,"line":611},6,[549,613,614],{"class":566},"    full: {\n",[549,616,618,621,624],{"class":551,"line":617},7,[549,619,620],{"class":566},"      title: ",[549,622,623],{"class":582},"'My Documentation - Complete Reference'",[549,625,586],{"class":566},[549,627,629,632,635],{"class":551,"line":628},8,[549,630,631],{"class":566},"      description: ",[549,633,634],{"class":582},"'Full documentation including implementation details'",[549,636,586],{"class":566},[549,638,640],{"class":551,"line":639},9,[549,641,642],{"class":566},"    },\n",[549,644,646],{"class":551,"line":645},10,[549,647,648],{"class":566},"  },\n",[549,650,652],{"class":551,"line":651},11,[549,653,654],{"class":566},"})\n",[463,656,658],{"id":657},"raw-markdown-端點","Raw Markdown 端點",[362,660,661,662,664],{},"除了 ",[422,663,471],{},"，Docus 還提供原始 Markdown 端點，讓 AI 工具可以直接獲取未渲染的 Markdown 內容：",[484,666,667,676],{},[487,668,669,672,673],{},[366,670,671],{},"端點格式","：",[422,674,675],{},"/raw/\u003Ccontent-path>.md",[487,677,678,672,681],{},[366,679,680],{},"範例",[422,682,683],{},"/raw/en/getting-started/installation.md",[362,685,686],{},"這大幅減少了 Token 使用量，因為 AI 不需要解析完整的 HTML。",[456,688],{},[379,690,692],{"id":691},"二mcp-servermodel-context-protocol","二、MCP Server（Model Context Protocol）",[463,694,696],{"id":695},"什麼是-mcp","什麼是 MCP？",[362,698,699,702],{},[366,700,701],{},"Model Context Protocol (MCP)"," 是一個開放協議，用於標準化 AI 應用程式與外部服務之間的連接。每個 Docus 實例都內建一個 MCP Server，讓任何 MCP 客戶端（如 Claude、Cursor、VS Code）都能連接到你的文件。",[463,704,705],{"id":705},"內建工具",[362,707,708],{},"Docus MCP Server 提供兩個預設工具：",[387,710,711,723],{},[390,712,713],{},[393,714,715,718,720],{},[396,716,717],{},"工具",[396,719,398],{},[396,721,722],{},"參數",[406,724,725,741],{},[393,726,727,732,735],{},[411,728,729],{},[422,730,731],{},"list-pages",[411,733,734],{},"列出所有文件頁面",[411,736,737,740],{},[422,738,739],{},"locale","（可選）",[393,742,743,748,751],{},[411,744,745],{},[422,746,747],{},"get-page",[411,749,750],{},"獲取特定頁面的完整 Markdown 內容",[411,752,753,756],{},[422,754,755],{},"path","（必填）",[463,758,760],{"id":759},"在-ai-工具中設定","在 AI 工具中設定",[762,763,765],"h4",{"id":764},"cursor","Cursor",[362,767,768,769,672],{},"在專案根目錄建立 ",[422,770,771],{},".cursor/mcp.json",[540,773,777],{"className":774,"code":775,"filename":771,"language":776,"meta":545,"style":545},"language-json shiki shiki-themes github-dark","{\n  \"mcpServers\": {\n    \"my-docs\": {\n      \"type\": \"http\",\n      \"url\": \"https://your-docs.com/mcp\"\n    }\n  }\n}\n","json",[422,778,779,784,793,800,813,823,828,833],{"__ignoreMap":545},[549,780,781],{"class":551,"line":552},[549,782,783],{"class":566},"{\n",[549,785,786,790],{"class":551,"line":570},[549,787,789],{"class":788},"sDLfK","  \"mcpServers\"",[549,791,792],{"class":566},": {\n",[549,794,795,798],{"class":551,"line":576},[549,796,797],{"class":788},"    \"my-docs\"",[549,799,792],{"class":566},[549,801,802,805,808,811],{"class":551,"line":589},[549,803,804],{"class":788},"      \"type\"",[549,806,807],{"class":566},": ",[549,809,810],{"class":582},"\"http\"",[549,812,586],{"class":566},[549,814,815,818,820],{"class":551,"line":600},[549,816,817],{"class":788},"      \"url\"",[549,819,807],{"class":566},[549,821,822],{"class":582},"\"https://your-docs.com/mcp\"\n",[549,824,825],{"class":551,"line":611},[549,826,827],{"class":566},"    }\n",[549,829,830],{"class":551,"line":617},[549,831,832],{"class":566},"  }\n",[549,834,835],{"class":551,"line":628},[549,836,837],{"class":566},"}\n",[762,839,841],{"id":840},"vs-code","VS Code",[362,843,844,845,672],{},"建立 ",[422,846,847],{},".vscode/mcp.json",[540,849,851],{"className":774,"code":850,"filename":847,"language":776,"meta":545,"style":545},"{\n  \"servers\": {\n    \"my-docs\": {\n      \"type\": \"http\",\n      \"url\": \"https://your-docs.com/mcp\"\n    }\n  }\n}\n",[422,852,853,857,864,870,880,888,892,896],{"__ignoreMap":545},[549,854,855],{"class":551,"line":552},[549,856,783],{"class":566},[549,858,859,862],{"class":551,"line":570},[549,860,861],{"class":788},"  \"servers\"",[549,863,792],{"class":566},[549,865,866,868],{"class":551,"line":576},[549,867,797],{"class":788},[549,869,792],{"class":566},[549,871,872,874,876,878],{"class":551,"line":589},[549,873,804],{"class":788},[549,875,807],{"class":566},[549,877,810],{"class":582},[549,879,586],{"class":566},[549,881,882,884,886],{"class":551,"line":600},[549,883,817],{"class":788},[549,885,807],{"class":566},[549,887,822],{"class":582},[549,889,890],{"class":551,"line":611},[549,891,827],{"class":566},[549,893,894],{"class":551,"line":617},[549,895,832],{"class":566},[549,897,898],{"class":551,"line":628},[549,899,837],{"class":566},[762,901,903],{"id":902},"claude-code","Claude Code",[362,905,906],{},"使用 CLI 指令：",[540,908,912],{"className":909,"code":910,"language":911,"meta":545,"style":545},"language-bash shiki shiki-themes github-dark","claude mcp add --transport http my-docs https://your-docs.com/mcp\n","bash",[422,913,914],{"__ignoreMap":545},[549,915,916,919,922,925,928,931,934],{"class":551,"line":552},[549,917,918],{"class":562},"claude",[549,920,921],{"class":582}," mcp",[549,923,924],{"class":582}," add",[549,926,927],{"class":788}," --transport",[549,929,930],{"class":582}," http",[549,932,933],{"class":582}," my-docs",[549,935,936],{"class":582}," https://your-docs.com/mcp\n",[463,938,940],{"id":939},"停用-mcp-server","停用 MCP Server",[362,942,943,944,946],{},"若不需要 MCP 功能，可在 ",[422,945,537],{}," 中停用：",[540,948,950],{"className":542,"code":949,"filename":537,"language":544,"meta":545,"style":545},"export default defineNuxtConfig({\n  mcp: {\n    enabled: false,\n  },\n})\n",[422,951,952,962,967,977,981],{"__ignoreMap":545},[549,953,954,956,958,960],{"class":551,"line":552},[549,955,556],{"class":555},[549,957,559],{"class":555},[549,959,563],{"class":562},[549,961,567],{"class":566},[549,963,964],{"class":551,"line":570},[549,965,966],{"class":566},"  mcp: {\n",[549,968,969,972,975],{"class":551,"line":576},[549,970,971],{"class":566},"    enabled: ",[549,973,974],{"class":788},"false",[549,976,586],{"class":566},[549,978,979],{"class":551,"line":589},[549,980,648],{"class":566},[549,982,983],{"class":551,"line":600},[549,984,654],{"class":566},[463,986,988],{"id":987},"自訂-mcp-工具","自訂 MCP 工具",[362,990,991,992,995,996,999],{},"Docus 使用 ",[422,993,994],{},"@nuxtjs/mcp-toolkit"," 模組，你可以在 ",[422,997,998],{},"server/mcp/tools/"," 目錄下建立自訂工具：",[540,1001,1004],{"className":542,"code":1002,"filename":1003,"language":544,"meta":545,"style":545},"import { z } from 'zod'\n\nexport default defineMcpTool({\n  description: 'Search documentation by keyword',\n  inputSchema: {\n    query: z.string().describe('The search query'),\n  },\n  handler: async ({ query }) => {\n    const results = await searchDocs(query)\n    return {\n      content: [{ type: 'text', text: JSON.stringify(results) }],\n    }\n  },\n})\n","server/mcp/tools/search.ts",[422,1005,1006,1020,1026,1037,1047,1052,1075,1079,1105,1125,1132,1155,1160,1165],{"__ignoreMap":545},[549,1007,1008,1011,1014,1017],{"class":551,"line":552},[549,1009,1010],{"class":555},"import",[549,1012,1013],{"class":566}," { z } ",[549,1015,1016],{"class":555},"from",[549,1018,1019],{"class":582}," 'zod'\n",[549,1021,1022],{"class":551,"line":570},[549,1023,1025],{"emptyLinePlaceholder":1024},true,"\n",[549,1027,1028,1030,1032,1035],{"class":551,"line":576},[549,1029,556],{"class":555},[549,1031,559],{"class":555},[549,1033,1034],{"class":562}," defineMcpTool",[549,1036,567],{"class":566},[549,1038,1039,1042,1045],{"class":551,"line":589},[549,1040,1041],{"class":566},"  description: ",[549,1043,1044],{"class":582},"'Search documentation by keyword'",[549,1046,586],{"class":566},[549,1048,1049],{"class":551,"line":600},[549,1050,1051],{"class":566},"  inputSchema: {\n",[549,1053,1054,1057,1060,1063,1066,1069,1072],{"class":551,"line":611},[549,1055,1056],{"class":566},"    query: z.",[549,1058,1059],{"class":562},"string",[549,1061,1062],{"class":566},"().",[549,1064,1065],{"class":562},"describe",[549,1067,1068],{"class":566},"(",[549,1070,1071],{"class":582},"'The search query'",[549,1073,1074],{"class":566},"),\n",[549,1076,1077],{"class":551,"line":617},[549,1078,648],{"class":566},[549,1080,1081,1084,1086,1089,1092,1096,1099,1102],{"class":551,"line":628},[549,1082,1083],{"class":562},"  handler",[549,1085,807],{"class":566},[549,1087,1088],{"class":555},"async",[549,1090,1091],{"class":566}," ({ ",[549,1093,1095],{"class":1094},"s9osk","query",[549,1097,1098],{"class":566}," }) ",[549,1100,1101],{"class":555},"=>",[549,1103,1104],{"class":566}," {\n",[549,1106,1107,1110,1113,1116,1119,1122],{"class":551,"line":639},[549,1108,1109],{"class":555},"    const",[549,1111,1112],{"class":788}," results",[549,1114,1115],{"class":555}," =",[549,1117,1118],{"class":555}," await",[549,1120,1121],{"class":562}," searchDocs",[549,1123,1124],{"class":566},"(query)\n",[549,1126,1127,1130],{"class":551,"line":645},[549,1128,1129],{"class":555},"    return",[549,1131,1104],{"class":566},[549,1133,1134,1137,1140,1143,1146,1149,1152],{"class":551,"line":651},[549,1135,1136],{"class":566},"      content: [{ type: ",[549,1138,1139],{"class":582},"'text'",[549,1141,1142],{"class":566},", text: ",[549,1144,1145],{"class":788},"JSON",[549,1147,1148],{"class":566},".",[549,1150,1151],{"class":562},"stringify",[549,1153,1154],{"class":566},"(results) }],\n",[549,1156,1158],{"class":551,"line":1157},12,[549,1159,827],{"class":566},[549,1161,1163],{"class":551,"line":1162},13,[549,1164,648],{"class":566},[549,1166,1168],{"class":551,"line":1167},14,[549,1169,654],{"class":566},[456,1171],{},[379,1173,1175],{"id":1174},"三ai-assistant內建問答助手","三、AI Assistant（內建問答助手）",[463,1177,1178],{"id":1178},"功能介紹",[362,1180,1181],{},"AI Assistant 是 Docus 內建的聊天機器人，讓使用者可以用自然語言詢問文件相關問題。它的特色包括：",[484,1183,1184,1190,1196],{},[487,1185,1186,1189],{},[366,1187,1188],{},"自動搜尋文件","：透過 MCP Server 搜尋相關內容",[487,1191,1192,1195],{},[366,1193,1194],{},"引用來源","：回答時附上參考頁面連結",[487,1197,1198,1201],{},[366,1199,1200],{},"程式碼範例","：自動生成可複製的程式碼片段",[463,1203,1204],{"id":1204},"運作原理",[362,1206,1207],{},"Assistant 使用多代理架構：",[512,1209,1210,1216,1222],{},[487,1211,1212,1215],{},[366,1213,1214],{},"主代理（Main Agent）","：接收使用者問題，決定是否需要搜尋文件",[487,1217,1218,1221],{},[366,1219,1220],{},"搜尋代理（Search Agent）","：使用 MCP Server 工具尋找相關內容",[487,1223,1224,1227],{},[366,1225,1226],{},"回應生成","：將資訊整合成友善的回答",[463,1229,1230],{"id":1230},"快速啟用",[762,1232,1234],{"id":1233},"_1-取得-api-key","1. 取得 API Key",[362,1236,1237,1238,1245],{},"從 ",[1239,1240,1244],"a",{"href":1241,"rel":1242},"https://vercel.com/~/ai/api-keys",[1243],"nofollow","Vercel AI Gateway"," 取得 API Key。",[762,1247,1249],{"id":1248},"_2-設定環境變數","2. 設定環境變數",[540,1251,1254],{"className":909,"code":1252,"filename":1253,"language":911,"meta":545,"style":545},"AI_GATEWAY_API_KEY=your-api-key\n",".env",[422,1255,1256],{"__ignoreMap":545},[549,1257,1258,1261,1264],{"class":551,"line":552},[549,1259,1260],{"class":566},"AI_GATEWAY_API_KEY",[549,1262,1263],{"class":555},"=",[549,1265,1266],{"class":582},"your-api-key\n",[762,1268,1270],{"id":1269},"_3-部署","3. 部署",[362,1272,1273],{},"完成！當偵測到 API Key 時，Assistant 會自動啟用。",[463,1275,1276],{"id":1276},"設定選項",[362,1278,534,1279,1282],{},[422,1280,1281],{},"app.config.ts"," 中自訂 Assistant 行為：",[540,1284,1286],{"className":542,"code":1285,"filename":1281,"language":544,"meta":545,"style":545},"export default defineAppConfig({\n  assistant: {\n    // 顯示浮動輸入框\n    floatingInput: true,\n\n    // 顯示「用 AI 解釋」按鈕\n    explainWithAi: true,\n\n    // FAQ 問題（引導使用者）\n    faqQuestions: [\n      'How do I install Docus?',\n      'How do I customize the theme?',\n    ],\n\n    // 鍵盤快捷鍵\n    shortcuts: {\n      focusInput: 'meta_i'  // Cmd+I (Mac) / Ctrl+I (Windows)\n    },\n\n    // 自訂圖示\n    icons: {\n      trigger: 'i-lucide-sparkles',\n      explain: 'i-lucide-brain'\n    }\n  }\n})\n",[422,1287,1288,1299,1304,1310,1320,1324,1329,1338,1342,1347,1352,1359,1366,1371,1375,1381,1387,1399,1404,1409,1415,1421,1432,1441,1446,1451],{"__ignoreMap":545},[549,1289,1290,1292,1294,1297],{"class":551,"line":552},[549,1291,556],{"class":555},[549,1293,559],{"class":555},[549,1295,1296],{"class":562}," defineAppConfig",[549,1298,567],{"class":566},[549,1300,1301],{"class":551,"line":570},[549,1302,1303],{"class":566},"  assistant: {\n",[549,1305,1306],{"class":551,"line":576},[549,1307,1309],{"class":1308},"sAwPA","    // 顯示浮動輸入框\n",[549,1311,1312,1315,1318],{"class":551,"line":589},[549,1313,1314],{"class":566},"    floatingInput: ",[549,1316,1317],{"class":788},"true",[549,1319,586],{"class":566},[549,1321,1322],{"class":551,"line":600},[549,1323,1025],{"emptyLinePlaceholder":1024},[549,1325,1326],{"class":551,"line":611},[549,1327,1328],{"class":1308},"    // 顯示「用 AI 解釋」按鈕\n",[549,1330,1331,1334,1336],{"class":551,"line":617},[549,1332,1333],{"class":566},"    explainWithAi: ",[549,1335,1317],{"class":788},[549,1337,586],{"class":566},[549,1339,1340],{"class":551,"line":628},[549,1341,1025],{"emptyLinePlaceholder":1024},[549,1343,1344],{"class":551,"line":639},[549,1345,1346],{"class":1308},"    // FAQ 問題（引導使用者）\n",[549,1348,1349],{"class":551,"line":645},[549,1350,1351],{"class":566},"    faqQuestions: [\n",[549,1353,1354,1357],{"class":551,"line":651},[549,1355,1356],{"class":582},"      'How do I install Docus?'",[549,1358,586],{"class":566},[549,1360,1361,1364],{"class":551,"line":1157},[549,1362,1363],{"class":582},"      'How do I customize the theme?'",[549,1365,586],{"class":566},[549,1367,1368],{"class":551,"line":1162},[549,1369,1370],{"class":566},"    ],\n",[549,1372,1373],{"class":551,"line":1167},[549,1374,1025],{"emptyLinePlaceholder":1024},[549,1376,1378],{"class":551,"line":1377},15,[549,1379,1380],{"class":1308},"    // 鍵盤快捷鍵\n",[549,1382,1384],{"class":551,"line":1383},16,[549,1385,1386],{"class":566},"    shortcuts: {\n",[549,1388,1390,1393,1396],{"class":551,"line":1389},17,[549,1391,1392],{"class":566},"      focusInput: ",[549,1394,1395],{"class":582},"'meta_i'",[549,1397,1398],{"class":1308},"  // Cmd+I (Mac) / Ctrl+I (Windows)\n",[549,1400,1402],{"class":551,"line":1401},18,[549,1403,642],{"class":566},[549,1405,1407],{"class":551,"line":1406},19,[549,1408,1025],{"emptyLinePlaceholder":1024},[549,1410,1412],{"class":551,"line":1411},20,[549,1413,1414],{"class":1308},"    // 自訂圖示\n",[549,1416,1418],{"class":551,"line":1417},21,[549,1419,1420],{"class":566},"    icons: {\n",[549,1422,1424,1427,1430],{"class":551,"line":1423},22,[549,1425,1426],{"class":566},"      trigger: ",[549,1428,1429],{"class":582},"'i-lucide-sparkles'",[549,1431,586],{"class":566},[549,1433,1435,1438],{"class":551,"line":1434},23,[549,1436,1437],{"class":566},"      explain: ",[549,1439,1440],{"class":582},"'i-lucide-brain'\n",[549,1442,1444],{"class":551,"line":1443},24,[549,1445,827],{"class":566},[549,1447,1449],{"class":551,"line":1448},25,[549,1450,832],{"class":566},[549,1452,1454],{"class":551,"line":1453},26,[549,1455,654],{"class":566},[463,1457,1458],{"id":1458},"進階設定",[362,1460,534,1461,1463],{},[422,1462,537],{}," 中設定 AI 模型：",[540,1465,1467],{"className":542,"code":1466,"filename":537,"language":544,"meta":545,"style":545},"export default defineNuxtConfig({\n  assistant: {\n    // 使用的 AI 模型（支援 AI SDK Gateway 格式）\n    model: 'google/gemini-3-flash',\n\n    // MCP Server 路徑\n    mcpServer: '/mcp',\n\n    // API 端點路徑\n    apiPath: '/__docus__/assistant'\n  }\n})\n",[422,1468,1469,1479,1483,1488,1498,1502,1507,1517,1521,1526,1534,1538],{"__ignoreMap":545},[549,1470,1471,1473,1475,1477],{"class":551,"line":552},[549,1472,556],{"class":555},[549,1474,559],{"class":555},[549,1476,563],{"class":562},[549,1478,567],{"class":566},[549,1480,1481],{"class":551,"line":570},[549,1482,1303],{"class":566},[549,1484,1485],{"class":551,"line":576},[549,1486,1487],{"class":1308},"    // 使用的 AI 模型（支援 AI SDK Gateway 格式）\n",[549,1489,1490,1493,1496],{"class":551,"line":589},[549,1491,1492],{"class":566},"    model: ",[549,1494,1495],{"class":582},"'google/gemini-3-flash'",[549,1497,586],{"class":566},[549,1499,1500],{"class":551,"line":600},[549,1501,1025],{"emptyLinePlaceholder":1024},[549,1503,1504],{"class":551,"line":611},[549,1505,1506],{"class":1308},"    // MCP Server 路徑\n",[549,1508,1509,1512,1515],{"class":551,"line":617},[549,1510,1511],{"class":566},"    mcpServer: ",[549,1513,1514],{"class":582},"'/mcp'",[549,1516,586],{"class":566},[549,1518,1519],{"class":551,"line":628},[549,1520,1025],{"emptyLinePlaceholder":1024},[549,1522,1523],{"class":551,"line":639},[549,1524,1525],{"class":1308},"    // API 端點路徑\n",[549,1527,1528,1531],{"class":551,"line":645},[549,1529,1530],{"class":566},"    apiPath: ",[549,1532,1533],{"class":582},"'/__docus__/assistant'\n",[549,1535,1536],{"class":551,"line":651},[549,1537,832],{"class":566},[549,1539,1540],{"class":551,"line":1157},[549,1541,654],{"class":566},[463,1543,1544],{"id":1544},"程式化控制",[362,1546,1547,1548,1551],{},"使用 ",[422,1549,1550],{},"useAssistant"," composable 來控制 Assistant：",[540,1553,1557],{"className":1554,"code":1555,"language":1556,"meta":545,"style":545},"language-vue shiki shiki-themes github-dark","\u003Cscript setup>\nconst { isEnabled, isOpen, open, close, toggle, clearMessages } = useAssistant()\n\nfunction askQuestion() {\n  open('How do I configure the theme?', true)\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CUButton v-if=\"isEnabled\" @click=\"askQuestion\">\n    Ask about themes\n  \u003C/UButton>\n\u003C/template>\n","vue",[422,1558,1559,1574,1621,1625,1636,1653,1657,1666,1670,1679,1705,1710,1719],{"__ignoreMap":545},[549,1560,1561,1564,1568,1571],{"class":551,"line":552},[549,1562,1563],{"class":566},"\u003C",[549,1565,1567],{"class":1566},"s4JwU","script",[549,1569,1570],{"class":562}," setup",[549,1572,1573],{"class":566},">\n",[549,1575,1576,1579,1582,1585,1587,1590,1592,1595,1597,1600,1602,1605,1607,1610,1613,1615,1618],{"class":551,"line":570},[549,1577,1578],{"class":555},"const",[549,1580,1581],{"class":566}," { ",[549,1583,1584],{"class":788},"isEnabled",[549,1586,425],{"class":566},[549,1588,1589],{"class":788},"isOpen",[549,1591,425],{"class":566},[549,1593,1594],{"class":788},"open",[549,1596,425],{"class":566},[549,1598,1599],{"class":788},"close",[549,1601,425],{"class":566},[549,1603,1604],{"class":788},"toggle",[549,1606,425],{"class":566},[549,1608,1609],{"class":788},"clearMessages",[549,1611,1612],{"class":566}," } ",[549,1614,1263],{"class":555},[549,1616,1617],{"class":562}," useAssistant",[549,1619,1620],{"class":566},"()\n",[549,1622,1623],{"class":551,"line":576},[549,1624,1025],{"emptyLinePlaceholder":1024},[549,1626,1627,1630,1633],{"class":551,"line":589},[549,1628,1629],{"class":555},"function",[549,1631,1632],{"class":562}," askQuestion",[549,1634,1635],{"class":566},"() {\n",[549,1637,1638,1641,1643,1646,1648,1650],{"class":551,"line":600},[549,1639,1640],{"class":562},"  open",[549,1642,1068],{"class":566},[549,1644,1645],{"class":582},"'How do I configure the theme?'",[549,1647,425],{"class":566},[549,1649,1317],{"class":788},[549,1651,1652],{"class":566},")\n",[549,1654,1655],{"class":551,"line":611},[549,1656,837],{"class":566},[549,1658,1659,1662,1664],{"class":551,"line":617},[549,1660,1661],{"class":566},"\u003C/",[549,1663,1567],{"class":1566},[549,1665,1573],{"class":566},[549,1667,1668],{"class":551,"line":628},[549,1669,1025],{"emptyLinePlaceholder":1024},[549,1671,1672,1674,1677],{"class":551,"line":639},[549,1673,1563],{"class":566},[549,1675,1676],{"class":1566},"template",[549,1678,1573],{"class":566},[549,1680,1681,1684,1687,1690,1692,1695,1698,1700,1703],{"class":551,"line":645},[549,1682,1683],{"class":566},"  \u003C",[549,1685,1686],{"class":1566},"UButton",[549,1688,1689],{"class":562}," v-if",[549,1691,1263],{"class":566},[549,1693,1694],{"class":582},"\"isEnabled\"",[549,1696,1697],{"class":562}," @click",[549,1699,1263],{"class":566},[549,1701,1702],{"class":582},"\"askQuestion\"",[549,1704,1573],{"class":566},[549,1706,1707],{"class":551,"line":651},[549,1708,1709],{"class":566},"    Ask about themes\n",[549,1711,1712,1715,1717],{"class":551,"line":1157},[549,1713,1714],{"class":566},"  \u003C/",[549,1716,1686],{"class":1566},[549,1718,1573],{"class":566},[549,1720,1721,1723,1725],{"class":551,"line":1162},[549,1722,1661],{"class":566},[549,1724,1676],{"class":1566},[549,1726,1573],{"class":566},[456,1728],{},[379,1730,1732],{"id":1731},"實作範例完整的-ai-整合設定","實作範例：完整的 AI 整合設定",[362,1734,1735],{},"以下是一個完整的 Docus 專案 AI 設定範例：",[463,1737,537],{"id":1738},"nuxtconfigts",[540,1740,1742],{"className":542,"code":1741,"filename":537,"language":544,"meta":545,"style":545},"export default defineNuxtConfig({\n  // LLMs 整合\n  llms: {\n    domain: 'https://docs.myproject.com',\n    title: 'MyProject Documentation',\n    description: 'Official documentation for MyProject',\n  },\n\n  // AI Assistant\n  assistant: {\n    model: 'google/gemini-3-flash',\n    mcpServer: '/mcp',\n  },\n\n  // 網站資訊（用於 Assistant 回應）\n  site: {\n    name: 'MyProject',\n  },\n})\n",[422,1743,1744,1754,1759,1763,1772,1781,1790,1794,1798,1803,1807,1815,1823,1827,1831,1836,1841,1851,1855],{"__ignoreMap":545},[549,1745,1746,1748,1750,1752],{"class":551,"line":552},[549,1747,556],{"class":555},[549,1749,559],{"class":555},[549,1751,563],{"class":562},[549,1753,567],{"class":566},[549,1755,1756],{"class":551,"line":570},[549,1757,1758],{"class":1308},"  // LLMs 整合\n",[549,1760,1761],{"class":551,"line":576},[549,1762,573],{"class":566},[549,1764,1765,1767,1770],{"class":551,"line":589},[549,1766,579],{"class":566},[549,1768,1769],{"class":582},"'https://docs.myproject.com'",[549,1771,586],{"class":566},[549,1773,1774,1776,1779],{"class":551,"line":600},[549,1775,592],{"class":566},[549,1777,1778],{"class":582},"'MyProject Documentation'",[549,1780,586],{"class":566},[549,1782,1783,1785,1788],{"class":551,"line":611},[549,1784,603],{"class":566},[549,1786,1787],{"class":582},"'Official documentation for MyProject'",[549,1789,586],{"class":566},[549,1791,1792],{"class":551,"line":617},[549,1793,648],{"class":566},[549,1795,1796],{"class":551,"line":628},[549,1797,1025],{"emptyLinePlaceholder":1024},[549,1799,1800],{"class":551,"line":639},[549,1801,1802],{"class":1308},"  // AI Assistant\n",[549,1804,1805],{"class":551,"line":645},[549,1806,1303],{"class":566},[549,1808,1809,1811,1813],{"class":551,"line":651},[549,1810,1492],{"class":566},[549,1812,1495],{"class":582},[549,1814,586],{"class":566},[549,1816,1817,1819,1821],{"class":551,"line":1157},[549,1818,1511],{"class":566},[549,1820,1514],{"class":582},[549,1822,586],{"class":566},[549,1824,1825],{"class":551,"line":1162},[549,1826,648],{"class":566},[549,1828,1829],{"class":551,"line":1167},[549,1830,1025],{"emptyLinePlaceholder":1024},[549,1832,1833],{"class":551,"line":1377},[549,1834,1835],{"class":1308},"  // 網站資訊（用於 Assistant 回應）\n",[549,1837,1838],{"class":551,"line":1383},[549,1839,1840],{"class":566},"  site: {\n",[549,1842,1843,1846,1849],{"class":551,"line":1389},[549,1844,1845],{"class":566},"    name: ",[549,1847,1848],{"class":582},"'MyProject'",[549,1850,586],{"class":566},[549,1852,1853],{"class":551,"line":1401},[549,1854,648],{"class":566},[549,1856,1857],{"class":551,"line":1406},[549,1858,654],{"class":566},[463,1860,1281],{"id":1861},"appconfigts",[540,1863,1865],{"className":542,"code":1864,"filename":1281,"language":544,"meta":545,"style":545},"export default defineAppConfig({\n  assistant: {\n    floatingInput: true,\n    explainWithAi: true,\n    faqQuestions: [\n      {\n        category: 'Getting Started',\n        items: [\n          'How do I install MyProject?',\n          'What are the system requirements?',\n        ]\n      },\n      {\n        category: 'Configuration',\n        items: [\n          'How do I configure authentication?',\n          'How do I customize the theme?',\n        ]\n      }\n    ],\n  }\n})\n",[422,1866,1867,1877,1881,1889,1897,1901,1906,1916,1921,1928,1935,1940,1945,1949,1958,1962,1969,1976,1980,1985,1989,1993],{"__ignoreMap":545},[549,1868,1869,1871,1873,1875],{"class":551,"line":552},[549,1870,556],{"class":555},[549,1872,559],{"class":555},[549,1874,1296],{"class":562},[549,1876,567],{"class":566},[549,1878,1879],{"class":551,"line":570},[549,1880,1303],{"class":566},[549,1882,1883,1885,1887],{"class":551,"line":576},[549,1884,1314],{"class":566},[549,1886,1317],{"class":788},[549,1888,586],{"class":566},[549,1890,1891,1893,1895],{"class":551,"line":589},[549,1892,1333],{"class":566},[549,1894,1317],{"class":788},[549,1896,586],{"class":566},[549,1898,1899],{"class":551,"line":600},[549,1900,1351],{"class":566},[549,1902,1903],{"class":551,"line":611},[549,1904,1905],{"class":566},"      {\n",[549,1907,1908,1911,1914],{"class":551,"line":617},[549,1909,1910],{"class":566},"        category: ",[549,1912,1913],{"class":582},"'Getting Started'",[549,1915,586],{"class":566},[549,1917,1918],{"class":551,"line":628},[549,1919,1920],{"class":566},"        items: [\n",[549,1922,1923,1926],{"class":551,"line":639},[549,1924,1925],{"class":582},"          'How do I install MyProject?'",[549,1927,586],{"class":566},[549,1929,1930,1933],{"class":551,"line":645},[549,1931,1932],{"class":582},"          'What are the system requirements?'",[549,1934,586],{"class":566},[549,1936,1937],{"class":551,"line":651},[549,1938,1939],{"class":566},"        ]\n",[549,1941,1942],{"class":551,"line":1157},[549,1943,1944],{"class":566},"      },\n",[549,1946,1947],{"class":551,"line":1162},[549,1948,1905],{"class":566},[549,1950,1951,1953,1956],{"class":551,"line":1167},[549,1952,1910],{"class":566},[549,1954,1955],{"class":582},"'Configuration'",[549,1957,586],{"class":566},[549,1959,1960],{"class":551,"line":1377},[549,1961,1920],{"class":566},[549,1963,1964,1967],{"class":551,"line":1383},[549,1965,1966],{"class":582},"          'How do I configure authentication?'",[549,1968,586],{"class":566},[549,1970,1971,1974],{"class":551,"line":1389},[549,1972,1973],{"class":582},"          'How do I customize the theme?'",[549,1975,586],{"class":566},[549,1977,1978],{"class":551,"line":1401},[549,1979,1939],{"class":566},[549,1981,1982],{"class":551,"line":1406},[549,1983,1984],{"class":566},"      }\n",[549,1986,1987],{"class":551,"line":1411},[549,1988,1370],{"class":566},[549,1990,1991],{"class":551,"line":1417},[549,1992,832],{"class":566},[549,1994,1995],{"class":551,"line":1423},[549,1996,654],{"class":566},[456,1998],{},[379,2000,2001],{"id":2001},"總結",[362,2003,2004],{},"Docus 的 AI 功能讓你的文件網站不再只是靜態內容，而是成為一個智慧的知識庫：",[387,2006,2007,2016],{},[390,2008,2009],{},[393,2010,2011,2013],{},[396,2012,398],{},[396,2014,2015],{},"適用場景",[406,2017,2018,2027,2036],{},[393,2019,2020,2024],{},[411,2021,2022],{},[366,2023,471],{},[411,2025,2026],{},"讓任何 LLM 快速理解你的文件結構",[393,2028,2029,2033],{},[411,2030,2031],{},[366,2032,372],{},[411,2034,2035],{},"整合到 IDE（Cursor、VS Code）中，開發時即時查詢",[393,2037,2038,2042],{},[411,2039,2040],{},[366,2041,376],{},[411,2043,2044],{},"為終端使用者提供即時問答功能",[362,2046,2047],{},"這三個功能相輔相成，共同打造出現代化的 AI-Ready 文件體驗。",[456,2049],{},[362,2051,2052],{},[2053,2054,2055,2056],"em",{},"本文基於 Docus v5 官方文件撰寫，更多資訊請參考 ",[1239,2057,2060],{"href":2058,"rel":2059},"https://docus.dev",[1243],"docus.dev",[2062,2063,2064],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}",{"title":545,"searchDepth":570,"depth":570,"links":2066},[2067,2068,2074,2081,2089,2093],{"id":381,"depth":570,"text":382},{"id":460,"depth":570,"text":461,"children":2069},[2070,2071,2072,2073],{"id":465,"depth":576,"text":466},{"id":503,"depth":576,"text":503},{"id":531,"depth":576,"text":531},{"id":657,"depth":576,"text":658},{"id":691,"depth":570,"text":692,"children":2075},[2076,2077,2078,2079,2080],{"id":695,"depth":576,"text":696},{"id":705,"depth":576,"text":705},{"id":759,"depth":576,"text":760},{"id":939,"depth":576,"text":940},{"id":987,"depth":576,"text":988},{"id":1174,"depth":570,"text":1175,"children":2082},[2083,2084,2085,2086,2087,2088],{"id":1178,"depth":576,"text":1178},{"id":1204,"depth":576,"text":1204},{"id":1230,"depth":576,"text":1230},{"id":1276,"depth":576,"text":1276},{"id":1458,"depth":576,"text":1458},{"id":1544,"depth":576,"text":1544},{"id":1731,"depth":570,"text":1732,"children":2090},[2091,2092],{"id":1738,"depth":576,"text":537},{"id":1861,"depth":576,"text":1281},{"id":2001,"depth":570,"text":2001},"深入了解 Docus 中的 AI 功能：llms.txt 整合、MCP Server、AI Assistant 的原理與實作方式","md",null,{"category":7,"date":2098,"tags":2099},"2026-02-23",[2100,2101,2102,2103,128,7],"docus","mcp","llms-txt","ai-assistant",{"title":43,"description":2094},"V1bJRahLYYYl3RMueQ0Z6R_6DIMutz_Gn6ulhwcqVqs",[2107,2109],{"title":38,"path":39,"stem":40,"description":2108,"children":-1},"從直覺理解到實務應用，完整掌握 TF-IDF 在資訊檢索與自然語言處理中的核心概念與使用方式。",{"title":47,"path":48,"stem":49,"description":2110,"children":-1},"認識 llms.txt 的用途與設計理念，了解它如何補足 robots.txt 的不足，並學會在 Nuxt 專案中正確設定與使用。",1776690840179]