[{"data":1,"prerenderedAt":1173},["ShallowReactive",2],{"page-/post/zzao/openclaw/openclaw-install-macos":3,"surrounding-page":1164},{"id":4,"title":5,"author":6,"body":7,"date":1150,"description":1151,"extension":1152,"group":1153,"lastmod":1153,"meta":1154,"navigation":1156,"path":1157,"rawbody":1158,"seo":1159,"showTitle":1153,"stem":1160,"tags":1161,"versions":1153,"__hash__":1163},"content/post/zzao/openclaw/openclaw-install-macos.md","OpenClaw 安装入门（macOS）","阿康",{"type":8,"value":9,"toc":1129},"minimark",[10,14,27,34,41,45,70,73,99,102,105,151,154,157,162,169,193,196,209,215,219,237,240,266,269,272,276,293,296,308,318,322,325,340,343,355,362,366,381,384,398,401,404,407,446,449,462,465,470,473,505,508,520,524,527,545,548,562,565,582,585,592,595,612,616,619,633,636,653,656,684,687,701,704,707,714,717,720,727,730,733,750,753,769,775,778,781,804,807,817,821,824,831,943,950,1008,1011,1014,1017,1043,1046,1068,1071,1122,1125],[11,12,5],"h1",{"id":13},"openclaw-安装入门macos",[15,16,17,18,22,23,26],"p",{},"这篇只讲一件事。\n把 ",[19,20,21],"code",{},"OpenClaw"," 在 ",[19,24,25],{},"macOS"," 上装起来。",[15,28,29,30,33],{},"如果你用的是 ",[19,31,32],{},"Windows","，去看另一篇。",[15,35,36,37,40],{},"这篇基于 ",[19,38,39],{},"OpenClaw 2026.3.2","。",[42,43,44],"h2",{"id":44},"你需要准备什么",[46,47,48,54,57,67],"ul",{},[49,50,51,52],"li",{},"一台 ",[19,53,25],{},[49,55,56],{},"能开的终端",[49,58,59,60,63,64],{},"网络能访问 ",[19,61,62],{},"GitHub","、",[19,65,66],{},"npm",[49,68,69],{},"如果你平时靠代理上网，那就先把代理配好",[15,71,72],{},"先别急着装。\n先确认网络是不是通的。",[74,75,80],"pre",{"className":76,"code":77,"language":78,"meta":79,"style":79},"language-bash shiki shiki-themes github-light","curl -I https://google.com\n","bash","",[19,81,82],{"__ignoreMap":79},[83,84,87,91,95],"span",{"class":85,"line":86},"line",1,[83,88,90],{"class":89},"s7eDp","curl",[83,92,94],{"class":93},"sYu0t"," -I",[83,96,98],{"class":97},"sYBdl"," https://google.com\n",[15,100,101],{},"如果这里不通，后面大概率也会卡。",[15,103,104],{},"如果你需要手动给终端加代理，可以先执行：",[74,106,108],{"className":76,"code":107,"language":78,"meta":79,"style":79},"export https_proxy=http://127.0.0.1:7890\nexport http_proxy=http://127.0.0.1:7890\nexport all_proxy=socks5://127.0.0.1:7890\n",[19,109,110,126,138],{"__ignoreMap":79},[83,111,112,116,120,123],{"class":85,"line":86},[83,113,115],{"class":114},"sD7c4","export",[83,117,119],{"class":118},"sgsFI"," https_proxy",[83,121,122],{"class":114},"=",[83,124,125],{"class":118},"http://127.0.0.1:7890\n",[83,127,129,131,134,136],{"class":85,"line":128},2,[83,130,115],{"class":114},[83,132,133],{"class":118}," http_proxy",[83,135,122],{"class":114},[83,137,125],{"class":118},[83,139,141,143,146,148],{"class":85,"line":140},3,[83,142,115],{"class":114},[83,144,145],{"class":118}," all_proxy",[83,147,122],{"class":114},[83,149,150],{"class":118},"socks5://127.0.0.1:7890\n",[15,152,153],{},"端口按你自己的代理工具改。",[42,155,156],{"id":156},"先装依赖",[158,159,161],"h3",{"id":160},"安装-homebrew","安装 Homebrew",[15,163,164,165,168],{},"如果你还没装 ",[19,166,167],{},"Homebrew","，先跑：",[74,170,172],{"className":76,"code":171,"language":78,"meta":79,"style":79},"/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n",[19,173,174],{"__ignoreMap":79},[83,175,176,179,182,185,187,190],{"class":85,"line":86},[83,177,178],{"class":89},"/bin/bash",[83,180,181],{"class":93}," -c",[83,183,184],{"class":97}," \"$(",[83,186,90],{"class":89},[83,188,189],{"class":93}," -fsSL",[83,191,192],{"class":97}," https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n",[15,194,195],{},"装完先确认：",[74,197,199],{"className":76,"code":198,"language":78,"meta":79,"style":79},"brew --version\n",[19,200,201],{"__ignoreMap":79},[83,202,203,206],{"class":85,"line":86},[83,204,205],{"class":89},"brew",[83,207,208],{"class":93}," --version\n",[15,210,211,212,214],{},"如果这里就报错，先别往下走。\n先把 ",[19,213,205],{}," 这一步处理干净。",[158,216,218],{"id":217},"安装-node-和-bun","安装 Node 和 bun",[74,220,222],{"className":76,"code":221,"language":78,"meta":79,"style":79},"brew install node bun\n",[19,223,224],{"__ignoreMap":79},[83,225,226,228,231,234],{"class":85,"line":86},[83,227,205],{"class":89},[83,229,230],{"class":97}," install",[83,232,233],{"class":97}," node",[83,235,236],{"class":97}," bun\n",[15,238,239],{},"装完马上检查：",[74,241,243],{"className":76,"code":242,"language":78,"meta":79,"style":79},"node -v\nnpm -v\nbun --version\n",[19,244,245,253,259],{"__ignoreMap":79},[83,246,247,250],{"class":85,"line":86},[83,248,249],{"class":89},"node",[83,251,252],{"class":93}," -v\n",[83,254,255,257],{"class":85,"line":128},[83,256,66],{"class":89},[83,258,252],{"class":93},[83,260,261,264],{"class":85,"line":140},[83,262,263],{"class":89},"bun",[83,265,208],{"class":93},[15,267,268],{},"这里有个小坑。",[15,270,271],{},"刚装完如果命令找不到，很多时候不是没装上。\n只是当前终端还没刷新环境变量。\n先关掉终端，再开一个新的。",[42,273,275],{"id":274},"安装-openclaw","安装 OpenClaw",[74,277,279],{"className":76,"code":278,"language":78,"meta":79,"style":79},"npm install -g openclaw\n",[19,280,281],{"__ignoreMap":79},[83,282,283,285,287,290],{"class":85,"line":86},[83,284,66],{"class":89},[83,286,230],{"class":97},[83,288,289],{"class":93}," -g",[83,291,292],{"class":97}," openclaw\n",[15,294,295],{},"装完确认：",[74,297,299],{"className":76,"code":298,"language":78,"meta":79,"style":79},"openclaw --version\n",[19,300,301],{"__ignoreMap":79},[83,302,303,306],{"class":85,"line":86},[83,304,305],{"class":89},"openclaw",[83,307,208],{"class":93},[15,309,310,311,314,315,317],{},"如果这里报权限问题，不要上来就 ",[19,312,313],{},"sudo","。\n先看你自己的 ",[19,316,66],{}," 全局目录配置是不是正常。",[42,319,321],{"id":320},"初始化-openclaw","初始化 OpenClaw",[15,323,324],{},"第一次装，推荐先走这条：",[74,326,328],{"className":76,"code":327,"language":78,"meta":79,"style":79},"openclaw setup --wizard\n",[19,329,330],{"__ignoreMap":79},[83,331,332,334,337],{"class":85,"line":86},[83,333,305],{"class":89},[83,335,336],{"class":97}," setup",[83,338,339],{"class":93}," --wizard\n",[15,341,342],{},"如果你想一次把更多东西配掉，也可以试：",[74,344,346],{"className":76,"code":345,"language":78,"meta":79,"style":79},"openclaw onboard\n",[19,347,348],{"__ignoreMap":79},[83,349,350,352],{"class":85,"line":86},[83,351,305],{"class":89},[83,353,354],{"class":97}," onboard\n",[15,356,357,358,361],{},"但第一次上手，我还是建议 ",[19,359,360],{},"setup --wizard","。\n简单一点。",[42,363,365],{"id":364},"启动-gateway","启动 Gateway",[74,367,369],{"className":76,"code":368,"language":78,"meta":79,"style":79},"openclaw gateway start\n",[19,370,371],{"__ignoreMap":79},[83,372,373,375,378],{"class":85,"line":86},[83,374,305],{"class":89},[83,376,377],{"class":97}," gateway",[83,379,380],{"class":97}," start\n",[15,382,383],{},"然后检查：",[74,385,387],{"className":76,"code":386,"language":78,"meta":79,"style":79},"openclaw gateway status\n",[19,388,389],{"__ignoreMap":79},[83,390,391,393,395],{"class":85,"line":86},[83,392,305],{"class":89},[83,394,377],{"class":97},[83,396,397],{"class":97}," status\n",[15,399,400],{},"如果这里没起来，后面的 Agent、飞书、消息路由都不用谈。",[42,402,403],{"id":403},"做一遍基本检查",[15,405,406],{},"至少跑这几条：",[74,408,410],{"className":76,"code":409,"language":78,"meta":79,"style":79},"openclaw status\nopenclaw gateway status\nopenclaw config file\nopenclaw config validate\n",[19,411,412,418,426,436],{"__ignoreMap":79},[83,413,414,416],{"class":85,"line":86},[83,415,305],{"class":89},[83,417,397],{"class":97},[83,419,420,422,424],{"class":85,"line":128},[83,421,305],{"class":89},[83,423,377],{"class":97},[83,425,397],{"class":97},[83,427,428,430,433],{"class":85,"line":140},[83,429,305],{"class":89},[83,431,432],{"class":97}," config",[83,434,435],{"class":97}," file\n",[83,437,439,441,443],{"class":85,"line":438},4,[83,440,305],{"class":89},[83,442,432],{"class":97},[83,444,445],{"class":97}," validate\n",[15,447,448],{},"主配置通常在：",[74,450,452],{"className":76,"code":451,"language":78,"meta":79,"style":79},"~/.openclaw/openclaw.json\n",[19,453,454],{"__ignoreMap":79},[83,455,456,459],{"class":85,"line":86},[83,457,458],{"class":114},"~",[83,460,461],{"class":118},"/.openclaw/openclaw.json\n",[42,463,464],{"id":464},"最基本的配置文件",[15,466,467,469],{},[19,468,21],{}," 本质上就是：\nCLI + workspace + 一堆配置文件。",[15,471,472],{},"先认这几个：",[46,474,475,481,487,493,499],{},[49,476,477,480],{},[19,478,479],{},"SOUL.md","：Agent 的人格、语气、角色定位",[49,482,483,486],{},[19,484,485],{},"USER.md","：你是谁、偏好什么",[49,488,489,492],{},[19,490,491],{},"MEMORY.md","：长期稳定记忆",[49,494,495,498],{},[19,496,497],{},"memory/*.md","：每天的短期记录",[49,500,501,504],{},[19,502,503],{},"AGENTS.md","：分工和工作规则",[15,506,507],{},"默认主 Agent 的 workspace 通常在：",[74,509,511],{"className":76,"code":510,"language":78,"meta":79,"style":79},"~/.openclaw/agents/main/workspace\n",[19,512,513],{"__ignoreMap":79},[83,514,515,517],{"class":85,"line":86},[83,516,458],{"class":114},[83,518,519],{"class":118},"/.openclaw/agents/main/workspace\n",[42,521,523],{"id":522},"模型怎么查怎么改","模型怎么查，怎么改",[15,525,526],{},"先看当前模型：",[74,528,530],{"className":76,"code":529,"language":78,"meta":79,"style":79},"openclaw models status --plain\n",[19,531,532],{"__ignoreMap":79},[83,533,534,536,539,542],{"class":85,"line":86},[83,535,305],{"class":89},[83,537,538],{"class":97}," models",[83,540,541],{"class":97}," status",[83,543,544],{"class":93}," --plain\n",[15,546,547],{},"再看可用模型：",[74,549,551],{"className":76,"code":550,"language":78,"meta":79,"style":79},"openclaw models list\n",[19,552,553],{"__ignoreMap":79},[83,554,555,557,559],{"class":85,"line":86},[83,556,305],{"class":89},[83,558,538],{"class":97},[83,560,561],{"class":97}," list\n",[15,563,564],{},"如果你要切默认模型：",[74,566,568],{"className":76,"code":567,"language":78,"meta":79,"style":79},"openclaw models set github-copilot/gpt-5.2\n",[19,569,570],{"__ignoreMap":79},[83,571,572,574,576,579],{"class":85,"line":86},[83,573,305],{"class":89},[83,575,538],{"class":97},[83,577,578],{"class":97}," set",[83,580,581],{"class":97}," github-copilot/gpt-5.2\n",[15,583,584],{},"这里先提醒一句。",[15,586,587,591],{},[588,589,590],"strong",{},"先配认证，再切模型。","\n不然你切过去也可能不能用。",[15,593,594],{},"先看：",[74,596,598],{"className":76,"code":597,"language":78,"meta":79,"style":79},"openclaw models auth --help\n",[19,599,600],{"__ignoreMap":79},[83,601,602,604,606,609],{"class":85,"line":86},[83,603,305],{"class":89},[83,605,538],{"class":97},[83,607,608],{"class":97}," auth",[83,610,611],{"class":93}," --help\n",[42,613,615],{"id":614},"agent-怎么看怎么加","Agent 怎么看，怎么加",[15,617,618],{},"先看现有 Agent：",[74,620,622],{"className":76,"code":621,"language":78,"meta":79,"style":79},"openclaw agents list\n",[19,623,624],{"__ignoreMap":79},[83,625,626,628,631],{"class":85,"line":86},[83,627,305],{"class":89},[83,629,630],{"class":97}," agents",[83,632,561],{"class":97},[15,634,635],{},"如果你要新建一个：",[74,637,639],{"className":76,"code":638,"language":78,"meta":79,"style":79},"openclaw agents add writer\n",[19,640,641],{"__ignoreMap":79},[83,642,643,645,647,650],{"class":85,"line":86},[83,644,305],{"class":89},[83,646,630],{"class":97},[83,648,649],{"class":97}," add",[83,651,652],{"class":97}," writer\n",[15,654,655],{},"如果你想顺手指定模型和目录：",[74,657,659],{"className":76,"code":658,"language":78,"meta":79,"style":79},"openclaw agents add writer --workspace ~/.openclaw/agents/writer/workspace --model github-copilot/claude-sonnet-4.6\n",[19,660,661],{"__ignoreMap":79},[83,662,663,665,667,669,672,675,678,681],{"class":85,"line":86},[83,664,305],{"class":89},[83,666,630],{"class":97},[83,668,649],{"class":97},[83,670,671],{"class":97}," writer",[83,673,674],{"class":93}," --workspace",[83,676,677],{"class":97}," ~/.openclaw/agents/writer/workspace",[83,679,680],{"class":93}," --model",[83,682,683],{"class":97}," github-copilot/claude-sonnet-4.6\n",[15,685,686],{},"建完之后，重点不是命令。\n是去它自己的 workspace 里改：",[46,688,689,693,697],{},[49,690,691],{},[19,692,479],{},[49,694,695],{},[19,696,485],{},[49,698,699],{},[19,700,491],{},[42,702,703],{"id":703},"如果你下一步要接飞书",[15,705,706],{},"完整教程在这里：",[15,708,709],{},[710,711,713],"a",{"href":712},"/post/zzao/openclaw-new-agent-feishu","给 OpenClaw 新增一个 Agent（以飞书机器人为例）",[15,715,716],{},"这里只说最关键的。",[158,718,719],{"id":719},"飞书后台权限怎么配",[15,721,722,723,726],{},"这里不要按我给你列几个权限名就机械地搜。\n因为 ",[19,724,725],{},"im:message"," 在飞书后台是一整组消息权限，不是一个点。",[15,728,729],{},"更稳的做法是：",[15,731,732],{},"在飞书开放平台里，围绕这几类能力去开：",[46,734,735,738,741,744,747],{},[49,736,737],{},"机器人收消息",[49,739,740],{},"机器人发消息",[49,742,743],{},"单聊消息",[49,745,746],{},"群聊消息 / 被 @ 消息",[49,748,749],{},"用户 ID 读取",[15,751,752],{},"也就是你在权限后台里，至少要把和下面这些关键词相关的消息权限开出来：",[46,754,755,759,764],{},[49,756,757],{},[19,758,725],{},[49,760,761],{},[19,762,763],{},"im:message:send_as_bot",[49,765,766],{},[19,767,768],{},"contact:user.id:readonly",[15,770,771,772,774],{},"然后把 ",[19,773,725],{}," 下面那组和收消息相关的权限一起确认一遍。\n别只开一个名字最短的就以为结束了。",[158,776,777],{"id":777},"事件订阅怎么配",[15,779,780],{},"在飞书开放平台里：",[46,782,783,786,789,795,798],{},[49,784,785],{},"进入你的 App",[49,787,788],{},"打开「事件与回调」",[49,790,791,792],{},"选择 ",[588,793,794],{},"长连接",[49,796,797],{},"开启它",[49,799,800,801],{},"订阅事件：",[19,802,803],{},"im.message.receive_v1",[15,805,806],{},"这里有个顺序坑。",[15,808,809,816],{},[588,810,811,812,815],{},"先启动 ",[19,813,814],{},"Gateway","，再去飞书后台开长连接。","\n顺序反了，飞书那边经常会报没检测到连接。",[158,818,820],{"id":819},"openclaw-这边怎么配","OpenClaw 这边怎么配",[15,822,823],{},"你至少要配两块。",[825,826,828],"h4",{"id":827},"channelsfeishuaccounts",[19,829,830],{},"channels.feishu.accounts",[74,832,836],{"className":833,"code":834,"language":835,"meta":79,"style":79},"language-json shiki shiki-themes github-light","\"writer\": {\n  \"appId\": \"cli_xxxxxxxx\",\n  \"appSecret\": \"xxxxxxxxxxxxxxxx\",\n  \"domain\": \"feishu\",\n  \"enabled\": true,\n  \"dmPolicy\": \"open\",\n  \"groupPolicy\": \"open\",\n  \"allowFrom\": [\"*\"]\n}\n","json",[19,837,838,846,860,872,884,897,910,922,937],{"__ignoreMap":79},[83,839,840,843],{"class":85,"line":86},[83,841,842],{"class":97},"\"writer\"",[83,844,845],{"class":118},": {\n",[83,847,848,851,854,857],{"class":85,"line":128},[83,849,850],{"class":93},"  \"appId\"",[83,852,853],{"class":118},": ",[83,855,856],{"class":97},"\"cli_xxxxxxxx\"",[83,858,859],{"class":118},",\n",[83,861,862,865,867,870],{"class":85,"line":140},[83,863,864],{"class":93},"  \"appSecret\"",[83,866,853],{"class":118},[83,868,869],{"class":97},"\"xxxxxxxxxxxxxxxx\"",[83,871,859],{"class":118},[83,873,874,877,879,882],{"class":85,"line":438},[83,875,876],{"class":93},"  \"domain\"",[83,878,853],{"class":118},[83,880,881],{"class":97},"\"feishu\"",[83,883,859],{"class":118},[83,885,887,890,892,895],{"class":85,"line":886},5,[83,888,889],{"class":93},"  \"enabled\"",[83,891,853],{"class":118},[83,893,894],{"class":93},"true",[83,896,859],{"class":118},[83,898,900,903,905,908],{"class":85,"line":899},6,[83,901,902],{"class":93},"  \"dmPolicy\"",[83,904,853],{"class":118},[83,906,907],{"class":97},"\"open\"",[83,909,859],{"class":118},[83,911,913,916,918,920],{"class":85,"line":912},7,[83,914,915],{"class":93},"  \"groupPolicy\"",[83,917,853],{"class":118},[83,919,907],{"class":97},[83,921,859],{"class":118},[83,923,925,928,931,934],{"class":85,"line":924},8,[83,926,927],{"class":93},"  \"allowFrom\"",[83,929,930],{"class":118},": [",[83,932,933],{"class":97},"\"*\"",[83,935,936],{"class":118},"]\n",[83,938,940],{"class":85,"line":939},9,[83,941,942],{"class":118},"}\n",[825,944,946,947],{"id":945},"顶层-bindings","顶层 ",[19,948,949],{},"bindings",[74,951,953],{"className":833,"code":952,"language":835,"meta":79,"style":79},"{\n  \"agentId\": \"writer\",\n  \"match\": {\n    \"channel\": \"feishu\",\n    \"accountId\": \"writer\"\n  }\n}\n",[19,954,955,960,971,978,989,999,1004],{"__ignoreMap":79},[83,956,957],{"class":85,"line":86},[83,958,959],{"class":118},"{\n",[83,961,962,965,967,969],{"class":85,"line":128},[83,963,964],{"class":93},"  \"agentId\"",[83,966,853],{"class":118},[83,968,842],{"class":97},[83,970,859],{"class":118},[83,972,973,976],{"class":85,"line":140},[83,974,975],{"class":93},"  \"match\"",[83,977,845],{"class":118},[83,979,980,983,985,987],{"class":85,"line":438},[83,981,982],{"class":93},"    \"channel\"",[83,984,853],{"class":118},[83,986,881],{"class":97},[83,988,859],{"class":118},[83,990,991,994,996],{"class":85,"line":886},[83,992,993],{"class":93},"    \"accountId\"",[83,995,853],{"class":118},[83,997,998],{"class":97},"\"writer\"\n",[83,1000,1001],{"class":85,"line":899},[83,1002,1003],{"class":118},"  }\n",[83,1005,1006],{"class":85,"line":912},[83,1007,942],{"class":118},[15,1009,1010],{},"这里不要漏。",[15,1012,1013],{},"很多人只加了账号，或者只加了 Agent。\n结果就是飞书消息根本路由不过去。",[158,1015,1016],{"id":1016},"配完后重启",[74,1018,1020],{"className":76,"code":1019,"language":78,"meta":79,"style":79},"openclaw gateway restart\nopenclaw channels status --probe\n",[19,1021,1022,1031],{"__ignoreMap":79},[83,1023,1024,1026,1028],{"class":85,"line":86},[83,1025,305],{"class":89},[83,1027,377],{"class":97},[83,1029,1030],{"class":97}," restart\n",[83,1032,1033,1035,1038,1040],{"class":85,"line":128},[83,1034,305],{"class":89},[83,1036,1037],{"class":97}," channels",[83,1039,541],{"class":97},[83,1041,1042],{"class":93}," --probe\n",[15,1044,1045],{},"如果状态正常，你应该能看到类似：",[46,1047,1048,1053,1058,1063],{},[49,1049,1050],{},[19,1051,1052],{},"enabled",[49,1054,1055],{},[19,1056,1057],{},"configured",[49,1059,1060],{},[19,1061,1062],{},"running",[49,1064,1065],{},[19,1066,1067],{},"works",[42,1069,1070],{"id":1070},"建议你按这个顺序走",[1072,1073,1074,1079,1088,1093,1099,1104,1113,1119],"ol",{},[49,1075,1076,1077],{},"先装 ",[19,1078,167],{},[49,1080,1081,1082,1085,1086],{},"再装 ",[19,1083,1084],{},"Node"," 和 ",[19,1087,263],{},[49,1089,1090,1091],{},"安装 ",[19,1092,21],{},[49,1094,1095,1096],{},"跑 ",[19,1097,1098],{},"openclaw setup --wizard",[49,1100,1101,1102],{},"启动 ",[19,1103,814],{},[49,1105,1095,1106,1109,1110],{},[19,1107,1108],{},"status"," / ",[19,1111,1112],{},"config validate",[49,1114,1115,1116,1118],{},"再改 ",[19,1117,479],{}," 和模型",[49,1120,1121],{},"最后再接飞书",[15,1123,1124],{},"别一上来就飞书。\n先把本地跑通。\n这样后面会省很多事。",[1126,1127,1128],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}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 .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":79,"searchDepth":128,"depth":128,"links":1130},[1131,1132,1136,1137,1138,1139,1140,1141,1142,1143,1149],{"id":44,"depth":128,"text":44},{"id":156,"depth":128,"text":156,"children":1133},[1134,1135],{"id":160,"depth":140,"text":161},{"id":217,"depth":140,"text":218},{"id":274,"depth":128,"text":275},{"id":320,"depth":128,"text":321},{"id":364,"depth":128,"text":365},{"id":403,"depth":128,"text":403},{"id":464,"depth":128,"text":464},{"id":522,"depth":128,"text":523},{"id":614,"depth":128,"text":615},{"id":703,"depth":128,"text":703,"children":1144},[1145,1146,1147,1148],{"id":719,"depth":140,"text":719},{"id":777,"depth":140,"text":777},{"id":819,"depth":140,"text":820},{"id":1016,"depth":140,"text":1016},{"id":1070,"depth":128,"text":1070},"2026-03-07T00:00:00.000Z","把 OpenClaw 在 macOS 上装起来，并跑通最基本的配置。少废话，照着做就行。","md",null,{"slug":1155},"openclaw-install-macos",true,"/post/zzao/openclaw/openclaw-install-macos","---\ntitle: OpenClaw 安装入门（macOS）\ndate: 2026-03-07\ntags: [OpenClaw, macOS, 安装教程]\nslug: openclaw-install-macos\nauthor: 阿康\ndescription: 把 OpenClaw 在 macOS 上装起来，并跑通最基本的配置。少废话，照着做就行。\n---\n\n# OpenClaw 安装入门（macOS）\n\n这篇只讲一件事。\n把 `OpenClaw` 在 `macOS` 上装起来。\n\n如果你用的是 `Windows`，去看另一篇。\n\n这篇基于 `OpenClaw 2026.3.2`。\n\n## 你需要准备什么\n\n- 一台 `macOS`\n- 能开的终端\n- 网络能访问 `GitHub`、`npm`\n- 如果你平时靠代理上网，那就先把代理配好\n\n先别急着装。\n先确认网络是不是通的。\n\n```bash\ncurl -I https://google.com\n```\n\n如果这里不通，后面大概率也会卡。\n\n如果你需要手动给终端加代理，可以先执行：\n\n```bash\nexport https_proxy=http://127.0.0.1:7890\nexport http_proxy=http://127.0.0.1:7890\nexport all_proxy=socks5://127.0.0.1:7890\n```\n\n端口按你自己的代理工具改。\n\n## 先装依赖\n\n### 安装 Homebrew\n\n如果你还没装 `Homebrew`，先跑：\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\n装完先确认：\n\n```bash\nbrew --version\n```\n\n如果这里就报错，先别往下走。\n先把 `brew` 这一步处理干净。\n\n### 安装 Node 和 bun\n\n```bash\nbrew install node bun\n```\n\n装完马上检查：\n\n```bash\nnode -v\nnpm -v\nbun --version\n```\n\n这里有个小坑。\n\n刚装完如果命令找不到，很多时候不是没装上。\n只是当前终端还没刷新环境变量。\n先关掉终端，再开一个新的。\n\n## 安装 OpenClaw\n\n```bash\nnpm install -g openclaw\n```\n\n装完确认：\n\n```bash\nopenclaw --version\n```\n\n如果这里报权限问题，不要上来就 `sudo`。\n先看你自己的 `npm` 全局目录配置是不是正常。\n\n## 初始化 OpenClaw\n\n第一次装，推荐先走这条：\n\n```bash\nopenclaw setup --wizard\n```\n\n如果你想一次把更多东西配掉，也可以试：\n\n```bash\nopenclaw onboard\n```\n\n但第一次上手，我还是建议 `setup --wizard`。\n简单一点。\n\n## 启动 Gateway\n\n```bash\nopenclaw gateway start\n```\n\n然后检查：\n\n```bash\nopenclaw gateway status\n```\n\n如果这里没起来，后面的 Agent、飞书、消息路由都不用谈。\n\n## 做一遍基本检查\n\n至少跑这几条：\n\n```bash\nopenclaw status\nopenclaw gateway status\nopenclaw config file\nopenclaw config validate\n```\n\n主配置通常在：\n\n```bash\n~/.openclaw/openclaw.json\n```\n\n## 最基本的配置文件\n\n`OpenClaw` 本质上就是：\nCLI + workspace + 一堆配置文件。\n\n先认这几个：\n\n- `SOUL.md`：Agent 的人格、语气、角色定位\n- `USER.md`：你是谁、偏好什么\n- `MEMORY.md`：长期稳定记忆\n- `memory/*.md`：每天的短期记录\n- `AGENTS.md`：分工和工作规则\n\n默认主 Agent 的 workspace 通常在：\n\n```bash\n~/.openclaw/agents/main/workspace\n```\n\n## 模型怎么查，怎么改\n\n先看当前模型：\n\n```bash\nopenclaw models status --plain\n```\n\n再看可用模型：\n\n```bash\nopenclaw models list\n```\n\n如果你要切默认模型：\n\n```bash\nopenclaw models set github-copilot/gpt-5.2\n```\n\n这里先提醒一句。\n\n**先配认证，再切模型。**\n不然你切过去也可能不能用。\n\n先看：\n\n```bash\nopenclaw models auth --help\n```\n\n## Agent 怎么看，怎么加\n\n先看现有 Agent：\n\n```bash\nopenclaw agents list\n```\n\n如果你要新建一个：\n\n```bash\nopenclaw agents add writer\n```\n\n如果你想顺手指定模型和目录：\n\n```bash\nopenclaw agents add writer --workspace ~/.openclaw/agents/writer/workspace --model github-copilot/claude-sonnet-4.6\n```\n\n建完之后，重点不是命令。\n是去它自己的 workspace 里改：\n\n- `SOUL.md`\n- `USER.md`\n- `MEMORY.md`\n\n## 如果你下一步要接飞书\n\n完整教程在这里：\n\n[给 OpenClaw 新增一个 Agent（以飞书机器人为例）](/post/zzao/openclaw-new-agent-feishu)\n\n这里只说最关键的。\n\n### 飞书后台权限怎么配\n\n这里不要按我给你列几个权限名就机械地搜。\n因为 `im:message` 在飞书后台是一整组消息权限，不是一个点。\n\n更稳的做法是：\n\n在飞书开放平台里，围绕这几类能力去开：\n\n- 机器人收消息\n- 机器人发消息\n- 单聊消息\n- 群聊消息 / 被 @ 消息\n- 用户 ID 读取\n\n也就是你在权限后台里，至少要把和下面这些关键词相关的消息权限开出来：\n\n- `im:message`\n- `im:message:send_as_bot`\n- `contact:user.id:readonly`\n\n然后把 `im:message` 下面那组和收消息相关的权限一起确认一遍。\n别只开一个名字最短的就以为结束了。\n\n### 事件订阅怎么配\n\n在飞书开放平台里：\n\n- 进入你的 App\n- 打开「事件与回调」\n- 选择 **长连接**\n- 开启它\n- 订阅事件：`im.message.receive_v1`\n\n这里有个顺序坑。\n\n**先启动 `Gateway`，再去飞书后台开长连接。**\n顺序反了，飞书那边经常会报没检测到连接。\n\n### OpenClaw 这边怎么配\n\n你至少要配两块。\n\n#### `channels.feishu.accounts`\n\n```json\n\"writer\": {\n  \"appId\": \"cli_xxxxxxxx\",\n  \"appSecret\": \"xxxxxxxxxxxxxxxx\",\n  \"domain\": \"feishu\",\n  \"enabled\": true,\n  \"dmPolicy\": \"open\",\n  \"groupPolicy\": \"open\",\n  \"allowFrom\": [\"*\"]\n}\n```\n\n#### 顶层 `bindings`\n\n```json\n{\n  \"agentId\": \"writer\",\n  \"match\": {\n    \"channel\": \"feishu\",\n    \"accountId\": \"writer\"\n  }\n}\n```\n\n这里不要漏。\n\n很多人只加了账号，或者只加了 Agent。\n结果就是飞书消息根本路由不过去。\n\n### 配完后重启\n\n```bash\nopenclaw gateway restart\nopenclaw channels status --probe\n```\n\n如果状态正常，你应该能看到类似：\n\n- `enabled`\n- `configured`\n- `running`\n- `works`\n\n## 建议你按这个顺序走\n\n1. 先装 `Homebrew`\n2. 再装 `Node` 和 `bun`\n3. 安装 `OpenClaw`\n4. 跑 `openclaw setup --wizard`\n5. 启动 `Gateway`\n6. 跑 `status` / `config validate`\n7. 再改 `SOUL.md` 和模型\n8. 最后再接飞书\n\n别一上来就飞书。\n先把本地跑通。\n这样后面会省很多事。\n",{"title":5,"description":1151},"post/zzao/openclaw/openclaw-install-macos",[21,25,1162],"安装教程","MlAH1ugHuMLAn58zdImK9QnM8Ek9Z9wU8OFa-hmNFro",[1165,1169],{"title":1166,"path":1167,"stem":1168,"children":-1},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":1170,"path":1171,"stem":1172,"children":-1},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005084793]