[{"data":1,"prerenderedAt":2230},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fnanobot":3},{"doc":4,"prev":2197,"next":2201,"resolvedType":8,"readingMinutes":148,"audience":2204,"checklist":2208,"related":2212},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fnanobot","nanobot - 超轻量级 AI 助手","香港大学开发的 4000 行代码实现的个人 AI 助手，支持多平台聊天集成","article",null,"ai-tools","AI 工具","2026-02-28","i-carbon-chat-bot",{"type":15,"value":16,"toc":2155},"minimark",[17,21,25,28,32,48,51,90,93,97,202,205,218,221,228,292,295,328,331,335,354,429,434,445,449,466,531,535,538,573,576,580,583,658,662,665,844,848,852,855,903,907,959,963,966,984,988,1015,1017,1081,1085,1148,1152,1155,1342,1344,1347,1352,1392,1395,1399,1452,1455,1531,1535,1541,1628,1631,1662,1665,1752,1766,1770,1875,1878,1886,1890,2028,2031,2034,2051,2054,2058,2061,2065,2068,2082,2085,2088,2091,2111,2114,2151],[18,19,6],"h1",{"id":20},"nanobot-超轻量级-ai-助手",[22,23,24],"p",{},"nanobot 是香港大学数据智能实验室（HKUDS）开发的超轻量级个人 AI 助手，仅用约 4,000 行 Python 代码实现核心功能，比 OpenClaw 的 43 万行代码小 99%。",[22,26,27],{},"这页适合作为“轻量级自托管 AI 助手”的入口文档。nanobot 的价值不只是代码少，而是在资源占用、上手速度、可学习性和多平台集成之间做了很轻的平衡。",[29,30,31],"h2",{"id":31},"适合谁用",[33,34,35,39,42,45],"ul",{},[36,37,38],"li",{},"想快速搭一个个人 AI 助手",[36,40,41],{},"想研究代理系统实现，但不想一上来就看超大代码库",[36,43,44],{},"想把 Telegram、Discord、邮件等接进一个轻量网关",[36,46,47],{},"想在低资源机器上跑自托管助手",[29,49,50],{"id":50},"核心特性",[33,52,53,60,66,72,78,84],{},[36,54,55,59],{},[56,57,58],"strong",{},"超轻量","：核心代码仅 ~4,000 行，启动快、资源占用低",[36,61,62,65],{},[56,63,64],{},"易于研究","：代码清晰易读，适合学习和二次开发",[36,67,68,71],{},[56,69,70],{},"多平台支持","：Telegram、Discord、WhatsApp、Feishu、Slack、Email 等",[36,73,74,77],{},[56,75,76],{},"多模型支持","：11+ LLM 提供商，包括 OpenRouter、Claude、GPT、DeepSeek、Gemini 等",[36,79,80,83],{},[56,81,82],{},"MCP 集成","：支持 Model Context Protocol 工具服务器",[36,85,86,89],{},[56,87,88],{},"定时任务","：内置 Cron 和心跳机制",[29,91,92],{"id":92},"快速开始",[94,95,96],"h3",{"id":96},"安装",[98,99,104],"pre",{"className":100,"code":101,"language":102,"meta":103,"style":103},"language-bash shiki shiki-themes github-light github-dark","# 使用 uv（推荐，快速稳定）\nuv pip install nanobot-ai\n\n# 或从 PyPI 安装\npip install nanobot-ai\n\n# 或从源码安装（最新功能）\ngit clone https:\u002F\u002Fgithub.com\u002FHKUDS\u002Fnanobot\ncd nanobot\npip install -e .\n","bash","",[105,106,107,116,133,140,146,156,161,167,179,189],"code",{"__ignoreMap":103},[108,109,112],"span",{"class":110,"line":111},"line",1,[108,113,115],{"class":114},"sJ8bj","# 使用 uv（推荐，快速稳定）\n",[108,117,119,123,127,130],{"class":110,"line":118},2,[108,120,122],{"class":121},"sScJk","uv",[108,124,126],{"class":125},"sZZnC"," pip",[108,128,129],{"class":125}," install",[108,131,132],{"class":125}," nanobot-ai\n",[108,134,136],{"class":110,"line":135},3,[108,137,139],{"emptyLinePlaceholder":138},true,"\n",[108,141,143],{"class":110,"line":142},4,[108,144,145],{"class":114},"# 或从 PyPI 安装\n",[108,147,149,152,154],{"class":110,"line":148},5,[108,150,151],{"class":121},"pip",[108,153,129],{"class":125},[108,155,132],{"class":125},[108,157,159],{"class":110,"line":158},6,[108,160,139],{"emptyLinePlaceholder":138},[108,162,164],{"class":110,"line":163},7,[108,165,166],{"class":114},"# 或从源码安装（最新功能）\n",[108,168,170,173,176],{"class":110,"line":169},8,[108,171,172],{"class":121},"git",[108,174,175],{"class":125}," clone",[108,177,178],{"class":125}," https:\u002F\u002Fgithub.com\u002FHKUDS\u002Fnanobot\n",[108,180,182,186],{"class":110,"line":181},9,[108,183,185],{"class":184},"sj4cs","cd",[108,187,188],{"class":125}," nanobot\n",[108,190,192,194,196,199],{"class":110,"line":191},10,[108,193,151],{"class":121},[108,195,129],{"class":125},[108,197,198],{"class":184}," -e",[108,200,201],{"class":125}," .\n",[94,203,204],{"id":204},"初始化",[98,206,208],{"className":100,"code":207,"language":102,"meta":103,"style":103},"nanobot onboard\n",[105,209,210],{"__ignoreMap":103},[108,211,212,215],{"class":110,"line":111},[108,213,214],{"class":121},"nanobot",[108,216,217],{"class":125}," onboard\n",[94,219,220],{"id":220},"配置",[22,222,223,224,227],{},"编辑 ",[105,225,226],{},"~\u002F.nanobot\u002Fconfig.json","：",[98,229,233],{"className":230,"code":231,"language":232,"meta":103,"style":103},"language-json shiki shiki-themes github-light github-dark","{\n  \"providers\": {\n    \"openrouter\": {\n      \"apiKey\": \"sk-or-v1-xxx\"\n    }\n  },\n  \"model\": \"anthropic\u002Fclaude-3.5-sonnet\"\n}\n","json",[105,234,235,241,249,256,267,272,277,287],{"__ignoreMap":103},[108,236,237],{"class":110,"line":111},[108,238,240],{"class":239},"sVt8B","{\n",[108,242,243,246],{"class":110,"line":118},[108,244,245],{"class":184},"  \"providers\"",[108,247,248],{"class":239},": {\n",[108,250,251,254],{"class":110,"line":135},[108,252,253],{"class":184},"    \"openrouter\"",[108,255,248],{"class":239},[108,257,258,261,264],{"class":110,"line":142},[108,259,260],{"class":184},"      \"apiKey\"",[108,262,263],{"class":239},": ",[108,265,266],{"class":125},"\"sk-or-v1-xxx\"\n",[108,268,269],{"class":110,"line":148},[108,270,271],{"class":239},"    }\n",[108,273,274],{"class":110,"line":158},[108,275,276],{"class":239},"  },\n",[108,278,279,282,284],{"class":110,"line":163},[108,280,281],{"class":184},"  \"model\"",[108,283,263],{"class":239},[108,285,286],{"class":125},"\"anthropic\u002Fclaude-3.5-sonnet\"\n",[108,288,289],{"class":110,"line":169},[108,290,291],{"class":239},"}\n",[94,293,294],{"id":294},"启动",[98,296,298],{"className":100,"code":297,"language":102,"meta":103,"style":103},"# CLI 交互模式\nnanobot agent\n\n# 后台网关（用于聊天平台集成）\nnanobot gateway\n",[105,299,300,305,312,316,321],{"__ignoreMap":103},[108,301,302],{"class":110,"line":111},[108,303,304],{"class":114},"# CLI 交互模式\n",[108,306,307,309],{"class":110,"line":118},[108,308,214],{"class":121},[108,310,311],{"class":125}," agent\n",[108,313,314],{"class":110,"line":135},[108,315,139],{"emptyLinePlaceholder":138},[108,317,318],{"class":110,"line":142},[108,319,320],{"class":114},"# 后台网关（用于聊天平台集成）\n",[108,322,323,325],{"class":110,"line":148},[108,324,214],{"class":121},[108,326,327],{"class":125}," gateway\n",[29,329,330],{"id":330},"聊天平台集成",[94,332,334],{"id":333},"telegram推荐","Telegram（推荐）",[336,337,338,349],"ol",{},[36,339,340,341,348],{},"向 ",[342,343,347],"a",{"href":344,"rel":345},"https:\u002F\u002Ft.me\u002FBotFather",[346],"nofollow","@BotFather"," 创建机器人获取 token",[36,350,351,352,227],{},"配置 ",[105,353,226],{},[98,355,357],{"className":230,"code":356,"language":232,"meta":103,"style":103},"{\n  \"channels\": {\n    \"telegram\": {\n      \"enabled\": true,\n      \"botToken\": \"123456:ABC-DEF...\",\n      \"allowFrom\": [\"your_user_id\"]\n    }\n  }\n}\n",[105,358,359,363,370,377,390,402,416,420,425],{"__ignoreMap":103},[108,360,361],{"class":110,"line":111},[108,362,240],{"class":239},[108,364,365,368],{"class":110,"line":118},[108,366,367],{"class":184},"  \"channels\"",[108,369,248],{"class":239},[108,371,372,375],{"class":110,"line":135},[108,373,374],{"class":184},"    \"telegram\"",[108,376,248],{"class":239},[108,378,379,382,384,387],{"class":110,"line":142},[108,380,381],{"class":184},"      \"enabled\"",[108,383,263],{"class":239},[108,385,386],{"class":184},"true",[108,388,389],{"class":239},",\n",[108,391,392,395,397,400],{"class":110,"line":148},[108,393,394],{"class":184},"      \"botToken\"",[108,396,263],{"class":239},[108,398,399],{"class":125},"\"123456:ABC-DEF...\"",[108,401,389],{"class":239},[108,403,404,407,410,413],{"class":110,"line":158},[108,405,406],{"class":184},"      \"allowFrom\"",[108,408,409],{"class":239},": [",[108,411,412],{"class":125},"\"your_user_id\"",[108,414,415],{"class":239},"]\n",[108,417,418],{"class":110,"line":163},[108,419,271],{"class":239},[108,421,422],{"class":110,"line":169},[108,423,424],{"class":239},"  }\n",[108,426,427],{"class":110,"line":181},[108,428,291],{"class":239},[336,430,431],{"start":135},[36,432,433],{},"启动网关：",[98,435,437],{"className":100,"code":436,"language":102,"meta":103,"style":103},"nanobot gateway\n",[105,438,439],{"__ignoreMap":103},[108,440,441,443],{"class":110,"line":111},[108,442,214],{"class":121},[108,444,327],{"class":125},[94,446,448],{"id":447},"discord","Discord",[336,450,451,460,463],{},[36,452,453,454,459],{},"在 ",[342,455,458],{"href":456,"rel":457},"https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications",[346],"Discord Developer Portal"," 创建应用",[36,461,462],{},"启用 Message Content Intent",[36,464,465],{},"配置：",[98,467,469],{"className":230,"code":468,"language":232,"meta":103,"style":103},"{\n  \"channels\": {\n    \"discord\": {\n      \"enabled\": true,\n      \"botToken\": \"MTIzNDU2...\",\n      \"allowFrom\": [\"your_user_id\"]\n    }\n  }\n}\n",[105,470,471,475,481,488,498,509,519,523,527],{"__ignoreMap":103},[108,472,473],{"class":110,"line":111},[108,474,240],{"class":239},[108,476,477,479],{"class":110,"line":118},[108,478,367],{"class":184},[108,480,248],{"class":239},[108,482,483,486],{"class":110,"line":135},[108,484,485],{"class":184},"    \"discord\"",[108,487,248],{"class":239},[108,489,490,492,494,496],{"class":110,"line":142},[108,491,381],{"class":184},[108,493,263],{"class":239},[108,495,386],{"class":184},[108,497,389],{"class":239},[108,499,500,502,504,507],{"class":110,"line":148},[108,501,394],{"class":184},[108,503,263],{"class":239},[108,505,506],{"class":125},"\"MTIzNDU2...\"",[108,508,389],{"class":239},[108,510,511,513,515,517],{"class":110,"line":158},[108,512,406],{"class":184},[108,514,409],{"class":239},[108,516,412],{"class":125},[108,518,415],{"class":239},[108,520,521],{"class":110,"line":163},[108,522,271],{"class":239},[108,524,525],{"class":110,"line":169},[108,526,424],{"class":239},[108,528,529],{"class":110,"line":181},[108,530,291],{"class":239},[94,532,534],{"id":533},"whatsapp","WhatsApp",[22,536,537],{},"需要 Node.js ≥18：",[98,539,541],{"className":100,"code":540,"language":102,"meta":103,"style":103},"# 终端 1：链接设备\nnanobot channels login\n\n# 终端 2：启动网关\nnanobot gateway\n",[105,542,543,548,558,562,567],{"__ignoreMap":103},[108,544,545],{"class":110,"line":111},[108,546,547],{"class":114},"# 终端 1：链接设备\n",[108,549,550,552,555],{"class":110,"line":118},[108,551,214],{"class":121},[108,553,554],{"class":125}," channels",[108,556,557],{"class":125}," login\n",[108,559,560],{"class":110,"line":135},[108,561,139],{"emptyLinePlaceholder":138},[108,563,564],{"class":110,"line":142},[108,565,566],{"class":114},"# 终端 2：启动网关\n",[108,568,569,571],{"class":110,"line":148},[108,570,214],{"class":121},[108,572,327],{"class":125},[22,574,575],{},"扫描二维码完成配置。",[94,577,579],{"id":578},"feishu飞书","Feishu（飞书）",[22,581,582],{},"使用 WebSocket 长连接，无需公网 IP：",[98,584,586],{"className":230,"code":585,"language":232,"meta":103,"style":103},"{\n  \"channels\": {\n    \"feishu\": {\n      \"enabled\": true,\n      \"appId\": \"cli_xxx\",\n      \"appSecret\": \"xxx\",\n      \"allowFrom\": []\n    }\n  }\n}\n",[105,587,588,592,598,605,615,627,639,646,650,654],{"__ignoreMap":103},[108,589,590],{"class":110,"line":111},[108,591,240],{"class":239},[108,593,594,596],{"class":110,"line":118},[108,595,367],{"class":184},[108,597,248],{"class":239},[108,599,600,603],{"class":110,"line":135},[108,601,602],{"class":184},"    \"feishu\"",[108,604,248],{"class":239},[108,606,607,609,611,613],{"class":110,"line":142},[108,608,381],{"class":184},[108,610,263],{"class":239},[108,612,386],{"class":184},[108,614,389],{"class":239},[108,616,617,620,622,625],{"class":110,"line":148},[108,618,619],{"class":184},"      \"appId\"",[108,621,263],{"class":239},[108,623,624],{"class":125},"\"cli_xxx\"",[108,626,389],{"class":239},[108,628,629,632,634,637],{"class":110,"line":158},[108,630,631],{"class":184},"      \"appSecret\"",[108,633,263],{"class":239},[108,635,636],{"class":125},"\"xxx\"",[108,638,389],{"class":239},[108,640,641,643],{"class":110,"line":163},[108,642,406],{"class":184},[108,644,645],{"class":239},": []\n",[108,647,648],{"class":110,"line":169},[108,649,271],{"class":239},[108,651,652],{"class":110,"line":181},[108,653,424],{"class":239},[108,655,656],{"class":110,"line":191},[108,657,291],{"class":239},[94,659,661],{"id":660},"email","Email",[22,663,664],{},"给 nanobot 分配专用邮箱账号：",[98,666,668],{"className":230,"code":667,"language":232,"meta":103,"style":103},"{\n  \"channels\": {\n    \"email\": {\n      \"enabled\": true,\n      \"consentGranted\": true,\n      \"imapHost\": \"imap.gmail.com\",\n      \"imapPort\": 993,\n      \"imapUsername\": \"nanobot@gmail.com\",\n      \"imapPassword\": \"app-password\",\n      \"smtpHost\": \"smtp.gmail.com\",\n      \"smtpPort\": 587,\n      \"smtpUsername\": \"nanobot@gmail.com\",\n      \"smtpPassword\": \"app-password\",\n      \"fromAddress\": \"nanobot@gmail.com\",\n      \"allowFrom\": [\"your-email@gmail.com\"]\n    }\n  }\n}\n",[105,669,670,674,680,687,697,708,720,732,744,756,768,781,793,805,817,829,834,839],{"__ignoreMap":103},[108,671,672],{"class":110,"line":111},[108,673,240],{"class":239},[108,675,676,678],{"class":110,"line":118},[108,677,367],{"class":184},[108,679,248],{"class":239},[108,681,682,685],{"class":110,"line":135},[108,683,684],{"class":184},"    \"email\"",[108,686,248],{"class":239},[108,688,689,691,693,695],{"class":110,"line":142},[108,690,381],{"class":184},[108,692,263],{"class":239},[108,694,386],{"class":184},[108,696,389],{"class":239},[108,698,699,702,704,706],{"class":110,"line":148},[108,700,701],{"class":184},"      \"consentGranted\"",[108,703,263],{"class":239},[108,705,386],{"class":184},[108,707,389],{"class":239},[108,709,710,713,715,718],{"class":110,"line":158},[108,711,712],{"class":184},"      \"imapHost\"",[108,714,263],{"class":239},[108,716,717],{"class":125},"\"imap.gmail.com\"",[108,719,389],{"class":239},[108,721,722,725,727,730],{"class":110,"line":163},[108,723,724],{"class":184},"      \"imapPort\"",[108,726,263],{"class":239},[108,728,729],{"class":184},"993",[108,731,389],{"class":239},[108,733,734,737,739,742],{"class":110,"line":169},[108,735,736],{"class":184},"      \"imapUsername\"",[108,738,263],{"class":239},[108,740,741],{"class":125},"\"nanobot@gmail.com\"",[108,743,389],{"class":239},[108,745,746,749,751,754],{"class":110,"line":181},[108,747,748],{"class":184},"      \"imapPassword\"",[108,750,263],{"class":239},[108,752,753],{"class":125},"\"app-password\"",[108,755,389],{"class":239},[108,757,758,761,763,766],{"class":110,"line":191},[108,759,760],{"class":184},"      \"smtpHost\"",[108,762,263],{"class":239},[108,764,765],{"class":125},"\"smtp.gmail.com\"",[108,767,389],{"class":239},[108,769,771,774,776,779],{"class":110,"line":770},11,[108,772,773],{"class":184},"      \"smtpPort\"",[108,775,263],{"class":239},[108,777,778],{"class":184},"587",[108,780,389],{"class":239},[108,782,784,787,789,791],{"class":110,"line":783},12,[108,785,786],{"class":184},"      \"smtpUsername\"",[108,788,263],{"class":239},[108,790,741],{"class":125},[108,792,389],{"class":239},[108,794,796,799,801,803],{"class":110,"line":795},13,[108,797,798],{"class":184},"      \"smtpPassword\"",[108,800,263],{"class":239},[108,802,753],{"class":125},[108,804,389],{"class":239},[108,806,808,811,813,815],{"class":110,"line":807},14,[108,809,810],{"class":184},"      \"fromAddress\"",[108,812,263],{"class":239},[108,814,741],{"class":125},[108,816,389],{"class":239},[108,818,820,822,824,827],{"class":110,"line":819},15,[108,821,406],{"class":184},[108,823,409],{"class":239},[108,825,826],{"class":125},"\"your-email@gmail.com\"",[108,828,415],{"class":239},[108,830,832],{"class":110,"line":831},16,[108,833,271],{"class":239},[108,835,837],{"class":110,"line":836},17,[108,838,424],{"class":239},[108,840,842],{"class":110,"line":841},18,[108,843,291],{"class":239},[29,845,847],{"id":846},"llm-提供商配置","LLM 提供商配置",[94,849,851],{"id":850},"openrouter推荐","OpenRouter（推荐）",[22,853,854],{},"访问所有主流模型的统一网关：",[98,856,857],{"className":230,"code":231,"language":232,"meta":103,"style":103},[105,858,859,863,869,875,883,887,891,899],{"__ignoreMap":103},[108,860,861],{"class":110,"line":111},[108,862,240],{"class":239},[108,864,865,867],{"class":110,"line":118},[108,866,245],{"class":184},[108,868,248],{"class":239},[108,870,871,873],{"class":110,"line":135},[108,872,253],{"class":184},[108,874,248],{"class":239},[108,876,877,879,881],{"class":110,"line":142},[108,878,260],{"class":184},[108,880,263],{"class":239},[108,882,266],{"class":125},[108,884,885],{"class":110,"line":148},[108,886,271],{"class":239},[108,888,889],{"class":110,"line":158},[108,890,276],{"class":239},[108,892,893,895,897],{"class":110,"line":163},[108,894,281],{"class":184},[108,896,263],{"class":239},[108,898,286],{"class":125},[108,900,901],{"class":110,"line":169},[108,902,291],{"class":239},[94,904,906],{"id":905},"anthropic-claude","Anthropic Claude",[98,908,910],{"className":230,"code":909,"language":232,"meta":103,"style":103},"{\n  \"providers\": {\n    \"anthropic\": {\n      \"apiKey\": \"sk-ant-xxx\"\n    }\n  },\n  \"model\": \"claude-3.5-sonnet-20241022\"\n}\n",[105,911,912,916,922,929,938,942,946,955],{"__ignoreMap":103},[108,913,914],{"class":110,"line":111},[108,915,240],{"class":239},[108,917,918,920],{"class":110,"line":118},[108,919,245],{"class":184},[108,921,248],{"class":239},[108,923,924,927],{"class":110,"line":135},[108,925,926],{"class":184},"    \"anthropic\"",[108,928,248],{"class":239},[108,930,931,933,935],{"class":110,"line":142},[108,932,260],{"class":184},[108,934,263],{"class":239},[108,936,937],{"class":125},"\"sk-ant-xxx\"\n",[108,939,940],{"class":110,"line":148},[108,941,271],{"class":239},[108,943,944],{"class":110,"line":158},[108,945,276],{"class":239},[108,947,948,950,952],{"class":110,"line":163},[108,949,281],{"class":184},[108,951,263],{"class":239},[108,953,954],{"class":125},"\"claude-3.5-sonnet-20241022\"\n",[108,956,957],{"class":110,"line":169},[108,958,291],{"class":239},[94,960,962],{"id":961},"openai-codexoauth","OpenAI Codex（OAuth）",[22,964,965],{},"需要 ChatGPT Plus 或 Pro 订阅：",[98,967,969],{"className":100,"code":968,"language":102,"meta":103,"style":103},"nanobot provider login openai-codex\n",[105,970,971],{"__ignoreMap":103},[108,972,973,975,978,981],{"class":110,"line":111},[108,974,214],{"class":121},[108,976,977],{"class":125}," provider",[108,979,980],{"class":125}," login",[108,982,983],{"class":125}," openai-codex\n",[94,985,987],{"id":986},"本地模型vllm","本地模型（vLLM）",[98,989,991],{"className":100,"code":990,"language":102,"meta":103,"style":103},"# 启动 vLLM 服务器\nvllm serve Qwen\u002FQwen2.5-7B-Instruct --port 8000\n",[105,992,993,998],{"__ignoreMap":103},[108,994,995],{"class":110,"line":111},[108,996,997],{"class":114},"# 启动 vLLM 服务器\n",[108,999,1000,1003,1006,1009,1012],{"class":110,"line":118},[108,1001,1002],{"class":121},"vllm",[108,1004,1005],{"class":125}," serve",[108,1007,1008],{"class":125}," Qwen\u002FQwen2.5-7B-Instruct",[108,1010,1011],{"class":184}," --port",[108,1013,1014],{"class":184}," 8000\n",[22,1016,465],{},[98,1018,1020],{"className":230,"code":1019,"language":232,"meta":103,"style":103},"{\n  \"providers\": {\n    \"vllm\": {\n      \"apiKey\": \"no-key\",\n      \"apiBase\": \"http:\u002F\u002Flocalhost:8000\u002Fv1\"\n    }\n  },\n  \"model\": \"Qwen\u002FQwen2.5-7B-Instruct\"\n}\n",[105,1021,1022,1026,1032,1039,1050,1060,1064,1068,1077],{"__ignoreMap":103},[108,1023,1024],{"class":110,"line":111},[108,1025,240],{"class":239},[108,1027,1028,1030],{"class":110,"line":118},[108,1029,245],{"class":184},[108,1031,248],{"class":239},[108,1033,1034,1037],{"class":110,"line":135},[108,1035,1036],{"class":184},"    \"vllm\"",[108,1038,248],{"class":239},[108,1040,1041,1043,1045,1048],{"class":110,"line":142},[108,1042,260],{"class":184},[108,1044,263],{"class":239},[108,1046,1047],{"class":125},"\"no-key\"",[108,1049,389],{"class":239},[108,1051,1052,1055,1057],{"class":110,"line":148},[108,1053,1054],{"class":184},"      \"apiBase\"",[108,1056,263],{"class":239},[108,1058,1059],{"class":125},"\"http:\u002F\u002Flocalhost:8000\u002Fv1\"\n",[108,1061,1062],{"class":110,"line":158},[108,1063,271],{"class":239},[108,1065,1066],{"class":110,"line":163},[108,1067,276],{"class":239},[108,1069,1070,1072,1074],{"class":110,"line":169},[108,1071,281],{"class":184},[108,1073,263],{"class":239},[108,1075,1076],{"class":125},"\"Qwen\u002FQwen2.5-7B-Instruct\"\n",[108,1078,1079],{"class":110,"line":181},[108,1080,291],{"class":239},[94,1082,1084],{"id":1083},"自定义-openai-兼容端点","自定义 OpenAI 兼容端点",[98,1086,1088],{"className":230,"code":1087,"language":232,"meta":103,"style":103},"{\n  \"providers\": {\n    \"custom\": {\n      \"apiKey\": \"your-key\",\n      \"apiBase\": \"https:\u002F\u002Fapi.example.com\u002Fv1\"\n    }\n  },\n  \"model\": \"custom\u002Fyour-model-name\"\n}\n",[105,1089,1090,1094,1100,1107,1118,1127,1131,1135,1144],{"__ignoreMap":103},[108,1091,1092],{"class":110,"line":111},[108,1093,240],{"class":239},[108,1095,1096,1098],{"class":110,"line":118},[108,1097,245],{"class":184},[108,1099,248],{"class":239},[108,1101,1102,1105],{"class":110,"line":135},[108,1103,1104],{"class":184},"    \"custom\"",[108,1106,248],{"class":239},[108,1108,1109,1111,1113,1116],{"class":110,"line":142},[108,1110,260],{"class":184},[108,1112,263],{"class":239},[108,1114,1115],{"class":125},"\"your-key\"",[108,1117,389],{"class":239},[108,1119,1120,1122,1124],{"class":110,"line":148},[108,1121,1054],{"class":184},[108,1123,263],{"class":239},[108,1125,1126],{"class":125},"\"https:\u002F\u002Fapi.example.com\u002Fv1\"\n",[108,1128,1129],{"class":110,"line":158},[108,1130,271],{"class":239},[108,1132,1133],{"class":110,"line":163},[108,1134,276],{"class":239},[108,1136,1137,1139,1141],{"class":110,"line":169},[108,1138,281],{"class":184},[108,1140,263],{"class":239},[108,1142,1143],{"class":125},"\"custom\u002Fyour-model-name\"\n",[108,1145,1146],{"class":110,"line":181},[108,1147,291],{"class":239},[29,1149,1151],{"id":1150},"mcp-支持","MCP 支持",[22,1153,1154],{},"连接外部工具服务器：",[98,1156,1158],{"className":230,"code":1157,"language":232,"meta":103,"style":103},"{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@modelcontextprotocol\u002Fserver-filesystem\",\n        \"\u002Fpath\u002Fto\u002Fworkspace\"\n      ]\n    },\n    \"brave-search\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-server-brave-search\"],\n      \"env\": {\n        \"BRAVE_API_KEY\": \"BSA...\"\n      }\n    },\n    \"custom-api\": {\n      \"url\": \"https:\u002F\u002Fmcp.example.com\u002Fsse\",\n      \"headers\": {\n        \"Authorization\": \"Bearer token\"\n      }\n    }\n  }\n}\n",[105,1159,1160,1164,1171,1178,1190,1198,1205,1212,1217,1222,1227,1234,1245,1257,1264,1274,1279,1283,1290,1303,1311,1322,1327,1332,1337],{"__ignoreMap":103},[108,1161,1162],{"class":110,"line":111},[108,1163,240],{"class":239},[108,1165,1166,1169],{"class":110,"line":118},[108,1167,1168],{"class":184},"  \"mcpServers\"",[108,1170,248],{"class":239},[108,1172,1173,1176],{"class":110,"line":135},[108,1174,1175],{"class":184},"    \"filesystem\"",[108,1177,248],{"class":239},[108,1179,1180,1183,1185,1188],{"class":110,"line":142},[108,1181,1182],{"class":184},"      \"command\"",[108,1184,263],{"class":239},[108,1186,1187],{"class":125},"\"npx\"",[108,1189,389],{"class":239},[108,1191,1192,1195],{"class":110,"line":148},[108,1193,1194],{"class":184},"      \"args\"",[108,1196,1197],{"class":239},": [\n",[108,1199,1200,1203],{"class":110,"line":158},[108,1201,1202],{"class":125},"        \"-y\"",[108,1204,389],{"class":239},[108,1206,1207,1210],{"class":110,"line":163},[108,1208,1209],{"class":125},"        \"@modelcontextprotocol\u002Fserver-filesystem\"",[108,1211,389],{"class":239},[108,1213,1214],{"class":110,"line":169},[108,1215,1216],{"class":125},"        \"\u002Fpath\u002Fto\u002Fworkspace\"\n",[108,1218,1219],{"class":110,"line":181},[108,1220,1221],{"class":239},"      ]\n",[108,1223,1224],{"class":110,"line":191},[108,1225,1226],{"class":239},"    },\n",[108,1228,1229,1232],{"class":110,"line":770},[108,1230,1231],{"class":184},"    \"brave-search\"",[108,1233,248],{"class":239},[108,1235,1236,1238,1240,1243],{"class":110,"line":783},[108,1237,1182],{"class":184},[108,1239,263],{"class":239},[108,1241,1242],{"class":125},"\"uvx\"",[108,1244,389],{"class":239},[108,1246,1247,1249,1251,1254],{"class":110,"line":795},[108,1248,1194],{"class":184},[108,1250,409],{"class":239},[108,1252,1253],{"class":125},"\"mcp-server-brave-search\"",[108,1255,1256],{"class":239},"],\n",[108,1258,1259,1262],{"class":110,"line":807},[108,1260,1261],{"class":184},"      \"env\"",[108,1263,248],{"class":239},[108,1265,1266,1269,1271],{"class":110,"line":819},[108,1267,1268],{"class":184},"        \"BRAVE_API_KEY\"",[108,1270,263],{"class":239},[108,1272,1273],{"class":125},"\"BSA...\"\n",[108,1275,1276],{"class":110,"line":831},[108,1277,1278],{"class":239},"      }\n",[108,1280,1281],{"class":110,"line":836},[108,1282,1226],{"class":239},[108,1284,1285,1288],{"class":110,"line":841},[108,1286,1287],{"class":184},"    \"custom-api\"",[108,1289,248],{"class":239},[108,1291,1293,1296,1298,1301],{"class":110,"line":1292},19,[108,1294,1295],{"class":184},"      \"url\"",[108,1297,263],{"class":239},[108,1299,1300],{"class":125},"\"https:\u002F\u002Fmcp.example.com\u002Fsse\"",[108,1302,389],{"class":239},[108,1304,1306,1309],{"class":110,"line":1305},20,[108,1307,1308],{"class":184},"      \"headers\"",[108,1310,248],{"class":239},[108,1312,1314,1317,1319],{"class":110,"line":1313},21,[108,1315,1316],{"class":184},"        \"Authorization\"",[108,1318,263],{"class":239},[108,1320,1321],{"class":125},"\"Bearer token\"\n",[108,1323,1325],{"class":110,"line":1324},22,[108,1326,1278],{"class":239},[108,1328,1330],{"class":110,"line":1329},23,[108,1331,271],{"class":239},[108,1333,1335],{"class":110,"line":1334},24,[108,1336,424],{"class":239},[108,1338,1340],{"class":110,"line":1339},25,[108,1341,291],{"class":239},[29,1343,88],{"id":88},[94,1345,1346],{"id":1346},"心跳任务",[22,1348,223,1349,227],{},[105,1350,1351],{},"~\u002F.nanobot\u002Fworkspace\u002FHEARTBEAT.md",[98,1353,1357],{"className":1354,"code":1355,"language":1356,"meta":103,"style":103},"language-markdown shiki shiki-themes github-light github-dark","# 每日任务\n\n- 每天早上 8 点总结昨天的 GitHub 活动\n- 每周一提醒本周待办事项\n- 每天检查重要邮件并提醒\n","markdown",[105,1358,1359,1365,1369,1378,1385],{"__ignoreMap":103},[108,1360,1361],{"class":110,"line":111},[108,1362,1364],{"class":1363},"sq-ep","# 每日任务\n",[108,1366,1367],{"class":110,"line":118},[108,1368,139],{"emptyLinePlaceholder":138},[108,1370,1371,1375],{"class":110,"line":135},[108,1372,1374],{"class":1373},"s4XuR","-",[108,1376,1377],{"class":239}," 每天早上 8 点总结昨天的 GitHub 活动\n",[108,1379,1380,1382],{"class":110,"line":142},[108,1381,1374],{"class":1373},[108,1383,1384],{"class":239}," 每周一提醒本周待办事项\n",[108,1386,1387,1389],{"class":110,"line":148},[108,1388,1374],{"class":1373},[108,1390,1391],{"class":239}," 每天检查重要邮件并提醒\n",[22,1393,1394],{},"网关每 30 分钟检查一次，自动执行任务并发送结果到最近活跃的聊天频道。",[29,1396,1398],{"id":1397},"docker-部署","Docker 部署",[98,1400,1402],{"className":100,"code":1401,"language":102,"meta":103,"style":103},"docker run -d \\\n  --name nanobot \\\n  -v ~\u002F.nanobot:\u002Froot\u002F.nanobot \\\n  ghcr.io\u002Fhkuds\u002Fnanobot:latest \\\n  nanobot gateway\n",[105,1403,1404,1418,1428,1438,1445],{"__ignoreMap":103},[108,1405,1406,1409,1412,1415],{"class":110,"line":111},[108,1407,1408],{"class":121},"docker",[108,1410,1411],{"class":125}," run",[108,1413,1414],{"class":184}," -d",[108,1416,1417],{"class":184}," \\\n",[108,1419,1420,1423,1426],{"class":110,"line":118},[108,1421,1422],{"class":184},"  --name",[108,1424,1425],{"class":125}," nanobot",[108,1427,1417],{"class":184},[108,1429,1430,1433,1436],{"class":110,"line":135},[108,1431,1432],{"class":184},"  -v",[108,1434,1435],{"class":125}," ~\u002F.nanobot:\u002Froot\u002F.nanobot",[108,1437,1417],{"class":184},[108,1439,1440,1443],{"class":110,"line":142},[108,1441,1442],{"class":125},"  ghcr.io\u002Fhkuds\u002Fnanobot:latest",[108,1444,1417],{"class":184},[108,1446,1447,1450],{"class":110,"line":148},[108,1448,1449],{"class":125},"  nanobot",[108,1451,327],{"class":125},[22,1453,1454],{},"使用 Docker Compose：",[98,1456,1460],{"className":1457,"code":1458,"language":1459,"meta":103,"style":103},"language-yaml shiki shiki-themes github-light github-dark","services:\n  nanobot:\n    image: ghcr.io\u002Fhkuds\u002Fnanobot:latest\n    container_name: nanobot\n    volumes:\n      - ~\u002F.nanobot:\u002Froot\u002F.nanobot\n    command: nanobot gateway\n    restart: unless-stopped\n","yaml",[105,1461,1462,1471,1477,1487,1497,1504,1512,1521],{"__ignoreMap":103},[108,1463,1464,1468],{"class":110,"line":111},[108,1465,1467],{"class":1466},"s9eBZ","services",[108,1469,1470],{"class":239},":\n",[108,1472,1473,1475],{"class":110,"line":118},[108,1474,1449],{"class":1466},[108,1476,1470],{"class":239},[108,1478,1479,1482,1484],{"class":110,"line":135},[108,1480,1481],{"class":1466},"    image",[108,1483,263],{"class":239},[108,1485,1486],{"class":125},"ghcr.io\u002Fhkuds\u002Fnanobot:latest\n",[108,1488,1489,1492,1494],{"class":110,"line":142},[108,1490,1491],{"class":1466},"    container_name",[108,1493,263],{"class":239},[108,1495,1496],{"class":125},"nanobot\n",[108,1498,1499,1502],{"class":110,"line":148},[108,1500,1501],{"class":1466},"    volumes",[108,1503,1470],{"class":239},[108,1505,1506,1509],{"class":110,"line":158},[108,1507,1508],{"class":239},"      - ",[108,1510,1511],{"class":125},"~\u002F.nanobot:\u002Froot\u002F.nanobot\n",[108,1513,1514,1517,1519],{"class":110,"line":163},[108,1515,1516],{"class":1466},"    command",[108,1518,263],{"class":239},[108,1520,436],{"class":125},[108,1522,1523,1526,1528],{"class":110,"line":169},[108,1524,1525],{"class":1466},"    restart",[108,1527,263],{"class":239},[108,1529,1530],{"class":125},"unless-stopped\n",[29,1532,1534],{"id":1533},"linux-系统服务","Linux 系统服务",[22,1536,1537,1538,227],{},"创建 ",[105,1539,1540],{},"~\u002F.config\u002Fsystemd\u002Fuser\u002Fnanobot-gateway.service",[98,1542,1546],{"className":1543,"code":1544,"language":1545,"meta":103,"style":103},"language-ini shiki shiki-themes github-light github-dark","[Unit]\nDescription=nanobot Gateway\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=\u002Fhome\u002Fuser\u002F.local\u002Fbin\u002Fnanobot gateway\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=default.target\n","ini",[105,1547,1548,1553,1562,1570,1574,1579,1587,1595,1603,1611,1615,1620],{"__ignoreMap":103},[108,1549,1550],{"class":110,"line":111},[108,1551,1552],{"class":121},"[Unit]\n",[108,1554,1555,1559],{"class":110,"line":118},[108,1556,1558],{"class":1557},"szBVR","Description",[108,1560,1561],{"class":239},"=nanobot Gateway\n",[108,1563,1564,1567],{"class":110,"line":135},[108,1565,1566],{"class":1557},"After",[108,1568,1569],{"class":239},"=network.target\n",[108,1571,1572],{"class":110,"line":142},[108,1573,139],{"emptyLinePlaceholder":138},[108,1575,1576],{"class":110,"line":148},[108,1577,1578],{"class":121},"[Service]\n",[108,1580,1581,1584],{"class":110,"line":158},[108,1582,1583],{"class":1557},"Type",[108,1585,1586],{"class":239},"=simple\n",[108,1588,1589,1592],{"class":110,"line":163},[108,1590,1591],{"class":1557},"ExecStart",[108,1593,1594],{"class":239},"=\u002Fhome\u002Fuser\u002F.local\u002Fbin\u002Fnanobot gateway\n",[108,1596,1597,1600],{"class":110,"line":169},[108,1598,1599],{"class":1557},"Restart",[108,1601,1602],{"class":239},"=on-failure\n",[108,1604,1605,1608],{"class":110,"line":181},[108,1606,1607],{"class":1557},"RestartSec",[108,1609,1610],{"class":239},"=10\n",[108,1612,1613],{"class":110,"line":191},[108,1614,139],{"emptyLinePlaceholder":138},[108,1616,1617],{"class":110,"line":770},[108,1618,1619],{"class":121},"[Install]\n",[108,1621,1622,1625],{"class":110,"line":783},[108,1623,1624],{"class":1557},"WantedBy",[108,1626,1627],{"class":239},"=default.target\n",[22,1629,1630],{},"启用服务：",[98,1632,1634],{"className":100,"code":1633,"language":102,"meta":103,"style":103},"systemctl --user daemon-reload\nsystemctl --user enable --now nanobot-gateway\n",[105,1635,1636,1647],{"__ignoreMap":103},[108,1637,1638,1641,1644],{"class":110,"line":111},[108,1639,1640],{"class":121},"systemctl",[108,1642,1643],{"class":184}," --user",[108,1645,1646],{"class":125}," daemon-reload\n",[108,1648,1649,1651,1653,1656,1659],{"class":110,"line":118},[108,1650,1640],{"class":121},[108,1652,1643],{"class":184},[108,1654,1655],{"class":125}," enable",[108,1657,1658],{"class":184}," --now",[108,1660,1661],{"class":125}," nanobot-gateway\n",[29,1663,1664],{"id":1664},"安全配置",[98,1666,1668],{"className":230,"code":1667,"language":232,"meta":103,"style":103},"{\n  \"tools\": {\n    \"restrictToWorkspace\": true,\n    \"exec\": {\n      \"pathAppend\": \"\u002Fusr\u002Fsbin\"\n    }\n  },\n  \"channels\": {\n    \"telegram\": {\n      \"allowFrom\": [\"123456789\"]\n    }\n  }\n}\n",[105,1669,1670,1674,1681,1692,1699,1709,1713,1717,1723,1729,1740,1744,1748],{"__ignoreMap":103},[108,1671,1672],{"class":110,"line":111},[108,1673,240],{"class":239},[108,1675,1676,1679],{"class":110,"line":118},[108,1677,1678],{"class":184},"  \"tools\"",[108,1680,248],{"class":239},[108,1682,1683,1686,1688,1690],{"class":110,"line":135},[108,1684,1685],{"class":184},"    \"restrictToWorkspace\"",[108,1687,263],{"class":239},[108,1689,386],{"class":184},[108,1691,389],{"class":239},[108,1693,1694,1697],{"class":110,"line":142},[108,1695,1696],{"class":184},"    \"exec\"",[108,1698,248],{"class":239},[108,1700,1701,1704,1706],{"class":110,"line":148},[108,1702,1703],{"class":184},"      \"pathAppend\"",[108,1705,263],{"class":239},[108,1707,1708],{"class":125},"\"\u002Fusr\u002Fsbin\"\n",[108,1710,1711],{"class":110,"line":158},[108,1712,271],{"class":239},[108,1714,1715],{"class":110,"line":163},[108,1716,276],{"class":239},[108,1718,1719,1721],{"class":110,"line":169},[108,1720,367],{"class":184},[108,1722,248],{"class":239},[108,1724,1725,1727],{"class":110,"line":181},[108,1726,374],{"class":184},[108,1728,248],{"class":239},[108,1730,1731,1733,1735,1738],{"class":110,"line":191},[108,1732,406],{"class":184},[108,1734,409],{"class":239},[108,1736,1737],{"class":125},"\"123456789\"",[108,1739,415],{"class":239},[108,1741,1742],{"class":110,"line":770},[108,1743,271],{"class":239},[108,1745,1746],{"class":110,"line":783},[108,1747,424],{"class":239},[108,1749,1750],{"class":110,"line":795},[108,1751,291],{"class":239},[33,1753,1754,1760],{},[36,1755,1756,1759],{},[105,1757,1758],{},"restrictToWorkspace","：限制文件操作在工作区目录内",[36,1761,1762,1765],{},[105,1763,1764],{},"allowFrom","：白名单用户 ID，空数组表示允许所有人",[29,1767,1769],{"id":1768},"cli-命令参考","CLI 命令参考",[98,1771,1773],{"className":100,"code":1772,"language":102,"meta":103,"style":103},"nanobot onboard              # 初始化配置\nnanobot agent                # 交互式聊天\nnanobot agent -m \"任务描述\"  # 单次执行\nnanobot agent --logs         # 显示运行日志\nnanobot gateway              # 启动网关\nnanobot status               # 查看状态\nnanobot provider login       # OAuth 登录\nnanobot channels login       # 链接 WhatsApp\nnanobot channels status      # 查看频道状态\n",[105,1774,1775,1785,1795,1810,1822,1832,1842,1853,1864],{"__ignoreMap":103},[108,1776,1777,1779,1782],{"class":110,"line":111},[108,1778,214],{"class":121},[108,1780,1781],{"class":125}," onboard",[108,1783,1784],{"class":114},"              # 初始化配置\n",[108,1786,1787,1789,1792],{"class":110,"line":118},[108,1788,214],{"class":121},[108,1790,1791],{"class":125}," agent",[108,1793,1794],{"class":114},"                # 交互式聊天\n",[108,1796,1797,1799,1801,1804,1807],{"class":110,"line":135},[108,1798,214],{"class":121},[108,1800,1791],{"class":125},[108,1802,1803],{"class":184}," -m",[108,1805,1806],{"class":125}," \"任务描述\"",[108,1808,1809],{"class":114},"  # 单次执行\n",[108,1811,1812,1814,1816,1819],{"class":110,"line":142},[108,1813,214],{"class":121},[108,1815,1791],{"class":125},[108,1817,1818],{"class":184}," --logs",[108,1820,1821],{"class":114},"         # 显示运行日志\n",[108,1823,1824,1826,1829],{"class":110,"line":148},[108,1825,214],{"class":121},[108,1827,1828],{"class":125}," gateway",[108,1830,1831],{"class":114},"              # 启动网关\n",[108,1833,1834,1836,1839],{"class":110,"line":158},[108,1835,214],{"class":121},[108,1837,1838],{"class":125}," status",[108,1840,1841],{"class":114},"               # 查看状态\n",[108,1843,1844,1846,1848,1850],{"class":110,"line":163},[108,1845,214],{"class":121},[108,1847,977],{"class":125},[108,1849,980],{"class":125},[108,1851,1852],{"class":114},"       # OAuth 登录\n",[108,1854,1855,1857,1859,1861],{"class":110,"line":169},[108,1856,214],{"class":121},[108,1858,554],{"class":125},[108,1860,980],{"class":125},[108,1862,1863],{"class":114},"       # 链接 WhatsApp\n",[108,1865,1866,1868,1870,1872],{"class":110,"line":181},[108,1867,214],{"class":121},[108,1869,554],{"class":125},[108,1871,1838],{"class":125},[108,1873,1874],{"class":114},"      # 查看频道状态\n",[29,1876,1877],{"id":1877},"项目结构",[98,1879,1884],{"className":1880,"code":1882,"language":1883},[1881],"language-text","nanobot\u002F\n├── nanobot\u002F\n│   ├── agent\u002F          # 核心代理逻辑\n│   ├── channels\u002F       # 聊天平台集成\n│   ├── providers\u002F      # LLM 提供商\n│   ├── tools\u002F          # 内置工具\n│   ├── mcp\u002F            # MCP 客户端\n│   └── config\u002F         # 配置管理\n├── scripts\u002F            # 辅助脚本\n└── tests\u002F              # 测试\n","text",[105,1885,1882],{"__ignoreMap":103},[29,1887,1889],{"id":1888},"对比-openclaw","对比 OpenClaw",[1891,1892,1893,1908],"table",{},[1894,1895,1896],"thead",{},[1897,1898,1899,1903,1905],"tr",{},[1900,1901,1902],"th",{},"特性",[1900,1904,214],{},[1900,1906,1907],{},"OpenClaw",[1909,1910,1911,1923,1934,1945,1956,1967,1978,1989,2000,2010,2019],"tbody",{},[1897,1912,1913,1917,1920],{},[1914,1915,1916],"td",{},"代码量",[1914,1918,1919],{},"~4,000 行",[1914,1921,1922],{},"~430,000 行",[1897,1924,1925,1928,1931],{},[1914,1926,1927],{},"语言",[1914,1929,1930],{},"Python",[1914,1932,1933],{},"TypeScript",[1897,1935,1936,1939,1942],{},[1914,1937,1938],{},"启动速度",[1914,1940,1941],{},"极快",[1914,1943,1944],{},"较慢",[1897,1946,1947,1950,1953],{},[1914,1948,1949],{},"资源占用",[1914,1951,1952],{},"极低",[1914,1954,1955],{},"中等",[1897,1957,1958,1961,1964],{},[1914,1959,1960],{},"学习曲线",[1914,1962,1963],{},"平缓",[1914,1965,1966],{},"陡峭",[1897,1968,1969,1972,1975],{},[1914,1970,1971],{},"扩展性",[1914,1973,1974],{},"简单直接",[1914,1976,1977],{},"功能丰富",[1897,1979,1980,1983,1986],{},[1914,1981,1982],{},"适用场景",[1914,1984,1985],{},"个人\u002F研究",[1914,1987,1988],{},"生产\u002F企业",[1897,1990,1991,1994,1997],{},[1914,1992,1993],{},"Canvas",[1914,1995,1996],{},"❌",[1914,1998,1999],{},"✅",[1897,2001,2002,2005,2007],{},[1914,2003,2004],{},"语音交互",[1914,2006,1996],{},[1914,2008,2009],{},"✅（macOS\u002FiOS）",[1897,2011,2012,2015,2017],{},[1914,2013,2014],{},"浏览器控制",[1914,2016,1996],{},[1914,2018,1999],{},[1897,2020,2021,2024,2026],{},[1914,2022,2023],{},"多代理路由",[1914,2025,1996],{},[1914,2027,1999],{},[29,2029,2030],{"id":2030},"推荐接入顺序",[22,2032,2033],{},"建议按这个顺序上手：",[336,2035,2036,2039,2042,2045,2048],{},[36,2037,2038],{},"先跑 CLI 模式",[36,2040,2041],{},"再接一个聊天平台",[36,2043,2044],{},"再接一个主力模型提供商",[36,2046,2047],{},"再补 MCP 和定时任务",[36,2049,2050],{},"最后再做 Docker \u002F systemd 长期运行",[29,2052,2053],{"id":2053},"常见问题",[94,2055,2057],{"id":2056},"应该选-nanobot-还是-openclaw","应该选 nanobot 还是 OpenClaw",[22,2059,2060],{},"如果你更看重轻量、易读、快速部署，优先 nanobot；如果你更看重多模态、浏览器控制和更复杂的自动化能力，优先 OpenClaw。",[94,2062,2064],{"id":2063},"平台接好了但体验不稳定","平台接好了，但体验不稳定",[22,2066,2067],{},"优先排查：",[33,2069,2070,2073,2076,2079],{},[36,2071,2072],{},"模型提供商是否稳定",[36,2074,2075],{},"消息平台 Token 和权限是否正确",[36,2077,2078],{},"定时任务和心跳是否配置冲突",[36,2080,2081],{},"运行环境是否长期在线",[94,2083,2084],{"id":2084},"适不适合作为生产级团队系统",[22,2086,2087],{},"更适合作为个人助手、研究原型或轻量自托管工具；如果要承载更复杂团队级流程，建议先评估权限边界、日志和可维护性。",[29,2089,2090],{"id":2090},"延伸阅读",[33,2092,2093,2099,2105],{},[36,2094,2095],{},[342,2096,2098],{"href":2097},"\u002Fdocs\u002Fopenclaw","OpenClaw 文档",[36,2100,2101],{},[342,2102,2104],{"href":2103},"\u002Fdocs\u002Fai-agent-comparison","AI 代理对比指南",[36,2106,2107],{},[342,2108,2110],{"href":2109},"\u002Fdocs\u002Fai-agent-security","AI 代理安全配置指南",[29,2112,2113],{"id":2113},"参考链接",[33,2115,2116,2123,2130,2137,2144],{},[36,2117,2118],{},[342,2119,2122],{"href":2120,"rel":2121},"https:\u002F\u002Fgithub.com\u002FHKUDS\u002Fnanobot",[346],"GitHub 仓库",[36,2124,2125],{},[342,2126,2129],{"href":2127,"rel":2128},"https:\u002F\u002Fnanobot.club\u002F",[346],"官方网站",[36,2131,2132],{},[342,2133,2136],{"href":2134,"rel":2135},"https:\u002F\u002Fgithub.com\u002FHKUDS\u002Fnanobot\u002Freleases",[346],"发布说明",[36,2138,2139],{},[342,2140,2143],{"href":2141,"rel":2142},"https:\u002F\u002Fopenrouter.ai\u002Fmodels",[346],"OpenRouter 模型列表",[36,2145,2146],{},[342,2147,2150],{"href":2148,"rel":2149},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",[346],"MCP 协议文档",[2152,2153,2154],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sq-ep, html code.shiki .sq-ep{--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":103,"searchDepth":118,"depth":118,"links":2156},[2157,2158,2159,2165,2172,2179,2180,2183,2184,2185,2186,2187,2188,2189,2190,2195,2196],{"id":31,"depth":118,"text":31},{"id":50,"depth":118,"text":50},{"id":92,"depth":118,"text":92,"children":2160},[2161,2162,2163,2164],{"id":96,"depth":135,"text":96},{"id":204,"depth":135,"text":204},{"id":220,"depth":135,"text":220},{"id":294,"depth":135,"text":294},{"id":330,"depth":118,"text":330,"children":2166},[2167,2168,2169,2170,2171],{"id":333,"depth":135,"text":334},{"id":447,"depth":135,"text":448},{"id":533,"depth":135,"text":534},{"id":578,"depth":135,"text":579},{"id":660,"depth":135,"text":661},{"id":846,"depth":118,"text":847,"children":2173},[2174,2175,2176,2177,2178],{"id":850,"depth":135,"text":851},{"id":905,"depth":135,"text":906},{"id":961,"depth":135,"text":962},{"id":986,"depth":135,"text":987},{"id":1083,"depth":135,"text":1084},{"id":1150,"depth":118,"text":1151},{"id":88,"depth":118,"text":88,"children":2181},[2182],{"id":1346,"depth":135,"text":1346},{"id":1397,"depth":118,"text":1398},{"id":1533,"depth":118,"text":1534},{"id":1664,"depth":118,"text":1664},{"id":1768,"depth":118,"text":1769},{"id":1877,"depth":118,"text":1877},{"id":1888,"depth":118,"text":1889},{"id":2030,"depth":118,"text":2030},{"id":2053,"depth":118,"text":2053,"children":2191},[2192,2193,2194],{"id":2056,"depth":135,"text":2057},{"id":2063,"depth":135,"text":2064},{"id":2084,"depth":135,"text":2084},{"id":2090,"depth":118,"text":2090},{"id":2113,"depth":118,"text":2113},{"path":2198,"title":2199,"description":2200,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fmcp-guide","MCP 模型上下文协议","Model Context Protocol 概念、服务器配置、常用 MCP 服务器与自定义开发",{"path":2097,"title":2202,"description":2203,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"OpenClaw - 个人 AI 助手网关","自托管的 AI 助手，连接 WhatsApp、Telegram、Discord 等平台，支持浏览器控制和语音交互",[2205,2206,2207],"希望把零散经验整理成长期可复用工作流的人","正在使用 AI 工具、Agent 或自动化工作流的人","希望阅读时顺手建立自己的操作清单或收藏体系的人",[2209,2210,2211],"先浏览标题、摘要和目录，带着问题阅读会更高效","确认模型供应商、API Key、CLI 工具链与本地资源是否已准备好","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[2213,2218,2222,2226],{"path":2214,"title":2215,"description":2216,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":2217,"publishedAt":2217,"icon":13},"\u002Fdocs\u002Fskills-guide","AI Agent Skills 指南","理解 skills 的作用、目录结构、编写方式，以及它与 MCP 的关系","2026-03-08",{"path":2219,"title":2220,"description":2221,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fai-local-models","本地 AI 模型部署","Ollama、LM Studio、vLLM 本地大模型运行与 API 调用",{"path":2223,"title":2224,"description":2225,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Flocal-llm-deployment","本地 LLM 部署指南","使用 Ollama、vLLM、LM Studio 在本地运行大语言模型",{"path":2227,"title":2228,"description":2229,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fai-coding-rules","AI 编程助手规则配置","Cursor Rules、Claude Projects、Kiro Steering 等 AI 编程助手的规则与上下文配置",1776215713447]