[{"data":1,"prerenderedAt":6033},["ShallowReactive",2],{"docs-zh:all":3},[4,241,550,1193,1599,1967,2225,2892,3628,3984,4331,4790,5065,5452,5888],{"id":5,"title":6,"body":7,"description":228,"extension":229,"meta":230,"navTitle":6,"navigation":231,"order":232,"path":233,"seo":234,"stem":235,"toc":236,"__hash__":240},"docs_zh/zh/docs/welcome.md","欢迎",{"type":8,"value":9,"toc":221},"minimark",[10,47,194],[11,12,16,17,16,22,16,26,16,29],"section",{"id":13,"className":14},"what-openpets-is",[15],"docs-section","\n  ",[18,19,21],"h2",{"id":20},"openpets-是什么","OpenPets 是什么",[23,24,25],"p",{},"\n    OpenPets 是一款小型开源桌面应用，它会在你的屏幕上显示一只动态宠物，并让你的 AI\n    编程助手通过它做出反应。当助手在思考、编辑文件、运行测试、等待审批或完成任务时，宠物会展示对应的反应或简短的状态消息。\n  ",[23,27,28],{},"\n    OpenPets 以本地优先为设计原则。桌面应用、MCP 服务器和 CLI\n    均通过本机上的本地套接字相互通信。应用发起的唯一对外网络请求是下载你选择安装的宠物以及检查 OpenPets\n    更新。没有任何遥测数据。\n  ",[23,30,31,32,36,37,40,41,46],{},"\n    OpenPets 可与任何支持 MCP 的助手配合使用。它为 ",[33,34,35],"strong",{},"Claude Code"," 和\n    ",[33,38,39],{},"OpenCode"," 提供了专用的一键集成；其他客户端（如 Cursor、VS Code、Windsurf、Zed）可通过\n    ",[42,43,45],"nuxtlink",{"to":44},"/docs/mcp","MCP 参考"," 页面上显示的标准 stdio MCP 命令进行连接。\n  ",[11,48,16,51,16,54,16,65],{"id":49,"className":50},"how-the-docs-are-organized",[15],[18,52,53],{"id":53},"文档结构",[23,55,56,57,61,62,64],{},"\n    本文档将所有内容从上至下排列在一个页面中。每个章节也是一个独立页面，可以直接链接，例如\n    ",[58,59,60],"code",{},"/docs/concepts"," 或 ",[58,63,44],{},"。左侧边栏按章节对锚点进行分组，方便快速跳转。\n  ",[66,67,70,71,16],"div",{"className":68},[69],"docs-table-wrap","\n    ",[72,73,74,75,74,89,70],"table",{},"\n      ",[76,77,78,79,74],"thead",{},"\n        ",[80,81,82,86],"tr",{},[83,84,85],"th",{},"如果你想……",[83,87,88],{},"请阅读",[90,91,78,92,78,104,78,114,78,124,78,135,78,145,78,156,78,167,78,183,74],"tbody",{},[80,93,94,98],{},[95,96,97],"td",{},"五分钟快速上手",[95,99,100],{},[42,101,103],{"to":102},"/docs/quickstart","快速开始",[80,105,106,109],{},[95,107,108],{},"理解基本概念",[95,110,111],{},[42,112,113],{"to":60},"OpenPets 的工作原理",[80,115,116,119],{},[95,117,118],{},"安装桌面应用",[95,120,121],{},[42,122,118],{"to":123},"/docs/install",[80,125,126,129],{},[95,127,128],{},"连接 Claude Code 或 OpenCode",[95,130,131],{},[42,132,134],{"to":133},"/docs/ai-assistants","配置 AI 助手",[80,136,137,140],{},[95,138,139],{},"接入其他 MCP 客户端",[95,141,142],{},[42,143,144],{"to":44},"MCP 服务器参考",[80,146,147,150],{},[95,148,149],{},"查阅 CLI 命令",[95,151,152],{},[42,153,155],{"to":154},"/docs/cli","CLI 参考",[80,157,158,161],{},[95,159,160],{},"打包或提交宠物",[95,162,163],{},[42,164,166],{"to":165},"/docs/pet-format","宠物文件格式",[80,168,169,172],{},[95,170,171],{},"了解 OpenPets 写入磁盘或通过网络发送的确切内容",[95,173,174,178,179],{},[42,175,177],{"to":176},"/docs/files-and-config","本地文件"," · ",[42,180,182],{"to":181},"/docs/privacy","隐私",[80,184,185,188],{},[95,186,187],{},"排查问题",[95,189,190],{},[42,191,193],{"to":192},"/docs/troubleshooting","故障排除",[11,195,16,198,16,201],{"id":196,"className":197},"where-to-start",[15],[18,199,200],{"id":200},"从哪里开始",[202,203,70,204,70,211,70,216,16],"ul",{},[205,206,207,208,210],"li",{},"如果你尚未安装 OpenPets，请先阅读 ",[42,209,103],{"to":102},"。",[205,212,213,214,210],{},"如果已安装并希望连接助手，请跳转至 ",[42,215,134],{"to":133},[205,217,218,219,210],{},"如果你是集成开发者、插件作者，或对架构感到好奇，请先阅读 ",[42,220,113],{"to":60},{"title":222,"searchDepth":223,"depth":223,"links":224},"",2,[225,226,227],{"id":20,"depth":223,"text":21},{"id":53,"depth":223,"text":53},{"id":200,"depth":223,"text":200},"OpenPets 是一款为 AI 编程助手设计的开源桌面宠物。本页介绍它是什么、文档结构，以及从哪里开始。","md",{},true,0,"/zh/docs/welcome",{"title":6,"description":228},"zh/docs/welcome",[237,238,239],{"id":13,"label":21},{"id":49,"label":53},{"id":196,"label":200},"MX8PDCLR4-HxwpVE0g7balBWmYcu4QL4Wn_TjbBxuTE",{"id":242,"title":103,"body":243,"description":537,"extension":229,"meta":538,"navTitle":103,"navigation":231,"order":539,"path":540,"seo":541,"stem":542,"toc":543,"__hash__":549},"docs_zh/zh/docs/quickstart.md",{"type":8,"value":244,"toc":530},[245,335,376,446,498],[11,246,16,249,16,253,16,256,16,329],{"id":247,"className":248},"install-app",[15],[18,250,252],{"id":251},"_1-安装桌面应用","1. 安装桌面应用",[23,254,255],{},"\n    下载适用于你操作系统的最新 OpenPets 版本并安装。由于安装包目前尚未签名，每个操作系统都会在首次启动时要求你确认。\n  ",[66,257,70,259,16],{"className":258},[69],[72,260,74,261,74,274,70],{},[76,262,78,263,74],{},[80,264,265,268,271],{},[83,266,267],{},"平台",[83,269,270],{},"下载文件",[83,272,273],{},"首次启动说明",[90,275,78,276,78,293,78,306,74],{},[80,277,278,279,278,282,278,287,78],{},"\n          ",[95,280,281],{},"macOS",[95,283,284],{},[58,285,286],{},"OpenPets-\u003Cversion>-mac-\u003Carch>.dmg",[95,288,289,290,210],{},"拖入\"应用程序\"文件夹。若 Gatekeeper 阻止应用运行，请右键点击图标并在第一次时选择",[33,291,292],{},"打开",[80,294,278,295,278,298,278,303,78],{},[95,296,297],{},"Windows",[95,299,300],{},[58,301,302],{},"OpenPets-\u003Cversion>-win-x64-setup.exe",[95,304,305],{},"运行安装程序并选择目标路径。如出现 SmartScreen 警告，请批准。",[80,307,278,308,278,311,278,322,78],{},[95,309,310],{},"Linux",[95,312,313,178,316,178,319],{},[58,314,315],{},"OpenPets-\u003Cversion>-linux-\u003Carch>.AppImage",[58,317,318],{},".deb",[58,320,321],{},".tar.gz",[95,323,324,325,328],{},"对于 AppImage，将其标记为可执行（",[58,326,327],{},"chmod +x","）后运行。",[23,330,331,332,334],{},"\n    完整的各平台安装步骤（包括如何处理 Gatekeeper 和 SmartScreen，以及如何卸载）请参见\n    ",[42,333,118],{"to":123},"。\n  ",[11,336,16,339,16,343,16,16,356,16,370],{"id":337,"className":338},"pick-pet",[15],[18,340,342],{"id":341},"_2-选择宠物","2. 选择宠物",[23,344,345,346,349,350,355],{},"\n    OpenPets 启动后会驻留在系统托盘，而非 Dock。点击托盘图标并打开",[33,347,348],{},"宠物管理器","。你可以从内置画廊安装宠物，也可以在\n    ",[351,352,354],"a",{"href":353},"/gallery","openpets.dev/gallery"," 浏览所有可用宠物。\n  ",[202,357,70,358,70,364,70,367,16],{},[205,359,360,361,210],{},"点击你喜欢的宠物上的",[33,362,363],{},"安装",[205,365,366],{},"桌面应用会下载宠物包并在本地解压。",[205,368,369],{},"安装完成后，如需在启动时显示该宠物，请将其设置为默认宠物。",[23,371,372,373,334],{},"\n    安装过程完全在本地进行。桌面应用通过 HTTPS 获取目录和宠物 ZIP\n    包，对其进行验证后写入用户数据目录，不会有其他内容离开你的机器。有关请求的完整列表，请参见\n    ",[42,374,375],{"to":181},"隐私与网络行为",[11,377,16,380,16,384,16,16,391,16,430,16,436],{"id":378,"className":379},"connect-assistant",[15],[18,381,383],{"id":382},"_3-连接助手","3. 连接助手",[23,385,386,387,390],{},"\n    打开托盘菜单，选择",[33,388,389],{},"集成","，然后选择你的 AI\n    助手。OpenPets 为 Claude Code 和 OpenCode 提供了专用的集成卡片。\n  ",[66,392,70,394,16],{"className":393},[69],[72,395,74,396,74,406,70],{},[76,397,78,398,74],{},[80,399,400,403],{},[83,401,402],{},"助手",[83,404,405],{},"\"安装\"操作说明",[90,407,78,408,78,421,74],{},[80,409,278,410,278,414,78],{},[95,411,412],{},[33,413,35],{},[95,415,416,417,420],{},"在用户范围内向 Claude 添加名为 ",[58,418,419],{},"openpets"," 的 MCP 服务器，并写入一个小型托管指令文件，让 Claude 知道何时使用 OpenPets。",[80,422,278,423,278,427,78],{},[95,424,425],{},[33,426,39],{},[95,428,429],{},"将 OpenPets MCP 条目、OpenCode 插件和托管指令写入你的全局 OpenCode 配置。",[23,431,432,433,435],{},"\n    其他支持 MCP 的助手（Cursor、Windsurf、VS Code MCP、Zed、Claude Desktop 等）目前还没有专用卡片。若要接入这些助手，请使用\n    ",[42,434,144],{"to":44}," 上显示的标准 stdio 命令。\n  ",[23,437,438,439,442,443,334],{},"\n    基本安装流程",[33,440,441],{},"不会","安装 Hooks。Hooks 是一项选装功能，它会修改助手的 hook\n    设置文件以自动触发反应。如需启用，请在 Claude Code 卡片上打开",[33,444,445],{},"配置",[11,447,16,450,16,454,16,457,16,478,16,493],{"id":448,"className":449},"verify",[15],[18,451,453],{"id":452},"_4-验证是否正常运行","4. 验证是否正常运行",[23,455,456],{},"\n    安装集成后重启你的助手，使其加载新的 MCP 服务器。然后让助手检查 OpenPets：\n  ",[66,458,70,461,70,472,16],{"className":459},[460],"docs-code",[66,462,465,469],{"className":463},[464],"docs-code-bar",[466,467,468],"span",{},"提示词",[466,470,471],{},"text",[473,474,475],"pre",{},[58,476,477],{},"Can you call openpets_status and tell me which pet I have configured?",[23,479,480,481,484,485,488,489,492],{},"\n    助手应调用 ",[58,482,483],{},"openpets_status"," 工具，并回复正在运行的应用版本和当前目标宠物。你也可以尝试\n    ",[58,486,487],{},"openpets_react"," 和 ",[58,490,491],{},"openpets_say","，查看宠物切换反应或显示简短消息的效果。\n  ",[23,494,495,496,334],{},"\n    如果助手提示 OpenPets 不可用，请确认桌面应用仍在托盘中运行，并且你在安装集成后已重启助手。若仍无法连接，请参见\n    ",[42,497,193],{"to":192},[11,499,16,502,16,505],{"id":500,"className":501},"next-steps",[15],[18,503,504],{"id":504},"后续步骤",[202,506,70,507,70,513,70,520,70,527,16],{},[205,508,509,510,512],{},"阅读 ",[42,511,113],{"to":60},"，了解默认宠物与代理宠物、租约以及可用反应。",[205,514,515,516,210],{},"有关 Claude Code 的深入配置（包括 hooks），请参见 ",[42,517,519],{"to":518},"/integrations/claude","Claude Code 集成指南",[205,521,522,523,210],{},"有关 OpenCode 配置（包括插件），请参见 ",[42,524,526],{"to":525},"/integrations/opencode","OpenCode 集成指南",[205,528,529],{},"有关其他内容（CLI、文件格式、OpenPets 写入的具体文件），请继续向下滚动或使用侧边栏导航。",{"title":222,"searchDepth":223,"depth":223,"links":531},[532,533,534,535,536],{"id":251,"depth":223,"text":252},{"id":341,"depth":223,"text":342},{"id":382,"depth":223,"text":383},{"id":452,"depth":223,"text":453},{"id":504,"depth":223,"text":504},"大约五分钟内完成 OpenPets 安装、添加第一只宠物并连接 AI 助手。",{},10,"/zh/docs/quickstart",{"title":103,"description":537},"zh/docs/quickstart",[544,545,546,547,548],{"id":247,"label":252},{"id":337,"label":342},{"id":378,"label":383},{"id":448,"label":453},{"id":500,"label":504},"jyDVJEpNCMpiB1gfKkfaqvZZQThxgAnypSsRpfGdlTk",{"id":551,"title":113,"body":552,"description":1178,"extension":229,"meta":1179,"navTitle":1180,"navigation":231,"order":1181,"path":1182,"seo":1183,"stem":1184,"toc":1185,"__hash__":1192},"docs_zh/zh/docs/concepts.md",{"type":8,"value":553,"toc":1167},[554,629,727,865,937,1020],[11,555,16,558,16,561,16,564,16,623,16,626],{"id":556,"className":557},"default-vs-agent-pets",[15],[18,559,560],{"id":560},"默认宠物与代理宠物",[23,562,563],{},"\n    OpenPets 区分桌面上的两种宠物窗口。\n  ",[66,565,70,567,16],{"className":566},[69],[72,568,74,569,74,582,70],{},[76,570,78,571,74],{},[80,572,573,576,579],{},[83,574,575],{},"类型",[83,577,578],{},"显示时机",[83,580,581],{},"控制方",[90,583,78,584,78,597,78,610,74],{},[80,585,278,586,278,591,278,594,78],{},[95,587,588],{},[33,589,590],{},"默认宠物",[95,592,593],{},"始终显示，除非你在托盘菜单中将其隐藏。",[95,595,596],{},"你。托盘控制其可见性、位置和暂停状态。",[80,598,278,599,278,604,278,607,78],{},[95,600,601],{},[33,602,603],{},"代理宠物",[95,605,606],{},"仅在助手主动使用 OpenPets 时显示。",[95,608,609],{},"助手。当助手请求特定宠物时打开宠物窗口，当助手停止请求时关闭。",[80,611,278,612,278,617,278,620,78],{},[95,613,614],{},[33,615,616],{},"内置宠物",[95,618,619],{},"当默认宠物缺失或损坏时显示。",[95,621,622],{},"OpenPets。这是随应用捆绑发布的兜底宠物，始终可用。",[23,624,625],{},"\n    默认宠物是日常陪伴的宠物。代理宠物适用于同时运行多个助手并希望每个助手驱动自己的宠物，或为特定助手指定特定宠物的场景。\n  ",[23,627,628],{},"\n    如果助手请求的宠物未安装或已损坏，OpenPets 会将事件路由至默认宠物，而不是直接报错。状态响应中包含回退原因，助手可以据此了解发生了什么。\n  ",[11,630,16,633,16,636,16,643,16,708,16,711],{"id":631,"className":632},"leases-and-routing",[15],[18,634,635],{"id":635},"租约与路由",[23,637,638,639,642],{},"\n    助手不会直接发送宠物反应，而是先向 OpenPets 申请一个宠物的",[33,640,641],{},"租约","。租约是一个短暂的凭证，表示\"在接下来几秒内，将我的反应和消息路由至这只宠物\"。租约允许多个助手共享 OpenPets 而互不干扰。\n  ",[66,644,70,646,16],{"className":645},[69],[72,647,74,648,74,658,70],{},[76,649,78,650,74],{},[80,651,652,655],{},[83,653,654],{},"步骤",[83,656,657],{},"发生的事情",[90,659,78,660,78,672,78,680,78,692,78,700,74],{},[80,661,278,662,278,665,78],{},[95,663,664],{},"1. 获取租约",[95,666,667,668,671],{},"助手调用 ",[58,669,670],{},"lease.acquire"," 并可选择指定宠物 id。OpenPets 返回一个有效期为 15 秒的租约。",[80,673,278,674,278,677,78],{},[95,675,676],{},"2. 首次显式租约",[95,678,679],{},"如果这是特定（非默认）宠物的第一个活跃租约，OpenPets 会打开该宠物的窗口。",[80,681,278,682,278,685,78],{},[95,683,684],{},"3. 心跳",[95,686,687,688,691],{},"助手在持续工作期间调用 ",[58,689,690],{},"lease.heartbeat","。每次心跳将租约延长 15 秒。",[80,693,278,694,278,697,78],{},[95,695,696],{},"4. 反应或说话",[95,698,699],{},"携带租约 id 的反应和消息会路由至租约对应的宠物。没有租约的反应会发送至默认宠物。",[80,701,278,702,278,705,78],{},[95,703,704],{},"5. 释放或过期",[95,706,707],{},"当助手释放租约，或 15 秒内没有心跳时，租约结束。当特定宠物的最后一个租约结束时，OpenPets 关闭该宠物的窗口。",[23,709,710],{},"\n    OpenPets 自带的 MCP 服务器会透明地处理这一切：在启动时获取租约，每 5 秒发送一次心跳，并在关闭时释放租约。租约 id 会自动附加到它发送的每个反应和消息中。\n  ",[66,712,70,714,70,722,16],{"className":713},[460],[66,715,717,720],{"className":716},[464],[466,718,719],{},"租约生命周期",[466,721,471],{},[473,723,724],{},[58,725,726],{},"lease TTL          15 seconds\nheartbeat (MCP)    every 5 seconds\nserver sweep       every 5 seconds (releases expired leases)\nfallback           default pet if requested pet is missing or broken",[11,728,16,731,16,735,16,738,16,769,16,776,16,792,16,803,16,807,16,831],{"id":729,"className":730},"local-ipc",[15],[18,732,734],{"id":733},"本地-ipc","本地 IPC",[23,736,737],{},"\n    所有 OpenPets 通信均在本机完成。没有网络总线、没有云队列、没有远程端点。桌面应用暴露一个本地套接字，CLI、MCP 服务器以及任何其他 OpenPets 客户端均直接连接到该套接字。\n  ",[66,739,70,741,16],{"className":740},[69],[72,742,74,743,74,752,70],{},[76,744,78,745,74],{},[80,746,747,749],{},[83,748,267],{},[83,750,751],{},"传输方式",[90,753,78,754,78,762,74],{},[80,755,756,759],{},[95,757,758],{},"macOS、Linux",[95,760,761],{},"私有 0700 运行时目录内的 Unix 域套接字。",[80,763,764,766],{},[95,765,297],{},[95,767,768],{},"限定于用户会话范围的命名管道。",[23,770,771,772,775],{},"\n    OpenPets 启动时会写入一个小型",[33,773,774],{},"发现文件","，告知客户端套接字的位置和所需的令牌。客户端读取该文件，打开套接字，发送带令牌的 JSON 请求，并读取单个 JSON 响应。\n  ",[66,777,70,779,70,787,16],{"className":778},[460],[66,780,782,785],{"className":781},[464],[466,783,784],{},"发现文件路径",[466,786,471],{},[473,788,789],{},[58,790,791],{},"macOS    ~/Library/Application Support/OpenPets/runtime/ipc.json\nWindows  %APPDATA%\\OpenPets\\runtime\\ipc.json\nLinux    $XDG_RUNTIME_DIR/openpets/ipc.json  (if private)\n         ~/.config/OpenPets/runtime/ipc.json (fallback)",[23,793,794,795,798,799,802],{},"\n    发现文件以 ",[58,796,797],{},"0600"," 权限写入 ",[58,800,801],{},"0700"," 目录中。令牌在每次桌面应用启动时轮换。\n  ",[804,805,806],"h3",{"id":806},"协议结构",[202,808,70,809,70,815,70,822,70,825,70,828,16],{},[205,810,811,812,210],{},"协议版本：",[58,813,814],{},"1",[205,816,817,818,821],{},"编码：行分隔的 JSON。每个连接一个 JSON 请求，以 ",[58,819,820],{},"\\n"," 结尾。",[205,823,824],{},"最大消息大小：16 KB。",[205,826,827],{},"连接超时：2 秒。响应超时：3 秒。",[205,829,830],{},"每个请求必须包含发现令牌，令牌错误或缺失将被拒绝。",[23,832,833,834,837,838,837,841,837,844,847,848,837,850,837,852,837,855,858,859,862,863,334],{},"\n    可用方法：",[58,835,836],{},"hello","、",[58,839,840],{},"status",[58,842,843],{},"pets.list",[58,845,846],{},"pets.install","、\n    ",[58,849,670],{},[58,851,690],{},[58,853,854],{},"lease.release",[58,856,857],{},"pet.react","\n    和 ",[58,860,861],{},"pet.say","。完整的请求和响应结构请参见\n    ",[42,864,45],{"to":44},[11,866,16,869,16,873,16,876,16,931,16,934],{"id":867,"className":868},"mcp-and-hooks",[15],[18,870,872],{"id":871},"mcp-与钩子","MCP 与钩子",[23,874,875],{},"\n    助手驱动宠物有两种方式。MCP 是主动路径，助手有意识地调用工具；钩子是被动路径，生命周期事件自动触发反应。\n  ",[66,877,70,879,16],{"className":878},[69],[72,880,74,881,74,897,70],{},[76,882,78,883,74],{},[80,884,885,888,891,894],{},[83,886,887],{},"路径",[83,889,890],{},"方向",[83,892,893],{},"能做什么",[83,895,896],{},"支持的助手",[90,898,78,899,78,915,74],{},[80,900,278,901,278,906,278,909,278,912,78],{},[95,902,903],{},[33,904,905],{},"MCP 工具",[95,907,908],{},"助手调用 OpenPets。",[95,910,911],{},"检查状态、切换反应、显示简短消息。",[95,913,914],{},"任何支持 MCP 的助手。",[80,916,278,917,278,922,278,925,278,928,78],{},[95,918,919],{},[33,920,921],{},"钩子",[95,923,924],{},"助手生命周期事件触发 OpenPets。",[95,926,927],{},"自动响应思考、编辑、测试、等待、成功和错误等事件。",[95,929,930],{},"目前仅限 Claude Code，且需选装。",[23,932,933],{},"\n    大多数用户保持 MCP 开启、钩子关闭。钩子可以在助手无需调用工具的情况下自动提供视觉反馈，但它们需要修改助手的钩子设置文件，这也是它们作为选装功能而非基础安装组成部分的原因。\n  ",[23,935,936],{},"\n    两种路径在底层都使用相同的本地 IPC，在针对特定宠物时也都通过租约机制。\n  ",[11,938,16,941,16,944,16,947,16,1008,16,1013],{"id":939,"className":940},"pet-assets",[15],[18,942,943],{"id":943},"宠物资源",[23,945,946],{},"\n    一只宠物是一个包含精灵图和元数据文件的小型数据包。OpenPets 从三个位置读取宠物。\n  ",[66,948,70,950,16],{"className":949},[69],[72,951,74,952,74,965,70],{},[76,953,78,954,74],{},[80,955,956,959,962],{},[83,957,958],{},"来源",[83,960,961],{},"说明",[83,963,964],{},"存放位置",[90,966,78,967,78,979,78,992,74],{},[80,968,278,969,278,973,278,976,78],{},[95,970,971],{},[33,972,616],{},[95,974,975],{},"每个桌面版本自带的兜底宠物。",[95,977,978],{},"OpenPets 应用包内部。",[80,980,278,981,278,986,278,989,78],{},[95,982,983],{},[33,984,985],{},"目录宠物",[95,987,988],{},"你从 OpenPets 画廊安装的宠物。",[95,990,991],{},"以 ZIP 包形式下载并解压到 OpenPets 用户数据目录。",[80,993,278,994,278,999,278,1002,78],{},[95,995,996],{},[33,997,998],{},"本地 Codex 宠物",[95,1000,1001],{},"你自己开发、用于测试的宠物，实时导入。",[95,1003,1004,1005,210],{},"你机器上的 ",[58,1006,1007],{},"~/.codex/pets/\u003Cpet-id>/",[23,1009,1010,1011,334],{},"\n    目录 ZIP 包在写入磁盘前会经过验证：归档大小、解压后大小、条目数量、单文件大小、路径遍历尝试以及符号链接均会被检查。有关包结构和验证规则，请参见\n    ",[42,1012,166],{"to":165},[23,1014,1015,1016,1019],{},"\n    用户数据目录的位置因操作系统而异；具体路径列在\n    ",[42,1017,1018],{"to":176},"本地文件与配置"," 中。\n  ",[11,1021,16,1024,16,1027,16,1036,16,1162],{"id":1022,"className":1023},"reactions",[15],[18,1025,1026],{"id":1026},"反应",[23,1028,1029,1030,1032,1033,1035],{},"\n    每只宠物支持相同的固定反应集合。助手调用 ",[58,1031,487],{}," 或通过 ",[58,1034,491],{},"\n    附带反应时，从以下列表中选择一个：\n  ",[66,1037,70,1039,16],{"className":1038},[69],[72,1040,74,1041,74,1050,70],{},[76,1042,78,1043,74],{},[80,1044,1045,1047],{},[83,1046,1026],{},[83,1048,1049],{},"典型含义",[90,1051,78,1052,78,1062,78,1072,78,1082,78,1092,78,1102,78,1112,78,1122,78,1132,78,1142,78,1152,74],{},[80,1053,1054,1059],{},[95,1055,1056],{},[58,1057,1058],{},"idle",[95,1060,1061],{},"无特定动作，处于空闲状态。",[80,1063,1064,1069],{},[95,1065,1066],{},[58,1067,1068],{},"thinking",[95,1070,1071],{},"在行动前阅读或规划。",[80,1073,1074,1079],{},[95,1075,1076],{},[58,1077,1078],{},"working",[95,1080,1081],{},"通用\"忙碌\"反应。",[80,1083,1084,1089],{},[95,1085,1086],{},[58,1087,1088],{},"editing",[95,1090,1091],{},"正在修改文件。",[80,1093,1094,1099],{},[95,1095,1096],{},[58,1097,1098],{},"running",[95,1100,1101],{},"正在执行命令或进程。",[80,1103,1104,1109],{},[95,1105,1106],{},[58,1107,1108],{},"testing",[95,1110,1111],{},"正在运行测试。",[80,1113,1114,1119],{},[95,1115,1116],{},[58,1117,1118],{},"waiting",[95,1120,1121],{},"被阻塞，等待用户批准或输入。",[80,1123,1124,1129],{},[95,1125,1126],{},[58,1127,1128],{},"waving",[95,1130,1131],{},"打招呼或引起注意。",[80,1133,1134,1139],{},[95,1135,1136],{},[58,1137,1138],{},"success",[95,1140,1141],{},"任务成功完成。",[80,1143,1144,1149],{},[95,1145,1146],{},[58,1147,1148],{},"error",[95,1150,1151],{},"出现了问题。",[80,1153,1154,1159],{},[95,1155,1156],{},[58,1157,1158],{},"celebrating",[95,1160,1161],{},"比普通成功更重要的成就。",[23,1163,1164,1165,334],{},"\n    宠物只需为其关心的反应提供动画帧，未实现的反应会回退到 ",[58,1166,1058],{},{"title":222,"searchDepth":223,"depth":223,"links":1168},[1169,1170,1171,1175,1176,1177],{"id":560,"depth":223,"text":560},{"id":635,"depth":223,"text":635},{"id":733,"depth":223,"text":734,"children":1172},[1173],{"id":806,"depth":1174,"text":806},3,{"id":871,"depth":223,"text":872},{"id":943,"depth":223,"text":943},{"id":1026,"depth":223,"text":1026},"OpenPets 的核心概念：默认宠物与代理宠物、租约、本地 IPC、MCP 工具与钩子、宠物资源存放位置，以及宠物可以展示的反应。",{},"概念",20,"/zh/docs/concepts",{"title":113,"description":1178},"zh/docs/concepts",[1186,1187,1188,1189,1190,1191],{"id":556,"label":560},{"id":631,"label":635},{"id":729,"label":734},{"id":867,"label":872},{"id":939,"label":943},{"id":1022,"label":1026},"YxuDYdbLdbQiFdFPtwuxMkglFpm-5kjL7jTkXI0u1j4",{"id":1194,"title":118,"body":1195,"description":1584,"extension":229,"meta":1585,"navTitle":363,"navigation":231,"order":1586,"path":1587,"seo":1588,"stem":1589,"toc":1590,"__hash__":1598},"docs_zh/zh/docs/install.md",{"type":8,"value":1196,"toc":1575},[1197,1234,1295,1358,1447,1463,1487],[11,1198,16,1201,16,1204,16,1207,16,1223],{"id":1199,"className":1200},"download",[15],[18,1202,1203],{"id":1203},"下载",[23,1205,1206],{},"\n    OpenPets 的发布版本发布在 GitHub 上。每个版本包含每个平台和架构对应的一个安装包，文件名中包含版本号和目标平台信息。下载文件名始终遵循以下格式：\n  ",[66,1208,70,1210,70,1218,16],{"className":1209},[460],[66,1211,1213,1216],{"className":1212},[464],[466,1214,1215],{},"安装包命名规则",[466,1217,471],{},[473,1219,1220],{},[58,1221,1222],{},"OpenPets-\u003Cversion>-mac-\u003Carch>.dmg\nOpenPets-\u003Cversion>-mac-\u003Carch>.zip\nOpenPets-\u003Cversion>-win-\u003Carch>-setup.exe\nOpenPets-\u003Cversion>-win-\u003Carch>-portable.exe\nOpenPets-\u003Cversion>-linux-\u003Carch>.AppImage\nOpenPets-\u003Cversion>-linux-\u003Carch>.deb\nOpenPets-\u003Cversion>-linux-\u003Carch>.tar.gz",[23,1224,1225,1226,1229,1230,1233],{},"\n    每个版本还会发布一个 ",[58,1227,1228],{},"SHA256SUMS"," 文件，供你验证下载的完整性。当前 OpenPets\n    安装包",[33,1231,1232],{},"未经代码签名","，因此每个操作系统都会在首次启动时发出警告。\n  ",[11,1235,16,1238,16,1240,16,1275,16,1292],{"id":1236,"className":1237},"macos",[15],[18,1239,281],{"id":1236},[1241,1242,70,1243,70,1250,70,1261,70,1272,16],"ol",{},[205,1244,1245,1246,1249],{},"下载适合你 Mac 的 ",[58,1247,1248],{},".dmg","（Apple Silicon 或 Intel）。",[205,1251,1252,1253,1256,1257,1260],{},"打开 DMG，将 ",[33,1254,1255],{},"OpenPets.app"," 拖入",[33,1258,1259],{},"应用程序","文件夹。",[205,1262,1263,1264,1266,1267,1269,1270,210],{},"首次启动时，由于构建版本未签名，macOS Gatekeeper 会阻止运行。请右键点击 ",[33,1265,1255],{}," 并选择",[33,1268,292],{},"，然后在弹出的对话框中再次点击",[33,1271,292],{},[205,1273,1274],{},"如果 macOS 持续拒绝启动，请手动移除隔离属性：",[66,1276,70,1278,70,1287,16],{"className":1277},[460],[66,1279,1281,1284],{"className":1280},[464],[466,1282,1283],{},"Terminal",[466,1285,1286],{},"bash",[473,1288,1289],{},[58,1290,1291],{},"xattr -d com.apple.quarantine /Applications/OpenPets.app",[23,1293,1294],{},"\n    OpenPets 在 macOS 上默认不显示在 Dock 中。启动后，你只会看到宠物（如果已启用）和菜单栏中的托盘图标。\n  ",[11,1296,16,1299,16,1301,16,1304,16,1348],{"id":1297,"className":1298},"windows",[15],[18,1300,297],{"id":1297},[23,1302,1303],{},"\n    根据安装偏好，选择以下两种 Windows 安装包之一：\n  ",[66,1305,70,1307,16],{"className":1306},[69],[72,1308,74,1309,74,1318,70],{},[76,1310,78,1311,74],{},[80,1312,1313,1316],{},[83,1314,1315],{},"安装包",[83,1317,961],{},[90,1319,78,1320,78,1335,74],{},[80,1321,278,1322,278,1332,78],{},[95,1323,1324,1327,1328,1331],{},[33,1325,1326],{},"NSIS 安装程序","（",[58,1329,1330],{},"-setup.exe","）",[95,1333,1334],{},"标准安装程序。你可以选择安装目录；OpenPets 安装为当前用户，而非所有用户。",[80,1336,278,1337,278,1345,78],{},[95,1338,1339,1327,1342,1331],{},[33,1340,1341],{},"便携版",[58,1343,1344],{},"-portable.exe",[95,1346,1347],{},"自包含的可执行文件。可在任意文件夹运行，不会向系统写入任何内容。",[23,1349,1350,1351,1354,1355,334],{},"\n    首次启动时，由于安装包未签名，Windows SmartScreen 可能会显示\"Windows 已保护你的电脑\"提示。请点击",[33,1352,1353],{},"更多信息","，然后点击",[33,1356,1357],{},"仍要运行",[11,1359,16,1362,16,1364,16,1367,16,1419,16,1434],{"id":1360,"className":1361},"linux",[15],[18,1363,310],{"id":1360},[23,1365,1366],{},"\n    提供三种 Linux 安装包，请根据你的发行版和打包偏好选择：\n  ",[66,1368,70,1370,16],{"className":1369},[69],[72,1371,74,1372,74,1381,70],{},[76,1373,78,1374,74],{},[80,1375,1376,1378],{},[83,1377,1315],{},[83,1379,1380],{},"使用方法",[90,1382,78,1383,78,1393,78,1406,74],{},[80,1384,278,1385,278,1390,78],{},[95,1386,1387],{},[58,1388,1389],{},".AppImage",[95,1391,1392],{},"将其标记为可执行文件后直接运行，无需系统安装。",[80,1394,278,1395,278,1399,78],{},[95,1396,1397],{},[58,1398,318],{},[95,1400,1401,1402,1405],{},"使用 ",[58,1403,1404],{},"sudo apt install ./OpenPets-\u003Cversion>-linux-\u003Carch>.deb"," 安装。",[80,1407,278,1408,278,1412,78],{},[95,1409,1410],{},[58,1411,321],{},[95,1413,1414,1415,1418],{},"解压后直接运行 ",[58,1416,1417],{},"OpenPets"," 二进制文件。",[66,1420,70,1422,70,1429,16],{"className":1421},[460],[66,1423,1425,1427],{"className":1424},[464],[466,1426,1283],{},[466,1428,1286],{},[473,1430,1431],{},[58,1432,1433],{},"chmod +x OpenPets-*.AppImage\n./OpenPets-*.AppImage",[23,1435,1436,1437,1440,1441,1443,1444,334],{},"\n    OpenPets 使用私有运行时目录存放 IPC 套接字。在拥有严格\n    ",[58,1438,1439],{},"$XDG_RUNTIME_DIR","（权限 ",[58,1442,801],{},"，归当前用户所有）的系统上，套接字会放置在该目录下；否则回退至\n    ",[58,1445,1446],{},"/tmp/openpets-\u003Cuid>/",[11,1448,16,1451,16,1454,16,16,1457,16,1460],{"id":1449,"className":1450},"first-launch",[15],[18,1452,1453],{"id":1453},"首次启动",[23,1455,1456],{},"\n    OpenPets 首次启动时会显示引导窗口，让你选择初始宠物并决定是否在启动时显示默认宠物。引导完成后，应用将驻留在系统托盘中。\n  ",[23,1458,1459],{},"\n    在 macOS 上，OpenPets 不会出现在 Dock 中——应用有意将自身从 Dock\n    中隐藏，使宠物成为唯一可见的存在。所有操作均通过托盘菜单完成。\n  ",[23,1461,1462],{},"\n    如果你在 Windows 或 Linux 上意外关闭了应用，点击托盘图标或再次启动 OpenPets\n    即可；应用使用单实例锁，不会重复运行。\n  ",[11,1464,16,1467,16,1470,16,1473,16,1476],{"id":1465,"className":1466},"updates",[15],[18,1468,1469],{"id":1469},"更新",[23,1471,1472],{},"\n    OpenPets 在启动时会检查 GitHub 上是否有新版本。如果有更新版本，托盘菜单会显示\"有可用更新\"条目，点击后跳转至最新发布页面。\n  ",[23,1474,1475],{},"\n    更新不会自动安装。更新步骤如下：\n  ",[1241,1477,70,1478,70,1481,70,1484,16],{},[205,1479,1480],{},"从托盘菜单退出 OpenPets。",[205,1482,1483],{},"下载适用于你平台的新版安装包。",[205,1485,1486],{},"运行安装包；你已安装的宠物和偏好设置会保留，因为它们存储在用户数据目录中，而不在应用包内。",[11,1488,16,1491,16,1494,16,1497,16,1566],{"id":1489,"className":1490},"uninstall",[15],[18,1492,1493],{"id":1493},"卸载",[23,1495,1496],{},"\n    删除应用不会删除已安装的宠物、偏好设置或集成文件。这些文件存放在应用包之外，以便更新时保留。如需彻底卸载，请手动删除这些文件。\n  ",[66,1498,70,1500,16],{"className":1499},[69],[72,1501,74,1502,74,1514,70],{},[76,1503,78,1504,74],{},[80,1505,1506,1508,1511],{},[83,1507,267],{},[83,1509,1510],{},"删除应用",[83,1512,1513],{},"可选：删除用户数据",[90,1515,78,1516,78,1531,78,1547,74],{},[80,1517,278,1518,278,1520,278,1526,78],{},[95,1519,281],{},[95,1521,1522,1523,1525],{},"将应用程序文件夹中的 ",[33,1524,1255],{}," 拖入废纸篓。",[95,1527,1528],{},[58,1529,1530],{},"~/Library/Application Support/OpenPets",[80,1532,278,1533,278,1535,278,1542,78],{},[95,1534,297],{},[95,1536,1537,1538,1541],{},"使用",[33,1539,1540],{},"添加或删除程序","，或直接删除便携版可执行文件。",[95,1543,1544],{},[58,1545,1546],{},"%APPDATA%\\OpenPets",[80,1548,278,1549,278,1551,278,1558,78],{},[95,1550,310],{},[95,1552,1553,1554,1557],{},"删除 AppImage，或使用 ",[58,1555,1556],{},"sudo apt remove openpets"," 卸载 deb 包。",[95,1559,1560,178,1563],{},[58,1561,1562],{},"$XDG_RUNTIME_DIR/openpets",[58,1564,1565],{},"~/.config/OpenPets",[23,1567,1568,1569,1572,1573,334],{},"\n    如果你之前安装了 Claude Code 或 OpenCode 集成，请在删除应用之前先打开 OpenPets，并在\"集成\"窗口中移除这些集成。这样才能正确清理\n    ",[58,1570,1571],{},"~/.claude"," 和 OpenCode 配置中的托管条目。有关 OpenPets 涉及的完整文件列表，请参见\n    ",[42,1574,1018],{"to":176},{"title":222,"searchDepth":223,"depth":223,"links":1576},[1577,1578,1579,1580,1581,1582,1583],{"id":1203,"depth":223,"text":1203},{"id":1236,"depth":223,"text":281},{"id":1297,"depth":223,"text":297},{"id":1360,"depth":223,"text":310},{"id":1453,"depth":223,"text":1453},{"id":1469,"depth":223,"text":1469},{"id":1493,"depth":223,"text":1493},"在 macOS、Windows 和 Linux 上下载、安装、启动及卸载 OpenPets。",{},30,"/zh/docs/install",{"title":118,"description":1584},"zh/docs/install",[1591,1592,1593,1594,1595,1596,1597],{"id":1199,"label":1203},{"id":1236,"label":281},{"id":1297,"label":297},{"id":1360,"label":310},{"id":1449,"label":1453},{"id":1465,"label":1469},{"id":1489,"label":1493},"EwzMTytQvxwFZXuN1JMKs2HWK0Nbyn9pZs0c_Gd9xl4",{"id":1600,"title":1601,"body":1602,"description":1951,"extension":229,"meta":1952,"navTitle":1953,"navigation":231,"order":1954,"path":1955,"seo":1956,"stem":1957,"toc":1958,"__hash__":1966},"docs_zh/zh/docs/pets.md","查找并安装宠物",{"type":8,"value":1603,"toc":1942},[1604,1662,1701,1733,1783,1831,1860],[11,1605,16,1608,16,1611,16,1620,16,1623],{"id":1606,"className":1607},"gallery",[15],[18,1609,1610],{"id":1610},"浏览画廊",[23,1612,1613,1614,210,1617,1619],{},"\n    OpenPets 宠物目录以静态 JSON 文件的形式发布于\n    ",[58,1615,1616],{},"https://openpets.dev/pets/catalog.v3.json",[351,1618,354],{"href":353},"\n    页面将该文件渲染为一个宠物网格，每个宠物均附有预览精灵图、名称和简短描述，可直接安装。\n  ",[23,1621,1622],{},"\n    每条目录条目是一个包含以下内容的小型数据包：\n  ",[202,1624,70,1625,70,1631,70,1637,70,1643,70,1653,16],{},[205,1626,1627,1630],{},[33,1628,1629],{},"id"," — 简短的标识符（小写字母、数字、连字符、下划线，最多 64 个字符）。",[205,1632,1633,1636],{},[33,1634,1635],{},"displayName"," — 人类可读的名称（最多 120 个字符）。",[205,1638,1639,1642],{},[33,1640,1641],{},"description"," — 简短描述（最多 500 个字符）。",[205,1644,1645,1648,1649,1652],{},[33,1646,1647],{},"preview"," — ",[58,1650,1651],{},"openpets.dev/pets/*"," 上预览图的 HTTPS URL。",[205,1654,1655,1648,1658,1661],{},[33,1656,1657],{},"zip",[58,1659,1660],{},"zip.openpets.dev/pets/*"," 上可下载包的 HTTPS URL。",[11,1663,16,1666,16,1669,16,16,1678,16,1696],{"id":1664,"className":1665},"install-from-app",[15],[18,1667,1668],{"id":1668},"从桌面应用安装",[23,1670,1671,1672,1675,1676,334],{},"\n    这是最简单的方式。点击托盘图标，打开",[33,1673,1674],{},"管理宠物...","，选择一只宠物并点击",[33,1677,363],{},[1241,1679,70,1680,70,1683,70,1690,70,1693,16],{},[205,1681,1682],{},"桌面应用通过 HTTPS 获取目录。",[205,1684,1685,1686,1689],{},"从 ",[58,1687,1688],{},"zip.openpets.dev"," 下载宠物 ZIP 包。",[205,1691,1692],{},"验证 ZIP 包并将其解压到用户数据目录。",[205,1694,1695],{},"宠物出现在已安装列表中，并可设置为默认宠物。",[23,1697,1698,1699,334],{},"\n    每个平台上已安装宠物的具体存放目录，请参见\n    ",[42,1700,1018],{"to":176},[11,1702,16,1705,16,1709,16,1712,16,1727,16,1730],{"id":1703,"className":1704},"install-from-cli",[15],[18,1706,1708],{"id":1707},"从-cli-安装","从 CLI 安装",[23,1710,1711],{},"\n    如果 OpenPets 桌面应用已在运行，你可以从终端安装宠物：\n  ",[66,1713,70,1715,70,1722,16],{"className":1714},[460],[66,1716,1718,1720],{"className":1717},[464],[466,1719,1283],{},[466,1721,1286],{},[473,1723,1724],{},[58,1725,1726],{},"npx -y @open-pets/cli@latest install \u003Cpet-id>",[23,1728,1729],{},"\n    CLI 通过本地 IPC 与运行中的应用通信，请求其执行安装操作。实际的下载和验证由桌面应用完成；CLI 仅负责转发请求并输出结果。\n  ",[23,1731,1732],{},"\n    如果桌面应用未运行，此命令会输出明确的错误信息并失败。如需在不依赖应用的情况下安装，请使用下方的独立安装程序。\n  ",[11,1734,16,1737,16,1740,16,1747,16,1762,16,1765],{"id":1735,"className":1736},"standalone-installer",[15],[18,1738,1739],{"id":1739},"独立安装程序",[23,1741,1742,1743,1746],{},"\n    在 CI、dotfile 引导，或任何无法确保 OpenPets 桌面应用正在运行的环境中，请使用独立的\n    ",[58,1744,1745],{},"install-pet"," 包：\n  ",[66,1748,70,1750,70,1757,16],{"className":1749},[460],[66,1751,1753,1755],{"className":1752},[464],[466,1754,1283],{},[466,1756,1286],{},[473,1758,1759],{},[58,1760,1761],{},"npx -y install-pet \u003Cpet-id>",[23,1763,1764],{},"\n    独立安装程序优先使用正在运行的应用，应用不可用时则直接下载。直接安装时：\n  ",[202,1766,70,1767,70,1770,70,1773,70,1776,16],{},[205,1768,1769],{},"在用户数据目录下获取每用户锁文件，防止两个安装程序同时运行。",[205,1771,1772],{},"通过 HTTPS 获取目录和宠物 ZIP 包。",[205,1774,1775],{},"写入前验证所有内容——请参见下方安全限制。",[205,1777,1778,1779,1782],{},"原子性地解压到 ",[58,1780,1781],{},"\u003CuserData>/pets/\u003Cpet-id>/"," 并更新 OpenPets 状态文件。",[11,1784,16,1787,16,1790,16,1797,16,1813,16,1828],{"id":1785,"className":1786},"local-codex-pets",[15],[18,1788,998],{"id":1789},"本地-codex-宠物",[23,1791,1792,1793,1796],{},"\n    如果你正在创建自己的宠物，可以将其放入\n    ",[58,1794,1795],{},"~/.codex/pets/"," 目录，桌面应用会自动加载——无需访问目录服务器，无需打包成 ZIP。\n  ",[66,1798,70,1800,70,1808,16],{"className":1799},[460],[66,1801,1803,1806],{"className":1802},[464],[466,1804,1805],{},"目录结构",[466,1807,471],{},[473,1809,1810],{},[58,1811,1812],{},"~/.codex/pets/\u003Cpet-id>/\n├── pet.json\n├── spritesheet.webp\n└── preview.webp   # 可选",[23,1814,1815,1816,1819,1820,1822,1823,1825,1826,334],{},"\n    文件夹名称必须与 ",[58,1817,1818],{},"pet.json"," 中的 ",[58,1821,1629],{}," 字段完全一致。完整的\n    ",[58,1824,1818],{}," 结构和大小限制，请参见 ",[42,1827,166],{"to":165},[23,1829,1830],{},"\n    Codex 宠物用于开发阶段的测试。满意后，你可以将其发布到画廊——提交模板见 OpenPets GitHub 仓库。\n  ",[11,1832,16,1835,16,1838,16,1843,16,1857],{"id":1833,"className":1834},"manage-pets",[15],[18,1836,1837],{"id":1837},"管理已安装的宠物",[23,1839,70,1840,1842],{},[33,1841,348],{},"窗口列出所有已安装的宠物，并支持：\n  ",[202,1844,70,1845,70,1848,70,1851,70,1854,16],{},[205,1846,1847],{},"将某只宠物设置为默认宠物（启动时显示的那只）。",[205,1849,1850],{},"从托盘显示或隐藏默认宠物。",[205,1852,1853],{},"暂停所有宠物（在演示或录屏时很有用）。",[205,1855,1856],{},"卸载不再需要的宠物。",[23,1858,1859],{},"\n    内置宠物无法卸载——它是 OpenPets 在选定的默认宠物缺失或损坏时使用的兜底宠物。\n  ",[11,1861,16,1864,16,1867,16,1870,16,1935],{"id":1862,"className":1863},"safety",[15],[18,1865,1866],{"id":1866},"安全限制",[23,1868,1869],{},"\n    宠物 ZIP 包在写入磁盘前会经过验证。无论通过桌面应用还是独立安装程序安装，验证规则完全相同。\n  ",[66,1871,70,1873,16],{"className":1872},[69],[72,1874,74,1875,74,1885,70],{},[76,1876,78,1877,74],{},[80,1878,1879,1882],{},[83,1880,1881],{},"限制项",[83,1883,1884],{},"数值",[90,1886,78,1887,78,1895,78,1903,78,1911,78,1919,78,1927,74],{},[80,1888,1889,1892],{},[95,1890,1891],{},"目录文件大小",[95,1893,1894],{},"1 MB",[80,1896,1897,1900],{},[95,1898,1899],{},"ZIP 下载大小",[95,1901,1902],{},"50 MB",[80,1904,1905,1908],{},[95,1906,1907],{},"解压后总大小",[95,1909,1910],{},"200 MB",[80,1912,1913,1916],{},[95,1914,1915],{},"每只宠物的文件数量",[95,1917,1918],{},"500",[80,1920,1921,1924],{},[95,1922,1923],{},"单个文件大小",[95,1925,1926],{},"100 MB",[80,1928,1929,1932],{},[95,1930,1931],{},"请求超时",[95,1933,1934],{},"30 秒",[23,1936,1937,1938,1941],{},"\n    除大小限制外，验证器还会拒绝符号链接、路径逃逸宠物目录、不支持的压缩方式、加密条目和大小写冲突的文件名。与保留名称\n    ",[58,1939,1940],{},"builtin"," 相同的宠物 id 也会被拒绝。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":1943},[1944,1945,1946,1947,1948,1949,1950],{"id":1610,"depth":223,"text":1610},{"id":1668,"depth":223,"text":1668},{"id":1707,"depth":223,"text":1708},{"id":1739,"depth":223,"text":1739},{"id":1789,"depth":223,"text":998},{"id":1837,"depth":223,"text":1837},{"id":1866,"depth":223,"text":1866},"浏览 OpenPets 画廊、从应用内或 CLI 安装宠物、管理已安装的宠物，以及在本地开发自己的宠物。",{},"宠物",40,"/zh/docs/pets",{"title":1601,"description":1951},"zh/docs/pets",[1959,1960,1961,1962,1963,1964,1965],{"id":1606,"label":1610},{"id":1664,"label":1668},{"id":1703,"label":1708},{"id":1735,"label":1739},{"id":1785,"label":998},{"id":1833,"label":1837},{"id":1862,"label":1866},"RJt1DZIruh53SKJ2tnQYYm-ADz7lTUJrVhZ1DMVmIM4",{"id":1968,"title":134,"body":1969,"description":2210,"extension":229,"meta":2211,"navTitle":2212,"navigation":231,"order":2213,"path":2214,"seo":2215,"stem":2216,"toc":2217,"__hash__":2224},"docs_zh/zh/docs/ai-assistants.md",{"type":8,"value":1970,"toc":2202},[1971,2040,2096,2114,2130,2170],[11,1972,16,1975,16,1978,16,1981,16,2034],{"id":1973,"className":1974},"overview",[15],[18,1976,1977],{"id":1977},"概述",[23,1979,1980],{},"\n    OpenPets 通过两个层次连接到助手：\n  ",[66,1982,70,1984,16],{"className":1983},[69],[72,1985,74,1986,74,1999,70],{},[76,1987,78,1988,74],{},[80,1989,1990,1993,1996],{},[83,1991,1992],{},"层次",[83,1994,1995],{},"功能说明",[83,1997,1998],{},"是否必需？",[90,2000,78,2001,78,2021,74],{},[80,2002,278,2003,278,2008,278,2018,78],{},[95,2004,2005],{},[33,2006,2007],{},"MCP 服务器",[95,2009,2010,2011,837,2013,488,2015,2017],{},"为助手提供 ",[58,2012,483],{},[58,2014,487],{},[58,2016,491],{}," 工具，使其能够主动驱动宠物。",[95,2019,2020],{},"是——每个集成都会安装。",[80,2022,278,2023,278,2028,278,2031,78],{},[95,2024,2025],{},[33,2026,2027],{},"生命周期钩子",[95,2029,2030],{},"接入助手的生命周期事件，当助手开始思考、编辑文件、运行测试、请求权限或完成任务时，宠物自动做出反应。",[95,2032,2033],{},"否——选装功能，目前仅限 Claude Code。",[23,2035,2036,2037,2039],{},"\n    两个层次都通过相同的本地 IPC 和 ",[42,2038,113],{"to":60}," 中描述的租约生命周期运作。\n  ",[11,2041,16,2044,16,2046,16,2060,16,2086],{"id":2042,"className":2043},"claude-code",[15],[18,2045,35],{"id":2042},[23,2047,2048,2049,2051,2052,2055,2056,2059],{},"\n    打开桌面应用的集成窗口，点击 Claude Code 卡片上的",[33,2050,363],{},"。这会安装用户范围的 MCP\n    服务器，并在 ",[58,2053,2054],{},"~/.claude/openpets.md"," 写入一个小型托管指令文件，通过标记块从\n    ",[58,2057,2058],{},"~/.claude/CLAUDE.md"," 导入。\n  ",[23,2061,2062,2063,2066,2067,837,2070,837,2073,837,2076,837,2079,837,2082,2085],{},"\n    钩子是同一卡片上的独立选装操作。它们会修改 ",[58,2064,2065],{},"~/.claude/settings.json","，为每个 Claude\n    生命周期事件（",[58,2068,2069],{},"UserPromptSubmit",[58,2071,2072],{},"PreToolUse",[58,2074,2075],{},"PermissionRequest",[58,2077,2078],{},"Notification",[58,2080,2081],{},"Stop",[58,2083,2084],{},"StopFailure","）添加 OpenPets 托管命令条目。\n  ",[23,2087,2088,2089,2092,2093,334],{},"\n    关于托管 JSON 的结构、钩子反应映射的工作方式、通过 ",[58,2090,2091],{},"openpets configure"," 进行的项目级配置以及故障排除，请参见专门的\n    ",[42,2094,2095],{"to":518},"Claude Code 集成页面",[11,2097,16,2100,16,2102,16,2105,16,2108],{"id":2098,"className":2099},"opencode",[15],[18,2101,39],{"id":2098},[23,2103,2104],{},"\n    OpenCode 集成会向你的 OpenCode 全局配置添加三项内容：一个 OpenPets MCP 条目、一个 OpenPets 插件引用，以及一个托管指令块。\n  ",[23,2106,2107],{},"\n    OpenCode 插件接入编辑器的事件总线——聊天消息、工具执行事件——并将它们映射为宠物反应，与 Claude 的钩子机制类似。由于插件在 OpenCode 运行时内运行，除了在配置中启用插件外，无需修改任何设置文件。\n  ",[23,2109,2110,2111,334],{},"\n    全局配置与项目配置的区别、JSONC 感知配置写入方式以及托管指令块的结构，请参见\n    ",[42,2112,2113],{"to":525},"OpenCode 集成页面",[11,2115,16,2118,16,2122,16,2127],{"id":2116,"className":2117},"other-mcp-clients",[15],[18,2119,2121],{"id":2120},"其他-mcp-客户端","其他 MCP 客户端",[23,2123,2124,2125,334],{},"\n    任何支持 stdio MCP 服务器的助手都可以使用 OpenPets。将 OpenPets 服务器添加到你的客户端 MCP\n    配置中——具体命令和 JSON 示例见 ",[42,2126,144],{"to":44},[23,2128,2129],{},"\n    Cursor、VS Code（使用 MCP 插件）、Windsurf、Zed 和 Claude Desktop 均以此方式工作。部分客户端在添加 OpenPets 条目后需要重启；若工具未出现，请查阅相应客户端的 MCP 配置说明。\n  ",[11,2131,16,2134,16,2137,16,2143,16,2161],{"id":2132,"className":2133},"pet-routing",[15],[18,2135,2136],{"id":2136},"宠物路由",[23,2138,2139,2140,334],{},"\n    默认情况下，每个助手都将反应和消息发送至 OpenPets 默认宠物——即你在托盘菜单中选定的那只。如果你希望特定助手驱动特定的已安装宠物，请向 MCP 命令传入 ",[58,2141,2142],{},"--pet \u003Cpet-id>",[202,2144,70,2145,70,2152,70,2158,16],{},[205,2146,2147,2148,2151],{},"不传 ",[58,2149,2150],{},"--pet","：所有内容路由至默认宠物。",[205,2153,2154,2155,2157],{},"传入 ",[58,2156,2150],{},"：助手活跃时会打开一个独立的\"代理宠物\"窗口，助手停止时关闭。",[205,2159,2160],{},"若请求的宠物缺失、损坏或无效，OpenPets 将事件路由至默认宠物，并在状态响应中暴露回退原因。",[23,2162,2163,2164,2166,2167,2169],{},"\n    桌面应用集成卡片上的",[33,2165,2136],{},"选择器会自动为你添加 ",[58,2168,2150],{},"。如果你手动配置 MCP 客户端，请自行添加该标志。\n  ",[11,2171,16,2174,16,2177,16,2183,16,2186],{"id":2172,"className":2173},"removing",[15],[18,2175,2176],{"id":2176},"移除集成",[23,2178,2179,2180,2182],{},"\n    打开集成窗口，点击相应卡片上的",[33,2181,2176],{},"。这会从你的助手配置中删除 OpenPets 托管的 MCP 条目和指令文件。\n  ",[23,2184,2185],{},"\n    钩子需要从同一卡片上单独移除，因为它们存储在不同的设置文件中。如果你只是想停止自动反应，仅移除钩子即可，MCP 服务器会继续安装。\n  ",[23,2187,2188,2189,2194,2195,61,2198,2201],{},"\n    对于通过\n    ",[42,2190,2192],{"to":2191},"/docs/cli#configure-command",[58,2193,2091],{},"\n    安装的项目本地配置，请删除或重写项目的 ",[58,2196,2197],{},".claude/settings.local.json",[58,2199,2200],{},".opencode/"," 目录。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":2203},[2204,2205,2206,2207,2208,2209],{"id":1977,"depth":223,"text":1977},{"id":2042,"depth":223,"text":35},{"id":2098,"depth":223,"text":39},{"id":2120,"depth":223,"text":2121},{"id":2136,"depth":223,"text":2136},{"id":2176,"depth":223,"text":2176},"将 Claude Code、OpenCode 及其他支持 MCP 的助手连接到 OpenPets。集成层概述和宠物路由说明。",{},"AI 助手",50,"/zh/docs/ai-assistants",{"title":134,"description":2210},"zh/docs/ai-assistants",[2218,2219,2220,2221,2222,2223],{"id":1973,"label":1977},{"id":2042,"label":35},{"id":2098,"label":39},{"id":2116,"label":2121},{"id":2132,"label":2136},{"id":2172,"label":2176},"FnyoKQn6FbeauR-xakdKr7Qo7cVEunTjpUT7v9tEZ9s",{"id":2226,"title":155,"body":2227,"description":2876,"extension":229,"meta":2877,"navTitle":2878,"navigation":231,"order":2879,"path":2880,"seo":2881,"stem":2882,"toc":2883,"__hash__":2891},"docs_zh/zh/docs/cli.md",{"type":8,"value":2228,"toc":2861},[2229,2373,2422,2660,2720,2770,2817],[11,2230,16,2232,16,2234,16,2239,16,2295,16,2306,16,2309,16,2327,16,2343,16,2363],{"id":1973,"className":2231},[15],[18,2233,1977],{"id":1977},[23,2235,70,2236,2238],{},[58,2237,419],{}," CLI 与桌面应用使用相同的代码，打包为独立的终端工具。它可以做四件事：\n  ",[66,2240,70,2242,16],{"className":2241},[69],[72,2243,74,2244,74,2254,70],{},[76,2245,78,2246,74],{},[80,2247,2248,2251],{},[83,2249,2250],{},"命令",[83,2252,2253],{},"用途",[90,2255,78,2256,78,2266,78,2275,78,2285,74],{},[80,2257,2258,2263],{},[95,2259,2260],{},[58,2261,2262],{},"openpets install \u003Cpet-id>",[95,2264,2265],{},"通过正在运行的桌面应用安装宠物。",[80,2267,2268,2272],{},[95,2269,2270],{},[58,2271,2091],{},[95,2273,2274],{},"为特定项目配置 Claude Code 或 OpenCode。",[80,2276,2277,2282],{},[95,2278,2279],{},[58,2280,2281],{},"openpets mcp",[95,2283,2284],{},"启动 OpenPets MCP 服务器（由集成使用）。",[80,2286,2287,2292],{},[95,2288,2289],{},[58,2290,2291],{},"openpets hook",[95,2293,2294],{},"从 stdin 运行一个 Claude 钩子事件（由集成使用）。",[23,2296,2297,2298,61,2300,2302,2303,2305],{},"\n    通常情况下，你不需要手动运行 ",[58,2299,2281],{},[58,2301,2291],{},"。它们是 Claude Code 和 OpenCode 集成在你点击桌面应用中的",[33,2304,363],{},"时写入助手配置的入口点。\n  ",[804,2307,2308],{"id":2308},"如何调用",[23,2310,2311,2312,2315,2316,2319,2320,2322,2323,2326],{},"\n    CLI 以 ",[58,2313,2314],{},"@open-pets/cli"," 包发布在 npm 上。没有单独的安装程序——桌面应用不会向你的 ",[58,2317,2318],{},"PATH"," 添加 ",[58,2321,419],{}," 可执行文件。请使用 ",[58,2324,2325],{},"npx"," 调用：\n  ",[66,2328,70,2330,70,2338,16],{"className":2329},[460],[66,2331,2333,2336],{"className":2332},[464],[466,2334,2335],{},"运行子命令",[466,2337,1286],{},[473,2339,2340],{},[58,2341,2342],{},"npx -y @open-pets/cli@latest \u003Csubcommand> [...args]",[23,2344,2345,2346,2348,2349,2352,2353,2356,2357,2359,2360,334],{},"\n    如果你希望使用永久的 ",[58,2347,419],{}," 命令，请使用 ",[58,2350,2351],{},"npm install -g @open-pets/cli"," 全局安装该包。下文用法块中的裸 ",[58,2354,2355],{},"openpets ..."," 语法描述的是子命令结构；若未全局安装，请将 ",[58,2358,419],{}," 替换为 ",[58,2361,2362],{},"npx -y @open-pets/cli@latest",[23,2364,2365,2366,61,2369,2372],{},"\n    使用 ",[58,2367,2368],{},"-h",[58,2370,2371],{},"--help"," 运行任意子命令可查看摘要说明。\n  ",[11,2374,16,2377,16,2383,16,2386,16,2401],{"id":2375,"className":2376},"install-command",[15],[18,2378,2380],{"id":2379},"openpets-install",[58,2381,2382],{},"openpets install",[23,2384,2385],{},"\n    通过向正在运行的桌面应用发送请求，从 OpenPets 目录安装宠物。桌面应用负责下载宠物 ZIP 包、验证并将其加入已安装列表。\n  ",[66,2387,70,2389,70,2397,16],{"className":2388},[460],[66,2390,2392,2395],{"className":2391},[464],[466,2393,2394],{},"用法",[466,2396,1286],{},[473,2398,2399],{},[58,2400,2262],{},[202,2402,70,2403,70,2412,70,2419,16],{},[205,2404,2405,2408,2409,2411],{},[58,2406,2407],{},"\u003Cpet-id>"," 必须符合宠物 id 正则表达式（小写字母、数字、连字符、下划线；1–64 个字符；不能为 ",[58,2410,1940],{},"）。",[205,2413,2414,2415,2418],{},"OpenPets 桌面应用必须正在运行。如果应用未运行，安装会失败——请使用独立的 ",[351,2416,1745],{"href":2417},"https://www.npmjs.com/package/install-pet"," 包进行直接下载，无需应用即可安装。",[205,2420,2421],{},"安装请求使用较长的 60 秒响应超时，以适应较大的宠物包下载。",[11,2423,16,2426,16,2431,16,2442,16,2457,16,2460,16,2564,16,2568,16,2575,16,2605,16,2609,16,2625,16,2628,16,2631],{"id":2424,"className":2425},"configure-command",[15],[18,2427,2429],{"id":2428},"openpets-configure",[58,2430,2091],{},[23,2432,2433,2434,2438,2439,2441],{},"\n    为",[2435,2436,2437],"em",{},"特定项目","配置 AI 助手。与桌面应用集成窗口提供的用户范围安装不同：",[58,2440,2091],{},"\n    写入项目本地配置，使设置可以随仓库一起分发。\n  ",[66,2443,70,2445,70,2452,16],{"className":2444},[460],[66,2446,2448,2450],{"className":2447},[464],[466,2449,2394],{},[466,2451,1286],{},[473,2453,2454],{},[58,2455,2456],{},"openpets configure [--agent claude|opencode] [--pet \u003Cid>] [--cwd \u003Cpath>]\n                  [--yes] [--force] [--local-dev]",[804,2458,2459],{"id":2459},"选项",[66,2461,70,2463,16],{"className":2462},[69],[72,2464,74,2465,74,2474,70],{},[76,2466,78,2467,74],{},[80,2468,2469,2472],{},[83,2470,2471],{},"标志",[83,2473,961],{},[90,2475,78,2476,78,2494,78,2504,78,2514,78,2527,78,2540,78,2553,74],{},[80,2477,2478,2483],{},[95,2479,2480],{},[58,2481,2482],{},"--agent \u003Cagent>",[95,2484,2485,2486,61,2489,2491,2492,210],{},"要配置的助手：",[58,2487,2488],{},"claude",[58,2490,2098],{},"。默认为 ",[58,2493,2488],{},[80,2495,2496,2501],{},[95,2497,2498],{},[58,2499,2500],{},"--pet \u003Cid>",[95,2502,2503],{},"目标宠物 id。省略时，CLI 会在交互式终端中提示你从已安装的宠物列表中选择。",[80,2505,2506,2511],{},[95,2507,2508],{},[58,2509,2510],{},"--cwd \u003Cpath>",[95,2512,2513],{},"要配置的项目目录，默认为当前目录。",[80,2515,2516,2524],{},[95,2517,2518,837,2521],{},[58,2519,2520],{},"--yes",[58,2522,2523],{},"-y",[95,2525,2526],{},"适用于脚本；不显示确认提示。",[80,2528,2529,2537],{},[95,2530,2531,837,2534],{},[58,2532,2533],{},"--force",[58,2535,2536],{},"--replace",[95,2538,2539],{},"替换此项目的任何现有 OpenPets 托管条目，而非保留不动。",[80,2541,2542,2547],{},[95,2543,2544],{},[58,2545,2546],{},"--local-dev",[95,2548,2549,2550,2552],{},"使用本地开发命令路径替代发布的 ",[58,2551,2325],{}," 命令。适用于 OpenPets 本身的开发工作。",[80,2554,2555,2561],{},[95,2556,2557,837,2559],{},[58,2558,2368],{},[58,2560,2371],{},[95,2562,2563],{},"显示命令帮助。",[804,2565,2567],{"id":2566},"configure-写入的内容","configure 写入的内容",[23,2569,2570,2571,2574],{},"针对 ",[33,2572,2573],{},"Claude"," 项目：",[202,2576,70,2577,70,2587,70,2594,16],{},[205,2578,2579,2580,2583,2584,2586],{},"通过 ",[58,2581,2582],{},"claude mcp add-json"," 在项目范围内添加一个 ",[58,2585,419],{}," MCP 条目。",[205,2588,2589,2590,2593],{},"在 ",[58,2591,2592],{},"\u003Cproject>/.claude/settings.local.json"," 中为所有 Claude 生命周期事件写入 OpenPets 托管钩子条目。",[205,2595,2596,2597,2600,2601,2604],{},"钩子命令包含 ",[58,2598,2599],{},"--openpets-managed"," 标记和 ",[58,2602,2603],{},"--project-local"," 标志。",[23,2606,2570,2607,2574],{},[33,2608,39],{},[202,2610,70,2611,70,2616,70,2619,16],{},[205,2612,2613,2614,2586],{},"在项目的 OpenCode 配置中写入一个 ",[58,2615,419],{},[205,2617,2618],{},"写入 OpenPets 插件引用。",[205,2620,2621,2622,2624],{},"在项目的 ",[58,2623,2200],{}," 目录下写入托管指令文件。",[23,2626,2627],{},"\n    OpenCode 配置可提交到版本库——你可以将其检入仓库，团队成员安装桌面应用后即可自动在该项目中使用 OpenPets。\n  ",[804,2629,2630],{"id":2630},"安全",[202,2632,70,2633,70,2636,70,2645,70,2650,16],{},[205,2634,2635],{},"项目目录不能是符号链接，必须是真实目录。",[205,2637,2638,2639,61,2642,2644],{},"如果 ",[58,2640,2641],{},".claude",[58,2643,2197],{}," 已存在，它们不能是符号链接，且必须位于项目根目录内。",[205,2646,2647,2648,210],{},"设置文件以原子方式写入（临时文件加重命名），权限为 ",[58,2649,797],{},[205,2651,2652,2653,2655,2656,2659],{},"Claude 必须在 ",[58,2654,2318],{}," 上——CLI 在执行任何操作前会调用 ",[58,2657,2658],{},"claude --version"," 进行检查。",[11,2661,16,2664,16,2669,16,2676,16,2691,16,2715],{"id":2662,"className":2663},"mcp-command",[15],[18,2665,2667],{"id":2666},"openpets-mcp",[58,2668,2281],{},[23,2670,2671,2672,2675],{},"\n    启动 OpenPets MCP 服务器。CLI 将 ",[58,2673,2674],{},"@open-pets/mcp"," 入口作为子进程启动并转发 stdio，使 MCP 客户端（Claude Code、Cursor 等）能够通过 stdin 和 stdout 直接与其通信。\n  ",[66,2677,70,2679,70,2686,16],{"className":2678},[460],[66,2680,2682,2684],{"className":2681},[464],[466,2683,2394],{},[466,2685,1286],{},[473,2687,2688],{},[58,2689,2690],{},"openpets mcp [--pet \u003Cid>]",[202,2692,70,2693,70,2698,70,2705,16],{},[205,2694,2695,2697],{},[58,2696,2500],{}," 指向特定的已安装宠物。不传时，事件发送至默认宠物。",[205,2699,2700,2701,2704],{},"通常不需要手动运行此命令。集成配置会将类似 ",[58,2702,2703],{},"openpets mcp --pet \u003Cid>"," 的命令写入你助手的 MCP 配置。",[205,2706,2707,2708,61,2711,2714],{},"服务器在启动时获取租约，每 5 秒发送一次心跳，并在收到 ",[58,2709,2710],{},"SIGINT",[58,2712,2713],{},"SIGTERM"," 时释放租约。",[23,2716,2717,2718,334],{},"\n    完整的工具接口、结构定义以及与其他 MCP 客户端的集成，请参见 ",[42,2719,144],{"to":44},[11,2721,16,2724,16,2729,16,2732,16,2747],{"id":2722,"className":2723},"hook-command",[15],[18,2725,2727],{"id":2726},"openpets-hook",[58,2728,2291],{},[23,2730,2731],{},"\n    运行单个 Claude Code 钩子事件。Claude 将一个 JSON 事件通过 stdin 传入并等待命令退出；OpenPets 读取事件，决定反应或简短消息，然后静默退出。\n  ",[66,2733,70,2735,70,2742,16],{"className":2734},[460],[66,2736,2738,2740],{"className":2737},[464],[466,2739,2394],{},[466,2741,1286],{},[473,2743,2744],{},[58,2745,2746],{},"openpets hook --openpets-managed [--project-local] [--pet \u003Cid>]",[202,2748,70,2749,70,2754,70,2762,70,2767,16],{},[205,2750,2751,2753],{},[58,2752,2599],{}," 是 CLI 在卸载或替换钩子时查找的标记。OpenPets 的每个钩子条目都必须包含此标记。",[205,2755,2756,2758,2759,2761],{},[58,2757,2603],{}," 表示此钩子安装在项目范围（",[58,2760,2197],{},"）。项目本地钩子单独跟踪，以便用户范围钩子跳过项目已处理的事件。",[205,2763,2764,2766],{},[58,2765,2500],{}," 指向特定宠物。",[205,2768,2769],{},"钩子命令从不向 stdout 输出内容（以免 Claude 将其误作上下文），并始终以退出码 0 退出，除非 OpenPets 本身配置错误。如果桌面应用已关闭，钩子会成功且静默地退出。",[11,2771,16,2774,16,2777,16,2812],{"id":2772,"className":2773},"exit-codes",[15],[18,2775,2776],{"id":2776},"退出码",[66,2778,70,2780,16],{"className":2779},[69],[72,2781,74,2782,74,2791,70],{},[76,2783,78,2784,74],{},[80,2785,2786,2788],{},[83,2787,2776],{},[83,2789,2790],{},"含义",[90,2792,78,2793,78,2803,74],{},[80,2794,2795,2800],{},[95,2796,2797],{},[58,2798,2799],{},"0",[95,2801,2802],{},"成功。",[80,2804,2805,2809],{},[95,2806,2807],{},[58,2808,814],{},[95,2810,2811],{},"用法错误、配置错误或意外失败。CLI 会将错误信息输出到 stderr。",[23,2813,70,2814,2816],{},[58,2815,2291],{}," 是有意设计的例外：即使桌面应用不可用，它也会尽力以 0 退出，确保 Claude 会话不会因 OpenPets 问题而被阻塞。\n  ",[11,2818,16,2821,16,2824],{"id":2819,"className":2820},"env-vars",[15],[18,2822,2823],{"id":2823},"环境变量",[66,2825,70,2827,16],{"className":2826},[69],[72,2828,74,2829,74,2839,70],{},[76,2830,78,2831,74],{},[80,2832,2833,2836],{},[83,2834,2835],{},"变量",[83,2837,2838],{},"效果",[90,2840,78,2841,78,2851,74],{},[80,2842,278,2843,278,2848,78],{},[95,2844,2845],{},[58,2846,2847],{},"OPENPETS_DEBUG=1",[95,2849,2850],{},"启用钩子命令的详细调试日志，用于诊断钩子为何无法到达宠物。",[80,2852,278,2853,278,2858,78],{},[95,2854,2855],{},[58,2856,2857],{},"OPENPETS_DISCOVERY_FILE",[95,2859,2860],{},"覆盖默认的发现文件路径，适用于测试或以非标准运行时目录运行 OpenPets 的场景。",{"title":222,"searchDepth":223,"depth":223,"links":2862},[2863,2866,2867,2872,2873,2874,2875],{"id":1977,"depth":223,"text":1977,"children":2864},[2865],{"id":2308,"depth":1174,"text":2308},{"id":2379,"depth":223,"text":2382},{"id":2428,"depth":223,"text":2091,"children":2868},[2869,2870,2871],{"id":2459,"depth":1174,"text":2459},{"id":2566,"depth":1174,"text":2567},{"id":2630,"depth":1174,"text":2630},{"id":2666,"depth":223,"text":2281},{"id":2726,"depth":223,"text":2291},{"id":2776,"depth":223,"text":2776},{"id":2823,"depth":223,"text":2823},"openpets CLI 的全部命令、标志和退出码——安装宠物、配置项目、运行 MCP 服务器以及处理 Claude 钩子。",{},"CLI",60,"/zh/docs/cli",{"title":155,"description":2876},"zh/docs/cli",[2884,2885,2886,2887,2888,2889,2890],{"id":1973,"label":1977},{"id":2375,"label":2382},{"id":2424,"label":2091},{"id":2662,"label":2281},{"id":2722,"label":2291},{"id":2772,"label":2776},{"id":2819,"label":2823},"7q5dhJvsBrmUIarni0sjexAX-C0-5NmczvJWr1r2Svk",{"id":2893,"title":144,"body":2894,"description":3609,"extension":229,"meta":3610,"navTitle":3611,"navigation":231,"order":3612,"path":3613,"seo":3614,"stem":3615,"toc":3616,"__hash__":3627},"docs_zh/zh/docs/mcp.md",{"type":8,"value":2895,"toc":3581},[2896,2923,2961,3078,3155,3266,3358,3433,3479,3511],[11,2897,16,2899,16,2901,16,2904,16,2907],{"id":1973,"className":2898},[15],[18,2900,1977],{"id":1977},[23,2902,2903],{},"\n    OpenPets 自带一个 Model Context Protocol（MCP）服务器，允许任何支持 MCP\n    的助手驱动你的桌面宠物。它是一个小型、专用的接口：检查状态、切换宠物反应、显示简短消息，仅此而已。\n  ",[23,2905,2906],{},"\n    服务器作为本地 stdio 进程运行。你的 MCP 客户端启动它，通过 stdin/stdout 传输 JSON-RPC，OpenPets 再通过本地 IPC 将请求转发给桌面应用。\n  ",[66,2908,70,2910,70,2918,16],{"className":2909},[460],[66,2911,2913,2916],{"className":2912},[464],[466,2914,2915],{},"运行时路径",[466,2917,471],{},[473,2919,2920],{},[58,2921,2922],{},"MCP client (Claude, Cursor, Zed, ...)\n  -> stdio\n  -> @open-pets/mcp server\n  -> @open-pets/client (token-stamped local IPC)\n  -> OpenPets desktop app\n  -> default pet or leased agent pet",[11,2924,16,2927,16,2930,16,2933,16,2936,16,2952],{"id":2925,"className":2926},"quick-install",[15],[18,2928,2929],{"id":2929},"快速安装",[23,2931,2932],{},"\n    如果你的助手有专用的 OpenPets 集成卡片（目前为 Claude Code 或 OpenCode），请直接使用——它会为你的安装方式写入正确的命令并处理托管指令。否则，请手动将 OpenPets 作为 stdio MCP 服务器添加到你的客户端。\n  ",[23,2934,2935],{},"\n    针对 Claude Code：\n  ",[66,2937,70,2939,70,2947,16],{"className":2938},[460],[66,2940,2942,2945],{"className":2941},[464],[466,2943,2944],{},"Claude MCP（用户范围）",[466,2946,1286],{},[473,2948,2949],{},[58,2950,2951],{},"claude mcp add --scope user openpets -- npx -y @open-pets/mcp@latest",[23,2953,2954,2955,2958,2959,334],{},"\n    如需指向特定已安装的宠物，请在 ",[58,2956,2957],{},"@open-pets/mcp@latest"," 后添加 ",[58,2960,2142],{},[11,2962,16,2965,16,2968,16,2974,16,2977,16,2992,16,2995,16,2998,16,3014,16,3017,16,3075],{"id":2963,"className":2964},"server-command",[15],[18,2966,2967],{"id":2967},"服务器命令",[23,2969,2970,2971,2973],{},"\n    服务器二进制文件以 ",[58,2972,2674],{}," 名称发布在 npm 上，同时也捆绑在桌面应用内部。根据你使用的是发布包还是 OpenPets 版本中的捆绑包，命令形式有所不同。\n  ",[804,2975,2976],{"id":2976},"发布包",[66,2978,70,2980,70,2987,16],{"className":2979},[460],[66,2981,2983,2985],{"className":2982},[464],[466,2984,2250],{},[466,2986,1286],{},[473,2988,2989],{},[58,2990,2991],{},"npx -y @open-pets/mcp@latest [--pet \u003Cpet-id>]",[804,2993,2994],{"id":2994},"桌面应用内的捆绑包",[23,2996,2997],{},"\n    OpenPets 集成窗口会写入一个基于路径的命令，指向已安装的应用包内部，因此安装后无需访问网络即可使用。在 macOS 上命令如下：\n  ",[66,2999,70,3001,70,3009,16],{"className":3000},[460],[66,3002,3004,3007],{"className":3003},[464],[466,3005,3006],{},"macOS 捆绑命令",[466,3008,1286],{},[473,3010,3011],{},[58,3012,3013],{},"node /Applications/OpenPets.app/Contents/Resources/app.asar.unpacked/node_modules/@open-pets/mcp/dist/index.js",[804,3015,3016],{"id":3016},"参数标志",[66,3018,70,3020,16],{"className":3019},[69],[72,3021,74,3022,74,3030,70],{},[76,3023,78,3024,74],{},[80,3025,3026,3028],{},[83,3027,2471],{},[83,3029,2790],{},[90,3031,78,3032,78,3041,78,3051,78,3062,74],{},[80,3033,3034,3038],{},[95,3035,3036],{},[58,3037,2142],{},[95,3039,3040],{},"为此 MCP 进程请求一只特定的已安装宠物。找不到时回退到默认宠物。",[80,3042,3043,3048],{},[95,3044,3045],{},[58,3046,3047],{},"--pet=\u003Cpet-id>",[95,3049,3050],{},"同上，使用等号形式。",[80,3052,3053,3059],{},[95,3054,3055,837,3057],{},[58,3056,2371],{},[58,3058,2368],{},[95,3060,3061],{},"显示帮助并退出。",[80,3063,3064,3072],{},[95,3065,3066,837,3069],{},[58,3067,3068],{},"--version",[58,3070,3071],{},"-v",[95,3073,3074],{},"输出包版本并退出。",[23,3076,3077],{},"\n    宠物 id 限制为 128 字节 UTF-8，不能包含控制字符、斜杠或反斜杠。id 还必须符合标准宠物 id 正则表达式（小写字母、数字、连字符、下划线）。\n  ",[11,3079,16,3082,16,3085,16,3091,16,3093,16,3110,16,3114,16,3130,16,3133,16,3139],{"id":3080,"className":3081},"client-config-examples",[15],[18,3083,3084],{"id":3084},"客户端配置示例",[23,3086,3087,3088,3090],{},"\n    以下 JSON 片段展示了几种常见客户端的 OpenPets MCP 条目。将 ",[58,3089,2407],{},"\n    替换为你想要的宠物，或省略该标志以使用默认宠物。\n  ",[804,3092,35],{"id":2042},[66,3094,70,3096,70,3105,16],{"className":3095},[460],[66,3097,3099,3102],{"className":3098},[464],[466,3100,3101],{},"~/.claude/mcp.json（节选）",[466,3103,3104],{},"json",[473,3106,3107],{},[58,3108,3109],{},"{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets/mcp\", \"--pet\", \"\u003Cpet-id>\"]\n    }\n  }\n}",[804,3111,3113],{"id":3112},"cursorwindsurf通用-stdio-mcp","Cursor、Windsurf、通用 stdio MCP",[66,3115,70,3117,70,3125,16],{"className":3116},[460],[66,3118,3120,3123],{"className":3119},[464],[466,3121,3122],{},"mcp.json",[466,3124,3104],{},[473,3126,3127],{},[58,3128,3129],{},"{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets/mcp\"]\n    }\n  }\n}",[804,3131,3132],{"id":3132},"捆绑应用路径",[23,3134,3135,3136,3138],{},"\n    如需跳过 ",[58,3137,2325],{},"，直接运行已安装 OpenPets 桌面应用中的 MCP 服务器，请使用此方式。\n  ",[66,3140,70,3142,70,3150,16],{"className":3141},[460],[66,3143,3145,3148],{"className":3144},[464],[466,3146,3147],{},"mcp.json（捆绑）",[466,3149,3104],{},[473,3151,3152],{},[58,3153,3154],{},"{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\n        \"/Applications/OpenPets.app/Contents/Resources/app.asar.unpacked/node_modules/@open-pets/mcp/dist/index.js\"\n      ]\n    }\n  }\n}",[11,3156,16,3159,16,3162,16,3165,16,3218,16,3221,16,3236,16,3251],{"id":3157,"className":3158},"tools",[15],[18,3160,3161],{"id":3161},"工具",[23,3163,3164],{},"\n    服务器注册了三个工具。输入结构在服务端通过 zod 进行强制校验；无效输入会返回工具错误，不会联系桌面应用。\n  ",[66,3166,70,3168,16],{"className":3167},[69],[72,3169,74,3170,74,3181,70],{},[76,3171,78,3172,74],{},[80,3173,3174,3176,3178],{},[83,3175,3161],{},[83,3177,2253],{},[83,3179,3180],{},"注解",[90,3182,78,3183,78,3195,78,3207,74],{},[80,3184,3185,3189,3192],{},[95,3186,3187],{},[58,3188,483],{},[95,3190,3191],{},"检查 OpenPets 是否可访问、当前目标宠物以及租约是否健康。",[95,3193,3194],{},"只读，幂等",[80,3196,3197,3201,3204],{},[95,3198,3199],{},[58,3200,487],{},[95,3202,3203],{},"为目标宠物设置一个与编程相关的短暂反应。",[95,3205,3206],{},"有副作用，非幂等",[80,3208,3209,3213,3216],{},[95,3210,3211],{},[58,3212,491],{},[95,3214,3215],{},"在目标宠物上显示一条简短的安全消息（可附带反应）。",[95,3217,3206],{},[804,3219,3220],{"id":3220},"输入结构",[66,3222,70,3224,70,3231,16],{"className":3223},[460],[66,3225,3227,3229],{"className":3226},[464],[466,3228,483],{},[466,3230,3104],{},[473,3232,3233],{},[58,3234,3235],{},"{}",[66,3237,70,3239,70,3246,16],{"className":3238},[460],[66,3240,3242,3244],{"className":3241},[464],[466,3243,487],{},[466,3245,3104],{},[473,3247,3248],{},[58,3249,3250],{},"{\n  \"reaction\": \"thinking\"\n}",[66,3252,70,3254,70,3261,16],{"className":3253},[460],[66,3255,3257,3259],{"className":3256},[464],[466,3258,491],{},[466,3260,3104],{},[473,3262,3263],{},[58,3264,3265],{},"{\n  \"message\": \"Building the pet manager\",\n  \"reaction\": \"working\"\n}",[11,3267,16,3270,16,3273,16,3302,16,3308,16,3355],{"id":3268,"className":3269},"reactions-and-speech",[15],[18,3271,3272],{"id":3272},"反应与语音",[23,3274,3275,3276,3279,3280,837,3282,847,3284,837,3286,837,3288,837,3290,837,3292,837,3294,847,3296,837,3298,488,3300,334],{},"\n    反应从固定列表中选取。完整列表见\n    ",[42,3277,1026],{"to":3278},"/docs/concepts#reactions","；允许的值为 ",[58,3281,1058],{},[58,3283,1068],{},[58,3285,1078],{},[58,3287,1088],{},[58,3289,1098],{},[58,3291,1108],{},[58,3293,1118],{},[58,3295,1128],{},[58,3297,1138],{},[58,3299,1148],{},[58,3301,1158],{},[23,3303,3304,3305,3307],{},"\n    语音消息须简短。服务器对每次 ",[58,3306,491],{}," 调用强制执行以下规则：\n  ",[202,3309,70,3310,70,3313,70,3316,70,3332,70,3339,16],{},[205,3311,3312],{},"去除首尾空格后，长度在 1 到 140 个字符之间。",[205,3314,3315],{},"单行——回车和换行符会被拒绝。",[205,3317,3318,3319,3322,3323,837,3326,837,3329,2411],{},"不含代码类内容（反引号、",[58,3320,3321],{},"\u003Cscript","、函数定义、JS 关键字如 ",[58,3324,3325],{},"class",[58,3327,3328],{},"import",[58,3330,3331],{},"const",[205,3333,3334,3335,3338],{},"不含 URL 或文件路径（HTTP URL、",[58,3336,3337],{},"www.","、斜杠路径、Windows 盘符）。",[205,3340,3341,3342,837,3345,837,3348,837,3351,3354],{},"不含密钥类文本（",[58,3343,3344],{},"api_key",[58,3346,3347],{},"secret",[58,3349,3350],{},"token",[58,3352,3353],{},"password","、PEM 标头）。",[23,3356,3357],{},"\n    拒绝原因以纯文本工具错误的形式返回。未通过验证的内容永远不会到达宠物。\n  ",[11,3359,16,3362,16,3365,16,3368],{"id":3360,"className":3361},"validation-and-safety",[15],[18,3363,3364],{"id":3364},"验证与安全",[23,3366,3367],{},"\n    MCP 服务器被设计为一个无害的可见状态通道。它有意无法读取你的编辑器状态、项目文件或助手的对话记录。\n  ",[66,3369,70,3371,16],{"className":3370},[69],[72,3372,74,3373,74,3383,70],{},[76,3374,78,3375,74],{},[80,3376,3377,3380],{},[83,3378,3379],{},"保护措施",[83,3381,3382],{},"工作方式",[90,3384,78,3385,78,3396,78,3409,78,3417,78,3425,74],{},[80,3386,278,3387,278,3390,78],{},[95,3388,3389],{},"服务器指令",[95,3391,3392,3393,3395],{},"MCP 服务器告知助手仅将 ",[58,3394,491],{}," 用于面向用户的简短状态消息。",[80,3397,278,3398,278,3401,78],{},[95,3399,3400],{},"结构校验",[95,3402,3403,3404,488,3406,3408],{},"每个 ",[58,3405,487],{},[58,3407,491],{}," 输入在离开服务器前均通过 zod 验证。",[80,3410,278,3411,278,3414,78],{},[95,3412,3413],{},"语音验证",[95,3415,3416],{},"看起来像代码、URL、路径或密钥的消息在到达桌面应用前即被拒绝。",[80,3418,278,3419,278,3422,78],{},[95,3420,3421],{},"错误净化",[95,3423,3424],{},"底层错误信息（IPC 路径、套接字名称、令牌、系统错误码）会从工具错误响应中剥离。MCP 客户端看到的是简短的\"OpenPets 桌面应用或本地 IPC 不可用\"消息，而非内部细节。",[80,3426,278,3427,278,3430,78],{},[95,3428,3429],{},"无网络访问",[95,3431,3432],{},"MCP 服务器本身只通过本地套接字与桌面应用通信，从不访问网络。",[11,3434,16,3437,16,3440,16,3447,16,3472],{"id":3435,"className":3436},"pet-targeting-and-leases",[15],[18,3438,3439],{"id":3439},"宠物指向与租约",[23,3441,3442,3443,3446],{},"\n    宠物指向通过租约实现。底层生命周期请参见\n    ",[42,3444,635],{"to":3445},"/docs/concepts#leases-and-routing","。在 MCP 服务器内部，其工作方式如下：\n  ",[1241,3448,70,3449,70,3455,70,3458,70,3461,70,3464,16],{},[205,3450,3451,3452,3454],{},"服务器在启动时获取租约，将可选的 ",[58,3453,2500],{}," 作为请求的宠物传入。",[205,3456,3457],{},"桌面应用选定实际宠物——若请求的宠物已安装且可用则使用该宠物，否则使用默认宠物并附上回退原因。",[205,3459,3460],{},"每个反应和消息都包含租约 id，因此即使默认宠物也可见，事件仍会路由到租约对应的宠物。",[205,3462,3463],{},"服务器每 5 秒发送一次心跳；若心跳失败，租约被标记为降级，工具调用会返回明确的\"租约不可用\"错误。",[205,3465,3466,3467,61,3469,3471],{},"收到 ",[58,3468,2710],{},[58,3470,2713],{}," 时，服务器在关闭前释放租约。",[23,3473,3474,3475,3478],{},"\n    如果请求的宠物缺失、损坏或无效，租约仍会被授予，但指向的是默认宠物。结构化状态响应通过 ",[58,3476,3477],{},"fallbackReason","\n    暴露这一情况，以便谨慎的助手能够告知用户。\n  ",[11,3480,16,3483,16,3487,16,3493,16,3496],{"id":3481,"className":3482},"ipc-discovery",[15],[18,3484,3486],{"id":3485},"ipc-发现","IPC 发现",[23,3488,3489,3490,334],{},"\n    MCP 服务器使用标准的 OpenPets 发现文件来定位桌面应用。文件格式和各平台路径请参见\n    ",[42,3491,734],{"to":3492},"/docs/concepts#local-ipc",[23,3494,3495],{},"\n    在非常规环境中运行 MCP 服务器时，请注意以下两点：\n  ",[202,3497,70,3498,70,3505,16],{},[205,3499,3500,3501,3504],{},"发现文件的 ",[58,3502,3503],{},"platform"," 字段必须与 MCP 进程的平台一致。从 Linux VM 中使用 macOS 构建的 MCP 服务器连接 macOS 构建的桌面应用，发现验证会失败。",[205,3506,3507,3508,3510],{},"设置 ",[58,3509,2857],{}," 环境变量可覆盖发现路径——在 OpenPets 桌面应用以不同用户身份运行，或进行脚本化测试时很有用。",[11,3512,16,3515,16,3517,16,3521,16,3532,16,3536,16,3544,16,3548,16,3562,16,3568,16,3576],{"id":3513,"className":3514},"troubleshooting",[15],[18,3516,193],{"id":193},[804,3518,3520],{"id":3519},"mcp-服务器已启动但每个工具都返回openpets-不可用","MCP 服务器已启动，但每个工具都返回\"OpenPets 不可用\"",[202,3522,70,3523,70,3526,70,3529,16],{},[205,3524,3525],{},"确认 OpenPets 桌面应用正在运行。",[205,3527,3528],{},"检查发现文件是否存在于你平台对应的预期路径。",[205,3530,3531],{},"如果你重启了桌面应用，发现令牌已轮换。请同时重启 MCP 客户端以获取新的租约。",[804,3533,3535],{"id":3534},"工具返回openpets-租约不可用","工具返回\"OpenPets 租约不可用\"",[202,3537,70,3538,70,3541,16],{},[205,3539,3540],{},"启动时的租约获取失败或已过期。最常见的原因是 MCP 服务器启动时桌面应用未运行。",[205,3542,3543],{},"重启 MCP 客户端，服务器会在启动时重新尝试获取租约。",[804,3545,3547],{"id":3546},"调用成功但宠物没有切换反应","调用\"成功\"但宠物没有切换反应",[202,3549,70,3550,70,3553,16],{},[205,3551,3552],{},"检查默认宠物是否从托盘菜单中被暂停。暂停的宠物会静默接受反应。",[205,3554,3555,3556,3558,3559,3561],{},"如果你传入了 ",[58,3557,2500],{},"，而结构化状态显示有 ",[58,3560,3477],{},"，说明请求的宠物缺失或损坏——请重新安装。",[804,3563,3565,3567],{"id":3564},"openpets_say-消息被拒绝",[58,3566,491],{}," 消息被拒绝",[202,3569,70,3570,70,3573,16],{},[205,3571,3572],{},"出于安全原因，验证非常严格。请移除看起来像代码的内容、URL、路径或密钥类词语后重试。",[205,3574,3575],{},"如果你正在通过宠物发送堆栈跟踪、错误日志或文件路径，请不要这样做，使用单独的渠道传达这些信息。",[23,3577,3578,3579,334],{},"\n    非 MCP 路径特有的更广泛问题，请参见 ",[42,3580,193],{"to":192},{"title":222,"searchDepth":223,"depth":223,"links":3582},[3583,3584,3585,3590,3595,3598,3599,3600,3601,3602],{"id":1977,"depth":223,"text":1977},{"id":2929,"depth":223,"text":2929},{"id":2967,"depth":223,"text":2967,"children":3586},[3587,3588,3589],{"id":2976,"depth":1174,"text":2976},{"id":2994,"depth":1174,"text":2994},{"id":3016,"depth":1174,"text":3016},{"id":3084,"depth":223,"text":3084,"children":3591},[3592,3593,3594],{"id":2042,"depth":1174,"text":35},{"id":3112,"depth":1174,"text":3113},{"id":3132,"depth":1174,"text":3132},{"id":3161,"depth":223,"text":3161,"children":3596},[3597],{"id":3220,"depth":1174,"text":3220},{"id":3272,"depth":223,"text":3272},{"id":3364,"depth":223,"text":3364},{"id":3439,"depth":223,"text":3439},{"id":3485,"depth":223,"text":3486},{"id":193,"depth":223,"text":193,"children":3603},[3604,3605,3606,3607],{"id":3519,"depth":1174,"text":3520},{"id":3534,"depth":1174,"text":3535},{"id":3546,"depth":1174,"text":3547},{"id":3564,"depth":1174,"text":3608},"openpets_say 消息被拒绝","如何将任何支持 MCP 的助手连接到 OpenPets——服务器命令、工具、结构定义、安全规则、宠物指向以及故障排除。",{},"MCP",70,"/zh/docs/mcp",{"title":144,"description":3609},"zh/docs/mcp",[3617,3618,3619,3620,3621,3622,3623,3624,3625,3626],{"id":1973,"label":1977},{"id":2925,"label":2929},{"id":2963,"label":2967},{"id":3080,"label":3084},{"id":3157,"label":3161},{"id":3268,"label":3272},{"id":3360,"label":3364},{"id":3435,"label":3439},{"id":3481,"label":3486},{"id":3513,"label":193},"KBZlK0w5kmZ6Z8H2bFLWvX_oiqYL_tiOb4TyNlrbMV0",{"id":3629,"title":166,"body":3630,"description":3969,"extension":229,"meta":3970,"navTitle":3971,"navigation":231,"order":3972,"path":3973,"seo":3974,"stem":3975,"toc":3976,"__hash__":3983},"docs_zh/zh/docs/pet-format.md",{"type":8,"value":3631,"toc":3957},[3632,3667,3765,3790,3859,3942],[11,3633,16,3636,16,3639,16,3645,16,3660],{"id":3634,"className":3635},"layout",[15],[18,3637,3638],{"id":3638},"包结构",[23,3640,3641,3642,3644],{},"\n    一只宠物是一个包含元数据文件和精灵图的小型文件夹。在发布到画廊时，文件夹会被打包成 ZIP 并托管在\n    ",[58,3643,1688],{}," 上。\n  ",[66,3646,70,3648,70,3655,16],{"className":3647},[460],[66,3649,3651,3653],{"className":3650},[464],[466,3652,1805],{},[466,3654,471],{},[473,3656,3657],{},[58,3658,3659],{},"\u003Cpet-id>/\n├── pet.json\n├── spritesheet.webp\n└── preview.webp    # 可选，用作缩略图",[23,3661,1815,3662,1819,3664,3666],{},[58,3663,1818],{},[58,3665,1629],{}," 完全一致。ZIP 内部没有特殊的\"根目录\"——条目直接位于归档的顶层。\n  ",[11,3668,16,3671,16,3676,16,3679,16,3694],{"id":3669,"className":3670},"pet-json",[15],[18,3672,3674],{"id":3673},"petjson",[58,3675,1818],{},[23,3677,3678],{},"\n    描述宠物的元数据文件。除非标注为可选，否则所有字段均为必填。\n  ",[66,3680,70,3682,70,3689,16],{"className":3681},[460],[66,3683,3685,3687],{"className":3684},[464],[466,3686,1818],{},[466,3688,3104],{},[473,3690,3691],{},[58,3692,3693],{},"{\n  \"id\": \"my-pet\",\n  \"displayName\": \"My Pet\",\n  \"description\": \"A friendly companion that loves test suites.\",\n  \"spritesheetPath\": \"spritesheet.webp\"\n}",[66,3695,70,3697,16],{"className":3696},[69],[72,3698,74,3699,74,3711,70],{},[76,3700,78,3701,74],{},[80,3702,3703,3706,3708],{},[83,3704,3705],{},"字段",[83,3707,575],{},[83,3709,3710],{},"约束条件",[90,3712,78,3713,78,3728,78,3739,78,3750,74],{},[80,3714,278,3715,278,3719,278,3722,78],{},[95,3716,3717],{},[58,3718,1629],{},[95,3720,3721],{},"string",[95,3723,3724,3725,3727],{},"小写字母、数字、连字符、下划线。必须以字母或数字开头。1–64 个字符。不能为 ",[58,3726,1940],{},"。必须与文件夹名称一致。",[80,3729,278,3730,278,3734,278,3736,78],{},[95,3731,3732],{},[58,3733,1635],{},[95,3735,3721],{},[95,3737,3738],{},"去除首尾空格后非空。最多 80 个字符。",[80,3740,278,3741,278,3745,278,3747,78],{},[95,3742,3743],{},[58,3744,1641],{},[95,3746,3721],{},[95,3748,3749],{},"去除首尾空格后非空。最多 500 个字符。",[80,3751,278,3752,278,3757,278,3759,78],{},[95,3753,3754],{},[58,3755,3756],{},"spritesheetPath",[95,3758,3721],{},[95,3760,3761,3762,210],{},"必须为字符串字面量 ",[58,3763,3764],{},"\"spritesheet.webp\"",[11,3766,16,3769,16,3772,16,3778,16,3787],{"id":3767,"className":3768},"spritesheet",[15],[18,3770,3771],{"id":3771},"精灵图",[23,3773,3774,3775,3777],{},"\n    精灵图是一张单一的 WebP 图像，文件名由 ",[58,3776,3756],{}," 指定。它包含你的宠物支持的所有反应的动画帧。\n  ",[23,3779,3780,3781,3783,3784,334],{},"\n    宠物不必实现所有反应。精灵图中没有对应帧的反应会回退到 ",[58,3782,1058],{},"。完整的反应列表见\n    ",[42,3785,3786],{"to":3278},"反应列表",[23,3788,3789],{},"\n    可以参考现有画廊宠物（或 OpenPets 自带的内置宠物）的源码，了解精灵图布局示例。没有强制的单元格尺寸要求——桌面渲染器从宠物的精灵图元数据中读取帧坐标。\n  ",[11,3791,16,3794,16,3797,16,3800,16,3804,16,3821,16,3824,16,3848,16,3851],{"id":3792,"className":3793},"validation",[15],[18,3795,3796],{"id":3796},"验证规则",[23,3798,3799],{},"\n    OpenPets 在将每只宠物写入磁盘前都会进行验证。部分检查针对 ZIP 文件整体；部分检查针对内部的每个条目。\n  ",[804,3801,3803],{"id":3802},"zip-级别限制","ZIP 级别限制",[202,3805,70,3806,70,3809,70,3812,70,3815,70,3818,16],{},[205,3807,3808],{},"下载的 ZIP 不得超过 50 MB。",[205,3810,3811],{},"解压后的总大小不得超过 200 MB。",[205,3813,3814],{},"条目数量不得超过 500 个。",[205,3816,3817],{},"单个文件大小不得超过 100 MB。",[205,3819,3820],{},"开始解压前会验证 ZIP 魔数字节。",[804,3822,3823],{"id":3823},"条目级别规则",[202,3825,70,3826,70,3833,70,3836,70,3845,16],{},[205,3827,3828,3829,3832],{},"路径必须保持在宠物目录内——不允许 ",[58,3830,3831],{},".."," 路径遍历。",[205,3834,3835],{},"不允许符号链接、加密条目和不支持的压缩方式。",[205,3837,3838,3839,488,3842,2411],{},"大小写冲突会被拒绝（例如宠物包中不能同时存在 ",[58,3840,3841],{},"image.png",[58,3843,3844],{},"Image.png",[205,3846,3847],{},"条目的 Unix 模式必须是有效的文件或目录模式。",[804,3849,3850],{"id":3850},"解压后的必需文件",[23,3852,3853,3854,488,3856,3858],{},"\n    宠物包必须包含 ",[58,3855,1818],{},[58,3857,3756],{}," 中命名的文件。如果缺少其中任一，安装将被拒绝，不会向已安装宠物目录写入任何内容。\n  ",[11,3860,16,3863,16,3867,16,3873,16,3876,16,3932],{"id":3861,"className":3862},"codex-pets",[15],[18,3864,3866],{"id":3865},"codex本地开发宠物","Codex（本地开发）宠物",[23,3868,3869,3870,3872],{},"\n    开发阶段无需将宠物打包为 ZIP。将文件夹放入 ",[58,3871,1795],{},"，桌面应用会实时导入。\n  ",[23,3874,3875],{},"\n    Codex 宠物的限制与 ZIP 宠物略有不同，因为它们以解压后的形式存储在磁盘上：\n  ",[66,3877,70,3879,16],{"className":3878},[69],[72,3880,74,3881,74,3889,70],{},[76,3882,78,3883,74],{},[80,3884,3885,3887],{},[83,3886,1881],{},[83,3888,1884],{},[90,3890,78,3891,78,3899,78,3909,78,3916,78,3924,74],{},[80,3892,3893,3896],{},[95,3894,3895],{},"最大导入 Codex 宠物数量",[95,3897,3898],{},"100",[80,3900,3901,3906],{},[95,3902,3903,3905],{},[58,3904,1818],{}," 文件大小",[95,3907,3908],{},"128 KB",[80,3910,3911,3914],{},[95,3912,3913],{},"精灵图大小",[95,3915,1926],{},[80,3917,3918,3921],{},[95,3919,3920],{},"预览图大小",[95,3922,3923],{},"8 MB",[80,3925,3926,3929],{},[95,3927,3928],{},"所有宠物的预览字节总量",[95,3930,3931],{},"24 MB",[23,3933,70,3934,3936,3937,1819,3939,3941],{},[58,3935,1795],{}," 中的文件夹名称必须与 ",[58,3938,1818],{},[58,3940,1629],{}," 一致。修改 Codex\n    宠物文件夹中的文件后，请重新加载 OpenPets。\n  ",[11,3943,16,3946,16,3949],{"id":3944,"className":3945},"publishing",[15],[18,3947,3948],{"id":3948},"发布宠物",[23,3950,3951,3952,3956],{},"\n    宠物准备好后，请将其提交到 OpenPets 画廊。\n    ",[351,3953,3955],{"href":3954},"https://github.com/alvinunreal/openpets","OpenPets GitHub 仓库","\n    中有宠物提交 issue 模板；请按要求填写元数据，并附上（或链接至）精灵图。通过审核的宠物会被添加到目录中，并可从桌面应用内直接安装。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":3958},[3959,3960,3961,3962,3967,3968],{"id":3638,"depth":223,"text":3638},{"id":3673,"depth":223,"text":1818},{"id":3771,"depth":223,"text":3771},{"id":3796,"depth":223,"text":3796,"children":3963},[3964,3965,3966],{"id":3802,"depth":1174,"text":3803},{"id":3823,"depth":1174,"text":3823},{"id":3850,"depth":1174,"text":3850},{"id":3865,"depth":223,"text":3866},{"id":3948,"depth":223,"text":3948},"OpenPets 宠物包的结构——pet.json、spritesheet.webp、大小限制、验证规则，以及如何为画廊打包宠物。",{},"宠物格式",80,"/zh/docs/pet-format",{"title":166,"description":3969},"zh/docs/pet-format",[3977,3978,3979,3980,3981,3982],{"id":3634,"label":3638},{"id":3669,"label":1818},{"id":3767,"label":3771},{"id":3792,"label":3796},{"id":3861,"label":3866},{"id":3944,"label":3948},"MrPcgt6uFkXIJCJndkBCZ39_enyyFFk6Y-yghKjFAg8",{"id":3985,"title":3986,"body":3987,"description":4314,"extension":229,"meta":4315,"navTitle":4316,"navigation":231,"order":4317,"path":4318,"seo":4319,"stem":4320,"toc":4321,"__hash__":4330},"docs_zh/zh/docs/desktop-app.md","桌面应用行为",{"type":8,"value":3988,"toc":4304},[3989,4002,4151,4167,4188,4252,4267,4291],[11,3990,16,3993,16,3996,16,3999],{"id":3991,"className":3992},"tray-only",[15],[18,3994,3995],{"id":3995},"仅托盘设计",[23,3997,3998],{},"\n    OpenPets 没有传统的主窗口。应用驻留在系统托盘（Windows / Linux）或菜单栏（macOS）中。在 macOS\n    上，应用特意将自身从 Dock 中隐藏，使宠物成为唯一可见的存在。\n  ",[23,4000,4001],{},"\n    所有操作——管理宠物、配置集成、更改设置、退出——均通过托盘菜单或其打开的短暂性\"任务\"窗口完成。\n  ",[11,4003,16,4006,16,4009,16,16,4012],{"id":4004,"className":4005},"tray-menu",[15],[18,4007,4008],{"id":4008},"托盘菜单",[23,4010,4011],{},"\n    托盘菜单根据应用状态显示不同的条目。完整条目按顺序如下：\n  ",[66,4013,70,4015,16],{"className":4014},[69],[72,4016,74,4017,74,4028,70],{},[76,4018,78,4019,74],{},[80,4020,4021,4024,4026],{},[83,4022,4023],{},"条目",[83,4025,578],{},[83,4027,1995],{},[90,4029,78,4030,78,4042,78,4055,78,4068,78,4080,78,4092,78,4104,78,4115,78,4127,78,4139,74],{},[80,4031,4032,4036,4039],{},[95,4033,4034],{},[33,4035,1417],{},[95,4037,4038],{},"始终显示。",[95,4040,4041],{},"禁用的标题标签。",[80,4043,4044,4049,4052],{},[95,4045,4046],{},[33,4047,4048],{},"有可用更新...",[95,4050,4051],{},"GitHub 上存在更新版本时。",[95,4053,4054],{},"在浏览器中打开发布页面。",[80,4056,4057,4062,4065],{},[95,4058,4059],{},[33,4060,4061],{},"继续设置...",[95,4063,4064],{},"引导流程尚未完成时。",[95,4066,4067],{},"重新打开引导窗口。",[80,4069,4070,4075,4077],{},[95,4071,4072],{},[33,4073,4074],{},"默认宠物：...",[95,4076,4038],{},[95,4078,4079],{},"打开宠物管理器，显示当前选定的默认宠物名称。",[80,4081,4082,4087,4089],{},[95,4083,4084],{},[33,4085,4086],{},"显示 / 隐藏默认宠物",[95,4088,4038],{},[95,4090,4091],{},"切换默认宠物窗口的可见性。",[80,4093,4094,4099,4101],{},[95,4095,4096],{},[33,4097,4098],{},"暂停 / 恢复所有宠物",[95,4100,4038],{},[95,4102,4103],{},"全局暂停或恢复所有宠物的反应和对话气泡。",[80,4105,4106,4110,4112],{},[95,4107,4108],{},[33,4109,1674],{},[95,4111,4038],{},[95,4113,4114],{},"打开宠物管理器。",[80,4116,4117,4122,4124],{},[95,4118,4119],{},[33,4120,4121],{},"集成...",[95,4123,4038],{},[95,4125,4126],{},"打开集成窗口。",[80,4128,4129,4134,4136],{},[95,4130,4131],{},[33,4132,4133],{},"设置...",[95,4135,4038],{},[95,4137,4138],{},"打开设置窗口。",[80,4140,4141,4146,4148],{},[95,4142,4143],{},[33,4144,4145],{},"退出 OpenPets",[95,4147,4038],{},[95,4149,4150],{},"退出应用，释放所有活跃租约并删除 IPC 发现文件。",[11,4152,16,4155,16,4158,16,4161,16,4164],{"id":4153,"className":4154},"pet-windows",[15],[18,4156,4157],{"id":4157},"宠物窗口",[23,4159,4160],{},"\n    每只宠物在其专属的透明、无边框、始终置顶的 Electron 窗口中渲染。窗口没有任何界面装饰——只有精灵图及其透明背景，动画由 CSS 驱动。\n  ",[23,4162,4163],{},"\n    默认宠物使用一个在整个会话期间持续存在的窗口。代理宠物各自拥有独立的短暂窗口，当助手请求时打开，当助手停止请求时关闭。\n  ",[23,4165,4166],{},"\n    宠物窗口会追踪所在屏幕，并在启动之间记住其位置。\n  ",[11,4168,16,4171,16,4174,16,4177],{"id":4169,"className":4170},"drag-and-clickthrough",[15],[18,4172,4173],{"id":4173},"拖拽与点击穿透",[23,4175,4176],{},"\n    你可以用鼠标在桌面上随意拖动宠物窗口。拖动之外，宠物窗口默认启用点击穿透，不会拦截针对其下方内容的点击操作。\n  ",[23,4178,4179,4180,4183,4184,4187],{},"\n    拖拽功能和点击穿透开关通过一个小型预加载脚本实现，该脚本通过 Electron 的\n    ",[58,4181,4182],{},"contextBridge"," 向渲染器暴露有限的 API。渲染器本身在沙箱中运行，启用了上下文隔离，不集成 Node，并采用严格的\n    ",[58,4185,4186],{},"default-src 'none'"," CSP 策略。\n  ",[11,4189,16,4192,16,4195,16,4198],{"id":4190,"className":4191},"task-windows",[15],[18,4193,4194],{"id":4194},"任务窗口",[23,4196,4197],{},"\n    任务窗口是从托盘菜单打开的短暂性 Electron 窗口，用于展示专注于单个任务的界面，完成后即关闭。\n  ",[66,4199,70,4201,16],{"className":4200},[69],[72,4202,74,4203,74,4212,70],{},[76,4204,78,4205,74],{},[80,4206,4207,4210],{},[83,4208,4209],{},"窗口",[83,4211,2253],{},[90,4213,78,4214,78,4223,78,4232,78,4242,74],{},[80,4215,4216,4220],{},[95,4217,4218],{},[33,4219,348],{},[95,4221,4222],{},"浏览画廊、安装或卸载宠物、选择默认宠物。",[80,4224,4225,4229],{},[95,4226,4227],{},[33,4228,389],{},[95,4230,4231],{},"安装、配置和移除 Claude Code 与 OpenCode 集成。",[80,4233,4234,4239],{},[95,4235,4236],{},[33,4237,4238],{},"设置",[95,4240,4241],{},"调整宠物缩放比例、对话气泡偏好及其他设置。",[80,4243,4244,4249],{},[95,4245,4246],{},[33,4247,4248],{},"引导",[95,4250,4251],{},"首次启动时的引导流程，用于选择初始宠物并启用启动时显示。",[11,4253,16,4256,16,4259,16,4262],{"id":4254,"className":4255},"onboarding",[15],[18,4257,4258],{"id":4258},"引导流程",[23,4260,4261],{},"\n    OpenPets 首次启动时会自动打开引导窗口。完成（或跳过）引导后，应用会在状态文件中将引导标记为已完成，之后每次启动不再显示该窗口。\n  ",[23,4263,4264,4265,334],{},"\n    如果你跳过了引导并希望返回，可在引导状态仍为待完成时点击托盘菜单中的",[33,4266,4061],{},[11,4268,16,4271,16,4274,16,4281],{"id":4269,"className":4270},"update-checks",[15],[18,4272,4273],{"id":4273},"更新检查",[23,4275,4276,4277,4280],{},"\n    启动时，OpenPets 会查询 ",[58,4278,4279],{},"alvinunreal/openpets"," 仓库的 GitHub Releases API，检查是否有更新版本可用。检查在后台运行一次，并设有较短的超时时间。\n  ",[23,4282,4283,4284,4287,4288,334],{},"\n    若发现更新版本，托盘菜单会添加",[33,4285,4286],{},"有可用更新","条目，点击后在浏览器中打开发布页面。不会自动下载或安装任何内容。手动更新步骤请参见\n    ",[42,4289,1469],{"to":4290},"/docs/install#updates",[11,4292,16,4295,16,4298,16,4301],{"id":4293,"className":4294},"single-instance",[15],[18,4296,4297],{"id":4297},"单实例行为",[23,4299,4300],{},"\n    OpenPets 使用 Electron 的单实例锁。如果你在应用已运行时再次启动，第二个实例会立即退出，正在运行的实例会将其托盘菜单最近打开的任务窗口置于最前。\n  ",[23,4302,4303],{},"\n    这可以避免出现重复的托盘图标、重复的 IPC 服务器和重复的更新提示。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":4305},[4306,4307,4308,4309,4310,4311,4312,4313],{"id":3995,"depth":223,"text":3995},{"id":4008,"depth":223,"text":4008},{"id":4157,"depth":223,"text":4157},{"id":4173,"depth":223,"text":4173},{"id":4194,"depth":223,"text":4194},{"id":4258,"depth":223,"text":4258},{"id":4273,"depth":223,"text":4273},{"id":4297,"depth":223,"text":4297},"OpenPets 托盘应用的行为说明——托盘菜单、宠物窗口、拖拽、点击穿透、任务窗口、引导流程和更新检查。",{},"桌面应用",90,"/zh/docs/desktop-app",{"title":3986,"description":4314},"zh/docs/desktop-app",[4322,4323,4324,4325,4326,4327,4328,4329],{"id":3991,"label":3995},{"id":4004,"label":4008},{"id":4153,"label":4157},{"id":4169,"label":4173},{"id":4190,"label":4194},{"id":4254,"label":4258},{"id":4269,"label":4273},{"id":4293,"label":4297},"N0uES2IFW1O2yq1qEwpXoxzXFm7RMnuy1rdW87gj5AQ",{"id":4332,"title":1018,"body":4333,"description":4775,"extension":229,"meta":4776,"navTitle":177,"navigation":231,"order":4777,"path":4778,"seo":4779,"stem":4780,"toc":4781,"__hash__":4789},"docs_zh/zh/docs/files-and-config.md",{"type":8,"value":4334,"toc":4766},[4335,4399,4442,4467,4549,4589,4681],[11,4336,16,4339,16,4342,16,4345,16,4388],{"id":4337,"className":4338},"user-data",[15],[18,4340,4341],{"id":4341},"用户数据目录",[23,4343,4344],{},"\n    OpenPets 将状态、已安装的宠物和运行时元数据统一保存在用户数据目录中。位置因平台而异。\n  ",[66,4346,70,4348,16],{"className":4347},[69],[72,4349,74,4350,74,4358,70],{},[76,4351,78,4352,74],{},[80,4353,4354,4356],{},[83,4355,267],{},[83,4357,887],{},[90,4359,78,4360,78,4368,78,4376,74],{},[80,4361,4362,4364],{},[95,4363,281],{},[95,4365,4366],{},[58,4367,1530],{},[80,4369,4370,4372],{},[95,4371,297],{},[95,4373,4374],{},[58,4375,1546],{},[80,4377,4378,4380],{},[95,4379,310],{},[95,4381,4382,4385,4386,1331],{},[58,4383,4384],{},"$XDG_CONFIG_HOME/OpenPets","（或 ",[58,4387,1565],{},[23,4389,4390,4391,4394,4395,4398],{},"\n    你可以通过设置环境变量 ",[58,4392,4393],{},"OPENPETS_USER_DATA"," 来覆盖路径。覆盖适用于独立安装程序及所有使用用户数据路径的组件；桌面应用本身使用 Electron 的\n    ",[58,4396,4397],{},"app.getPath(\"userData\")","，遵循其自身的标准规则。\n  ",[11,4400,16,4403,16,4406,16,4413,16,4436],{"id":4401,"className":4402},"app-state",[15],[18,4404,4405],{"id":4405},"应用状态文件",[23,4407,4408,4409,4412],{},"\n    应用状态文件 ",[58,4410,4411],{},"openpets-state.json"," 位于用户数据目录的根目录。它记录：\n  ",[202,4414,70,4415,70,4418,70,4421,70,4424,70,4427,70,4430,70,4433,16],{},[205,4416,4417],{},"当前选定的默认宠物 id。",[205,4419,4420],{},"默认宠物是否在启动时打开，以及对话气泡是否启用。",[205,4422,4423],{},"宠物缩放偏好设置。",[205,4425,4426],{},"引导流程是否已完成。",[205,4428,4429],{},"可选的 Claude 和 OpenCode 命令路径（如果你设置了自定义二进制文件）。",[205,4431,4432],{},"已安装的宠物列表及其元数据。",[205,4434,4435],{},"默认宠物上次已知的位置。",[23,4437,4438,4439,4441],{},"\n    对 ",[58,4440,4411],{}," 的所有写入均以原子方式进行：OpenPets 先写入原始文件旁边的临时文件，再重命名到位。不存在部分写入的状态。\n  ",[11,4443,16,4446,16,4449,16,4461],{"id":4444,"className":4445},"pet-directories",[15],[18,4447,4448],{"id":4448},"已安装的宠物",[23,4450,4451,4452,4454,4455,837,4457,4460],{},"\n    每只从画廊安装的宠物存放在 ",[58,4453,1781],{}," 下，目录中包含解压后的宠物包——",[58,4456,1818],{},[58,4458,4459],{},"spritesheet.webp"," 以及可选的预览图。\n  ",[23,4462,4463,4464,4466],{},"\n    本地开发的 Codex 宠物单独存放在 ",[58,4465,1007],{}," 下。桌面应用会同时读取这两个位置。\n  ",[11,4468,16,4471,16,4475,16,4484,16,4537,16,4546],{"id":4469,"className":4470},"discovery-file",[15],[18,4472,4474],{"id":4473},"ipc-发现文件","IPC 发现文件",[23,4476,4477,4478,4480,4481,4483],{},"\n    桌面应用启动时会写入一个小型 JSON 文件，告知客户端（MCP 服务器、CLI、钩子）连接位置和所需令牌。该文件以 ",[58,4479,797],{}," 权限存放在 ",[58,4482,801],{}," 目录中。\n  ",[66,4485,70,4487,16],{"className":4486},[69],[72,4488,74,4489,74,4497,70],{},[76,4490,78,4491,74],{},[80,4492,4493,4495],{},[83,4494,267],{},[83,4496,784],{},[90,4498,78,4499,78,4508,78,4517,78,4527,74],{},[80,4500,4501,4503],{},[95,4502,281],{},[95,4504,4505],{},[58,4506,4507],{},"~/Library/Application Support/OpenPets/runtime/ipc.json",[80,4509,4510,4512],{},[95,4511,297],{},[95,4513,4514],{},[58,4515,4516],{},"%APPDATA%\\OpenPets\\runtime\\ipc.json",[80,4518,4519,4522],{},[95,4520,4521],{},"Linux（安全 XDG）",[95,4523,4524],{},[58,4525,4526],{},"$XDG_RUNTIME_DIR/openpets/ipc.json",[80,4528,4529,4532],{},[95,4530,4531],{},"Linux（回退）",[95,4533,4534],{},[58,4535,4536],{},"~/.config/OpenPets/runtime/ipc.json",[23,4538,4539,4540,4542,4543,4545],{},"\n    在 Linux 上，仅当 ",[58,4541,1439],{}," 是你拥有且权限为 ",[58,4544,801],{}," 的真实目录时，才使用安全 XDG 位置；否则 OpenPets 回退到上述路径。\n  ",[23,4547,4548],{},"\n    发现文件在每次桌面应用启动时包含一个新生成的令牌，旧令牌立即失效。\n  ",[11,4550,16,4553,16,4556],{"id":4551,"className":4552},"lock-files",[15],[18,4554,4555],{"id":4555},"锁文件",[202,4557,70,4558,70,4564,70,4577,16],{},[205,4559,4560,4563],{},[33,4561,4562],{},"单实例锁","——Electron 内置锁；桌面应用运行期间自动持有。",[205,4565,4566,4569,4570,4572,4573,4576],{},[33,4567,4568],{},"直接安装锁","——由独立的 ",[58,4571,1745],{}," 包使用，防止两个安装程序并发运行。位于 ",[58,4574,4575],{},"\u003CuserData>/.install-pet.lock","。过期锁在 10 分钟后视为无效。",[205,4578,4579,4582,4583,61,4585,4588],{},[33,4580,4581],{},"Unix 套接字","——在 macOS 和 Linux 上，实际 IPC 套接字文件位于 ",[58,4584,1446],{},[58,4586,4587],{},"$XDG_RUNTIME_DIR/openpets/"," 下。应用正常退出时删除。",[11,4590,16,4593,16,4597,16,4604,16,4665,16,4673],{"id":4591,"className":4592},"claude-files",[15],[18,4594,4596],{"id":4595},"claude-托管文件","Claude 托管文件",[23,4598,4599,4600,4603],{},"\n    当你从桌面应用安装 Claude Code 集成时，OpenPets 会管理 ",[58,4601,4602],{},"~/.claude/"," 下的三个文件：\n  ",[66,4605,70,4607,16],{"className":4606},[69],[72,4608,74,4609,74,4619,70],{},[76,4610,78,4611,74],{},[80,4612,4613,4616],{},[83,4614,4615],{},"文件",[83,4617,4618],{},"OpenPets 写入的内容",[90,4620,78,4621,78,4638,78,4653,74],{},[80,4622,278,4623,278,4627,78],{},[95,4624,4625],{},[58,4626,2058],{},[95,4628,4629,4630,4633,4634,4637],{},"一个由 ",[58,4631,4632],{},"\u003C!-- OPENPETS:IMPORT:START -->"," / ",[58,4635,4636],{},":END -->"," 包裹的托管导入块。现有指令保持不变。",[80,4639,278,4640,278,4644,78],{},[95,4641,4642],{},[58,4643,2054],{},[95,4645,4646,4647,4633,4650,4652],{},"OpenPets 指令文件本体，由 ",[58,4648,4649],{},"\u003C!-- OPENPETS:START -->",[58,4651,4636],{}," 包裹。",[80,4654,278,4655,278,4659,78],{},[95,4656,4657],{},[58,4658,2065],{},[95,4660,4661,4662,4664],{},"OpenPets 托管的钩子命令条目（仅在选装钩子时）。每个托管命令包含 ",[58,4663,2599],{}," 标记。",[23,4666,4667,4668,4670,4671,334],{},"\n    Claude 的 MCP 配置通过 ",[58,4669,2582],{}," 命令写入，而非直接编辑文件；条目以用户范围命名为 ",[58,4672,419],{},[23,4674,4675,4676,4678,4679,334],{},"\n    通过 ",[58,4677,2091],{}," 进行的项目本地 Claude 配置写入 ",[58,4680,2592],{},[11,4682,16,4685,16,4689,16,4696,16,4763],{"id":4683,"className":4684},"opencode-files",[15],[18,4686,4688],{"id":4687},"opencode-托管文件","OpenCode 托管文件",[23,4690,4691,4692,4695],{},"\n    OpenCode 集成写入 OpenCode 的全局配置目录，通常为 ",[58,4693,4694],{},"~/.config/opencode/","。它在 OpenCode 配置文件中管理三项内容，另外还有一个独立的指令文件：\n  ",[66,4697,70,4699,16],{"className":4698},[69],[72,4700,74,4701,74,4710,70],{},[76,4702,78,4703,74],{},[80,4704,4705,4708],{},[83,4706,4707],{},"位置",[83,4709,4618],{},[90,4711,78,4712,78,4727,78,4738,78,4748,74],{},[80,4713,278,4714,278,4721,78],{},[95,4715,4716,4717,4720],{},"OpenCode 配置（",[58,4718,4719],{},"mcp"," 节）",[95,4722,4723,4724,4726],{},"一个 ",[58,4725,419],{}," stdio MCP 条目。",[80,4728,278,4729,278,4735,78],{},[95,4730,4716,4731,4734],{},[58,4732,4733],{},"plugin"," 数组）",[95,4736,4737],{},"对 OpenPets OpenCode 插件的引用，使其在编辑器启动时加载。",[80,4739,278,4740,278,4745,78],{},[95,4741,4716,4742,4734],{},[58,4743,4744],{},"instructions",[95,4746,4747],{},"对 OpenPets 指令文件的引用。",[80,4749,278,4750,278,4756,78],{},[95,4751,4752,4755],{},[58,4753,4754],{},".opencode/openpets.md","（项目）或对应的全局路径",[95,4757,4758,4759,4633,4761,4652],{},"OpenPets 指令，由 ",[58,4760,4649],{},[58,4762,4636],{},[23,4764,4765],{},"\n    OpenCode 配置编辑使用 JSONC 解析器，因此现有注释和尾随逗号不会丢失。写入以原子方式进行并有备份。集成拒绝通过符号链接写入文件。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":4767},[4768,4769,4770,4771,4772,4773,4774],{"id":4341,"depth":223,"text":4341},{"id":4405,"depth":223,"text":4405},{"id":4448,"depth":223,"text":4448},{"id":4473,"depth":223,"text":4474},{"id":4555,"depth":223,"text":4555},{"id":4595,"depth":223,"text":4596},{"id":4687,"depth":223,"text":4688},"OpenPets 在你机器上读取或写入的每一个文件——用户数据、状态、已安装的宠物、发现文件、锁文件，以及 OpenPets 在 Claude 和 OpenCode 配置中管理的文件。",{},100,"/zh/docs/files-and-config",{"title":1018,"description":4775},"zh/docs/files-and-config",[4782,4783,4784,4785,4786,4787,4788],{"id":4337,"label":4341},{"id":4401,"label":4405},{"id":4444,"label":4448},{"id":4469,"label":4474},{"id":4551,"label":4555},{"id":4591,"label":4596},{"id":4683,"label":4688},"ebeVvgC7fEuC2F1JjEyg8j0VN7kPXuXQvRv22SyJ5z8",{"id":4791,"title":193,"body":4792,"description":5049,"extension":229,"meta":5050,"navTitle":193,"navigation":231,"order":5051,"path":5052,"seo":5053,"stem":5054,"toc":5055,"__hash__":5064},"docs_zh/zh/docs/troubleshooting.md",{"type":8,"value":4793,"toc":5039},[4794,4815,4859,4878,4899,4941,4980,5005],[11,4795,16,4798,16,4801,16,4804],{"id":4796,"className":4797},"app-not-running",[15],[18,4799,4800],{"id":4800},"桌面应用未运行",[23,4802,4803],{},"\n    大多数\"OpenPets 不可用\"错误意味着桌面应用已关闭或崩溃。\n  ",[202,4805,70,4806,70,4809,70,4812,16],{},[205,4807,4808],{},"检查系统托盘（macOS 上为菜单栏）中是否有 OpenPets 图标。",[205,4810,4811],{},"如果图标消失，请重新启动应用。若应用仍在运行，单实例锁会将第二次启动路由到已有实例。",[205,4813,4814],{},"如果图标存在但工具仍然失败，发现令牌可能已轮换。请重启 MCP 客户端以获取新的租约。",[11,4816,16,4819,16,4823],{"id":4817,"className":4818},"claude-no-tools",[15],[18,4820,4822],{"id":4821},"claude-不显示-openpets-工具","Claude 不显示 OpenPets 工具",[1241,4824,70,4825,70,4828,70,4837,70,4850,16],{},[205,4826,4827],{},"安装或替换 MCP 配置后，请重启 Claude Code。",[205,4829,4830,4831,4833,4834,210],{},"在 OpenPets 中打开",[33,4832,389],{},"，点击 Claude 卡片上的",[33,4835,4836],{},"刷新",[205,4838,4839,4840,4842,4843,4845,4846,4849],{},"在终端中运行 ",[58,4841,2658],{},"。CLI 必须在 ",[58,4844,2318],{}," 上，OpenPets 才能检测到 Claude。如果二进制文件在其他位置，请在",[33,4847,4848],{},"高级检测","中设置完整路径。",[205,4851,1401,4852,488,4855,4858],{},[58,4853,4854],{},"claude mcp list",[58,4856,4857],{},"claude mcp get openpets"," 验证 MCP 条目。",[11,4860,16,4863,16,4867],{"id":4861,"className":4862},"opencode-no-react",[15],[18,4864,4866],{"id":4865},"opencode-没有反应","OpenCode 没有反应",[202,4868,70,4869,70,4872,70,4875,16],{},[205,4870,4871],{},"确认 OpenPets 正在运行。OpenCode 插件使用相同的本地 IPC，桌面应用关闭意味着没有反应。",[205,4873,4874],{},"确认 OpenPets 插件条目仍列在你的 OpenCode 配置中。如果被删除，可通过集成窗口重新添加。",[205,4876,4877],{},"反应受到频率限制。如果你最近已看过一次反应，下一个事件可能被静默——这是有意设计，不是 bug。",[11,4879,16,4882,16,4886,16,4892],{"id":4880,"className":4881},"mcp-custom-entry",[15],[18,4883,4885],{"id":4884},"mcp-条目被报告为自定义","MCP 条目被报告为自定义",[23,4887,4888,4889,4891],{},"\n    \"自定义\"表示 Claude（或 OpenCode）已有一个名为 ",[58,4890,419],{}," 的服务器，但其命令与 OpenPets 当前应写入的内容不匹配。OpenPets 在这种情况下会保留不动，避免覆盖你的自定义配置。\n  ",[23,4893,4894,4895,4898],{},"\n    若要强制 OpenPets 重新创建条目，请打开集成卡片并点击",[33,4896,4897],{},"替换配置","。你之前的自定义命令将被覆盖。\n  ",[11,4900,16,4903,16,4906],{"id":4901,"className":4902},"pet-install-fails",[15],[18,4904,4905],{"id":4905},"宠物安装失败",[202,4907,70,4908,70,4913,70,4919,70,4927,70,4935,16],{},[205,4909,4910,4911,210],{},"检查宠物 id。须为小写字母、数字、连字符、下划线；最多 64 个字符；不能为 ",[58,4912,1940],{},[205,4914,4915,4916,4918],{},"确认宠物存在于画廊中。打开 ",[351,4917,354],{"href":353}," 核对 id。",[205,4920,4921,4922,488,4925,210],{},"检查网络连接。目录和 ZIP 下载需要能通过 HTTPS 访问 ",[58,4923,4924],{},"openpets.dev",[58,4926,1688],{},[205,4928,4929,4930,4932,4933,210],{},"如果独立的 ",[58,4931,1745],{}," 报告锁文件过期，请等待 10 分钟让锁自动过期，或在确认没有其他安装正在进行后手动删除 ",[58,4934,4575],{},[205,4936,4937,4938,4940],{},"验证器可能会拒绝格式有问题的宠物包。错误信息会指明失败的规则——符号链接、文件过大、缺少 ",[58,4939,1818],{},"、缺少精灵图等。",[11,4942,16,4945,16,4948],{"id":4943,"className":4944},"pet-not-showing",[15],[18,4946,4947],{"id":4947},"宠物未显示",[202,4949,70,4950,70,4961,70,4968,70,4977,16],{},[205,4951,4952,4953,4956,4957,4960],{},"在托盘菜单中检查",[33,4954,4955],{},"显示默认宠物","。如果显示的是",[33,4958,4959],{},"隐藏默认宠物","，说明宠物已显示——请查看其他显示器。",[205,4962,4963,4964,4967],{},"如果宠物处于暂停状态（托盘菜单中显示",[33,4965,4966],{},"恢复所有宠物","），请点击以恢复。",[205,4969,4970,4971,4973,4974,4976],{},"如果你通过 ",[58,4972,2150],{}," 请求了特定宠物，请查看结构化状态响应。有 ",[58,4975,3477],{}," 说明该宠物缺失或损坏，事件已转发至默认宠物。",[205,4978,4979],{},"从宠物管理器重新安装受影响的宠物。",[11,4981,16,4984,16,4987,16,4993],{"id":4982,"className":4983},"update-fails",[15],[18,4985,4986],{"id":4986},"更新检查失败",[23,4988,4989,4990,4992],{},"\n    更新检查会访问 GitHub Releases API，若网络较慢或受限则会迅速超时。检查失败不会影响正常使用——托盘菜单仅是不显示",[33,4991,4286],{},"条目。\n  ",[202,4994,70,4995,70,4998,16],{},[205,4996,4997],{},"如果你怀疑版本已过时，请直接访问 OpenPets GitHub 发布页面查看。",[205,4999,5000,5001,5004],{},"企业网络有时会屏蔽 ",[58,5002,5003],{},"api.github.com","，检查在此情况下会静默失败。",[11,5006,16,5009,16,5012,16,5019,16,5036],{"id":5007,"className":5008},"reporting",[15],[18,5010,5011],{"id":5011},"反馈问题",[23,5013,5014,5015,5018],{},"\n    如果按照本页步骤排查后问题仍然存在，请在\n    ",[351,5016,3955],{"href":5017},"https://github.com/alvinunreal/openpets/issues","\n    提交 issue。请包含以下信息：\n  ",[202,5020,70,5021,70,5024,70,5027,70,5030,16],{},[205,5022,5023],{},"你的操作系统和 OpenPets 应用版本（在设置窗口中可见）。",[205,5025,5026],{},"复现问题的确切步骤。",[205,5028,5029],{},"涉及的助手和集成（Claude Code、OpenCode 等）。",[205,5031,5032,5033,5035],{},"对于钩子相关问题，请提供使用 ",[58,5034,2847],{}," 运行钩子命令的输出。",[23,5037,5038],{},"\n    请不要在 issue 中粘贴私密代码、密钥或完整对话记录。简短的错误信息和复现步骤通常已足够。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":5040},[5041,5042,5043,5044,5045,5046,5047,5048],{"id":4800,"depth":223,"text":4800},{"id":4821,"depth":223,"text":4822},{"id":4865,"depth":223,"text":4866},{"id":4884,"depth":223,"text":4885},{"id":4905,"depth":223,"text":4905},{"id":4947,"depth":223,"text":4947},{"id":4986,"depth":223,"text":4986},{"id":5011,"depth":223,"text":5011},"OpenPets 常见问题及解决方法——桌面应用、集成、MCP、钩子、宠物安装以及问题反馈。",{},120,"/zh/docs/troubleshooting",{"title":193,"description":5049},"zh/docs/troubleshooting",[5056,5057,5058,5059,5060,5061,5062,5063],{"id":4796,"label":4800},{"id":4817,"label":4822},{"id":4861,"label":4866},{"id":4880,"label":4885},{"id":4901,"label":4905},{"id":4943,"label":4947},{"id":4982,"label":4986},{"id":5007,"label":5011},"q_oVpjQuC4U0DvCG0JTR2_07s8RaTmWAxaup40IGZCU",{"id":5066,"title":5067,"body":5068,"description":5436,"extension":229,"meta":5437,"navTitle":5438,"navigation":231,"order":5439,"path":5440,"seo":5441,"stem":5442,"toc":5443,"__hash__":5451},"docs_zh/zh/docs/developer.md","开发者指南",{"type":8,"value":5069,"toc":5427},[5070,5102,5138,5271,5297,5364,5389],[11,5071,16,5074,16,5077,16,5080,16,5095],{"id":5072,"className":5073},"repo-layout",[15],[18,5075,5076],{"id":5076},"仓库结构",[23,5078,5079],{},"\n    OpenPets 是一个 pnpm 工作区，包含两种顶层工作区模式：一种用于可部署的应用，一种用于可发布的包。\n  ",[66,5081,70,5083,70,5090,16],{"className":5082},[460],[66,5084,5086,5088],{"className":5085},[464],[466,5087,1805],{},[466,5089,471],{},[473,5091,5092],{},[58,5093,5094],{},"openpets/\n├── apps/\n│   └── desktop/        # Electron tray app\n├── packages/\n│   ├── agent-events/   # Speech pools + validation\n│   ├── claude/         # Claude Code integration\n│   ├── cli/            # `openpets` CLI\n│   ├── client/         # Local IPC client\n│   ├── install-pet/    # Standalone pet installer\n│   ├── mcp/            # MCP server\n│   ├── opencode/       # OpenCode integration\n│   └── pet-format/     # Pet package marker type\n└── web/                # openpets.dev (Nuxt 4)",[23,5096,5097,5098,5101],{},"\n    每个工作区包均为 ESM（",[58,5099,5100],{},"\"type\": \"module\"","），使用 TypeScript 6 编写，目标运行环境为 Node ≥ 20。\n  ",[11,5103,16,5106,16,5109,16,5112,16,5127],{"id":5104,"className":5105},"setup",[15],[18,5107,5108],{"id":5108},"环境搭建",[23,5110,5111],{},"\n    安装 pnpm 11 和 Node 20+，然后执行：\n  ",[66,5113,70,5115,70,5122,16],{"className":5114},[460],[66,5116,5118,5120],{"className":5117},[464],[466,5119,1283],{},[466,5121,1286],{},[473,5123,5124],{},[58,5125,5126],{},"pnpm install\npnpm build       # build all workspace packages\npnpm dev:desktop # run the desktop app in dev mode",[23,5128,5129,5130,5133,5134,5137],{},"\n    桌面应用通过 ",[58,5131,5132],{},"workspace:*"," 依赖工作区包，因此在运行 ",[58,5135,5136],{},"dev:desktop"," 之前，需要先完整构建一次这些包。\n  ",[11,5139,16,5142,16,5145],{"id":5140,"className":5141},"commands",[15],[18,5143,5144],{"id":5144},"常用命令",[66,5146,70,5148,16],{"className":5147},[69],[72,5149,74,5150,74,5158,70],{},[76,5151,78,5152,74],{},[80,5153,5154,5156],{},[83,5155,2250],{},[83,5157,961],{},[90,5159,78,5160,78,5170,78,5184,78,5197,78,5214,78,5224,78,5237,78,5251,78,5261,74],{},[80,5161,5162,5167],{},[95,5163,5164],{},[58,5165,5166],{},"pnpm build",[95,5168,5169],{},"构建所有工作区包。",[80,5171,5172,5177],{},[95,5173,5174],{},[58,5175,5176],{},"pnpm check",[95,5178,5179,5180,5183],{},"运行每个包的 ",[58,5181,5182],{},"check"," 脚本（lint、格式检查等）。",[80,5185,5186,5191],{},[95,5187,5188],{},[58,5189,5190],{},"pnpm typecheck",[95,5192,5179,5193,5196],{},[58,5194,5195],{},"typecheck"," 脚本。",[80,5198,5199,5204],{},[95,5200,5201],{},[58,5202,5203],{},"pnpm test",[95,5205,5206,5207,5210,5211,2411],{},"先构建，再运行每个包的 ",[58,5208,5209],{},"test"," 脚本（契约检查与源码并排，命名为 ",[58,5212,5213],{},"check-*.ts",[80,5215,5216,5221],{},[95,5217,5218],{},[58,5219,5220],{},"pnpm dev:desktop",[95,5222,5223],{},"以开发模式运行 Electron 桌面应用。",[80,5225,5226,5231],{},[95,5227,5228],{},[58,5229,5230],{},"pnpm package:desktop:dir",[95,5232,2589,5233,5236],{},[58,5234,5235],{},"apps/desktop/dist-electron/"," 生成未打包的桌面构建。",[80,5238,5239,5244],{},[95,5240,5241],{},[58,5242,5243],{},"pnpm package:desktop",[95,5245,5246,5247,5250],{},"为当前平台运行完整的 ",[58,5248,5249],{},"electron-builder"," 打包。",[80,5252,5253,5258],{},[95,5254,5255],{},[58,5256,5257],{},"pnpm release:desktop",[95,5259,5260],{},"协调本地多平台发布（见下文）。",[80,5262,5263,5268],{},[95,5264,5265],{},[58,5266,5267],{},"pnpm release:npm",[95,5269,5270],{},"将工作区包发布到 npm。",[11,5272,16,5274,16,5277,16,5283],{"id":1108,"className":5273},[15],[18,5275,5276],{"id":5276},"测试",[23,5278,5279,5280,5282],{},"\n    OpenPets 采用轻量级契约式测试，而非重量级测试框架。每个包都有一个或多个 ",[58,5281,5213],{},"\n    文件，对包的公共接口进行端到端测试并断言预期行为。\n  ",[202,5284,70,5285,70,5291,70,5294,16],{},[205,5286,5287,5288,5290],{},"契约文件在工作区根目录执行 ",[58,5289,5203],{}," 时运行。",[205,5292,5293],{},"这些检查有意覆盖 IPC 协议、租约生命周期、ZIP 安全性、目录验证以及其他边界模块。",[205,5295,5296],{},"设计上快速且具有确定性——没有网络请求、没有 Electron 启动、没有测试框架。",[11,5298,16,5301,16,5305,16,5312,16,5315,16,5352],{"id":5299,"className":5300},"release-desktop",[15],[18,5302,5304],{"id":5303},"发布桌面应用","发布：桌面应用",[23,5306,5307,5308,5311],{},"\n    桌面版本从 macOS 上由单一编排脚本 ",[58,5309,5310],{},"apps/desktop/scripts/release-local.mjs"," 生成。它负责运行预检、构建，并从一台机器为 macOS、Windows 和 Linux 生成安装包。\n  ",[23,5313,5314],{},"\n    默认构建计划：\n  ",[66,5316,70,5318,16],{"className":5317},[69],[72,5319,74,5320,74,5329,70],{},[76,5321,78,5322,74],{},[80,5323,5324,5326],{},[83,5325,267],{},[83,5327,5328],{},"默认产物",[90,5330,78,5331,78,5338,78,5345,74],{},[80,5332,5333,5335],{},[95,5334,281],{},[95,5336,5337],{},"DMG（通用 x64 + arm64）",[80,5339,5340,5342],{},[95,5341,297],{},[95,5343,5344],{},"NSIS 安装程序（x64）",[80,5346,5347,5349],{},[95,5348,310],{},[95,5350,5351],{},"AppImage（x64）",[23,5353,5354,5355,5357,5358,5360,5361,5363],{},"\n    可选标志可添加 macOS ZIP、Windows 便携版可执行文件、Linux ",[58,5356,318],{}," 或 tarball 构建，以及 Windows 和 Linux 的实验性 ARM64 构建。构建完成后，脚本会生成 ",[58,5359,1228],{}," 文件，使用 ",[58,5362,2520],{}," 时还会创建 GitHub 草稿 Release 并上传产物。\n  ",[11,5365,16,5368,16,5372,16,5378],{"id":5366,"className":5367},"release-npm",[15],[18,5369,5371],{"id":5370},"发布npm-包","发布：npm 包",[23,5373,5374,5375,5377],{},"\n    工作区包独立发布。从仓库根目录运行 ",[58,5376,5267],{},"；编排器会构建、运行检查，并发布自上次发布以来版本号发生变化的每个包。\n  ",[23,5379,5380,5381,5384,5385,5388],{},"\n    目前所有包共享 ",[58,5382,5383],{},"2.0.x"," 版本线，但各自拥有独立的 ",[58,5386,5387],{},"package.json"," 版本号，因此可以单独升级某个包而无需更新其他包。\n  ",[11,5390,16,5393,16,5396,16,5399,16,5420],{"id":5391,"className":5392},"architecture",[15],[18,5394,5395],{"id":5395},"延伸阅读",[23,5397,5398],{},"\n    内部架构通过仓库内各目录的 codemap 文件记录，供贡献者参考，而非面向最终用户：\n  ",[202,5400,70,5401,70,5408,70,5414,16],{},[205,5402,5403,5404,5407],{},"仓库根目录的 ",[58,5405,5406],{},"codemap.md","——工作区高层架构概览。",[205,5409,5410,5413],{},[58,5411,5412],{},"apps/desktop/src/codemap.md","——Electron 应用的模块结构。",[205,5415,5416,5419],{},[58,5417,5418],{},"packages/\u003Cname>/src/codemap.md","——每个包的职责说明。",[23,5421,5422,5423,334],{},"\n    有关每个包的公开接口，请参见 ",[42,5424,5426],{"to":5425},"/docs/packages","包参考",{"title":222,"searchDepth":223,"depth":223,"links":5428},[5429,5430,5431,5432,5433,5434,5435],{"id":5076,"depth":223,"text":5076},{"id":5108,"depth":223,"text":5108},{"id":5144,"depth":223,"text":5144},{"id":5276,"depth":223,"text":5276},{"id":5303,"depth":223,"text":5304},{"id":5370,"depth":223,"text":5371},{"id":5395,"depth":223,"text":5395},"构建、测试、打包和发布 OpenPets。工作区结构、脚本命令以及代码库中各部分的位置。",{},"开发者",130,"/zh/docs/developer",{"title":5067,"description":5436},"zh/docs/developer",[5444,5445,5446,5447,5448,5449,5450],{"id":5072,"label":5076},{"id":5104,"label":5108},{"id":5140,"label":5144},{"id":1108,"label":5276},{"id":5299,"label":5304},{"id":5366,"label":5371},{"id":5391,"label":5395},"HTAShjR9YvB3g7ABSvQekWobyVTtGz50-huru7MTJ7g",{"id":5453,"title":5426,"body":5454,"description":5871,"extension":229,"meta":5872,"navTitle":5478,"navigation":231,"order":5873,"path":5874,"seo":5875,"stem":5876,"toc":5877,"__hash__":5887},"docs_zh/zh/docs/packages.md",{"type":8,"value":5455,"toc":5860},[5456,5564,5634,5663,5691,5736,5773,5815,5843],[11,5457,16,5459,16,5461,16,5467],{"id":1973,"className":5458},[15],[18,5460,1977],{"id":1977},[23,5462,5463,5464,5466],{},"\n    OpenPets 拆分为多个小型、专注的 npm 包，以便集成和第三方工具只依赖所需的部分。在 monorepo\n    内部通过 ",[58,5465,5132],{}," 链接；在 npm 上独立版本管理。\n  ",[66,5468,70,5470,16],{"className":5469},[69],[72,5471,74,5472,74,5482,70],{},[76,5473,78,5474,74],{},[80,5475,5476,5479],{},[83,5477,5478],{},"包",[83,5480,5481],{},"适用场景",[90,5483,78,5484,78,5494,78,5506,78,5515,78,5525,78,5535,78,5545,78,5554,74],{},[80,5485,5486,5491],{},[95,5487,5488],{},[58,5489,5490],{},"@open-pets/client",[95,5492,5493],{},"需要从 Node 直接与 OpenPets 桌面应用通信。",[80,5495,5496,5500],{},[95,5497,5498],{},[58,5499,2314],{},[95,5501,5502,5503,5505],{},"需要 ",[58,5504,419],{}," CLI 进行安装、配置、MCP 和钩子操作。",[80,5507,5508,5512],{},[95,5509,5510],{},[58,5511,2674],{},[95,5513,5514],{},"需要将 OpenPets MCP 服务器作为独立二进制文件使用。",[80,5516,5517,5522],{},[95,5518,5519],{},[58,5520,5521],{},"@open-pets/claude",[95,5523,5524],{},"正在构建 Claude Code 集成或以编程方式运行 Claude 钩子。",[80,5526,5527,5532],{},[95,5528,5529],{},[58,5530,5531],{},"@open-pets/opencode",[95,5533,5534],{},"正在构建 OpenCode 插件或管理 OpenCode 配置。",[80,5536,5537,5542],{},[95,5538,5539],{},[58,5540,5541],{},"@open-pets/agent-events",[95,5543,5544],{},"需要共享的语音池和验证器，而不需要完整的技术栈。",[80,5546,5547,5551],{},[95,5548,5549],{},[58,5550,1745],{},[95,5552,5553],{},"需要一个零依赖的 CLI，在没有 OpenPets 桌面应用的情况下安装宠物。",[80,5555,5556,5561],{},[95,5557,5558],{},[58,5559,5560],{},"@open-pets/pet-format",[95,5562,5563],{},"需要用于 OpenPets 兼容宠物包的类型级别标记。",[11,5565,16,5568,16,5573,16,5576,16,5619],{"id":5566,"className":5567},"client",[15],[18,5569,5571],{"id":5570},"open-petsclient",[58,5572,5490],{},[23,5574,5575],{},"\n    核心 IPC 客户端。每个需要与桌面应用通信的 OpenPets 包都使用它。\n  ",[202,5577,70,5578,70,5581,70,5613,16],{},[205,5579,5580],{},"发现文件读取、端点验证、带令牌的请求。",[205,5582,5583,5586,5587,837,5589,837,5591,837,5594,837,5597,837,5600,837,5603,837,5606,488,5609,5612],{},[58,5584,5585],{},"createOpenPetsClient()"," 工厂函数，返回 ",[58,5588,836],{},[58,5590,840],{},[58,5592,5593],{},"listPets",[58,5595,5596],{},"installPet",[58,5598,5599],{},"acquireLease",[58,5601,5602],{},"heartbeatLease",[58,5604,5605],{},"releaseLease",[58,5607,5608],{},"react",[58,5610,5611],{},"say"," 方法。",[205,5614,5615,5616,210],{},"强类型协议，带稳定错误码的自定义 ",[58,5617,5618],{},"OpenPetsClientError",[66,5620,70,5622,70,5629,16],{"className":5621},[460],[66,5623,5625,5627],{"className":5624},[464],[466,5626,363],{},[466,5628,1286],{},[473,5630,5631],{},[58,5632,5633],{},"npm install @open-pets/client",[11,5635,16,5638,16,5643,16,5648],{"id":5636,"className":5637},"cli",[15],[18,5639,5641],{"id":5640},"open-petscli",[58,5642,2314],{},[23,5644,5645,5646,334],{},"\n    已发布的 npm CLI 包。每个命令的详细说明见\n    ",[42,5647,155],{"to":154},[66,5649,70,5651,70,5658,16],{"className":5650},[460],[66,5652,5654,5656],{"className":5653},[464],[466,5655,363],{},[466,5657,1286],{},[473,5659,5660],{},[58,5661,5662],{},"npx -y @open-pets/cli@latest configure --agent claude\n# 可选的永久 shell 命令：\nnpm install -g @open-pets/cli",[11,5664,16,5666,16,5671,16,5676],{"id":4719,"className":5665},[15],[18,5667,5669],{"id":5668},"open-petsmcp",[58,5670,2674],{},[23,5672,5673,5674,334],{},"\n    OpenPets MCP 服务器。stdio 传输、三个工具、租约感知生命周期。详见\n    ",[42,5675,144],{"to":44},[66,5677,70,5679,70,5687,16],{"className":5678},[460],[66,5680,5682,5685],{"className":5681},[464],[466,5683,5684],{},"运行",[466,5686,1286],{},[473,5688,5689],{},[58,5690,2991],{},[11,5692,16,5694,16,5699,16,5702],{"id":2488,"className":5693},[15],[18,5695,5697],{"id":5696},"open-petsclaude",[58,5698,5521],{},[23,5700,5701],{},"\n    Claude Code 集成包。包含钩子运行时、钩子设置管理器以及桌面应用和 CLI 使用的 MCP 配置辅助工具。\n  ",[202,5703,70,5704,70,5710,70,5724,16],{},[205,5705,5706,5709],{},[58,5707,5708],{},"runClaudeHookFromStdin()","——执行单个 Claude 钩子事件。",[205,5711,5712,837,5715,837,5718,5721,5722,210],{},[58,5713,5714],{},"installClaudeHooks()",[58,5716,5717],{},"uninstallClaudeHooks()",[58,5719,5720],{},"doctorClaudeHooks()","——管理 ",[58,5723,2065],{},[205,5725,5726,837,5729,837,5732,5735],{},[58,5727,5728],{},"buildClaudeMcpPreview()",[58,5730,5731],{},"parseClaudeMcpGetOutput()",[58,5733,5734],{},"classifyClaudeMcpStatus()","——检查 Claude MCP 配置。",[11,5737,16,5739,16,5744,16,5747],{"id":2098,"className":5738},[15],[18,5740,5742],{"id":5741},"open-petsopencode",[58,5743,5531],{},[23,5745,5746],{},"\n    OpenCode 集成包。包含 OpenPets OpenCode 插件以及项目/全局配置管理器。\n  ",[202,5748,70,5749,70,5755,70,5764,16],{},[205,5750,5751,5754],{},[58,5752,5753],{},"plugin.ts","——OpenCode 使用的默认导出。",[205,5756,5757,4633,5760,5763],{},[58,5758,5759],{},"prepareOpenCodeProjectSetup()",[58,5761,5762],{},"writePreparedOpenCodeProjectSetup()","——原子性项目级配置写入。",[205,5765,5766,4633,5769,5772],{},[58,5767,5768],{},"prepareOpenCodeGlobalSetup()",[58,5770,5771],{},"writePreparedOpenCodeGlobalSetup()","——桌面应用使用的全局配置写入。",[11,5774,16,5777,16,5782,16,5785],{"id":5775,"className":5776},"agent-events",[15],[18,5778,5780],{"id":5779},"open-petsagent-events",[58,5781,5541],{},[23,5783,5784],{},"\n    共享语音池和验证器。Claude 钩子运行时和 OpenCode 插件都使用它，以确保所发送的消息风格一致并通过相同的安全规则。\n  ",[202,5786,70,5787,70,5803,70,5809,16],{},[205,5788,5789,5792,5793,837,5795,837,5797,837,5799,5802],{},[58,5790,5791],{},"hookSpeechPools","——按类别（",[58,5794,1068],{},[58,5796,1138],{},[58,5798,1148],{},[58,5800,5801],{},"permission","）键入的只读记录。",[205,5804,5805,5808],{},[58,5806,5807],{},"pickHookSpeech(category, randomFn)","——安全地随机选取一条消息。",[205,5810,5811,5814],{},[58,5812,5813],{},"validateHookSpeech(message)","——拒绝看起来不安全的内容。",[11,5816,16,5818,16,5822,16,5825,16,5840],{"id":1745,"className":5817},[15],[18,5819,5820],{"id":1745},[58,5821,1745],{},[23,5823,5824],{},"\n    用于安装单只宠物的独立 CLI。优先尝试正在运行的桌面应用；应用不可用时回退到直接下载。\n  ",[66,5826,70,5828,70,5836,16],{"className":5827},[460],[66,5829,5831,5834],{"className":5830},[464],[466,5832,5833],{},"安装单只宠物",[466,5835,1286],{},[473,5837,5838],{},[58,5839,1761],{},[23,5841,5842],{},"\n    适用于 dotfiles、CI 引导以及任何无法确保 OpenPets 桌面应用已打开的场景。\n  ",[11,5844,16,5847,16,5852,16,5855],{"id":5845,"className":5846},"pet-format",[15],[18,5848,5850],{"id":5849},"open-petspet-format",[58,5851,5560],{},[23,5853,5854],{},"\n    一个极小的标记包，为符合 OpenPets 宠物格式的包导出一个名义类型和常量。当你在 OpenPets 之上构建工具并希望在类型层面识别宠物包时可以使用它。\n  ",[23,5856,5857,5858,334],{},"\n    实际的宠物包结构定义位于桌面应用的目录验证器和 Codex 宠物验证器中——详见\n    ",[42,5859,166],{"to":165},{"title":222,"searchDepth":223,"depth":223,"links":5861},[5862,5863,5864,5865,5866,5867,5868,5869,5870],{"id":1977,"depth":223,"text":1977},{"id":5570,"depth":223,"text":5490},{"id":5640,"depth":223,"text":2314},{"id":5668,"depth":223,"text":2674},{"id":5696,"depth":223,"text":5521},{"id":5741,"depth":223,"text":5531},{"id":5779,"depth":223,"text":5541},{"id":1745,"depth":223,"text":1745},{"id":5849,"depth":223,"text":5560},"所有 @open-pets/* npm 包——各自的功能、安装方式以及适用场景。",{},140,"/zh/docs/packages",{"title":5426,"description":5871},"zh/docs/packages",[5878,5879,5880,5881,5882,5883,5884,5885,5886],{"id":1973,"label":1977},{"id":5566,"label":5490},{"id":5636,"label":2314},{"id":4719,"label":2674},{"id":2488,"label":5521},{"id":2098,"label":5531},{"id":5775,"label":5541},{"id":1745,"label":1745},{"id":5845,"label":5560},"ao4sXb11akMklD22y-B4pQE_oLJzedB--xUyESBqg3s",{"id":5889,"title":5890,"body":5891,"description":6021,"extension":229,"meta":6022,"navTitle":6023,"navigation":231,"order":6024,"path":6025,"seo":6026,"stem":6027,"toc":6028,"__hash__":6032},"docs_zh/zh/docs/license.md","许可证与署名",{"type":8,"value":5892,"toc":6016},[5893,5938,5952],[11,5894,16,5897,16,5900,16,5908],{"id":5895,"className":5896},"code-license",[15],[18,5898,5899],{"id":5899},"代码许可证",[23,5901,5902,5903,5907],{},"\n    OpenPets 源代码依据\n    ",[351,5904,5906],{"href":5905},"https://github.com/alvinunreal/openpets/blob/main/LICENSE","MIT 许可证","\n    发布。该许可证适用于桌面应用、所有工作区包及网站源码。\n  ",[66,5909,70,5911,70,5919,16],{"className":5910},[460],[66,5912,5914,5917],{"className":5913},[464],[466,5915,5916],{},"LICENSE",[466,5918,471],{},[473,5920,5921,5933],{},[58,5922,5923,5924,5927,5930],{},"MIT License\n",[23,5925,5926],{},"Copyright (c) 2026 OpenPets",[23,5928,5929],{},"Permission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:",[23,5931,5932],{},"The above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.",[23,5934,5935],{},[58,5936,5937],{},"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND...",[11,5939,16,5941,16,5943,16,5946],{"id":939,"className":5940},[15],[18,5942,943],{"id":943},[23,5944,5945],{},"\n    宠物精灵图和预览图不在 OpenPets 代码许可证的覆盖范围内。每只宠物随其元数据一起发布；宠物创作者保留其艺术作品的权利，除非其明确以其他方式重新授权。\n  ",[23,5947,5948,5949,5951],{},"\n    如需转载或改编特定宠物，请在操作前查看该宠物画廊页面上的许可说明或其 ",[58,5950,1818],{}," 元数据。\n  ",[11,5953,16,5956,16,5959,16,5962,16,6013],{"id":5954,"className":5955},"third-party",[15],[18,5957,5958],{"id":5958},"第三方软件",[23,5960,5961],{},"\n    OpenPets 构建于众多优秀的开源项目之上。主要运行时依赖包括：\n  ",[202,5963,70,5964,70,5971,70,5978,70,5985,70,5992,70,5999,70,6006,16],{},[205,5965,5966,5970],{},[351,5967,5969],{"href":5968},"https://www.electronjs.org/","Electron","——桌面应用外壳。",[205,5972,5973,5977],{},[351,5974,5976],{"href":5975},"https://github.com/modelcontextprotocol/typescript-sdk","@modelcontextprotocol/sdk","——MCP 服务器实现。",[205,5979,5980,5984],{},[351,5981,5983],{"href":5982},"https://github.com/thejoshwolfe/yauzl","yauzl","——宠物包的流式 ZIP 解压。",[205,5986,5987,5991],{},[351,5988,5990],{"href":5989},"https://github.com/microsoft/node-jsonc-parser","jsonc-parser","——支持 JSONC 格式的 OpenCode 配置编辑。",[205,5993,5994,5998],{},[351,5995,5997],{"href":5996},"https://zod.dev/","zod","——MCP 服务器的运行时结构校验。",[205,6000,6001,6005],{},[351,6002,6004],{"href":6003},"https://highlightjs.org/","highlight.js","——本文档网站的代码高亮。",[205,6007,6008,6012],{},[351,6009,6011],{"href":6010},"https://nuxt.com/","Nuxt","——驱动 openpets.dev 的框架。",[23,6014,6015],{},"\n    每个依赖项均受其自身许可证约束。完整列表及对应许可证文本，请参见 OpenPets GitHub 仓库中的源代码。\n  ",{"title":222,"searchDepth":223,"depth":223,"links":6017},[6018,6019,6020],{"id":5899,"depth":223,"text":5899},{"id":943,"depth":223,"text":943},{"id":5958,"depth":223,"text":5958},"OpenPets 的许可条款——代码采用 MIT 许可，资源文件按宠物各自授权——以及第三方软件署名。",{},"许可证",150,"/zh/docs/license",{"title":5890,"description":6021},"zh/docs/license",[6029,6030,6031],{"id":5895,"label":5899},{"id":939,"label":943},{"id":5954,"label":5958},"68tkJsqong1CA-qveZnnTWt-SbECCJYGTPfwjLvkJ2A",1779284869501]