[{"data":1,"prerenderedAt":405},["ShallowReactive",2],{"site-settings":3,"navigation":21,"appearance-settings":49,"documents-landing":59,"documents-index":116},{"id":4,"title":5,"author":6,"avatar":7,"description":8,"extension":9,"footerText":10,"github":11,"icp":12,"location":15,"meta":16,"nickname":17,"siteUrl":18,"stem":19,"__hash__":20},"site\u002Fsettings\u002Fsite.yml","臭狗的奇妙冒险","罗奇奇","\u002Fimages\u002Fguy.jpg","一个臭狗的奇妙冒险，有时求知，有时思考，有时疯癫。","yml","认真生活，偶尔发癫。","https:\u002F\u002Fgithub.com\u002Fshoumenchougou",{"text":13,"href":14},"粤ICP备2023086611号","https:\u002F\u002Fbeian.miit.gov.cn\u002F","中国，深圳",{},"守门臭狗","https:\u002F\u002Fshoumenchougou.top","settings\u002Fsite","T0Me2l6TVcfvoXbjq9ctbxA_K77Qw6dNu2ZgRi-V54Y",{"id":22,"extension":9,"items":23,"meta":46,"stem":47,"__hash__":48},"navigation\u002Fsettings\u002Fnavigation.yml",[24,28,31,34,37,40,43],{"label":25,"href":26,"external":27},"首页","\u002F",false,{"label":29,"href":30,"external":27},"思绪","\u002Fthoughts",{"label":32,"href":33,"external":27},"博客","\u002Fblog",{"label":35,"href":36,"external":27},"文档","\u002Fdocs",{"label":38,"href":39,"external":27},"项目","\u002Fprojects",{"label":41,"href":42,"external":27},"工具","\u002Ftools",{"label":44,"href":45,"external":27},"关于","\u002Fabout",{},"settings\u002Fnavigation","V2ED2mJOFBz8rfRM0nH3DyKf-L-IkPSJ7EuEtwj8Mbw",{"id":50,"accentColor":51,"contentWidth":52,"density":53,"extension":9,"headingScale":54,"meta":55,"preset":56,"stem":57,"__hash__":58},"appearance\u002Fsettings\u002Fappearance.yml","","wide","comfortable","compact",{},"mist","settings\u002Fappearance","iS1ojpIdwsSzZaYMcl2ONMyLyeU8t3Xegb_uDDMoAoc",{"id":60,"title":35,"body":61,"description":103,"emptyText":104,"extension":105,"eyebrow":106,"libraryDescription":107,"libraryTitle":108,"meta":109,"navigation":110,"path":111,"seo":112,"stem":113,"updatedAt":114,"__hash__":115},"documentsLanding\u002Fpages\u002Fdocuments.md",{"type":62,"value":63,"toc":99},"minimark",[64,73,79,83,96],[65,66,67,68,72],"p",{},"这里收纳的是",[69,70,71],"strong",{},"需要被长期找到","的内容：操作流程、项目约定、使用说明，以及那些不适合写成博客的系统性记录。",[74,75,76],"blockquote",{},[65,77,78],{},"这个页面本身也由 Markdown 驱动。你可以在本地后台切换到“文档首页”，直接编辑这整块正文。",[80,81,82],"h2",{"id":82},"怎么使用这个板块",[84,85,86,90,93],"ul",{},[87,88,89],"li",{},"想修改这段介绍，编辑“文档首页”。",[87,91,92],{},"想增加一个新主题，在“文档内容”中新建文档。",[87,94,95],{},"标题、列表、引用、表格、代码块与图片都会按照当前网站主题渲染。",[65,97,98],{},"文档仍然参与静态构建，因此访客读取时不需要数据库，也不会给阿里云服务器增加运行压力。",{"title":51,"searchDepth":100,"depth":100,"links":101},2,[102],{"id":82,"depth":100,"text":82},"你我一起，改变世界。","还没有公开文档。","md","KNOWLEDGE BASE","每篇文档都是一个完整的 Markdown 页面，可以继续新增和重排。","文档目录",{},true,"\u002Fpages\u002Fdocuments",{"title":35,"description":103},"pages\u002Fdocuments","2026-08-29","r7zBhKRkhjnSMJ9lEtBlXg4UkVIuWp7b6GrzFCCuHd8",[117,262],{"id":118,"title":119,"body":120,"category":254,"description":255,"draft":27,"extension":105,"meta":256,"navigation":110,"order":257,"path":258,"seo":259,"stem":260,"updatedAt":114,"__hash__":261},"documents\u002Fdocs\u002Fstart-here\u002Findex.md","从这里开始",{"type":62,"value":121,"toc":249},[122,125,128,131,156,163,166,169,209,212,215,238,245],[65,123,124],{},"这份文档记录网站最常用的维护流程。所有内容都保存在仓库里，编辑完成后再生成静态文件。",[80,126,127],{"id":127},"打开本地编辑器",[65,129,130],{},"在项目目录运行：",[132,133,137],"pre",{"className":134,"code":135,"language":136,"meta":51,"style":51},"language-bash shiki shiki-themes github-light github-dark","bun run edit\n","bash",[138,139,140],"code",{"__ignoreMap":51},[141,142,145,149,153],"span",{"class":143,"line":144},"line",1,[141,146,148],{"class":147},"sScJk","bun",[141,150,152],{"class":151},"sZZnC"," run",[141,154,155],{"class":151}," edit\n",[65,157,158,159,162],{},"浏览器打开本地站点后，进入右下角的“编辑内容”。第一次使用时选择 ",[69,160,161],{},"Work with Local Repository","，再授权当前项目目录。",[80,164,165],{"id":165},"编辑文档",[65,167,168],{},"后台中的“文档首页”和“文档内容”都使用原始 Markdown 模式。正文可以直接写：",[132,170,174],{"className":171,"code":172,"language":173,"meta":51,"style":51},"language-markdown shiki shiki-themes github-light github-dark","## 一个二级标题\n\n- 第一项\n- 第二项\n\n> 一段需要强调的说明。\n","markdown",[138,175,176,181,186,192,198,203],{"__ignoreMap":51},[141,177,178],{"class":143,"line":144},[141,179,180],{},"## 一个二级标题\n",[141,182,183],{"class":143,"line":100},[141,184,185],{"emptyLinePlaceholder":110},"\n",[141,187,189],{"class":143,"line":188},3,[141,190,191],{},"- 第一项\n",[141,193,195],{"class":143,"line":194},4,[141,196,197],{},"- 第二项\n",[141,199,201],{"class":143,"line":200},5,[141,202,185],{"emptyLinePlaceholder":110},[141,204,206],{"class":143,"line":205},6,[141,207,208],{},"> 一段需要强调的说明。\n",[65,210,211],{},"保存后，本地预览会自动刷新。",[80,213,214],{"id":214},"生成静态站点",[132,216,218],{"className":134,"code":217,"language":136,"meta":51,"style":51},"bun run typecheck\nbun run build\n",[138,219,220,229],{"__ignoreMap":51},[141,221,222,224,226],{"class":143,"line":144},[141,223,148],{"class":147},[141,225,152],{"class":151},[141,227,228],{"class":151}," typecheck\n",[141,230,231,233,235],{"class":143,"line":100},[141,232,148],{"class":147},[141,234,152],{"class":151},[141,236,237],{"class":151}," build\n",[65,239,240,241,244],{},"最终文件会出现在 ",[138,242,243],{},"dist\u002F","。如果没有启用服务器发布 API，只需要上传这个目录里的内容。",[246,247,248],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":51,"searchDepth":100,"depth":100,"links":250},[251,252,253],{"id":127,"depth":100,"text":127},{"id":165,"depth":100,"text":165},{"id":214,"depth":100,"text":214},"站点维护","本地编辑、预览和发布这个网站的最短路径。",{},"1","\u002Fdocs\u002Fstart-here",{"title":119,"description":255},"docs\u002Fstart-here\u002Findex","xzET9ZqHta2oTBLcFuT11Potu5SfI2ZQ24wbJMHT_xA",{"id":263,"title":264,"body":265,"category":396,"description":397,"draft":27,"extension":105,"meta":398,"navigation":110,"order":399,"path":400,"seo":401,"stem":402,"updatedAt":403,"__hash__":404},"documents\u002Fdocs\u002Fpublishing\u002Findex.md","图文发布流程",{"type":62,"value":266,"toc":391},[267,270,273,314,317,335,357,364,367,370,384],[65,268,269],{},"手机通过独立的 Studio 发布台登录后发布图文。命令行工具可从服务器回环地址调用 Bun Publisher，或者通过 SSH 转发访问回环端口。",[80,271,272],{"id":272},"发布步骤",[274,275,276,283,300,307],"ol",{},[87,277,278,279,282],{},"Studio 使用登录会话。回环客户端携带内部令牌和唯一的 ",[138,280,281],{},"Idempotency-Key","。",[87,284,285,286,289,290,293,294,289,297,282],{},"提交图文。Studio 使用同源 ",[138,287,288],{},"\u002Fapi\u002Fv1\u002Fthoughts"," 或 ",[138,291,292],{},"\u002Fapi\u002Fv1\u002Fposts","，回环客户端使用 ",[138,295,296],{},"\u002Fv1\u002Fthoughts",[138,298,299],{},"\u002Fv1\u002Fposts",[87,301,302,303,306],{},"服务返回 ",[138,304,305],{},"202 Accepted"," 和作业地址。",[87,308,309,310,313],{},"公开发布等待作业进入 ",[138,311,312],{},"published","。私有草稿保留在服务器，直到主动发布。",[80,315,316],{"id":316},"管理已有内容",[65,318,319,320,323,324,327,328,331,332,282],{},"手机应用等可信客户端可以通过 ",[138,321,322],{},"GET \u002Fapi\u002Fv1\u002Fthoughts"," 与 ",[138,325,326],{},"GET \u002Fapi\u002Fv1\u002Fposts"," 分页查询内容，再通过带 ID 或 slug 的详情地址读取完整正文。详情响应会同时返回 ",[138,329,330],{},"ETag"," 和 ",[138,333,334],{},"resource.version",[65,336,337,338,341,342,345,346,349,350,352,353,356],{},"编辑使用 ",[138,339,340],{},"PATCH","，删除使用 ",[138,343,344],{},"DELETE","。这两类请求必须同时携带原详情响应中的 ",[138,347,348],{},"If-Match: \u003CETag>"," 和新的 ",[138,351,281],{},"。若电脑、CMS 或另一台手机已先修改同一篇内容，旧版本提交会收到 ",[138,354,355],{},"412 version_conflict","，不会覆盖新内容。",[65,358,359,360,363],{},"删除的 Markdown 和能够确认归属的 API 图片会先进入 ",[138,361,362],{},".data\u002Fpublisher\u002Ftrash\u002F","，不会直接永久清除。",[65,365,366],{},"构建失败时，Nginx 仍然读取上一个完整版本，不会把生成一半的页面展示给访客。",[80,368,369],{"id":369},"安全边界",[84,371,372,375,378,381],{},[87,373,374],{},"正式 Publisher 令牌保存在服务器上，浏览器使用可撤销的登录会话。",[87,376,377],{},"Publisher 和会话网关只监听回环地址。",[87,379,380],{},"私有草稿及专属附件存放在公开构建目录之外。",[87,382,383],{},"API 发布会修改服务器源码，本地再次部署前要先同步这些新内容。",[65,385,386,387,390],{},"完整的服务器安装、Nginx 与 systemd 配置保存在仓库的 ",[138,388,389],{},"docs\u002Fstudio-deployment.md"," 中。",{"title":51,"searchDepth":100,"depth":100,"links":392},[393,394,395],{"id":272,"depth":100,"text":272},{"id":316,"depth":100,"text":316},{"id":369,"depth":100,"text":369},"发布","通过受信客户端调用 API，新建、查询、编辑或删除思绪与博客，并等待静态版本上线。",{},"2","\u002Fdocs\u002Fpublishing",{"title":264,"description":397},"docs\u002Fpublishing\u002Findex","2026-11-03","XiCjQjHenKdcrdvOuYjWLAKRJFtRWxqwhWtLWtKrEfY",1793725130980]