[{"data":1,"prerenderedAt":907},["ShallowReactive",2],{"navigation_docs":3,"-ai-serena-setup":168,"-ai-serena-setup-surround":904},[4,46,75],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":45},"Bookmarks","i-lucide:bookmark","\u002Fbookmarks","10.bookmarks",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"工具","\u002Fbookmarks\u002Ftools","10.bookmarks\u002F10.tools","i-lucide:wrench",{"title":16,"path":17,"stem":18,"icon":19},"开发","\u002Fbookmarks\u002Fdev","10.bookmarks\u002F20.dev","i-lucide:code-xml",{"title":21,"path":22,"stem":23,"icon":24},"学习","\u002Fbookmarks\u002Flearn","10.bookmarks\u002F30.learn","i-lucide:graduation-cap",{"title":26,"path":27,"stem":28,"icon":29},"视觉素材","\u002Fbookmarks\u002Fmedia","10.bookmarks\u002F40.media","i-lucide:image",{"title":31,"path":32,"stem":33,"icon":34},"AI","\u002Fbookmarks\u002Fai","10.bookmarks\u002F50.ai","i-lucide:sparkles",{"title":36,"path":37,"stem":38,"icon":39},"设计","\u002Fbookmarks\u002Fdesign","10.bookmarks\u002F60.design","i-lucide:palette",{"title":41,"path":42,"stem":43,"icon":44},"其它","\u002Fbookmarks\u002Fmore","10.bookmarks\u002F70.more","i-lucide:ellipsis",false,{"title":31,"icon":34,"path":47,"stem":48,"children":49,"page":45},"\u002Fai","20.ai",[50,55,60,65,70],{"title":51,"path":52,"stem":53,"icon":54},"Agent 工具","\u002Fai\u002Fagent-tools","20.ai\u002F10.agent-tools","i-lucide:puzzle",{"title":56,"path":57,"stem":58,"icon":59},"OmniRoute 使用","\u002Fai\u002Fomniroute-setup","20.ai\u002F20.omniroute-setup","i-lucide:route",{"title":61,"path":62,"stem":63,"icon":64},"RTK 使用","\u002Fai\u002Frtk-setup","20.ai\u002F30.rtk-setup","i-lucide:scissors",{"title":66,"path":67,"stem":68,"icon":69},"Headroom 使用","\u002Fai\u002Fheadroom-setup","20.ai\u002F40.headroom-setup","i-lucide:minimize-2",{"title":71,"path":72,"stem":73,"icon":74},"Serena 使用","\u002Fai\u002Fserena-setup","20.ai\u002F50.serena-setup","i-lucide:scan-search",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":45},"Guides","i-lucide:book-open","\u002Fguides","30.guides",[81,133,154],{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":45},"Notes","i-lucide:notebook-text","\u002Fguides\u002Fnotes","30.guides\u002F10.notes",[87,91,96,100,105,109,113,118,123,128],{"title":88,"path":89,"stem":90,"icon":19},"开发问题记录","\u002Fguides\u002Fnotes\u002Fdev-qa","30.guides\u002F10.notes\u002F10.dev-qa",{"title":92,"path":93,"stem":94,"icon":95},"js 常用整理","\u002Fguides\u002Fnotes\u002Fjs-tidy","30.guides\u002F10.notes\u002F20.js-tidy","i-lucide:braces",{"title":97,"path":98,"stem":99,"icon":95},"js 小技巧","\u002Fguides\u002Fnotes\u002Fjs-tips","30.guides\u002F10.notes\u002F30.js-tips",{"title":101,"path":102,"stem":103,"icon":104},"git 问题记录","\u002Fguides\u002Fnotes\u002Fgit-qa","30.guides\u002F10.notes\u002F40.git-qa","i-lucide:git-branch",{"title":106,"path":107,"stem":108,"icon":104},"git 扩展命令","\u002Fguides\u002Fnotes\u002Fgit-expand","30.guides\u002F10.notes\u002F50.git-expand",{"title":110,"path":111,"stem":112,"icon":104},"git 命令速查表","\u002Fguides\u002Fnotes\u002Fgit-cheatsheet","30.guides\u002F10.notes\u002F60.git-cheatsheet",{"title":114,"path":115,"stem":116,"icon":117},"bash 命令速查表","\u002Fguides\u002Fnotes\u002Fbash-cheatsheet","30.guides\u002F10.notes\u002F70.bash-cheatsheet","i-lucide:square-terminal",{"title":119,"path":120,"stem":121,"icon":122},"linux 命令速查表","\u002Fguides\u002Fnotes\u002Flinux-cheatsheet","30.guides\u002F10.notes\u002F80.linux-cheatsheet","i-lucide:server",{"title":124,"path":125,"stem":126,"icon":127},"Docker 使用","\u002Fguides\u002Fnotes\u002Fdocker-setup","30.guides\u002F10.notes\u002F90.docker-setup","i-lucide:container",{"title":129,"path":130,"stem":131,"icon":132},"常用工具命令","\u002Fguides\u002Fnotes\u002Fcommon-tool-commands","30.guides\u002F10.notes\u002F95.common-tool-commands","i-lucide:toolbox",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":45},"System","i-lucide:monitor","\u002Fguides\u002Fsystem","30.guides\u002F20.system",[139,144,149],{"title":140,"path":141,"stem":142,"icon":143},"系统常用软件","\u002Fguides\u002Fsystem\u002Fsystem-software","30.guides\u002F20.system\u002F10.system-software","i-lucide:package",{"title":145,"path":146,"stem":147,"icon":148},"开发工具命令","\u002Fguides\u002Fsystem\u002Fdev-tools-commands","30.guides\u002F20.system\u002F20.dev-tools-commands","i-lucide:terminal",{"title":150,"path":151,"stem":152,"icon":153},"macOS 使用记录","\u002Fguides\u002Fsystem\u002Fmacos-usage-record","30.guides\u002F20.system\u002F30.macos-usage-record","i-simple-icons:apple",{"title":155,"icon":54,"path":156,"stem":157,"children":158,"page":45},"Other","\u002Fguides\u002Fother","30.guides\u002F30.other",[159,164],{"title":160,"path":161,"stem":162,"icon":163},"汉语拼音和小鹤双拼","\u002Fguides\u002Fother\u002Fflypy-pinyin","30.guides\u002F30.other\u002F10.flypy-pinyin","i-lucide:notebook-pen",{"title":165,"path":166,"stem":167,"icon":143},"魔方公式","\u002Fguides\u002Fother\u002Frubik-cube-formula","30.guides\u002F30.other\u002F20.rubik-cube-formula",{"id":169,"title":71,"body":170,"description":205,"extension":898,"links":899,"meta":900,"navigation":901,"path":72,"seo":902,"stem":73,"__hash__":903},"docs\u002F20.ai\u002F50.serena-setup.md",{"type":171,"value":172,"toc":892},"minimark",[173,186,190,635,638,713,716,866,869,888],[174,175,176,185],"note",{},[177,178,184],"a",{"href":179,"rel":180,"target":183},"https:\u002F\u002Fgithub.com\u002Foraios\u002Fserena",[181,182],"noopener","noreferrer","_blank","Serena"," 是一个强大的 MCP 编程工具包，提供语义检索和编辑能力——为你的智能体量身打造的 IDE。",[187,188,189],"h2",{"id":189},"安装步骤",[191,192,194,199,249,268,272,599,602,621,624,627],"steps",{"level":193},"4",[195,196,198],"h4",{"id":197},"安装-serena","安装 Serena",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$ uv tool install -p 3.13 serena-agent\n$ serena --version\n","sh","",[207,208,209,238],"code",{"__ignoreMap":205},[210,211,214,218,222,225,228,231,235],"span",{"class":212,"line":213},"line",1,[210,215,217],{"class":216},"sBMFI","$",[210,219,221],{"class":220},"sfazB"," uv",[210,223,224],{"class":220}," tool",[210,226,227],{"class":220}," install",[210,229,230],{"class":220}," -p",[210,232,234],{"class":233},"sbssI"," 3.13",[210,236,237],{"class":220}," serena-agent\n",[210,239,241,243,246],{"class":212,"line":240},2,[210,242,217],{"class":216},[210,244,245],{"class":220}," serena",[210,247,248],{"class":220}," --version\n",[250,251,252,253,256,257,260,261,264,265,267],"p",{},"终端若找不到 ",[207,254,255],{},"serena","，在 ",[207,258,259],{},".zshrc"," 加 ",[207,262,263],{},"export PATH=\"$HOME\u002F.local\u002Fbin:$PATH\"","。MCP 配置内联 PATH，集成 MCP 不必改 ",[207,266,259],{},"。",[195,269,271],{"id":270},"集成-mcp-客户端","集成 MCP 客户端",[273,274,276,474],"tabs",{"sync":275},"mcp-client",[277,278,280,291,434,441],"tabs-item",{"label":279},"OpenCode",[250,281,282,283,286,287,290],{},"在 ",[207,284,285],{},"~\u002F.config\u002Fopencode\u002Fopencode.json"," 的 ",[207,288,289],{},"mcp"," 字段添加：",[200,292,296],{"className":293,"code":294,"language":295,"meta":205,"style":205},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"mcp\": {\n  \"serena\": {\n    \"type\": \"local\",\n    \"command\": [\"serena\", \"start-mcp-server\", \"--context\", \"ide\"],\n    \"enabled\": true\n  }\n}\n","json",[207,297,298,315,331,355,407,422,428],{"__ignoreMap":205},[210,299,300,304,306,308,312],{"class":212,"line":213},[210,301,303],{"class":302},"sMK4o","\"",[210,305,289],{"class":220},[210,307,303],{"class":302},[210,309,311],{"class":310},"sTEyZ",": ",[210,313,314],{"class":302},"{\n",[210,316,317,320,323,325,328],{"class":212,"line":240},[210,318,319],{"class":302},"  \"",[210,321,255],{"class":322},"spNyl",[210,324,303],{"class":302},[210,326,327],{"class":302},":",[210,329,330],{"class":302}," {\n",[210,332,334,337,340,342,344,347,350,352],{"class":212,"line":333},3,[210,335,336],{"class":302},"    \"",[210,338,339],{"class":216},"type",[210,341,303],{"class":302},[210,343,327],{"class":302},[210,345,346],{"class":302}," \"",[210,348,349],{"class":220},"local",[210,351,303],{"class":302},[210,353,354],{"class":302},",\n",[210,356,358,360,363,365,367,370,372,374,376,379,381,384,386,388,390,393,395,397,399,402,404],{"class":212,"line":357},4,[210,359,336],{"class":302},[210,361,362],{"class":216},"command",[210,364,303],{"class":302},[210,366,327],{"class":302},[210,368,369],{"class":302}," [",[210,371,303],{"class":302},[210,373,255],{"class":220},[210,375,303],{"class":302},[210,377,378],{"class":302},",",[210,380,346],{"class":302},[210,382,383],{"class":220},"start-mcp-server",[210,385,303],{"class":302},[210,387,378],{"class":302},[210,389,346],{"class":302},[210,391,392],{"class":220},"--context",[210,394,303],{"class":302},[210,396,378],{"class":302},[210,398,346],{"class":302},[210,400,401],{"class":220},"ide",[210,403,303],{"class":302},[210,405,406],{"class":302},"],\n",[210,408,410,412,415,417,419],{"class":212,"line":409},5,[210,411,336],{"class":302},[210,413,414],{"class":216},"enabled",[210,416,303],{"class":302},[210,418,327],{"class":302},[210,420,421],{"class":302}," true\n",[210,423,425],{"class":212,"line":424},6,[210,426,427],{"class":302},"  }\n",[210,429,431],{"class":212,"line":430},7,[210,432,433],{"class":302},"}\n",[250,435,436,437,440],{},"可选 ",[207,438,439],{},"instructions","：",[200,442,444],{"className":293,"code":443,"language":295,"meta":205,"style":205},"\"instructions\": [\n  \"Use `serena` tools for symbol-level code operations: find symbol definitions, references, rename across files, replace symbol bodies, insert code before\u002Fafter symbols.\"\n]\n",[207,445,446,459,469],{"__ignoreMap":205},[210,447,448,450,452,454,456],{"class":212,"line":213},[210,449,303],{"class":302},[210,451,439],{"class":220},[210,453,303],{"class":302},[210,455,311],{"class":310},[210,457,458],{"class":302},"[\n",[210,460,461,463,466],{"class":212,"line":240},[210,462,319],{"class":302},[210,464,465],{"class":220},"Use `serena` tools for symbol-level code operations: find symbol definitions, references, rename across files, replace symbol bodies, insert code before\u002Fafter symbols.",[210,467,468],{"class":302},"\"\n",[210,470,471],{"class":212,"line":333},[210,472,473],{"class":302},"]\n",[277,475,477,486],{"label":476},"Cursor",[250,478,282,479,286,482,485],{},[207,480,481],{},"~\u002F.cursor\u002Fmcp.json",[207,483,484],{},"mcpServers"," 添加（用户级）：",[200,487,489],{"className":293,"code":488,"language":295,"meta":205,"style":205},"\"mcpServers\": {\n  \"serena\": {\n    \"type\": \"stdio\",\n    \"command\": \"serena\",\n    \"args\": [\"start-mcp-server\", \"--context=vscode\", \"--project-from-cwd\"]\n  }\n}\n",[207,490,491,503,515,534,552,591,595],{"__ignoreMap":205},[210,492,493,495,497,499,501],{"class":212,"line":213},[210,494,303],{"class":302},[210,496,484],{"class":220},[210,498,303],{"class":302},[210,500,311],{"class":310},[210,502,314],{"class":302},[210,504,505,507,509,511,513],{"class":212,"line":240},[210,506,319],{"class":302},[210,508,255],{"class":322},[210,510,303],{"class":302},[210,512,327],{"class":302},[210,514,330],{"class":302},[210,516,517,519,521,523,525,527,530,532],{"class":212,"line":333},[210,518,336],{"class":302},[210,520,339],{"class":216},[210,522,303],{"class":302},[210,524,327],{"class":302},[210,526,346],{"class":302},[210,528,529],{"class":220},"stdio",[210,531,303],{"class":302},[210,533,354],{"class":302},[210,535,536,538,540,542,544,546,548,550],{"class":212,"line":357},[210,537,336],{"class":302},[210,539,362],{"class":216},[210,541,303],{"class":302},[210,543,327],{"class":302},[210,545,346],{"class":302},[210,547,255],{"class":220},[210,549,303],{"class":302},[210,551,354],{"class":302},[210,553,554,556,559,561,563,565,567,569,571,573,575,578,580,582,584,587,589],{"class":212,"line":409},[210,555,336],{"class":302},[210,557,558],{"class":216},"args",[210,560,303],{"class":302},[210,562,327],{"class":302},[210,564,369],{"class":302},[210,566,303],{"class":302},[210,568,383],{"class":220},[210,570,303],{"class":302},[210,572,378],{"class":302},[210,574,346],{"class":302},[210,576,577],{"class":220},"--context=vscode",[210,579,303],{"class":302},[210,581,378],{"class":302},[210,583,346],{"class":302},[210,585,586],{"class":220},"--project-from-cwd",[210,588,303],{"class":302},[210,590,473],{"class":302},[210,592,593],{"class":212,"line":424},[210,594,427],{"class":302},[210,596,597],{"class":212,"line":430},[210,598,433],{"class":302},[195,600,601],{"id":601},"初始化项目",[250,603,604,605,608,609,612,613,616,617,620],{},"在项目根目录执行 ",[207,606,607],{},"serena init","，生成 ",[207,610,611],{},".serena\u002F"," 目录。项目配置在 ",[207,614,615],{},".serena\u002Fproject.yml","，本地覆盖用 ",[207,618,619],{},".serena\u002Fproject.local.yml","（不提交）。",[195,622,623],{"id":623},"验证",[250,625,626],{},"重启客户端，在对话中测试：",[200,628,633],{"className":629,"code":631,"language":632,"meta":205},[630],"language-text","请帮我找到项目中 main 函数的定义\n","text",[207,634,631],{"__ignoreMap":205},[187,636,637],{"id":637},"常用命令",[200,639,641],{"className":202,"code":640,"language":204,"meta":205,"style":205},"# 更新\n$ uv tool upgrade serena-agent\n# 项目索引\n$ serena project index\n# 健康检查\n$ serena project health-check\n# 手动启动 MCP（调试）\n$ serena start-mcp-server --project-from-cwd\n",[207,642,643,649,662,667,679,684,695,700],{"__ignoreMap":205},[210,644,645],{"class":212,"line":213},[210,646,648],{"class":647},"sHwdD","# 更新\n",[210,650,651,653,655,657,660],{"class":212,"line":240},[210,652,217],{"class":216},[210,654,221],{"class":220},[210,656,224],{"class":220},[210,658,659],{"class":220}," upgrade",[210,661,237],{"class":220},[210,663,664],{"class":212,"line":333},[210,665,666],{"class":647},"# 项目索引\n",[210,668,669,671,673,676],{"class":212,"line":357},[210,670,217],{"class":216},[210,672,245],{"class":220},[210,674,675],{"class":220}," project",[210,677,678],{"class":220}," index\n",[210,680,681],{"class":212,"line":409},[210,682,683],{"class":647},"# 健康检查\n",[210,685,686,688,690,692],{"class":212,"line":424},[210,687,217],{"class":216},[210,689,245],{"class":220},[210,691,675],{"class":220},[210,693,694],{"class":220}," health-check\n",[210,696,697],{"class":212,"line":430},[210,698,699],{"class":647},"# 手动启动 MCP（调试）\n",[210,701,703,705,707,710],{"class":212,"line":702},8,[210,704,217],{"class":216},[210,706,245],{"class":220},[210,708,709],{"class":220}," start-mcp-server",[210,711,712],{"class":220}," --project-from-cwd\n",[187,714,715],{"id":715},"核心工具",[717,718,719,734],"table",{},[720,721,722],"thead",{},[723,724,725,729,731],"tr",{},[726,727,728],"th",{},"分类",[726,730,11],{},[726,732,733],{},"功能",[735,736,737,751,763,775,787,800,812,824,837,849],"tbody",{},[723,738,739,743,748],{},[740,741,742],"td",{},"检索",[740,744,745],{},[207,746,747],{},"serena_find_symbol",[740,749,750],{},"按名称搜索符号，支持源码\u002F文档提取",[723,752,753,755,760],{},[740,754,742],{},[740,756,757],{},[207,758,759],{},"serena_get_symbols_overview",[740,761,762],{},"获取文件结构概览",[723,764,765,767,772],{},[740,766,742],{},[740,768,769],{},[207,770,771],{},"serena_find_referencing_symbols",[740,773,774],{},"查找所有引用位置",[723,776,777,779,784],{},[740,778,742],{},[740,780,781],{},[207,782,783],{},"serena_find_implementations",[740,785,786],{},"查找接口\u002F抽象类的所有实现",[723,788,789,792,797],{},[740,790,791],{},"编辑",[740,793,794],{},[207,795,796],{},"serena_replace_symbol_body",[740,798,799],{},"替换符号体，保留签名",[723,801,802,804,809],{},[740,803,791],{},[740,805,806],{},[207,807,808],{},"serena_insert_after_symbol",[740,810,811],{},"在符号之后插入代码",[723,813,814,816,821],{},[740,815,791],{},[740,817,818],{},[207,819,820],{},"serena_safe_delete_symbol",[740,822,823],{},"安全删除（有引用时阻止）",[723,825,826,829,834],{},[740,827,828],{},"重构",[740,830,831],{},[207,832,833],{},"serena_rename_symbol",[740,835,836],{},"跨文件重命名符号",[723,838,839,841,846],{},[740,840,828],{},[740,842,843],{},[207,844,845],{},"serena_replace_content",[740,847,848],{},"正则\u002F字面文本替换",[723,850,851,854,863],{},[740,852,853],{},"记忆",[740,855,856,859,860],{},[207,857,858],{},"serena_write_memory"," \u002F ",[207,861,862],{},"serena_read_memory",[740,864,865],{},"跨会话知识持久化",[187,867,868],{"id":868},"注意事项",[870,871,872,876,881],"ul",{},[873,874,875],"li",{},"默认使用 LSP 后端（免费），支持 40+ 语言",[873,877,878,879],{},"stdio 模式由编辑器拉起，无需手动常驻 ",[207,880,383],{},[873,882,883,884,887],{},"多客户端共享实例可用 ",[207,885,886],{},"streamable-http"," 模式，需自行启动并配置 URL",[889,890,891],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":205,"searchDepth":240,"depth":240,"links":893},[894,895,896,897],{"id":189,"depth":240,"text":189},{"id":637,"depth":240,"text":637},{"id":715,"depth":240,"text":715},{"id":868,"depth":240,"text":868},"md",null,{},{"icon":74},{"title":71,"description":205},"LOB3I277q3HiSZxZl6OhFZiQEIhVYRXVk2Qjnk9-xxE",[905,906],{"title":66,"path":67,"stem":68,"description":205,"icon":69,"children":-1},{"title":88,"path":89,"stem":90,"description":205,"icon":19,"children":-1},1789315518398]