[{"data":1,"prerenderedAt":5285},["ShallowReactive",2],{"best-practices:hooks-practical-guide":3,"content-manifest":2778},{"id":4,"title":5,"body":6,"category":2761,"date":2762,"description":2763,"difficulty":2764,"extension":2765,"meta":2766,"navigation":411,"path":2767,"seo":2768,"source":2762,"sourceName":2762,"sourceType":2769,"stem":2770,"tags":2771,"updatedAt":2776,"__hash__":2777},"bestPractices/best-practices/hooks-practical-guide.md","Hooks 实战指南",{"type":7,"value":8,"toc":2722},"minimark",[9,13,17,22,100,104,108,275,279,370,373,377,380,471,474,547,551,554,636,640,643,756,760,763,919,923,926,1082,1086,1089,1267,1271,1274,1454,1458,1461,1615,1618,1622,1625,1811,1814,1817,1984,1987,1990,2127,2130,2134,2210,2214,2308,2311,2315,2318,2326,2330,2422,2426,2479,2483,2539,2543,2618,2621,2625,2651,2655,2669,2673,2687,2690,2718],[10,11,5],"h1",{"id":12},"hooks-实战指南",[14,15,16],"p",{},"Hooks 是 OpenClaw 中最强大的自动化扩展点之一。通过 Hooks，你可以在系统的关键节点插入自定义逻辑，实现消息处理、自动化触发、内容过滤等功能。",[18,19,21],"h2",{"id":20},"hooks-能做什么","Hooks 能做什么",[23,24,25,41],"table",{},[26,27,28],"thead",{},[29,30,31,35,38],"tr",{},[32,33,34],"th",{},"场景",[32,36,37],{},"Hook 类型",[32,39,40],{},"说明",[42,43,44,56,67,78,89],"tbody",{},[29,45,46,50,53],{},[47,48,49],"td",{},"消息预处理",[47,51,52],{},"pre-process",[47,54,55],{},"在模型处理前修改或过滤消息",[29,57,58,61,64],{},[47,59,60],{},"响应后处理",[47,62,63],{},"post-process",[47,65,66],{},"在发送响应前修改内容",[29,68,69,72,75],{},[47,70,71],{},"事件触发",[47,73,74],{},"event-trigger",[47,76,77],{},"基于特定事件执行动作",[29,79,80,83,86],{},[47,81,82],{},"外部集成",[47,84,85],{},"webhook",[47,87,88],{},"与外部系统对接",[29,90,91,94,97],{},[47,92,93],{},"内容审计",[47,95,96],{},"content-filter",[47,98,99],{},"过滤敏感内容或添加水印",[18,101,103],{"id":102},"hook-配置基础","Hook 配置基础",[105,106,107],"h3",{"id":107},"基本配置结构",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-json shiki shiki-themes github-light github-dark","{\n  \"hooks\": {\n    \"enabled\": true,\n    \"token\": \"your-secure-token\",\n    \"path\": \"/hooks\",\n    \"mappings\": [\n      {\n        \"match\": { \"path\": \"gmail\" },\n        \"action\": \"agent\",\n        \"agentId\": \"main\",\n        \"deliver\": true\n      }\n    ]\n  }\n}\n","json","",[116,117,118,127,137,152,166,179,188,194,214,227,240,251,257,263,269],"code",{"__ignoreMap":114},[119,120,123],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sVt8B","{\n",[119,128,130,134],{"class":121,"line":129},2,[119,131,133],{"class":132},"sj4cs","  \"hooks\"",[119,135,136],{"class":125},": {\n",[119,138,140,143,146,149],{"class":121,"line":139},3,[119,141,142],{"class":132},"    \"enabled\"",[119,144,145],{"class":125},": ",[119,147,148],{"class":132},"true",[119,150,151],{"class":125},",\n",[119,153,155,158,160,164],{"class":121,"line":154},4,[119,156,157],{"class":132},"    \"token\"",[119,159,145],{"class":125},[119,161,163],{"class":162},"sZZnC","\"your-secure-token\"",[119,165,151],{"class":125},[119,167,169,172,174,177],{"class":121,"line":168},5,[119,170,171],{"class":132},"    \"path\"",[119,173,145],{"class":125},[119,175,176],{"class":162},"\"/hooks\"",[119,178,151],{"class":125},[119,180,182,185],{"class":121,"line":181},6,[119,183,184],{"class":132},"    \"mappings\"",[119,186,187],{"class":125},": [\n",[119,189,191],{"class":121,"line":190},7,[119,192,193],{"class":125},"      {\n",[119,195,197,200,203,206,208,211],{"class":121,"line":196},8,[119,198,199],{"class":132},"        \"match\"",[119,201,202],{"class":125},": { ",[119,204,205],{"class":132},"\"path\"",[119,207,145],{"class":125},[119,209,210],{"class":162},"\"gmail\"",[119,212,213],{"class":125}," },\n",[119,215,217,220,222,225],{"class":121,"line":216},9,[119,218,219],{"class":132},"        \"action\"",[119,221,145],{"class":125},[119,223,224],{"class":162},"\"agent\"",[119,226,151],{"class":125},[119,228,230,233,235,238],{"class":121,"line":229},10,[119,231,232],{"class":132},"        \"agentId\"",[119,234,145],{"class":125},[119,236,237],{"class":162},"\"main\"",[119,239,151],{"class":125},[119,241,243,246,248],{"class":121,"line":242},11,[119,244,245],{"class":132},"        \"deliver\"",[119,247,145],{"class":125},[119,249,250],{"class":132},"true\n",[119,252,254],{"class":121,"line":253},12,[119,255,256],{"class":125},"      }\n",[119,258,260],{"class":121,"line":259},13,[119,261,262],{"class":125},"    ]\n",[119,264,266],{"class":121,"line":265},14,[119,267,268],{"class":125},"  }\n",[119,270,272],{"class":121,"line":271},15,[119,273,274],{"class":125},"}\n",[105,276,278],{"id":277},"hook-类型说明","Hook 类型说明",[109,280,282],{"className":111,"code":281,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"my-hook\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/my-hook.js\",\n        \"priority\": 10\n      }\n    }\n  }\n}\n",[116,283,284,288,294,301,308,319,331,343,353,357,362,366],{"__ignoreMap":114},[119,285,286],{"class":121,"line":122},[119,287,126],{"class":125},[119,289,290,292],{"class":121,"line":129},[119,291,133],{"class":132},[119,293,136],{"class":125},[119,295,296,299],{"class":121,"line":139},[119,297,298],{"class":132},"    \"entries\"",[119,300,136],{"class":125},[119,302,303,306],{"class":121,"line":154},[119,304,305],{"class":132},"      \"my-hook\"",[119,307,136],{"class":125},[119,309,310,313,315,317],{"class":121,"line":168},[119,311,312],{"class":132},"        \"enabled\"",[119,314,145],{"class":125},[119,316,148],{"class":132},[119,318,151],{"class":125},[119,320,321,324,326,329],{"class":121,"line":181},[119,322,323],{"class":132},"        \"type\"",[119,325,145],{"class":125},[119,327,328],{"class":162},"\"pre-process\"",[119,330,151],{"class":125},[119,332,333,336,338,341],{"class":121,"line":190},[119,334,335],{"class":132},"        \"handler\"",[119,337,145],{"class":125},[119,339,340],{"class":162},"\"./hooks/my-hook.js\"",[119,342,151],{"class":125},[119,344,345,348,350],{"class":121,"line":196},[119,346,347],{"class":132},"        \"priority\"",[119,349,145],{"class":125},[119,351,352],{"class":132},"10\n",[119,354,355],{"class":121,"line":216},[119,356,256],{"class":125},[119,358,359],{"class":121,"line":229},[119,360,361],{"class":125},"    }\n",[119,363,364],{"class":121,"line":242},[119,365,268],{"class":125},[119,367,368],{"class":121,"line":253},[119,369,274],{"class":125},[18,371,372],{"id":372},"实战案例",[105,374,376],{"id":375},"案例-1消息预处理-添加时间戳","案例 1：消息预处理 - 添加时间戳",[14,378,379],{},"在每条消息前自动添加时间戳：",[109,381,385],{"className":382,"code":383,"language":384,"meta":114,"style":114},"language-javascript shiki shiki-themes github-light github-dark","// hooks/timestamp-hook.js\nmodule.exports = {\n  name: 'timestamp-hook',\n  type: 'pre-process',\n\n  async execute(context) {\n    const { message } = context\n    const now = new Date().toLocaleString('zh-CN', {\n      timeZone: 'Asia/Shanghai'\n    })\n\n    // 在消息前添加时间戳\n    message.content = `[${now}] ${message.content}`\n\n    return { success: true, message }\n  }\n}\n","javascript",[116,386,387,392,397,402,407,413,418,423,428,433,438,442,447,452,456,461,466],{"__ignoreMap":114},[119,388,389],{"class":121,"line":122},[119,390,391],{},"// hooks/timestamp-hook.js\n",[119,393,394],{"class":121,"line":129},[119,395,396],{},"module.exports = {\n",[119,398,399],{"class":121,"line":139},[119,400,401],{},"  name: 'timestamp-hook',\n",[119,403,404],{"class":121,"line":154},[119,405,406],{},"  type: 'pre-process',\n",[119,408,409],{"class":121,"line":168},[119,410,412],{"emptyLinePlaceholder":411},true,"\n",[119,414,415],{"class":121,"line":181},[119,416,417],{},"  async execute(context) {\n",[119,419,420],{"class":121,"line":190},[119,421,422],{},"    const { message } = context\n",[119,424,425],{"class":121,"line":196},[119,426,427],{},"    const now = new Date().toLocaleString('zh-CN', {\n",[119,429,430],{"class":121,"line":216},[119,431,432],{},"      timeZone: 'Asia/Shanghai'\n",[119,434,435],{"class":121,"line":229},[119,436,437],{},"    })\n",[119,439,440],{"class":121,"line":242},[119,441,412],{"emptyLinePlaceholder":411},[119,443,444],{"class":121,"line":253},[119,445,446],{},"    // 在消息前添加时间戳\n",[119,448,449],{"class":121,"line":259},[119,450,451],{},"    message.content = `[${now}] ${message.content}`\n",[119,453,454],{"class":121,"line":265},[119,455,412],{"emptyLinePlaceholder":411},[119,457,458],{"class":121,"line":271},[119,459,460],{},"    return { success: true, message }\n",[119,462,464],{"class":121,"line":463},16,[119,465,268],{},[119,467,469],{"class":121,"line":468},17,[119,470,274],{},[14,472,473],{},"配置：",[109,475,477],{"className":111,"code":476,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"timestamp\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/timestamp-hook.js\"\n      }\n    }\n  }\n}\n",[116,478,479,483,489,495,502,512,522,531,535,539,543],{"__ignoreMap":114},[119,480,481],{"class":121,"line":122},[119,482,126],{"class":125},[119,484,485,487],{"class":121,"line":129},[119,486,133],{"class":132},[119,488,136],{"class":125},[119,490,491,493],{"class":121,"line":139},[119,492,298],{"class":132},[119,494,136],{"class":125},[119,496,497,500],{"class":121,"line":154},[119,498,499],{"class":132},"      \"timestamp\"",[119,501,136],{"class":125},[119,503,504,506,508,510],{"class":121,"line":168},[119,505,312],{"class":132},[119,507,145],{"class":125},[119,509,148],{"class":132},[119,511,151],{"class":125},[119,513,514,516,518,520],{"class":121,"line":181},[119,515,323],{"class":132},[119,517,145],{"class":125},[119,519,328],{"class":162},[119,521,151],{"class":125},[119,523,524,526,528],{"class":121,"line":190},[119,525,335],{"class":132},[119,527,145],{"class":125},[119,529,530],{"class":162},"\"./hooks/timestamp-hook.js\"\n",[119,532,533],{"class":121,"line":196},[119,534,256],{"class":125},[119,536,537],{"class":121,"line":216},[119,538,361],{"class":125},[119,540,541],{"class":121,"line":229},[119,542,268],{"class":125},[119,544,545],{"class":121,"line":242},[119,546,274],{"class":125},[105,548,550],{"id":549},"案例-2响应后处理-添加签名","案例 2：响应后处理 - 添加签名",[14,552,553],{},"在每条回复后自动添加签名：",[109,555,557],{"className":382,"code":556,"language":384,"meta":114,"style":114},"// hooks/signature-hook.js\nmodule.exports = {\n  name: 'signature-hook',\n  type: 'post-process',\n\n  async execute(context) {\n    const { response } = context\n    const signature = '\\n\\n---\\n*由 OpenClaw 助手提供*'\n\n    // 检查是否是文本响应\n    if (response.content && typeof response.content === 'string') {\n      response.content += signature\n    }\n\n    return { success: true, response }\n  }\n}\n",[116,558,559,564,568,573,578,582,586,591,596,600,605,610,615,619,623,628,632],{"__ignoreMap":114},[119,560,561],{"class":121,"line":122},[119,562,563],{},"// hooks/signature-hook.js\n",[119,565,566],{"class":121,"line":129},[119,567,396],{},[119,569,570],{"class":121,"line":139},[119,571,572],{},"  name: 'signature-hook',\n",[119,574,575],{"class":121,"line":154},[119,576,577],{},"  type: 'post-process',\n",[119,579,580],{"class":121,"line":168},[119,581,412],{"emptyLinePlaceholder":411},[119,583,584],{"class":121,"line":181},[119,585,417],{},[119,587,588],{"class":121,"line":190},[119,589,590],{},"    const { response } = context\n",[119,592,593],{"class":121,"line":196},[119,594,595],{},"    const signature = '\\n\\n---\\n*由 OpenClaw 助手提供*'\n",[119,597,598],{"class":121,"line":216},[119,599,412],{"emptyLinePlaceholder":411},[119,601,602],{"class":121,"line":229},[119,603,604],{},"    // 检查是否是文本响应\n",[119,606,607],{"class":121,"line":242},[119,608,609],{},"    if (response.content && typeof response.content === 'string') {\n",[119,611,612],{"class":121,"line":253},[119,613,614],{},"      response.content += signature\n",[119,616,617],{"class":121,"line":259},[119,618,361],{},[119,620,621],{"class":121,"line":265},[119,622,412],{"emptyLinePlaceholder":411},[119,624,625],{"class":121,"line":271},[119,626,627],{},"    return { success: true, response }\n",[119,629,630],{"class":121,"line":463},[119,631,268],{},[119,633,634],{"class":121,"line":468},[119,635,274],{},[105,637,639],{"id":638},"案例-3敏感词过滤","案例 3：敏感词过滤",[14,641,642],{},"过滤消息中的敏感词：",[109,644,646],{"className":382,"code":645,"language":384,"meta":114,"style":114},"// hooks/content-filter.js\nconst sensitiveWords = ['敏感词1', '敏感词2', '敏感词3']\n\nmodule.exports = {\n  name: 'content-filter',\n  type: 'pre-process',\n\n  async execute(context) {\n    const { message } = context\n    let content = message.content\n\n    // 替换敏感词\n    for (const word of sensitiveWords) {\n      const regex = new RegExp(word, 'gi')\n      content = content.replace(regex, '***')\n    }\n\n    message.content = content\n    message.filtered = true\n\n    return { success: true, message }\n  }\n}\n",[116,647,648,653,658,662,666,671,675,679,683,687,692,696,701,706,711,716,720,724,730,736,741,746,751],{"__ignoreMap":114},[119,649,650],{"class":121,"line":122},[119,651,652],{},"// hooks/content-filter.js\n",[119,654,655],{"class":121,"line":129},[119,656,657],{},"const sensitiveWords = ['敏感词1', '敏感词2', '敏感词3']\n",[119,659,660],{"class":121,"line":139},[119,661,412],{"emptyLinePlaceholder":411},[119,663,664],{"class":121,"line":154},[119,665,396],{},[119,667,668],{"class":121,"line":168},[119,669,670],{},"  name: 'content-filter',\n",[119,672,673],{"class":121,"line":181},[119,674,406],{},[119,676,677],{"class":121,"line":190},[119,678,412],{"emptyLinePlaceholder":411},[119,680,681],{"class":121,"line":196},[119,682,417],{},[119,684,685],{"class":121,"line":216},[119,686,422],{},[119,688,689],{"class":121,"line":229},[119,690,691],{},"    let content = message.content\n",[119,693,694],{"class":121,"line":242},[119,695,412],{"emptyLinePlaceholder":411},[119,697,698],{"class":121,"line":253},[119,699,700],{},"    // 替换敏感词\n",[119,702,703],{"class":121,"line":259},[119,704,705],{},"    for (const word of sensitiveWords) {\n",[119,707,708],{"class":121,"line":265},[119,709,710],{},"      const regex = new RegExp(word, 'gi')\n",[119,712,713],{"class":121,"line":271},[119,714,715],{},"      content = content.replace(regex, '***')\n",[119,717,718],{"class":121,"line":463},[119,719,361],{},[119,721,722],{"class":121,"line":468},[119,723,412],{"emptyLinePlaceholder":411},[119,725,727],{"class":121,"line":726},18,[119,728,729],{},"    message.content = content\n",[119,731,733],{"class":121,"line":732},19,[119,734,735],{},"    message.filtered = true\n",[119,737,739],{"class":121,"line":738},20,[119,740,412],{"emptyLinePlaceholder":411},[119,742,744],{"class":121,"line":743},21,[119,745,460],{},[119,747,749],{"class":121,"line":748},22,[119,750,268],{},[119,752,754],{"class":121,"line":753},23,[119,755,274],{},[105,757,759],{"id":758},"案例-4webhook-集成-发送到外部服务","案例 4：Webhook 集成 - 发送到外部服务",[14,761,762],{},"将消息发送到外部服务：",[109,764,766],{"className":111,"code":765,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"enabled\": true,\n    \"token\": \"webhook-secret-token\",\n    \"path\": \"/hooks\",\n    \"mappings\": [\n      {\n        \"match\": { \"path\": \"notify\" },\n        \"action\": \"webhook\",\n        \"url\": \"https://api.example.com/notify\",\n        \"method\": \"POST\",\n        \"headers\": {\n          \"Authorization\": \"Bearer ${WEBHOOK_TOKEN}\",\n          \"Content-Type\": \"application/json\"\n        }\n      }\n    ]\n  }\n}\n",[116,767,768,772,778,788,799,809,815,819,834,845,857,869,876,888,898,903,907,911,915],{"__ignoreMap":114},[119,769,770],{"class":121,"line":122},[119,771,126],{"class":125},[119,773,774,776],{"class":121,"line":129},[119,775,133],{"class":132},[119,777,136],{"class":125},[119,779,780,782,784,786],{"class":121,"line":139},[119,781,142],{"class":132},[119,783,145],{"class":125},[119,785,148],{"class":132},[119,787,151],{"class":125},[119,789,790,792,794,797],{"class":121,"line":154},[119,791,157],{"class":132},[119,793,145],{"class":125},[119,795,796],{"class":162},"\"webhook-secret-token\"",[119,798,151],{"class":125},[119,800,801,803,805,807],{"class":121,"line":168},[119,802,171],{"class":132},[119,804,145],{"class":125},[119,806,176],{"class":162},[119,808,151],{"class":125},[119,810,811,813],{"class":121,"line":181},[119,812,184],{"class":132},[119,814,187],{"class":125},[119,816,817],{"class":121,"line":190},[119,818,193],{"class":125},[119,820,821,823,825,827,829,832],{"class":121,"line":196},[119,822,199],{"class":132},[119,824,202],{"class":125},[119,826,205],{"class":132},[119,828,145],{"class":125},[119,830,831],{"class":162},"\"notify\"",[119,833,213],{"class":125},[119,835,836,838,840,843],{"class":121,"line":216},[119,837,219],{"class":132},[119,839,145],{"class":125},[119,841,842],{"class":162},"\"webhook\"",[119,844,151],{"class":125},[119,846,847,850,852,855],{"class":121,"line":229},[119,848,849],{"class":132},"        \"url\"",[119,851,145],{"class":125},[119,853,854],{"class":162},"\"https://api.example.com/notify\"",[119,856,151],{"class":125},[119,858,859,862,864,867],{"class":121,"line":242},[119,860,861],{"class":132},"        \"method\"",[119,863,145],{"class":125},[119,865,866],{"class":162},"\"POST\"",[119,868,151],{"class":125},[119,870,871,874],{"class":121,"line":253},[119,872,873],{"class":132},"        \"headers\"",[119,875,136],{"class":125},[119,877,878,881,883,886],{"class":121,"line":259},[119,879,880],{"class":132},"          \"Authorization\"",[119,882,145],{"class":125},[119,884,885],{"class":162},"\"Bearer ${WEBHOOK_TOKEN}\"",[119,887,151],{"class":125},[119,889,890,893,895],{"class":121,"line":265},[119,891,892],{"class":132},"          \"Content-Type\"",[119,894,145],{"class":125},[119,896,897],{"class":162},"\"application/json\"\n",[119,899,900],{"class":121,"line":271},[119,901,902],{"class":125},"        }\n",[119,904,905],{"class":121,"line":463},[119,906,256],{"class":125},[119,908,909],{"class":121,"line":468},[119,910,262],{"class":125},[119,912,913],{"class":121,"line":726},[119,914,268],{"class":125},[119,916,917],{"class":121,"line":732},[119,918,274],{"class":125},[105,920,922],{"id":921},"案例-5定时任务触发","案例 5：定时任务触发",[14,924,925],{},"配置定时执行的任务：",[109,927,929],{"className":111,"code":928,"language":113,"meta":114,"style":114},"{\n  \"cron\": {\n    \"enabled\": true,\n    \"entries\": [\n      {\n        \"id\": \"daily-report\",\n        \"schedule\": \"0 9 * * *\",\n        \"action\": \"agent\",\n        \"agentId\": \"main\",\n        \"message\": \"请生成今日工作简报\"\n      },\n      {\n        \"id\": \"weekly-summary\",\n        \"schedule\": \"0 18 * * 5\",\n        \"action\": \"webhook\",\n        \"url\": \"https://api.example.com/weekly-summary\"\n      }\n    ]\n  }\n}\n",[116,930,931,935,942,952,958,962,974,986,996,1006,1016,1021,1025,1036,1047,1057,1066,1070,1074,1078],{"__ignoreMap":114},[119,932,933],{"class":121,"line":122},[119,934,126],{"class":125},[119,936,937,940],{"class":121,"line":129},[119,938,939],{"class":132},"  \"cron\"",[119,941,136],{"class":125},[119,943,944,946,948,950],{"class":121,"line":139},[119,945,142],{"class":132},[119,947,145],{"class":125},[119,949,148],{"class":132},[119,951,151],{"class":125},[119,953,954,956],{"class":121,"line":154},[119,955,298],{"class":132},[119,957,187],{"class":125},[119,959,960],{"class":121,"line":168},[119,961,193],{"class":125},[119,963,964,967,969,972],{"class":121,"line":181},[119,965,966],{"class":132},"        \"id\"",[119,968,145],{"class":125},[119,970,971],{"class":162},"\"daily-report\"",[119,973,151],{"class":125},[119,975,976,979,981,984],{"class":121,"line":190},[119,977,978],{"class":132},"        \"schedule\"",[119,980,145],{"class":125},[119,982,983],{"class":162},"\"0 9 * * *\"",[119,985,151],{"class":125},[119,987,988,990,992,994],{"class":121,"line":196},[119,989,219],{"class":132},[119,991,145],{"class":125},[119,993,224],{"class":162},[119,995,151],{"class":125},[119,997,998,1000,1002,1004],{"class":121,"line":216},[119,999,232],{"class":132},[119,1001,145],{"class":125},[119,1003,237],{"class":162},[119,1005,151],{"class":125},[119,1007,1008,1011,1013],{"class":121,"line":229},[119,1009,1010],{"class":132},"        \"message\"",[119,1012,145],{"class":125},[119,1014,1015],{"class":162},"\"请生成今日工作简报\"\n",[119,1017,1018],{"class":121,"line":242},[119,1019,1020],{"class":125},"      },\n",[119,1022,1023],{"class":121,"line":253},[119,1024,193],{"class":125},[119,1026,1027,1029,1031,1034],{"class":121,"line":259},[119,1028,966],{"class":132},[119,1030,145],{"class":125},[119,1032,1033],{"class":162},"\"weekly-summary\"",[119,1035,151],{"class":125},[119,1037,1038,1040,1042,1045],{"class":121,"line":265},[119,1039,978],{"class":132},[119,1041,145],{"class":125},[119,1043,1044],{"class":162},"\"0 18 * * 5\"",[119,1046,151],{"class":125},[119,1048,1049,1051,1053,1055],{"class":121,"line":271},[119,1050,219],{"class":132},[119,1052,145],{"class":125},[119,1054,842],{"class":162},[119,1056,151],{"class":125},[119,1058,1059,1061,1063],{"class":121,"line":463},[119,1060,849],{"class":132},[119,1062,145],{"class":125},[119,1064,1065],{"class":162},"\"https://api.example.com/weekly-summary\"\n",[119,1067,1068],{"class":121,"line":468},[119,1069,256],{"class":125},[119,1071,1072],{"class":121,"line":726},[119,1073,262],{"class":125},[119,1075,1076],{"class":121,"line":732},[119,1077,268],{"class":125},[119,1079,1080],{"class":121,"line":738},[119,1081,274],{"class":125},[105,1083,1085],{"id":1084},"案例-6条件触发-关键词监控","案例 6：条件触发 - 关键词监控",[14,1087,1088],{},"监控特定关键词并触发动作：",[109,1090,1092],{"className":382,"code":1091,"language":384,"meta":114,"style":114},"// hooks/keyword-monitor.js\nconst keywords = ['紧急', '重要', 'ASAP', 'urgent']\nconst notifyUrl = process.env.NOTIFY_URL\n\nmodule.exports = {\n  name: 'keyword-monitor',\n  type: 'pre-process',\n\n  async execute(context) {\n    const { message } = context\n    const content = message.content.toLowerCase()\n\n    // 检查关键词\n    const found = keywords.filter(kw =>\n      content.includes(kw.toLowerCase())\n    )\n\n    if (found.length > 0) {\n      // 发送通知\n      await fetch(notifyUrl, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n          keywords: found,\n          message: message.content,\n          timestamp: new Date().toISOString()\n        })\n      })\n\n      message.priority = 'high'\n    }\n\n    return { success: true, message }\n  }\n}\n",[116,1093,1094,1099,1104,1109,1113,1117,1122,1126,1130,1134,1138,1143,1147,1152,1157,1162,1167,1171,1176,1181,1186,1191,1196,1201,1207,1213,1219,1225,1231,1236,1242,1247,1252,1257,1262],{"__ignoreMap":114},[119,1095,1096],{"class":121,"line":122},[119,1097,1098],{},"// hooks/keyword-monitor.js\n",[119,1100,1101],{"class":121,"line":129},[119,1102,1103],{},"const keywords = ['紧急', '重要', 'ASAP', 'urgent']\n",[119,1105,1106],{"class":121,"line":139},[119,1107,1108],{},"const notifyUrl = process.env.NOTIFY_URL\n",[119,1110,1111],{"class":121,"line":154},[119,1112,412],{"emptyLinePlaceholder":411},[119,1114,1115],{"class":121,"line":168},[119,1116,396],{},[119,1118,1119],{"class":121,"line":181},[119,1120,1121],{},"  name: 'keyword-monitor',\n",[119,1123,1124],{"class":121,"line":190},[119,1125,406],{},[119,1127,1128],{"class":121,"line":196},[119,1129,412],{"emptyLinePlaceholder":411},[119,1131,1132],{"class":121,"line":216},[119,1133,417],{},[119,1135,1136],{"class":121,"line":229},[119,1137,422],{},[119,1139,1140],{"class":121,"line":242},[119,1141,1142],{},"    const content = message.content.toLowerCase()\n",[119,1144,1145],{"class":121,"line":253},[119,1146,412],{"emptyLinePlaceholder":411},[119,1148,1149],{"class":121,"line":259},[119,1150,1151],{},"    // 检查关键词\n",[119,1153,1154],{"class":121,"line":265},[119,1155,1156],{},"    const found = keywords.filter(kw =>\n",[119,1158,1159],{"class":121,"line":271},[119,1160,1161],{},"      content.includes(kw.toLowerCase())\n",[119,1163,1164],{"class":121,"line":463},[119,1165,1166],{},"    )\n",[119,1168,1169],{"class":121,"line":468},[119,1170,412],{"emptyLinePlaceholder":411},[119,1172,1173],{"class":121,"line":726},[119,1174,1175],{},"    if (found.length > 0) {\n",[119,1177,1178],{"class":121,"line":732},[119,1179,1180],{},"      // 发送通知\n",[119,1182,1183],{"class":121,"line":738},[119,1184,1185],{},"      await fetch(notifyUrl, {\n",[119,1187,1188],{"class":121,"line":743},[119,1189,1190],{},"        method: 'POST',\n",[119,1192,1193],{"class":121,"line":748},[119,1194,1195],{},"        headers: { 'Content-Type': 'application/json' },\n",[119,1197,1198],{"class":121,"line":753},[119,1199,1200],{},"        body: JSON.stringify({\n",[119,1202,1204],{"class":121,"line":1203},24,[119,1205,1206],{},"          keywords: found,\n",[119,1208,1210],{"class":121,"line":1209},25,[119,1211,1212],{},"          message: message.content,\n",[119,1214,1216],{"class":121,"line":1215},26,[119,1217,1218],{},"          timestamp: new Date().toISOString()\n",[119,1220,1222],{"class":121,"line":1221},27,[119,1223,1224],{},"        })\n",[119,1226,1228],{"class":121,"line":1227},28,[119,1229,1230],{},"      })\n",[119,1232,1234],{"class":121,"line":1233},29,[119,1235,412],{"emptyLinePlaceholder":411},[119,1237,1239],{"class":121,"line":1238},30,[119,1240,1241],{},"      message.priority = 'high'\n",[119,1243,1245],{"class":121,"line":1244},31,[119,1246,361],{},[119,1248,1250],{"class":121,"line":1249},32,[119,1251,412],{"emptyLinePlaceholder":411},[119,1253,1255],{"class":121,"line":1254},33,[119,1256,460],{},[119,1258,1260],{"class":121,"line":1259},34,[119,1261,268],{},[119,1263,1265],{"class":121,"line":1264},35,[119,1266,274],{},[105,1268,1270],{"id":1269},"案例-7渠道路由-多-agent-分发","案例 7：渠道路由 - 多 Agent 分发",[14,1272,1273],{},"根据消息来源路由到不同的 Agent：",[109,1275,1277],{"className":111,"code":1276,"language":113,"meta":114,"style":114},"{\n  \"bindings\": [\n    {\n      \"agentId\": \"work-agent\",\n      \"match\": {\n        \"channel\": \"slack\",\n        \"channelId\": \"work-channel-id\"\n      }\n    },\n    {\n      \"agentId\": \"personal-agent\",\n      \"match\": {\n        \"channel\": \"telegram\",\n        \"accountId\": \"personal-account\"\n      }\n    },\n    {\n      \"agentId\": \"support-agent\",\n      \"match\": {\n        \"channel\": \"discord\",\n        \"guildId\": \"support-guild-id\"\n      }\n    }\n  ]\n}\n",[116,1278,1279,1283,1290,1295,1307,1314,1326,1336,1340,1345,1349,1360,1366,1377,1387,1391,1395,1399,1410,1416,1427,1437,1441,1445,1450],{"__ignoreMap":114},[119,1280,1281],{"class":121,"line":122},[119,1282,126],{"class":125},[119,1284,1285,1288],{"class":121,"line":129},[119,1286,1287],{"class":132},"  \"bindings\"",[119,1289,187],{"class":125},[119,1291,1292],{"class":121,"line":139},[119,1293,1294],{"class":125},"    {\n",[119,1296,1297,1300,1302,1305],{"class":121,"line":154},[119,1298,1299],{"class":132},"      \"agentId\"",[119,1301,145],{"class":125},[119,1303,1304],{"class":162},"\"work-agent\"",[119,1306,151],{"class":125},[119,1308,1309,1312],{"class":121,"line":168},[119,1310,1311],{"class":132},"      \"match\"",[119,1313,136],{"class":125},[119,1315,1316,1319,1321,1324],{"class":121,"line":181},[119,1317,1318],{"class":132},"        \"channel\"",[119,1320,145],{"class":125},[119,1322,1323],{"class":162},"\"slack\"",[119,1325,151],{"class":125},[119,1327,1328,1331,1333],{"class":121,"line":190},[119,1329,1330],{"class":132},"        \"channelId\"",[119,1332,145],{"class":125},[119,1334,1335],{"class":162},"\"work-channel-id\"\n",[119,1337,1338],{"class":121,"line":196},[119,1339,256],{"class":125},[119,1341,1342],{"class":121,"line":216},[119,1343,1344],{"class":125},"    },\n",[119,1346,1347],{"class":121,"line":229},[119,1348,1294],{"class":125},[119,1350,1351,1353,1355,1358],{"class":121,"line":242},[119,1352,1299],{"class":132},[119,1354,145],{"class":125},[119,1356,1357],{"class":162},"\"personal-agent\"",[119,1359,151],{"class":125},[119,1361,1362,1364],{"class":121,"line":253},[119,1363,1311],{"class":132},[119,1365,136],{"class":125},[119,1367,1368,1370,1372,1375],{"class":121,"line":259},[119,1369,1318],{"class":132},[119,1371,145],{"class":125},[119,1373,1374],{"class":162},"\"telegram\"",[119,1376,151],{"class":125},[119,1378,1379,1382,1384],{"class":121,"line":265},[119,1380,1381],{"class":132},"        \"accountId\"",[119,1383,145],{"class":125},[119,1385,1386],{"class":162},"\"personal-account\"\n",[119,1388,1389],{"class":121,"line":271},[119,1390,256],{"class":125},[119,1392,1393],{"class":121,"line":463},[119,1394,1344],{"class":125},[119,1396,1397],{"class":121,"line":468},[119,1398,1294],{"class":125},[119,1400,1401,1403,1405,1408],{"class":121,"line":726},[119,1402,1299],{"class":132},[119,1404,145],{"class":125},[119,1406,1407],{"class":162},"\"support-agent\"",[119,1409,151],{"class":125},[119,1411,1412,1414],{"class":121,"line":732},[119,1413,1311],{"class":132},[119,1415,136],{"class":125},[119,1417,1418,1420,1422,1425],{"class":121,"line":738},[119,1419,1318],{"class":132},[119,1421,145],{"class":125},[119,1423,1424],{"class":162},"\"discord\"",[119,1426,151],{"class":125},[119,1428,1429,1432,1434],{"class":121,"line":743},[119,1430,1431],{"class":132},"        \"guildId\"",[119,1433,145],{"class":125},[119,1435,1436],{"class":162},"\"support-guild-id\"\n",[119,1438,1439],{"class":121,"line":748},[119,1440,256],{"class":125},[119,1442,1443],{"class":121,"line":753},[119,1444,361],{"class":125},[119,1446,1447],{"class":121,"line":1203},[119,1448,1449],{"class":125},"  ]\n",[119,1451,1452],{"class":121,"line":1209},[119,1453,274],{"class":125},[105,1455,1457],{"id":1456},"案例-8消息转换-格式适配","案例 8：消息转换 - 格式适配",[14,1459,1460],{},"将消息转换为特定格式：",[109,1462,1464],{"className":382,"code":1463,"language":384,"meta":114,"style":114},"// hooks/format-adapter.js\nmodule.exports = {\n  name: 'format-adapter',\n  type: 'post-process',\n\n  async execute(context) {\n    const { response, channel } = context\n\n    // 根据渠道转换格式\n    if (channel === 'telegram') {\n      // Telegram Markdown 格式\n      response.content = convertToTelegramMarkdown(response.content)\n    } else if (channel === 'discord') {\n      // Discord 格式\n      response.content = convertToDiscordFormat(response.content)\n    }\n\n    return { success: true, response }\n  }\n}\n\nfunction convertToTelegramMarkdown(text) {\n  // 转换逻辑\n  return text\n    .replace(/\\*\\*(.+?)\\*\\*/g, '*$1*')\n    .replace(/__(.+?)__/g, '_$1_')\n}\n\nfunction convertToDiscordFormat(text) {\n  // 转换逻辑\n  return text\n    .replace(/\\*(.+?)\\*/g, '_$1_')\n}\n",[116,1465,1466,1471,1475,1480,1484,1488,1492,1497,1501,1506,1511,1516,1521,1526,1531,1536,1540,1544,1548,1552,1556,1560,1565,1570,1575,1580,1585,1589,1593,1598,1602,1606,1611],{"__ignoreMap":114},[119,1467,1468],{"class":121,"line":122},[119,1469,1470],{},"// hooks/format-adapter.js\n",[119,1472,1473],{"class":121,"line":129},[119,1474,396],{},[119,1476,1477],{"class":121,"line":139},[119,1478,1479],{},"  name: 'format-adapter',\n",[119,1481,1482],{"class":121,"line":154},[119,1483,577],{},[119,1485,1486],{"class":121,"line":168},[119,1487,412],{"emptyLinePlaceholder":411},[119,1489,1490],{"class":121,"line":181},[119,1491,417],{},[119,1493,1494],{"class":121,"line":190},[119,1495,1496],{},"    const { response, channel } = context\n",[119,1498,1499],{"class":121,"line":196},[119,1500,412],{"emptyLinePlaceholder":411},[119,1502,1503],{"class":121,"line":216},[119,1504,1505],{},"    // 根据渠道转换格式\n",[119,1507,1508],{"class":121,"line":229},[119,1509,1510],{},"    if (channel === 'telegram') {\n",[119,1512,1513],{"class":121,"line":242},[119,1514,1515],{},"      // Telegram Markdown 格式\n",[119,1517,1518],{"class":121,"line":253},[119,1519,1520],{},"      response.content = convertToTelegramMarkdown(response.content)\n",[119,1522,1523],{"class":121,"line":259},[119,1524,1525],{},"    } else if (channel === 'discord') {\n",[119,1527,1528],{"class":121,"line":265},[119,1529,1530],{},"      // Discord 格式\n",[119,1532,1533],{"class":121,"line":271},[119,1534,1535],{},"      response.content = convertToDiscordFormat(response.content)\n",[119,1537,1538],{"class":121,"line":463},[119,1539,361],{},[119,1541,1542],{"class":121,"line":468},[119,1543,412],{"emptyLinePlaceholder":411},[119,1545,1546],{"class":121,"line":726},[119,1547,627],{},[119,1549,1550],{"class":121,"line":732},[119,1551,268],{},[119,1553,1554],{"class":121,"line":738},[119,1555,274],{},[119,1557,1558],{"class":121,"line":743},[119,1559,412],{"emptyLinePlaceholder":411},[119,1561,1562],{"class":121,"line":748},[119,1563,1564],{},"function convertToTelegramMarkdown(text) {\n",[119,1566,1567],{"class":121,"line":753},[119,1568,1569],{},"  // 转换逻辑\n",[119,1571,1572],{"class":121,"line":1203},[119,1573,1574],{},"  return text\n",[119,1576,1577],{"class":121,"line":1209},[119,1578,1579],{},"    .replace(/\\*\\*(.+?)\\*\\*/g, '*$1*')\n",[119,1581,1582],{"class":121,"line":1215},[119,1583,1584],{},"    .replace(/__(.+?)__/g, '_$1_')\n",[119,1586,1587],{"class":121,"line":1221},[119,1588,274],{},[119,1590,1591],{"class":121,"line":1227},[119,1592,412],{"emptyLinePlaceholder":411},[119,1594,1595],{"class":121,"line":1233},[119,1596,1597],{},"function convertToDiscordFormat(text) {\n",[119,1599,1600],{"class":121,"line":1238},[119,1601,1569],{},[119,1603,1604],{"class":121,"line":1244},[119,1605,1574],{},[119,1607,1608],{"class":121,"line":1249},[119,1609,1610],{},"    .replace(/\\*(.+?)\\*/g, '_$1_')\n",[119,1612,1613],{"class":121,"line":1254},[119,1614,274],{},[18,1616,1617],{"id":1617},"高级配置",[105,1619,1621],{"id":1620},"hook-链式执行","Hook 链式执行",[14,1623,1624],{},"多个 Hook 按优先级顺序执行：",[109,1626,1628],{"className":111,"code":1627,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"filter\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/filter.js\",\n        \"priority\": 1\n      },\n      \"transform\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/transform.js\",\n        \"priority\": 2\n      },\n      \"log\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/log.js\",\n        \"priority\": 3\n      }\n    }\n  }\n}\n",[116,1629,1630,1634,1640,1646,1653,1663,1673,1684,1693,1697,1704,1714,1724,1735,1744,1748,1755,1765,1775,1786,1795,1799,1803,1807],{"__ignoreMap":114},[119,1631,1632],{"class":121,"line":122},[119,1633,126],{"class":125},[119,1635,1636,1638],{"class":121,"line":129},[119,1637,133],{"class":132},[119,1639,136],{"class":125},[119,1641,1642,1644],{"class":121,"line":139},[119,1643,298],{"class":132},[119,1645,136],{"class":125},[119,1647,1648,1651],{"class":121,"line":154},[119,1649,1650],{"class":132},"      \"filter\"",[119,1652,136],{"class":125},[119,1654,1655,1657,1659,1661],{"class":121,"line":168},[119,1656,312],{"class":132},[119,1658,145],{"class":125},[119,1660,148],{"class":132},[119,1662,151],{"class":125},[119,1664,1665,1667,1669,1671],{"class":121,"line":181},[119,1666,323],{"class":132},[119,1668,145],{"class":125},[119,1670,328],{"class":162},[119,1672,151],{"class":125},[119,1674,1675,1677,1679,1682],{"class":121,"line":190},[119,1676,335],{"class":132},[119,1678,145],{"class":125},[119,1680,1681],{"class":162},"\"./hooks/filter.js\"",[119,1683,151],{"class":125},[119,1685,1686,1688,1690],{"class":121,"line":196},[119,1687,347],{"class":132},[119,1689,145],{"class":125},[119,1691,1692],{"class":132},"1\n",[119,1694,1695],{"class":121,"line":216},[119,1696,1020],{"class":125},[119,1698,1699,1702],{"class":121,"line":229},[119,1700,1701],{"class":132},"      \"transform\"",[119,1703,136],{"class":125},[119,1705,1706,1708,1710,1712],{"class":121,"line":242},[119,1707,312],{"class":132},[119,1709,145],{"class":125},[119,1711,148],{"class":132},[119,1713,151],{"class":125},[119,1715,1716,1718,1720,1722],{"class":121,"line":253},[119,1717,323],{"class":132},[119,1719,145],{"class":125},[119,1721,328],{"class":162},[119,1723,151],{"class":125},[119,1725,1726,1728,1730,1733],{"class":121,"line":259},[119,1727,335],{"class":132},[119,1729,145],{"class":125},[119,1731,1732],{"class":162},"\"./hooks/transform.js\"",[119,1734,151],{"class":125},[119,1736,1737,1739,1741],{"class":121,"line":265},[119,1738,347],{"class":132},[119,1740,145],{"class":125},[119,1742,1743],{"class":132},"2\n",[119,1745,1746],{"class":121,"line":271},[119,1747,1020],{"class":125},[119,1749,1750,1753],{"class":121,"line":463},[119,1751,1752],{"class":132},"      \"log\"",[119,1754,136],{"class":125},[119,1756,1757,1759,1761,1763],{"class":121,"line":468},[119,1758,312],{"class":132},[119,1760,145],{"class":125},[119,1762,148],{"class":132},[119,1764,151],{"class":125},[119,1766,1767,1769,1771,1773],{"class":121,"line":726},[119,1768,323],{"class":132},[119,1770,145],{"class":125},[119,1772,328],{"class":162},[119,1774,151],{"class":125},[119,1776,1777,1779,1781,1784],{"class":121,"line":732},[119,1778,335],{"class":132},[119,1780,145],{"class":125},[119,1782,1783],{"class":162},"\"./hooks/log.js\"",[119,1785,151],{"class":125},[119,1787,1788,1790,1792],{"class":121,"line":738},[119,1789,347],{"class":132},[119,1791,145],{"class":125},[119,1793,1794],{"class":132},"3\n",[119,1796,1797],{"class":121,"line":743},[119,1798,256],{"class":125},[119,1800,1801],{"class":121,"line":748},[119,1802,361],{"class":125},[119,1804,1805],{"class":121,"line":753},[119,1806,268],{"class":125},[119,1808,1809],{"class":121,"line":1203},[119,1810,274],{"class":125},[105,1812,1813],{"id":1813},"条件匹配",[14,1815,1816],{},"使用条件控制 Hook 执行：",[109,1818,1820],{"className":111,"code":1819,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"work-hours-only\": {\n        \"enabled\": true,\n        \"type\": \"pre-process\",\n        \"handler\": \"./hooks/work-hours.js\",\n        \"condition\": {\n          \"time\": {\n            \"start\": \"09:00\",\n            \"end\": \"18:00\",\n            \"timezone\": \"Asia/Shanghai\"\n          },\n          \"days\": [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n        }\n      }\n    }\n  }\n}\n",[116,1821,1822,1826,1832,1838,1845,1855,1865,1876,1883,1890,1902,1914,1924,1929,1964,1968,1972,1976,1980],{"__ignoreMap":114},[119,1823,1824],{"class":121,"line":122},[119,1825,126],{"class":125},[119,1827,1828,1830],{"class":121,"line":129},[119,1829,133],{"class":132},[119,1831,136],{"class":125},[119,1833,1834,1836],{"class":121,"line":139},[119,1835,298],{"class":132},[119,1837,136],{"class":125},[119,1839,1840,1843],{"class":121,"line":154},[119,1841,1842],{"class":132},"      \"work-hours-only\"",[119,1844,136],{"class":125},[119,1846,1847,1849,1851,1853],{"class":121,"line":168},[119,1848,312],{"class":132},[119,1850,145],{"class":125},[119,1852,148],{"class":132},[119,1854,151],{"class":125},[119,1856,1857,1859,1861,1863],{"class":121,"line":181},[119,1858,323],{"class":132},[119,1860,145],{"class":125},[119,1862,328],{"class":162},[119,1864,151],{"class":125},[119,1866,1867,1869,1871,1874],{"class":121,"line":190},[119,1868,335],{"class":132},[119,1870,145],{"class":125},[119,1872,1873],{"class":162},"\"./hooks/work-hours.js\"",[119,1875,151],{"class":125},[119,1877,1878,1881],{"class":121,"line":196},[119,1879,1880],{"class":132},"        \"condition\"",[119,1882,136],{"class":125},[119,1884,1885,1888],{"class":121,"line":216},[119,1886,1887],{"class":132},"          \"time\"",[119,1889,136],{"class":125},[119,1891,1892,1895,1897,1900],{"class":121,"line":229},[119,1893,1894],{"class":132},"            \"start\"",[119,1896,145],{"class":125},[119,1898,1899],{"class":162},"\"09:00\"",[119,1901,151],{"class":125},[119,1903,1904,1907,1909,1912],{"class":121,"line":242},[119,1905,1906],{"class":132},"            \"end\"",[119,1908,145],{"class":125},[119,1910,1911],{"class":162},"\"18:00\"",[119,1913,151],{"class":125},[119,1915,1916,1919,1921],{"class":121,"line":253},[119,1917,1918],{"class":132},"            \"timezone\"",[119,1920,145],{"class":125},[119,1922,1923],{"class":162},"\"Asia/Shanghai\"\n",[119,1925,1926],{"class":121,"line":259},[119,1927,1928],{"class":125},"          },\n",[119,1930,1931,1934,1937,1940,1943,1946,1948,1951,1953,1956,1958,1961],{"class":121,"line":265},[119,1932,1933],{"class":132},"          \"days\"",[119,1935,1936],{"class":125},": [",[119,1938,1939],{"class":162},"\"monday\"",[119,1941,1942],{"class":125},", ",[119,1944,1945],{"class":162},"\"tuesday\"",[119,1947,1942],{"class":125},[119,1949,1950],{"class":162},"\"wednesday\"",[119,1952,1942],{"class":125},[119,1954,1955],{"class":162},"\"thursday\"",[119,1957,1942],{"class":125},[119,1959,1960],{"class":162},"\"friday\"",[119,1962,1963],{"class":125},"]\n",[119,1965,1966],{"class":121,"line":271},[119,1967,902],{"class":125},[119,1969,1970],{"class":121,"line":463},[119,1971,256],{"class":125},[119,1973,1974],{"class":121,"line":468},[119,1975,361],{"class":125},[119,1977,1978],{"class":121,"line":726},[119,1979,268],{"class":125},[119,1981,1982],{"class":121,"line":732},[119,1983,274],{"class":125},[105,1985,1986],{"id":1986},"错误处理",[14,1988,1989],{},"配置 Hook 错误处理策略：",[109,1991,1993],{"className":111,"code":1992,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"my-hook\": {\n        \"enabled\": true,\n        \"handler\": \"./hooks/my-hook.js\",\n        \"errorHandling\": {\n          \"strategy\": \"continue\",  // continue | stop | fallback\n          \"fallback\": \"./hooks/fallback.js\",\n          \"retry\": {\n            \"maxAttempts\": 3,\n            \"delay\": 1000\n          }\n        }\n      }\n    }\n  }\n}\n",[116,1994,1995,1999,2005,2011,2017,2027,2037,2044,2061,2073,2080,2092,2102,2107,2111,2115,2119,2123],{"__ignoreMap":114},[119,1996,1997],{"class":121,"line":122},[119,1998,126],{"class":125},[119,2000,2001,2003],{"class":121,"line":129},[119,2002,133],{"class":132},[119,2004,136],{"class":125},[119,2006,2007,2009],{"class":121,"line":139},[119,2008,298],{"class":132},[119,2010,136],{"class":125},[119,2012,2013,2015],{"class":121,"line":154},[119,2014,305],{"class":132},[119,2016,136],{"class":125},[119,2018,2019,2021,2023,2025],{"class":121,"line":168},[119,2020,312],{"class":132},[119,2022,145],{"class":125},[119,2024,148],{"class":132},[119,2026,151],{"class":125},[119,2028,2029,2031,2033,2035],{"class":121,"line":181},[119,2030,335],{"class":132},[119,2032,145],{"class":125},[119,2034,340],{"class":162},[119,2036,151],{"class":125},[119,2038,2039,2042],{"class":121,"line":190},[119,2040,2041],{"class":132},"        \"errorHandling\"",[119,2043,136],{"class":125},[119,2045,2046,2049,2051,2054,2057],{"class":121,"line":196},[119,2047,2048],{"class":132},"          \"strategy\"",[119,2050,145],{"class":125},[119,2052,2053],{"class":162},"\"continue\"",[119,2055,2056],{"class":125},",  ",[119,2058,2060],{"class":2059},"sJ8bj","// continue | stop | fallback\n",[119,2062,2063,2066,2068,2071],{"class":121,"line":216},[119,2064,2065],{"class":132},"          \"fallback\"",[119,2067,145],{"class":125},[119,2069,2070],{"class":162},"\"./hooks/fallback.js\"",[119,2072,151],{"class":125},[119,2074,2075,2078],{"class":121,"line":229},[119,2076,2077],{"class":132},"          \"retry\"",[119,2079,136],{"class":125},[119,2081,2082,2085,2087,2090],{"class":121,"line":242},[119,2083,2084],{"class":132},"            \"maxAttempts\"",[119,2086,145],{"class":125},[119,2088,2089],{"class":132},"3",[119,2091,151],{"class":125},[119,2093,2094,2097,2099],{"class":121,"line":253},[119,2095,2096],{"class":132},"            \"delay\"",[119,2098,145],{"class":125},[119,2100,2101],{"class":132},"1000\n",[119,2103,2104],{"class":121,"line":259},[119,2105,2106],{"class":125},"          }\n",[119,2108,2109],{"class":121,"line":265},[119,2110,902],{"class":125},[119,2112,2113],{"class":121,"line":271},[119,2114,256],{"class":125},[119,2116,2117],{"class":121,"line":463},[119,2118,361],{"class":125},[119,2120,2121],{"class":121,"line":468},[119,2122,268],{"class":125},[119,2124,2125],{"class":121,"line":726},[119,2126,274],{"class":125},[18,2128,2129],{"id":2129},"调试与监控",[105,2131,2133],{"id":2132},"启用-hook-日志","启用 Hook 日志",[109,2135,2137],{"className":111,"code":2136,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"enabled\": true,\n    \"logging\": {\n      \"enabled\": true,\n      \"level\": \"debug\",\n      \"includePayload\": true\n    }\n  }\n}\n",[116,2138,2139,2143,2149,2159,2166,2177,2189,2198,2202,2206],{"__ignoreMap":114},[119,2140,2141],{"class":121,"line":122},[119,2142,126],{"class":125},[119,2144,2145,2147],{"class":121,"line":129},[119,2146,133],{"class":132},[119,2148,136],{"class":125},[119,2150,2151,2153,2155,2157],{"class":121,"line":139},[119,2152,142],{"class":132},[119,2154,145],{"class":125},[119,2156,148],{"class":132},[119,2158,151],{"class":125},[119,2160,2161,2164],{"class":121,"line":154},[119,2162,2163],{"class":132},"    \"logging\"",[119,2165,136],{"class":125},[119,2167,2168,2171,2173,2175],{"class":121,"line":168},[119,2169,2170],{"class":132},"      \"enabled\"",[119,2172,145],{"class":125},[119,2174,148],{"class":132},[119,2176,151],{"class":125},[119,2178,2179,2182,2184,2187],{"class":121,"line":181},[119,2180,2181],{"class":132},"      \"level\"",[119,2183,145],{"class":125},[119,2185,2186],{"class":162},"\"debug\"",[119,2188,151],{"class":125},[119,2190,2191,2194,2196],{"class":121,"line":190},[119,2192,2193],{"class":132},"      \"includePayload\"",[119,2195,145],{"class":125},[119,2197,250],{"class":132},[119,2199,2200],{"class":121,"line":196},[119,2201,361],{"class":125},[119,2203,2204],{"class":121,"line":216},[119,2205,268],{"class":125},[119,2207,2208],{"class":121,"line":229},[119,2209,274],{"class":125},[105,2211,2213],{"id":2212},"查看-hook-状态","查看 Hook 状态",[109,2215,2219],{"className":2216,"code":2217,"language":2218,"meta":114,"style":114},"language-bash shiki shiki-themes github-light github-dark","# 列出所有 Hooks\nopenclaw hooks list\n\n# 查看特定 Hook 详情\nopenclaw hooks info my-hook\n\n# 测试 Hook\nopenclaw hooks test my-hook --input '{\"message\": \"test\"}'\n\n# 查看 Hook 日志\nopenclaw logs --filter hooks\n","bash",[116,2220,2221,2226,2238,2242,2247,2259,2263,2268,2286,2290,2295],{"__ignoreMap":114},[119,2222,2223],{"class":121,"line":122},[119,2224,2225],{"class":2059},"# 列出所有 Hooks\n",[119,2227,2228,2232,2235],{"class":121,"line":129},[119,2229,2231],{"class":2230},"sScJk","openclaw",[119,2233,2234],{"class":162}," hooks",[119,2236,2237],{"class":162}," list\n",[119,2239,2240],{"class":121,"line":139},[119,2241,412],{"emptyLinePlaceholder":411},[119,2243,2244],{"class":121,"line":154},[119,2245,2246],{"class":2059},"# 查看特定 Hook 详情\n",[119,2248,2249,2251,2253,2256],{"class":121,"line":168},[119,2250,2231],{"class":2230},[119,2252,2234],{"class":162},[119,2254,2255],{"class":162}," info",[119,2257,2258],{"class":162}," my-hook\n",[119,2260,2261],{"class":121,"line":181},[119,2262,412],{"emptyLinePlaceholder":411},[119,2264,2265],{"class":121,"line":190},[119,2266,2267],{"class":2059},"# 测试 Hook\n",[119,2269,2270,2272,2274,2277,2280,2283],{"class":121,"line":196},[119,2271,2231],{"class":2230},[119,2273,2234],{"class":162},[119,2275,2276],{"class":162}," test",[119,2278,2279],{"class":162}," my-hook",[119,2281,2282],{"class":132}," --input",[119,2284,2285],{"class":162}," '{\"message\": \"test\"}'\n",[119,2287,2288],{"class":121,"line":216},[119,2289,412],{"emptyLinePlaceholder":411},[119,2291,2292],{"class":121,"line":229},[119,2293,2294],{"class":2059},"# 查看 Hook 日志\n",[119,2296,2297,2299,2302,2305],{"class":121,"line":242},[119,2298,2231],{"class":2230},[119,2300,2301],{"class":162}," logs",[119,2303,2304],{"class":132}," --filter",[119,2306,2307],{"class":162}," hooks\n",[18,2309,2310],{"id":2310},"最佳实践",[105,2312,2314],{"id":2313},"_1-保持-hook-简单","1. 保持 Hook 简单",[14,2316,2317],{},"每个 Hook 只做一件事：",[109,2319,2324],{"className":2320,"code":2322,"language":2323},[2321],"language-text","✅ 好：一个 Hook 过滤敏感词，另一个 Hook 添加签名\n❌ 差：一个 Hook 同时做过滤、转换、签名\n","text",[116,2325,2322],{"__ignoreMap":114},[105,2327,2329],{"id":2328},"_2-使用优先级控制执行顺序","2. 使用优先级控制执行顺序",[109,2331,2333],{"className":111,"code":2332,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"validation\": { \"priority\": 1 },   // 先验证\n      \"transform\": { \"priority\": 10 },   // 再转换\n      \"logging\": { \"priority\": 100 }     // 最后记录\n    }\n  }\n}\n",[116,2334,2335,2339,2345,2351,2372,2390,2410,2414,2418],{"__ignoreMap":114},[119,2336,2337],{"class":121,"line":122},[119,2338,126],{"class":125},[119,2340,2341,2343],{"class":121,"line":129},[119,2342,133],{"class":132},[119,2344,136],{"class":125},[119,2346,2347,2349],{"class":121,"line":139},[119,2348,298],{"class":132},[119,2350,136],{"class":125},[119,2352,2353,2356,2358,2361,2363,2366,2369],{"class":121,"line":154},[119,2354,2355],{"class":132},"      \"validation\"",[119,2357,202],{"class":125},[119,2359,2360],{"class":132},"\"priority\"",[119,2362,145],{"class":125},[119,2364,2365],{"class":132},"1",[119,2367,2368],{"class":125}," },   ",[119,2370,2371],{"class":2059},"// 先验证\n",[119,2373,2374,2376,2378,2380,2382,2385,2387],{"class":121,"line":168},[119,2375,1701],{"class":132},[119,2377,202],{"class":125},[119,2379,2360],{"class":132},[119,2381,145],{"class":125},[119,2383,2384],{"class":132},"10",[119,2386,2368],{"class":125},[119,2388,2389],{"class":2059},"// 再转换\n",[119,2391,2392,2395,2397,2399,2401,2404,2407],{"class":121,"line":181},[119,2393,2394],{"class":132},"      \"logging\"",[119,2396,202],{"class":125},[119,2398,2360],{"class":132},[119,2400,145],{"class":125},[119,2402,2403],{"class":132},"100",[119,2405,2406],{"class":125}," }     ",[119,2408,2409],{"class":2059},"// 最后记录\n",[119,2411,2412],{"class":121,"line":190},[119,2413,361],{"class":125},[119,2415,2416],{"class":121,"line":196},[119,2417,268],{"class":125},[119,2419,2420],{"class":121,"line":216},[119,2421,274],{"class":125},[105,2423,2425],{"id":2424},"_3-处理异步操作","3. 处理异步操作",[109,2427,2429],{"className":382,"code":2428,"language":384,"meta":114,"style":114},"// 正确处理异步\nasync execute(context) {\n  try {\n    const result = await fetchData()\n    return { success: true, data: result }\n  } catch (error) {\n    console.error('Hook error:', error)\n    return { success: false, error: error.message }\n  }\n}\n",[116,2430,2431,2436,2441,2446,2451,2456,2461,2466,2471,2475],{"__ignoreMap":114},[119,2432,2433],{"class":121,"line":122},[119,2434,2435],{},"// 正确处理异步\n",[119,2437,2438],{"class":121,"line":129},[119,2439,2440],{},"async execute(context) {\n",[119,2442,2443],{"class":121,"line":139},[119,2444,2445],{},"  try {\n",[119,2447,2448],{"class":121,"line":154},[119,2449,2450],{},"    const result = await fetchData()\n",[119,2452,2453],{"class":121,"line":168},[119,2454,2455],{},"    return { success: true, data: result }\n",[119,2457,2458],{"class":121,"line":181},[119,2459,2460],{},"  } catch (error) {\n",[119,2462,2463],{"class":121,"line":190},[119,2464,2465],{},"    console.error('Hook error:', error)\n",[119,2467,2468],{"class":121,"line":196},[119,2469,2470],{},"    return { success: false, error: error.message }\n",[119,2472,2473],{"class":121,"line":216},[119,2474,268],{},[119,2476,2477],{"class":121,"line":229},[119,2478,274],{},[105,2480,2482],{"id":2481},"_4-避免阻塞操作","4. 避免阻塞操作",[109,2484,2486],{"className":382,"code":2485,"language":384,"meta":114,"style":114},"// ❌ 阻塞操作\nfunction execute(context) {\n  const data = syncFetch(url)  // 阻塞\n  return { success: true, data }\n}\n\n// ✅ 非阻塞操作\nasync function execute(context) {\n  const data = await fetch(url)  // 非阻塞\n  return { success: true, data }\n}\n",[116,2487,2488,2493,2498,2503,2508,2512,2516,2521,2526,2531,2535],{"__ignoreMap":114},[119,2489,2490],{"class":121,"line":122},[119,2491,2492],{},"// ❌ 阻塞操作\n",[119,2494,2495],{"class":121,"line":129},[119,2496,2497],{},"function execute(context) {\n",[119,2499,2500],{"class":121,"line":139},[119,2501,2502],{},"  const data = syncFetch(url)  // 阻塞\n",[119,2504,2505],{"class":121,"line":154},[119,2506,2507],{},"  return { success: true, data }\n",[119,2509,2510],{"class":121,"line":168},[119,2511,274],{},[119,2513,2514],{"class":121,"line":181},[119,2515,412],{"emptyLinePlaceholder":411},[119,2517,2518],{"class":121,"line":190},[119,2519,2520],{},"// ✅ 非阻塞操作\n",[119,2522,2523],{"class":121,"line":196},[119,2524,2525],{},"async function execute(context) {\n",[119,2527,2528],{"class":121,"line":216},[119,2529,2530],{},"  const data = await fetch(url)  // 非阻塞\n",[119,2532,2533],{"class":121,"line":229},[119,2534,2507],{},[119,2536,2537],{"class":121,"line":242},[119,2538,274],{},[105,2540,2542],{"id":2541},"_5-设置合理的超时","5. 设置合理的超时",[109,2544,2546],{"className":111,"code":2545,"language":113,"meta":114,"style":114},"{\n  \"hooks\": {\n    \"entries\": {\n      \"external-api\": {\n        \"enabled\": true,\n        \"handler\": \"./hooks/api.js\",\n        \"timeout\": 5000\n      }\n    }\n  }\n}\n",[116,2547,2548,2552,2558,2564,2571,2581,2592,2602,2606,2610,2614],{"__ignoreMap":114},[119,2549,2550],{"class":121,"line":122},[119,2551,126],{"class":125},[119,2553,2554,2556],{"class":121,"line":129},[119,2555,133],{"class":132},[119,2557,136],{"class":125},[119,2559,2560,2562],{"class":121,"line":139},[119,2561,298],{"class":132},[119,2563,136],{"class":125},[119,2565,2566,2569],{"class":121,"line":154},[119,2567,2568],{"class":132},"      \"external-api\"",[119,2570,136],{"class":125},[119,2572,2573,2575,2577,2579],{"class":121,"line":168},[119,2574,312],{"class":132},[119,2576,145],{"class":125},[119,2578,148],{"class":132},[119,2580,151],{"class":125},[119,2582,2583,2585,2587,2590],{"class":121,"line":181},[119,2584,335],{"class":132},[119,2586,145],{"class":125},[119,2588,2589],{"class":162},"\"./hooks/api.js\"",[119,2591,151],{"class":125},[119,2593,2594,2597,2599],{"class":121,"line":190},[119,2595,2596],{"class":132},"        \"timeout\"",[119,2598,145],{"class":125},[119,2600,2601],{"class":132},"5000\n",[119,2603,2604],{"class":121,"line":196},[119,2605,256],{"class":125},[119,2607,2608],{"class":121,"line":216},[119,2609,361],{"class":125},[119,2611,2612],{"class":121,"line":229},[119,2613,268],{"class":125},[119,2615,2616],{"class":121,"line":242},[119,2617,274],{"class":125},[18,2619,2620],{"id":2620},"常见问题",[105,2622,2624],{"id":2623},"hook-不执行","Hook 不执行",[2626,2627,2628,2638,2645,2648],"ol",{},[2629,2630,2631,2632,2635,2636],"li",{},"检查 ",[116,2633,2634],{},"hooks.enabled"," 是否为 ",[116,2637,148],{},[2629,2639,2640,2641,2644],{},"检查 Hook 的 ",[116,2642,2643],{},"enabled"," 字段",[2629,2646,2647],{},"检查条件匹配是否正确",[2629,2649,2650],{},"查看日志确认错误信息",[105,2652,2654],{"id":2653},"hook-执行顺序错误","Hook 执行顺序错误",[2626,2656,2657,2663,2666],{},[2629,2658,2631,2659,2662],{},[116,2660,2661],{},"priority"," 设置",[2629,2664,2665],{},"数字越小优先级越高",[2629,2667,2668],{},"相同优先级按字母顺序执行",[105,2670,2672],{"id":2671},"hook-超时","Hook 超时",[2626,2674,2675,2681,2684],{},[2629,2676,2677,2678,2662],{},"增加 ",[116,2679,2680],{},"timeout",[2629,2682,2683],{},"优化 Hook 逻辑",[2629,2685,2686],{},"使用异步操作",[18,2688,2689],{"id":2689},"下一步",[2691,2692,2693,2700,2706,2712],"ul",{},[2629,2694,2695],{},[2696,2697,2699],"a",{"href":2698},"/docs/manual/hooks-overview","Hooks 概览",[2629,2701,2702],{},[2696,2703,2705],{"href":2704},"/best-practices/custom-skill-development","自定义技能开发",[2629,2707,2708],{},[2696,2709,2711],{"href":2710},"/best-practices/automation-workflows","自动化工作流",[2629,2713,2714],{},[2696,2715,2717],{"href":2716},"/docs/reference/configuration-reference","配置参考",[2719,2720,2721],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#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 .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 .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}",{"title":114,"searchDepth":129,"depth":129,"links":2723},[2724,2725,2729,2739,2744,2748,2755,2760],{"id":20,"depth":129,"text":21},{"id":102,"depth":129,"text":103,"children":2726},[2727,2728],{"id":107,"depth":139,"text":107},{"id":277,"depth":139,"text":278},{"id":372,"depth":129,"text":372,"children":2730},[2731,2732,2733,2734,2735,2736,2737,2738],{"id":375,"depth":139,"text":376},{"id":549,"depth":139,"text":550},{"id":638,"depth":139,"text":639},{"id":758,"depth":139,"text":759},{"id":921,"depth":139,"text":922},{"id":1084,"depth":139,"text":1085},{"id":1269,"depth":139,"text":1270},{"id":1456,"depth":139,"text":1457},{"id":1617,"depth":129,"text":1617,"children":2740},[2741,2742,2743],{"id":1620,"depth":139,"text":1621},{"id":1813,"depth":139,"text":1813},{"id":1986,"depth":139,"text":1986},{"id":2129,"depth":129,"text":2129,"children":2745},[2746,2747],{"id":2132,"depth":139,"text":2133},{"id":2212,"depth":139,"text":2213},{"id":2310,"depth":129,"text":2310,"children":2749},[2750,2751,2752,2753,2754],{"id":2313,"depth":139,"text":2314},{"id":2328,"depth":139,"text":2329},{"id":2424,"depth":139,"text":2425},{"id":2481,"depth":139,"text":2482},{"id":2541,"depth":139,"text":2542},{"id":2620,"depth":129,"text":2620,"children":2756},[2757,2758,2759],{"id":2623,"depth":139,"text":2624},{"id":2653,"depth":139,"text":2654},{"id":2671,"depth":139,"text":2672},{"id":2689,"depth":129,"text":2689},"实践",null,"通过实际案例学习 OpenClaw Hooks 的使用，包括消息处理、自动化触发、内容过滤和外部集成。","中级","md",{},"/best-practices/hooks-practical-guide",{"title":5,"description":2763},"official","best-practices/hooks-practical-guide",[2772,2773,2774,2775],"hooks","automation","workflows","integration","2026-03-13","WJ3bZULavRibEmJf4GrG30C8_4EdkmpJSsaXYN3FFiY",{"generatedAt":2779,"collections":2780,"totals":5283},"2026-04-01T13:45:24.307Z",{"docs":2781,"news":3929,"bestPractices":4666},{"count":2782,"items":2783},161,[2784,2798,2809,2818,2827,2832,2837,2843,2852,2859,2868,2875,2884,2892,2900,2907,2914,2920,2927,2934,2943,2951,2960,2968,2977,2986,2993,2998,3006,3015,3023,3032,3040,3045,3052,3060,3069,3076,3084,3089,3096,3101,3109,3116,3119,3129,3138,3146,3154,3161,3169,3175,3180,3186,3195,3200,3205,3212,3218,3226,3233,3239,3246,3251,3257,3264,3270,3280,3286,3295,3301,3306,3311,3319,3326,3332,3339,3347,3354,3361,3370,3378,3386,3393,3399,3406,3412,3421,3427,3434,3439,3448,3456,3464,3473,3480,3487,3497,3503,3509,3514,3522,3529,3536,3543,3549,3556,3561,3571,3582,3588,3594,3600,3606,3613,3620,3627,3636,3641,3646,3653,3660,3669,3676,3683,3689,3695,3702,3708,3713,3718,3725,3731,3739,3745,3752,3758,3767,3773,3779,3786,3792,3798,3806,3814,3819,3827,3833,3839,3846,3853,3858,3865,3875,3882,3888,3895,3901,3908,3914,3923],{"title":2785,"description":2786,"path":2787,"category":2788,"updatedAt":2789,"sourceType":2790,"tags":2791},"OpenClaw 核心概念","用一页建立 OpenClaw 的核心心智图，分清 Gateway、Agent、Channels、Tools、Skills、Memory 和 Control UI 各自负责什么。","/docs/getting-started/core-concepts","入门","2026-03-16","internal",[2792,2793,2794,2795,2796,2797],"concepts","gateway","agent","channels","tools","memory",{"title":2799,"description":2800,"path":2801,"category":2788,"updatedAt":2802,"sourceType":2790,"tags":2803},"如果你是开发团队，应该先走哪条入口","面向开发团队和独立开发者，帮助判断应该先理解架构、配置、渠道还是扩展能力，避免刚跑通就把 OpenClaw 做成一团难维护的实验场。","/docs/getting-started/developer-team-entry","2026-03-23",[2804,2805,2806,2807,2808],"developers","teams","architecture","configuration","skills",{"title":2810,"description":2811,"path":2812,"category":2788,"updatedAt":2802,"sourceType":2790,"tags":2813},"如果你是企业运维，应该先走哪条入口","面向企业运维和长期维护者，帮助判断应该先看 Gateway、远程访问、安全还是升级治理，避免把 OpenClaw 当成一次性安装项目。","/docs/getting-started/enterprise-ops-entry",[2814,2815,2793,2816,2817],"enterprise","operations","security","upgrades",{"title":2819,"description":2820,"path":2821,"category":2788,"updatedAt":2822,"sourceType":2769,"tags":2823},"创建第一个 Agent","从零开始创建你的第一个 OpenClaw Agent，理解 Agent 的基本概念和配置方式。","/docs/getting-started/first-agent","2026-03-12",[2794,2824,2825,2826],"quickstart","tutorial","basics",{"title":2828,"description":2829,"path":2830,"category":2788,"updatedAt":2822,"sourceType":2769,"tags":2831},"接入第一个渠道","学习如何将 OpenClaw Agent 接入消息渠道，实现多平台统一管理。","/docs/getting-started/first-channel",[2795,2824,2825,2826],{"title":2833,"description":2834,"path":2835,"category":2788,"updatedAt":2822,"sourceType":2769,"tags":2836},"添加第一个技能","学习如何为 OpenClaw Agent 添加和配置技能，让助手具备更多能力。","/docs/getting-started/first-skill",[2808,2824,2825,2826],{"title":2838,"description":2839,"path":2840,"category":2788,"updatedAt":2822,"sourceType":2769,"tags":2841},"创建第一个工作流","学习如何使用 OpenClaw 的工作流功能，实现自动化任务处理。","/docs/getting-started/first-workflow",[2842,2773,2824,2825],"workflow",{"title":2844,"description":2845,"path":2846,"category":2788,"updatedAt":2847,"sourceType":2769,"tags":2848},"快速入门","按官方推荐链路，在本机完成 OpenClaw 的安装、初始化、状态检查和第一次进入 Control UI。","/docs/getting-started/getting-started","2026-03-11",[2824,2849,2850,2851],"installation","onboarding","dashboard",{"title":2853,"description":2854,"path":2855,"category":2788,"updatedAt":2847,"sourceType":2769,"tags":2856},"Onboarding 引导流程说明","基于官方 Onboarding 思路，说明第一次配置 OpenClaw 时应该先做什么、后做什么，以及哪些事情不要过早展开。","/docs/getting-started/onboarding-guide",[2850,2857,2858,2793],"daemon","setup",{"title":2860,"description":2861,"path":2862,"category":2788,"updatedAt":2863,"sourceType":2769,"tags":2864},"Onboarding 的本地模式和远程模式怎么选","基于最新官方 Onboarding Wizard 文档，整理 openclaw onboard 在 local 与 remote 两种模式下分别会做什么、不会做什么，以及第一次使用更适合走哪条路。","/docs/getting-started/onboarding-local-vs-remote","2026-03-21",[2850,2865,2866,2793,2867],"remote","local","wizard",{"title":2869,"description":2870,"path":2871,"category":2788,"updatedAt":2802,"sourceType":2790,"tags":2872},"如果你是个人用户，应该先走哪条入口","面向个人重度使用者，帮助判断应该先从 Dashboard、WebChat、渠道、模型还是 Skills 开始，而不是一上来就把整套能力全部接齐。","/docs/getting-started/personal-user-entry",[2873,2874,2851,2795,2808],"personal","getting-started",{"title":2876,"description":2877,"path":2878,"category":2879,"updatedAt":2847,"sourceType":2769,"tags":2880},"如何开始系统理解 OpenClaw","给第一次接触 OpenClaw 的中文用户一条更清晰的阅读顺序，先建立整体认知，再进入安装、接入和运维细节。","/docs/getting-started/reading-path","使用指南",[2881,2882,2883,2850],"reading-path","overview","docs",{"title":2885,"description":2886,"path":2887,"category":2888,"updatedAt":2776,"sourceType":2769,"tags":2889},"OpenClaw 是什么","用中文快速理解 OpenClaw 的定位、使用方式和它与普通聊天产品的差别。","/docs/getting-started/what-is-openclaw","产品",[2882,2890,2795,2891],"self-hosted","assistant",{"title":2893,"description":2894,"path":2895,"category":2788,"updatedAt":2802,"sourceType":2790,"tags":2896},"我什么时候再上 Skills、Plugins 和多 Agent","帮你判断现在是否已经适合进入 Skills、Plugins、Hooks 或多 Agent 扩展，而不是在基础链路未稳定时过早堆复杂度。","/docs/getting-started/when-to-add-skills-plugins-and-multi-agent",[2808,2897,2898,2772,2899],"plugins","multi-agent","decision",{"title":2901,"description":2902,"path":2903,"category":2788,"updatedAt":2904,"sourceType":2790,"tags":2905},"我什么时候该开始接入渠道","帮你判断现在是否已经适合进入 Telegram、WhatsApp、飞书等渠道接入，而不是在最小链路未稳定时过早增加复杂度。","/docs/getting-started/when-to-connect-channels","2026-03-24",[2795,2850,2899,2793,2906],"safety",{"title":2908,"description":2909,"path":2910,"category":2788,"updatedAt":2904,"sourceType":2790,"tags":2911},"模型、配置和安全这三页分别什么时候看","用最短方式判断什么时候该去看模型选择、关键配置和安全实践，避免把问题带到错误页面里越看越乱。","/docs/getting-started/when-to-read-models-config-security",[2912,2913,2816,2899,2874],"models","configurations",{"title":2915,"description":2916,"path":2917,"category":2788,"updatedAt":2904,"sourceType":2790,"tags":2918},"Dashboard、WebChat 和聊天渠道分别什么时候用","把 OpenClaw 最常见的三个使用入口拆开，帮助你判断什么时候该进 Dashboard，什么时候该用 WebChat，什么时候才值得接入 Telegram、飞书或 WhatsApp。","/docs/getting-started/when-to-use-dashboard-webchat-or-channels",[2851,2919,2795,2899,2874],"webchat",{"title":2921,"description":2922,"path":2923,"category":2788,"updatedAt":2904,"sourceType":2790,"tags":2924},"我应该先从哪个页面开始","面向第一次进入中文站的用户，按目标、角色和当前问题判断应该先看文档、学习路径、主题中心、视频还是案例。","/docs/getting-started/which-page-should-i-start-with",[2874,2899,2883,2925,2926],"paths","topics",{"title":2928,"description":2929,"path":2930,"category":2888,"updatedAt":2847,"sourceType":2769,"tags":2931},"OpenClaw 适合哪些用户","判断你是否真的需要 OpenClaw，以及它更适合哪类中文用户和团队。","/docs/getting-started/who-is-openclaw-for",[2932,2805,2933,2890],"users","scenarios",{"title":2935,"description":2936,"path":2937,"category":2938,"updatedAt":2847,"sourceType":2939,"tags":2940},"Agent 工作区结构说明","了解 OpenClaw 工作区里各类核心文件的作用，包括 AGENTS、SOUL、USER、MEMORY、日志、skills 和 sessions。","/docs/manual/agent-workspace","功能","third-party",[2941,2942,2797,2808],"workspace","soul",{"title":2944,"description":2945,"path":2946,"category":2947,"updatedAt":2847,"sourceType":2769,"tags":2948},"Gateway 架构概览","理解 OpenClaw 的 Gateway、Control-plane 客户端和 Nodes 如何协作，以及为什么它是一个单一长连接网关系统。","/docs/manual/architecture","架构",[2793,2949,2806,2950],"nodes","control-plane",{"title":2952,"description":2953,"path":2954,"category":2938,"updatedAt":2955,"sourceType":2769,"tags":2956},"bindings 的优先级怎么影响 agent 选择","基于最新官方 Channel Routing 与 Configuration 文档，解释 peer、guild、team、account、channel 和 default agent 的命中顺序，以及为什么 binding 命中问题常常看起来像“模型选错了”。","/docs/manual/bindings-precedence-and-agent-selection","2026-03-22",[2957,2958,2959,2795,2807],"bindings","routing","agents",{"title":2961,"description":2962,"path":2963,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":2964},"BlueBubbles 与 iMessage 接入","为什么官方更推荐 BlueBubbles，而不是 legacy imsg，以及远程 Mac 和 webhook 模式下该注意什么。","/docs/manual/bluebubbles-imessage",[2795,2965,2966,2967,85],"bluebubbles","imessage","macos",{"title":2969,"description":2970,"path":2971,"category":2938,"updatedAt":2972,"sourceType":2769,"tags":2973},"Broadcast Groups 和普通 routing 的边界怎么区分","基于最新官方 Broadcast Groups 与 Channel Routing 文档，解释 Broadcast Groups 何时会生效、为什么它不是 bindings 的替代品，以及多代理同群运行时的 session、工具和响应顺序边界。","/docs/manual/broadcast-groups-and-routing-boundaries","2026-03-25",[2974,2958,2975,2959,2976],"broadcast","groups","session",{"title":2978,"description":2979,"path":2980,"category":2981,"updatedAt":2982,"sourceType":2769,"tags":2983},"Broadcast 和普通 bindings 谁先生效，什么时候该用哪一个","基于最新官方 Broadcast Groups、Channel Routing 与 Groups 文档，整理 broadcast、bindings、group policy 和 mention gating 的生效顺序，帮助团队区分“多 agent 协作”和“单 agent 路由”到底该落在哪层。","/docs/manual/broadcast-vs-binding-precedence","使用说明","2026-03-29",[2974,2957,2958,2975,2984,2985],"precedence","manual",{"title":2987,"description":2988,"path":2989,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":2990},"Camera Capture 与拍照/短视频能力","理解 OpenClaw 的 camera capture 如何通过 nodes 暴露给 agent，以及设备权限和用户设置为什么比命令本身更重要。","/docs/manual/camera-capture",[2991,2949,2992,2967,2794],"camera","mobile",{"title":2994,"description":2995,"path":2996,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":2997},"频道与 Session 路由怎么决定上下文边界","基于最新官方 Channel Routing 文档，整理 OpenClaw 的 session key 形状、DM/main 合并、线程隔离、binding 优先级，以及为什么 routing 不是模型自己决定的。","/docs/manual/channel-routing-and-session-keys",[2958,2976,2795,2957,2975],{"title":2999,"description":3000,"path":3001,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3002},"OpenClaw 渠道能力概览","了解 OpenClaw 当前支持的主要聊天渠道、接入方式，以及第一次应该如何选择和配置渠道。","/docs/manual/channels-overview",[2795,3003,3004,3005],"telegram","whatsapp","discord",{"title":3007,"description":3008,"path":3009,"category":2938,"updatedAt":2955,"sourceType":2769,"tags":3010},"ClawHub 的搜索、信号和信任边界","基于最新官方 ClawHub 文档，整理技能注册表里的搜索、标签、下载信号、举报与 moderation 机制，以及中文用户挑选技能时最该看什么。","/docs/manual/clawhub-discovery-and-trust-signals",[3011,2808,3012,3013,3014],"clawhub","registry","moderation","discovery",{"title":3016,"description":3017,"path":3018,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3019},"ClawHub 的版本、锁文件和 sync 怎么理解","基于最新官方 ClawHub 文档，整理 skill bundle 的版本化、.clawhub/lock.json 的作用、sync 的扫描规则，以及为什么 ClawHub 不只是“安装站”。","/docs/manual/clawhub-versioning-and-sync",[3011,2808,3020,3021,3022],"sync","lockfile","versioning",{"title":3024,"description":3025,"path":3026,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3027},"社区插件目录怎么用","基于最新官方插件文档，整理 Community plugins 页面里最重要的筛选思路，帮助你判断哪些第三方插件值得装、哪些只适合观察。","/docs/manual/community-plugins-directory",[2897,3028,3029,3030,3031],"community","ecosystem","extensions","directory",{"title":3033,"description":3034,"path":3035,"category":2981,"updatedAt":2982,"sourceType":2769,"tags":3036},"Control UI 的 Tools 面板为什么更像运行时目录，不是静态配置页","基于最新官方 WebChat 文档，解释 Control UI `/agents` 里的 Tools 面板如何通过 tools.catalog 拉取运行时目录、何时回退到静态列表，以及为什么真正的可用性最终仍由 allow/deny 和多层策略优先级决定。","/docs/manual/control-ui-tools-catalog-and-policy-precedence",[3037,2796,3038,3039,2985],"control-ui","catalog","policy",{"title":3041,"description":3042,"path":3043,"category":2788,"updatedAt":2847,"sourceType":2769,"tags":3044},"Control UI 是什么","理解 Control UI 在 OpenClaw 中承担的角色，以及首次安装、排错和长期运行时应该如何使用它。","/docs/manual/control-ui",[2851,3037,2793,2815],{"title":3046,"description":3047,"path":3048,"category":2888,"updatedAt":2847,"sourceType":2769,"tags":3049},"OpenClaw 核心能力总览","用一页理解 OpenClaw 当前最重要的能力结构，包括渠道、控制台、扩展和运行边界。","/docs/manual/core-capabilities",[3050,2795,2808,3051],"capabilities","voice",{"title":3053,"description":3054,"path":3055,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3056},"Dashboard 快速打开与认证行为","基于最新官方 Dashboard 文档，整理 openclaw dashboard 的快速打开路径、token 在浏览器里的保存行为，以及本地与远程打开时最容易混淆的认证边界。","/docs/manual/dashboard-fast-path-and-auth",[2851,3037,3057,3058,3059],"auth","token","browser",{"title":3061,"description":3062,"path":3063,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3064},"Deepgram 音频转录怎么接","基于最新官方 Deepgram provider 文档，整理 OpenClaw 里语音转录的接入方式、配置重点，以及它和聊天模型 provider 的边界。","/docs/manual/deepgram-audio-transcription",[3065,3066,3067,3051,3068],"deepgram","transcription","audio","providers",{"title":3070,"description":3071,"path":3072,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3073},"Discord 与 Slack 接入重点","团队协作场景里，Discord 和 Slack 分别适合什么、和 Telegram/WhatsApp 的差别在哪里，以及群组响应策略该怎么收敛。","/docs/manual/discord-and-slack",[2795,3005,3074,2941,3075],"slack","team",{"title":3077,"description":3078,"path":3079,"category":2938,"updatedAt":2822,"sourceType":2769,"tags":3080},"Exec 工具、apply_patch 与执行审批","基于官方 exec、apply_patch 和 exec approvals 文档，解释高权限工具如何工作，为什么审批是硬边界，以及哪些配置最值得先看。","/docs/manual/exec-tools-and-approvals",[3081,3082,3083,2796,2816],"exec","apply-patch","approvals",{"title":3085,"description":3086,"path":3087,"category":2938,"updatedAt":2982,"sourceType":2769,"tags":3088},"从 Skills 到 Workflows：OpenClaw 扩展栈完整地图","把 Skills、Tools、插件、Hooks、ClawHub、OpenProse、Lobster 和审批流程收成一张扩展地图，帮助你判断什么时候该引入哪一层复杂度。","/docs/manual/extension-stack-full-map",[2808,2796,2897,2772,2774,3083],{"title":3090,"description":3091,"path":3092,"category":2981,"updatedAt":2982,"sourceType":2769,"tags":3093},"Telegram forum topic、群 session 和 thread key 应该怎么一起看","基于最新官方 Groups 与 Channel Routing 文档，整理 Telegram forum topic 在 OpenClaw 里的 session key 形态、topic 级上下文隔离和群触发边界，帮助团队理解“同一群里的不同 topic”为什么已经不是同一条会话。","/docs/manual/forum-topics-and-group-session-keys",[3003,3094,3095,2958,2985],"forum-topics","sessions",{"title":3097,"description":3098,"path":3099,"category":2938,"updatedAt":2982,"sourceType":2769,"tags":3100},"从第一次跑通到长期运行：OpenClaw 的完整系统地图","把安装、Gateway、控制面、渠道、模型、记忆、自动化和长期维护放到一条完整主线上，帮助你从“先跑起来”过渡到“长期稳定使用”。","/docs/manual/from-first-run-to-long-running-system",[2806,2793,2795,2912,2797,2773],{"title":3102,"description":3103,"path":3104,"category":2938,"updatedAt":2972,"sourceType":2769,"tags":3105},"Headless nodes 和设备宿主边界怎么分","基于最新官方 Nodes、Architecture 与 Pairing 文档，解释 headless nodes、普通设备节点和 Gateway 之间的职责差异，帮助团队理解“能力跑在哪台机器上”这条边界。","/docs/manual/headless-node-hosts-and-device-boundaries",[2949,3106,3107,3108,2793],"headless","pairing","devices",{"title":3110,"description":3111,"path":3112,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3113},"Hooks 生命周期与事件类型","基于最新官方 Hooks 文档，解释 agent:bootstrap、session start/end、/new、/reset 等生命周期事件分别适合放什么逻辑，以及什么时候该用 hook pack 或插件托管 hooks。","/docs/manual/hook-lifecycle-events",[2772,3114,3115,2773,2897],"lifecycle","events",{"title":21,"description":3117,"path":2698,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3118},"从中文用户角度理解 OpenClaw 里的 hooks，不把它只看成技术细节，而看成自动化扩展点。",[2772,2773,2774,3115],{"title":3120,"description":3121,"path":3122,"category":2938,"updatedAt":2955,"sourceType":2769,"tags":3123},"消息入口的去重、合并和排队是怎么工作的","基于最新官方 Messages 文档，解释 OpenClaw 的 inbound dedupe、inbound debounce、active-run queue 和 outbound chunking 各自解决什么问题，避免把“回复慢”都误判成模型问题。","/docs/manual/inbound-dedupe-and-debounce",[3124,3125,3126,3127,3128],"messages","queueing","dedupe","debounce","delivery",{"title":3130,"description":3131,"path":3132,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3133},"本地模型支持（Ollama）","使用 Ollama 在本地运行大语言模型，实现隐私优先、零成本的 AI 助手体验。","/docs/manual/local-models-ollama",[3134,3135,3136,3137,2890],"ollama","local-model","llm","privacy",{"title":3139,"description":3140,"path":3141,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3142},"节点位置能力怎么用","基于最新官方 Location Command 文档，整理 OpenClaw 的 location.get 能力、权限模式、精确位置开关，以及它和普通聊天入口的边界。","/docs/manual/location-command-nodes",[3143,2949,2992,3144,3145],"location","permissions","gps",{"title":3147,"description":3148,"path":3149,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3150},"记忆文件怎么分层加载","基于最新官方 Memory 文档，整理 OpenClaw 的 daily log、MEMORY.md、memory_search 和 memory_get 各自适合存什么，以及为什么群组上下文不该直接读长期记忆。","/docs/manual/memory-files-and-loading-boundaries",[2797,3151,3095,3152,3153],"markdown","memory_search","memory_get",{"title":3155,"description":3156,"path":3157,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3158},"memory plugin slot 和 Markdown source of truth 怎么配合","基于最新官方 Memory、CLI memory 与 Plugins 文档，解释为什么 OpenClaw 记忆的 source of truth 仍然是 Markdown 文件，以及 plugins.slots.memory 该怎么理解和切换。","/docs/manual/memory-plugin-slots-and-source-of-truth",[2797,2897,3159,3160,3151],"lancedb","memory-core",{"title":3162,"description":3163,"path":3164,"category":2938,"updatedAt":2822,"sourceType":2769,"tags":3165},"记忆搜索与索引机制","基于官方记忆概念和 memory CLI 文档，解释记忆文件、索引来源、provider 选择以及排障时该看什么。","/docs/manual/memory-search-and-indexing",[2797,3166,3167,3168,3159],"search","indexing","embeddings",{"title":3170,"description":3171,"path":3172,"category":2938,"updatedAt":2847,"sourceType":2939,"tags":3173},"OpenClaw 记忆系统怎么工作","理解 OpenClaw 的 SOUL、Tools、用户长期记忆和会话上下文如何协作，以及为什么它更像持续运行的系统而不是一次性聊天窗口。","/docs/manual/memory-system",[2797,2942,2976,3174],"logs",{"title":3176,"description":3177,"path":3178,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3179},"Memory、Tools、Skills 如何协同","记忆层负责保留什么，Tools 负责执行什么，Skills 负责组织什么，三者该怎么分工才不会让 OpenClaw 越用越乱。","/docs/manual/memory-tools-skills-playbook",[2797,2796,2808,2942,2842],{"title":3181,"description":3182,"path":3183,"category":2938,"updatedAt":2822,"sourceType":2769,"tags":3184},"消息投递、重试与响应行为","基于官方 retry、messages 和 FAQ 文档，解释消息发送失败时 OpenClaw 会重试什么，不会重试什么，以及为什么群聊和渠道行为会不同。","/docs/manual/message-retries-and-delivery",[3124,3185,3128,3003,3005],"retry",{"title":3187,"description":3188,"path":3189,"category":2981,"updatedAt":2982,"sourceType":2769,"tags":3190},"模型 allowlist、alias 和图片能力门控应该怎么理解","基于最新官方 Models CLI 文档，整理 agents.defaults.models、primary、fallbacks、imageModel 和 imageGenerationModel 的职责，帮助团队理解模型白名单和共享能力门控到底会影响什么。","/docs/manual/model-allowlists-and-capability-gating",[2912,3191,3192,3193,3194,2985],"allowlist","aliases","image","gating",{"title":3196,"description":3197,"path":3198,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3199},"OpenClaw 的 Models 应该怎么理解","理解 OpenClaw 里模型层的角色、选择思路和常见配置边界，避免把所有问题都误判成模型问题。","/docs/manual/models-overview",[2912,3136,3068,2958],{"title":3201,"description":3202,"path":3203,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3204},"Nodes 与设备能力","理解 OpenClaw 的 nodes 是什么、如何配对，以及相机、语音、屏幕、位置等设备能力在系统里的作用。","/docs/manual/nodes-and-device-actions",[2949,2992,2991,3051,3107],{"title":3206,"description":3207,"path":3208,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3209},"OpenProse 和 Lobster 的边界怎么分","基于最新官方 Lobster 文档，整理 OpenProse 与 Lobster 在多智能体准备、确定性执行和审批恢复上的分工，帮助中文团队判断什么时候该用 /prose，什么时候该转成工作流运行时。","/docs/manual/openprose-and-lobster-boundaries",[3210,3211,2898,3083,2842],"openprose","lobster",{"title":3213,"description":3214,"path":3215,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3216},"插件托管 hooks 与扩展能力边界","基于最新官方 Plugins 与 Hooks 文档，整理插件托管 hooks 的工作方式、显示位置、启停边界，以及为什么它和独立 hook pack 不是同一种治理对象。","/docs/manual/plugin-managed-hooks",[2897,2772,2773,3030,3217],"governance",{"title":3219,"description":3220,"path":3221,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3222},"插件清单与配置校验","基于最新官方文档，解释 openclaw.plugin.json 的必填字段、校验规则，以及为什么插件清单会直接影响配置是否可通过。","/docs/manual/plugin-manifest",[2897,3223,3224,3225,2807],"manifest","schema","validation",{"title":3227,"description":3228,"path":3229,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3230},"插件包与频道目录元信息","根据最新官方插件文档，解释 package packs、插件 id 生成规则、openclaw.channel 元信息，以及为什么这些字段会影响安装与引导体验。","/docs/manual/plugin-package-packs",[2897,3231,2795,3232,3030],"package-packs","metadata",{"title":3234,"description":3235,"path":3236,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3237},"OpenClaw 插件系统怎么用","基于官方插件与 CLI 文档，解释插件和 Skills、Tools 的边界，说明安装、启用、更新与风险控制的基本方法。","/docs/manual/plugins-overview",[2897,3030,2808,2796,3238],"cli",{"title":3240,"description":3241,"path":3242,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3243},"模型提供商与故障转移","基于官方 providers 文档，整理 OpenClaw 常见 provider、默认模型写法、fallback 思路和长期运行时的配置重点。","/docs/manual/providers-and-fallback",[3068,2912,3244,3245,3134],"fallback","openrouter",{"title":3247,"description":3248,"path":3249,"category":2938,"updatedAt":2847,"sourceType":2939,"tags":3250},"Session 与配对机制","理解 OpenClaw 如何通过配对、allowFrom、群组提及规则和 session 隔离来识别用户并保护上下文边界。","/docs/manual/session-and-pairing",[2976,3107,2795,3057],{"title":3252,"description":3253,"path":3254,"category":2981,"updatedAt":2982,"sourceType":2769,"tags":3255},"session memory search 什么时候值得开，什么时候先别开","基于最新官方 Memory 与 memory CLI 文档，整理 OpenClaw 的 session memory search、异步索引刷新、delta threshold 和 embedding cache 各自适合什么场景，帮助团队判断什么时候该扩到会话日志检索。","/docs/manual/session-memory-search-and-index-refresh",[2797,3095,3167,3256,2985],"cache",{"title":3258,"description":3259,"path":3260,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3261},"Signal 渠道接入重点","Signal 为什么更强调 dedicated number、signal-cli 和 pairing，长期运行时最容易踩哪些坑。","/docs/manual/signal-channel",[2795,3262,3263,3107,3137],"signal","signal-cli",{"title":3265,"description":3266,"path":3267,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3268},"Signal 群组与 daemon 模式怎么配","基于最新官方 Signal 文档，整理 Signal 在 OpenClaw 里的群组隔离、外部 daemon 模式、多账号和 config writes 边界。","/docs/manual/signal-groups-and-daemon-mode",[3262,2975,2857,3269,2795],"multi-account",{"title":3271,"description":3272,"path":3273,"category":2938,"updatedAt":3274,"sourceType":2769,"tags":3275},"Skills 配置与热重载","理解 OpenClaw 的 skills 配置项、allowBundled、extraDirs、watch、entries.enabled 和运行时环境注入边界。","/docs/manual/skills-configuration","2026-03-18",[2808,3276,3277,3278,3279],"config","allowBundled","watch","env",{"title":3281,"description":3282,"path":3283,"category":2938,"updatedAt":3284,"sourceType":2769,"tags":3285},"Skills 系统怎么工作","理解 OpenClaw Skills 的三层来源、加载流程、ClawHub 风险，以及为什么不应该一次安装过多技能。","/docs/manual/skills-system","2026-03-17",[2808,3011,2796,2816],{"title":3287,"description":3288,"path":3289,"category":2938,"updatedAt":2822,"sourceType":2769,"tags":3290},"系统提示词、上下文与压缩","基于官方 system prompt、context、compaction 与 session pruning 文档，解释 OpenClaw 一次运行到底会把什么发给模型，以及上下文为什么会变满。","/docs/manual/system-prompt-context-and-compaction",[3291,3292,3293,3294,3095],"system-prompt","context","compaction","pruning",{"title":3296,"description":3297,"path":3298,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3299},"Telegram 与 WhatsApp 接入重点","两个最常见的入门渠道该怎么选、各自依赖什么认证方式，以及群聊和私聊里最容易踩的坑。","/docs/manual/telegram-and-whatsapp",[2795,3003,3004,3107,3300],"bot",{"title":3302,"description":3303,"path":3304,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3305},"Telegram 和 Discord 作为审批入口时该怎么收边界","基于最新官方 Exec Approvals 文档，解释 Telegram 与 Discord 作为 exec approval 客户端时分别扮演什么角色、哪些配置值得先看，以及为什么它们适合作为受控审批入口而不是普通开放群聊。","/docs/manual/telegram-discord-approval-clients",[3003,3005,3083,2795,3081,2816],{"title":3307,"description":3308,"path":3309,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3310},"OpenClaw 的 Tools 与扩展能力概览","从中文用户角度理解 OpenClaw 的工具层、技能层和自动化扩展边界，知道它为什么不只是聊天助手。","/docs/manual/tools-overview",[2796,2808,2772,2773],{"title":3312,"description":3313,"path":3314,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3315},"vLLM 本地模型 Provider 怎么接","基于最新官方 vLLM provider 文档，整理 OpenClaw 如何接入 vLLM、本地自动发现和手动模型声明各自适合什么场景。","/docs/manual/vllm-local-model-provider",[3316,3317,3068,2890,3318],"vllm","local-models","inference",{"title":3320,"description":3321,"path":3322,"category":2938,"updatedAt":2847,"sourceType":2769,"tags":3323},"语音唤醒与 Talk Mode","理解 OpenClaw 的 voice wake 是怎么和 Gateway、nodes、客户端一起工作的，以及什么时候值得启用它。","/docs/manual/voice-wake-and-talk-mode",[3051,3324,3325,2949,2992],"wake-word","talk-mode",{"title":3327,"description":3328,"path":3329,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3330},"WebChat 与 message CLI","理解 OpenClaw 除聊天渠道外的两类直接交互入口：Gateway WebSocket 上的 WebChat 和统一的 openclaw message 命令。","/docs/manual/webchat-and-message-cli",[2919,3331,3238,2793,2795],"message",{"title":3333,"description":3334,"path":3335,"category":2938,"updatedAt":3336,"sourceType":2769,"tags":3337},"WebChat、API 和控制面入口的边界怎么分","基于最新官方 WebChat、Session 和 API 文档，解释 WebChat 为什么更像会话 UI、HTTP API 为什么更像结构化管理面，以及 Dashboard 为什么仍然属于高权限控制面。","/docs/manual/webchat-api-and-control-surface-boundaries","2026-03-26",[2919,3338,2851,2793,2774],"api",{"title":3340,"description":3341,"path":3342,"category":2938,"updatedAt":2863,"sourceType":2769,"tags":3343},"WebChat 的会话与只读边界","基于最新官方 WebChat 文档，整理 WebChat 如何共享 Gateway 会话、chat.inject 和 abort partial 是什么，以及 Gateway 不可达时为什么会进入只读模式。","/docs/manual/webchat-session-and-readonly-mode",[2919,3095,3344,3345,3346],"websocket","readonly","chat",{"title":3348,"description":3349,"path":3350,"category":2938,"updatedAt":2904,"sourceType":2769,"tags":3351},"用 Webhooks 接外部系统","基于最新官方 Webhooks 文档，整理 OpenClaw 如何通过 /hooks 接收外部事件，重点解释 wake、agent、映射、投递和安全边界。","/docs/manual/webhooks-external-triggers",[3352,2772,2773,3353,2816],"webhooks","integrations",{"title":3355,"description":3356,"path":3357,"category":3358,"updatedAt":2955,"sourceType":2769,"tags":3359},"Exec approvals 转发到聊天渠道该怎么设计","基于最新官方 approvals 文档，解释 OpenClaw 如何把 exec approval 请求转发到聊天渠道、/approve 命令怎么工作，以及为什么它适合远程值班但不适合无限扩散批准权。","/docs/operations/chat-approval-forwarding","运维",[3083,3081,3346,3360,2815],"forwarding",{"title":3362,"description":3363,"path":3364,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3365},"配置热重载与 include 合并怎么用","基于最新官方 Configuration 文档，整理 OpenClaw 的 config hot reload、reload mode、include 深度合并和哪些改动需要重启。","/docs/operations/config-hot-reload-and-includes",[2807,3366,3367,3368,3369],"hot-reload","includes","merge","restart",{"title":3371,"description":3372,"path":3373,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3374},"远程打开 Control UI 的正确方式","基于最新官方 Control UI、Dashboard 和 Tailscale 文档，整理远程访问 Control UI 时最稳的路径、常见 1008 报错原因，以及 allowedOrigins 等关键边界。","/docs/operations/control-ui-remote-access",[3037,2851,3375,3376,3377],"remote-access","tailscale","allowedOrigins",{"title":3379,"description":3380,"path":3381,"category":3358,"updatedAt":2955,"sourceType":2769,"tags":3382},"Cron 的 retention 和 run log pruning 怎么工作","基于最新官方 Cron Jobs 与配置文档，解释 isolated cron run 的 sessionRetention、runLog 裁剪、transcript archive 和高频调度下的磁盘足迹，避免把 cron 当成无限保留的后台队列。","/docs/operations/cron-retention-and-run-log-pruning",[3383,3384,3294,3385,2815],"cron","retention","runlog",{"title":3387,"description":3388,"path":3389,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3390},"定时任务与心跳怎么选","根据最新官方自动化文档，解释 Heartbeat、Cron main、Cron isolated 三种机制分别适合什么场景，以及它们在精度、上下文和成本上的差异。","/docs/operations/cron-vs-heartbeat",[2773,3383,3391,3392,2815],"heartbeat","scheduling",{"title":3394,"description":3395,"path":3396,"category":3358,"updatedAt":2955,"sourceType":2769,"tags":3397},"Dashboard 管理面怎么更稳地开放","基于最新官方 Dashboard、remote access 和 pairing 文档，整理管理员面该如何开放、保存 token、限制入口和处理 unauthorized/1008，避免把 Control UI 变成公开风险面。","/docs/operations/dashboard-admin-surface-hardening",[2851,3037,2865,2816,3398],"admin",{"title":3400,"description":3401,"path":3402,"category":3358,"updatedAt":3336,"sourceType":2769,"tags":3403},"Dashboard 遇到 unauthorized、1008 和 AUTH_TOKEN_MISMATCH 时怎么恢复","基于最新官方 Dashboard 文档，整理 OpenClaw 在 Dashboard 认证失败时更稳的恢复顺序，尤其是 AUTH_TOKEN_MISMATCH、trusted retry、SecretRef token 和远程实例混淆这几类问题。","/docs/operations/dashboard-auth-mismatch-recovery",[2851,3057,3404,3405,2815],"unauthorized","1008",{"title":3407,"description":3408,"path":3409,"category":3358,"updatedAt":2972,"sourceType":2769,"tags":3410},"设备 pairing、fresh token 和 revoke 应该怎么做日常运维","基于最新官方 Pairing 与 Devices CLI 文档，解释 openclaw devices list、approve、rotate、revoke 和 fresh token 的真实边界，以及为什么设备授权不该被当成一次性静态批准。","/docs/operations/device-pairing-token-lifecycle",[3108,3107,3058,3411,2815],"revoke",{"title":3413,"description":3414,"path":3415,"category":3358,"updatedAt":2972,"sourceType":2769,"tags":3416},"doctor 的备份、unknown keys 清理和 --fix 该怎么理解","基于最新官方 Doctor 文档，解释 openclaw doctor 在修复 stale config、unknown keys 和 legacy 状态时的备份与收口方式，帮助团队区分安全修复和强制覆盖。","/docs/operations/doctor-fix-backups-and-unknown-keys",[3417,3418,3419,3276,3420],"doctor","repair","backups","unknown-keys",{"title":3422,"description":3423,"path":3424,"category":3358,"updatedAt":2847,"sourceType":2769,"tags":3425},"Gateway 运维与日常检查","围绕状态检查、访问方式、日志与升级窗口，建立 OpenClaw Gateway 的日常运维习惯。","/docs/operations/gateway-operations",[2793,2815,3426,3174],"status",{"title":3428,"description":3429,"path":3430,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3431},"Gmail Pub/Sub 接入 OpenClaw","根据最新官方自动化文档，整理 Gmail watch、Google Pub/Sub、Webhook 映射和 Tailscale Funnel 的接入顺序，帮助你把 Gmail 事件稳定送进 OpenClaw。","/docs/operations/gmail-pubsub",[3432,3433,3352,2773,3376],"gmail","pubsub",{"title":3435,"description":3436,"path":3437,"category":3358,"updatedAt":2802,"sourceType":2769,"tags":3438},"长期运行时，如何管理会话、记忆与压缩","把 session、memory、compaction 和重置策略放到同一条治理链里，帮助长期运行的 OpenClaw 环境建立更稳定的上下文边界。","/docs/operations/long-session-governance",[3095,2797,3293,3217,2815],{"title":3440,"description":3441,"path":3442,"category":3358,"updatedAt":2904,"sourceType":2769,"tags":3443},"模型选型与成本控制","从主力模型、fallback、国内 provider 和低价值任务分流四个角度理解 OpenClaw 的模型配置策略与成本控制方法。","/docs/operations/model-strategy-and-cost",[2912,3444,3068,3244,3445,3446,3447],"cost","qwen","qianfan","kimi",{"title":3449,"description":3450,"path":3451,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3452},"用 models status 做模型健康检查","基于最新官方 Models CLI 与 Auth Monitoring 文档，整理 openclaw models status 在日常运维里的正确用法、退出码含义和适合接入监控的检查方式。","/docs/operations/models-status-and-health-checks",[2912,3453,3057,3454,3455],"health-check","oauth","monitoring",{"title":3457,"description":3458,"path":3459,"category":3358,"updatedAt":2847,"sourceType":2769,"tags":3460},"多 Gateway 与隔离运行","当一台机器上需要运行多个 OpenClaw 实例时，如何用 profile、独立端口和独立状态目录避免冲突。","/docs/operations/multiple-gateways",[2793,3461,3462,3463,2815],"profile","multi-instance","isolation",{"title":3465,"description":3466,"path":3467,"category":3358,"updatedAt":2822,"sourceType":2769,"tags":3468},"网络模型、发现与配对","基于官方网络中心、配对和 Gateway 拥有的配对文档，梳理 localhost、tailnet、发现、身份和审批之间的关系。","/docs/operations/network-and-pairing",[3469,3107,3470,3471,3472],"network","identity","tailnet","mdns",{"title":3474,"description":3475,"path":3476,"category":3358,"updatedAt":2904,"sourceType":2769,"tags":3477},"OpenClaw 安全最佳实践","了解使用 OpenClaw 时的安全最佳实践，包括密码管理、权限控制和日志监控。","/docs/operations/openclaw-security-best-practices",[2816,3478,3479],"best-practices","guide",{"title":3481,"description":3482,"path":3483,"category":3358,"updatedAt":2955,"sourceType":2769,"tags":3484},"Compaction 前的 memory flush 在保护什么","基于最新官方 Memory、Compaction 和会话管理文档，解释 pre-compaction memory flush 的触发时机、NO_REPLY 机制、软阈值公式，以及为什么它是长期使用体验里的关键缓冲层。","/docs/operations/pre-compaction-memory-flush",[2797,3293,3485,3486,2815],"flush","NO_REPLY",{"title":3488,"description":3489,"path":3490,"category":3491,"updatedAt":2904,"sourceType":2769,"tags":3492},"如何持续跟踪 OpenClaw 更新","建立一套低成本的更新跟踪方法，并把官方 release 和文档变化转化成真正可执行的中文维护动作。","/docs/operations/release-tracking","更新",[3493,3494,3495,3496],"release","changelog","updates","maintenance",{"title":3498,"description":3499,"path":3500,"category":3358,"updatedAt":2904,"sourceType":2769,"tags":3501},"远程访问与 Tailscale / SSH","把 OpenClaw 放到远程主机长期运行时，如何在 SSH、tailnet、Tailscale Serve 和直接 ws/wss 之间做选择。","/docs/operations/remote-access",[2865,3502,3376,2793,2815],"ssh",{"title":3504,"description":3505,"path":3506,"category":3358,"updatedAt":2847,"sourceType":2769,"tags":3507},"Remote Operators 与多设备协作","当 Gateway 跑在远程主机、操作入口分散在多台设备上时，如何理解 operator、node 和长期在线实例的协作边界。","/docs/operations/remote-operators-and-nodes",[2865,3508,2949,3376,3502,3108],"operators",{"title":3510,"description":3511,"path":3512,"category":3358,"updatedAt":2847,"sourceType":2769,"tags":3513},"OpenClaw 安全配置基础","从 Gateway auth、allowlist、Control UI 暴露方式和 Tailscale/SSH 接入策略理解 OpenClaw 的基础安全边界。","/docs/operations/safety-basics",[2816,3057,3376,2851],{"title":3515,"description":3516,"path":3517,"category":3358,"updatedAt":2904,"sourceType":2769,"tags":3518},"security audit、--deep 和 --fix 该怎么配合","基于最新官方安全文档，解释 openclaw security audit、--deep 与 --fix 各自适合什么阶段，哪些问题适合自动修复，哪些仍应人工复核。","/docs/operations/security-audit-fix-and-review",[2816,3519,3520,3521,2815],"audit","hardening","fix",{"title":3523,"description":3524,"path":3525,"category":3358,"updatedAt":2955,"sourceType":2769,"tags":3526},"sessions cleanup 和 session maintenance 应该怎么配合","基于最新官方 sessions CLI 文档，解释 openclaw sessions cleanup 的作用范围、dry-run/enforce 语义、active-key 保护，以及它和 cron maintenance 不是同一层清理。","/docs/operations/sessions-cleanup-and-maintenance",[3095,3527,3496,3528,2815],"cleanup","transcripts",{"title":3530,"description":3531,"path":3532,"category":3358,"updatedAt":2972,"sourceType":2769,"tags":3533},"shared inbox 的运营边界和信任模型","基于最新官方 Security、Session 和 Groups 文档，解释 OpenClaw 对 shared inbox 的默认安全假设、适合的协作硬化方式，以及为什么真正的互不信任多租户场景更应该拆成独立 gateway。","/docs/operations/shared-inbox-trust-boundaries",[2816,3534,3535,2793,2815],"shared-inbox","trust-model",{"title":3537,"description":3538,"path":3539,"category":3358,"updatedAt":2822,"sourceType":2769,"tags":3540},"Tailscale Serve / Funnel 怎么选","基于官方 Tailscale 文档，解释 serve、funnel、tailnet 绑定和 allowTailscale 的差异，以及更稳的使用边界。","/docs/operations/tailscale-serve-and-funnel",[3376,3541,3542,2793,3057],"serve","funnel",{"title":3544,"description":3545,"path":3546,"category":3358,"updatedAt":2847,"sourceType":2769,"tags":3547},"团队频道里的 Session 隔离策略","当 OpenClaw 进入 Discord、Slack 等多人频道后，如何把频道、线程、私聊和长期记忆分开，避免上下文污染。","/docs/operations/team-channel-session-strategy",[2976,3005,3074,2805,3548,2815],"group-chat",{"title":3550,"description":3551,"path":3552,"category":3358,"updatedAt":3274,"sourceType":2769,"tags":3553},"Trusted Proxy Auth 怎么用","理解 OpenClaw 的 trusted-proxy 认证模式、适用场景、风险检查项，以及它和普通 TLS 反向代理的本质区别。","/docs/operations/trusted-proxy-auth",[3554,3555,3057,2793,2816],"trusted-proxy","reverse-proxy",{"title":3557,"description":3558,"path":3559,"category":3358,"updatedAt":2863,"sourceType":2769,"tags":3560},"Trusted Proxy 和 Tailscale Serve 怎么选","基于最新官方安全与 trusted proxy 文档，解释 OpenClaw 在 trusted-proxy、token/password 和 Tailscale Serve 之间各自适合什么场景。","/docs/operations/trusted-proxy-vs-tailscale-serve",[3554,3376,3555,3057,2793,2816],{"title":3562,"description":3563,"path":3564,"category":3358,"updatedAt":2904,"sourceType":2769,"tags":3565},"stable、beta、dev 更新通道该怎么选","基于最新官方 update CLI 与 Updating 文档，解释 OpenClaw 的 stable、beta、dev 三条更新轨道、auto-updater 行为和更适合的长期 rollout 顺序。","/docs/operations/update-channels-and-safe-rollout",[3566,2795,3567,3568,3569,3570],"update","stable","beta","dev","rollout",{"title":3572,"description":3573,"path":3574,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3576},"Anthropic context1m 的 429 和 fallback 应该怎么处理","基于最新官方 Gateway Troubleshooting 与 Model Failover 文档，解释 Anthropic 长上下文 429 为什么常只在长 session 里出现、什么时候该关掉 context1m，以及怎样用 fallback 把这类拒绝变成可恢复事件。","/docs/reference/anthropic-context1m-429-and-fallback","参考",[3577,3578,3579,3580,3581],"anthropic","429","context1m","failover","reference",{"title":3583,"description":3584,"path":3585,"category":3575,"updatedAt":2847,"sourceType":2769,"tags":3586},"API 与参考资料阅读入口","说明 OpenClaw 的参考资料应如何阅读，以及中文用户在查 CLI、配置、诊断和模块说明时该怎么找信息。","/docs/reference/api-reference-overview",[3581,3238,3276,3587],"diagnostics",{"title":3589,"description":3590,"path":3591,"category":3575,"updatedAt":2904,"sourceType":2769,"tags":3592},"approvals CLI、网关与节点 allowlist 怎么管理","基于最新官方 approvals CLI 与 Exec Approvals 文档，解释 openclaw approvals 在本机、Gateway 和 Node 上分别管理什么，以及 per-agent allowlist 最值得先守住哪些边界。","/docs/reference/approvals-cli-and-allowlist",[3083,3191,3081,2793,3593,3581],"node",{"title":3595,"description":3596,"path":3597,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3598},"认证配置文件怎么轮转，为什么 session 会“粘住”同一套凭据","基于最新官方 Model Failover 文档，解释 OpenClaw 在同一 provider 内如何轮转 auth profiles、什么情况下会进入 cooldown，以及为什么同一个 session 往往会持续使用同一套凭据。","/docs/reference/auth-profile-rotation-and-session-pinning",[3057,3599,3580,3095,3581],"profiles",{"title":3601,"description":3602,"path":3603,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3604},"setup code、bootstrapToken 和 /pair pending 应该怎么一起看","基于最新官方 Pairing 文档，解释 Telegram 首次设备接入时 setup code 里到底装了什么、bootstrapToken 只负责哪一步，以及为什么最后仍然要回到 /pair pending 做人工批准。","/docs/reference/bootstrap-code-and-pair-pending",[3107,3605,3003,3108,3581],"bootstrapToken",{"title":3607,"description":3608,"path":3609,"category":3575,"updatedAt":2972,"sourceType":2769,"tags":3610},"频道 pairing CLI 和 account scope 应该怎么一起看","基于最新官方 Pairing 文档，解释 openclaw pairing 的 list、approve、clear、--account 与 --notify 分别影响什么，以及多账号渠道下为什么不能只看一个默认 allowFrom 文件。","/docs/reference/channel-pairing-cli-and-account-scope",[3107,3611,2795,3612,3398],"allowFrom","account",{"title":3614,"description":3615,"path":3616,"category":3575,"updatedAt":2822,"sourceType":2769,"tags":3617},"CLI 命令参考","OpenClaw 命令行工具完整参考，包含所有命令和选项说明。","/docs/reference/cli-reference",[3238,3581,3618,3619],"commands","terminal",{"title":3621,"description":3622,"path":3623,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3624},"Cloudflare AI Gateway 的双层鉴权头应该怎么配","基于最新官方 Cloudflare AI Gateway 文档，解释 provider API key 和 cf-aig-authorization 为什么是两层不同凭据，以及 daemon 场景里最常见的缺失点。","/docs/reference/cloudflare-aig-dual-auth-headers",[3625,3626,3057,3068,3581],"cloudflare-ai-gateway","headers",{"title":3628,"description":3629,"path":3630,"category":3631,"updatedAt":2904,"sourceType":3028,"tags":3632},"社区支持","汇总 OpenClaw 的官方社区入口、反馈方式、提问建议和中文用户更适合的参与路径。","/docs/reference/community","社区",[3028,3633,3634,3635],"github","issues","feedback",{"title":2717,"description":3637,"path":2716,"category":3575,"updatedAt":2822,"sourceType":2769,"tags":3638},"OpenClaw 完整配置项参考文档，包含所有可配置选项的详细说明。",[2807,3581,3639,3640],"settings","options",{"title":3642,"description":3643,"path":3644,"category":3575,"updatedAt":2863,"sourceType":2769,"tags":3645},"Control UI 设备配对与浏览器授权","基于最新官方 Control UI 与 Pairing 文档，解释为什么远程浏览器首次连接需要设备配对、设备身份如何记住，以及什么时候需要重新批准。","/docs/reference/control-ui-device-pairing",[3037,3107,3108,3059,3398],{"title":3647,"description":3648,"path":3649,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3650},"cron run 入队语义和 retry backoff 应该怎么理解","基于最新官方 cron CLI 与 Cron Jobs 文档，解释 openclaw cron run 为什么先返回 enqueued、何时该去看 runs，以及 recurring job 连续失败后的退避节奏。","/docs/reference/cron-run-queue-and-retry-backoff",[3383,3185,3651,3652,3581],"scheduler","queue",{"title":3654,"description":3655,"path":3656,"category":3575,"updatedAt":3336,"sourceType":2769,"tags":3657},"Dashboard 的 SecretRef token、sessionStorage 和非 token 化 URL 应该怎么理解","基于最新官方 Dashboard 文档，解释 openclaw dashboard 在普通 token、SecretRef token 和远程入口下分别如何引导认证，以及为什么当前浏览器标签页的 sessionStorage 行为很关键。","/docs/reference/dashboard-secretref-and-sessionstorage",[2851,3058,3658,3659,3057],"secretref","sessionStorage",{"title":3661,"description":3662,"path":3663,"category":3664,"updatedAt":2822,"sourceType":2769,"tags":3665},"调试、运行时覆盖与开发排障","基于官方 debugging 和 FAQ 文档，整理 `/debug`、watch 模式、dev profile 以及排查流式输出异常时最值得先看的入口。","/docs/reference/debugging-and-runtime-overrides","排错",[3666,3667,3668,3417,3174],"debugging","debug","runtime-overrides",{"title":3670,"description":3671,"path":3672,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3673},"Diagnostics flags 和定向日志应该怎么用","基于最新官方 Diagnostics Flags 与 Logging 文档，解释 OpenClaw 如何用 diagnostics.flags 和 OPENCLAW_DIAGNOSTICS 打开定向调试日志，以及为什么这比全局 verbose 更适合长期排障。","/docs/reference/diagnostics-flags-and-targeted-logs",[3587,3674,3675,3667,3581],"logging","flags",{"title":3677,"description":3678,"path":3679,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3680},"dmScope 和 identityLinks 应该怎么一起用","基于最新官方会话管理文档，解释 OpenClaw 的 dmScope 四种模式、identityLinks 的真实作用，以及为什么多人 DM、跨渠道私聊和多账户环境不能只改一个开关。","/docs/reference/dm-scope-and-identity-links",[2976,3681,3682,2958,3581],"dmScope","identityLinks",{"title":3684,"description":3685,"path":3686,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3687},"doctor 的 repair、force 和 non-interactive 应该怎么选","基于最新官方 Doctor 文档，解释 openclaw doctor 在 interactive、--repair、--force、--yes、--non-interactive 和 --deep 之间各自会做什么，避免把修复模式混成“越猛越好”。","/docs/reference/doctor-repair-modes",[3417,3418,3587,3688,3581],"migrations",{"title":3690,"description":3691,"path":3692,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3693},"环境变量从哪里来，优先级怎么排","基于最新官方 Environment Variables 与 Configuration 文档，解释 OpenClaw 会从哪些来源读取环境变量、为什么默认不覆盖已有值，以及 `.env`、config env 和 shell import 之间真正的优先级。","/docs/reference/env-sources-and-precedence",[3279,2807,2984,3694,3581],"shell",{"title":3696,"description":3697,"path":3698,"category":3575,"updatedAt":2904,"sourceType":2790,"tags":3699},"如何结合官方文档、GitHub 和中文渠道跟踪 OpenClaw","把官方文档、GitHub Releases、Issues、中文教程站、媒体报道和中文社区解读放到同一套可信度框架里，减少信息滞后和误读。","/docs/reference/external-sources-and-trust-levels",[3700,3493,3028,3701,3495],"sources","trust",{"title":3703,"description":3704,"path":3705,"category":3575,"updatedAt":2863,"sourceType":2769,"tags":3706},"Gateway 命令与 RPC 该怎么用","基于最新官方 CLI Reference 与 Gateway protocol 文档，整理 openclaw gateway 子命令、RPC 调用边界、显式凭据要求，以及为什么它更适合被当成控制面入口而不是随手脚本助手。","/docs/reference/gateway-cli-and-rpc",[2793,3707,3238,3344,2950],"rpc",{"title":3709,"description":3710,"path":3711,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3712},"Gateway-owned pairing 和 device pairing 有什么区别","基于最新官方 Pairing 与 Gateway-owned pairing 文档，解释 node.pair.* 这套旧式网关配对和当前 WS device pairing 的真实边界，避免把两套授权机制混成一套。","/docs/reference/gateway-owned-pairing-vs-device-pairing",[3107,3108,2793,2949,3581],{"title":3714,"description":3715,"path":3716,"category":3575,"updatedAt":3336,"sourceType":2769,"tags":3717},"Gateway 为什么是 session source of truth","基于最新官方 Session 文档，解释 OpenClaw 的 session store、JSONL transcript、token 计数和 UI 查询为什么都应围绕 Gateway 理解，避免把本地浏览器、WebChat 或 operator 设备误当成真实状态源。","/docs/reference/gateway-session-source-of-truth",[2976,2793,2919,2851,3581],{"title":3719,"description":3720,"path":3721,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3722},"Gateway WebSocket 的 role 和 scope 应该怎么理解","基于最新官方 Gateway Protocol 文档，解释 OpenClaw 的 WebSocket 握手里 role、scopes、client mode 和协议版本各自在声明什么，以及为什么这条连接已经是统一控制面而不只是聊天通道。","/docs/reference/gateway-ws-roles-and-scopes",[2793,3344,3723,3724,3581],"protocol","scopes",{"title":3726,"description":3727,"path":3728,"category":3575,"updatedAt":2972,"sourceType":2769,"tags":3729},"groupPolicy、allowlist 和 mention gating 的顺序应该怎么理解","基于最新官方 Groups、Group Messages 和 Messages 文档，解释 OpenClaw 在群聊里如何按 groupPolicy、群组 allowlist 和 mention gating 三层顺序决定消息是丢弃、只进上下文，还是正式触发回复。","/docs/reference/group-policy-and-mention-gating-order",[2975,3730,2958,3191,3124],"mention",{"title":3732,"description":3733,"path":3734,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3735},"HEARTBEAT_OK、可见性控制和 quiet-hours 应该怎么一起看","基于最新官方 Heartbeat 与 Automation Troubleshooting 文档，解释 HEARTBEAT_OK 的 ack 语义、alerts-disabled 和 dm-blocked 等可见性控制，以及 quiet-hours 为什么不是故障。","/docs/reference/heartbeat-ack-and-visibility-controls",[3391,3736,3737,3738,3581],"visibility","activeHours","alerts",{"title":3740,"description":3741,"path":3742,"category":3575,"updatedAt":2972,"sourceType":2769,"tags":3743},"HTTP API、Gateway WebSocket 和 SDK 应该怎么分工","基于最新官方 API 与 Web 文档，解释 OpenClaw 里 HTTP API、Gateway WebSocket 和 SDK 各自适合什么场景，帮助团队判断当前到底应该走管理接口、实时会话层还是语言 SDK。","/docs/reference/http-api-vs-gateway-websocket-vs-sdk",[3338,3344,3744,2793,3581],"sdk",{"title":3746,"description":3747,"path":3748,"category":3575,"updatedAt":2972,"sourceType":2769,"tags":3749},"include 合并时，数组和 sibling override 到底怎么生效","基于最新官方 Configuration 文档，解释 OpenClaw 在 $include 合并时数组、对象和 sibling keys 的真实处理顺序，帮助团队避免把 include 当成“总是深合并”的黑盒。","/docs/reference/include-merge-arrays-and-sibling-overrides",[2807,3750,3368,3751,3581],"include","arrays",{"title":3753,"description":3754,"path":3755,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3756},"Lobster 的调用、审批和 resume token","基于最新官方 Lobster 文档，解释 OpenClaw 里如何用 openclaw.invoke 触发确定性工作流、何时进入 needs_approval，以及 resume token 在恢复流程里扮演什么角色。","/docs/reference/lobster-invoke-and-resume",[3211,3757,3083,2842,3581],"invoke",{"title":3759,"description":3760,"path":3761,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3762},"记忆检索里的 hybrid search、重排和时间衰减到底在做什么","基于最新官方 Memory 文档，解释 OpenClaw 的 memory_search 为什么不只是向量检索，以及 hybrid search、结果合并、MMR 重排和 temporal decay 各自在修正什么问题。","/docs/reference/memory-hybrid-search-and-ranking-pipeline",[2797,3763,3764,3765,3766,3581],"hybrid-search","ranking","mmr","retrieval",{"title":3768,"description":3769,"path":3770,"category":3575,"updatedAt":2904,"sourceType":2769,"tags":3771},"models status --probe 和 auth profiles 应该怎么看","基于最新官方 Models CLI 文档，解释 openclaw models status --probe、--probe-provider 与认证 profile 的关系，帮助团队区分“配置看起来对”和“当前真的能连通”。","/docs/reference/models-status-probe-and-auth-profiles",[2912,3772,3057,3068,3581],"probe",{"title":3774,"description":3775,"path":3776,"category":3575,"updatedAt":3274,"sourceType":2769,"tags":3777},"配对审批与设备授权管理","从管理员视角理解 OpenClaw 的 DM pairing、设备 pairing、allowFrom 文件和审批命令，避免把授权边界搞乱。","/docs/reference/pairing-admin",[3107,3108,3611,3778,3398],"credentials",{"title":3780,"description":3781,"path":3782,"category":3575,"updatedAt":2904,"sourceType":2769,"tags":3783},"插件安装 spec、--pin 和 update tracking 应该怎么理解","基于最新官方 plugins CLI 文档，解释 ClawHub first、npm-safe spec、--pin、prerelease opt-in 和 plugins.installs 的跟踪逻辑，帮助团队判断插件后续会按什么规则更新。","/docs/reference/plugins-install-specs-and-update-tracking",[2897,3011,3784,3785,3495,3581],"npm","pin",{"title":3787,"description":3788,"path":3789,"category":3664,"updatedAt":2863,"sourceType":2769,"tags":3790},"原始流日志怎么抓","基于最新官方 Debugging 文档，整理 OpenClaw 的 raw stream、pi-mono raw chunk 日志分别该在什么场景开启，以及如何避免把调试日志变成隐私风险。","/docs/reference/raw-stream-debugging",[3666,3791,3174,3068,3137],"raw-stream",{"title":3793,"description":3794,"path":3795,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3796},"remote auth fallback 和 tlsFingerprint 应该什么时候用","基于最新官方 Remote Access 文档，解释 gateway.remote 这套远程连接参数什么时候只是兜底、什么时候会 fail closed，以及 tlsFingerprint 在 wss 场景里真正保护什么。","/docs/reference/remote-auth-fallback-and-tls-fingerprint",[2865,3797,3057,2793,3581],"tlsFingerprint",{"title":3799,"description":3800,"path":3801,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3802},"回复机器人消息也算 mention 吗，pending history 又什么时候会进上下文","基于最新官方 Groups 与 Group Messages 文档，解释 OpenClaw 在群聊里怎样把 reply metadata 当成隐式 mention，以及未触发回复的群消息何时只进入 pending history、何时会被彻底丢弃。","/docs/reference/reply-mention-and-pending-history",[2975,3803,3804,3805,3581],"mentions","pending-history","reply",{"title":3807,"description":3808,"path":3809,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3810},"SecretRefs 和运行时快照应该怎么理解","基于最新官方 Secrets Management 文档，解释 env/file/exec secret refs 的解析时机、活动面、失败模式和热重载语义，避免把密钥管理误解成“请求时临时去取”。","/docs/reference/secret-refs-and-runtime-snapshot",[3811,3812,3813,3068,3581],"secrets","secretrefs","runtime",{"title":3815,"description":3816,"path":3817,"category":3575,"updatedAt":2972,"sourceType":2769,"tags":3818},"secure DM mode 和 owner pinning 应该怎么一起理解","基于最新官方 Session 与 Security 文档，解释 OpenClaw 的 secure DM mode、owner pinning、pairing / allowlist / open 三类 DM 入口，以及什么时候该从连续主会话切到隔离模式。","/docs/reference/secure-dm-mode-and-owner-pinning",[2976,2816,3681,3107,3191],{"title":3820,"description":3821,"path":3822,"category":3575,"updatedAt":3823,"sourceType":2769,"tags":3824},"session JSONL、compaction entry 和 branch summary 应该怎么理解","基于最新官方 Session Management Deep Dive 文档，解释 OpenClaw 的 session JSONL 结构、compaction entry、branch summary 和 store counters 分别在回答什么问题，避免把 transcript 文件当成一团无结构日志。","/docs/reference/session-jsonl-and-compaction-entries","2026-04-01",[2976,3825,3826,3293,3581],"transcript","jsonl",{"title":3828,"description":3829,"path":3830,"category":3575,"updatedAt":3823,"sourceType":2769,"tags":3831},"openclaw sessions 的 store scope 和巡检方式","基于最新官方 sessions CLI 文档，解释 openclaw sessions 在默认 agent、单 agent、all-agents 和显式 store 路径下分别在看什么，以及长期运维里为什么值得把它当作 session store 巡检入口。","/docs/reference/sessions-cli-store-scope-and-audit",[3095,3238,3832,3519,2815],"store",{"title":3834,"description":3835,"path":3836,"category":3575,"updatedAt":2982,"sourceType":2769,"tags":3837},"哪些配置会被官方当成 shared-user ingress 信号","基于最新官方 security audit 文档，解释 OpenClaw 为什么会把开放 DM、群目标和 wildcard sender 规则识别成 shared-user ingress 信号，以及这些提醒真正想让你检查什么。","/docs/reference/shared-user-ingress-signals",[2816,3534,3519,3838,3581],"ingress",{"title":3840,"description":3841,"path":3842,"category":3575,"updatedAt":2863,"sourceType":2769,"tags":3843},"status、health 和 logs 该怎么分工","基于最新官方 CLI reference，整理 openclaw status、health、logs 三组命令各自应该回答什么问题，以及值班和排障时更稳的使用顺序。","/docs/reference/status-health-and-logs",[3238,3426,3844,3174,3845],"health","troubleshooting",{"title":3847,"description":3848,"path":3849,"category":3575,"updatedAt":3823,"sourceType":2769,"tags":3850},"对话记录清理（provider fixups）到底改了什么，不改什么","基于最新官方 Transcript Hygiene 文档，解释 OpenClaw 在运行前对 transcript 做的 provider-specific fixups、图片清理、tool 调用配对修复和思考签名清理分别解决什么问题，以及为什么它不会重写磁盘 JSONL。","/docs/reference/transcript-hygiene-and-provider-fixups",[3825,3851,3068,3852,3581],"hygiene","tool-calls",{"title":3854,"description":3855,"path":3856,"category":3664,"updatedAt":2847,"sourceType":2769,"tags":3857},"故障排除与诊断思路","把 OpenClaw 常见问题按环境、入口、配置、认证和运行状态拆开，建立更高效的排查顺序。","/docs/reference/troubleshooting",[3845,3417,3426,3174],{"title":3859,"description":3860,"path":3861,"category":3575,"updatedAt":2955,"sourceType":2769,"tags":3862},"WebChat 的 history、inject 和展示边界","基于最新官方 WebChat 文档，整理 chat.history 的截断/占位规则、chat.inject 的真实用途，以及为什么 WebChat 看见的 transcript 不是原始 JSONL 的一比一镜像。","/docs/reference/webchat-history-and-inject-boundaries",[2919,3863,3864,3825,3581],"history","inject",{"title":3866,"description":3867,"path":3868,"category":3869,"updatedAt":2904,"sourceType":2769,"tags":3870},"国内云部署思路","面向中文团队整理 OpenClaw 在国内或面向国内网络环境部署时最该先判断的三件事：入口生态、模型端点和长期在线后的运维边界。","/docs/setup/china-cloud-deployment","安装",[3871,3872,3873,3874,3445,3446],"china","cloud","deployment","feishu",{"title":3876,"description":3877,"path":3878,"category":3869,"updatedAt":2847,"sourceType":2769,"tags":3879},"部署方式怎么选","从本地安装、Docker、国内云模板和海外一键部署四类路径理解 OpenClaw 的部署选择，而不是只追求“最快装上”。","/docs/setup/deployment-options",[3873,2866,3880,3872,3881],"docker","wsl2",{"title":3883,"description":3884,"path":3885,"category":3869,"updatedAt":3284,"sourceType":2769,"tags":3886},"OpenClaw 安装与环境","按官方推荐方式安装 OpenClaw，并根据本地开发、WSL2 和生产部署场景选择合适的安装路径。","/docs/setup/installation",[2849,3784,3887,3881],"install-script",{"title":3889,"description":3890,"path":3891,"category":3869,"updatedAt":2863,"sourceType":2769,"tags":3892},"安装器方式和升级路径怎么选","基于最新官方 Install 与 Updating 文档，整理 install.sh、install-cli.sh、PowerShell 安装器、全局包安装和 git 安装各自适合什么场景，以及后续升级时应该走哪条路径。","/docs/setup/installer-methods-and-upgrade-paths",[2849,3893,3887,3894,3496],"updater","git",{"title":3896,"description":3897,"path":3898,"category":3869,"updatedAt":2822,"sourceType":2769,"tags":3899},"安装器、更新与卸载","基于官方安装器、更新和卸载文档，整理 OpenClaw 从首次安装到原地升级、服务移除和彻底卸载的完整维护路径。","/docs/setup/installer-update-and-uninstall",[2849,3893,3900,3417,3496],"uninstall",{"title":3902,"description":3903,"path":3904,"category":3869,"updatedAt":2822,"sourceType":2769,"tags":3905},"Linux 安装指南","在 Linux 服务器和桌面上安装和配置 OpenClaw 的详细指南。","/docs/setup/linux-installation",[3906,2849,2858,3907],"linux","server",{"title":3909,"description":3910,"path":3911,"category":3869,"updatedAt":2822,"sourceType":2769,"tags":3912},"macOS 安装指南","在 macOS 上安装和配置 OpenClaw 的详细指南。","/docs/setup/macos-installation",[2967,2849,2858,3913],"apple",{"title":3915,"description":3916,"path":3917,"category":3918,"updatedAt":2847,"sourceType":2769,"tags":3919},"版本迁移与升级检查单","在 OpenClaw 版本升级前后，优先检查配置、CLI、认证和入口层变化，避免把升级直接变成线上事故。","/docs/setup/migration-guide","迁移",[3920,3921,3493,3922],"migration","upgrade","checklist",{"title":3924,"description":3925,"path":3926,"category":3869,"updatedAt":2822,"sourceType":2769,"tags":3927},"Windows 安装指南","在 Windows 上安装和配置 OpenClaw 的详细指南，推荐使用 WSL2。","/docs/setup/windows-installation",[3928,2849,2858,3881],"windows",{"count":3930,"latestDate":3823,"items":3931},111,[3932,3940,3952,3959,3969,3978,3983,3992,4000,4006,4013,4020,4027,4035,4041,4051,4061,4068,4074,4084,4095,4105,4111,4118,4124,4132,4139,4146,4152,4159,4165,4171,4177,4182,4188,4195,4201,4208,4214,4220,4226,4232,4238,4245,4251,4256,4267,4273,4279,4286,4293,4299,4305,4311,4321,4327,4333,4338,4344,4349,4356,4362,4368,4373,4379,4386,4391,4397,4402,4408,4414,4420,4426,4432,4437,4442,4449,4457,4462,4468,4476,4482,4488,4494,4501,4506,4511,4518,4523,4528,4534,4540,4547,4553,4558,4564,4569,4580,4588,4593,4601,4606,4613,4618,4624,4629,4635,4640,4648,4654,4660],{"title":3933,"description":3934,"path":3935,"category":3936,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":3939},"OpenClaw 支持超过 50 个集成平台","OpenClaw 宣布已支持超过 50 个消息和生产力平台集成，成为最全面的 AI 助手解决方案。","/news/50-integrations","生态动态","2026-03-09","openclaw.ai",[3353,2795,3029],{"title":3941,"description":3942,"path":3943,"category":3944,"date":3945,"updatedAt":2776,"sourceType":2769,"source":3938,"tags":3946},"OpenClaw 与主流 AI 模型对比分析","深入对比 OpenClaw 支持的各类 AI 模型，帮助用户选择最适合自己需求的模型配置。","/news/ai-model-comparison","技术深度","2026-03-07",[2912,3947,3948,3949,3950,3951],"comparison","gpt","claude","llama","analysis",{"title":3953,"description":3954,"path":3955,"category":3956,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":3957},"OpenClaw 支持多种 AI 模型选择","OpenClaw 支持 Anthropic Claude、OpenAI GPT 和本地模型，为用户提供灵活的 AI 选择。","/news/ai-model-flexibility","功能介绍",[3958,2912,3949,3948,2866],"ai",{"title":3960,"description":3961,"path":3962,"category":3963,"date":3964,"updatedAt":2776,"sourceType":3633,"source":3965,"tags":3966},"OpenClaw API v2 正式发布","OpenClaw 发布全新 API v2 版本，带来更强大的功能、更好的性能和更完善的开发者体验。","/news/api-v2-release","产品更新","2026-03-10","github.com/openclaw/openclaw",[3338,3967,3968,3744],"v2","developer",{"title":3970,"description":3971,"path":3972,"category":3973,"date":3964,"updatedAt":3964,"sourceType":2769,"source":3974,"tags":3975},"OpenClaw on AWS：云上一键部署指南发布","AWS 官方发布 OpenClaw on Lightsail 部署指南，用户可在 AWS 云平台快速部署自己的 AI 助手实例。","/news/aws-lightsail-deployment","云服务集成","AWS Blog",[3976,3872,3873,3977],"aws","lightsail",{"title":3979,"description":3980,"path":3981,"category":3963,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":3982},"OpenClaw 浏览器自动化功能升级","OpenClaw 浏览器自动化功能迎来重大升级，支持更多操作和更好的稳定性。","/news/browser-automation-v2",[3059,2773,3493,3566],{"title":3984,"description":3985,"path":3986,"category":3956,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":3987},"OpenClaw Canvas 实时可视化功能详解","深入了解 OpenClaw 的 Canvas 功能，如何使用 A2UI 语法创建交互式可视化界面。","/news/canvas-a2ui",[3988,3989,3990,3991],"canvas","a2ui","visualization","ui",{"title":3993,"description":3994,"path":3995,"category":3996,"date":2822,"updatedAt":2822,"sourceType":3028,"source":3997,"tags":3998},"OpenClaw 中国社区热潮：本地化部署与中文教程需求激增","OpenClaw 在中国市场迎来爆发式增长，小红书、知乎等平台讨论热度持续攀升，中文教程和本地化部署成为用户最关注的话题。","/news/china-community-boom","社区动态","社区观察",[3871,3028,2825,3999],"localization",{"title":4001,"description":4002,"path":4003,"category":3936,"date":3937,"updatedAt":2847,"sourceType":3633,"source":4004,"tags":4005},"ClawHub 技能市场突破 300 技能大关","OpenClaw 官方技能市场 ClawHub 已收录超过 300 个开源技能，为用户提供丰富的扩展选择。","/news/clawhub-300-skills","github.com/openclaw/clawhub",[2808,3011,3029,2897],{"title":4007,"description":4008,"path":4009,"category":3996,"date":3937,"updatedAt":2847,"sourceType":3028,"source":4010,"tags":4011},"OpenClaw 开发者社区突破 5 万人","OpenClaw 开发者社区持续增长，Discord 成员已超过 50,000 人。","/news/developer-community","discord.gg/openclaw",[3028,3005,2804,4012],"growth",{"title":4014,"description":4015,"path":4016,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4018},"OpenClaw Discord 集成配置","了解如何将 Discord Bot 连接到 OpenClaw，实现服务器和频道管理。","/news/discord-integration","渠道指南",[3005,3300,4019,2825],"channel",{"title":4021,"description":4022,"path":4023,"category":3963,"date":3937,"updatedAt":2847,"sourceType":3633,"source":4024,"tags":4025},"OpenClaw 企业部署最佳实践发布","OpenClaw 官方发布企业级部署指南，包含 Ansible 自动化、容器化部署和安全配置。","/news/enterprise-deployment","github.com/openclaw/openclaw-ansible",[2814,3873,4026,3880],"ansible",{"title":4028,"description":4029,"path":4030,"category":4031,"date":4032,"updatedAt":2776,"sourceType":2769,"source":3938,"tags":4033},"OpenClaw 企业版功能详解","深入了解 OpenClaw 企业版的专属功能、部署方案和安全特性，助力企业数字化转型。","/news/enterprise-edition-guide","产品介绍","2026-03-06",[2814,3873,2816,4034],"features",{"title":4036,"description":4037,"path":4038,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4039},"OpenClaw 飞书集成配置","了解如何将 OpenClaw 集成到飞书，实现企业协作。","/news/feishu-integration",[3874,4040,4019,2814,2825],"lark",{"title":4042,"description":4043,"path":4044,"category":4045,"date":2776,"updatedAt":2776,"sourceType":3028,"source":4046,"tags":4047},"OpenClaw 创始人 Peter Steinberger：从独立开发者到开源明星","OpenClaw 创始人 Peter Steinberger 的创业故事，从 Clawdbot/Moltbot 到爆火开源项目的历程。","/news/founder-story","人物故事","社区整理",[4048,4049,4050,3028],"founder","story","opensource",{"title":4052,"description":4053,"path":4054,"category":4055,"date":3937,"updatedAt":2847,"sourceType":3633,"source":4056,"tags":4057},"OpenClaw GitHub 星标突破 28.7 万","OpenClaw 开源项目在 GitHub 上的星标数突破 287,000，成为最受欢迎的开源 AI 助手项目之一。","/news/github-stars-milestone","项目动态","github.com/openclaw",[3633,4058,4059,4060],"stars","milestone","open-source",{"title":4062,"description":4063,"path":4064,"category":3963,"date":4065,"updatedAt":2822,"sourceType":3633,"source":3965,"tags":4066},"OpenClaw 本地模型支持全面升级","OpenClaw 现已支持更多本地大语言模型，包括 Llama 3、Mistral、Qwen 等，让用户在保护隐私的同时享受 AI 能力。","/news/local-model-support","2026-03-05",[3135,3137,3950,4067,3134],"mistral",{"title":4069,"description":4070,"path":4071,"category":3963,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4072},"OpenClaw macOS 伴侣应用 Beta 发布","OpenClaw 推出专为 macOS 15+ 设计的伴侣应用，提供更便捷的菜单栏访问体验。","/news/macos-companion-app",[2967,4073,3568,3493],"app",{"title":4075,"description":4076,"path":4077,"category":4078,"date":3937,"updatedAt":2847,"sourceType":4079,"source":3938,"tags":4080},"OpenClaw 获 MacStories 专题报道：个人 AI 助手的未来","知名科技媒体 MacStories 发表专题报道，高度评价 OpenClaw 为个人 AI 助手领域带来的创新。","/news/media-coverage","媒体报道","media",[4079,4081,4082,4083],"macstories","coverage","press",{"title":4085,"description":4086,"path":4087,"category":4088,"date":2847,"updatedAt":2847,"sourceType":2939,"source":4089,"tags":4090},"外部报道：Meta 收购 Moltbook，OpenClaw 生态再次进入主流视野","根据 2026 年 3 月 11 日自动抓取的外部报道，Meta 已收购基于 OpenClaw 构建的 AI 代理社交网络 Moltbook。本文将事件背景、与 OpenClaw 的关联，以及对中文用户的参考价值整理为站点可读版本。","/news/meta-moltbook-openclaw-background","行业动态","自动抓取外部报道（2026-03-11）",[4091,4092,2231,4093,4094],"meta","moltbook","ai-agent","industry",{"title":4096,"description":4097,"path":4098,"category":3963,"date":4099,"updatedAt":2776,"sourceType":2769,"source":3938,"tags":4100},"OpenClaw 移动端体验全面优化","OpenClaw 发布移动端重大更新，带来全新界面设计、性能优化和多项新功能。","/news/mobile-experience-update","2026-03-08",[2992,4101,4102,4103,4104],"ios","android","ux","performance",{"title":4106,"description":4107,"path":4108,"category":3963,"date":2822,"updatedAt":2776,"sourceType":3633,"source":3965,"tags":4109},"OpenClaw 多 Agent 协作功能正式发布","OpenClaw 发布多 Agent 协作功能，支持多个 AI 代理协同工作，实现复杂任务的自动化处理。","/news/multi-agent-collaboration",[2898,4110,2842,2773],"collaboration",{"title":4112,"description":4113,"path":4114,"category":3956,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4115},"OpenClaw 多平台客户端详解","了解 OpenClaw 在 macOS、iOS、Android 等多平台上的客户端能力，以及如何实现跨设备无缝使用。","/news/multiplatform-clients",[4116,2967,4101,4102,4117],"clients","platforms",{"title":4119,"description":4120,"path":4121,"category":3963,"date":4065,"updatedAt":2847,"sourceType":3633,"source":3965,"tags":4122},"OpenClaw 2026.3.7 版本观察","结合最新 release 观察当前版本中最值得中文用户优先关注的变化方向。","/news/mvp-launch",[3493,4123,3494],"version",{"title":4125,"description":4126,"path":4127,"category":4128,"date":4129,"updatedAt":2776,"sourceType":2769,"source":3938,"tags":4130},"OpenClaw 开源一周年：回顾与展望","OpenClaw 开源项目迎来一周年里程碑，回顾这一年的成长历程和社区贡献。","/news/open-source-anniversary","官方公告","2026-03-01",[4131,4060,3028,4059],"anniversary",{"title":4133,"description":4134,"path":4135,"category":3963,"date":4136,"updatedAt":2863,"sourceType":3633,"source":4137,"tags":4138},"OpenClaw 2026.3.13 官方发布：Cron、插件碰撞、Docker 时区和网关稳定性继续修复","基于 2026 年 3 月 14 日发布的官方 GitHub Release，整理本轮最值得中文站读者关注的调度、插件、Docker、渠道和 UI 修复点。","/news/openclaw-2026-3-13-release","2026-03-14","https://github.com/openclaw/openclaw/releases",[3493,3494,3383,2897,3880,2793],{"title":4140,"description":4141,"path":4142,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4144,"tags":4145},"OpenClaw 集成观察：HTTP API、Gateway WebSocket 与 SDK 的三层接口面正在被官方写清","基于 2026 年 3 月 25 日可见的官方 API、Web 与 Gateway 文档，最近开发者侧最值得关注的变化之一是不同接口面的分工正在被官方主动拆清。","/news/openclaw-api-surface-watch-2026-03-25","生态观察","https://docs.openclaw.ai/api/v2",[3338,3344,3744,2793,2775],{"title":4147,"description":4148,"path":4149,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4150,"tags":4151},"OpenClaw 执行审批观察：CLI、per-agent allowlist 与聊天转发正在把宿主机执行面做成正式治理层","基于 2026 年 3 月 24 日可见的官方 approvals CLI 与 Exec Approvals 文档，最近最值得关注的信号不是“能不能审批”，而是宿主机执行边界已经开始形成一套完整治理面。","/news/openclaw-approvals-surface-watch-2026-03-24","https://docs.openclaw.ai/tools/exec-approvals",[3083,3081,3191,2816,2793,3593],{"title":4153,"description":4154,"path":4155,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4156,"tags":4157},"OpenClaw 开始把 AUTH_TOKEN_MISMATCH 写成可恢复的漂移场景","官方最新 Dashboard 文档把 AUTH_TOKEN_MISMATCH、trusted retry 和 token drift recovery 串成了一条更完整的恢复路径，让认证失败不再只是黑箱报错。","/news/openclaw-auth-mismatch-retry-watch-2026-03-26","https://docs.openclaw.ai/web/dashboard",[2851,3057,4158,3185,3405],"drift",{"title":4160,"description":4161,"path":4162,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4163,"tags":4164},"OpenClaw 的自动化运维面正在收成一条更清楚的排障梯子","官方最近围绕 Heartbeat、cron CLI 和 Automation Troubleshooting 的文档更新，正在把自动化问题从“感觉没触发”收敛成更可观测的几层：调度、入队、运行结果、可见性与时间窗口。","/news/openclaw-automation-ops-ladder-watch-2026-03-29","https://docs.openclaw.ai/automation/troubleshooting",[2773,3391,3383,3845,2815],{"title":4166,"description":4167,"path":4168,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4169,"tags":4170},"OpenClaw 开始把 Broadcast Groups 从路由技巧推进成多代理协作入口","官方最新 Broadcast Groups 文档把多 agent 同群运行的触发条件、session 隔离和处理策略写得更完整了，也让它和普通 bindings 的分工更清楚。","/news/openclaw-broadcast-groups-watch-2026-03-25","https://docs.openclaw.ai/channels/broadcast-groups",[2974,2959,2975,2958,3004],{"title":4172,"description":4173,"path":4174,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4175,"tags":4176},"OpenClaw 的浏览器管理员面正在收成一条完整信任链","官方最近围绕 Pairing、Remote Access、Trusted Proxy Auth 和 Dashboard 的文档更新，正在把浏览器入口从“页面能打开”收敛成“地址、认证、设备与 operator 权限”四层联动的信任链。","/news/openclaw-browser-trust-chain-watch-2026-03-29","https://docs.openclaw.ai/gateway/trusted-proxy-auth",[2851,3554,3107,2865,2816],{"title":4178,"description":4179,"path":4180,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4150,"tags":4181},"OpenClaw 渠道观察：Telegram 和 Discord 正在从聊天入口扩展成正式审批面","基于 2026 年 3 月 24 日可见的官方 Exec Approvals 文档，Telegram 与 Discord 最近最值得关注的变化不是又多了一个命令，而是它们已经开始承担受控审批入口。","/news/openclaw-channel-approval-clients-watch-2026-03-24",[3003,3005,3083,2795,3508],{"title":4183,"description":4184,"path":4185,"category":3996,"date":2789,"updatedAt":2789,"sourceType":3028,"source":4186,"tags":4187},"OpenClaw 在中国 AI 生态中的位置：从中文教程热到本地化能力竞赛","基于 2026 年 3 月 16 日整理素材，梳理 OpenClaw 在中国 AI 生态里的关注点：本地部署、中文模型接入、数据安全与本土服务集成。","/news/openclaw-china-ecosystem-watch-2026-03-16","content/tmp/2026-03-16/openclaw-china-ai-ecosystem-analysis.md",[3871,3029,3999,3951],{"title":4189,"description":4190,"path":4191,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4192,"tags":4193},"OpenClaw ClawHub 观察：sync、lockfile 与最小 telemetry 让技能注册表更像正式分发生态","基于 2026 年 3 月 24 日可见的官方 ClawHub 文档，最近最值得关注的变化不是“技能数量”，而是技能分发、版本记录和同步行为正在更像一套正式 registry。","/news/openclaw-clawhub-sync-watch-2026-03-24","https://docs.openclaw.ai/tools/clawhub",[3011,2808,3020,3021,4194,3012],"telemetry",{"title":4196,"description":4197,"path":4198,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4199,"tags":4200},"OpenClaw CLI 观察：命令行已经不只是辅助工具，而是在慢慢收敛成正式控制面","基于 2026 年 3 月 21 日可见的官方 CLI Reference、Gateway protocol 与 Dashboard 文档，整理最近最值得中文站关注的 CLI 变化：status/health/logs 分层、gateway RPC 边界，以及 Dashboard 和 CLI 之间更清晰的协作关系。","/news/openclaw-cli-control-plane-watch-2026-03-21","https://docs.openclaw.ai/cli",[3238,2793,3707,2950,2815],{"title":4202,"description":4203,"path":4204,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4205,"tags":4206},"OpenClaw 的配置分层边界越来越清楚","官方最近围绕 Environment Variables、Configuration、Logging 和 Debugging 的文档更新，正在把正式配置、env 注入和一次性 override 拆成更清楚的层。","/news/openclaw-configuration-layering-watch-2026-03-22","https://docs.openclaw.ai/help/environment",[2807,3279,2957,4207,2815],"overrides",{"title":4209,"description":4210,"path":4211,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4137,"tags":4212},"OpenClaw 上下文观察：Compaction、Session 连续性与 persona 保真正在成为官方显式关注点","基于 2026 年 3 月 21 日可见的官方 Context 文档与 GitHub Releases 页面，整理最近最值得中文站关注的上下文变化：compaction 后 token 检查、session continuity、persona/language 保真，以及它们对长期使用的意义。","/news/openclaw-context-compaction-watch-2026-03-21",[3292,3293,3095,2797,4213],"continuity",{"title":4215,"description":4216,"path":4217,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4218,"tags":4219},"OpenClaw 控制面观察：Control UI、设备配对与 Tailscale Serve 正在把浏览器管理做成正式能力","基于 2026 年 3 月 21 日可见的官方 Control UI、Dashboard、Pairing 与 Tailscale 文档，整理最近最值得关注的控制面变化：浏览器设备配对、语言支持、远程 Serve 与更明确的管理面边界。","/news/openclaw-control-surface-watch-2026-03-21","https://docs.openclaw.ai/web/control-ui",[3037,2851,3376,3107,2865],{"title":4221,"description":4222,"path":4223,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4156,"tags":4224},"OpenClaw 正在把 Dashboard bootstrap 写成更安全的默认路径","官方最新 Dashboard 文档更明确地说明了 openclaw dashboard 在 localhost、SecretRef token 和 headless 环境里的引导行为，也让它更像正式控制面入口。","/news/openclaw-dashboard-bootstrap-watch-2026-03-26",[2851,4225,3658,3057,3037],"bootstrap",{"title":4227,"description":4228,"path":4229,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4156,"tags":4230},"OpenClaw Web 控制面观察：Dashboard 与 WebChat 的认证引导和回流边界正在变清楚","基于 2026 年 3 月 24 日可见的官方 dashboard CLI、Web Dashboard 与 WebChat 文档，最近 Web 控制面最值得关注的变化是认证引导、SecretRef token 处理和 WebChat 回流边界正在被主动写清。","/news/openclaw-dashboard-webchat-auth-watch-2026-03-24",[2851,2919,3058,3658,2958,4231],"web",{"title":4233,"description":4234,"path":4235,"category":3936,"date":2789,"updatedAt":2789,"sourceType":3028,"source":4236,"tags":4237},"OpenClaw 开发者生态扩张观察：中文技能与本地工作流成为新增长点","基于 2026 年 3 月 16 日临时素材，整理 OpenClaw 开发者生态在中文社区中的扩展方向，重点关注中文技能、本地平台集成与企业工作流落地。","/news/openclaw-developer-ecosystem-watch-2026-03-16","content/tmp/2026-03-16/openclaw-developer-ecosystem-expansion.md",[2804,2808,3029,3871],{"title":4239,"description":4240,"path":4241,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4242,"tags":4243},"OpenClaw 的 devices CLI 正在把设备授权写成一条完整生命周期","官方最近围绕 devices CLI 的补强，让 approve、revoke、rotate 和 fresh token 不再像零散命令，而更像完整的设备授权生命周期。","/news/openclaw-device-token-lifecycle-watch-2026-03-25","https://docs.openclaw.ai/channels/pairing",[3108,3107,3058,3411,4244],"rotate",{"title":4246,"description":4247,"path":4248,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4249,"tags":4250},"OpenClaw 的诊断与修复工作流正在成型","官方最近围绕 Doctor、Diagnostics Flags、Debugging 和 sessions cleanup 的文档更新，正在把 OpenClaw 的排障方式从“看日志猜”推进到更清楚的 repair ladder。","/news/openclaw-diagnostics-repair-watch-2026-03-22","https://docs.openclaw.ai/doctor",[3417,3587,3418,3666,2815],{"title":4252,"description":4253,"path":4254,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4249,"tags":4255},"OpenClaw 排障观察：doctor 正在从“检查器”继续长成带备份心智的修复入口","基于 2026 年 3 月 25 日可见的官方 Doctor 文档，最近排障层最值得关注的变化之一是 doctor 对 stale config、unknown keys 和 legacy 状态的处理边界越来越清楚。","/news/openclaw-doctor-repair-boundary-watch-2026-03-25",[3417,3418,3276,3496,3587],{"title":4257,"description":4258,"path":4259,"category":4260,"date":2789,"updatedAt":2789,"sourceType":3028,"source":4261,"tags":4262},"OpenClaw 教育场景观察：AI 助教、个性化学习与高校试点想象空间","基于 2026 年 3 月 16 日教育领域临时稿，梳理 OpenClaw 在高校与教学场景中的潜在落地方向，包括答疑、学习路径推荐和教师工作流辅助。","/news/openclaw-education-adoption-watch-2026-03-16","行业观察","content/tmp/2026-03-16/openclaw-education-sector-adoption.md",[4263,4264,4265,4266],"education","adoption","ai-tutor","higher-education",{"title":4268,"description":4269,"path":4270,"category":4260,"date":2789,"updatedAt":2789,"sourceType":3028,"source":4271,"tags":4272},"OpenClaw 企业应用热度上升：中文团队更关注私有化部署与流程接入","基于 2026 年 3 月 16 日企业方向临时稿，整理 OpenClaw 在中文企业场景中的关注重点，包括私有化部署、安全边界、行业接入与内部工作流自动化。","/news/openclaw-enterprise-adoption-watch-2026-03-16","content/tmp/2026-03-16/openclaw-enterprise-adoption-boom.md",[2814,3873,2842,3871],{"title":4274,"description":4275,"path":4276,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4277,"tags":4278},"OpenClaw 扩展层观察：ClawHub、插件托管 hooks 与 onboarding 勾选正在把扩展能力收拢成一条更完整链路","基于 2026 年 3 月 21 日可见的官方 Skills、ClawHub、Plugins 与 Hooks 文档，整理最近最值得中文站关注的扩展层变化：技能 registry、插件托管 hooks，以及 onboarding 阶段对推荐 hooks 的直接引导。","/news/openclaw-extension-stack-watch-2026-03-21","https://docs.openclaw.ai/automation/hooks",[2808,3011,2897,2772,3030],{"title":4280,"description":4281,"path":4282,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4283,"tags":4284},"OpenClaw 正在把 gateway-owned pairing 的过期与轮换边界说清楚","官方最新 Gateway-owned pairing 文档把 pending request 的 5 分钟过期、fresh token 生成和 UI 只是审批前端这几层边界写得更清楚了。","/news/openclaw-gateway-pairing-expiry-watch-2026-03-25","https://docs.openclaw.ai/gateway/pairing",[2793,3107,4285,3058,2949],"pending",{"title":4287,"description":4288,"path":4289,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4290,"tags":4291},"OpenClaw 正在把 Gateway 的 session source-of-truth 地位写得更明确","官方最新 Session 文档更明确地说明 session store、JSONL transcript 和 token 计数都应围绕 Gateway 理解，这会直接影响 WebChat、Dashboard 和远程 operator 的排障方式。","/news/openclaw-gateway-source-of-truth-watch-2026-03-26","https://docs.openclaw.ai/session",[2793,2976,2919,2851,4292],"state",{"title":4294,"description":4295,"path":4296,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4297,"tags":4298},"OpenClaw 开始把群聊入口判断顺序写成可复述规则","官方最近在 Groups、Group Messages 和 Messages 文档里，把群入口的 groupPolicy、allowlist 和 mention gating 顺序写得更完整了，也让“没回”和“没进系统”首次更容易区分。","/news/openclaw-group-policy-watch-2026-03-25","https://docs.openclaw.ai/channels/groups",[2975,3730,3191,3124,2958],{"title":4300,"description":4301,"path":4302,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4297,"tags":4303},"OpenClaw 正在把群触发从“@一下就行”写成更完整的治理链","官方最近围绕 Groups、Group Messages 和 Broadcast Groups 的文档更新，正在把 reply-to implicit mention、pending history、forum topic session key 和 shared-group rollout 写成更完整的群入口治理链。","/news/openclaw-group-trigger-governance-watch-2026-03-29",[2975,3803,4304,2974,3217],"activation",{"title":4306,"description":4307,"path":4308,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4309,"tags":4310},"OpenClaw 配置观察：include 合并边界正在从“能拆文件”继续走向“能预测最终结果”","基于 2026 年 3 月 25 日可见的官方 Configuration 文档，最近配置层最值得关注的变化之一是 include、数组处理和 sibling override 的顺序正在被官方主动写清。","/news/openclaw-include-merge-boundary-watch-2026-03-25","https://docs.openclaw.ai/gateway/configuration",[2807,3750,3368,3751,2815],{"title":4312,"description":4313,"path":4314,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4315,"tags":4316},"OpenClaw 官方 Showcase 基础设施观察：Home Assistant、Nix 与远程文件流转正在成为高频落地方向","基于 2026 年 3 月 21 日可见的官方 Showcase 页面，整理最近最值得关注的基础设施与部署类案例，观察 OpenClaw 在家庭服务器、可复现部署和远程实例运维上的真实应用。","/news/openclaw-infra-showcase-watch-2026-03-21","https://docs.openclaw.ai/start/showcase",[4317,3873,4318,4319,4320],"showcase","home-assistant","nix","infrastructure",{"title":4322,"description":4323,"path":4324,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4325,"tags":4326},"OpenClaw 的长期会话治理能力正在变完整","官方最近围绕 session、memory、compaction 和 secure DM mode 的文档更新，正在把长期连续性、上下文边界和重置策略拼成一条更完整的治理链。","/news/openclaw-long-session-governance-watch-2026-03-22","https://docs.openclaw.ai/concepts/session",[3095,2797,3293,4213,3217],{"title":4328,"description":4329,"path":4330,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4331,"tags":4332},"OpenClaw 的后台维护生命周期正在变清楚","官方最近围绕 cron、sessions cleanup、doctor 和 retention 的文档更新，正在把长期运行时的会话、日志和作业痕迹分成更清楚的维护层次。","/news/openclaw-maintenance-lifecycle-watch-2026-03-22","https://docs.openclaw.ai/cron",[3496,3383,3095,3384,2815],{"title":4334,"description":4335,"path":4336,"category":3963,"date":3937,"updatedAt":2847,"sourceType":3633,"source":3965,"tags":4337},"OpenClaw 2026年3月版本更新：技能系统与安全性全面升级","OpenClaw 发布重要更新，带来性能优化、全新技能系统和安全性改进。","/news/openclaw-march-2026-update",[3493,3566,3494,2808,2816],{"title":4339,"description":4340,"path":4341,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4342,"tags":4343},"OpenClaw 记忆观察：Markdown 仍然是 source of truth，memory plugin slot 正在把索引层做成可切换能力","基于 2026 年 3 月 24 日可见的官方 Memory、CLI memory 与 Plugins 文档，最近最值得关注的变化之一是记忆体系的文件事实层和插件增强层正在被官方主动拆清。","/news/openclaw-memory-plugin-slot-watch-2026-03-24","https://docs.openclaw.ai/concepts/memory",[2797,2897,3159,3151,3166],{"title":4345,"description":4346,"path":4347,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4342,"tags":4348},"OpenClaw 正在把记忆检索从“向量搜索”写成一条完整流水线","官方最近围绕 Memory 和 memory CLI 的文档更新，正在把 hybrid search、重排、temporal decay、session indexing 和 embedding cache 逐步写成一条更完整的检索链。","/news/openclaw-memory-retrieval-pipeline-watch-2026-03-29",[2797,3766,3763,3167,3256],{"title":4350,"description":4351,"path":4352,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4315,"tags":4353},"OpenClaw 官方 Showcase 记忆观察：WhatsApp Memory Vault、Karakeep 与中文学习 Skill 正在把语音和知识流转成长期资产","基于 2026 年 3 月 21 日可见的官方 Showcase 页面，整理最近最值得中文站关注的记忆与知识类案例，观察 OpenClaw 如何把转录、向量检索和学习流程接成长链路。","/news/openclaw-memory-showcase-watch-2026-03-21",[4317,2797,3066,4354,4355],"vector-search","knowledge",{"title":4357,"description":4358,"path":4359,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4360,"tags":4361},"OpenClaw 的 mention gating 正在从单一 @ 规则变成跨渠道触发层","官方最新 Groups 和 Group Messages 文档显示，mention gating 已经不再只服务 WhatsApp 群，而是在 Telegram、Slack、Discord、iMessage 等入口上逐步形成统一触发层。","/news/openclaw-mention-gating-watch-2026-03-25","https://docs.openclaw.ai/channels/group-messages",[3730,2975,3003,3005,3074],{"title":4363,"description":4364,"path":4365,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4366,"tags":4367},"OpenClaw 的消息入口语义正在变清楚","官方最近围绕 Messages、WebChat 和 Channel Routing 的文档更新，正在把消息入口、上下文桶、历史展示和投递节奏拆成更明确的几层。","/news/openclaw-message-surface-watch-2026-03-22","https://docs.openclaw.ai/messages",[3124,2919,2958,3128,2795],{"title":4369,"description":4370,"path":4371,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4199,"tags":4372},"OpenClaw 模型观察：models status 正在从状态展示继续长成探活入口","基于 2026 年 3 月 24 日可见的官方 CLI 文档，最近模型层最值得关注的变化之一是 models status 已经不只负责展示主模型和 fallback，而是开始承担 auth profile 探测。","/news/openclaw-model-probe-watch-2026-03-24",[2912,3772,3068,3057,3455],{"title":4374,"description":4375,"path":4376,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4377,"tags":4378},"OpenClaw 节点观察：headless node、普通设备节点与 Gateway 的宿主边界正在被官方写清","基于 2026 年 3 月 25 日可见的官方 Nodes、Architecture 与 Pairing 文档，最近节点层最值得关注的变化之一是能力宿主边界正在被主动拆清。","/news/openclaw-node-host-boundary-watch-2026-03-25","https://docs.openclaw.ai/nodes",[2949,3106,2793,3107,3108],{"title":4380,"description":4381,"path":4382,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4383,"tags":4384},"OpenClaw 接入观察：从 2026.1.29 的迁移信号到现在的 Onboarding Wizard，官方已经把“第一次跑通”做成更完整链路","基于 2026 年 3 月 21 日可见的官方 Onboarding、Install 与 Releases 页面，整理 OpenClaw 从命名迁移、路径自动迁移到本地/远程 wizard 分流这条接入链路最近最值得注意的变化。","/news/openclaw-onboarding-migration-watch-2026-03-21","https://docs.openclaw.ai/start/wizard",[2850,3920,4385,3921,3496],"install",{"title":4387,"description":4388,"path":4389,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4218,"tags":4390},"OpenClaw 的远程 operator 正在从“谁都能开网页”转向浏览器级交接管理","随着 Dashboard、Control UI 和 device pairing 文档持续补强，官方越来越清楚地把浏览器 profile、设备 pairing 和控制面交接写成同一条管理面问题。","/news/openclaw-operator-browser-watch-2026-03-26",[3508,3059,3037,3107,2865],{"title":4392,"description":4393,"path":4394,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4395,"tags":4396},"OpenClaw 正在把 Dashboard、WebChat 和 WebSocket 收成一套 operator surface","官方最近围绕 Dashboard、WebChat 和 Gateway Protocol 的文档更新，越来越清楚地把这些入口解释成同一套 operator surface 的不同层，而不是彼此割裂的功能页。","/news/openclaw-operator-surface-convergence-watch-2026-03-29","https://docs.openclaw.ai/gateway/protocol",[2851,2919,3344,3508,2950],{"title":4398,"description":4399,"path":4400,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4242,"tags":4401},"OpenClaw 的 pairing CLI 正在从单条 approve 命令长成正式入口治理面","官方最近把 pairing CLI 的 list、clear、--account 和 --notify 等行为写得更完整了，也让聊天入口审批越来越像一套正式的运营控制面。","/news/openclaw-pairing-cli-scope-watch-2026-03-25",[3107,3611,2795,3612,2815],{"title":4403,"description":4404,"path":4405,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4406,"tags":4407},"OpenClaw 官方插件生态观察：社区插件、内置 Provider 插件与 Hook Pack 正在形成更完整扩展层","基于 2026 年 3 月 21 日可见的官方插件与 hooks 文档，整理 OpenClaw 插件生态最近最值得关注的三个变化：社区插件目录、package pack、多层 hooks 组织方式。","/news/openclaw-plugin-ecosystem-watch-2026-03-21","https://docs.openclaw.ai/plugins",[2897,3029,2772,3028,3030],{"title":4409,"description":4410,"path":4411,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4412,"tags":4413},"OpenClaw 插件观察：安装 spec 和 update tracking 正在决定插件后续会沿哪条轨道走","基于 2026 年 3 月 24 日可见的官方 plugins CLI 文档，最近插件层最值得关注的变化之一是 install spec、--pin 与 plugins.installs 正在被官方主动连成一条生命周期链。","/news/openclaw-plugin-install-tracking-watch-2026-03-24","https://docs.openclaw.ai/cli/plugins",[2897,3011,3784,3785,3495],{"title":4415,"description":4416,"path":4417,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4418,"tags":4419},"OpenClaw 工作流观察：OpenProse 与 Lobster 的上下层分工正在变清楚","基于 2026 年 3 月 24 日可见的官方 Lobster 文档，最近最值得关注的信号是 OpenProse 与 Lobster 的边界正在被官方主动写清，多智能体准备和确定性执行不再混成一层。","/news/openclaw-prose-lobster-watch-2026-03-24","https://docs.openclaw.ai/tools/lobster",[3210,3211,2842,3083,2898],{"title":4421,"description":4422,"path":4423,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4424,"tags":4425},"OpenClaw 正在把 provider、模型和远程执行分成不同治理层","官方最近围绕 Models、Model Failover 和 node 的文档更新，正在把 provider auth、模型 allowlist、多模态能力和远程 node 执行拆成更清楚的治理层。","/news/openclaw-provider-capability-governance-watch-2026-03-29","https://docs.openclaw.ai/concepts/models",[3068,2912,2949,3057,3217],{"title":4427,"description":4428,"path":4429,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4430,"tags":4431},"OpenClaw 的 provider 故障恢复正在变成一条更清楚的梯子","官方最近围绕 Model Failover、Gateway Troubleshooting、LiteLLM 和 Cloudflare AI Gateway 的文档更新，正在把模型故障从“直接换模型”收敛成更清楚的几层：能力条件、profile 轮转、统一网关和跨模型 fallback。","/news/openclaw-provider-recovery-ladder-watch-2026-03-29","https://docs.openclaw.ai/concepts/model-failover",[3068,3580,2912,2793,2815],{"title":4433,"description":4434,"path":4435,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4137,"tags":4436},"OpenClaw 发布观察：2026.3.13 恢复型 Release 暴露出版本跟踪里最容易忽略的三层差异","基于 2026 年 3 月 21 日可见的 GitHub Releases 页面，整理 OpenClaw 2026.3.13 恢复型 Release 的关键信号，以及中文站在跟踪版本时最该注意的 npm 版本、Git tag 和 GitHub Release 名称差异。","/news/openclaw-release-watch-2026-03-21",[3493,3494,3496,3495],{"title":4438,"description":4439,"path":4440,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4156,"tags":4441},"OpenClaw 的远程管理员面边界越来越清楚","官方最近围绕 Dashboard、Pairing、Gateway-owned pairing 与 nodes 的文档更新，正在把远程协作、浏览器入口和设备接入的边界拆得更清楚。","/news/openclaw-remote-admin-watch-2026-03-22",[2851,3107,2949,2865,3398],{"title":4443,"description":4444,"path":4445,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4446,"tags":4447},"OpenClaw 的 routing precedence 正在成为更明确的排障坐标系","官方最近围绕 Channel Routing 的写法，正在把 peer、thread inheritance、guild、team、account 和 channel 等命中层级固定下来，让路由排障越来越像查规则，而不是猜模型。","/news/openclaw-routing-precedence-watch-2026-03-25","https://docs.openclaw.ai/channels/channel-routing",[2958,2957,4448,2795,2959],"threads",{"title":4450,"description":4451,"path":4452,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4453,"tags":4454},"OpenClaw Secret 观察：active snapshot 正在把密钥轮换从“即时取值”收成“原子切换”","基于 2026 年 3 月 25 日可见的官方 Secrets Management 文档，最近 secrets 层最值得关注的变化之一是 active snapshot 与 last-known-good 的边界越来越清楚。","/news/openclaw-secret-snapshot-watch-2026-03-25","https://docs.openclaw.ai/gateway/secrets",[3812,4455,4456,3811,2815],"snapshot","rotation",{"title":4458,"description":4459,"path":4460,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4325,"tags":4461},"OpenClaw 正在把 secure DM mode 写成共享入口的默认安全心智","官方最近围绕 Session、Security 和 CLI Security 的更新，正在把 secure DM mode 从一个可选技巧，推成多人 DM 入口的基础隔离建议。","/news/openclaw-secure-dm-mode-watch-2026-03-25",[2976,2816,3681,3107,3534],{"title":4463,"description":4464,"path":4465,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4466,"tags":4467},"OpenClaw 安全观察：security audit 已经从提醒工具继续长成加固入口","基于 2026 年 3 月 24 日可见的官方安全文档，最近最值得关注的信号是 openclaw security audit 不再只是列问题，而是在形成 audit、deep、fix 三段式加固路径。","/news/openclaw-security-audit-fix-watch-2026-03-24","https://docs.openclaw.ai/gateway/security",[2816,3519,3521,3520,2815],{"title":4469,"description":4470,"path":4471,"category":4472,"date":2789,"updatedAt":2789,"sourceType":3028,"source":4473,"tags":4474},"OpenClaw 安全与合规话题升温：中文团队更在意可审计与本地数据边界","基于 2026 年 3 月 16 日安全方向临时稿，整理 OpenClaw 在中文环境下最受关注的安全议题，包括本地运行、合规要求、可审计性与金融等高敏行业采用。","/news/openclaw-security-compliance-watch-2026-03-16","安全观察","content/tmp/2026-03-16/openclaw-security-audit-milestone.md",[2816,4475,3137,2814],"compliance",{"title":4477,"description":4478,"path":4479,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4453,"tags":4480},"OpenClaw 的安全运维边界继续细化","官方最近围绕 Secrets、approvals forwarding、trusted proxy 和 Control UI 降级开关的文档，正在把安全问题从抽象原则推向更可执行的运维边界。","/news/openclaw-security-ops-watch-2026-03-22",[2816,3811,3083,4481,2815],"proxy",{"title":4483,"description":4484,"path":4485,"category":4143,"date":3823,"updatedAt":3823,"sourceType":2769,"source":4486,"tags":4487},"OpenClaw 正在把 session transcript 从 JSONL 文件写成结构化会话事实层","官方最近新增的 Session Management Deep Dive 文档，把 session header、message tree、compaction entry 和 branch summary 这几层边界写得更清楚了。","/news/openclaw-session-jsonl-deep-dive-watch-2026-04-01","https://docs.openclaw.ai/reference/session-management-compaction",[2976,3826,3293,3825,2793],{"title":4489,"description":4490,"path":4491,"category":4143,"date":3823,"updatedAt":3823,"sourceType":2769,"source":4492,"tags":4493},"OpenClaw 的 sessions CLI 正在从会话列表命令长成 store 巡检入口","官方最近把 sessions CLI 的 scope、all-agents、active 和显式 store 路径写得更完整了，也让它更适合作为长期运维里的 session store 巡检面。","/news/openclaw-sessions-cli-watch-2026-04-01","https://docs.openclaw.ai/cli/sessions",[3095,3238,3832,3519,2815],{"title":4495,"description":4496,"path":4497,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4498,"tags":4499},"OpenClaw 正在把 shared inbox 明确限定为协作硬化，而不是多租户承诺","官方最新 security audit 文档正在更明确地区分协作型 shared inbox 与互不信任多租户环境，并把 secure DM、sandbox 和 workspace-scoped access 组合成更完整的加固建议。","/news/openclaw-shared-inbox-trust-model-watch-2026-03-25","https://docs.openclaw.ai/cli/security",[2816,3534,3535,4500,2793],"sandbox",{"title":4502,"description":4503,"path":4504,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4315,"tags":4505},"OpenClaw 官方 Showcase 更新：Telegram PR 反馈、酒窖 Skill 与 Tesco 自动购物成为新样板","基于 2026 年 3 月 21 日可见的官方 Showcase 页面，整理最近最值得中文站关注的三个社区案例，观察 OpenClaw 在评审、个人数据库和购物自动化上的真实落地方式。","/news/openclaw-showcase-watch-2026-03-21",[4317,3028,3003,2808,2773],{"title":4507,"description":4508,"path":4509,"category":4143,"date":2982,"updatedAt":2982,"sourceType":2769,"source":4498,"tags":4510},"OpenClaw 正在把团队入口治理拆成更细的几层","官方最近围绕 security audit、session、broadcast groups 和 channel routing 的文档更新，正在把 shared-user ingress、identityLinks、broadcast precedence 和 shared inbox 硬化拆成更清楚的治理面。","/news/openclaw-team-ingress-governance-watch-2026-03-29",[3534,3682,2974,2958,2816],{"title":4512,"description":4513,"path":4514,"category":4143,"date":3823,"updatedAt":3823,"sourceType":2769,"source":4515,"tags":4516},"OpenClaw 正在把 transcript hygiene 从隐藏兼容层写成正式参考边界","官方最近单独写出 Transcript Hygiene 文档后，tool call 修补、图片清理和 provider fixups 不再只是内部细节，而成了更清楚的运行前兼容层。","/news/openclaw-transcript-hygiene-watch-2026-04-01","https://docs.openclaw.ai/zh-CN/reference/transcript-hygiene",[3825,3068,3851,3852,4517],"compatibility",{"title":4519,"description":4520,"path":4521,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4175,"tags":4522},"OpenClaw 远程入口观察：trusted-proxy 正在被官方明确定义为高收益但高责任模式","基于 2026 年 3 月 24 日可见的官方 trusted-proxy auth 文档，最近最值得关注的不是怎么把页面转发出来，而是 OpenClaw 正在主动强调 trusted-proxy 的安全责任转移。","/news/openclaw-trusted-proxy-risk-watch-2026-03-24",[3554,2816,2865,2793,3057],{"title":4524,"description":4525,"path":4526,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4290,"tags":4527},"OpenClaw 的 UI 和 API 排障正在越来越像按层定位，而不是猜谁错了","官方最新 Session、WebChat 和 API 文档共同强化了一条思路：状态冲突时先回到 Gateway 事实层，再区分 UI 投影视图和 API 结构化返回。","/news/openclaw-ui-api-debug-watch-2026-03-26",[2793,2919,3338,3666,2976],{"title":4529,"description":4530,"path":4531,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4532,"tags":4533},"OpenClaw 维护观察：卸载边界正在从“删包”变成“服务、状态、profile 与远程主机”的完整收口","基于 2026 年 3 月 24 日可见的官方 Updating 与 uninstall 文档，最近最值得关注的变化之一是 OpenClaw 的卸载和移除边界正在被官方主动写清，不再只是删除 CLI。","/news/openclaw-uninstall-boundaries-watch-2026-03-24","https://docs.openclaw.ai/cli/uninstall",[3900,3496,3599,2793,4292],{"title":4535,"description":4536,"path":4537,"category":4143,"date":2904,"updatedAt":2904,"sourceType":2769,"source":4538,"tags":4539},"OpenClaw 更新观察：stable、beta、dev 正在从版本标签变成正式 rollout 体系","基于 2026 年 3 月 24 日可见的官方 update CLI 与 Updating 文档，最近最值得关注的变化之一是更新通道和 auto-updater 行为已经被官方写成一套明确的 rollout 逻辑。","/news/openclaw-update-channels-watch-2026-03-24","https://docs.openclaw.ai/cli/update",[3566,3567,3568,3569,3570],{"title":4541,"description":4542,"path":4543,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4315,"tags":4544},"OpenClaw 官方 Showcase 语音观察：Phone Bridge、Telegram Voice Notes 与多语言转录正在把语音入口做实","基于 2026 年 3 月 21 日可见的官方 Showcase 页面，整理最近最值得中文站关注的语音与电话类案例，观察 OpenClaw 在电话桥接、TTS 回传和多语言转录上的真实方向。","/news/openclaw-voice-phone-showcase-watch-2026-03-21",[4317,3051,4545,4546,3066],"phone","tts",{"title":4548,"description":4549,"path":4550,"category":4143,"date":2972,"updatedAt":2972,"sourceType":2769,"source":4551,"tags":4552},"OpenClaw 语音观察：全局 wake words 与设备本地 toggle 的分层正在变清楚","基于 2026 年 3 月 25 日可见的官方 Voice Wake 文档，最近语音层最值得关注的变化之一是 Gateway 级词表与设备本地开关的边界正在被官方主动强调。","/news/openclaw-voice-wake-boundary-watch-2026-03-25","https://docs.openclaw.ai/nodes/voice-wake",[3051,3324,3325,2949,3108],{"title":4554,"description":4555,"path":4556,"category":3936,"date":2863,"updatedAt":2863,"sourceType":2769,"source":4156,"tags":4557},"OpenClaw Web 入口观察：Dashboard、WebChat 与 Gateway WebSocket 正在收敛成一套更清晰的使用分工","基于 2026 年 3 月 21 日可见的官方 Dashboard、WebChat 与架构文档，整理最近最值得中文站关注的 Web 入口变化：Dashboard 的快速打开、WebChat 的 Gateway 直连，以及控制面和聊天面的职责分离。","/news/openclaw-web-surfaces-watch-2026-03-21",[2851,2919,3344,3037,4231],{"title":4559,"description":4560,"path":4561,"category":4143,"date":3336,"updatedAt":3336,"sourceType":2769,"source":4562,"tags":4563},"OpenClaw 正在把 WebChat、Dashboard 和 API 的入口职责写得更清楚","官方最近围绕 WebChat、Session 和 API 的写法，让 Dashboard 更像控制面、WebChat 更像会话 UI、API 更像结构化集成面，入口分工正在变得更稳定。","/news/openclaw-webchat-control-surface-watch-2026-03-26","https://docs.openclaw.ai/web/webchat",[2919,2851,3338,2793,2774],{"title":4565,"description":4566,"path":4567,"category":4143,"date":2955,"updatedAt":2955,"sourceType":2769,"source":4418,"tags":4568},"OpenClaw 工作流治理能力继续成型","官方最近的 ClawHub、Lobster、OpenProse 与 Exec approvals 文档，正在把技能发现、确定性执行和审批恢复串成更完整的一条线。","/news/openclaw-workflow-governance-watch-2026-03-22",[2842,3211,3011,3083,3217],{"title":4570,"description":4571,"path":4572,"category":4573,"date":4574,"updatedAt":4574,"sourceType":2790,"source":4575,"tags":4576},"OpenClaw 中文站本周更新：扩展能力地图、案例展示重构与周更内容节奏启动","本周中文站完成扩展目录重排、案例展示页重构，并开始按“教程 + 更新 + 案例”三类节奏持续发布内容。","/news/openclawcn-weekly-update-2026-03-15","站点更新","2026-03-15","openclawcn.xyz",[4577,4578,2796,4317,4579],"site-update","content","weekly",{"title":4581,"description":4582,"path":4583,"category":4584,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4585},"OpenClaw 隐私优先：数据保留在本地设备","OpenClaw 强调数据本地存储，用户数据保留在自有设备上，不上传到云端。","/news/privacy-first","产品理念",[3137,4586,2816,4587],"local-first","data",{"title":4589,"description":4590,"path":4591,"category":4055,"date":3937,"updatedAt":2847,"sourceType":3633,"source":4056,"tags":4592},"OpenClaw 项目持续活跃：主仓库星标突破 287k","OpenClaw 开源项目持续快速发展，主仓库星标数突破 287,000，ClawHub 技能目录已收录 349 个开源项目。","/news/project-update-march-2026",[3633,4058,3028,4012],{"title":4594,"description":4595,"path":4596,"category":4128,"date":4099,"updatedAt":2822,"sourceType":2769,"source":3938,"tags":4597},"OpenClaw 2026 年第一季度回顾","回顾 OpenClaw 在 2026 年第一季度的重要更新、社区成长和产品里程碑。","/news/q1-2026-review",[4598,4599,4600,4059],"quarterly","review","2026",{"title":4602,"description":4603,"path":4604,"category":3944,"date":2847,"updatedAt":2776,"sourceType":2769,"source":3938,"tags":4605},"OpenClaw 安全架构深度解析","深入了解 OpenClaw 的安全设计理念、数据保护机制和企业级安全特性。","/news/security-architecture",[2816,3137,2814,2806],{"title":4607,"description":4608,"path":4609,"category":4610,"date":2847,"updatedAt":2847,"sourceType":3028,"source":4611,"tags":4612},"OpenClaw 安全最佳实践：保护你的 AI 助手免受风险","随着 OpenClaw 的普及，安全问题日益受到关注。本文整理了保护本地 AI 助手的关键安全措施和最佳实践。","/news/security-best-practices","安全公告","安全社区",[2816,3137,3478,2906],{"title":4614,"description":4615,"path":4616,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4617},"OpenClaw Signal 隐私通讯集成","了解如何将 OpenClaw 连接到 Signal，实现隐私通讯。","/news/signal-privacy",[3262,3137,4019,2825],{"title":4619,"description":4620,"path":4621,"category":3996,"date":3964,"updatedAt":2822,"sourceType":3633,"source":3965,"tags":4622},"OpenClaw 技能市场突破 400 个技能","OpenClaw 技能市场迎来重要里程碑，社区贡献的技能数量突破 400 个，覆盖更多应用场景。","/news/skills-marketplace-400",[2808,4059,3028,4623],"marketplace",{"title":4625,"description":4626,"path":4627,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4628},"OpenClaw Slack 工作区集成","了解如何将 OpenClaw 集成到 Slack 工作区，实现团队协作。","/news/slack-workspace",[3074,2941,4019,2825],{"title":4630,"description":4631,"path":4632,"category":3956,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4633},"OpenClaw Tailscale 远程访问完全指南","了解如何使用 Tailscale 安全远程访问 OpenClaw，包括 Serve、Funnel 和身份认证。","/news/tailscale-integration",[3376,2865,4634,2816],"vpn",{"title":4636,"description":4637,"path":4638,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4639},"OpenClaw Telegram Bot 配置指南","了解如何创建和配置 Telegram Bot 连接到 OpenClaw。","/news/telegram-bot",[3003,3300,4019,2825],{"title":4641,"description":4642,"path":4643,"category":4644,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4645},"OpenClaw 与 VirusTotal 合作推出技能安全验证","OpenClaw 宣布与 VirusTotal 合作，为技能（Skills）提供安全验证服务，确保用户使用安全的 AI 技能。","/news/virustotal-integration","安全更新",[2816,4646,2808,4647],"virustotal","verification",{"title":4649,"description":4650,"path":4651,"category":3956,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4652},"OpenClaw 语音与 Canvas 功能详解","深入了解 OpenClaw 的语音交互能力和实时 Canvas 可视化功能，如何在日常场景中发挥价值。","/news/voice-and-canvas",[3051,3988,3990,4653],"multimodal",{"title":4655,"description":4656,"path":4657,"category":3963,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4658},"OpenClaw iOS 语音唤醒功能正式发布","OpenClaw iOS 应用现已支持语音唤醒功能，用户可以通过\"Hey Siri\"风格的唤醒词激活助手。","/news/voice-wakeup-ios",[4101,3051,4659,3493],"wakeup",{"title":4661,"description":4662,"path":4663,"category":4017,"date":3937,"updatedAt":2847,"sourceType":2769,"source":3938,"tags":4664},"OpenClaw WhatsApp 连接完全指南","详细了解如何将 WhatsApp 连接到 OpenClaw，包括配对、安全配置和常见问题解决。","/news/whatsapp-connection",[3004,4019,4665,2825],"baileys",{"count":4667,"items":4668},100,[4669,4676,4683,4690,4697,4702,4711,4717,4723,4729,4735,4742,4750,4758,4764,4774,4783,4790,4797,4806,4812,4820,4825,4830,4840,4846,4853,4858,4864,4871,4878,4885,4891,4896,4902,4908,4913,4918,4924,4926,4932,4938,4943,4949,4955,4962,4967,4974,4980,4986,4993,4998,5004,5009,5016,5021,5028,5034,5039,5047,5054,5060,5065,5070,5076,5082,5090,5095,5101,5106,5112,5117,5123,5129,5134,5139,5144,5151,5158,5164,5169,5175,5180,5187,5194,5200,5205,5210,5216,5222,5227,5232,5238,5243,5251,5257,5262,5268,5273,5278],{"title":4670,"description":4671,"path":4672,"category":4673,"difficulty":4674,"updatedAt":2863,"sourceType":2769,"tags":4675},"管理员常用 CLI 值班手册","结合最新官方 CLI Reference、Gateway protocol 和 Dashboard 文档，总结长期运行环境里管理员最常用的 CLI 值班顺序：先看 status、再看 health、最后进 logs 与 gateway RPC。","/best-practices/admin-cli-playbook","运维实践","初级",[3238,3398,2815,3174,2793],{"title":4677,"description":4678,"path":4679,"category":4680,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":4681},"AI 提示词工程指南","优化与 AI 助手的交互效果，包括提示词技巧、角色设定和上下文管理。","/best-practices/ai-prompt-engineering","进阶指南",[4682,3292,2842,3958],"prompting",{"title":4684,"description":4685,"path":4686,"category":4687,"difficulty":4688,"updatedAt":2972,"sourceType":2769,"tags":4689},"API 集成面该怎么选：管理、实时还是嵌入式开发","结合最新官方 API、Gateway Web 与 SDK 文档，整理一套更稳的接口面选择方法，帮助团队区分什么时候走 HTTP API、什么时候走 Gateway WebSocket、什么时候用 SDK。","/best-practices/api-surface-selection","开发治理","中高级",[3338,3344,3744,2775,2806],{"title":4691,"description":4692,"path":4693,"category":4694,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":4696},"需要审批的自动化流程应该怎么设计","结合最新官方 Lobster、Exec approvals 和 OpenProse 文档，整理一套更稳的自动化设计顺序，让分析、审批和副作用执行分层出现。","/best-practices/approval-gated-automation","自动化治理","高级",[2773,3083,3211,3081,3217],{"title":4698,"description":4699,"path":2710,"category":4700,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4701},"自动化工作流设计","使用 OpenClaw 构建自动化工作流，包括定时任务、事件触发和条件分支。","自动化",[2773,2774,3392,3115],{"title":4703,"description":4704,"path":4705,"category":4706,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4707},"备份、恢复与灾难恢复","建立完善的备份策略，包括配置备份、数据备份和灾难恢复方案。","/best-practices/backup-recovery","运维管理",[4708,4709,4710,2815],"backup","recovery","disaster-recovery",{"title":4712,"description":4713,"path":4714,"category":4715,"difficulty":4695,"updatedAt":2972,"sourceType":2769,"tags":4716},"Broadcast Groups 上线前，先把多代理协作边界定清楚","结合最新官方 Broadcast Groups 与 Channel Routing 文档，整理多代理同群运行时的角色拆分、工具权限、响应节奏和群入口触发规则，避免把实验能力直接变成高噪声群机器人。","/best-practices/broadcast-group-governance","渠道治理",[2974,2975,2959,3217,2958],{"title":4718,"description":4719,"path":4720,"category":4721,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":4722},"浏览器管理员面要按信任链分层开放","结合最新官方 Pairing、Remote Access、Trusted Proxy Auth 和 Dashboard 文档，总结浏览器管理面更稳的开放顺序，避免把地址可达、身份认证、设备配对和 operator 权限混成一个问题。","/best-practices/browser-admin-trust-chain","协作运维",[2851,3037,3554,3107,2816],{"title":4724,"description":4725,"path":4726,"category":4680,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4727},"浏览器自动化实战","利用 OpenClaw 的浏览器控制能力实现网页自动化，提升工作效率。","/best-practices/browser-automation",[3059,2773,4728,2774],"chromium",{"title":4730,"description":4731,"path":4732,"category":4733,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4734},"Canvas 交互式界面开发","学习使用 A2UI 语法创建交互式 Canvas 界面，包括表单、图表和数据展示。","/best-practices/canvas-interactive","可视化开发",[3988,3989,3991,3990],{"title":4736,"description":4737,"path":4738,"category":4739,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":4740},"用 message CLI 和命令入口时，怎么避免发到错误会话","结合最新官方 Messages、Channel Routing 和 WebChat 文档，整理频道目标、session key、reply routing 和 operator 命令入口之间的关系，避免“命令发对了，结果进错桶”。","/best-practices/channel-command-session-targeting","消息治理",[2795,2958,4741,2976,2815],"message-cli",{"title":4743,"description":4744,"path":4745,"category":2310,"difficulty":2764,"updatedAt":2822,"sourceType":2939,"tags":4746},"OpenClaw 中文优化指南","针对中文用户的 OpenClaw 优化配置，包括模型选择、提示词优化和中文技能推荐。","/best-practices/chinese-optimization",[4747,4748,3999,4749],"chinese","optimization","tips",{"title":4751,"description":4752,"path":4753,"category":4754,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4755},"CI/CD 集成与部署自动化","将 OpenClaw 集成到 CI/CD 流程，实现自动化构建、测试和部署。","/best-practices/ci-cd-integration","开发流程",[4756,3873,4757,2773],"ci-cd","testing",{"title":4759,"description":4760,"path":4761,"category":4762,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":4763},"正式配置、环境变量和一次性 override 应该怎么分层","结合最新官方 Configuration、Environment Variables、Logging 和 Debugging 文档，总结长期环境里怎么区分 on-disk config、env 注入、CLI 覆盖和 /debug 一次性改动，避免把临时修复留成永久配置。","/best-practices/config-layering-and-oneoff-overrides","配置治理",[2807,3279,4207,3666,2815],{"title":4765,"description":4766,"path":4767,"category":4768,"difficulty":4674,"updatedAt":2776,"sourceType":3028,"tags":4769},"内容创作助手","使用 OpenClaw 构建内容创作工作流，实现写作辅助、翻译、内容优化和多平台发布。","/best-practices/content-creation","内容创作",[4578,4770,4771,4772,4773],"writing","translation","publishing","productivity",{"title":4775,"description":4776,"path":4777,"category":4778,"difficulty":2764,"updatedAt":2982,"sourceType":2769,"tags":4779},"内容网络编辑手册：把文档、实践、新闻和专题真正织成一套知识体系","面向内容站运营，把文档、最佳实践、新闻动态、专题页和学习路径放到同一张编辑地图里，帮助持续产出更完整、更可回流的长文和系列内容。","/best-practices/content-network-editorial-playbook","内容运营",[4578,4780,4781,2883,4782,3478],"seo","editorial","news",{"title":4784,"description":4785,"path":4786,"category":4787,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":4788},"Control UI 安全降级开关应该怎样做 break-glass 管理","结合最新官方安全、Dashboard 和 Control UI 文档，总结 allowInsecureAuth、dangerouslyDisableDeviceAuth 这类降级开关在什么情况下可以临时使用，以及怎样快速回滚。","/best-practices/control-ui-break-glass-policy","安全治理",[3037,2816,4789,3057,2805],"break-glass",{"title":4791,"description":4792,"path":2704,"category":4793,"difficulty":2764,"updatedAt":2776,"sourceType":2769,"tags":4794},"自定义技能开发指南","从零开始开发 OpenClaw 自定义技能，包括项目结构、配置文件、处理逻辑、测试方法和发布流程。","开发",[2808,4795,4796,2825],"development","custom",{"title":4798,"description":4799,"path":4800,"category":4801,"difficulty":2764,"updatedAt":2776,"sourceType":3028,"tags":4802},"企业客服自动化","使用 OpenClaw 构建智能客服系统，实现自动问答、工单处理、多渠道接入和数据分析。","/best-practices/customer-service-advanced","企业应用",[4803,2814,2773,4804,4805],"customer-service","chatbot","support",{"title":4807,"description":4808,"path":4809,"category":4810,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4811},"客户服务场景应用","使用 OpenClaw 构建智能客服系统，包括自动回复、工单管理和满意度调查。","/best-practices/customer-service","应用场景",[4803,2774,2773,4805],{"title":4813,"description":4814,"path":4815,"category":4816,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":4817},"界面定制与主题","定制 OpenClaw Control UI 的界面和主题。","/best-practices/customization-ui","定制开发",[3991,4818,4819,3037],"customization","themes",{"title":4821,"description":4822,"path":4823,"category":4673,"difficulty":2764,"updatedAt":2904,"sourceType":2769,"tags":4824},"Dashboard 认证引导与 token 漂移该怎么处理","结合最新官方 dashboard CLI 与 Web Dashboard 文档，整理一套更稳的 Dashboard 打开和鉴权恢复顺序，避免把本地、远程、SecretRef token 和浏览器缓存问题混成一个故障。","/best-practices/dashboard-auth-bootstrap-and-drift",[2851,3057,3058,3658,3059,2815],{"title":4826,"description":4827,"path":4828,"category":4673,"difficulty":2764,"updatedAt":3336,"sourceType":2769,"tags":4829},"Dashboard 出现授权漂移时，先走恢复梯子，不要上来就重装","结合最新官方 Dashboard 文档，整理一套更稳的 Dashboard 恢复梯子，把 localhost、远程、SecretRef token、trusted retry 和实例混淆分开排，避免把简单 drift 升级成大修。","/best-practices/dashboard-recovery-ladder",[2851,4709,3057,4158,2815],{"title":4831,"description":4832,"path":4833,"category":4834,"difficulty":2764,"updatedAt":2776,"sourceType":3028,"tags":4835},"数据分析助手","使用 OpenClaw 构建数据分析助手，实现报表生成、数据可视化、异常检测和智能洞察。","/best-practices/data-analysis-advanced","数据分析",[4836,3990,4837,4838,4839],"data-analysis","reporting","insights","analytics",{"title":4841,"description":4842,"path":4843,"category":4844,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4845},"数据分析与可视化","使用 OpenClaw 进行数据分析，包括数据收集、处理和可视化展示。","/best-practices/data-analysis","数据处理",[4587,3951,3990,2774],{"title":4847,"description":4848,"path":4849,"category":4850,"difficulty":2764,"updatedAt":2776,"sourceType":3028,"tags":4851},"开发者工作流自动化","使用 OpenClaw 构建开发者工作流，实现代码审查、调试辅助、文档生成和 Git 操作自动化。","/best-practices/developer-workflow","开发效率",[3968,4852,3894,2773,4773],"code-review",{"title":4854,"description":4855,"path":4856,"category":4787,"difficulty":2764,"updatedAt":2972,"sourceType":2769,"tags":4857},"设备配对不是一次性批准，应该有定期复核周期","结合最新官方 Devices CLI 与 Pairing 文档，整理浏览器、桌面设备、移动节点和远程 operator 环境里的设备复核节奏，避免已授权设备集合长期失控。","/best-practices/device-pairing-review-cycle",[3108,3107,4599,3411,4244],{"title":4859,"description":4860,"path":4861,"category":4862,"difficulty":4695,"updatedAt":2972,"sourceType":2769,"tags":4863},"diagnostics.enabled、flags 和 raw stream 该怎么分层","结合最新官方 Diagnostics Flags、Debugging 与 Raw Stream 文档，整理一套更稳的诊断开关分层方法，避免把定向诊断、全局日志和原始流抓包混成一层。","/best-practices/diagnostics-scope-control","排障实践",[3587,3675,3791,3174,3845],{"title":4865,"description":4866,"path":4867,"category":4868,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4869},"Discord Bot 高级功能开发","深入学习 Discord Bot 的高级功能，包括 Slash 命令、Embed 消息和语音频道集成。","/best-practices/discord-bot-advanced","渠道实践",[3005,3300,2795,4870],"advanced",{"title":4872,"description":4873,"path":4874,"category":4875,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4876},"Docker 部署与容器化运行","使用 Docker 部署 OpenClaw，包括镜像构建、docker-compose 配置和 Kubernetes 部署。","/best-practices/docker-deployment","部署运维",[3880,3873,4877,2815],"containers",{"title":4879,"description":4880,"path":4881,"category":4882,"difficulty":4695,"updatedAt":2847,"sourceType":2939,"tags":4883},"企业级安全配置","企业环境中的安全配置最佳实践，包括 SSO、审计和合规性。","/best-practices/enterprise-security","企业部署",[2814,2816,4884,4475],"sso",{"title":4886,"description":4887,"path":4888,"category":4889,"difficulty":2764,"updatedAt":2847,"sourceType":3028,"tags":4890},"如何高质量反馈 OpenClaw 问题","把自助排查、站内反馈和 GitHub Issues 用在正确阶段，减少无效沟通并提高问题处理效率。","/best-practices/feedback-loop","社区协作",[3635,3634,3028,3587],{"title":4892,"description":4893,"path":4894,"category":4868,"difficulty":2764,"updatedAt":2802,"sourceType":2769,"tags":4895},"飞书 Bot 接入与团队使用实战","结合官方 Feishu/Lark 文档，整理中文团队接入飞书 Bot 时最值得先确认的事项：长连接模式、群聊边界、额度优化和多人协作时的收口方式。","/best-practices/feishu-bot-development",[3874,4040,3300,2795,2814],{"title":4897,"description":4898,"path":4899,"category":4900,"difficulty":2764,"updatedAt":3336,"sourceType":2769,"tags":4901},"先分清入口职责，再选 Dashboard、WebChat 还是 API","结合最新官方 Dashboard、WebChat、Session 和 API 文档，整理一套更稳的入口选择矩阵，帮助团队在控制面、会话面和集成面之间少走弯路。","/best-practices/gateway-entry-surface-matrix","使用实践",[2793,2851,2919,3338,2899],{"title":4903,"description":4904,"path":4905,"category":4906,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":4907},"群组、私聊与长期记忆的边界怎么守","结合最新官方 Memory 与 Channel Routing 文档，总结 OpenClaw 在群组、私聊、线程和长期记忆之间更稳的边界做法，避免上下文串线和记忆误读。","/best-practices/group-memory-boundaries","协作实践",[2797,3095,2975,3137,2958],{"title":4909,"description":4910,"path":4911,"category":4715,"difficulty":2764,"updatedAt":2972,"sourceType":2769,"tags":4912},"群聊入口上线时，先把 mention 触发策略跑稳","结合最新官方 Groups、Group Messages 和 Messages 文档，整理群聊入口从 allowlist、requireMention 到 /activation 的上线顺序，避免把群机器人一接上就变成高噪声、高成本入口。","/best-practices/group-mention-rollout",[2975,3730,3570,2795,2815],{"title":4914,"description":4915,"path":4916,"category":4700,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":4917},"用 Heartbeat 和 Cron 做低噪音自动化","结合最新官方自动化文档，总结如何用 Heartbeat 承担周期感知、用 Cron 承担精确调度，避免把主会话做成噪音中心。","/best-practices/heartbeat-cron-composition",[2773,3391,3383,3392,2815],{"title":4919,"description":4920,"path":4921,"category":4922,"difficulty":4674,"updatedAt":2863,"sourceType":2769,"tags":4923},"Hooks、插件和 Skills 的启用顺序怎么排","结合最新官方 Hooks、Plugins、Skills 和 Onboarding 文档，总结第一次扩展 OpenClaw 时怎样安排 hooks、插件与 skills 的启用顺序，降低排障复杂度。","/best-practices/hooks-onboarding-sequence","扩展实践",[2772,2897,2808,2850,3030],{"title":5,"description":2763,"path":2767,"category":2761,"difficulty":2764,"updatedAt":2776,"sourceType":2769,"tags":4925},[2772,2773,2774,2775],{"title":4927,"description":4928,"path":4929,"category":4930,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":4931},"identityLinks 更适合当成“身份映射表”，而不是联系人备注","结合最新官方 Session、Configuration Reference 和 Security 文档，总结团队里怎样把 identityLinks 当成正式变更对象来维护，避免跨渠道身份映射越配越乱。","/best-practices/identity-links-change-control","会话治理",[3682,2976,2958,3217,3478],{"title":4933,"description":4934,"path":4935,"category":4936,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4937},"API 集成与二次开发","使用 OpenClaw API 进行二次开发，包括 REST API、WebSocket 和扩展开发。","/best-practices/integration-development","开发指南",[3338,2775,3344,4795],{"title":4939,"description":4940,"path":4941,"category":4680,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4942},"知识库管理","构建和管理 OpenClaw 知识库，包括知识导入、检索和更新。","/best-practices/knowledge-management",[4355,3766,2797,4578],{"title":4944,"description":4945,"path":4946,"category":4706,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":4947},"日志管理与分析","集中式日志管理、日志分析和日志可视化。","/best-practices/logging-advanced",[3174,4948,3951,2815],"observability",{"title":4950,"description":4951,"path":4952,"category":4953,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":4954},"后台维护任务应该怎么分 lane 和保留周期","结合最新官方 Cron、sessions cleanup、doctor 和 Session 文档，总结长期运行时怎样给 isolated cron、main session、session cleanup 和 run logs 设不同的维护节奏。","/best-practices/maintenance-lanes-and-retention","运维治理",[3496,3383,3095,3384,2815],{"title":4956,"description":4957,"path":4958,"category":4959,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":4960},"索引刷新、embedding cache 和 source of truth 更稳的维护方式","结合最新官方 Memory、memory CLI 和 Session 文档，总结团队里怎样区分 memory files、session transcripts 和检索索引三层对象，避免把“检索层”误当成事实层。","/best-practices/memory-index-refresh-and-trust-boundary","记忆治理",[2797,3167,3256,4961,3478],"source-of-truth",{"title":4963,"description":4964,"path":4965,"category":4680,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4966},"记忆系统配置与使用","深入了解 OpenClaw 的记忆系统，包括短期记忆、长期记忆和上下文管理。","/best-practices/memory-management",[2797,3292,3095,2942],{"title":4968,"description":4969,"path":4970,"category":4971,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":4972},"移动端使用指南","在 iOS 和 Android 设备上使用 OpenClaw 的完整指南。","/best-practices/mobile-app-usage","入门指南",[2992,4101,4102,4973],"usage",{"title":4975,"description":4976,"path":4977,"category":4978,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":4979},"移动节点感知能力怎么逐步启用","结合最新官方 nodes、camera、voice wake 和 location 文档，总结 iOS/Android 节点在相机、语音、位置三类能力上怎样渐进启用，避免一开始权限过重。","/best-practices/mobile-node-sensors","设备实践",[2992,2949,2991,3143,3051,3144],{"title":4981,"description":4982,"path":4983,"category":4984,"difficulty":4695,"updatedAt":2863,"sourceType":2769,"tags":4985},"Model Health 与 Auth 监控怎么做","结合最新官方 Models CLI、Auth Monitoring 和 Model Failover 文档，总结长期运行时怎样监控 OAuth 过期、缺失凭据和 profile 轮转问题。","/best-practices/model-auth-monitoring","模型治理",[2912,3057,3455,3454,3580,2815],{"title":4987,"description":4988,"path":4989,"category":4706,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":4990},"监控与告警系统","建立完整的监控和告警系统，包括指标收集、告警规则和通知渠道。","/best-practices/monitoring-alerting",[3455,4991,4992,2815],"alerting","metrics",{"title":4994,"description":4995,"path":4996,"category":4715,"difficulty":2764,"updatedAt":2972,"sourceType":2769,"tags":4997},"多账号渠道的 pairing 和 allowFrom 需要分开治理","结合最新官方 Pairing 文档，整理多账号 Telegram、WhatsApp 等渠道下的 pending 审批、allowFrom 文件和账号 scope 的治理顺序，避免默认账号心智把多入口运营带偏。","/best-practices/multi-account-pairing-operations",[3107,3611,3612,2795,2815],{"title":4999,"description":5000,"path":5001,"category":5002,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":5003},"多代理路由配置指南","学习配置 OpenClaw 的多代理路由，实现按渠道、用户或内容类型分配不同代理。","/best-practices/multi-agent-routing","代理配置",[2958,2959,2795,2807],{"title":5005,"description":5006,"path":5007,"category":4978,"difficulty":4688,"updatedAt":2972,"sourceType":2769,"tags":5008},"团队里如何渐进启用 node 能力","结合最新官方 Nodes、Pairing、Camera、Location 与 Voice Wake 文档，整理一套更稳的 node 能力启用顺序，避免一开始就把相机、位置和语音一起打开。","/best-practices/node-capability-rollout",[2949,3570,2991,3051,3143,3144],{"title":5010,"description":5011,"path":5012,"category":4706,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":5013},"通知系统配置","配置 OpenClaw 的通知系统，包括邮件、短信、推送和 Webhook 通知。","/best-practices/notification-system",[5014,85,5015,2815],"notifications","email",{"title":5017,"description":5018,"path":5019,"category":4721,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":5020},"多人协作时怎么管理 Operator 浏览器入口","结合最新官方 Dashboard、pairing、remote access 和 devices 文档，总结团队在浏览器 Control UI、多 operator 接力和值班环境里最需要的使用纪律。","/best-practices/operator-browser-discipline",[3508,2851,3059,3107,2805],{"title":5022,"description":5023,"path":5024,"category":5025,"difficulty":2764,"updatedAt":3336,"sourceType":2769,"tags":5026},"多个 operator 轮流进 Dashboard 时，浏览器交接不要靠记忆","结合最新官方 Dashboard、Control UI 和设备 pairing 文档，整理团队里多个 operator 轮流接管浏览器控制面的交接顺序，避免把 gateway URL、token 来源和已配对浏览器状态混成口口相传的经验。","/best-practices/operator-browser-handoff","协作治理",[3508,2851,3059,3107,5027],"handoff",{"title":5029,"description":5030,"path":5031,"category":5032,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":5033},"operator 入口更稳的升级梯子：先看 UI，再下沉协议和 API","结合最新官方 Dashboard、WebChat、Gateway Protocol 和 API 文档，总结 operator 在排障和协作时怎样按层使用 Dashboard、WebChat、Gateway WebSocket 和 HTTP API，避免一上来就切到过深入口。","/best-practices/operator-surface-escalation-ladder","运维协作",[3508,2851,2919,3338,2774,3478],{"title":5035,"description":5036,"path":5037,"category":4787,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5038},"团队里如何做 per-agent 执行白名单治理","结合最新官方 approvals CLI 与 Exec Approvals 文档，整理一套更稳的 per-agent allowlist 管理方法，避免一个 agent 的执行权限外溢到整个团队。","/best-practices/per-agent-allowlist-governance",[3083,3191,3081,2816,3217],{"title":5040,"description":5041,"path":5042,"category":5043,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":5044},"性能优化与监控","优化 OpenClaw 性能，包括缓存策略、资源管理和监控配置。","/best-practices/performance-tuning","运维优化",[4104,5045,5046,3455],"tuning","caching",{"title":5048,"description":5049,"path":5050,"category":4810,"difficulty":2764,"updatedAt":2822,"sourceType":2939,"tags":5051},"个人知识管理助手","使用 OpenClaw 构建个人知识管理系统，实现笔记整理、知识检索和智能问答。","/best-practices/personal-knowledge-assistant",[5052,5053,2873,4773],"knowledge-management","notes",{"title":5055,"description":5056,"path":5057,"category":5058,"difficulty":4695,"updatedAt":2863,"sourceType":2769,"tags":5059},"团队里如何管理插件包和 Hook Pack","结合最新官方插件与 hooks 文档，总结团队在使用 package pack、hook pack 和插件托管 hooks 时，怎样降低升级、冲突和安全成本。","/best-practices/plugin-bundle-governance","扩展治理",[2897,2772,3217,2805,2815],{"title":5061,"description":5062,"path":5063,"category":5058,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5064},"插件更新轨道和卸载回收应该怎么安排","结合最新官方 plugins CLI 文档，整理一套更稳的插件生命周期治理方法，帮助团队管理 install spec、update track、卸载回收以及 memory slot 回退行为。","/best-practices/plugin-lifecycle-governance",[2897,3114,3495,3900,3217],{"title":5066,"description":5067,"path":5068,"category":4721,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":5069},"团队长期运行蓝图：把 OpenClaw 从可用做成可运营","把控制面、渠道、模型、记忆、自动化、安全和维护整合成一套长期运行蓝图，帮助团队把 OpenClaw 从“能跑”推进到“能稳定运营”。","/best-practices/production-operations-blueprint",[2815,2805,2816,3068,2773,3496],{"title":5071,"description":5072,"path":5073,"category":5074,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5075},"从 Prose 准备到 Lobster 执行，交接线怎么画","结合最新官方 Lobster 文档，整理一套从多智能体准备到确定性执行的交接方法，避免 OpenProse 和 Lobster 混层使用。","/best-practices/prose-to-lobster-handoff","工作流实践",[3210,3211,2842,3083,2898],{"title":5077,"description":5078,"path":5079,"category":5080,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":5081},"团队里怎么分层放开 provider、模型和 node 能力","结合最新官方 Models、Model Failover 和 node 文档，总结团队环境里怎样把 provider auth、模型 allowlist、图片能力和远程 node 执行分成不同放开层级，避免一开始给太大权限面。","/best-practices/provider-and-node-capability-lanes","权限与治理",[3068,2912,2949,3083,3217,3478],{"title":5083,"description":5084,"path":5085,"category":4984,"difficulty":4695,"updatedAt":2863,"sourceType":2769,"tags":5086},"团队里如何给 Provider 加统一网关层","结合最新官方 providers、LiteLLM 和 Cloudflare AI Gateway 文档，总结长期运行时怎样把上游模型与统一网关分层，兼顾成本、回退和可观测性。","/best-practices/provider-gateway-layering",[3068,5087,5088,5089,2958,2815],"gateways","litellm","cloudflare",{"title":5091,"description":5092,"path":5093,"category":4984,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":5094},"Provider 故障时先按恢复阶梯排，不要直接乱切模型","结合最新官方 Model Failover、Gateway Troubleshooting、LiteLLM 和 Cloudflare AI Gateway 文档，总结模型调用异常时更稳的恢复顺序，避免把长上下文、认证轮转、网关鉴权和跨模型 fallback 混成一件事。","/best-practices/provider-recovery-ladder",[3068,3580,4709,2912,2815],{"title":5096,"description":5097,"path":5098,"category":5099,"difficulty":4674,"updatedAt":2847,"sourceType":2769,"tags":5100},"版本升级与内容运营节奏","如何持续跟踪 OpenClaw 的版本变化，并建立稳定的内容运营节奏。","/best-practices/publishing-rhythm","更新跟踪",[3493,3495,2842,3496],{"title":5102,"description":5103,"path":5104,"category":4700,"difficulty":2764,"updatedAt":2982,"sourceType":2769,"tags":5105},"用 quiet hours 和 manual wake 控制自动化节奏","结合最新官方 Heartbeat 与 Automation Troubleshooting 文档，总结如何让 heartbeat 在该安静时安静、在需要时再手动唤醒，避免把自动化做成全天噪音源。","/best-practices/quiet-hours-and-manual-wake",[3391,3737,2773,2815,3478],{"title":5107,"description":5108,"path":5109,"category":4673,"difficulty":5110,"updatedAt":2802,"sourceType":2769,"tags":5111},"把版本观察变成升级决策，而不是看见更新就立刻替换环境","结合最新 release 观察、配置变化和迁移信号，建立一套更稳的升级判断顺序：先看影响层，再看风险，再决定是否马上升级。","/best-practices/release-watch-to-upgrade-decision","基础",[3493,3921,3920,2815,3494],{"title":5113,"description":5114,"path":5115,"category":4953,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5116},"远程值守时如何设计聊天审批路由","结合最新官方 Exec Approvals 与 Remote Operators 文档，整理一套更稳的远程审批路由设计，避免把远程值守便利性直接变成高权限扩散。","/best-practices/remote-approval-routing",[3083,2865,3003,3005,3508,2958],{"title":5118,"description":5119,"path":5120,"category":4810,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":5121},"远程工作场景应用","使用 OpenClaw 支持远程工作场景，包括分布式团队协作和远程办公。","/best-practices/remote-work",[5122,4110,4773,2805],"remote-work",{"title":5124,"description":5125,"path":5126,"category":5127,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":5128},"从巡检到修复的排障阶梯应该怎么走","结合最新官方 Doctor、Diagnostics Flags、Debugging 和 Troubleshooting 文档，总结一条更稳的 repair ladder，让 status、doctor、flags、repair 和 cleanup 各司其职。","/best-practices/repair-ladder-playbook","排障治理",[3417,3587,3845,3418,2815],{"title":5130,"description":5131,"path":5132,"category":5127,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":5133},"Raw Stream 调试的安全做法","结合最新官方 Debugging 文档，总结在 OpenClaw 里抓 raw stream、provider chunk 和诊断日志时，怎样控制范围、保留最小样本并避免泄露 prompt、密钥和用户数据。","/best-practices/safe-debug-capture",[3666,3674,3137,2816,3845],{"title":5135,"description":5136,"path":5137,"category":4787,"difficulty":4695,"updatedAt":2972,"sourceType":2769,"tags":5138},"Secret rotation 和 active snapshot 应该怎么配合","结合最新官方 Secrets Management 文档，整理一套更稳的密钥轮换方法，帮助团队理解 SecretRef eager resolve、active snapshot 和 reload 失败时的 last-known-good 边界。","/best-practices/secret-rotation-with-active-snapshot",[3812,3811,4456,4455,2815],{"title":5140,"description":5141,"path":5142,"category":4787,"difficulty":2764,"updatedAt":2972,"sourceType":2769,"tags":5143},"共享 DM 入口上线前的 secure DM 检查清单","结合最新官方 Session、Security 和 CLI Security 文档，整理共享 DM、配对审批、多账号入口和跨渠道身份映射的上线前核查清单，避免把单人默认配置直接带进多人环境。","/best-practices/secure-dm-rollout-checklist",[2816,3681,3107,2976,3570],{"title":5145,"description":5146,"path":5147,"category":5148,"difficulty":4695,"updatedAt":2847,"sourceType":2939,"tags":5149},"OpenClaw 安全加固指南","生产环境中 OpenClaw 的安全加固最佳实践，包括认证、授权和网络配置。","/best-practices/security-hardening","安全配置",[2816,3520,3057,5150],"networking",{"title":5152,"description":5153,"path":5154,"category":5155,"difficulty":4695,"updatedAt":2955,"sourceType":2769,"tags":5156},"长期使用时 session reset 策略怎么定","结合最新官方会话管理文档，整理 daily reset、idle reset、resetByType、resetByChannel 和 resetTriggers 的组合思路，让长期使用既不失连续性，也不把上下文拖到失控。","/best-practices/session-reset-policy","长期治理",[2976,5157,4213,2805,2815],"reset",{"title":5159,"description":5160,"path":5161,"category":5162,"difficulty":4695,"updatedAt":2982,"sourceType":2769,"tags":5163},"共享群入口更稳的放开顺序：allowlist、mention、activation 和 broadcast","结合最新官方 Groups、Group Messages 和 Broadcast Groups 文档，总结团队在群聊里怎样从最窄入口逐步放开到 topic、多 agent 和 always activation，避免一开始就把共享群入口做成高噪音面。","/best-practices/shared-group-entry-rollout","群入口治理",[2975,3803,4304,2974,3217,3478],{"title":5165,"description":5166,"path":5167,"category":4787,"difficulty":4695,"updatedAt":2972,"sourceType":2769,"tags":5168},"shared inbox 能共用入口，但不要共用不该共用的边界","结合最新官方 Security 与 Groups 文档，整理 shared inbox 场景下 operator、工具、宿主文件系统和私有身份的分层建议，避免把协作入口误用成弱隔离的多租户平台。","/best-practices/shared-inbox-operator-separation",[3534,2816,4500,3508,3217],{"title":5170,"description":5171,"path":5172,"category":5173,"difficulty":4695,"updatedAt":2847,"sourceType":2939,"tags":5174},"技能开发进阶：Hook 与事件处理","学习 OpenClaw 技能系统的高级用法，包括 Hook、事件监听和自定义工作流。","/best-practices/skill-development-advanced","技能开发",[2808,2772,3115,4870],{"title":5176,"description":5177,"path":5178,"category":4680,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":5179},"技能开发指南","深入了解 OpenClaw 技能系统，学习如何开发和自定义专属技能。","/best-practices/skills-development",[2808,4795,4818,2796],{"title":5181,"description":5182,"path":5183,"category":4810,"difficulty":2764,"updatedAt":2822,"sourceType":2939,"tags":5184},"OpenClaw 家庭自动化应用","使用 OpenClaw 构建智能家居控制中心，实现语音控制、自动化场景和设备管理。","/best-practices/smart-home-automation",[5185,2773,4318,5186],"smart-home","iot",{"title":5188,"description":5189,"path":5190,"category":5191,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":5192},"升级窗口怎么安排更稳","结合最新官方 Install、Updating、Migration 和 Release 文档，总结长期运行时怎样安排 OpenClaw 的升级窗口、验证顺序和回滚边界，避免把升级变成线上事故。","/best-practices/staged-upgrade-windows","维护实践",[3921,3920,3493,3496,5193],"rollback",{"title":5195,"description":5196,"path":5197,"category":5198,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":5199},"团队协作与工作区管理","配置团队工作区，实现多用户协作、权限管理和团队知识共享。","/best-practices/team-collaboration","团队协作",[2805,2941,3144,4110],{"title":5201,"description":5202,"path":5203,"category":5025,"difficulty":4695,"updatedAt":2863,"sourceType":2769,"tags":5204},"团队里如何管理 Gateway、Operator 与浏览器控制面","结合最新官方 remote、Control UI、pairing 和 security 文档，总结团队环境里怎样定义主 Gateway、operator 设备和浏览器控制面，降低多人协作时的运维混乱。","/best-practices/team-gateway-operator-playbook",[2793,3508,3037,3107,2805,2815],{"title":5206,"description":5207,"path":5208,"category":4868,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":5209},"Telegram Bot 开发进阶指南","深入学习 Telegram Bot 的高级功能，包括自定义键盘、Inline 模式和群组管理。","/best-practices/telegram-bot-development",[3003,3300,2795,4870],{"title":5211,"description":5212,"path":5213,"category":4754,"difficulty":4688,"updatedAt":2847,"sourceType":2939,"tags":5214},"测试策略与质量保障","建立 OpenClaw 的测试策略，包括单元测试、集成测试和端到端测试。","/best-practices/testing-strategies",[4757,5215,2775,2842],"quality",{"title":5217,"description":5218,"path":5219,"category":5220,"difficulty":4695,"updatedAt":2847,"sourceType":2939,"tags":5221},"高级故障排除与诊断","深入排查 OpenClaw 复杂问题，包括性能问题、渠道故障和系统崩溃。","/best-practices/troubleshooting-advanced","故障排除",[3845,3587,4104,2795],{"title":5223,"description":5224,"path":5225,"category":4787,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5226},"Trusted Proxy 上线前应该过哪些检查","结合最新官方 trusted-proxy auth 与 security audit 文档，整理一套上线前检查顺序，避免把只是做 TLS 的反向代理误当成可托付身份的安全代理。","/best-practices/trusted-proxy-rollout-checklist",[3554,3555,3057,2816,3570],{"title":5228,"description":5229,"path":5230,"category":4673,"difficulty":2764,"updatedAt":3336,"sourceType":2769,"tags":5231},"UI 和 API 看到的状态对不上时，先查哪一层","结合最新官方 Session、WebChat 和 API 文档，整理一套更稳的排障顺序，帮助团队区分 Gateway 事实层、UI 投影视图和结构化接口之间的差异。","/best-practices/ui-vs-api-state-debugging",[2793,2919,3338,3666,2976],{"title":5233,"description":5234,"path":5235,"category":4953,"difficulty":4695,"updatedAt":2904,"sourceType":2769,"tags":5236},"团队里如何给 stable、beta、dev 分层","结合最新官方 update CLI 与 Updating 文档，整理一套更稳的更新分层策略，帮助团队把 stable、beta、dev 变成有职责分工的 rollout 体系。","/best-practices/update-channel-staging",[3566,3567,3568,3569,5237,3570],"staging",{"title":5239,"description":5240,"path":5241,"category":4706,"difficulty":2764,"updatedAt":2847,"sourceType":2769,"tags":5242},"版本升级与迁移","OpenClaw 版本升级步骤、迁移指南和回滚方案。","/best-practices/upgrade-migration",[3921,3920,5193,3496],{"title":5244,"description":5245,"path":5246,"category":5247,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":5248},"语音助手配置与使用指南","全面了解 OpenClaw 语音功能的配置和使用，包括语音唤醒、连续对话和语音合成。","/best-practices/voice-assistant-setup","语音交互",[3051,5249,5250,2858],"wakeword","speech",{"title":5252,"description":5253,"path":5254,"category":5255,"difficulty":4674,"updatedAt":2847,"sourceType":2939,"tags":5256},"语音功能最佳实践","如何在日常场景中高效使用 OpenClaw 的语音功能，提升工作和生活效率。","/best-practices/voice-usage","使用技巧",[3051,4973,4773,2891],{"title":5258,"description":5259,"path":5260,"category":4900,"difficulty":4674,"updatedAt":2863,"sourceType":2769,"tags":5261},"Web 入口怎么选：Dashboard、WebChat、message CLI","结合最新官方 Dashboard、WebChat 和 CLI 文档，总结什么时候该用 Dashboard、什么时候用 WebChat、什么时候更适合用 openclaw message 做验证与自动化。","/best-practices/web-entry-selection",[2851,2919,3238,4231,2774],{"title":5263,"description":5264,"path":5265,"category":4900,"difficulty":2764,"updatedAt":2904,"sourceType":2769,"tags":5266},"WebChat 更适合当什么，不适合当什么","结合最新官方 WebChat 文档，整理一套更稳的 WebChat 使用策略，帮助团队把它作为 operator 和验证入口，而不是过早承担所有长期协作场景。","/best-practices/webchat-operator-usage-policy",[2919,2851,5267,2958,2774],"operator",{"title":5269,"description":5270,"path":5271,"category":4700,"difficulty":2764,"updatedAt":2863,"sourceType":2769,"tags":5272},"用 Webhooks 做安全的外部事件接入","结合最新官方 Webhooks 文档，总结如何把 Gmail、表单、工单和内部系统事件安全送进 OpenClaw，同时避免会话污染和误投递。","/best-practices/webhook-ingest-routing",[3352,2772,2773,3353,2816],{"title":5274,"description":5275,"path":5276,"category":4778,"difficulty":5110,"updatedAt":4574,"sourceType":2790,"tags":5277},"用 OpenClaw 搭建每周“教程 + 更新 + 案例”内容流水线","把教程、版本更新和案例拆成固定节奏，用一套低成本流程持续为中文站带来搜索流量、时效内容和转化素材。","/best-practices/weekly-content-pipeline",[4578,4772,2842,4780,4579],{"title":5279,"description":5280,"path":5281,"category":4868,"difficulty":2764,"updatedAt":2847,"sourceType":2939,"tags":5282},"WhatsApp 自动化工作流实战","利用 OpenClaw 的 WhatsApp 渠道实现自动化工作流，包括自动回复、消息转发和定时提醒。","/best-practices/whatsapp-automation",[3004,2773,2795,2842],{"all":5284,"docs":2782,"news":3930,"bestPractices":4667},372,1775051171354]