[{"data":1,"prerenderedAt":987},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fsetting_up":3,"surround-\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fsetting_up":972},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":965,"description":39,"extension":966,"links":6,"meta":967,"navigation":6,"path":968,"seo":969,"stem":970,"__hash__":971},"docs\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fsetting_up.md","配置开发环境",null,{"type":8,"value":9,"toc":962},"minimark",[10,958],[11,12,14,19,23,93,96,99,110,113,126,130,133,159,162,174,181,192,196,199,212,215,228,232,235,238,245,304,307,310,391,395,409,429,435,456,459,462,483,498,501,513,525,544,548,557,575,578,655,822,825,900,904,913,936,940],"steps",{"level":13},"4",[15,16,18],"h4",{"id":17},"fork-并克隆仓库","Fork 并克隆仓库",[20,21,22],"p",{},"在本地设置项目仓库：",[24,25,26,30,69],"ul",{},[27,28,29],"li",{},"在 GitHub 上 fork 仓库",[27,31,32,33],{},"将你的 fork 克隆到本地：",[34,35,40],"pre",{"className":36,"code":37,"language":38,"meta":39,"style":39},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002FYOUR-USERNAME\u002FMemOS.git\ncd MemOS\n","bash","",[41,42,43,59],"code",{"__ignoreMap":39},[44,45,48,52,56],"span",{"class":46,"line":47},"line",1,[44,49,51],{"class":50},"sBMFI","git",[44,53,55],{"class":54},"sfazB"," clone",[44,57,58],{"class":54}," https:\u002F\u002Fgithub.com\u002FYOUR-USERNAME\u002FMemOS.git\n",[44,60,62,66],{"class":46,"line":61},2,[44,63,65],{"class":64},"s2Zo4","cd",[44,67,68],{"class":54}," MemOS\n",[27,70,71,72],{},"添加上游仓库作为远程源：",[34,73,75],{"className":36,"code":74,"language":38,"meta":39,"style":39},"git remote add upstream https:\u002F\u002Fgithub.com\u002FMemTensor\u002FMemOS.git\n",[41,76,77],{"__ignoreMap":39},[44,78,79,81,84,87,90],{"class":46,"line":47},[44,80,51],{"class":50},[44,82,83],{"class":54}," remote",[44,85,86],{"class":54}," add",[44,88,89],{"class":54}," upstream",[44,91,92],{"class":54}," https:\u002F\u002Fgithub.com\u002FMemTensor\u002FMemOS.git\n",[15,94,95],{"id":95},"准备开发依赖",[20,97,98],{},"确保本地已安装：",[24,100,101,104,107],{},[27,102,103],{},"Git",[27,105,106],{},"Python 3.9+",[27,108,109],{},"Make",[20,111,112],{},"验证 Python：",[34,114,116],{"className":36,"code":115,"language":38,"meta":39,"style":39},"python3 --version\n",[41,117,118],{"__ignoreMap":39},[44,119,120,123],{"class":46,"line":47},[44,121,122],{"class":50},"python3",[44,124,125],{"class":54}," --version\n",[15,127,129],{"id":128},"安装-poetry","安装 Poetry",[20,131,132],{},"MemOS 使用 Poetry 管理 Python 依赖。推荐使用官方安装脚本：",[34,134,136],{"className":36,"code":135,"language":38,"meta":39,"style":39},"curl -sSL https:\u002F\u002Finstall.python-poetry.org | python -\n",[41,137,138],{"__ignoreMap":39},[44,139,140,143,146,149,153,156],{"class":46,"line":47},[44,141,142],{"class":50},"curl",[44,144,145],{"class":54}," -sSL",[44,147,148],{"class":54}," https:\u002F\u002Finstall.python-poetry.org",[44,150,152],{"class":151},"sMK4o"," |",[44,154,155],{"class":50}," python",[44,157,158],{"class":54}," -\n",[20,160,161],{},"验证安装是否成功：",[34,163,165],{"className":36,"code":164,"language":38,"meta":39,"style":39},"poetry --version\n",[41,166,167],{"__ignoreMap":39},[44,168,169,172],{"class":46,"line":47},[44,170,171],{"class":50},"poetry",[44,173,125],{"class":54},[20,175,176,177,180],{},"如果提示 ",[41,178,179],{},"poetry: command not found","，请将安装器输出中提示的 Poetry 可执行文件目录加入 PATH，然后重新打开终端再验证。",[20,182,183,184,191],{},"更多安装选项参考：",[185,186,190],"a",{"href":187,"rel":188},"https:\u002F\u002Fpython-poetry.org\u002Fdocs\u002F#installing-with-the-official-installer",[189],"nofollow","官方安装指南","。",[15,193,195],{"id":194},"安装依赖并设置-pre-commit-钩子","安装依赖并设置 Pre-commit 钩子",[20,197,198],{},"在仓库根目录安装所有依赖与开发工具：",[34,200,202],{"className":36,"code":201,"language":38,"meta":39,"style":39},"make install\n",[41,203,204],{"__ignoreMap":39},[44,205,206,209],{"class":46,"line":47},[44,207,208],{"class":50},"make",[44,210,211],{"class":54}," install\n",[20,213,214],{},"提示：",[24,216,217],{},[27,218,219,220,227],{},"如果你切换分支或依赖发生变化，可能需要",[221,222,223,224],"strong",{},"重新运行 ",[41,225,226],{},"make install"," 以保持环境一致",[229,230,231],"h3",{"id":231},"理解记忆模块与依赖选择",[20,233,234],{},"在配置环境之前，我们需要先了解 MemOS 的记忆模块分类及其对应的数据库依赖。这将决定你需要安装哪些组件。",[15,236,237],{"id":237},"记忆类型",[20,239,240,241,244],{},"MemOS 的记忆系统主要分为两类（括号内为配置项 ",[41,242,243],{},"backend"," 的标识符）：",[24,246,247,287],{},[27,248,249,252,253,256,257],{},[221,250,251],{},"明文记忆 (Textual Memory)","：属于事实记忆，",[221,254,255],{},"需要选择其中一种","。\n",[24,258,259,269,278],{},[27,260,261,264,265,268],{},[41,262,263],{},"tree"," (",[41,266,267],{},"tree_text","): 树状记忆（推荐），结构化程度最高。",[27,270,271,264,274,277],{},[41,272,273],{},"general",[41,275,276],{},"general_text","): 通用记忆，基于向量检索。",[27,279,280,264,283,286],{},[41,281,282],{},"naive",[41,284,285],{},"naive_text","): 简单记忆，无特殊依赖（仅用于测试）。",[27,288,289,292,293,256,296],{},[221,290,291],{},"偏好记忆 (Preference Memory)","：属于用户偏好，",[221,294,295],{},"可选",[24,297,298],{},[27,299,300,303],{},[41,301,302],{},"pref",": 用于存储和检索用户偏好。",[15,305,306],{"id":306},"数据库依赖矩阵",[20,308,309],{},"不同的记忆类型需要不同的数据库支持：",[311,312,313,329],"table",{},[314,315,316],"thead",{},[317,318,319,323,326],"tr",{},[320,321,237],"th",{"align":322},"left",[320,324,325],{"align":322},"依赖组件",[320,327,328],{"align":322},"备注",[330,331,332,348,363,376],"tbody",{},[317,333,334,340,345],{},[335,336,337],"td",{"align":322},[221,338,339],{},"Tree",[335,341,342],{"align":322},[221,343,344],{},"图数据库",[335,346,347],{"align":322},"必选。支持 Neo4j Desktop, Neo4j Community , PolarDB",[317,349,350,355,360],{},[335,351,352],{"align":322},[221,353,354],{},"General",[335,356,357],{"align":322},[221,358,359],{},"向量数据库",[335,361,362],{"align":322},"必选。推荐使用 Qdrant（或兼容向量 DB）",[317,364,365,370,373],{},[335,366,367],{"align":322},[221,368,369],{},"Naive",[335,371,372],{"align":322},"无",[335,374,375],{"align":322},"无需安装数据库",[317,377,378,383,388],{},[335,379,380],{"align":322},[221,381,382],{},"Pref",[335,384,385],{"align":322},[221,386,387],{},"Milvus",[335,389,390],{"align":322},"如果启用偏好记忆，必须安装 Milvus",[15,392,394],{"id":393},"关于-tree-记忆与图数据库的选择","关于 Tree 记忆与图数据库的选择",[20,396,397,398,401,402,404,405,408],{},"如果你选择使用 ",[221,399,400],{},"Tree 明文记忆后端","（配置标识通常为 ",[41,403,267],{},"），则需要准备一个 ",[221,406,407],{},"图数据库（Graph DB）"," 作为存储与查询基础。目前可选方案包括：",[24,410,411,417,423],{},[27,412,413,416],{},[221,414,415],{},"Neo4j Desktop","（PC 端推荐）：在本机安装并通过图形界面管理数据库，适合快速上手与调试。",[27,418,419,422],{},[221,420,421],{},"PolarDB","：云上托管的图数据库服务（付费），适合生产或团队协作场景。",[27,424,425,428],{},[221,426,427],{},"Neo4j Community","（社区版）：开源免费，适合服务器或 Linux 环境部署。",[20,430,431,434],{},[221,432,433],{},"特别说明","：",[24,436,437,443],{},[27,438,439,440,442],{},"使用 ",[221,441,415],{}," 时，你主要关注数据库的启动与连接即可，日常调试更方便。",[27,444,439,445,447,448,451,452,455],{},[221,446,427],{}," 时，需要注意：它",[221,449,450],{},"不提供原生向量索引能力","。如果你的流程需要向量检索\u002F相似度搜索能力，通常需要通过",[221,453,454],{},"外挂向量库","（例如 Qdrant）来补齐相关能力。",[15,457,458],{"id":458},"本教程的配置方案",[20,460,461],{},"为便于开发者快速跑通核心链路，本教程采用以下组合：",[24,463,464,472,477],{},[27,465,466,434,469,471],{},[221,467,468],{},"明文记忆后端",[41,470,267],{},"（概念上对应 Tree 记忆）",[27,473,474,476],{},[221,475,344],{},"：Neo4j Community（可使用 Docker 启动）",[27,478,479,482],{},[221,480,481],{},"向量能力","：Qdrant（本地模式）",[20,484,485,486,489,490,493,494,497],{},"由于 Neo4j Community 不支持原生向量索引，本教程引入 Qdrant 作为向量能力的补充。为了降低环境复杂度，我们",[221,487,488],{},"不启动 Qdrant 的服务端进程","（不运行 Qdrant 容器），而是使用 Qdrant 的",[221,491,492],{},"本地模式","：在配置中以本地路径（",[41,495,496],{},"path","）形式指定存储位置，由系统在该目录下初始化并读写所需的数据文件。若未显式指定路径，则会使用默认路径进行初始化与持久化（具体默认位置以项目实现与配置为准）。",[15,499,500],{"id":500},"创建配置文件",[20,502,503,504,508,509],{},".env 内容，快速配置请见 docker 安装下的",[185,505,507],{"href":506},"\u002Fopen_source\u002Fgetting_started\u002Finstallation#2.-.env-%E5%86%85%E5%AE%B9","env 配置","\n.env详细配置请见",[185,510,512],{"href":511},"\u002Fopen_source\u002Fgetting_started\u002Frest_api_server\u002F#%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C","env配置",[514,515,516],"note",{},[20,517,518,521,524],{},[221,519,520],{},"请注意",[522,523],"br",{},"\n.env 文件配置需要放在MemOS 项目根目录下",[34,526,528],{"className":36,"code":527,"language":38,"meta":39,"style":39},"cd MemOS\ntouch .env\n",[41,529,530,536],{"__ignoreMap":39},[44,531,532,534],{"class":46,"line":47},[44,533,65],{"class":64},[44,535,68],{"class":54},[44,537,538,541],{"class":46,"line":61},[44,539,540],{"class":50},"touch",[44,542,543],{"class":54}," .env\n",[15,545,547],{"id":546},"配置dockerfile文件","配置Dockerfile文件",[514,549,550],{},[20,551,552,554,556],{},[221,553,520],{},[522,555],{},"\nDockerfile 文件在 docker 目录下",[34,558,560],{"className":36,"code":559,"language":38,"meta":39,"style":39},"#进入docker目录下\ncd docker\n",[41,561,562,568],{"__ignoreMap":39},[44,563,564],{"class":46,"line":47},[44,565,567],{"class":566},"sHwdD","#进入docker目录下\n",[44,569,570,572],{"class":46,"line":61},[44,571,65],{"class":64},[44,573,574],{"class":54}," docker\n",[20,576,577],{},"包含快速模式和完整模式，可区分使用精简包（区分arm和x86）和全量包（区分arm和x86）",[34,579,581],{"className":36,"code":580,"language":38,"meta":39,"style":39},"\n● 精简包：简化体量过大的 nvidia相关等依赖，对镜像实现轻量化，使本地部署更加轻量快速。\nurl: registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-base:v1.0\nurl: registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-base-arm:v1.0\n\n● 全量包：将 MemOS 全部依赖包打为镜像，可体验完整功能，通过配置 Dockerfile可直接构建启动。\nurl: registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-full-base:v1.0.0\nurl: registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-full-base-arm:v1.0.0\n",[41,582,583,589,600,609,617,622,639,647],{"__ignoreMap":39},[44,584,585],{"class":46,"line":47},[44,586,588],{"emptyLinePlaceholder":587},true,"\n",[44,590,591,594,597],{"class":46,"line":61},[44,592,593],{"class":50},"●",[44,595,596],{"class":54}," 精简包：简化体量过大的",[44,598,599],{"class":54}," nvidia相关等依赖，对镜像实现轻量化，使本地部署更加轻量快速。\n",[44,601,603,606],{"class":46,"line":602},3,[44,604,605],{"class":50},"url:",[44,607,608],{"class":54}," registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-base:v1.0\n",[44,610,612,614],{"class":46,"line":611},4,[44,613,605],{"class":50},[44,615,616],{"class":54}," registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-base-arm:v1.0\n",[44,618,620],{"class":46,"line":619},5,[44,621,588],{"emptyLinePlaceholder":587},[44,623,625,627,630,633,636],{"class":46,"line":624},6,[44,626,593],{"class":50},[44,628,629],{"class":54}," 全量包：将",[44,631,632],{"class":54}," MemOS",[44,634,635],{"class":54}," 全部依赖包打为镜像，可体验完整功能，通过配置",[44,637,638],{"class":54}," Dockerfile可直接构建启动。\n",[44,640,642,644],{"class":46,"line":641},7,[44,643,605],{"class":50},[44,645,646],{"class":54}," registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-full-base:v1.0.0\n",[44,648,650,652],{"class":46,"line":649},8,[44,651,605],{"class":50},[44,653,654],{"class":54}," registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-full-base-arm:v1.0.0\n",[34,656,658],{"className":36,"code":657,"language":38,"meta":39,"style":39},"# 当前示例使用精简包 url\nFROM registry.cn-shanghai.aliyuncs.com\u002Fmemtensor\u002Fmemos-base-arm:v1.0\n\nWORKDIR \u002Fapp\n\nENV HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n\nENV PYTHONPATH=\u002Fapp\u002Fsrc\n\nCOPY src\u002F .\u002Fsrc\u002F\n\nEXPOSE 8000\n\nCMD [\"uvicorn\", \"memos.api.server_api:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\", \"--reload\"]\n\n",[41,659,660,665,672,676,684,688,696,700,707,712,724,729,739,744],{"__ignoreMap":39},[44,661,662],{"class":46,"line":47},[44,663,664],{"class":566},"# 当前示例使用精简包 url\n",[44,666,667,670],{"class":46,"line":61},[44,668,669],{"class":50},"FROM",[44,671,616],{"class":54},[44,673,674],{"class":46,"line":602},[44,675,588],{"emptyLinePlaceholder":587},[44,677,678,681],{"class":46,"line":611},[44,679,680],{"class":50},"WORKDIR",[44,682,683],{"class":54}," \u002Fapp\n",[44,685,686],{"class":46,"line":619},[44,687,588],{"emptyLinePlaceholder":587},[44,689,690,693],{"class":46,"line":624},[44,691,692],{"class":50},"ENV",[44,694,695],{"class":54}," HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n",[44,697,698],{"class":46,"line":641},[44,699,588],{"emptyLinePlaceholder":587},[44,701,702,704],{"class":46,"line":649},[44,703,692],{"class":50},[44,705,706],{"class":54}," PYTHONPATH=\u002Fapp\u002Fsrc\n",[44,708,710],{"class":46,"line":709},9,[44,711,588],{"emptyLinePlaceholder":587},[44,713,715,718,721],{"class":46,"line":714},10,[44,716,717],{"class":50},"COPY",[44,719,720],{"class":54}," src\u002F",[44,722,723],{"class":54}," .\u002Fsrc\u002F\n",[44,725,727],{"class":46,"line":726},11,[44,728,588],{"emptyLinePlaceholder":587},[44,730,732,735],{"class":46,"line":731},12,[44,733,734],{"class":50},"EXPOSE",[44,736,738],{"class":737},"sbssI"," 8000\n",[44,740,742],{"class":46,"line":741},13,[44,743,588],{"emptyLinePlaceholder":587},[44,745,747,750,754,757,760,762,765,767,770,772,775,778,781,783,785,787,790,792,794,796,799,801,803,805,808,810,812,814,817,819],{"class":46,"line":746},14,[44,748,749],{"class":50},"CMD",[44,751,753],{"class":752},"sTEyZ"," [",[44,755,756],{"class":151},"\"",[44,758,759],{"class":54},"uvicorn",[44,761,756],{"class":151},[44,763,764],{"class":752},", ",[44,766,756],{"class":151},[44,768,769],{"class":54},"memos.api.server_api:app",[44,771,756],{"class":151},[44,773,774],{"class":54},",",[44,776,777],{"class":151}," \"",[44,779,780],{"class":54},"--host",[44,782,756],{"class":151},[44,784,774],{"class":54},[44,786,777],{"class":151},[44,788,789],{"class":54},"0.0.0.0",[44,791,756],{"class":151},[44,793,774],{"class":54},[44,795,777],{"class":151},[44,797,798],{"class":54},"--port",[44,800,756],{"class":151},[44,802,774],{"class":54},[44,804,777],{"class":151},[44,806,807],{"class":54},"8000",[44,809,756],{"class":151},[44,811,774],{"class":54},[44,813,777],{"class":151},[44,815,816],{"class":54},"--reload",[44,818,756],{"class":151},[44,820,821],{"class":54},"]\n",[15,823,824],{"id":824},"启动docker客户端",[34,826,828],{"className":36,"code":827,"language":38,"meta":39,"style":39}," # 如果没有安装docker,请安装对应版本，下载地址如下：\n https:\u002F\u002Fwww.docker.com\u002F\n\n # 安装完成之后，可通过客户端启动docker，或者通过命令行启动docker\n # 通过命令行启动docker\n sudo systemctl start docker\n\n# 安装完成后，查看docker状态\ndocker ps\n\n# 查看docker镜像 （可不用）\ndocker images\n\n",[41,829,830,835,840,844,849,854,867,871,876,884,888,893],{"__ignoreMap":39},[44,831,832],{"class":46,"line":47},[44,833,834],{"class":566}," # 如果没有安装docker,请安装对应版本，下载地址如下：\n",[44,836,837],{"class":46,"line":61},[44,838,839],{"class":50}," https:\u002F\u002Fwww.docker.com\u002F\n",[44,841,842],{"class":46,"line":602},[44,843,588],{"emptyLinePlaceholder":587},[44,845,846],{"class":46,"line":611},[44,847,848],{"class":566}," # 安装完成之后，可通过客户端启动docker，或者通过命令行启动docker\n",[44,850,851],{"class":46,"line":619},[44,852,853],{"class":566}," # 通过命令行启动docker\n",[44,855,856,859,862,865],{"class":46,"line":624},[44,857,858],{"class":50}," sudo",[44,860,861],{"class":54}," systemctl",[44,863,864],{"class":54}," start",[44,866,574],{"class":54},[44,868,869],{"class":46,"line":641},[44,870,588],{"emptyLinePlaceholder":587},[44,872,873],{"class":46,"line":649},[44,874,875],{"class":566},"# 安装完成后，查看docker状态\n",[44,877,878,881],{"class":46,"line":709},[44,879,880],{"class":50},"docker",[44,882,883],{"class":54}," ps\n",[44,885,886],{"class":46,"line":714},[44,887,588],{"emptyLinePlaceholder":587},[44,889,890],{"class":46,"line":726},[44,891,892],{"class":566},"# 查看docker镜像 （可不用）\n",[44,894,895,897],{"class":46,"line":731},[44,896,880],{"class":50},[44,898,899],{"class":54}," images\n",[15,901,903],{"id":902},"构建并启动服务","构建并启动服务 ：",[514,905,906],{},[20,907,908,910,912],{},[221,909,520],{},[522,911],{},"\n构建命令同样在 docker 目录下",[34,914,916],{"className":36,"code":915,"language":38,"meta":39,"style":39},"# 在docker目录下\ndocker compose up neo4j\n",[41,917,918,923],{"__ignoreMap":39},[44,919,920],{"class":46,"line":47},[44,921,922],{"class":566},"# 在docker目录下\n",[44,924,925,927,930,933],{"class":46,"line":61},[44,926,880],{"class":50},[44,928,929],{"class":54}," compose",[44,931,932],{"class":54}," up",[44,934,935],{"class":54}," neo4j\n",[15,937,939],{"id":938},"新建终端启动server端口","新建终端启动server端口 ：",[34,941,943],{"className":36,"code":942,"language":38,"meta":39,"style":39},"cd MemOS\nmake serve\n",[41,944,945,951],{"__ignoreMap":39},[44,946,947,949],{"class":46,"line":47},[44,948,65],{"class":64},[44,950,68],{"class":54},[44,952,953,955],{"class":46,"line":61},[44,954,208],{"class":50},[44,956,957],{"class":54}," serve\n",[959,960,961],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":39,"searchDepth":61,"depth":61,"links":963},[964],{"id":231,"depth":602,"text":231},"若要参与 MemOS 的开发，你需要在本地配置开发环境。","md",{},"\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fsetting_up",{"title":5,"description":39},"cn\u002Fopen_source\u002Fcontribution\u002Fsetting_up","OLyU1ZM3qr1gpmnW6GM_WwkgOE0KSU3fBjyYWgkxRTc",[973,981],{"title":974,"path":975,"stem":976,"icon":977,"framework":6,"module":6,"class":978,"target":-1,"active":979,"defaultOpen":979,"children":-1,"description":980},"参与 MemOS 开发","\u002Fcn\u002Fopen_source\u002Fcontribution\u002Foverview","open_source\u002Fcontribution\u002Foverview","i-ri-eye-line",[],false,"欢迎阅读 MemOS 贡献指南！了解如何配置开发环境、遵循我们的开发流程、撰写规范的提交信息、完善文档以及添加测试用例。",{"title":982,"path":983,"stem":984,"icon":985,"framework":6,"module":6,"class":986,"target":-1,"active":979,"defaultOpen":979,"children":-1,"description":-1},"开发流程","\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow","open_source\u002Fcontribution\u002Fdevelopment_workflow","i-ri-git-branch-line",[],1774339753107]