[{"data":1,"prerenderedAt":4753},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server":421,"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server-surround":1143},[4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346],{"path":5},"\u002Fde\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":7},"\u002Fde\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":9},"\u002Fde\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":11},"\u002Fde\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":13},"\u002Fde\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":15},"\u002Fde\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":17},"\u002Fde\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":19},"\u002Fde\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":21},"\u002Fde\u002Farticle\u002Fsetup-antigravity-2",{"path":23},"\u002Fde\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":25},"\u002Fde\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":27},"\u002Fde\u002Farticle\u002Fsync-obsidian-across-devices",{"path":29},"\u002Fde\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":31},"\u002Fde\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":33},"\u002Fde\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":35},"\u002Fde\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":37},"\u002Fen\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":39},"\u002Fen\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":41},"\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":43},"\u002Fen\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":45},"\u002Fen\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":47},"\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":49},"\u002Fen\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":51},"\u002Fen\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":53},"\u002Fen\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":55},"\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":57},"\u002Fen\u002Farticle\u002Fsetup-antigravity-2",{"path":59},"\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":61},"\u002Fen\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":63},"\u002Fen\u002Farticle\u002Fsync-obsidian-across-devices",{"path":65},"\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":67},"\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":69},"\u002Fen\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":71},"\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":73},"\u002Fes\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":75},"\u002Fes\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":77},"\u002Fes\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":79},"\u002Fes\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":81},"\u002Fes\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":83},"\u002Fes\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":85},"\u002Fes\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":87},"\u002Fes\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":89},"\u002Fes\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":91},"\u002Fes\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":93},"\u002Fes\u002Farticle\u002Fsetup-antigravity-2",{"path":95},"\u002Fes\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":97},"\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":99},"\u002Fes\u002Farticle\u002Fsync-obsidian-across-devices",{"path":101},"\u002Fes\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":103},"\u002Fes\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":105},"\u002Fes\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":107},"\u002Fes\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":109},"\u002Ffr\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":111},"\u002Ffr\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":113},"\u002Ffr\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":115},"\u002Ffr\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":117},"\u002Ffr\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":119},"\u002Ffr\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":121},"\u002Ffr\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":123},"\u002Ffr\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":125},"\u002Ffr\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":127},"\u002Ffr\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":129},"\u002Ffr\u002Farticle\u002Fsetup-antigravity-2",{"path":131},"\u002Ffr\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":133},"\u002Ffr\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":135},"\u002Ffr\u002Farticle\u002Fsync-obsidian-across-devices",{"path":137},"\u002Ffr\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":139},"\u002Ffr\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":141},"\u002Ffr\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":143},"\u002Ffr\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":145},"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":147},"\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":149},"\u002Fid\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":151},"\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":153},"\u002Fid\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":155},"\u002Fid\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":157},"\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":159},"\u002Fid\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":161},"\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":163},"\u002Fid\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":165},"\u002Fid\u002Farticle\u002Fsetup-antigravity-2",{"path":167},"\u002Fid\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":169},"\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":171},"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices",{"path":173},"\u002Fid\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":175},"\u002Fid\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":177},"\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":179},"\u002Fid\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":181},"\u002Fja\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":183},"\u002Fja\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":185},"\u002Fja\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":187},"\u002Fja\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":189},"\u002Fja\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":191},"\u002Fja\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":193},"\u002Fja\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":195},"\u002Fja\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":197},"\u002Fja\u002Farticle\u002Fsetup-antigravity-2",{"path":199},"\u002Fja\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":201},"\u002Fja\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":203},"\u002Fja\u002Farticle\u002Fsync-obsidian-across-devices",{"path":205},"\u002Fja\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":207},"\u002Fja\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":209},"\u002Fja\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":211},"\u002Fja\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":213},"\u002Fpt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":215},"\u002Fpt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":217},"\u002Fpt\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":219},"\u002Fpt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":221},"\u002Fpt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":223},"\u002Fpt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":225},"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":227},"\u002Fpt\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":229},"\u002Fpt\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":231},"\u002Fpt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":233},"\u002Fpt\u002Farticle\u002Fsetup-antigravity-2",{"path":235},"\u002Fpt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":237},"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":239},"\u002Fpt\u002Farticle\u002Fsync-obsidian-across-devices",{"path":241},"\u002Fpt\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":243},"\u002Fpt\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":245},"\u002Fpt\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":247},"\u002Fpt\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":249},"\u002Ftw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":251},"\u002Ftw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":253},"\u002Ftw\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":255},"\u002Ftw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":257},"\u002Ftw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":259},"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":261},"\u002Ftw\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":263},"\u002Ftw\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":265},"\u002Ftw\u002Farticle\u002Fsetup-antigravity-2",{"path":267},"\u002Ftw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":269},"\u002Ftw\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":271},"\u002Ftw\u002Farticle\u002Fsync-obsidian-across-devices",{"path":273},"\u002Ftw\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":275},"\u002Ftw\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":277},"\u002Ftw\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":279},"\u002Ftw\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":281},"\u002Fvi\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":283},"\u002Fvi\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":285},"\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":287},"\u002Fvi\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":289},"\u002Fvi\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":291},"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":293},"\u002Fvi\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":295},"\u002Fvi\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":297},"\u002Fvi\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":299},"\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":301},"\u002Fvi\u002Farticle\u002Fsetup-antigravity-2",{"path":303},"\u002Fvi\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":305},"\u002Fvi\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":307},"\u002Fvi\u002Farticle\u002Fsync-obsidian-across-devices",{"path":309},"\u002Fvi\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":311},"\u002Fvi\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":313},"\u002Fvi\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":315},"\u002Fvi\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":317},"\u002Fzh\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":319},"\u002Fzh\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":321},"\u002Fzh\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":323},"\u002Fzh\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":325},"\u002Fzh\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":327},"\u002Fzh\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":329},"\u002Fzh\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":331},"\u002Fzh\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":333},"\u002Fzh\u002Farticle\u002Fsetup-antigravity-2",{"path":335},"\u002Fzh\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":337},"\u002Fzh\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":339},"\u002Fzh\u002Farticle\u002Fsync-obsidian-across-devices",{"path":341},"\u002Fzh\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":343},"\u002Fzh\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":345},"\u002Fzh\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":347},"\u002Fzh\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",[349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417],{"title":350,"path":351,"stem":352},"AI Agent Skills: What They Are & How to Create Them","\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them","en\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"title":354,"path":355,"stem":356},"Bringing Buzz to DeepSeek Harness: Taught to Speak Nostr","\u002Farticle\u002Fbringing-buzz-to-deepseek-harness","en\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"title":358,"path":359,"stem":360},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":362,"path":363,"stem":364},"How to Expose Hermes Agent Privately with Cloudflare WARP","\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp","en\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"title":366,"path":367,"stem":368},"How AI Agent Skills Replace Nuxt App Scaffolding Scripts","\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts","en\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"title":370,"path":371,"stem":372},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":374,"path":375,"stem":376},"How to Deploy Hermes Agent on a Linux VPS","\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server","en\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"title":378,"path":379,"stem":380},"Self-Host Your Travel Itineraries with TREK and Docker","\u002Farticle\u002Fself-hosted-travel-planner-trek","en\u002Farticle\u002Fself-hosted-travel-planner-trek",{"title":382,"path":383,"stem":384},"Self-Host Block's Buzz: Shared AI Agent Workspace","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues","en\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"title":386,"path":387,"stem":388},"How to Self-Host a BitWarden Compatible Server Nodewarden","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":390,"path":391,"stem":392},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":394,"path":395,"stem":396},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":398,"path":399,"stem":400},"Switch Between Multiple Cloudflare WARP Orgs on Mac","\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac","en\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"title":402,"path":403,"stem":404},"How to Sync Obsidian Vaults Across Devices Securely","\u002Farticle\u002Fsync-obsidian-across-devices","en\u002Farticle\u002Fsync-obsidian-across-devices",{"title":406,"path":407,"stem":408},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":410,"path":411,"stem":412},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":414,"path":415,"stem":416},"Build a Persistent AI Memory System on Cloudflare","\u002Farticle\u002Fuse-cloudflare-as-ai-memory","en\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"title":418,"path":419,"stem":420},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":422,"title":423,"author":424,"body":425,"category":1109,"date":1111,"description":1112,"extension":1113,"image":1114,"imageAlt":1115,"isPublished":976,"meta":1116,"minRead":973,"navigation":976,"path":259,"seo":1133,"stem":1135,"tags":1136,"updatedAt":1141,"__hash__":1142},"article\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server.md","如何在 Linux VPS 遠端伺服器上從零開始安裝、部署與設定 Hermes Agent","",{"type":426,"value":427,"toc":1098},"minimark",[428,433,437,440,444,449,452,474,481,484,515,522,552,559,566,581,594,602,608,626,630,633,655,661,664,676,687,698,730,734,745,755,766,780,787,797,803,834,850,854,861,873,878,916,920,923,939,949,1037,1040,1088,1091,1094],[429,430,432],"h2",{"id":431},"為什麼在遠端-vps-上代管-hermes-agent","為什麼在遠端 VPS 上代管 Hermes Agent？",[434,435,436],"p",{},"由於 Hermes Agent 具備執行背景任務、排程作業以及回應 Webhook 呼叫的能力，我們需要一台機器保持 24\u002F7 全天候待命。本地設備可能會遇到斷電、斷網，或者面臨硬體資源耗盡的風險。而遠端伺服器（VPS）則能保證 99% 以上的在線率（Uptime），並在需要時輕鬆進行計算資源的彈性擴充。",[434,438,439],{},"目前市面上有幾家性價比極高的虛擬專屬伺服器（VPS）提供商，例如 Hetzner、Hostinger 和 Contabo。我們已經使用 Contabo 有一段時間了，到目前為止，它的表現非常穩定且出色。",[429,441,443],{"id":442},"如何在-linux-vps-上設定-hermes-agent","如何在 Linux VPS 上設定 Hermes Agent",[445,446,448],"h3",{"id":447},"第一步連線到您的-vps","第一步：連線到您的 VPS",[434,450,451],{},"開啟終端機並使用 SSH 登入您的遠端伺服器：",[453,454,458],"pre",{"className":455,"code":456,"language":457,"meta":424,"style":424},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ssh root@your_server_ip\n","bash",[459,460,461],"code",{"__ignoreMap":424},[462,463,466,470],"span",{"class":464,"line":465},"line",1,[462,467,469],{"class":468},"sBMFI","ssh",[462,471,473],{"class":472},"sfazB"," root@your_server_ip\n",[434,475,476],{},[477,478],"img",{"alt":479,"src":480},"在終端機中透過 SSH 連線到 Linux VPS 伺服器","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fvps-terminal-ssh-connection.webp",[434,482,483],{},"確保伺服器的套件均已更新至最新版本：",[453,485,487],{"className":455,"code":486,"language":457,"meta":424,"style":424},"sudo apt update && sudo apt upgrade -y\n",[459,488,489],{"__ignoreMap":424},[462,490,491,494,497,500,504,507,509,512],{"class":464,"line":465},[462,492,493],{"class":468},"sudo",[462,495,496],{"class":472}," apt",[462,498,499],{"class":472}," update",[462,501,503],{"class":502},"sMK4o"," &&",[462,505,506],{"class":468}," sudo",[462,508,496],{"class":472},[462,510,511],{"class":472}," upgrade",[462,513,514],{"class":472}," -y\n",[434,516,517,518,521],{},"新增一個新使用者 ",[459,519,520],{},"hermes","，或者您自訂的其他使用者名稱：",[453,523,525],{"className":455,"code":524,"language":457,"meta":424,"style":424},"sudo adduser hermes \nsudo passwd hermes\n",[459,526,527,541],{"__ignoreMap":424},[462,528,529,531,534,537],{"class":464,"line":465},[462,530,493],{"class":468},[462,532,533],{"class":472}," adduser",[462,535,536],{"class":472}," hermes",[462,538,540],{"class":539},"sTEyZ"," \n",[462,542,544,546,549],{"class":464,"line":543},2,[462,545,493],{"class":468},[462,547,548],{"class":472}," passwd",[462,550,551],{"class":472}," hermes\n",[434,553,554,555,558],{},"關閉 ",[459,556,557],{},"root"," 使用者的密碼登入以增強安全性：",[560,561,562],"ol",{},[563,564,565],"li",{},"開啟 SSH 設定檔：",[453,567,569],{"className":455,"code":568,"language":457,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fssh\u002Fsshd_config\n",[459,570,571],{"__ignoreMap":424},[462,572,573,575,578],{"class":464,"line":465},[462,574,493],{"class":468},[462,576,577],{"class":472}," nano",[462,579,580],{"class":472}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[560,582,583],{"start":543},[563,584,585,586,589,590,593],{},"找到 ",[459,587,588],{},"PermitRootLogin"," 這一行，將其值修改為 ",[459,591,592],{},"no","：",[453,595,600],{"className":596,"code":598,"language":599,"meta":424},[597],"language-text","PermitRootLogin no\n","text",[459,601,598],{"__ignoreMap":424},[560,603,605],{"start":604},3,[563,606,607],{},"儲存檔案並重啟 SSH 服務：",[453,609,611],{"className":455,"code":610,"language":457,"meta":424,"style":424},"sudo systemctl restart ssh\n",[459,612,613],{"__ignoreMap":424},[462,614,615,617,620,623],{"class":464,"line":465},[462,616,493],{"class":468},[462,618,619],{"class":472}," systemctl",[462,621,622],{"class":472}," restart",[462,624,625],{"class":472}," ssh\n",[445,627,629],{"id":628},"第二步安裝-hermes-agent","第二步：安裝 Hermes Agent",[434,631,632],{},"執行以下命令：",[453,634,636],{"className":455,"code":635,"language":457,"meta":424,"style":424},"curl -fsSL https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh | bash\n",[459,637,638],{"__ignoreMap":424},[462,639,640,643,646,649,652],{"class":464,"line":465},[462,641,642],{"class":468},"curl",[462,644,645],{"class":472}," -fsSL",[462,647,648],{"class":472}," https:\u002F\u002Fhermes-agent.nousresearch.com\u002Finstall.sh",[462,650,651],{"class":502}," |",[462,653,654],{"class":468}," bash\n",[434,656,657],{},[477,658],{"alt":659,"src":660},"在終端機中執行 Hermes Agent 的一鍵安裝指令碼","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-installation-terminal.webp",[434,662,663],{},"安裝完成後，輸入以下命令驗證是否安裝成功：",[453,665,667],{"className":455,"code":666,"language":457,"meta":424,"style":424},"hermes --version\n",[459,668,669],{"__ignoreMap":424},[462,670,671,673],{"class":464,"line":465},[462,672,520],{"class":468},[462,674,675],{"class":472}," --version\n",[434,677,678,679,682,683],{},"執行 ",[459,680,681],{},"hermes setup"," 命令列工具來設定 Hermes Agent：\n",[477,684],{"alt":685,"src":686},"In terminal, run hermes setup command to initiate setup wizard","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-agent-setup-wizard.webp",[434,688,689,690,693,694],{},"選擇大語言模型（LLM）提供商，我們可以先選擇 ",[459,691,692],{},"DeepSeek","，後續再依需求加入其他模型。\n",[477,695],{"alt":696,"src":697},"在 Hermes 設定中選擇 DeepSeek 作為 LLM 大模型提供商","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-llm-provider-selection.webp",[434,699,700,701,703,704,708,712,713,716,717,721,722,725,726],{},"輸入您的 ",[459,702,692],{}," API 金鑰：\n",[477,705],{"alt":706,"src":707},"在終端機命令列中輸入 DeepSeek API 金鑰","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-enter-api-key.webp",[477,709],{"alt":710,"src":711},"成功驗證並確認大模型提供商的 API 金鑰","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-api-key-success.webp","\n在執行 Hermes Agent 的環境選項中選擇 ",[459,714,715],{},"local machine","：\n",[477,718],{"alt":719,"src":720},"選擇 local machine 本地設備作為 Hermes Agent 的執行環境","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-local-machine.webp","\n在通訊管道（Channels）中選擇 ",[459,723,724],{},"Telegram","，其他管道可以在後續隨時設定。\n",[477,727],{"alt":728,"src":729},"在 Hermes 設定中選擇 Telegram 作為通訊管道管道","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-select-telegram-channel.webp",[445,731,733],{"id":732},"第三步與-telegram-進行整合","第三步：與 Telegram 進行整合",[434,735,736,737,740,741],{},"選擇選項 ",[459,738,739],{},"[2]"," 來使用 Telegram 機器人。\n",[477,742],{"alt":743,"src":744},"選擇選項開始整合並設定 Telegram 機器人","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-bot-integration-option.webp",[434,746,747,748,750,751],{},"開啟 ",[459,749,724],{}," 並搜尋 'BotFather' 官方帳號。\n",[477,752],{"alt":753,"src":754},"在 Telegram 應用中搜尋官方 BotFather 帳號","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-botfather.webp",[434,756,757,758,761,762],{},"點擊 ",[459,759,760],{},"Open"," 開啟與 'BotFather' 的對話框。\n",[477,763],{"alt":764,"src":765},"在 Telegram 中開啟與 BotFather 的對話框","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-open-botfather-chat.webp",[434,767,757,768,771,772,775,776],{},[459,769,770],{},"Create a New Bot","（或輸入 ",[459,773,774],{},"\u002Fnewbot"," 指令）。\n",[477,777],{"alt":778,"src":779},"向 BotFather 發送 \u002Fnewbot 指令以建立全新的機器人","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-create-new-bot.webp",[434,781,782,783],{},"按照提示填寫名稱和使用者名稱，完成機器人的建立。\n",[477,784],{"alt":785,"src":786},"設定新 Telegram 機器人的暱稱與唯一使用者名稱","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-bot-details-configured.webp",[434,788,757,789,792,793],{},[459,790,791],{},"Copy"," 複製機器人 Token（權杖），並將其貼回終端機中。\n",[477,794],{"alt":795,"src":796},"複製新建立的 Telegram 機器人的 HTTP API 存取 Token","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fbotfather-copy-http-api-token.webp",[434,798,799,800,802],{},"獲取您的 ",[459,801,724],{}," 帳號 ID 並將其加入允許存取的使用者清單（'Allowed user list'）中：",[804,805,806,816,831],"ul",{},[563,807,808,809,811,812],{},"在 ",[459,810,724],{}," 中搜尋 '@raw_data_bot'。\n",[477,813],{"alt":814,"src":815},"在 Telegram 中搜尋 raw data bot 機器人以檢索帳號 ID","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-search-raw-data-bot.webp",[563,817,818,819,822,823,826,827],{},"點擊進入 ",[459,820,821],{},"RawDataBot"," 並點擊 Start（開始）按鈕。您的使用者 ID 將顯示在 ",[459,824,825],{},"P.S. Your ID:"," 後方。\n",[477,828],{"alt":829,"src":830},"啟動 RawDataBot 機器人以獲取目前使用者 的帳號 ID","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-raw-data-bot-user-id.webp",[563,832,833],{},"複製該使用者 ID 並貼到終端機中。",[434,835,836,837,841,842,846],{},"由於我們在雲端執行此服務，我們希望它能在系統啟動时自動執行。\n",[477,838],{"alt":839,"src":840},"設定 Hermes systemd 服務開機自啟自動執行的選項","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-autostart-service-option.webp","\n將其他設定均保持預設值即可：\n",[477,843],{"alt":844,"src":845},"在終端機設定中將各項基礎設定保持預設推薦值","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-1.webp",[477,847],{"alt":848,"src":849},"在 Hermes 設定精靈中完成預設選項的設定","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Fhermes-setup-leave-defaults-2.webp",[429,851,853],{"id":852},"使用-telegram-機器人測試您的-hermes-agent","使用 Telegram 機器人測試您的 Hermes Agent",[434,855,856,857,860],{},"執行以下命令啟動 ",[459,858,859],{},"hermes gateway"," 服務：",[453,862,864],{"className":455,"code":863,"language":457,"meta":424,"style":424},"hermes gateway\n",[459,865,866],{"__ignoreMap":424},[462,867,868,870],{"class":464,"line":465},[462,869,520],{"class":468},[462,871,872],{"class":472}," gateway\n",[434,874,747,875,877],{},[459,876,724],{},"，將剛剛建立的機器人，例如 '@tech_cloud_hermes_bot'，加入對話中。",[804,879,880,895,906],{},[563,881,882,883,886,887,890,891],{},"在對話框中輸入 ",[459,884,885],{},"\u002Fnew"," 啟動一個全新的 ",[459,888,889],{},"Hermes Agent"," 對話工作階段。\n",[477,892],{"alt":893,"src":894},"在 Telegram 聊天框中輸入 \u002Fnew 指令開啟全新的代理對話工作階段","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-new-session.webp",[563,896,897,898,901,902],{},"輸入 ",[459,899,900],{},"\u002Fcommands"," 指令將列出所有可用的操作指令。\n",[477,903],{"alt":904,"src":905},"在 Telegram 聊天框中輸入 \u002Fcommands 指令查看可用操作指令清單","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-commands-list.webp",[563,907,897,908,911,912],{},[459,909,910],{},"\u002Fmodel"," 指令即可查看目前可用的 LLM 大模型列表。\n",[477,913],{"alt":914,"src":915},"在 Telegram 聊天框中輸入 \u002Fmodel 指令查看可切換的 LLM 列表","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002Ftelegram-chat-hermes-model-selection.webp",[429,917,919],{"id":918},"將-hermes-gateway-設定為背景常駐服務","將 Hermes Gateway 設定為背景常駐服務",[434,921,922],{},"建立 systemd 守護行程服務檔案：",[453,924,928],{"className":925,"code":926,"language":927,"meta":424,"style":424},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n","shell",[459,929,930],{"__ignoreMap":424},[462,931,932,934,936],{"class":464,"line":465},[462,933,493],{"class":468},[462,935,577],{"class":472},[462,937,938],{"class":472}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-gateway.service\n",[434,940,941,942,945,946,948],{},"貼上以下設定，注意將 ",[459,943,944],{},"\u002Fhome\u002Fhermes"," 中的 ",[459,947,520],{}," 替換為您自己的使用者名稱：",[453,950,954],{"className":951,"code":952,"language":953,"meta":424,"style":424},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=Hermes Gateway\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n","ini",[459,955,956,961,966,971,978,984,990,996,1002,1008,1014,1020,1025,1031],{"__ignoreMap":424},[462,957,958],{"class":464,"line":465},[462,959,960],{},"[Unit]\n",[462,962,963],{"class":464,"line":543},[462,964,965],{},"Description=Hermes Gateway\n",[462,967,968],{"class":464,"line":604},[462,969,970],{},"After=network.target\n",[462,972,974],{"class":464,"line":973},4,[462,975,977],{"emptyLinePlaceholder":976},true,"\n",[462,979,981],{"class":464,"line":980},5,[462,982,983],{},"[Service]\n",[462,985,987],{"class":464,"line":986},6,[462,988,989],{},"User=hermes\n",[462,991,993],{"class":464,"line":992},7,[462,994,995],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[462,997,999],{"class":464,"line":998},8,[462,1000,1001],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes gateway\n",[462,1003,1005],{"class":464,"line":1004},9,[462,1006,1007],{},"Restart=always\n",[462,1009,1011],{"class":464,"line":1010},10,[462,1012,1013],{},"RestartSec=10\n",[462,1015,1017],{"class":464,"line":1016},11,[462,1018,1019],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[462,1021,1023],{"class":464,"line":1022},12,[462,1024,977],{"emptyLinePlaceholder":976},[462,1026,1028],{"class":464,"line":1027},13,[462,1029,1030],{},"[Install]\n",[462,1032,1034],{"class":464,"line":1033},14,[462,1035,1036],{},"WantedBy=multi-user.target\n",[434,1038,1039],{},"啟用並啟動該背景服務：",[453,1041,1043],{"className":925,"code":1042,"language":927,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-gateway\nsudo systemctl start hermes-gateway\nsudo systemctl status hermes-gateway\n",[459,1044,1045,1054,1066,1077],{"__ignoreMap":424},[462,1046,1047,1049,1051],{"class":464,"line":465},[462,1048,493],{"class":468},[462,1050,619],{"class":472},[462,1052,1053],{"class":472}," daemon-reload\n",[462,1055,1056,1058,1060,1063],{"class":464,"line":543},[462,1057,493],{"class":468},[462,1059,619],{"class":472},[462,1061,1062],{"class":472}," enable",[462,1064,1065],{"class":472}," hermes-gateway\n",[462,1067,1068,1070,1072,1075],{"class":464,"line":604},[462,1069,493],{"class":468},[462,1071,619],{"class":472},[462,1073,1074],{"class":472}," start",[462,1076,1065],{"class":472},[462,1078,1079,1081,1083,1086],{"class":464,"line":973},[462,1080,493],{"class":468},[462,1082,619],{"class":472},[462,1084,1085],{"class":472}," status",[462,1087,1065],{"class":472},[429,1089,1090],{"id":1090},"結語與展望",[434,1092,1093],{},"在本文中，我們主要分享了如何在雲端伺服器上架設並設定 Hermes Agent，並透過 Telegram 實現與其雙向的高效溝通。讓 Hermes Agent 運行在遠端 VPS 上，能夠為您打造一個 24 小時永不下線的、真正的 AI 數位化個人助理。",[1095,1096,1097],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":424,"searchDepth":543,"depth":604,"links":1099},[1100,1101,1106,1107,1108],{"id":431,"depth":543,"text":432},{"id":442,"depth":543,"text":443,"children":1102},[1103,1104,1105],{"id":447,"depth":604,"text":448},{"id":628,"depth":604,"text":629},{"id":732,"depth":604,"text":733},{"id":852,"depth":543,"text":853},{"id":918,"depth":543,"text":919},{"id":1090,"depth":543,"text":1090},[1110],"ai-agents","2026-06-19","在本篇詳細的實戰教學中，我們將逐步向您展示如何在遠端 Linux VPS 伺服器上成功安裝與部署 Hermes Agent，並實現 24 小時不間斷的穩定運行。我們還會手把手教您如何透過自訂的 Telegram 機器人，快速與Hermes進行無縫對接，輕鬆實現自動化的工作流程管理，確保系統隨時在線回應。","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20Setup%20Hermes%20on%20Remote%20Server\u002FTW-How%20to%20Setup%20Hermes%20on%20Remote%20Server.webp","手把手教您如何在遠端 Linux VPS 伺服器上成功安裝與部署 Hermes Agent，並實現與自訂 Telegram 機器人的雙向整合。",{"schemaOrg":1117,"robots":1131,"sitemap":1132},[1118],{"@type":1119,"name":423,"description":1112,"image":1114,"step":1120},"HowTo",[1121,1125,1128],{"@type":1122,"name":448,"text":1123,"image":480,"url":1124},"HowToStep","開啟終端機並使用 SSH 登入您的遠端伺服器： 確保伺服器的套件均已更新至最新版本： 新增一個新使用者 `hermes`，或者您自訂的其他使用者名稱： 關閉 `root` 使用者的密碼登入以增強安全性： 1. 開啟 SSH 設定檔： 2. 找到 `PermitRootLogin` 這一行，將其...","#-vps",{"@type":1122,"name":629,"text":1126,"image":660,"url":1127},"執行以下命令： 安裝完成後，輸入以下命令驗證是否安裝成功： 執行 `hermes setup` 命令列工具來設定 Hermes Agent： 選擇大語言模型（LLM）提供商，我們可以先選擇 `DeepSeek`，後續再依需求加入其他模型。 輸入您的 `DeepSeek` API 金鑰： 在執行...","#-hermes-agent",{"@type":1122,"name":733,"text":1129,"image":744,"url":1130},"選擇選項 `[2]` 來使用 Telegram 機器人。 開啟 `Telegram` 並搜尋 'BotFather' 官方帳號。 點擊 `Open` 開啟與 'BotFather' 的對話框。 點擊 `Create a New Bot`（或輸入 `\u002Fnewbot` 指令）。 按照提示填寫名稱和...","#-telegram-","index, follow",{"lastmod":1111},{"title":1134,"description":1112,"ogTitle":423,"ogDescription":1112,"twitterTitle":423,"twitterDescription":1112},"Hermes Agent VPS 部署：Telegram 機器人雙向整合指南","tw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",[889,1137,1138,1139,1140],"VPS Setup","Telegram Bot","Linux VPS","AI Agent",null,"eiDUNI72ExCUCFln1uzuVunlhhybTJO26B1iuQ4qUaM",{"surround":1144,"related":2020},[1145,1618],{"id":1146,"title":1147,"author":1141,"body":1148,"category":1599,"date":1600,"description":1601,"extension":1113,"image":1602,"imageAlt":1603,"isPublished":976,"meta":1604,"minRead":1609,"navigation":976,"path":267,"seo":1610,"stem":1612,"tags":1613,"updatedAt":1141,"__hash__":1617},"article\u002Ftw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude.md","NetSuite AI Connector整合與配置完全指南：模型上下文協定MCP設定與典型業務場景詳解",{"type":426,"value":1149,"toc":1585},[1150,1153,1169,1173,1183,1200,1204,1343,1347,1401,1405,1457,1461,1465,1471,1476,1480,1486,1498,1502,1512,1528,1532,1538,1543,1547,1553,1556,1560],[434,1151,1152],{},"Oracle NetSuite 作為面向中小型企業的雲端企業資源規劃（ERP）平台，早已享譽業界。然而，其網頁端使用者介面（UI）也因其陡峭的学习曲線、繁瑣的點擊操作以及死板的報表結構而備受詬病。",[434,1154,1155,1156,1160,1161,1164,1165,1168],{},"隨著近期 ",[1157,1158,1159],"strong",{},"NetSuite AI Connector Service"," 的發布，使用者現在可以藉由 ",[1157,1162,1163],{},"Model Context Protocol (MCP，模型上下文協定)"," 和 ",[1157,1166,1167],{},"AI（人工智慧）助手","，直接使用通俗的自然語言提问，並即時獲取企業財務與營運數據的解答。",[429,1170,1172],{"id":1171},"netsuite-mcp-ai-連接器的工作原理","NetSuite MCP AI 連接器的工作原理",[434,1174,1175,1178,1179,1182],{},[1157,1176,1177],{},"NetSuite 的 MCP"," 向 ",[1157,1180,1181],{},"AI"," 開放了一系列工具，例如執行 SuiteQL 查詢、讀取已儲存搜尋（Saved Searches）和報表，或者執行記錄操作（如建立新的客戶記錄）。所有工具的操作權限都嚴格受控於 NetSuite 原生的基於角色的權限控制（RBAC）。",[434,1184,1185,1186,1188,1189,1192,1193,1196,1197,1199],{},"當使用者用日常語言提出問題時，",[1157,1187,1181],{}," 會使用 ",[1157,1190,1191],{},"Model Context Protocol (MCP)"," 將該請求轉化為 NetSuite 能夠理解的結構化操作。",[1157,1194,1195],{},"NetSuite"," 將使用該使用者端的權限執行這些操作，然後將結果返回給 ",[1157,1198,1181],{}," 進行分析和視覺化呈現。",[429,1201,1203],{"id":1202},"netsuite-ai-connector-配置指南","NetSuite AI Connector 配置指南",[560,1205,1206,1264,1279,1288,1295,1302,1324],{},[563,1207,1208,1209,1212,1213,1216,1217],{},"啟用 ",[1157,1210,1211],{},"Server SuiteScript","（伺服器端 SuiteScript）和 ",[1157,1214,1215],{},"REST Web Services","（REST Web 服務）\n",[560,1218,1219,1231,1258],{},[563,1220,1221,1222,1226,1227],{},"訪問 ",[1223,1224,1225],"em",{},"Setup > Company > Enable Features","（設定 > 公司 > 啟用功能）。\n",[477,1228],{"alt":1229,"src":1230},"Oracle NetSuite「啟用功能」設定頁面（位於「設定 > 公司」選單下）","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-setup-company-enable-features.webp",[563,1232,808,1233,1236,1237],{},[1157,1234,1235],{},"SuiteCloud"," 子頁籤中：\n",[804,1238,1239,1249],{},[563,1240,1241,1242,1244,1245],{},"在 SuiteScript 欄位下，勾選 ",[1157,1243,1211],{},"。\n",[477,1246],{"alt":1247,"src":1248},"在 NetSuite SuiteCloud 索引標籤中勾選啟用「伺服器 SuiteScript」核取方塊","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-server-suitescript.webp",[563,1250,1251,1252,1244,1254],{},"在 SuiteTalk (Web Services) 欄位下，勾选 ",[1157,1253,1215],{},[477,1255],{"alt":1256,"src":1257},"在 NetSuite SuiteCloud 索引標籤中勾選啟用「REST 網頁服務」核取方塊","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-enable-features-rest-web-services.webp",[563,1259,757,1260,1263],{},[1157,1261,1262],{},"Save","（儲存）。",[563,1265,1266,1267,1270,1271,1274,1275],{},"首先安裝 ",[1157,1268,1269],{},"NetSuite MCP Standard Tools","。點擊 ",[1223,1272,1273],{},"Customization > SuiteCloud Development > SuiteApp Marketplace","（客製化 > SuiteCloud 開發 > SuiteApp 市集）。\n",[477,1276],{"alt":1277,"src":1278},"在 NetSuite 中經由「自訂 > SuiteCloud 開發」導覽至 SuiteApp 應用程式商店","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-navigation.webp",[563,1280,1281,1282,1244,1284],{},"搜尋 ",[1157,1283,1269],{},[477,1285],{"alt":1286,"src":1287},"在 SuiteApp 應用程式商店中搜尋「NetSuite MCP Standard Tools」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-marketplace-search-mcp-tools.webp",[563,1289,1290,1291],{},"安裝完成後，您將在右側看到「Installed」（已安裝）狀態。\n",[477,1292],{"alt":1293,"src":1294},"在應用程式商店中確認「NetSuite MCP Standard Tools」狀態顯示為「已安裝」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-status-mcp-tools.webp",[563,1296,1297,1298],{},"按照相同步驟安裝「NetSuite AI Connector Service Companion」。\n",[477,1299],{"alt":1300,"src":1301},"確認「NetSuite AI Connector Service Companion」已成功安裝的狀態頁面","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-suiteapp-installed-ai-connector-companion.webp",[563,1303,1304,1305],{},"建立整合記錄（Integration Record）\n",[560,1306,1307,1317],{},[563,1308,1221,1309,1312,1313],{},[1223,1310,1311],{},"Setup > Integration > Manage Integrations","（設定 > 整合 > 管理整合）。\n",[477,1314],{"alt":1315,"src":1316},"導覽至 NetSuite 設定選單中的「整合 > 管理整合」頁面","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-integration-manage-integrations-navigation.webp",[563,1318,1319,1320],{},"為 ChatGPT 建立一個 Integration Record，稍後我們將回來填入實際產生的 token_id：\n",[477,1321],{"alt":1322,"src":1323},"在 NetSuite 中為 ChatGPT 連線建立全新的整合紀錄（Integration Record）","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-create-integration-record-chatgpt.webp",[563,1325,1326,1327,1331,1335,1339],{},"為 MCP 建立一個具備最小化權限的自訂角色並分配給對應使用者，例如：\n",[477,1328],{"alt":1329,"src":1330},"為 NetSuite MCP 整合配置專屬自訂角色的權限設定 - 步驟 1","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-1.webp",[477,1332],{"alt":1333,"src":1334},"為 NetSuite MCP 整合配置專屬自訂角色的權限設定 - 步驟 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-2.webp",[477,1336],{"alt":1337,"src":1338},"為 NetSuite MCP 整合配置專屬自訂角色的權限設定 - 步驟 3","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-3.webp",[477,1340],{"alt":1341,"src":1342},"為 NetSuite MCP 整合配置專屬自訂角色的權限設定 - 步驟 4","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-custom-role-mcp-permissions-4.webp",[429,1344,1346],{"id":1345},"如何在-chatgpt-中整合並配置-netsuite-mcp","如何在 ChatGPT 中整合並配置 NetSuite MCP",[560,1348,1349,1356,1363,1370,1380,1387,1394],{},[563,1350,1351,1352],{},"點擊 ChatGPT 的「Settings」（設定）。\n",[477,1353],{"alt":1354,"src":1355},"導覽至 ChatGPT 使用者介面中的「設定（Settings）」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-settings-navigation.webp",[563,1357,1358,1359],{},"依次點擊「Apps」（應用程式）>「Advanced settings」（進階設定）。\n",[477,1360],{"alt":1361,"src":1362},"在 ChatGPT 設定選單中點選「應用程式（Apps）」與「進階設定」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-apps-advanced-settings.webp",[563,1364,1365,1366],{},"開啟「Developer mode」（開發者模式），然後點擊「Create app」（建立應用程式）。\n",[477,1367],{"alt":1368,"src":1369},"在 ChatGPT 設定中啟用「開發者模式」並點擊「建立應用程式」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-developer-mode-create-app.webp",[563,1371,1372,1373,1244,1376],{},"填寫相關細節。在「Connection」（連線）中，輸入 ",[459,1374,1375],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fall",[477,1377],{"alt":1378,"src":1379},"輸入 NetSuite MCP 連線網址等詳細資訊以在 ChatGPT 中建立連線","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-create-app-netsuite-mcp-connection.webp",[563,1381,1382,1383],{},"點擊「Create」（建立）。整合成功後，您會看到如下彈窗。\n",[477,1384],{"alt":1385,"src":1386},"ChatGPT 彈出視窗確認 NetSuite MCP 已成功整合與串接","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-mcp-integrated-popup.webp",[563,1388,1389,1390],{},"點擊「Sign in with NetSuite MCP」（登入 NetSuite MCP）。\n",[477,1391],{"alt":1392,"src":1393},"ChatGPT 提示要求登入與授權「NetSuite MCP Standard Tools」連線","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-sign-in-with-netsuite-mcp.webp",[563,1395,1396,1397],{},"點擊「Continue」（繼續）按鈕授予權限。\n",[477,1398],{"alt":1399,"src":1400},"在 ChatGPT 授權頁面中允許並授予 NetSuite MCP 的存取權限","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-grant-permissions-netsuite-mcp.webp",[429,1402,1404],{"id":1403},"如何在-claude-ai-中整合並配置-netsuite-mcp","如何在 Claude AI 中整合並配置 NetSuite MCP",[560,1406,1407,1414,1421,1428,1443,1450],{},[563,1408,1409,1410],{},"點擊 Claude 的「Customize」（自訂）。\n",[477,1411],{"alt":1412,"src":1413},"在 Claude AI 介面中點選「自訂（Customize）」選項","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-customize-navigation.webp",[563,1415,1416,1417],{},"點擊「Connect your apps」（連接您的應用程式）。\n",[477,1418],{"alt":1419,"src":1420},"在 Claude AI 自訂設定中點選「連接您的應用程式（Connect your apps）」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-connect-your-apps.webp",[563,1422,1423,1424],{},"搜尋「NetSuite」。\n",[477,1425],{"alt":1426,"src":1427},"在 Claude AI 連接應用程式清單中搜尋「NetSuite」","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-search-netsuite-app.webp",[563,1429,1430,1431,1434,1435,1438,1439],{},"點擊「NetSuite」並輸入伺服器 URL：",[459,1432,1433],{},"https:\u002F\u002F\u003Caccount_id>.suitetalk.api.netsuite.com\u002Fservices\u002Fmcp\u002Fv1\u002Fsuiteapp\u002Fcom.netsuite.mcpstandardtools","（請將 ",[459,1436,1437],{},"\u003Caccount_id>"," 替換為您實際的 NetSuite 帳戶 ID）。\n",[477,1440],{"alt":1441,"src":1442},"在 Claude AI 設定中輸入 NetSuite MCP 伺服器的連線網址","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-server-url-setup.webp",[563,1444,1445,1446],{},"點擊「Continue」（繼續）按鈕。\n",[477,1447],{"alt":1448,"src":1449},"在 Claude AI 中點擊「繼續」以認證 NetSuite MCP 伺服器連線","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-continue-authentication.webp",[563,1451,1452,1453],{},"再次點擊「Continue」（繼續）以授權並驗證連接器。\n",[477,1454],{"alt":1455,"src":1456},"在 Claude AI 中完成 NetSuite MCP 連接器的最終授權與認證步驟","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-netsuite-mcp-authenticate-connector.webp",[429,1458,1460],{"id":1459},"netsuite-ai-實際應用場景","NetSuite AI 實際應用場景",[445,1462,1464],{"id":1463},"chatgpt-場景示例展示-netsuite-中逾期超過-30-天的帳單應收帳款","ChatGPT 場景示例：展示 NetSuite 中逾期超過 30 天的帳單（應收帳款）",[434,1466,1467],{},[477,1468],{"alt":1469,"src":1470},"ChatGPT 執行 SuiteQL 查詢以篩選並顯示 NetSuite 中逾期超過 30 天的發票","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-netsuite-overdue-invoices-query-result.webp",[804,1472,1473],{},[563,1474,1475],{},"ChatGPT 自動建立並執行了 SuiteQL 查詢。與使用傳統的 NetSuite 網頁端 UI 去配置複雜的報表相比，這非常方便且節省了大量時間。",[445,1477,1479],{"id":1478},"chatgpt-和-claude-場景示例能否用折線圖繪製過去-30-天的銷售業績","ChatGPT 和 Claude 場景示例：能否用折線圖繪製過去 30 天的銷售業績？",[434,1481,1482],{},[477,1483],{"alt":1484,"src":1485},"ChatGPT 嘗試根據 NetSuite 數據繪製銷售折線圖卻輸出失敗的畫面","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-failed-render-netsuite-sales-line-graph.webp",[804,1487,1488,1491],{},[563,1489,1490],{},"在我們的測試中，ChatGPT 無法直接產生並顯示該折線圖。",[563,1492,1493,1494],{},"隨後我在 Claude 上進行了嘗試，成功繪製出了圖表。這種差異主要源於各大語言模型（LLM）的數據視覺化和原生程式碼執行能力的區別。\n",[477,1495],{"alt":1496,"src":1497},"Claude AI 成功根據 NetSuite 銷售數據繪製出直觀的折線圖","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-successfully-rendered-netsuite-sales-line-graph.webp",[445,1499,1501],{"id":1500},"claude-場景示例建立客戶記錄","Claude 場景示例：建立客戶記錄",[434,1503,1504,1508],{},[477,1505],{"alt":1506,"src":1507},"向 Claude AI 發送自然語言指令以在 NetSuite 中新增一筆客戶紀錄","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-prompt.webp",[477,1509],{"alt":1510,"src":1511},"Claude AI 回覆確認已成功在 NetSuite 中建立客戶紀錄","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-create-netsuite-customer-record-success.webp",[804,1513,1514,1521],{},[563,1515,1516,1517],{},"登入 NetSuite 管理後台核對，確認該客戶記錄已正確建立並錄入系統。\n",[477,1518],{"alt":1519,"src":1520},"在 NetSuite 網頁端介面中雙重檢查並確認新客戶紀錄已成功新增","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fnetsuite-ui-verify-new-customer-record-created.webp",[563,1522,1523,1524],{},"在 ChatGPT 中執行查詢，同樣能正常讀取到該筆剛建立的客戶記錄：\n",[477,1525],{"alt":1526,"src":1527},"在 ChatGPT 中執行查詢並確認剛剛新增的 NetSuite 客戶紀錄可正常讀取","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fchatgpt-verify-netsuite-customer-record-available.webp",[445,1529,1531],{"id":1530},"claude-場景示例直接執行-suiteql-查詢","Claude 場景示例：直接執行 SuiteQL 查詢",[434,1533,1534],{},[477,1535],{"alt":1536,"src":1537},"Claude AI 直接執行 NetSuite SuiteQL 查詢並以表格呈現報表結果","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002Fclaude-ai-run-suiteql-query-result.webp",[804,1539,1540],{},[563,1541,1542],{},"AI 助手可以直接向 NetSuite 資料庫執行 SuiteQL 查詢，瞬間返回所需數據。",[429,1544,1546],{"id":1545},"netsuite-ai-connector-總結與展望","NetSuite AI Connector 總結與展望",[434,1548,1549,1550,1552],{},"引入 MCP 的最大贏家是那些缺乏技術背景、無法編寫複雜 SQL 或報表的使用者。他們現在只需使用日常的大白話對數據提問，並讓 ",[1157,1551,1181],{}," 按照其期望的格式（如表格、圖表等）完美呈現出來，極大地降低了數據獲取的門檻。",[434,1554,1555],{},"需要特別注意的是，為了防範提示詞注入（Prompt Injection）攻擊和惡意的「寫入」操作，建議對 AI connector 所對應的系統角色僅授予最小限度的寫入權限。當 AI 透過 MCP 介面在後台更新或建立記錄時，它是在伺服器端作為 SuiteScript 執行的，這將完全繞過瀏覽器前端（客戶端）的所有指令碼限制和表單輸入校驗。因此，權限管控必須要嚴密。",[429,1557,1559],{"id":1558},"參考資源英文","參考資源（英文）:",[804,1561,1562,1571,1578],{},[563,1563,1564],{},[1565,1566,1570],"a",{"href":1567,"rel":1568},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_0902023450.html#subsect_90090238176",[1569],"nofollow","安裝 MCP Standard Tools SuiteApp（官方文檔）",[563,1572,1573],{},[1565,1574,1577],{"href":1575,"rel":1576},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Farticle_4160616848.html#subsect_0419123151",[1569],"NetSuite AI Connector 常見問題解答（官方文檔）",[563,1579,1580],{},[1565,1581,1584],{"href":1582,"rel":1583},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fcloud\u002Fsaas\u002Fnetsuite\u002Fns-online-help\u002Fsection_0714082142.html#bridgehead_0804033331",[1569],"連接到 NetSuite AI Connector 服務步驟（官方文檔）",{"title":424,"searchDepth":543,"depth":604,"links":1586},[1587,1588,1589,1590,1591,1597,1598],{"id":1171,"depth":543,"text":1172},{"id":1202,"depth":543,"text":1203},{"id":1345,"depth":543,"text":1346},{"id":1403,"depth":543,"text":1404},{"id":1459,"depth":543,"text":1460,"children":1592},[1593,1594,1595,1596],{"id":1463,"depth":604,"text":1464},{"id":1478,"depth":604,"text":1479},{"id":1500,"depth":604,"text":1501},{"id":1530,"depth":604,"text":1531},{"id":1545,"depth":543,"text":1546},{"id":1558,"depth":543,"text":1559},[1110],"2026-06-13","本教學詳細介紹如何配置NetSuite AI Connector (MCP)服務並與ChatGPT和Claude進行整合。您將學習如何透過自然語言直接向AI提問、快速執行SuiteQL查詢ERP財務與業務數據、實現自動化業務流程以及客戶數據記錄建立，輕鬆打破傳統複雜企業ERP的操作門檻。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20NetSuite%20MCP%20on%20ChatGPT%20%26%20Claude\u002FTW-Setup-NetSuite-MCP-on-ChatGPT-%26-Claude.webp","NetSuite MCP AI 整合縮圖，採用深藍色企業背景，展示 ChatGPT 和 Claude 圖示連接至 NetSuite 雲端資料庫",{"schemaOrg":1605,"robots":1131,"sitemap":1608},[1606],{"@type":1607,"headline":1147,"description":1601},"TechArticle",{"lastmod":1600},32,{"title":1611,"description":1601,"ogTitle":1147,"ogDescription":1601,"twitterTitle":1147,"twitterDescription":1601},"NetSuite MCP AI整合教學：連接 ChatGPT 與 Claude 實現 ERP 數據查詢","tw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",[1195,1614,1615,1616,1181],"MCP","ChatGPT","Claude","U7VqV9BLrpGuSPAgF-uZvgRJtZqSNq94qObe3B0jMFE",{"id":1619,"title":1620,"author":424,"body":1621,"category":2003,"date":2004,"description":2005,"extension":1113,"image":2006,"imageAlt":2007,"isPublished":976,"meta":2008,"minRead":543,"navigation":976,"path":249,"seo":2012,"stem":2013,"tags":2014,"updatedAt":1141,"__hash__":2019},"article\u002Ftw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them.md","什麼是 AI Agent 技能？深入探討其工作原理並手把手教你如何建構高效、可複用的Agent技能",{"type":426,"value":1622,"toc":1993},[1623,1627,1638,1649,1714,1719,1723,1726,1735,1741,1744,1799,1810,1816,1819,1876,1880,1883,1890,1893,1904,1908,1953,1956,1973,1976,1987,1990],[429,1624,1626],{"id":1625},"什麼是-ai-agent-技能","什麼是 AI Agent 技能？",[434,1628,1629,1630,1633,1634,1637],{},"代理技能（agent skill）是一種可複用的",[1157,1631,1632],{},"指令集"," —— 它是一個標準化的流程，旨在指導 Agent 如何卓越地完成某一特定類型的任務。一個技能通常由單個 Markdown 文件 ",[459,1635,1636],{},"SKILL.md"," 構成，並且可以打包該任務所需的任何其他文件，例如參考文件、範本或可執行腳本。",[434,1639,1640,1641,1648],{},"以 ",[1565,1642,1645],{"href":1643,"rel":1644},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002F733d312884b3878a9a9cff693c5886943753a741\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[1569],[459,1646,1647],{},"grill-me"," 技能为例：",[453,1650,1654],{"className":1651,"code":1652,"language":1653,"meta":424,"style":424},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: grill-me\ndescription: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n---\n\nInterview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.\n\nAsk the questions one at a time.\n\nIf a question can be answered by exploring the codebase, explore the codebase instead.\n","yaml",[459,1655,1656,1661,1673,1683,1687,1691,1696,1700,1705,1709],{"__ignoreMap":424},[462,1657,1658],{"class":464,"line":465},[462,1659,1660],{"class":468},"---\n",[462,1662,1663,1667,1670],{"class":464,"line":543},[462,1664,1666],{"class":1665},"swJcz","name",[462,1668,1669],{"class":502},":",[462,1671,1672],{"class":472}," grill-me\n",[462,1674,1675,1678,1680],{"class":464,"line":604},[462,1676,1677],{"class":1665},"description",[462,1679,1669],{"class":502},[462,1681,1682],{"class":472}," Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n",[462,1684,1685],{"class":464,"line":973},[462,1686,1660],{"class":468},[462,1688,1689],{"class":464,"line":980},[462,1690,977],{"emptyLinePlaceholder":976},[462,1692,1693],{"class":464,"line":986},[462,1694,1695],{"class":472},"Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.\n",[462,1697,1698],{"class":464,"line":992},[462,1699,977],{"emptyLinePlaceholder":976},[462,1701,1702],{"class":464,"line":998},[462,1703,1704],{"class":472},"Ask the questions one at a time.\n",[462,1706,1707],{"class":464,"line":1004},[462,1708,977],{"emptyLinePlaceholder":976},[462,1710,1711],{"class":464,"line":1010},[462,1712,1713],{"class":472},"If a question can be answered by exploring the codebase, explore the codebase instead.\n",[434,1715,1716,1718],{},[459,1717,1636],{}," 文件包含一小塊元資料（metadata）和指令的正文。元資料由技能的名稱（name）和描述（description）組成，AI Agent 會在啟動時將其載入。",[429,1720,1722],{"id":1721},"ai-agent-技能的工作原理漸進式披露progressive-disclosure","AI Agent 技能的工作原理：漸進式披露（Progressive Disclosure）",[434,1724,1725],{},"在初始階段，只有技能的名稱和描述會被載入到上下文視窗（Context）中。當使用者的請求與技能的描述相匹配時，该技能的完整指令正文才會被載入到相同的上下文中。",[434,1727,1728,1729,1734],{},"讓我們來看看在實際使用中，",[1565,1730,1732],{"href":1643,"rel":1731},[1569],[459,1733,1647],{}," 技能是如何工作的。",[434,1736,1737],{},[477,1738],{"alt":1739,"src":1740},"展示 AI 代理技能執行中漸進式揭示（Progressive Disclosure）機制的時序圖","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002Fai-agent-skill-progressive-disclosure-sequence-diagram.webp",[445,1742,1743],{"id":1743},"逐步流程",[560,1745,1746,1752,1758,1764,1770,1783,1793],{},[563,1747,1748,1751],{},[1157,1749,1750],{},"請求（Request）"," —— 使用者向 Agent 提出需求（例如：“對我的工作流設計進行壓力測試剖析”）。",[563,1753,1754,1757],{},[1157,1755,1756],{},"選擇提示词（Selection prompt）"," —— 使用者的請求與所有可用技能的描述一起發送給 LLM。",[563,1759,1760,1763],{},[1157,1761,1762],{},"LLM 做出選擇"," —— LLM 將請求與每個描述進行對比，並返回匹配的技能。",[563,1765,1766,1769],{},[1157,1767,1768],{},"確認（Confirmation）"," —— Agent 将推薦的技能呈現給使用者，由使用者進行確認（或拒絕\u002F調整）該選擇。",[563,1771,1772,1775,1776,1779,1780,1782],{},[1157,1773,1774],{},"載入指令"," —— Agent 獲取已確認技能的",[1223,1777,1778],{},"完整","指令：即 ",[459,1781,1636],{}," 的正文內容。",[563,1784,1785,1788,1789,1792],{},[1157,1786,1787],{},"執行提示詞（Execution prompt）"," —— 使用者的請求",[1157,1790,1791],{},"加上所選技能的具体指令","一起發送給 LLM。",[563,1794,1795,1798],{},[1157,1796,1797],{},"響應（Response）"," —— LLM 生成輸出，即壓力測試訪談中的第一個剖析問題。",[434,1800,1801,1802,1809],{},"現在，我們使用 ",[1565,1803,1806],{"href":1804,"rel":1805},"https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[1569],[459,1807,1808],{},"excalidraw-diagram-skill"," 來演示帶參考文件的技能是如何工作的：",[434,1811,1812],{},[477,1813],{"alt":1814,"src":1815},"展示 AI 代理執行載有外部參考檔案與範本的技能時序圖","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002Fai-agent-skill-with-reference-files-sequence-diagram.webp",[445,1817,1743],{"id":1818},"逐步流程-1",[560,1820,1821,1826,1831,1840,1846,1858,1866],{},[563,1822,1823,1825],{},[1157,1824,1750],{}," —— 使用者向 Agent 提出需求（“繪製部署流程的工作流圖”）。",[563,1827,1828,1757],{},[1157,1829,1830],{},"選擇提示詞",[563,1832,1833,1835,1836,1839],{},[1157,1834,1762],{}," —— LLM 將請求與每個描述進行對比，並返回匹配的技能。在這裡，“繪製工作流圖”與 ",[459,1837,1838],{},"excalidraw-diagram"," 的描述匹配，因此該技能被選中。",[563,1841,1842,1845],{},[1157,1843,1844],{},"確認"," —— Agent 將推薦的技能呈現給使用者，由使用者進行確認（或拒绝\u002F調整）該選擇。",[563,1847,1848,1775,1850,1779,1852,1854,1855,1857],{},[1157,1849,1774],{},[1223,1851,1778],{},[459,1853,1636],{}," 的正文內容以及任何引用的參考文件（對於 ",[459,1856,1838],{},"，這包括調色盤、JSON Schema 和圖表元素範本）。",[563,1859,1860,1788,1863,1865],{},[1157,1861,1862],{},"執行提示詞",[1157,1864,1791],{},"一起發送給 LLM。模型現在擁有了它所需的詳細方法論。",[563,1867,1868,1871,1872,1875],{},[1157,1869,1870],{},"響應"," —— LLM 生成輸出（一個 ",[459,1873,1874],{},".excalidraw"," 的 JSON 文件），由 Agent 將其返回給使用者。",[429,1877,1879],{"id":1878},"ai-agent-技能-vs-工具與-mcp","AI Agent 技能 vs. 工具與 MCP",[434,1881,1882],{},"技能並不能替代提示詞、普通工具（Tools）或 MCP。工具和 MCP 整合擴展了 Agent 對外部系統的存取範圍 —— 例如查詢資料庫、呼叫 API 等等。而技能則加深了 Agent 完成特定任務的實戰訣竅（Know-how）和專業深度。",[434,1884,1885,1886,1889],{},"諸如 ",[1565,1887,1888],{"href":395},"在 ChatGPT 與 Claude 中配置 NetSuite MCP"," 的 MCP 整合，能夠讓 Agent 透過存取 NetSuite 中的即時財務和營運資料來回答使用者問題。而 NetSuite 業務報告技能則會進一步引導 Agent 如何去撰寫這份報告，并以規範的報表形式呈現給使用者。",[434,1891,1892],{},"使用技能的典型場景包括：",[804,1894,1895,1898,1901],{},[563,1896,1897],{},"多步驟複雜工作流",[563,1899,1900],{},"文件處理，例如從 PDF 中提取特定資料結構",[563,1902,1903],{},"程式碼生成規範與標準",[429,1905,1907],{"id":1906},"如何建立-ai-agent-技能","如何建立 AI Agent 技能",[560,1909,1910,1920,1934,1943],{},[563,1911,1912,1915,1916,1919],{},[1157,1913,1914],{},"建立一個資料夾","，並以技能名稱命名（例如 ",[459,1917,1918],{},"netsuite-operation-report\u002F","）。",[563,1921,1922,1927,1928,1930,1931,1933],{},[1157,1923,1924,1925],{},"撰寫 ",[459,1926,1636],{},"，包含 ",[459,1929,1666],{},"、精準的 ",[459,1932,1677],{},"，以及精煉的指令正文（控制在 200 字以內）。",[563,1935,1936,1939,1940,1942],{},[1157,1937,1938],{},"添加任務所需資源"," —— 包括參考文件、範本、腳本。保持 ",[459,1941,1636],{}," 短小精悍，並將細節連結至其他文件。",[563,1944,1945,1948,1949,1952],{},[1157,1946,1947],{},"進行安裝","，讓 Agent 能夠發現它。參考 ",[1565,1950,1951],{"href":359},"解決 AI 智能代理技能碎片化：集中化管理技能"," 以了解如何在多個 Agent 之間集中管理技能。",[434,1954,1955],{},"撰寫優秀技能的幾個技巧：",[804,1957,1958,1961,1967,1970],{},[563,1959,1960],{},"技能描述（description）應當面向系統觸發器（Trigger）來写，而不是給人類閱讀。",[563,1962,1963,1964,1966],{},"保持 ",[459,1965,1636],{}," 極其精簡 —— 限制在 200 字以內。在正文中寫下通用流程，將邊緣情況和細節留給參考文件。",[563,1968,1969],{},"凡是確定性的任務，應當使用腳本（Script）来處理。不要讓 LLM 去做算術。",[563,1971,1972],{},"做好版本控制，將其提交進 Git 中。",[429,1974,1975],{"id":1975},"結語",[434,1977,1978,1979,1982,1983,1986],{},"與定義“",[1223,1980,1981],{},"連接到什麼","”的工具和 MCP 不同，智能代理技能封裝了“",[1223,1984,1985],{},"如何去完成工作","”。它們是不可或缺的互補，而非替代關係。",[434,1988,1989],{},"透過利用漸進式披露（Progressive Disclosure），技能可以使 Agent 的上下文視窗保持整潔和高效 —— 僅在使用者請求觸發时，才會載入詳細的指令、參考文件和可執行腳本。",[1095,1991,1992],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":543,"depth":604,"links":1994},[1995,1996,2000,2001,2002],{"id":1625,"depth":543,"text":1626},{"id":1721,"depth":543,"text":1722,"children":1997},[1998,1999],{"id":1743,"depth":604,"text":1743},{"id":1818,"depth":604,"text":1743},{"id":1878,"depth":543,"text":1879},{"id":1906,"depth":543,"text":1907},{"id":1975,"depth":543,"text":1975},[1110],"2026-06-26","全面系統地深入了解什麼是AI Agent技能、漸進式披露（Progressive Disclosure）的工作原理，并手把手教你如何撰寫SKILL.md規範，打包參考文件、範本與腳本。本文也將對比技能、工具與MCP的差異與標準开发流程，助你輕鬆建構出可複用、高效率、能處理複雜上下文管理的自訂代理核心技能。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FAI%20Agent%20Skills%20What%20They%20Are%20%26%20How%20to%20Create%20Them\u002FTW-AI-Agent-Skills-What-They-Are-%26-How-to-Create-Them.webp","AI Agent技能開發指南：建構可複用、高效率的Agent核心工作流",{"schemaOrg":2009,"robots":1131,"sitemap":2011},[2010],{"@type":1119,"headline":1620,"description":2005},{"lastmod":2004},{"title":2007,"description":2005,"ogTitle":1620,"ogDescription":2005,"twitterTitle":1620,"twitterDescription":2005},"tw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",[2015,2016,2017,2018],"AI 代理","代理技能","可重複使用的工作流程","AI 教程","G6yqiU4D6vrLB8nujfq3SK0n1l9a3H5iB_pDSICyrk4",[2021,2899,3502],{"id":2022,"title":2023,"author":424,"body":2024,"category":2880,"date":2882,"description":2883,"extension":1113,"image":2884,"imageAlt":2885,"isPublished":976,"meta":2886,"minRead":980,"navigation":976,"path":363,"seo":2891,"stem":2893,"tags":2894,"updatedAt":2890,"__hash__":2898},"article\u002Ftw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md","教學：使用 Cloudflare WARP 安全地將 Hermes Agent 暴露至私有網路",{"type":426,"value":2025,"toc":2862},[2026,2040,2050,2053,2056,2068,2071,2079,2082,2086,2136,2140,2270,2274,2307,2311,2314,2378,2381,2417,2420,2447,2451,2461,2465,2504,2591,2595,2600,2614,2623,2686,2691,2735,2739,2785,2800,2804,2847,2849,2859],[434,2027,2028,2029,2031,2032,2035,2036,2039],{},"當我們希望透過筆記型電腦、平板或手機等其他設備存取 ",[1157,2030,889],{},"，同時又不想將其暴露在公共網際網路上時，這往往是一個普遍的挑戰。利用 ",[1157,2033,2034],{},"Cloudflare WARP"," 與 ",[1157,2037,2038],{},"Cloudflare Zero Trust","，您可以在無需打開任何防火牆入站連接埠的情況下，將其安全地暴露並在全球範圍內進行存取。",[434,2041,2042,2043,2046,2047,2049],{},"如果您之前已經閱讀並遵循了我們的指南 '",[1565,2044,2045],{"href":375},"如何在 Linux VPS 上部署 Hermes Agent","'，那麼您應該大約擁有了一個全天候運行的 Hermes Agent。相比於設定傳統 VPN 帶來的繁瑣步驟，我們將使用 ",[1157,2048,2034],{}," 用戶端，透過網際網路將 Hermes Agent 暴露到私有網路中。",[429,2051,2052],{"id":2052},"架構解析",[434,2054,2055],{},"此方案涉及的兩個核心組件：",[560,2057,2058,2063],{},[563,2059,2060,2062],{},[1157,2061,2038],{},"：Cloudflare 的雲端儀表板，您可以在此定義路由規則和存取策略。",[563,2064,2065,2067],{},[1157,2066,2034],{},"：安裝在您的設備（VPS、筆記型電腦、手機）上的用戶端應用程式。它能夠攔截發往私有網路的流量，並安全地進行路由。",[445,2069,2070],{"id":2070},"前置條件",[804,2072,2073,2076],{},[563,2074,2075],{},"一台已經運行 Hermes Agent 的 VPS（虛擬專屬伺服器）。",[563,2077,2078],{},"一個免費的 Cloudflare 帳號。",[429,2080,2081],{"id":2081},"詳細步驟指南",[445,2083,2085],{"id":2084},"第-1-步設定-cloudflare-zero-trust","第 1 步：設定 Cloudflare Zero Trust",[560,2087,2088,2097,2104,2115,2122,2129],{},[563,2089,2090,2091,2096],{},"登入您的 ",[1565,2092,2095],{"href":2093,"rel":2094},"https:\u002F\u002Fdash.cloudflare.com\u002F",[1569],"Cloudflare 儀表板 (Dashboard)","。",[563,2098,2099,2100],{},"點擊左側選單欄中的 'Zero Trust'。\n",[477,2101],{"alt":2102,"src":2103},"Cloudflare 儀表板左側側邊欄導覽選單中的 Zero Trust 選項","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-left-menu.webp",[563,2105,2106,2107,2110,2111],{},"如果這是您第一次使用，系統會提示您選擇方案（免費版對本教學完全足夠）並為您的團隊命名（例如，",[459,2108,2109],{},"ai-team","）。\n",[477,2112],{"alt":2113,"src":2114},"首次設定 Cloudflare Zero Trust 帳戶並為團隊命名","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-team-setup.webp",[563,2116,2117,2118],{},"點擊 'Access'，然后點擊 'Policies' 來建立存取策略，以定義誰有權限存取網路。\n",[477,2119],{"alt":2120,"src":2121},"Cloudflare Zero Trust Access 策略頁面，顯示新設定的存取規則","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-access-policies-page.webp",[563,2123,2124,2125],{},"點击 'Create new policy'。\n",[477,2126],{"alt":2127,"src":2128},"Cloudflare Access policies page showing no policies added and a button to create a new policy.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.png",[563,2130,2131,2132],{},"選擇 'Emails' 並在 'Policy rules' 下方輸入您的電子郵件地址。\n",[477,2133],{"alt":2134,"src":2135},"Cloudflare Access policy rule configuration screen with an email address specified as the inclusion criteria.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.png",[445,2137,2139],{"id":2138},"第-2-步在-vps-上設定-cloudflare-warp-用戶端","第 2 步：在 VPS 上設定 Cloudflare WARP 用戶端",[560,2141,2142,2151,2157,2164,2167,2182,2185,2263],{},[563,2143,2144,2145,1164,2148,2096],{},"在 VPS 終端機中執行 ",[459,2146,2147],{},"sudo apt update",[459,2149,2150],{},"sudo apt install cloudflare-warp",[563,2152,2144,2153,2156],{},[459,2154,2155],{},"warp-cli registration new \u003CTEAM-NAME>","，該指令將輸出一個 URL。",[563,2158,2159,2160,2163],{},"複製輸出的 URL（其格式類似於 ",[459,2161,2162],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp","），並將其貼上到瀏覽器中進行認證。",[563,2165,2166],{},"由於前面的策略設定中使用了電子郵件認證，請輸入您的電子郵件以進行認證。",[563,2168,2169,2170,2173,2174,2177,2178,2181],{},"當瀏覽器中顯示 '",[1157,2171,2172],{},"Success","' 頁面後，右鍵點擊藍色的 '",[1157,2175,2176],{},"Open Cloudflare WARP","' 按鈕並選擇「",[1157,2179,2180],{},"檢查 (Inspect)","」。",[563,2183,2184],{},"複製該按鈕連結中的長 Token 字串。",[563,2186,2144,2187,2190,2191,2194,2195],{},[459,2188,2189],{},"warp-cli --accept-tos registration token \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\"","，將您的 VPS 連接到 Cloudflare Zero Trust。",[2192,2193],"br",{},"如果在 Ubuntu 26 上遇到 'Error: Failed to communicate with the WARP API'，請執行以下命令：",[453,2196,2198],{"className":455,"code":2197,"language":457,"meta":424,"style":424},"sudo systemctl restart warp-svc.service\n\n# Check status\nsudo systemctl status warp-svc.service\n\n# Run the warp-cli registration token again\nwarp-cli --accept-tos registration token   \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\"\n",[459,2199,2200,2211,2215,2221,2231,2235,2240],{"__ignoreMap":424},[462,2201,2202,2204,2206,2208],{"class":464,"line":465},[462,2203,493],{"class":468},[462,2205,619],{"class":472},[462,2207,622],{"class":472},[462,2209,2210],{"class":472}," warp-svc.service\n",[462,2212,2213],{"class":464,"line":543},[462,2214,977],{"emptyLinePlaceholder":976},[462,2216,2217],{"class":464,"line":604},[462,2218,2220],{"class":2219},"sHwdD","# Check status\n",[462,2222,2223,2225,2227,2229],{"class":464,"line":973},[462,2224,493],{"class":468},[462,2226,619],{"class":472},[462,2228,1085],{"class":472},[462,2230,2210],{"class":472},[462,2232,2233],{"class":464,"line":980},[462,2234,977],{"emptyLinePlaceholder":976},[462,2236,2237],{"class":464,"line":986},[462,2238,2239],{"class":2219},"# Run the warp-cli registration token again\n",[462,2241,2242,2245,2248,2251,2254,2257,2260],{"class":464,"line":992},[462,2243,2244],{"class":468},"warp-cli",[462,2246,2247],{"class":472}," --accept-tos",[462,2249,2250],{"class":472}," registration",[462,2252,2253],{"class":472}," token",[462,2255,2256],{"class":502},"   \"",[462,2258,2259],{"class":472},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[462,2261,2262],{"class":502},"\"\n",[563,2264,2265,2266],{},"回到 Cloudflare Zero Trust 儀表板，點擊 'Devices'。您現在應該能看到您的 VPS 設備。\n",[477,2267],{"alt":2268,"src":2269},"Zero Trust 設備儀表板，確認 Linux VPS 已成功連線","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-devices-vps-connected.webp",[445,2271,2273],{"id":2272},"第-3-步設定流量路由","第 3 步：設定流量路由",[560,2275,2276,2283,2290,2297],{},[563,2277,2278,2279],{},"在 Devices 儀表板中點擊您 VPS 設備的設定檔。\n",[477,2280],{"alt":2281,"src":2282},"存取已登冊 VPS 設備的詳細資訊與分割通道設定","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-device-profile.webp",[563,2284,2285,2286],{},"向下捲動至 'Split Tunnels' 部分。\n",[477,2287],{"alt":2288,"src":2289},"VPS 設備設定檔下的 Split Tunnels 分割通道區段","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-split-tunnels-section.webp",[563,2291,2292,2293],{},"點擊 'Manage' 按鈕，並按照下圖設定。如有需要請替換相應的 IP 位址。\n",[477,2294],{"alt":2295,"src":2296},"在 Cloudflare 設定中管理分割通道 IP 與主機名稱排除規則","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-manage-split-tunnels.webp",[563,2298,2299,2300,1164,2303,2306],{},"暴露 ",[459,2301,2302],{},"address",[459,2304,2305],{},"host"," 會將發往您服務的流量路由到該私有網路內。",[445,2308,2310],{"id":2309},"第-4-步設定-vps-防火牆","第 4 步：設定 VPS 防火牆",[434,2312,2313],{},"啟用防火牆，僅允許 '100.96.0.0\u002F12' 子網的流量通過，並阻擋其他所有公共入站存取。",[453,2315,2317],{"className":455,"code":2316,"language":457,"meta":424,"style":424},"sudo ufw enable \nsudo ufw default allow outgoing \nsudo ufw default deny incoming\nsudo ufw allow in from 100.96.0.0\u002F12\n",[459,2318,2319,2330,2347,2361],{"__ignoreMap":424},[462,2320,2321,2323,2326,2328],{"class":464,"line":465},[462,2322,493],{"class":468},[462,2324,2325],{"class":472}," ufw",[462,2327,1062],{"class":472},[462,2329,540],{"class":539},[462,2331,2332,2334,2336,2339,2342,2345],{"class":464,"line":543},[462,2333,493],{"class":468},[462,2335,2325],{"class":472},[462,2337,2338],{"class":472}," default",[462,2340,2341],{"class":472}," allow",[462,2343,2344],{"class":472}," outgoing",[462,2346,540],{"class":539},[462,2348,2349,2351,2353,2355,2358],{"class":464,"line":604},[462,2350,493],{"class":468},[462,2352,2325],{"class":472},[462,2354,2338],{"class":472},[462,2356,2357],{"class":472}," deny",[462,2359,2360],{"class":472}," incoming\n",[462,2362,2363,2365,2367,2369,2372,2375],{"class":464,"line":973},[462,2364,493],{"class":468},[462,2366,2325],{"class":472},[462,2368,2341],{"class":472},[462,2370,2371],{"class":472}," in",[462,2373,2374],{"class":472}," from",[462,2376,2377],{"class":472}," 100.96.0.0\u002F12\n",[434,2379,2380],{},"允許回環網路 (loopback) 的流量，避免導致本地服務異常：",[453,2382,2384],{"className":455,"code":2383,"language":457,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[459,2385,2386,2402],{"__ignoreMap":424},[462,2387,2388,2390,2392,2394,2396,2399],{"class":464,"line":465},[462,2389,493],{"class":468},[462,2391,2325],{"class":472},[462,2393,2341],{"class":472},[462,2395,2371],{"class":472},[462,2397,2398],{"class":472}," on",[462,2400,2401],{"class":472}," lo\n",[462,2403,2404,2406,2408,2410,2413,2415],{"class":464,"line":543},[462,2405,493],{"class":468},[462,2407,2325],{"class":472},[462,2409,2341],{"class":472},[462,2411,2412],{"class":472}," out",[462,2414,2398],{"class":472},[462,2416,2401],{"class":472},[434,2418,2419],{},"重新載入防火牆規則並驗證狀態：",[453,2421,2423],{"className":455,"code":2422,"language":457,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[459,2424,2425,2436],{"__ignoreMap":424},[462,2426,2427,2429,2431,2434],{"class":464,"line":465},[462,2428,493],{"class":468},[462,2430,2325],{"class":472},[462,2432,2433],{"class":472}," reload",[462,2435,540],{"class":539},[462,2437,2438,2440,2442,2444],{"class":464,"line":543},[462,2439,493],{"class":468},[462,2441,2325],{"class":472},[462,2443,1085],{"class":472},[462,2445,2446],{"class":472}," verbose\n",[445,2448,2450],{"id":2449},"第-5-步將-hermes-agent-暴露至私有網路","第 5 步：將 Hermes Agent 暴露至私有網路",[434,2452,2453,2454,2457,2458,2096],{},"我們將把 ",[1157,2455,2456],{},"Hermes Agent Web Dashboard"," 暴露至私有網路，並使用預設的認證提供商 ",[1157,2459,2460],{},"Nous Research",[2462,2463,2464],"h4",{"id":2464},"設定認證提供商",[560,2466,2467,2476,2483,2490,2497],{},[563,2468,2469,2470,2475],{},"前往 ",[1565,2471,2474],{"href":2472,"rel":2473},"https:\u002F\u002Fportal.nousresearch.com",[1569],"portal.nousresearch.com"," 註冊一個帳號。",[563,2477,2478,2479],{},"選擇 'Local Dashboards'。\n",[477,2480],{"alt":2481,"src":2482},"在 Nous Research 入口網站中選擇 Local Dashboards 本地儀表板選項","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-local-dashboards-selection.webp",[563,2484,2485,2486],{},"點擊 'Register Dashboard'。\n",[477,2487],{"alt":2488,"src":2489},"點擊 Register Dashboard 按鈕以建立新的儀表板項目","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-dashboard.webp",[563,2491,2492,2493],{},"將 VPS 在私有網路中的 IP 位址填入 'Dashboard redirect URI' 並點擊 'Save'。\n",[477,2494],{"alt":2495,"src":2496},"在 Nous Research 入口網站中註冊私有網路 VPS IP 位址作為重新導向 URI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-redirect-uri.webp",[563,2498,2499,2500,2503],{},"複製 'OAuth client ID' 並將其貼上到您的 ",[459,2501,2502],{},"config.yaml"," 檔案中：",[453,2505,2507],{"className":1651,"code":2506,"language":1653,"meta":424,"style":424},"dashboard:\n  theme: default\n  show_token_analytics: false\n  oauth:\n    client_id: agent:cmq02x7ha0002jk0ba3kfnb\n    portal_url: https:\u002F\u002Fportal.nousresearch.com\n  basic_auth:\n    username: ''\n    password_hash: ''\n",[459,2508,2509,2517,2527,2538,2545,2555,2565,2572,2582],{"__ignoreMap":424},[462,2510,2511,2514],{"class":464,"line":465},[462,2512,2513],{"class":1665},"dashboard",[462,2515,2516],{"class":502},":\n",[462,2518,2519,2522,2524],{"class":464,"line":543},[462,2520,2521],{"class":1665},"  theme",[462,2523,1669],{"class":502},[462,2525,2526],{"class":472}," default\n",[462,2528,2529,2532,2534],{"class":464,"line":604},[462,2530,2531],{"class":1665},"  show_token_analytics",[462,2533,1669],{"class":502},[462,2535,2537],{"class":2536},"sfNiH"," false\n",[462,2539,2540,2543],{"class":464,"line":973},[462,2541,2542],{"class":1665},"  oauth",[462,2544,2516],{"class":502},[462,2546,2547,2550,2552],{"class":464,"line":980},[462,2548,2549],{"class":1665},"    client_id",[462,2551,1669],{"class":502},[462,2553,2554],{"class":472}," agent:cmq02x7ha0002jk0ba3kfnb\n",[462,2556,2557,2560,2562],{"class":464,"line":986},[462,2558,2559],{"class":1665},"    portal_url",[462,2561,1669],{"class":502},[462,2563,2564],{"class":472}," https:\u002F\u002Fportal.nousresearch.com\n",[462,2566,2567,2570],{"class":464,"line":992},[462,2568,2569],{"class":1665},"  basic_auth",[462,2571,2516],{"class":502},[462,2573,2574,2577,2579],{"class":464,"line":998},[462,2575,2576],{"class":1665},"    username",[462,2578,1669],{"class":502},[462,2580,2581],{"class":502}," ''\n",[462,2583,2584,2587,2589],{"class":464,"line":1004},[462,2585,2586],{"class":1665},"    password_hash",[462,2588,1669],{"class":502},[462,2590,2581],{"class":502},[2462,2592,2594],{"id":2593},"使用-systemd-確保-hermes-dashboard-開機自啟","使用 Systemd 確保 Hermes Dashboard 開機自啟",[560,2596,2597],{},[563,2598,2599],{},"建立服務檔案：",[453,2601,2603],{"className":925,"code":2602,"language":927,"meta":424,"style":424},"sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[459,2604,2605],{"__ignoreMap":424},[462,2606,2607,2609,2611],{"class":464,"line":465},[462,2608,493],{"class":468},[462,2610,577],{"class":472},[462,2612,2613],{"class":472}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[560,2615,2616],{"start":543},[563,2617,2618,2619,2622],{},"貼上以下設定，確保 ",[459,2620,2621],{},"--host 0.0.0.0"," 包含在指令中：",[453,2624,2626],{"className":951,"code":2625,"language":953,"meta":424,"style":424},"[Unit]\nDescription=Hermes Dashboard\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n",[459,2627,2628,2632,2637,2641,2645,2649,2653,2657,2662,2666,2670,2674,2678,2682],{"__ignoreMap":424},[462,2629,2630],{"class":464,"line":465},[462,2631,960],{},[462,2633,2634],{"class":464,"line":543},[462,2635,2636],{},"Description=Hermes Dashboard\n",[462,2638,2639],{"class":464,"line":604},[462,2640,970],{},[462,2642,2643],{"class":464,"line":973},[462,2644,977],{"emptyLinePlaceholder":976},[462,2646,2647],{"class":464,"line":980},[462,2648,983],{},[462,2650,2651],{"class":464,"line":986},[462,2652,989],{},[462,2654,2655],{"class":464,"line":992},[462,2656,995],{},[462,2658,2659],{"class":464,"line":998},[462,2660,2661],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[462,2663,2664],{"class":464,"line":1004},[462,2665,1007],{},[462,2667,2668],{"class":464,"line":1010},[462,2669,1013],{},[462,2671,2672],{"class":464,"line":1016},[462,2673,1019],{},[462,2675,2676],{"class":464,"line":1022},[462,2677,977],{"emptyLinePlaceholder":976},[462,2679,2680],{"class":464,"line":1027},[462,2681,1030],{},[462,2683,2684],{"class":464,"line":1033},[462,2685,1036],{},[560,2687,2688],{"start":604},[563,2689,2690],{},"啟用並啟動服务：",[453,2692,2694],{"className":925,"code":2693,"language":927,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[459,2695,2696,2704,2715,2725],{"__ignoreMap":424},[462,2697,2698,2700,2702],{"class":464,"line":465},[462,2699,493],{"class":468},[462,2701,619],{"class":472},[462,2703,1053],{"class":472},[462,2705,2706,2708,2710,2712],{"class":464,"line":543},[462,2707,493],{"class":468},[462,2709,619],{"class":472},[462,2711,1062],{"class":472},[462,2713,2714],{"class":472}," hermes-dashboard\n",[462,2716,2717,2719,2721,2723],{"class":464,"line":604},[462,2718,493],{"class":468},[462,2720,619],{"class":472},[462,2722,1074],{"class":472},[462,2724,2714],{"class":472},[462,2726,2727,2729,2731,2733],{"class":464,"line":973},[462,2728,493],{"class":468},[462,2730,619],{"class":472},[462,2732,1085],{"class":472},[462,2734,2714],{"class":472},[445,2736,2738],{"id":2737},"第-6-步在桌面上安裝-cloudflare-warp-用戶端","第 6 步：在桌面上安裝 Cloudflare WARP 用戶端",[560,2740,2741,2750,2753,2760,2767,2774],{},[563,2742,2743,2744,2749],{},"從 ",[1565,2745,2748],{"href":2746,"rel":2747},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[1569],"Cloudflare 官網"," 下載 Cloudflare WARP 用戶端。",[563,2751,2752],{},"安裝完成後打開並執行 Cloudflare WARP 用戶端。",[563,2754,2755,2756],{},"依提示登入。\n",[477,2757],{"alt":2758,"src":2759},"桌上型電腦上的 Cloudflare WARP 用戶端登入提示","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-prompt.webp",[563,2761,2762,2763],{},"登入成功後會顯示 'Success' 頁面。\n",[477,2764],{"alt":2765,"src":2766},"在桌上型電腦登入 Cloudflare Zero Trust 後的驗證成功網頁","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-success.webp",[563,2768,2769,2770],{},"此時 WARP 用戶端應顯示已連接至您的 Zero Trust 团队。\n",[477,2771],{"alt":2772,"src":2773},"桌面版 Cloudflare WARP 用戶端確認已連線至 Zero Trust 私有網路","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-client-connected.webp",[563,2775,2776,2777,2780,2781],{},"在瀏覽器中輸入您的私有 IP 位址（例如 ",[459,2778,2779],{},"100.96.0.3","），即可成功載入 Hermes Web Dashboard。\n",[477,2782],{"alt":2783,"src":2784},"在桌面瀏覽器中存取私有 Hermes Agent 網頁儀表板","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-desktop-view.webp",[2786,2787,2788],"blockquote",{},[434,2789,2790,2793,2794,2799],{},[1157,2791,2792],{},"macOS 用戶進階提示："," 如果您需要使用 WARP 用戶端存取多個 Cloudflare 帳號，請參閱我們的快速指南 ",[1157,2795,2796],{},[1565,2797,2798],{"href":399},"使用MDM設定檔在macOS上無縫切換與設定多個Cloudflare WARP零信任組織的完整教學指南","，實現帳號間的無縫切換。",[445,2801,2803],{"id":2802},"第-7-步在-ios-設備上安裝-cloudflare-warp-用戶端","第 7 步：在 iOS 設備上安裝 Cloudflare WARP 用戶端",[560,2805,2806,2812,2820,2828,2836],{},[563,2807,2808,2809,2096],{},"在 App Store 中安裝 ",[1157,2810,2811],{},"Cloudflare One",[563,2813,2814,2815],{},"打開 Cloudflare One 應用程式並在提示時輸入您的團隊名稱。\n",[477,2816],{"alt":2817,"src":2818,"width":2819},"在 iOS 上的 Cloudflare One 應用程式中輸入 Cloudflare Zero Trust 團隊名稱","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-team-name-prompt.webp",239,[563,2821,2822,2823],{},"使用前面在策略規則中設定的同一個電子郵件地址進行登入。\n",[477,2824],{"alt":2825,"src":2826,"width":2827},"iOS 上的 Cloudflare Zero Trust 電子郵件驗證提示","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-email-login.webp",229,[563,2829,2830,2831],{},"連接成功後，介面應如下所示：\n",[477,2832],{"alt":2833,"src":2834,"width":2835},"iOS 行動設備上 Cloudflare One 應用程式顯示的已連線狀態","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-client-connected.webp",322,[563,2837,2838,2839,2841,2842],{},"在手機瀏覽器中輸入私有 IP ",[459,2840,2779],{}," 即可在行動設備上存取 Hermes Web Dashboard。\n",[477,2843],{"alt":2844,"src":2845,"width":2846},"在手機瀏覽器上存取 Hermes Agent 網頁儀表板介面","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-mobile-view.webp",345,[429,2848,1975],{"id":1975},[434,2850,2851,2852,2854,2855,2858],{},"藉助 ",[1157,2853,2038],{}," 管理身分策略以及 ",[1157,2856,2857],{},"WARP"," 用戶端透過加密隧道路由流量，您的 Hermes Agent 現在可以被您的設備在全球範圍內安全存取。該配置為構建並存取完全遠端、私有的 AI 基礎架構奠定了堅實而安全的根基。",[1095,2860,2861],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":543,"depth":604,"links":2863},[2864,2867,2879],{"id":2052,"depth":543,"text":2052,"children":2865},[2866],{"id":2070,"depth":604,"text":2070},{"id":2081,"depth":543,"text":2081,"children":2868},[2869,2870,2871,2872,2873,2877,2878],{"id":2084,"depth":604,"text":2085},{"id":2138,"depth":604,"text":2139},{"id":2272,"depth":604,"text":2273},{"id":2309,"depth":604,"text":2310},{"id":2449,"depth":604,"text":2450,"children":2874},[2875,2876],{"id":2464,"depth":973,"text":2464},{"id":2593,"depth":973,"text":2594},{"id":2737,"depth":604,"text":2738},{"id":2802,"depth":604,"text":2803},{"id":1975,"depth":543,"text":1975},[1110,2881],"security","2026-07-09","本文深入探討如何使用 Cloudflare WARP 與 Zero Trust 技術，在完全不需要開啟任何防火牆入站連接埠的情況下，安全地將您的 Hermes Agent 暴露到私有網路中，從而實現全球範圍內的安全存取。這為您構建專屬私有遠端 AI 基礎架構打下堅實基礎。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FTW-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","透過 Cloudflare Zero Trust 和 WARP 隧道安全地將 Hermes Agent 暴露至私有網路",{"schemaOrg":2887,"robots":1131,"sitemap":2889},[2888],{"@type":1119,"headline":2023,"description":2883,"name":2023,"image":2884},{"lastmod":2890},"2026-09-28",{"title":2892,"description":2883,"ogTitle":2023,"ogDescription":2883,"twitterTitle":2023,"twitterDescription":2883},"透過 Cloudflare Zero Trust 實現對 Hermes Agent 的安全存取","tw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[2034,2895,889,2896,2897],"Zero Trust","私有網路","教學","HTGJ42xrWk07SDM4iYiDvZunbYRe0lOzZcsR2BGh8No",{"id":2900,"title":2901,"author":424,"body":2902,"category":3485,"date":3486,"description":3487,"extension":1113,"image":3488,"imageAlt":3489,"isPublished":976,"meta":3490,"minRead":543,"navigation":976,"path":367,"seo":3494,"stem":3496,"tags":3497,"updatedAt":1141,"__hash__":3501},"article\u002Ftw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts.md","從傳統初始化範本腳本到智慧體：AI Agent 技能如何優雅地取代 Nuxt 應用程式的腳手架建構腳本",{"type":426,"value":2903,"toc":3478},[2904,2918,2922,2925,3029,3032,3060,3066,3070,3083,3086,3103,3107,3118,3291,3295,3384,3388,3397,3418,3425,3440,3450,3453,3459,3462,3467,3475],[434,2905,2906,2907,1164,2910,2913,2914,2917],{},"當我們使用 Nuxt 框架啟動一個新應用程式時，總是需要經歷一系列繁瑣的初始化步驟，比如安裝各種依賴模組，以及配置 ",[459,2908,2909],{},"nuxt.config.ts",[459,2911,2912],{},"wrangler.jsonc"," 等檔案。傳統的腳本固然可以解決一部分問題，但隨著專案客製化需求的增加，腳本的局限性也迅速暴露出來。這正是我們探索並嘗試用 ",[1157,2915,2916],{},"AI Agent 技能 (Agent Skill)"," 取代傳統腳本的原因。",[429,2919,2921],{"id":2920},"傳統-shell-腳本擅長什麼","傳統 Shell 腳本擅長什麼",[434,2923,2924],{},"傳統的 Shell 腳本非常適合按順序執行一組固定的指令，且其中的所有決策都是在程式碼中預先寫死的 (Hardcoded)。",[453,2926,2928],{"className":455,"code":2927,"language":457,"meta":424,"style":424},"#!\u002Fusr\u002Fbin\u002Fenv bash\nset -e\n\nnpx nuxi@latest init \"$1\" --template minimal --packageManager pnpm --no-gitInit -M @nuxt\u002Fui,@nuxthub\u002Fcore,@vueuse\u002Fnuxt\n\ncd \"$1\"\n\ncp ~\u002Ftemplates\u002Fnuxt.config.ts .\ncp ~\u002Ftemplates\u002Fwrangler.jsonc .\n",[459,2929,2930,2935,2944,2948,2990,2994,3005,3009,3020],{"__ignoreMap":424},[462,2931,2932],{"class":464,"line":465},[462,2933,2934],{"class":2219},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[462,2936,2937,2941],{"class":464,"line":543},[462,2938,2940],{"class":2939},"s2Zo4","set",[462,2942,2943],{"class":472}," -e\n",[462,2945,2946],{"class":464,"line":604},[462,2947,977],{"emptyLinePlaceholder":976},[462,2949,2950,2953,2956,2959,2962,2966,2969,2972,2975,2978,2981,2984,2987],{"class":464,"line":973},[462,2951,2952],{"class":468},"npx",[462,2954,2955],{"class":472}," nuxi@latest",[462,2957,2958],{"class":472}," init",[462,2960,2961],{"class":502}," \"",[462,2963,2965],{"class":2964},"sHdIc","$1",[462,2967,2968],{"class":502},"\"",[462,2970,2971],{"class":472}," --template",[462,2973,2974],{"class":472}," minimal",[462,2976,2977],{"class":472}," --packageManager",[462,2979,2980],{"class":472}," pnpm",[462,2982,2983],{"class":472}," --no-gitInit",[462,2985,2986],{"class":472}," -M",[462,2988,2989],{"class":472}," @nuxt\u002Fui,@nuxthub\u002Fcore,@vueuse\u002Fnuxt\n",[462,2991,2992],{"class":464,"line":980},[462,2993,977],{"emptyLinePlaceholder":976},[462,2995,2996,2999,3001,3003],{"class":464,"line":986},[462,2997,2998],{"class":2939},"cd",[462,3000,2961],{"class":502},[462,3002,2965],{"class":2964},[462,3004,2262],{"class":502},[462,3006,3007],{"class":464,"line":992},[462,3008,977],{"emptyLinePlaceholder":976},[462,3010,3011,3014,3017],{"class":464,"line":998},[462,3012,3013],{"class":468},"cp",[462,3015,3016],{"class":472}," ~\u002Ftemplates\u002Fnuxt.config.ts",[462,3018,3019],{"class":472}," .\n",[462,3021,3022,3024,3027],{"class":464,"line":1004},[462,3023,3013],{"class":468},[462,3025,3026],{"class":472}," ~\u002Ftemplates\u002Fwrangler.jsonc",[462,3028,3019],{"class":472},[434,3030,3031],{},"但在面對以下開發痛點时，這種腳本就無能為力了：",[804,3033,3034,3040,3050],{},[563,3035,3036,3039],{},[1157,3037,3038],{},"固定的預設值。"," 該腳本將 Nuxt UI 模組寫死了。如果我們想換成 Ant Design UI 呢？每增加一個可選的模組，就需要使用者提供更多的命令列參數。",[563,3041,3042,3045,3046,3049],{},[1157,3043,3044],{},"無法理解使用者的真實意圖。"," 「幫我建一個部落格網站」需要引入 ",[459,3047,3048],{},"@nuxt\u002Fcontent","；「幫我建一個帶訂閱電子報功能的網站」則需要 Cloudflare D1 和 Drizzle ORM。普通的 Shell 腳本根本無法識別這些細微的語意差別——針對每種細微的變體，你都必須重新寫一個腳本。",[563,3051,3052,3055,3056,3059],{},[1157,3053,3054],{},"在不知不覺中悄然過時。"," Nuxt 框架在大版本迭代時，其目錄規範往往會發生顯著改變。例如 Nuxt 4 將預設的原始碼目錄更改為了 ",[459,3057,3058],{},"app\u002F","。如果你繼續執行為 Nuxt 3 編寫的腳手架腳本，它會在背景靜默地生成錯誤的目錄結構，且絕不會向使用者發出任何警報。",[434,3061,3062,3065],{},[1157,3063,3064],{},"應用程式腳手架的建構","（Scaffolding）本質上是一個需要「因地制宜做出決策」的問題，而不僅僅是「按步驟執行」。當決策變數增加時，傳統的腳本機制完全無法實現規模化擴充。",[429,3067,3069],{"id":3068},"為什麼要使用-ai-agent-技能取代傳統腳本","為什麼要使用 AI Agent 技能取代傳統腳本？",[434,3071,3072,3073,3076,3077,3079,3080,3082],{},"Agent 技能 (Agent Skill) 並非只是一段死板執行的程式碼，而是一套",[1157,3074,3075],{},"供 AI Agent 遵循的結構化知識庫","。它包含一個核心的 ",[459,3078,1636],{}," 指南，並可以無縫捆綁該任務所需的任何其他檔案（如參考文件、配置範本和可執行腳本）。我們在 ",[1565,3081,1620],{"href":351}," 一文中詳細剖析了 Agent 技能的工作原理。",[434,3084,3085],{},"Agent 技能在保留了腳本執行力度的同時，注入了腳本所匱乏的合理決策能力：",[804,3087,3088,3091,3094,3097,3100],{},[563,3089,3090],{},"能夠推斷使用者的意圖，自動評估該應用程式是否需要搭配資料庫。",[563,3092,3093],{},"根據指定的候選清單，智慧判斷並按需安裝可選模組。例如，只有在使用者明確提出相關需求時，才會選擇性（Opt-in）匯入 Nuxt Content、i18n 多語言和流量分析模組。",[563,3095,3096],{},"能夠敏銳適應當前的開發生態，使用最新的 Nuxt 框架規範、針對 Cloudflare 綁定的 NuxtHub 以及用於部署的 Wrangler 命令列工具。",[563,3098,3099],{},"具備強大的自我修復能力，能夠在某一步驟失敗時自律分析原因並重新嘗試。",[563,3101,3102],{},"在最終交付專案前，能夠嚴格按照最終檢查清單 (Checklist) 进行校驗，確保交付品質。",[429,3104,3106],{"id":3105},"我們的-nuxt-cloudflare-腳手架-agent-技能技術內幕","我們的 Nuxt & Cloudflare 腳手架 Agent 技能技術內幕",[434,3108,3109,3110,3117],{},"這個開源技能 ",[1565,3111,3114],{"href":3112,"rel":3113},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill",[1569],[459,3115,3116],{},"scaffold-nuxt-cloudflare-app-skill"," 包含了一整套面向生產環境的自律建構流程：",[560,3119,3120,3153,3174,3200,3230,3269,3277],{},[563,3121,3122,716,3125],{},[1157,3123,3124],{},"自動澄清無法推斷的模糊要點",[804,3126,3127,3138,3144],{},[563,3128,3129,3130,3133,3134,3137],{},"確認首選的 UI 框架（預設是 ",[1157,3131,3132],{},"Nuxt UI","，也可選擇 ",[1157,3135,3136],{},"Antdv Next","）；",[563,3139,3140,3141,3137],{},"確認是否需要資料庫支援（如 ",[1157,3142,3143],{},"Cloudflare D1",[563,3145,3146,3147,3150,3151,2096],{},"確認是否需要額外模組，例如用於建構 CMS 功能的 ",[459,3148,3149],{},"@nuxtjs\u002Fi18n"," 或 ",[459,3152,3048],{},[563,3154,3155,3158,3159,3162,3163,3166,3167,1164,3170,3173],{},[1157,3156,3157],{},"初始化基礎應用程式框架","：執行 ",[459,3160,3161],{},"pnpm dlx nuxi@latest init"," 命令，使用 ",[459,3164,3165],{},"pnpm"," 套件管理器初始化最新版的 Nuxt 框架。隨後配置原生建構白名冊 (native-build allowlists)，以確保 Cloudflare 的建構環境能夠順利編譯 ",[459,3168,3169],{},"better-sqlite3",[459,3171,3172],{},"sharp"," 等原生依賴包。",[563,3175,3176,3179,3180,3150,3183,3186,3187,3186,3190,3186,3193,3186,3196,3199],{},[1157,3177,3178],{},"基於決策表按需安裝模組","：自動安裝 ",[459,3181,3182],{},"@nuxt\u002Fui",[459,3184,3185],{},"@antdv-next\u002Fnuxt","、",[459,3188,3189],{},"@nuxt\u002Fimage",[459,3191,3192],{},"@nuxtjs\u002Fseo",[459,3194,3195],{},"@nuxthub\u002Fcore",[459,3197,3198],{},"@vueuse\u002Fnuxt","，並在選中時條件分支安裝 Drizzle\u002FD1、Nuxt Content 以及 i18n。",[563,3201,3202,716,3205],{},[1157,3203,3204],{},"科學合理的目錄結構布局",[804,3206,3207,3212,3217,3222,3227],{},[563,3208,3209,3211],{},[459,3210,3058],{}," (Nuxt 4 規範)",[563,3213,3214],{},[459,3215,3216],{},"server\u002F",[563,3218,3219],{},[459,3220,3221],{},"shared\u002F",[563,3223,3224],{},[459,3225,3226],{},"tests\u002F",[563,3228,3229],{},"根目錄下的各類標準設定檔案。",[563,3231,3232,716,3237],{},[1157,3233,3234,3235],{},"精細配置 ",[459,3236,2909],{},[804,3238,3239,3248,3255,3262],{},[563,3240,3241,3242,1164,3245],{},"為 SEO 配置 ",[459,3243,3244],{},"site.url",[459,3246,3247],{},"site.name",[563,3249,3250,3251,3254],{},"寫入用於 Cloudflare 綁定的 NuxtHub ",[459,3252,3253],{},"hub"," 配置區塊",[563,3256,3257,3258,3261],{},"自動配置 ",[459,3259,3260],{},"routeRules"," 路由與快取規則",[563,3263,3264,3265,3268],{},"寫入最新的 ",[459,3266,3267],{},"compatibilityDate"," 相容性日期",[563,3270,3271],{},[1157,3272,3273,3274,3276],{},"科學生成 ",[459,3275,2912],{}," 設定檔案並進行雲端資源綁定",[563,3278,3279,3282,3283,3286,3287,3290],{},[1157,3280,3281],{},"配置 Vitest 測試框架與 ESLint 程式碼規範","，隨後執行",[1157,3284,3285],{},"最終校驗清單","，在背景實際執行 ",[459,3288,3289],{},"pnpm install && pnpm dev"," 進行沙箱執行測試，全部通過後方才宣告建構成功。",[429,3292,3294],{"id":3293},"傳統-shell-腳本-vs-ai-agent-技能維度對比","傳統 Shell 腳本 vs AI Agent 技能：維度對比",[3296,3297,3298,3314],"table",{},[3299,3300,3301],"thead",{},[3302,3303,3304,3308,3311],"tr",{},[3305,3306,3307],"th",{},"對比維度",[3305,3309,3310],{},"傳統 Shell 腳本",[3305,3312,3313],{},"AI Agent 技能",[3315,3316,3317,3329,3340,3351,3362,3373],"tbody",{},[3302,3318,3319,3323,3326],{},[3320,3321,3322],"td",{},"意圖識別能力",[3320,3324,3325],{},"❌ 行為完全寫死",[3320,3327,3328],{},"✅ 自動理解自然語言並按需適配",[3302,3330,3331,3334,3337],{},[3320,3332,3333],{},"動態決策能力",[3320,3335,3336],{},"❌ 僅限硬編碼的參數判斷",[3320,3338,3339],{},"✅ 執行時動態推敲最佳方案",[3302,3341,3342,3345,3348],{},[3320,3343,3344],{},"生态更新適應度",[3320,3346,3347],{},"❌ 需開發者手動重寫程式碼",[3320,3349,3350],{},"✅ 自動感知當前技術棧規範並適配",[3302,3352,3353,3356,3359],{},[3320,3354,3355],{},"容錯與復原機制",[3320,3357,3358],{},"❌ 一旦出錯立即中斷退出",[3320,3360,3361],{},"✅ 自動定位錯誤、自癒並繼續執行",[3302,3363,3364,3367,3370],{},[3320,3365,3366],{},"成果品質校驗",[3320,3368,3369],{},"❌ 缺乏品質校驗機制",[3320,3371,3372],{},"✅ 依托最終檢查清單進行閉環測試",[3302,3374,3375,3378,3381],{},[3320,3376,3377],{},"長期維護成本",[3320,3379,3380],{},"❌ 參數膨脹、邏輯混亂、易崩壞",[3320,3382,3383],{},"✅ 只需維護人可讀的 Markdown 設計檔案",[429,3385,3387],{"id":3386},"如何使用-npx-skills-命令行工具安裝-ai-agent-技能","如何使用 npx skills 命令行工具安裝 AI Agent 技能",[434,3389,3390,3391,3396],{},"只需一行簡單的指令，即可透過 ",[1565,3392,3395],{"href":3393,"rel":3394},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[1569],"skills CLI"," 工具完成該技能的無縫匯入：",[453,3398,3400],{"className":455,"code":3399,"language":457,"meta":424,"style":424},"npx skills add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git -g\n",[459,3401,3402],{"__ignoreMap":424},[462,3403,3404,3406,3409,3412,3415],{"class":464,"line":465},[462,3405,2952],{"class":468},[462,3407,3408],{"class":472}," skills",[462,3410,3411],{"class":472}," add",[462,3413,3414],{"class":472}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fscaffold-nuxt-cloudflare-app-skill.git",[462,3416,3417],{"class":472}," -g\n",[434,3419,3420,3421],{},"該工具會自動克隆倉庫、定位技能檔案，並詢問您希望將此技能關聯到本地系統所支援的 77 個 Agent 中的哪一個：\n",[477,3422],{"alt":3423,"src":3424},"在終端機中執行 npx skills add 命令列工具來全域安裝 Nuxt 腳手架建構技能的介面","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fnpx-skills-add-scaffold-nuxt-installation.webp",[434,3426,3427,3428,3431,3432,3435,3436],{},"我們強烈推薦選擇 ",[1157,3429,3430],{},"Symlink (符號連結)"," 方式。這種模式下，技能只需在 ",[459,3433,3434],{},"~\u002F.agents\u002Fskills"," 目錄中下載一次，所有被勾選的 Agent 都將指向這同一份原始檔案。\n",[477,3437],{"alt":3438,"src":3439},"終端機中顯示的集中式 Agent 技能安裝摘要以及軟連結 (Symlink) 路徑設定詳情","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fnpx-skills-installation-summary-details.webp",[804,3441,3442],{},[563,3443,3444],{},[1223,3445,3446,3447,2096],{},"如果您希望深入了解如何有效避免技能碎片化並在一處集中管理它們，請參閱我們的這篇深度好文：",[1565,3448,3449],{"href":359},"使用 npx skills 徹底解決不同 AI Agent（如 Claude Code 或 Kimi）技能碎片化問題",[434,3451,3452],{},"完成安裝後，打開 Claude Code 終端機，輸入內建指令即可確認該技能已成功啟用。",[434,3454,3455],{},[477,3456],{"alt":3457,"src":3458},"Claude Code 命令列終端機中顯示的全新安裝且已啟用可用的 \u002Fscaffold-nuxt 斜線快捷命令","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002Fclaude-code-scaffold-nuxt-slash-command-active.webp",[434,3460,3461],{},"接下來，您只需輸入一句簡單的自然語言，即可瞬間搞定複雜的工程腳手架搭建：",[2786,3463,3464],{},[434,3465,3466],{},"\"Scaffold a new Nuxt app deployed to Cloudflare Workers — Nuxt UI, a blog section, and a D1 database\"",[434,3468,3469,3470,3474],{},"該腳手架技能完全開源，歡迎訪問我們的 ",[1565,3471,3473],{"href":3112,"rel":3472},[1569],"GitHub 倉庫"," 提交 Feedback 並上手體驗！",[1095,3476,3477],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":543,"depth":604,"links":3479},[3480,3481,3482,3483,3484],{"id":2920,"depth":543,"text":2921},{"id":3068,"depth":543,"text":3069},{"id":3105,"depth":543,"text":3106},{"id":3293,"depth":543,"text":3294},{"id":3386,"depth":543,"text":3387},[1110],"2026-08-25","輕鬆在 Cloudflare Workers 上快速建構 Nuxt 應用程式腳手架。深入剖析並學習我們如何使用功能強大、極具靈活性、能根據意圖決策且支援自我修復的 AI 智慧體技能，來徹底取代脆弱且難以維護的傳統 Shell 腳本，並詳細演示如何透過 npx skills 命令行工具將其無缝安裝到您的本地開發工作流中。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20AI%20Agent%20Skills%20Replace%20Nuxt%20App%20Scaffolding%20Scripts\u002FTW-How-AI-Agent-Skills-Replace-Nuxt-App-Scaffolding-Scripts.webp","Nuxt 應用程式在 Cloudflare 上的腳手架建構：傳統 Shell 腳本與 AI 智慧體技能對比。分析為什麼智慧體技能優於傳統初始化腳本。",{"schemaOrg":3491,"robots":1131,"sitemap":3493},[3492],{"@type":1607,"headline":2901,"description":3487,"image":3488},{"lastmod":3486},{"title":3495,"description":3487,"ogTitle":2901,"ogDescription":3487,"twitterTitle":2901,"twitterDescription":3487},"Nuxt 應用程式在 Cloudflare 上的腳手架建構：傳統 Shell 腳本與 AI 智慧體技能對比","tw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",[3498,3499,1140,3500],"Nuxt","Cloudflare","Scaffolding","7Hh5zal4sRkoJezAuNT3T7Bv8UlZZI9OVmJtSb0kBX4",{"id":3503,"title":3504,"author":424,"body":3505,"category":4715,"date":4718,"description":4719,"extension":1113,"image":4720,"imageAlt":4721,"isPublished":976,"meta":4722,"minRead":1033,"navigation":976,"path":355,"seo":4746,"stem":4748,"tags":4749,"updatedAt":1141,"__hash__":4752},"article\u002Ftw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness.md","為 DeepSeek Harness 接入 Buzz 協作平台：構建自託管 Nostr 訊息閘道的完整實踐",{"type":426,"value":3506,"toc":4699},[3507,3513,3535,3543,3546,3550,3555,3596,3599,3658,3662,3669,3944,3947,3951,3955,3961,3965,3978,3982,3992,4039,4046,4050,4053,4085,4088,4093,4133,4141,4147,4156,4162,4192,4206,4210,4219,4250,4272,4320,4327,4333,4339,4346,4352,4357,4365,4379,4385,4395,4432,4435,4441,4448,4454,4458,4461,4612,4615,4656,4660,4666,4670,4696],[434,3508,3509],{},[477,3510],{"alt":3511,"src":3512},"DeepSeek Harness 訊息閘道連線至 Block Buzz 頻道的運作概觀","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-nostr-gateway-overview.webp",[434,3514,3515,3516,3523,3524,3529,3530,3534],{},"DeepSeek Harness（DSH）的官方外掛程式 ",[1157,3517,3518],{},[1565,3519,3522],{"href":3520,"rel":3521},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway",[1569],"dsh-message-gateway","，能夠將 DeepSeek Harness 助理無縫延伸至 Discord、Telegram、WeChat 等多種主流即時通訊平台。該外掛程式倉庫已被 Fork 並進行了二次開發，旨在將 ",[1157,3525,3526],{},[1565,3527,3528],{"href":383},"自建 Block 旗下 Buzz 協作平台：輕鬆構建人類與 AI 智能體高效協同工作的全新共享工作空間"," 納入支援清單。Fork 後的開原始碼倉庫位於 GitHub：",[1565,3531,3532],{"href":3532,"rel":3533},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway",[1569]," 。",[3536,3537],"article-card",{"description":3538,"image":3539,"image-alt":3540,"label":3541,"min-read":3542,"title":3528,"to":383},"本教學將手把手帶您在 Ubuntu VPS 上部署自託管的 Block 旗下 Nostr 中繼 Buzz，並配置 Cloudflare DNS 安全網路。我們將幫助您搭建起一個安全性的共享工作空間，讓您的團隊成員與多個 AI 智能體（如 Claude、Kimi）能夠基於加密身份進行高效溝通、共享專案上下文並實現無縫協作。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FTW-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","一張高顏值的 16:9 科技質感卡片，具有深藍色 and 橙色色調，插圖展示如何在 Ubuntu VPS 上部署自託管的 Block 旗下 Buzz 協作中繼伺服器，其中包含一個帶有置中文字的毛玻璃微動質感面板。","前置準備指南","12",[434,3544,3545],{},"DSH 助理作為一個全功能成員加入 Buzz Nostr 中繼伺服器，既能接收私人訊息（DM），也能接收被 @mention 提及的頻道訊息，並透過與 Web UI 完全相同的獨立工作階段智能體管線輸出回應。",[429,3547,3549],{"id":3548},"dsh-message-gateway-外掛架構剖析","dsh-message-gateway 外掛架構剖析",[434,3551,3552,3554],{},[1157,3553,3522],{}," 外掛的系統架構清晰劃分為主機端與用戶端兩大部分：",[804,3556,3557,3586],{},[563,3558,3559,593,3562,3565,3566,3569,3570,3573,3574,3577,3578,3581,3582,3585],{},[1157,3560,3561],{},"主機端（Node 環境）",[459,3563,3564],{},"gateway-store","（憑證與設定持久化儲存，位於 ",[459,3567,3568],{},"~\u002F.dsh\u002Fgateway.json","）、",[459,3571,3572],{},"platforms.ts","（支援平台定義與連線測試）、",[459,3575,3576],{},"routes.ts","（對外暴露的 ",[459,3579,3580],{},"\u002Fgateway\u002F*"," 路由端點）以及 ",[459,3583,3584],{},"bridge-manager.ts","（常駐閘道橋接器：負責按對話維護獨立 Agent 執行個體並統一管理串流回應推送）。",[563,3587,3588,3591,3592,3595],{},[1157,3589,3590],{},"用戶端（瀏覽器前端）","：側邊欄的「",[1157,3593,3594],{},"Message platforms","」視覺化設定頁面，負責填寫金鑰參數、發起連線測試以及直觀監視閘道即時在線狀態。",[434,3597,3598],{},"為閘道接入一個全新通訊平台通常需要經歷以下三步：",[560,3600,3601,3619,3633],{},[563,3602,3603,3606,3607,3610,3611,3614,3615,3618],{},[1157,3604,3605],{},"實作 Bridge 橋接類別","：提供 ",[459,3608,3609],{},"start\u002Fstop\u002Fstatus"," 生命週期方法以及 ",[459,3612,3613],{},"onText(text, frame)"," 訊息回呼，結構規範與現有的 ",[459,3616,3617],{},"wecom-bridge.ts"," 完全一致。",[563,3620,3621,3624,3625,3628,3629,3632],{},[1157,3622,3623],{},"接入 bridge-manager 排程器","：複用既有的多工作階段排程管線（",[459,3626,3627],{},"ensureAgentForKey"," + ",[459,3630,3631],{},"pendingMap","），並將底層文字輸出串流掛載至該平台的專用回覆接收器。",[563,3634,3635,3638,3639,2035,3642,3645,3646,3649,3650,3653,3654,3657],{},[1157,3636,3637],{},"對接持久化儲存與設定路由","：在 ",[459,3640,3641],{},"\u002Fgateway\u002Fsave",[459,3643,3644],{},"\u002Fgateway\u002Fdelete"," 邏輯中實作：",[1157,3647,3648],{},"儲存設定即自動啟動橋接服務，刪除設定則優雅停止橋接服務","，配合 ",[459,3651,3652],{},"autoStartXxx"," 狀態旗標確保 ",[459,3655,3656],{},"dsh web"," 守護行程開機自動重新連線。",[429,3659,3661],{"id":3660},"buzz-閘道橋接實作nostr-協定標準與事件生命週期","Buzz 閘道橋接實作：Nostr 協定標準與事件生命週期",[434,3663,3664,3665,3668],{},"本次接入直接使用 ",[1157,3666,3667],{},"DeepSeek Harness"," 自行編寫完成了完整的 Buzz 適配橋接器。底層嚴格遵循了如下 Nostr 協定規範標準：",[3296,3670,3671,3683],{},[3299,3672,3673],{},[3302,3674,3675,3680],{},[3305,3676,3677],{},[1157,3678,3679],{},"維度 \u002F 階段",[3305,3681,3682],{},"協定實作規範與技術細節",[3315,3684,3685,3706,3724,3751,3769,3794,3819,3841,3855,3869,3888,3905,3919],{},[3302,3686,3687,3692],{},[3320,3688,3689],{},[1157,3690,3691],{},"底層傳輸（Transport）",[3320,3693,3694,3695,3698,3699,3702,3703],{},"單條經過 NIP-42 鑑權認證的 WebSocket 鏈路；預設中繼連線位址為 ",[459,3696,3697],{},"ws:\u002F\u002Flocalhost:3000","；輸入的 ",[459,3700,3701],{},"http(s):\u002F\u002F"," 會自動正規化為 ",[459,3704,3705],{},"ws(s):\u002F\u002F",[3302,3707,3708,3713],{},[3320,3709,3710],{},[1157,3711,3712],{},"鑑權認證（Auth）",[3320,3714,3715,3716,3719,3720,3723],{},"AUTH 事件 ",[459,3717,3718],{},"kind 22242","，攜帶標籤 ",[459,3721,3722],{},"[[\"relay\", url], [\"challenge\", challenge]]","，內容為空字串，由 Agent 的私密金鑰完成簽章",[3302,3725,3726,3731],{},[3320,3727,3728],{},[1157,3729,3730],{},"訂閱機制（Subs）",[3320,3732,3733,593,3736,3739,3740,3743,3744,3747,3748],{},[1157,3734,3735],{},"嚴格基於頻道隔離",[459,3737,3738],{},"REQ {\"kinds\":[9], \"#h\":[\u003Cuuid>]}"," — 每個頻道獨立建立一條訂閱。全域性的 ",[459,3741,3742],{},"kinds:[9]"," 雖能收到 EOSE 但絕不廣播推送；多值 ",[459,3745,3746],{},"#h"," 標籤過濾在協定中",[1157,3749,3750],{},"無法正常分發",[3302,3752,3753,3758],{},[3320,3754,3755],{},[1157,3756,3757],{},"頻道探索（Discovery）",[3320,3759,3760,3761,3764,3765,3768],{},"歷史中繼資料回溯查詢 ",[459,3762,3763],{},"REQ {kinds:[39000]}"," 擷取頻道詳情（其中 ",[459,3766,3767],{},"type == \"dm\""," 用於標記單聊私訊頻道）",[3302,3770,3771,3776],{},[3320,3772,3773],{},[1157,3774,3775],{},"成員異動訂閱",[3320,3777,3778,3779,3782,3783,3785,3786,3789,3790,3793],{},"即時長連線訂閱 ",[459,3780,3781],{},"REQ {kinds:[44100,44101], \"#p\":[Agent 公鑰], since: now-60s}"," — 44100 為加入群組，44101 為被移除，均附帶 ",[459,3784,434],{},"+",[459,3787,3788],{},"h","；成員關係變更時",[1157,3791,3792],{},"無需重新連線","即可動態熱更新訂閱狀態",[3302,3795,3796,3801],{},[3320,3797,3798],{},[1157,3799,3800],{},"即時聊天事件",[3320,3802,3803,3806,3807,3810,3811,3814,3815,3818],{},[459,3804,3805],{},"kind 9"," 事件，攜帶 ",[459,3808,3809],{},"[\"h\", channel]"," 頻道標籤，可選附帶 ",[459,3812,3813],{},"[\"e\", replyTo]"," 回覆目標與 ",[459,3816,3817],{},"[\"p\", mention]"," 被提及者標籤",[3302,3820,3821,3826],{},[3320,3822,3823],{},[1157,3824,3825],{},"原位更新編輯",[3320,3827,3828,3831,3832,2035,3834,3837,3838,3840],{},[459,3829,3830],{},"kind 40003"," 事件，附帶 ",[459,3833,3788],{},[459,3835,3836],{},"e"," 目標標籤；內容完全替換；中繼伺服器單包上限 64 KB → 嚴控酬載 ≤ 60,000 B；超長回覆分塊處理 — 首塊用於原位編輯替換，超出部分作為回覆串討論串的 ",[459,3839,3805],{}," 訊息追加",[3302,3842,3843,3848],{},[3320,3844,3845],{},[1157,3846,3847],{},"CLOSED 異常訊框處理",[3320,3849,3850,3851,3854],{},"鑑權未完成前收到 ",[459,3852,3853],{},"auth-required"," 屬於正常引導階段（完成 AUTH 後重新拉起訂閱）；鑑權完成後遇斷線 → 階梯式限次重試（最多 3 次，間隔 0\u002F1\u002F2 秒退避）；整鏈重連時全量重構上下文",[3302,3856,3857,3862],{},[3320,3858,3859],{},[1157,3860,3861],{},"中繼拉取上限",[3320,3863,3864,3865,3868],{},"每次訂閱最多拉取 2000 條歷史事件，即使設定了 ",[459,3866,3867],{},"since"," 過濾參數，中繼伺服器仍按自最新向過去的時間倒序返回",[3302,3870,3871,3876],{},[3320,3872,3873],{},[1157,3874,3875],{},"訊息命中判定",[3320,3877,3878,3879,3881,3882,3884,3885,3887],{},"僅當滿足以下任一條件時才啟動處理入站 ",[459,3880,3805],{},"：(a) ",[459,3883,434],{}," 標籤明確包含自身公鑰，(b) 處於 DM 私訊頻道，(c) 回覆關聯的 ",[459,3886,3836],{}," 根事件為自身發出的訊息。自動過濾自身公鑰發送的內容（徹底杜絕迴圈）",[3302,3889,3890,3895],{},[3320,3891,3892],{},[1157,3893,3894],{},"出站 @ 提及",[3320,3896,3897,3898,3901,3902,3904],{},"出站內容按純文字原樣發布 — 中繼伺服器端不對正文中的 ",[459,3899,3900],{},"@"," 符號進行預先驗證；",[459,3903,434],{}," 標籤填入當前對話原作者以及至多 7 位其他被提及者的公鑰（單條上限 8 位）",[3302,3906,3907,3912],{},[3320,3908,3909],{},[1157,3910,3911],{},"私聊訊息（DM）",[3320,3913,3914,3915,3918],{},"依賴中繼伺服器範圍內的明文受限頻道（中繼資料標註 ",[459,3916,3917],{},"type: \"dm\"","） — 當前橋接實作中未引入 NIP-04\u002F44 複雜非對稱端對端加密",[3302,3920,3921,3926],{},[3320,3922,3923],{},[1157,3924,3925],{},"媒體附件（入站）",[3320,3927,3928,3929,3932,3933,3936,3937,3936,3940,3943],{},"NIP-92 ",[459,3930,3931],{},"imeta"," 規範（",[459,3934,3935],{},"url",", ",[459,3938,3939],{},"sha256",[459,3941,3942],{},"m","）→ 常規 HTTP(S) 串流下載，本地驗證 SHA-256 完整性，單檔限制 20 MB，每條訊息最多 4 張；出站圖片發布暫無官方中繼協定路徑，現階段不支援出站圖片",[434,3945,3946],{},"Buzz 適配閘道的啟動引導時序圖如下：",[477,3948],{"src":3949,"alt":3950},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-bootstrap.webp","展示 Buzz 閘道引導連線與 NIP-42 協定身分鑑權流程的時序圖",[445,3952,3954],{"id":3953},"基於-nostr-40003-事件原位編輯實現的即時串流輸出","基於 Nostr 40003 事件原位編輯實現的即時串流輸出",[434,3956,3957,3958,593],{},"Nostr 協定缺乏原生鍵入中（Typing）狀態通知，且底層事件設計為嚴格只增不改。為了讓對話過程具備流暢的即時互動感，Buzz 適配閘道",[1157,3959,3960],{},"透過原位編輯巧妙模擬了串流打字輸出",[477,3962],{"src":3963,"alt":3964},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-reply.webp","基於 kind 40003 事件原位編輯模擬打字串流回應的邏輯流程圖",[804,3966,3967],{},[563,3968,3969],{},[1223,3970,3971,3972,3974,3975,3977],{},"閘道首先秒級發出一條 ",[459,3973,3805],{}," 預留位置訊息，隨後在 Agent 推理過程中按設定的節流閥值連續發射 ",[459,3976,3830],{}," 原位編輯事件逐步追加渲染內容，並在推理終點落定最終文字。這一設計思路與 Telegram、Discord 橋接器的實作方式一脈相承。",[445,3979,3981],{"id":3980},"透過聊天指令打通-deepseek-harness-本地工作區","透過聊天指令打通 DeepSeek Harness 本地工作區",[434,3983,3984,3985,3988,3989,860],{},"DSH Web 介面所支援的「工作區（Workspaces）」核心能力依賴於底層 ",[459,3986,3987],{},"@deepseek-ai\u002Fdsh-workspace"," 模組中的 ",[459,3990,3991],{},"workspaceRegistry",[453,3993,3997],{"className":3994,"code":3995,"language":3996,"meta":424,"style":424},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const existing = await ctx.workspaceRegistry.resolveByPath(request.path);\n","typescript",[459,3998,3999],{"__ignoreMap":424},[462,4000,4001,4005,4008,4011,4015,4018,4021,4023,4025,4028,4031,4033,4036],{"class":464,"line":465},[462,4002,4004],{"class":4003},"spNyl","const",[462,4006,4007],{"class":539}," existing ",[462,4009,4010],{"class":502},"=",[462,4012,4014],{"class":4013},"s7zQu"," await",[462,4016,4017],{"class":539}," ctx",[462,4019,4020],{"class":502},".",[462,4022,3991],{"class":539},[462,4024,4020],{"class":502},[462,4026,4027],{"class":2939},"resolveByPath",[462,4029,4030],{"class":539},"(request",[462,4032,4020],{"class":502},[462,4034,4035],{"class":539},"path)",[462,4037,4038],{"class":502},";\n",[434,4040,4041,4042,4045],{},"Buzz 橋接器透過引入全新的聊天斜線指令 ",[459,4043,4044],{},"\u002Fworkspace \u003C目錄路徑>","，允許在群聊中直接向 DSH 註冊並綁定本地現存的資料夾。在此之後，該工作階段下的所有互動都將牢牢錨定在此目錄中，並能即時無縫同步在 DSH Web UI 端查看。",[477,4047],{"src":4048,"alt":4049},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace.webp","透過閘道聊天指令動態註冊並綁定 DeepSeek Harness 本地工作區的架構示意圖",[434,4051,4052],{},"開發與使用過程中需重點明確的三大設計機制：",[804,4054,4055,4065,4075],{},[563,4056,4057,4060,4061,4064],{},[1157,4058,4059],{},"變更目錄等同於開啟全新工作階段","：工作階段的工作目錄（",[459,4062,4063],{},"cwd","）在初始化生成 Session Header 時即完成寫入，後續在生命週期內不可直接原地竄改。",[563,4066,4067,4070,4071,4074],{},[1157,4068,4069],{},"目標本地目錄必須預先存在","：底層 ",[459,4072,4073],{},"create"," 註冊函式會對路徑進行嚴格驗證，若路徑在主機上不存在將直接擲出例外狀況拒絕綁定。",[563,4076,4077,4080,4081,4084],{},[1157,4078,4079],{},"高度安全敏感指令","：透過閘道衍生的工作階段均賦予 ",[1157,4082,4083],{},"auto-approve","（自動核准命令執行）特權，擁有對目標資料夾直接進行讀寫和工具操作的完全存取權。",[429,4086,4087],{"id":4087},"安裝與設定全流程指南",[560,4089,4090],{},[563,4091,4092],{},"在終端機執行以下指令完成外掛程式下載與啟動：",[453,4094,4096],{"className":455,"code":4095,"language":457,"meta":424,"style":424},"dsh plugin --profile web add https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n\n# Start DSH web\ndsh web\n",[459,4097,4098,4117,4121,4126],{"__ignoreMap":424},[462,4099,4100,4103,4106,4109,4112,4114],{"class":464,"line":465},[462,4101,4102],{"class":468},"dsh",[462,4104,4105],{"class":472}," plugin",[462,4107,4108],{"class":472}," --profile",[462,4110,4111],{"class":472}," web",[462,4113,3411],{"class":472},[462,4115,4116],{"class":472}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fdsh-message-gateway.git\n",[462,4118,4119],{"class":464,"line":543},[462,4120,977],{"emptyLinePlaceholder":976},[462,4122,4123],{"class":464,"line":604},[462,4124,4125],{"class":2219},"# Start DSH web\n",[462,4127,4128,4130],{"class":464,"line":973},[462,4129,4102],{"class":468},[462,4131,4132],{"class":472}," web\n",[560,4134,4135],{"start":543},[563,4136,4137,4138,4140],{},"待 DSH Web 介面啟動並用瀏覽器開啟後，按一下介面側邊欄中的「",[1157,4139,3594],{},"」圖示：",[434,4142,4143],{},[477,4144],{"alt":4145,"src":4146},"DeepSeek Harness Web UI 側邊欄醒目提示的 Message platforms 設定功能表項目","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-message-platforms-sidebar-icon.webp",[560,4148,4149],{"start":604},[563,4150,4151,4152,4155],{},"在左側平台清單中選擇「",[1157,4153,4154],{},"Buzz","」：",[434,4157,4158],{},[477,4159],{"alt":4160,"src":4161},"DeepSeek Harness 訊息閘道內的 Buzz 協定參數與金鑰對設定面板","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-message-gateway-buzz-config-panel.webp",[560,4163,4164,4175,4186],{"start":973},[563,4165,4166,4167,4170,4171,4174],{},"按一下「",[1157,4168,4169],{},"Generate keypair","」按鈕即時生成全新的 Nostr 身分金鑰對。請務必將生成的 ",[459,4172,4173],{},"npub"," 公鑰妥善複製暫存，後續步驟將作為關鍵身分憑證。",[563,4176,4177,4178,4181,4182,4185],{},"準確填入您的 ",[1157,4179,4180],{},"Relay URL","（中繼位址）以及需要監聽訂閱的 ",[1157,4183,4184],{},"Channels","（允許存取的頻道 UUID 白名單清單）。",[563,4187,4188,4189,4191],{},"按一下底部的「",[1157,4190,1262],{},"」按鈕完成儲存。",[434,4193,4194,4195,4198,4199,4202,4203,4205],{},"表單提交後，系統將持久化儲存設定並",[1157,4196,4197],{},"立即啟動 Buzz 閘道服務","。私密金鑰 ",[459,4200,4201],{},"nsec"," 作為最高機密憑證被自動保護，僅獨立存放在主機本地的 ",[459,4204,3568],{}," 檔案中。",[445,4207,4209],{"id":4208},"將-dsh-智能體註冊至-buzz-nostr-中繼服務","將 DSH 智能體註冊至 Buzz Nostr 中繼服務",[434,4211,4212,4215,4216,4218],{},[1157,4213,4214],{},"將 DSH 助理作為新成員註冊加入中繼伺服器","。此處公鑰填入上文所生成的 ",[459,4217,4173],{}," 字串：",[453,4220,4222],{"className":455,"code":4221,"language":457,"meta":424,"style":424},"docker compose exec relay buzz-admin add-member --pubkey npub123123123\n",[459,4223,4224],{"__ignoreMap":424},[462,4225,4226,4229,4232,4235,4238,4241,4244,4247],{"class":464,"line":465},[462,4227,4228],{"class":468},"docker",[462,4230,4231],{"class":472}," compose",[462,4233,4234],{"class":472}," exec",[462,4236,4237],{"class":472}," relay",[462,4239,4240],{"class":472}," buzz-admin",[462,4242,4243],{"class":472}," add-member",[462,4245,4246],{"class":472}," --pubkey",[462,4248,4249],{"class":472}," npub123123123\n",[434,4251,4252,4255,4256,4259,4260,4263,4264,4267,4268,4271],{},[1157,4253,4254],{},"將 DSH 助理加入特定的溝通頻道","。僅加入中繼並不會讓助理自動出現在頻道成員清單中。需要透過 ",[459,4257,4258],{},"buzz-cli"," 進一步執行入群操作。注意此處 ",[459,4261,4262],{},"--pubkey"," 參數必須使用 ",[1157,4265,4266],{},"HEX 16 進位公鑰","格式，而非 npub 格式（在上一步執行 ",[459,4269,4270],{},"buzz-admin add-member"," 時，終端機輸出中會印出對應的 HEX 公鑰）：",[453,4273,4275],{"className":455,"code":4274,"language":457,"meta":424,"style":424},"buzz channels add-member --channel \u003CCHANNEL_UUID> --pubkey \u003CAGENT_HEX> --role member\n",[459,4276,4277],{"__ignoreMap":424},[462,4278,4279,4282,4285,4287,4290,4293,4296,4299,4302,4304,4306,4309,4312,4314,4317],{"class":464,"line":465},[462,4280,4281],{"class":468},"buzz",[462,4283,4284],{"class":472}," channels",[462,4286,4243],{"class":472},[462,4288,4289],{"class":472}," --channel",[462,4291,4292],{"class":502}," \u003C",[462,4294,4295],{"class":472},"CHANNEL_UUI",[462,4297,4298],{"class":539},"D",[462,4300,4301],{"class":502},">",[462,4303,4246],{"class":472},[462,4305,4292],{"class":502},[462,4307,4308],{"class":472},"AGENT_HE",[462,4310,4311],{"class":539},"X",[462,4313,4301],{"class":502},[462,4315,4316],{"class":472}," --role",[462,4318,4319],{"class":472}," member\n",[3536,4321],{"description":4322,"image":3539,"image-alt":3540,"label":4323,"min-read":4324,"title":4325,"to":4326},"手把手教您安裝與設定 buzz-cli，以便在 Nostr 中繼伺服器上管理頻道、成員金鑰以及 AI 智能體的角色權限。","CLI 指南","5","如何安裝並使用 buzz-cli","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#install-buzz-cli",[434,4328,4329,4330,4332],{},"隨後可透過 ",[459,4331,4258],{}," 靈活更新 DSH 助理在 Nostr 中繼伺服器中的公開設定檔，設定更具識別度的暱稱：",[434,4334,4335],{},[477,4336],{"alt":4337,"src":4338},"使用 buzz-cli 命令列工具更新 DSH 助理在 Nostr 中繼伺服器上的公開個人資料","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-assistant-buzz-cli-profile-update.webp",[434,4340,4341,4342,4345],{},"在用戶端向 DSH 助理傳送一次 ",[1157,4343,4344],{},"Wave","（Buzz 平台獨特的 DM 私訊打招呼動作）。助理隨後傳回回覆，代表閘道通訊已完全就緒：",[434,4347,4348],{},[477,4349],{"alt":4350,"src":4351},"在 Buzz 用戶端向 DeepSeek Harness 助理傳送 Wave 私訊進行連線性驗證","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-dm-wave-greeting-reply.webp",[434,4353,4354],{},[1223,4355,4356],{},"向 DSH 助理傳送 Wave 私訊打招呼 — 橋接閘道正常秒級回應。",[445,4358,4360,4361,4364],{"id":4359},"透過-workspace-指令開啟本地工作區聯動","透過 ",[459,4362,4363],{},"\u002Fworkspace"," 指令開啟本地工作區聯動",[434,4366,4367,4368,4371,4372,4375,4376,4378],{},"由於 ",[459,4369,4370],{},"allowWorkspace"," 設定項目出於環境安全考量預設處於停用（",[459,4373,4374],{},"false","）狀態，未經設定直接向助理發送 ",[459,4377,4363],{}," 命令會被系統攔截拒絕：",[434,4380,4381],{},[477,4382],{"alt":4383,"src":4384},"在未開啟 allowWorkspace 權限時發送 \u002Fworkspace 命令被系統安全攔截的提示","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-rejected-error.webp",[434,4386,4387,4388,4391,4392,4394],{},"開啟設定檔 ",[459,4389,4390],{},"~\u002F.dsh\u002Fprofiles\u002Fweb\u002Fcordis.patch.yml"," 新增開關設定，隨後重新啟動 ",[459,4393,3656],{}," 服務即可：",[453,4396,4400],{"className":4397,"code":4398,"language":4399,"meta":424,"style":424},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- id: ui-message-gateway\n  config:\n    allowWorkspace: true\n","yml",[459,4401,4402,4415,4422],{"__ignoreMap":424},[462,4403,4404,4407,4410,4412],{"class":464,"line":465},[462,4405,4406],{"class":502},"-",[462,4408,4409],{"class":1665}," id",[462,4411,1669],{"class":502},[462,4413,4414],{"class":472}," ui-message-gateway\n",[462,4416,4417,4420],{"class":464,"line":543},[462,4418,4419],{"class":1665},"  config",[462,4421,2516],{"class":502},[462,4423,4424,4427,4429],{"class":464,"line":604},[462,4425,4426],{"class":1665},"    allowWorkspace",[462,4428,1669],{"class":502},[462,4430,4431],{"class":2536}," true\n",[434,4433,4434],{},"設定生效並重新啟動後即可順利綁定：",[434,4436,4437],{},[477,4438],{"alt":4439,"src":4440},"在 Buzz 頻道成功執行 \u002Fworkspace 命令完成本地工作區綁定的確認訊息","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-buzz-workspace-command-success-confirmation.webp",[434,4442,4443,4444,4447],{},"實用提示：此命令預設假設工作區目錄名（例如截圖中的 ",[459,4445,4446],{},"TechVoyage","）直接位於當前使用者的個人主目錄之下；若目錄處於其他深層路徑，請務必傳入完整絕對路徑。透過 Buzz 頻道中註冊綁定好的新工作階段，也都會完全同步在 DeepSeek Harness Web 介面上顯示。",[434,4449,4450],{},[477,4451],{"alt":4452,"src":4453},"DeepSeek Harness Web UI 中展示從 Buzz 頻道自動同步關聯的活躍工作階段","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002Fdsh-web-ui-synced-workspace-session.webp",[445,4455,4457],{"id":4456},"buzz-頻道支援的完整可用指令","Buzz 頻道支援的完整可用指令",[434,4459,4460],{},"其他平台支援的幾乎全部原生功能在 Buzz 中均可順暢運作：",[3296,4462,4463,4473],{},[3299,4464,4465],{},[3302,4466,4467,4470],{},[3305,4468,4469],{},"指令語法",[3305,4471,4472],{},"功能說明",[3315,4474,4475,4485,4495,4505,4514,4524,4534,4544,4553,4576,4595],{},[3302,4476,4477,4482],{},[3320,4478,4479],{},[459,4480,4481],{},"\u002Fworkspace \u003Cfolder>",[3320,4483,4484],{},"將本地已存在的資料夾註冊綁定為當前對話專屬的工作區環境（受設定項目開關保護）",[3302,4486,4487,4492],{},[3320,4488,4489],{},[459,4490,4491],{},"\u002Fhelp",[3320,4493,4494],{},"列印並列出所有支援的命令清單",[3302,4496,4497,4502],{},[3320,4498,4499],{},[459,4500,4501],{},"\u002Ftime",[3320,4503,4504],{},"取得並輸出當前伺服器系統時間",[3302,4506,4507,4511],{},[3320,4508,4509],{},[459,4510,885],{},[3320,4512,4513],{},"捨棄舊上下文，原地重設開啟全新工作階段",[3302,4515,4516,4521],{},[3320,4517,4518],{},[459,4519,4520],{},"\u002Fclear",[3320,4522,4523],{},"清空當前上下文所有歷史對話串流",[3302,4525,4526,4531],{},[3320,4527,4528],{},[459,4529,4530],{},"\u002Fstatus",[3320,4532,4533],{},"查看當前 Buzz 訊息橋接器的即時在線狀態",[3302,4535,4536,4541],{},[3320,4537,4538],{},[459,4539,4540],{},"\u002Fstats",[3320,4542,4543],{},"查看當前系統活躍工作階段總量及所有接入平台（包含 Buzz）的橋接連線詳細狀態",[3302,4545,4546,4550],{},[3320,4547,4548],{},[459,4549,900],{},[3320,4551,4552],{},"輸出全量指令的底層規範與參數描述文件",[3302,4554,4555,4560],{},[3320,4556,4557],{},[459,4558,4559],{},"@path\u002Fto\u002Ffile",[3320,4561,4562,4563,4565,4566,3186,4568,4571,4572,4575],{},"與 Web 端的 ",[459,4564,3900],{}," 檔案提及功能完全一致：Agent 自動相對於工作區讀取檔案內容；單獨發送 ",[459,4567,3900],{},[459,4569,4570],{},"@前綴"," 或使用 ",[459,4573,4574],{},"\u002Ffiles \u003C前綴>"," 可傳回符合的檔案\u002F資料夾清單",[3302,4577,4578,4582],{},[3320,4579,4580],{},[459,4581,910],{},[3320,4583,4584,4587,4588,4590,4591,4594],{},[459,4585,4586],{},"[provider model effort]"," — 驗證有效後即時切換該工作階段的底層推理大型語言模型與思考深度；單獨輸入 ",[459,4589,910],{}," 顯示支援的候選清單，",[459,4592,4593],{},"\u002Fmodel reset"," 恢復系統預設設定",[3302,4596,4597,4602],{},[3320,4598,4599],{},[459,4600,4601],{},"\u002Feffort",[3320,4603,4604,4607,4608,4611],{},[459,4605,4606],{},"\u003Cid>"," 僅針對支援思考深度的模型調整 reasoning effort；",[459,4609,4610],{},"\u002Feffort reset"," 恢復預設推理深度設定",[445,4613,4614],{"id":4614},"核心安全架構總結",[804,4616,4617,4629,4643],{},[563,4618,4619,4622,4623,4625,4626,4628],{},[1157,4620,4621],{},"私密金鑰資產隔離保護","：Agent 專屬的私密金鑰 ",[1157,4624,4201],{}," 僅保存在主機的 ",[459,4627,3568],{}," 中（0600 檔案唯讀權限，不可部分完成寫入機制） — 永遠不會透過 API 端點對外暴露，也不會印至日常除錯記錄中。",[563,4630,4631,4634,4635,4638,4639,4642],{},[1157,4632,4633],{},"全鏈路加密簽章驗章","：每一個入站的 Nostr 事件在投遞給 Agent 執行之前，都會嚴密執行",[1157,4636,4637],{},"密碼學數位簽章檢驗","（",[459,4640,4641],{},"verifyEvent","）、訊息防重送判重、自發自收迴圈過濾以及 @提及權限驗證。",[563,4644,4645,4648,4649,4651,4652,4655],{},[1157,4646,4647],{},"本地工作區指令受限保護","：由於閘道工作階段預設開啟特權自動核准機制，",[459,4650,4363],{}," 目錄註冊能力預設處於停用狀態，必須由開發者在設定檔中明確開啟（",[459,4653,4654],{},"allowWorkspace: true","），嚴防非預期提權暴露敏感目錄。",[429,4657,4659],{"id":4658},"結語擁抱-buzz-去中心化人機協同時代","結語：擁抱 Buzz 去中心化人機協同時代",[434,4661,4662,4663,4665],{},"在將 Buzz 接入 ",[459,4664,3522],{}," 的探索過程中，最大的技術挑戰在於嚴密契合 Nostr 協定的去中心化事件生命週期與事件約束規範。所幸外掛程式本身優秀的架構底座已經將多 Agent 工作階段管理與命令分發高度抽象，一旦建立起可靠的事件監聽與原位串流編輯鏈路，整個橋接閘道便能呈現出超預期的流暢度與生產級穩定性。",[429,4667,4669],{"id":4668},"參考文獻與資料","參考文獻與資料：",[804,4671,4672,4680,4688],{},[563,4673,4674,4679],{},[1565,4675,4678],{"href":4676,"rel":4677},"https:\u002F\u002Fgithub.com\u002Fa792883583\u002Fdsh-message-gateway\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture.md",[1569],"dsh-message-gateway architecture guide"," — 官方閘道架構指南、擴充實踐與安全規範",[563,4681,4682,4687],{},[1565,4683,4686],{"href":4684,"rel":4685},"https:\u002F\u002Fgithub.com\u002Fnbd-wtf\u002Fnostr-tools",[1569],"nostr-tools"," — 底層呼叫的核心 Nostr JavaScript 用戶端程式庫",[563,4689,4690,4695],{},[1565,4691,4694],{"href":4692,"rel":4693},"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fdeer-flow\u002Fblob\u002Fmain\u002Fbackend\u002Fdocs\u002FIM_CHANNEL_CONNECTIONS.md",[1569],"deer-flow IM channel connections"," — 即時通訊平台多通道連線架構設計參考",[1095,4697,4698],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":543,"depth":604,"links":4700},[4701,4702,4706,4713,4714],{"id":3548,"depth":543,"text":3549},{"id":3660,"depth":543,"text":3661,"children":4703},[4704,4705],{"id":3953,"depth":604,"text":3954},{"id":3980,"depth":604,"text":3981},{"id":4087,"depth":543,"text":4087,"children":4707},[4708,4709,4711,4712],{"id":4208,"depth":604,"text":4209},{"id":4359,"depth":604,"text":4710},"透過 \u002Fworkspace 指令開啟本地工作區聯動",{"id":4456,"depth":604,"text":4457},{"id":4614,"depth":604,"text":4614},{"id":4658,"depth":543,"text":4659},{"id":4668,"depth":543,"text":4669},[1110,4716,4281,4717],"collaboration","deepseek-harness","2026-09-30","深入解析如何透過 Nostr 協定將 DeepSeek Harness 接入 Block Buzz 協作平台：手把手配置 NIP-42 鑑權認證、基於 40003 事件的原位串流編輯輸出、頻道獨立工作階段管理與本地工作區指令聯動，為開發團隊建構安全可控、開箱即用的人機協同智能體開發環境與全新工作流程。","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FBringing%20Buzz%20to%20DeepSeek%20Harness\u002FTW-Bringing-Buzz-to-DeepSeek-Harness.webp","一張高顏值的 16:9 科技質感卡片，具有深藍色與琥珀色調，插圖展示如何為 DeepSeek Harness 接入 Block Buzz 協作平台並構建自託管 Nostr 協定閘道，中央配有高對比度毛玻璃面板與精緻正體中文排版。",{"schemaOrg":4723,"robots":1131,"sitemap":4745},[4724,4725],{"@type":1607,"headline":3504,"description":4719,"image":4720},{"@type":1119,"name":3504,"description":4719,"image":4720,"step":4726},[4727,4730,4733,4736,4739,4742],{"@type":1122,"name":4728,"text":4729},"階段一：安裝與啟動訊息閘道外掛程式","執行 dsh plugin add 命令安裝 dsh-message-gateway 並啟動 dsh web 服務。",{"@type":1122,"name":4731,"text":4732},"階段二：存取 Message platforms 設定中心","透過瀏覽器開啟 DSH Web 介面並巡覽至 Message platforms 功能表。",{"@type":1122,"name":4734,"text":4735},"階段三：設定 Buzz 橋接參數與產生金鑰對","即時產生 Nostr 身分金鑰對，準確填入 Relay URL 與訂閱頻道 UUID 清單。",{"@type":1122,"name":4737,"text":4738},"階段四：將智能體註冊加入 Buzz 中繼伺服器","使用 buzz-admin 命令列工具將 DSH 助理的 npub 公鑰加入中繼成員。",{"@type":1122,"name":4740,"text":4741},"階段五：將智能體加入指定的團隊頻道","使用 buzz-cli 命令列工具將 16 進位 HEX 公鑰加入頻道成員名單。",{"@type":1122,"name":4743,"text":4744},"階段六：開啟本地工作區綁定權限","在 cordis.patch.yml 中開啟 allowWorkspace 設定以允許目錄掛載指令。",{"lastmod":4718},{"title":4747,"description":4719,"ogTitle":3504,"ogDescription":4719,"twitterTitle":3504,"twitterDescription":4719},"DeepSeek Harness Buzz 外掛開發：構建 Nostr 協定閘道與即時串流輸出的完整教學","tw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",[3667,4154,4750,4751,3522],"Nostr","AI智能體","6tP_wMoFaCRxYZzuqtIt-fglvdLziQctY0T6KrEqia4",1792490004136]