
{"id":11244,"date":"2026-08-20T17:22:24","date_gmt":"2026-08-20T09:22:24","guid":{"rendered":"https:\/\/infernews.com\/blog\/?page_id=11244"},"modified":"2026-09-14T09:04:56","modified_gmt":"2026-09-14T01:04:56","slug":"deepseek-harness","status":"publish","type":"page","link":"https:\/\/infernews.com\/blog\/deepseek-harness\/","title":{"rendered":"DeepSeek Harness"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized\"><img data-dominant-color=\"203654\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"288\" src=\"https:\/\/infernews.com\/blog\/wp-content\/uploads\/2026\/09\/image-8.png\" alt=\"\" class=\"wp-image-12249 not-transparent\" style=\"--dominant-color: #203654; aspect-ratio:3.5556942108404317;width:1114px;height:auto\" srcset=\"https:\/\/infernews.com\/blog\/wp-content\/uploads\/2026\/09\/image-8.png 1024w, https:\/\/infernews.com\/blog\/wp-content\/uploads\/2026\/09\/image-8-300x84.png 300w, https:\/\/infernews.com\/blog\/wp-content\/uploads\/2026\/09\/image-8-768x216.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<table id=\"tablepress-11\" class=\"tablepress tablepress-id-11\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">\u9805\u76ee<\/th><th class=\"column-2\">\u7db2\u5740<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Awesome DeepSeek Harness<\/td><td class=\"column-2\"><a href=\"https:\/\/github.com\/0xsline\/awesome-deepseek-harness\">https:\/\/github.com\/0xsline\/awesome-deepseek-harness<\/a><\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">DeepSeek Harness Ultimate<\/td><td class=\"column-2\"><a href=\"https:\/\/github.com\/18126295767-cell\/deepseek-harness-ultimate\" target=\"_blank\">https:\/\/github.com\/18126295767-cell\/deepseek-harness-ultimate<\/a><\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-11 from cache -->\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"lyte-wrapper\" title=\"\u540c\u4e00\u4e2a\u6a21\u578b\uff0c\u88c5\u4e00\u4e2a\u63d2\u4ef6\u524d\u540e\u5224\u82e5\u4e24\u4e2a AI\uff1aDeepSeek \u5230\u5e95\u5f00\u6e90\u4e86\u4ec0\u4e48\uff1f | \u56de\u5230Axton\" style=\"width:853px;max-width:100%;margin:5px auto;\"><div class=\"lyMe\" id=\"WYL_JBKYwV4WsVA\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\"><div><meta itemprop=\"thumbnailUrl\" content=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJBKYwV4WsVA%2Fhqdefault.jpg\" \/><meta itemprop=\"embedURL\" content=\"https:\/\/www.youtube.com\/embed\/JBKYwV4WsVA\" \/><meta itemprop=\"duration\" content=\"PT18M2S\" \/><meta itemprop=\"uploadDate\" content=\"2026-08-20T12:00:32Z\" \/><\/div><div id=\"lyte_JBKYwV4WsVA\" data-src=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJBKYwV4WsVA%2Fhqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\" itemprop=\"name\">\u540c\u4e00\u4e2a\u6a21\u578b\uff0c\u88c5\u4e00\u4e2a\u63d2\u4ef6\u524d\u540e\u5224\u82e5\u4e24\u4e2a AI\uff1aDeepSeek \u5230\u5e95\u5f00\u6e90\u4e86\u4ec0\u4e48\uff1f | \u56de\u5230Axton<\/div><\/div><button tabindex=\"0\" class=\"play\"><\/button><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/JBKYwV4WsVA\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJBKYwV4WsVA%2F0.jpg\" alt=\"\u540c\u4e00\u4e2a\u6a21\u578b\uff0c\u88c5\u4e00\u4e2a\u63d2\u4ef6\u524d\u540e\u5224\u82e5\u4e24\u4e2a AI\uff1aDeepSeek \u5230\u5e95\u5f00\u6e90\u4e86\u4ec0\u4e48\uff1f | \u56de\u5230Axton\" width=\"853\" height=\"460\" \/><br \/>Watch this video on YouTube<\/a><\/noscript><meta itemprop=\"description\" content=\"\ud83c\udf93 MAPS \u8bfe\u7a0b\uff08\u7cfb\u7edf\u5b66\u4e60 AI \u5b9e\u8df5\uff09\uff1ahttps:\/\/axtonliu.ai\/aiagent?utm_source=youtube&amp;utm_medium=video&amp;utm_campaign=deepseek-harness DeepSeek \u5f00\u6e90\u4e86 Harness\uff0c\u5f88\u591a\u4eba\u95ee\u5b83\u662f\u4e0d\u662f Claude Code \u66ff\u4ee3\u54c1\u3002\u6211\u7528\u540c\u4e00\u4e2a\u6a21\u578b\u505a\u4e86\u4e00\u7ec4\u5bf9\u7167\u5b9e\u9a8c\uff0c\u7b54\u6848\u6bd4&quot;\u66ff\u4ee3&quot;\u6709\u610f\u601d\u5f97\u591a\uff1a\u5b83\u628a Agent \u7684\u6539\u88c5\u6743\u4ea4\u4e86\u51fa\u6765\u3002 \u23f1 \u65f6\u95f4\u6233 0:00 \u540c\u4e00\u4e2a\u6a21\u578b\uff0c\u5224\u82e5\u4e24\u4eba 0:27 \u8fd9\u671f\u5230\u5e95\u770b\u4ec0\u4e48 0:50 \u4e00\u6761\u547d\u4ee4\u8dd1\u8d77\u6765 2:30 \u7b2c\u4e00\u4e2a\u4efb\u52a1\u4e0e \u00a50.09 \u8d26\u5355 3:46 \u89c6\u89c9\u63d2\u4ef6\u5bf9\u7167\u5b9e\u9a8c 6:13 \u6a21\u578b\u51b3\u5b9a\u4e0a\u9650\uff0cHarness \u51b3\u5b9a\u8fb9\u754c 8:35 \u628a\u540e\u53f0\u8fdb\u7a0b\u76f4\u63a5\u6740\u6389 10:10 &quot;\u7ee7\u7eed&quot;\u4e24\u4e2a\u5b57\u6062\u590d\u73b0\u573a 11:20 Fork\uff1a\u53ef\u56de\u9000\u7684\u5c94\u8def 12:25 Trajectory\uff1a\u6253\u5f00\u9ed1\u5323\u5b50 15:59 \u6211\u7684\u4e24\u4e2a\u5224\u65ad 16:31 \u4e09\u7c7b\u4eba\u73b0\u5728\u8be5\u600e\u4e48\u505a --- \ud83d\udcda Axton \u7684 AI \u5b9e\u8df5\u8d44\u6e90 \ud83c\udf93 MAPS \u8bfe\u7a0b\uff08\u7cfb\u7edf\u5b66\u4e60 AI \u5b9e\u8df5\uff09\uff1ahttps:\/\/axtonliu.ai\/aiagent?utm_source=youtube&amp;utm_medium=video&amp;utm_campaign=default \ud83d\udc65 \u7cbe\u82f1\u5708 PRO\uff08\u6df1\u5ea6\u5b9e\u8df5\u8005\u793e\u7fa4\uff09\uff1ahttps:\/\/axtonliu.ai\/ai-elite?utm_source=youtube&amp;utm_medium=video&amp;utm_campaign=default \ud83c\udd93 \u514d\u8d39\u5165\u95e8\u8bfe\uff1ahttps:\/\/axtonliu.ai\/axton-free-course?utm_source=youtube&amp;utm_medium=video&amp;utm_campaign=default \ud83d\udce7 Newsletter\uff08\u6bcf\u5468 AI \u5b9e\u8df5\u6d1e\u5bdf\uff09\uff1ahttps:\/\/axtonliu.ai\/newsletters\/ai-2?utm_source=youtube&amp;utm_medium=video&amp;utm_campaign=default \ud83d\udcd6 MAPS \u672f\u8bed\u8bcd\u5178\uff1ahttps:\/\/axtonliu.ai\/maps \ud83d\udd27 \u672c\u671f\u63d0\u5230\u7684\u5de5\u5177\/\u9879\u76ee - DeepSeek Harness\uff08\u5b98\u65b9\uff0cDeveloper Preview\uff09\uff1ahttps:\/\/www.deepseek.com - dsh-vision \u89c6\u89c9\u63d2\u4ef6\uff08\u793e\u533a\uff0c\u7b2c\u4e09\u65b9\u4ee3\u7801\uff0c\u5b89\u88c5\u524d\u8bf7\u81ea\u884c\u5ba1\u67e5\u6765\u6e90\u4e0e\u6743\u9650\uff09\uff1ahttps:\/\/github.com\/oil-oil\/dsh-vision --- \u2728 \u63a8\u8350\u5de5\u5177\uff08Affiliate Links\uff09 \u2022 Make \u2014 \u6211\u9996\u9009\u7684\u65e0\u4ee3\u7801\u81ea\u52a8\u5316\u5e73\u53f0\uff1ahttps:\/\/www.make.com\/en\/register?pc=axton \u2022 TubeBuddy \u2014 YouTube \u9891\u9053\u589e\u957f\u5de5\u5177\uff1ahttps:\/\/www.tubebuddy.com\/axton #AxtonLiu #AI #DeepSeek #Agent #MAPS\"><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:853px;margin:5px auto;\"><\/div><figcaption><\/figcaption><\/figure>\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"lyte-wrapper\" title=\"DeepSeek Harness\u63d2\u4ef6\u5b8c\u5168\u6307\u5357\uff1a\u627e\u3001\u88c5\u3001\u7ba1\u3001\u9020\u56db\u6b65\u641e\u5b9a\uff08\u9644\u5341\u5927\u5fc5\u88c5\u63d2\u4ef6\u76d8\u70b9\uff09\" style=\"width:853px;max-width:100%;margin:5px auto;\"><div class=\"lyMe\" id=\"WYL_1GLZZfvPtzI\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\"><div><meta itemprop=\"thumbnailUrl\" content=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1GLZZfvPtzI%2Fhqdefault.jpg\" \/><meta itemprop=\"embedURL\" content=\"https:\/\/www.youtube.com\/embed\/1GLZZfvPtzI\" \/><meta itemprop=\"duration\" content=\"PT17M55S\" \/><meta itemprop=\"uploadDate\" content=\"2026-08-18T10:49:06Z\" \/><\/div><div id=\"lyte_1GLZZfvPtzI\" data-src=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1GLZZfvPtzI%2Fhqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\" itemprop=\"name\">DeepSeek Harness\u63d2\u4ef6\u5b8c\u5168\u6307\u5357\uff1a\u627e\u3001\u88c5\u3001\u7ba1\u3001\u9020\u56db\u6b65\u641e\u5b9a\uff08\u9644\u5341\u5927\u5fc5\u88c5\u63d2\u4ef6\u76d8\u70b9\uff09<\/div><\/div><button tabindex=\"0\" class=\"play\"><\/button><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/1GLZZfvPtzI\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/infernews.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1GLZZfvPtzI%2F0.jpg\" alt=\"DeepSeek Harness\u63d2\u4ef6\u5b8c\u5168\u6307\u5357\uff1a\u627e\u3001\u88c5\u3001\u7ba1\u3001\u9020\u56db\u6b65\u641e\u5b9a\uff08\u9644\u5341\u5927\u5fc5\u88c5\u63d2\u4ef6\u76d8\u70b9\uff09\" width=\"853\" height=\"460\" \/><br \/>Watch this video on YouTube<\/a><\/noscript><meta itemprop=\"description\" content=\"\ud83d\udca1 \u672c\u671f\u89c6\u9891\u6838\u5fc3\uff1aDeepSeek Harness\u7684\u95ee\u9898\u4ece\u6765\u4e0d\u662f\u591f\u4e0d\u591f\u5f3a\uff0c\u800c\u662f\u6ca1\u4eba\u544a\u8bc9\u4f60\u600e\u4e48\u628a\u5b83\u4ece&quot;\u88f8\u673a&quot;\u53d8\u6210&quot;\u6218\u529b&quot;\u3002\u8fd9\u4e2a\u843d\u5dee\u672c\u8eab\u5c31\u5728\u7b5b\u9009\u7528\u6237\uff1a\u77e5\u9053\u5f80\u91cc\u88c5\u63d2\u4ef6\u7684\u4eba\uff0c\u7528\u7684\u662f\u8d85\u7ea7Agent\u5de5\u4f5c\u53f0\uff1b\u4e0d\u77e5\u9053\u7684\u4eba\uff0c\u7528\u7684\u53ea\u662f\u4e2a\u5bf9\u8bdd\u6846\u3002 \u8fd9\u671f\u89c6\u9891\u89e3\u51b3\u7684\u5c31\u662f\u8fd9\u9053&quot;\u4fe1\u606f\u5dee&quot;\uff1a\u628a\u627e\u3001\u88c5\u3001\u7ba1\u3001\u9020\u8fd9\u56db\u6b65\u62c6\u6210\u4efb\u4f55\u4eba\u90fd\u80fd\u7167\u505a\u7684\u6d41\u7a0b\uff0c\u5916\u52a0\u793e\u533a\u9a8c\u8bc1\u8fc7\u7684\u5341\u5927\u63d2\u4ef6\u4f18\u5148\u7ea7\uff0c\u8ba9\u4f60\u4e0d\u7528\u81ea\u5df1\u5728\u51e0\u767e\u4e2a\u4ed3\u5e93\u91cc\u8bd5\u9519\uff0c\u76f4\u63a5\u8df3\u8fc7&quot;\u88f8\u673a\u671f&quot;\uff0c\u8fdb\u5230\u80fd\u771f\u6b63\u5e72\u6d3b\u7684\u9636\u6bb5\u3002 \u4e00\u53e5\u8bdd\u7acb\u4f4f\u6574\u671f\u5185\u5bb9\uff1a&quot;\u4e00\u5207\u7686\u63d2\u4ef6&quot;\u4e0d\u662f\u8425\u9500\u8bdd\u672f\uff0c\u662f\u8bf4\u660e\u4e66\u2014\u2014\u5148\u88c5\u5730\u57fa\uff0c\u518d\u6309\u9700\u6269\u5c55\uff0c\u6700\u540e\u81ea\u5df1\u521b\u9020\u3002 ---------------------------------------------------------------- \ud83d\udd25 \u89c6\u9891\u7b80\u4ecb (Video Summary) \u88c5\u5b8cDeepSeek Harness\u6253\u5f00\u7f51\u9875\uff0c\u662f\u4e0d\u662f\u4e5f\u4e00\u8138\u95ee\u53f7\u2014\u2014\u8fd9\u4e0d\u5c31\u662f\u4e2a\u666e\u901a\u804a\u5929\u6846\u5417\uff1f\u6ca1\u9519\uff0c\u56e0\u4e3aDeepSeek Harness\u51fa\u5382\u51e0\u4e4e\u662f&quot;\u88f8\u673a&quot;\uff0c\u5b83\u771f\u6b63\u7684\u6218\u6597\u529b\uff0c\u5168\u9760\u63d2\u4ef6\u624d\u80fd\u6fc0\u6d3b\u3002\u8fd9\u671f\u89c6\u9891\u6211\u5e26\u4f60\u628a&quot;\u627e\u3001\u88c5\u3001\u7ba1\u3001\u9020&quot;\u8fd9\u6761\u8def\u5b8c\u6574\u8d70\u4e00\u904d\u3002 \u2726 \u8ba4\u77e5\u53cd\u5dee\uff1a24\u5c0f\u65f64\u4e07+ Star\u7684DSH\uff0c\u4e3a\u4ec0\u4e48\u6253\u5f00\u5374\u53ea\u662f\u4e2a\u804a\u5929\u6846 \u2726 \u7b2c\u4e00\u6b65\u00b7\u627e\uff1aGitHub\u641c&quot;awesome dsh&quot;\u516c\u5f0f\u8d77\u624b\uff0c\u9644dsh-plugin\u6807\u7b7e\u3001 \u5728\u7ebf\u63d2\u4ef6\u76ee\u5f55\u7ad9\u4e24\u6761\u8865\u5145\u6e20\u9053 \u2726 \u7b2c\u4e8c\u6b65\u00b7\u88c5\uff1a\u547d\u4ee4\u884c \/ AI Agent\u76f4\u63a5\u5b89\u88c5 \/ UI\u63d2\u4ef6\u5e02\u573a\u4e00\u952e\u5b89\u88c5\uff0c \u4e09\u79cd\u65b9\u5f0f\u9010\u4e00\u5b9e\u6d4b\u6f14\u793a \u2726 \u7b2c\u4e09\u6b65\u00b7\u7ba1\uff1a\u4e24\u4e2a\u5730\u57fa\u63d2\u4ef6dsh-market\uff081000+\u63d2\u4ef6\u5546\u5e97\uff09+ dsh-find-plugin\uff08\u5bf9\u8bdd\u5f0f\u627e\u63d2\u4ef6\uff09\uff0c\u88c5\u4e0a\u6548\u7387\u7acb\u523b\u4e0a\u53f0\u9636 \u2726 \u7b2c\u56db\u6b65\u00b7\u9020\uff1a\u63d2\u4ef6\u4e09\u4ef6\u5957\u62c6\u89e3\uff08package.json\u53ef\u9009\/\u5165\u53e3\u6a21\u5757\u5fc5\u987b\/ patch\u6302\u8f7d\u914d\u7f6e\u89c6\u9700\u6c42\uff09\uff0c\u672c\u5730\u5f00\u53d1\u56db\u6b65\u6d41\u7a0b\uff0c\u521b\u9020\u6a21\u5f0f\u8ba9\u4e0d\u5199\u4ee3\u7801\u7684\u4eba \u4e5f\u80fd\u7528\u81ea\u7136\u8bed\u8a00\u751f\u6210\u63d2\u4ef6 \u2726 \u5341\u5927\u5fc5\u88c5\u63d2\u4ef6\u76d8\u70b9\uff1a\u4e09\u6863\u4f18\u5148\u7ea7\u4e00\u6b21\u8bb2\u6e05\uff08dsh-market\u3001dsh-web-ui\u3001 DSH-better-sidebar\u3001dsh-find-plugin\u3001modlens\u7b49\uff09 \ud83d\udccc \u5b8c\u6574\u63d2\u4ef6\u6e05\u5355\u6587\u6863\uff0c\u8bc4\u8bba\u533a\u7559\u8a00&quot;\u63d2\u4ef6\u6e05\u5355&quot;\u514d\u8d39\u9886\u53d6 \ud83d\udc4d \u5982\u679c\u8fd9\u5957&quot;\u627e\u88c5\u7ba1\u9020&quot;\u56db\u6b65\u6cd5\u5e2e\u4f60\u628aDSH\u4ece\u804a\u5929\u6846\u53d8\u6210\u4e86\u5de5\u4f5c\u53f0\uff0c\u70b9\u4e2a\u8d5e \ud83d\udd14 \u5173\u6ce8\u55ef\u54ccAI\uff0c\u4e0b\u671f\u60f3\u770b\u5177\u4f53\u63d2\u4ef6\u5b9e\u6218\u6d4b\u8bc4\u8fd8\u662f\u63d2\u4ef6\u5f00\u53d1\u4ece0\u52301\u6559\u7a0b\uff0c \u8bc4\u8bba\u533a\u544a\u8bc9\u6211 \ud83c\udfac \u89c6\u9891\u65f6\u95f4\u6233 (Timestamps) 00:00 DeepSeek Harness\u5f00\u6e9024\u5c0f\u65f64\u4e07Star\uff0c\u4e3a\u4ec0\u4e48\u662f&quot;\u88f8\u673a&quot; 00:57 \u627e\u88c5\u7ba1\u9020\u56db\u6b65\u7ec4\u88c5\u6cd5 \u3000\u3000\u300001:12 \u627e\u63d2\u4ef6\uff1aGitHub&quot;awesome dsh&quot;\u641c\u7d22\u516c\u5f0f \u3000\u3000\u300002:10 \u88c5\u63d2\u4ef6\uff1a\u547d\u4ee4\u884c \/ AI Agent \/ \u63d2\u4ef6\u5e02\u573a\u4e09\u79cd\u65b9\u5f0f \u3000\u3000\u300006:15 \u7ba1\u63d2\u4ef6\uff1a\u4e24\u4e2a\u5730\u57fa\u63d2\u4ef6\uff0c\u6548\u7387\u8dc3\u5347 \u3000\u3000\u300007:20 \u9020\u63d2\u4ef6\uff1a\u4e09\u4ef6\u5957\u62c6\u89e3 + \u521b\u9020\u6a21\u5f0f\u96f6\u4ee3\u7801\u5f00\u53d1 12:48 \u5341\u5927\u5fc5\u88c5\u63d2\u4ef6\uff1a\u4e09\u6863\u4f18\u5148\u7ea7\u6e05\u5355 16:52 \u5148\u88c5\u5730\u57fa\uff0c\u518d\u6269\u5c55\uff0c\u6700\u540e\u521b\u9020 \u5148\u88c5\u5730\u57fa\uff0c\u518d\u6309\u9700\u6269\u5c55\uff0c\u6700\u540e\u81ea\u5df1\u521b\u9020\u2014\u2014\u8fd9\u662fDeepSeek Harness\u7559\u7ed9\u4f60\u7684\u8d85\u7ea7Agent\u5de5\u4f5c\u53f0\u3002 ---------------------------------------------------------------- \ud83d\ude80 \u522b\u8ba9\u4f60\u7684\u597d\u5947\u5fc3\u6b62\u6b65\u4e8e\u6b64\uff0c\u548c 10 \u4e07+ \u6781\u5ba2\u4e00\u8d77\u8fdb\u5316\uff01 \u5982\u679c\u4f60\u559c\u6b22\u786c\u6838\u3001\u9ad8\u4fe1\u606f\u5bc6\u5ea6\u3001\u5e72\u8106\u5229\u843d\u7684 AI \u751f\u4ea7\u529b\u5b9e\u64cd\uff0c\u4e0d\u60f3\u5728\u788e\u7247\u5316\u7684\u4fe1\u606f\u5b64\u5c9b\u4e2d\u8ff7\u5931\uff0c\u90a3\u5c31\u7acb\u523b\u8ba2\u9605\u5427\uff01 \ud83d\udc49 \u8ba2\u9605\u300c\u55ef\u54ccAI\u300d\uff1ahttps:\/\/www.youtube.com\/@NpieAI?sub_confirmation=1 \ud83d\udd14 \u8bb0\u5f97\u5f00\u542f\u201c\u5c0f\u94c3\u94db\u201d\u63a5\u6536\u6700\u65b0\u63a8\u9001\uff0c\u7b2c\u4e00\u65f6\u95f4\u638c\u63e1\u767d\u5ad6 AI \u9ed1\u79d1\u6280\u4e0e\u81ea\u52a8\u5316\u641e\u94b1\u5de5\u4f5c\u6d41\uff01 \ud83d\udcf1 \u793e\u4ea4\u5a92\u4f53\u4e0e\u8bfb\u8005\u793e\u533a (Connect with Npie) \u60f3\u8981\u83b7\u53d6\u89c6\u9891\u914d\u5957\u7684\u72ec\u5bb6 Prompt\u3001\u7cfb\u7edf\u7ea7 Workflow \u6a21\u677f\uff0c\u6216\u4e0e\u66f4\u591a\u9ad8\u6548\u80fd\u73a9\u5bb6\u6df1\u5ea6\u4ea4\u6d41\uff1f * \ud83c\udf10 \u4e2a\u4eba\u7f51\u7ad9 \/ \u535a\u5ba2\uff1ahttps:\/\/www.agidt.com\/ * \ud83d\udcac \u5fae\u4fe1\u516c\u4f17\u53f7\uff1a[\u55ef\u54cc \/ Npie] * \ud83d\udc65 \u4e13\u5c5e\u8111\u5e93\u73a9\u5bb6\u7fa4 \/ WeChat\uff1abanny-pan * \u5408\u4f5c\/\u5546\u52a1\u8054\u7edc (Business Inquiries only)\uff1abannylon7@gmail.com ---------------------------------------------------------------- \u2699\ufe0f \u89c6\u9891\u4e2d\u4f7f\u7528\u7684\u786c\u6838\u5de5\u5177\u4e0e\u63a8\u8350\uff08\u5305\u542b\u672c\u9891\u9053\u4e13\u5c5e\u798f\u5229\uff09\uff1a * \ud83e\udd16 \u63d2\u4ef6\u5e02\u573a\uff08GitHub\uff09\uff1ahttps:\/\/github.com\/awesome-dsh-plugin\/awesome-dsh-plugin * \ud83d\udcc2 \u5728\u7ebf\u63d2\u4ef6\u76ee\u5f55\u7ad9\uff1ahttps:\/\/awesome-dsh-plugin.com\/zh\/ * \ud83c\udf10 dsh-market\u63d2\u4ef6\uff08GitHub\uff09\uff1ahttps:\/\/github.com\/dsh-market\/dsh-market * \ud83d\udd17 dsh-find-plugin\u63d2\u4ef6\uff08GitHub\uff09\uff1ahttps:\/\/github.com\/awesome-dsh-plugin\/dsh-find-plugin #DeepSeekHarness #DSH\u63d2\u4ef6 #AIAgent #\u63d2\u4ef6\u5f00\u53d1 #\u5f00\u6e90AI #\u547d\u4ee4\u884c\u5de5\u5177#DeepSeek\u5f00\u6e90 #AgentHarness #\u4e07\u7269\u7686\u63d2\u4ef6 #dshmarket #dsh-find-plugin #\u63d2\u4ef6\u5e02\u573a #AI\u63d2\u4ef6\u5f00\u53d1 #Cordis\u6846\u67b6 #DeepSeekAgent #\u5f00\u6e90AI\u5de5\u5177 #AIAgent\u6559\u7a0b #AgentWorkflow #GitHub\u5f00\u6e90\u9879\u76ee #AI\u5f00\u53d1\u8005\u5de5\u5177 #TypeScript\u63d2\u4ef6 #VibeCoding #AICoding #ClaudeCode\u66ff\u4ee3 #AI\u5de5\u5177\u5b9e\u6218 #AI\u751f\u4ea7\u529b #AI\u5de5\u4f5c\u6d41 #\u7a0b\u5e8f\u5458AI #\u5f00\u53d1\u8005\u6548\u7387 #\u81ea\u52a8\u5316Agent #AI\u6559\u7a0b #\u79d1\u6280UP\u4e3b #\u6280\u672f\u5206\u4eab #\u7f16\u7a0b\u5e72\u8d27 #\u77e5\u8bc6\u5de5\u4f5c\u8005 #\u6253\u5de5\u4eba\u526f\u4e1a #AI\u65b0\u624b\u6559\u7a0b #AI\u5e72\u8d27\u5206\u4eab #\u55ef\u54ccAI\"><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:853px;margin:5px auto;\"><\/div><figcaption><\/figcaption><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<!-- \u5167\u5d4c\u5c08\u5c6c Scoped CSS\uff1a\u6b64 CSS \u8cbc\u5230 WordPress \u5f8c\u6703\u751f\u6548\uff0c\u4e0d\u6703\u7834\u58de\u73fe\u6709\u4e3b\u984c\uff0c\u4e14\u5fb9\u5e95\u4fdd\u8b77\u81ea\u8eab\u5143\u7d20 -->\n        <style id=\"infernews-dsh-scoped-style\">\n          \/* === InferNews DeepSeek Harness \u5c08\u5c6c\u9632\u8dd1\u7248\u9694\u96e2\u6a23\u5f0f === *\/\n          #infer-dsh-wrapper {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Noto Sans TC\", sans-serif;\n            color: #1e293b;\n            line-height: 1.8;\n            font-size: 16px;\n            margin: 2rem 0;\n            padding: 0;\n            box-sizing: border-box;\n          }\n          #infer-dsh-wrapper * {\n            box-sizing: border-box;\n          }\n          #infer-dsh-wrapper h2 {\n            font-size: 1.65rem;\n            font-weight: 700;\n            color: #0f172a;\n            margin-top: 2.5rem;\n            margin-bottom: 1rem;\n            padding-bottom: 0.5rem;\n            border-bottom: 2px solid #e2e8f0;\n            display: flex;\n            align-items: center;\n            gap: 0.5rem;\n          }\n          #infer-dsh-wrapper h3 {\n            font-size: 1.3rem;\n            font-weight: 600;\n            color: #1e293b;\n            margin-top: 1.8rem;\n            margin-bottom: 0.75rem;\n          }\n          #infer-dsh-wrapper p {\n            margin-bottom: 1.25rem;\n            color: #334155;\n          }\n          #infer-dsh-wrapper .in-tag-group {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 6px;\n            margin-bottom: 1.25rem;\n          }\n          #infer-dsh-wrapper .in-tag {\n            display: inline-block;\n            padding: 2px 10px;\n            border-radius: 9999px;\n            font-size: 12px;\n            font-weight: 600;\n            background: #eff6ff;\n            color: #1d4ed8;\n            border: 1px solid #bfdbfe;\n          }\n          #infer-dsh-wrapper .in-callout-danger {\n            background-color: #fef2f2;\n            border-left: 5px solid #ef4444;\n            border-radius: 0 8px 8px 0;\n            padding: 1.25rem;\n            margin: 1.75rem 0;\n            font-size: 0.95rem;\n          }\n          #infer-dsh-wrapper .in-callout-info {\n            background-color: #eff6ff;\n            border-left: 5px solid #3b82f6;\n            border-radius: 0 8px 8px 0;\n            padding: 1.25rem;\n            margin: 1.75rem 0;\n            font-size: 0.95rem;\n          }\n          #infer-dsh-wrapper .in-table-wrapper {\n            overflow-x: auto;\n            margin: 1.5rem 0;\n            border: 1px solid #e2e8f0;\n            border-radius: 8px;\n            background: #ffffff;\n          }\n          #infer-dsh-wrapper table.in-table {\n            width: 100%;\n            border-collapse: collapse;\n            text-align: left;\n            font-size: 14px;\n            margin: 0;\n          }\n          #infer-dsh-wrapper table.in-table th {\n            background-color: #f8fafc;\n            color: #334155;\n            font-weight: 600;\n            padding: 12px 16px;\n            border-bottom: 1px solid #e2e8f0;\n          }\n          #infer-dsh-wrapper table.in-table td {\n            padding: 12px 16px;\n            border-bottom: 1px solid #f1f5f9;\n            color: #475569;\n          }\n          #infer-dsh-wrapper table.in-table tr:hover td {\n            background-color: #f8fafc;\n          }\n          #infer-dsh-wrapper .in-badge {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            width: 28px;\n            height: 28px;\n            border-radius: 6px;\n            background: #2563eb;\n            color: #ffffff;\n            font-size: 14px;\n            font-weight: 700;\n            margin-right: 8px;\n          }\n          #infer-dsh-wrapper .in-terminal-box {\n            background: #0d1117;\n            border: 1px solid #30363d;\n            border-radius: 8px;\n            margin: 1.5rem 0;\n            overflow: hidden;\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n          }\n          #infer-dsh-wrapper .in-terminal-header {\n            background: #161b22;\n            padding: 8px 14px;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            border-bottom: 1px solid #30363d;\n            font-family: \"JetBrains Mono\", Consolas, monospace;\n            font-size: 12px;\n            color: #8b949e;\n          }\n          #infer-dsh-wrapper .in-terminal-dots {\n            display: flex;\n            gap: 6px;\n          }\n          #infer-dsh-wrapper .in-dot {\n            width: 10px;\n            height: 10px;\n            border-radius: 50%;\n            display: inline-block;\n          }\n          #infer-dsh-wrapper .in-dot-red { background: #ff5f56; }\n          #infer-dsh-wrapper .in-dot-yellow { background: #ffbd2e; }\n          #infer-dsh-wrapper .in-dot-green { background: #27c93f; }\n          #infer-dsh-wrapper pre.in-code {\n            margin: 0;\n            padding: 16px;\n            background: #0d1117;\n            color: #c9d1d9;\n            font-family: \"JetBrains Mono\", \"Consolas\", monospace;\n            font-size: 13.5px;\n            line-height: 1.6;\n            overflow-x: auto;\n            white-space: pre;\n            border: none;\n          }\n          #infer-dsh-wrapper pre.in-code code {\n            background: transparent;\n            color: inherit;\n            padding: 0;\n            font-size: inherit;\n          }\n          #infer-dsh-wrapper .in-checklist {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n            gap: 10px;\n            margin: 1.5rem 0;\n          }\n          #infer-dsh-wrapper .in-checklist-item {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            padding: 10px 14px;\n            background: #f8fafc;\n            border: 1px solid #e2e8f0;\n            border-radius: 8px;\n            font-size: 13.5px;\n          }\n          #infer-dsh-wrapper .in-check-icon {\n            color: #10b981;\n            font-weight: bold;\n            font-size: 16px;\n          }\n        <\/style>\n\n        <div id=\"infer-dsh-wrapper\">\n          <!-- \u6a19\u7c64\u5217 -->\n          <div class=\"in-tag-group\">\n            <span class=\"in-tag\">Agentic \u667a\u6167\u9ad4<\/span>\n            <span class=\"in-tag\">VPS \u4f3a\u670d\u5668\u90e8\u7f72<\/span>\n            <span class=\"in-tag\">Apache 2.4 \u53cd\u5411\u4ee3\u7406<\/span>\n            <span class=\"in-tag\">WebSocket \u7a7f\u900f<\/span>\n            <span class=\"in-tag\">\u8cc7\u5b89\u52a0\u56fa<\/span>\n          <\/div>\n\n          <!-- \u4e3b\u6a19\u984c -->\n          <h1 style=\"font-size: 2rem; font-weight: 800; color: #0f172a; line-height: 1.35; margin-bottom: 1rem;\">\n            DeepSeek Harness (dsh) \u9060\u7aef VPS \u4f3a\u670d\u5668\u5b89\u88dd\u8207 Apache \u5b89\u5168\u52a0\u56fa\u5be6\u6230\u6307\u5357\n          <\/h1>\n\n          <p style=\"font-size: 1.05rem; color: #475569; line-height: 1.75;\">\n            \u929c\u63a5 InferNews \u4ecb\u7d39\u4e4b DeepSeek Harness \u6838\u5fc3\u7279\u6027\uff1aHarness \u5177\u5099\u81ea\u4e3b\u547c\u53eb\u7d42\u7aef\u6a5f\uff08Bash\uff09\u3001\u8b80\u5beb\u6a94\u6848\u8207\u5916\u639b\u63d2\u4ef6\u6b0a\u9650\u3002\u82e5\u8981\u90e8\u7f72\u65bc\u516c\u7db2 VPS\uff0c\u5fc5\u9808\u5efa\u7acb\u56b4\u683c\u7684 Apache TLS \u52a0\u5bc6\u3001WebSocket \u8ecc\u8de1\u96d9\u5411\u8f49\u767c\u3001HTTP \u8eab\u5206\u9a57\u8b49\u9598\u9580\u8207 Linux \u6c99\u76d2\u9650\u5236\u3002\n          <\/p>\n\n          <!-- \u8cc7\u5b89\u8b66\u793a\u6846 -->\n          <div class=\"in-callout-danger\">\n            <strong style=\"color: #b91c1c; display: block; font-size: 1rem; margin-bottom: 4px;\">\n              \u26a0\ufe0f\u3010\u8cc7\u5b89\u8b66\u793a\u3011\u70ba\u4ec0\u9ebc\u4e0d\u80fd\u628a DeepSeek Harness \u9810\u8a2d\u901a\u8a0a\u57e0\u76f4\u63a5\u66b4\u9732\u81f3\u516c\u7db2\uff1f\n            <\/strong>\n            DeepSeek Harness \u5177\u5099\u81ea\u4e3b\u667a\u6167\u9ad4\u4ee3\u78bc\u751f\u6210\u3001\u5916\u639b\u57f7\u884c\u8207 Bash Shell \u547d\u4ee4\u57f7\u884c\u80fd\u529b\u3002\u82e5\u60a8\u50c5\u4f7f\u7528 <code style=\"background: #fee2e2; color: #991b1b; padding: 2px 5px; border-radius: 4px; font-family: monospace;\">dsh web<\/code> \u76e3\u807d <code style=\"background: #fee2e2; color: #991b1b; padding: 2px 5px; border-radius: 4px; font-family: monospace;\">0.0.0.0<\/code> \u4e14\u7121\u4efb\u4f55\u8eab\u5206\u9a57\u8b49\uff0c\u4efb\u4f55\u6383\u63cf\u5230\u60a8 IP \u7684\u8a2a\u5ba2\u90fd\u80fd\u76f4\u63a5\u5728\u60a8\u7684 VPS \u4e0a\u57f7\u884c\u4efb\u610f\u6307\u4ee4\uff01\u672c\u6307\u5357\u900f\u904e<strong>\u300cUFW \u963b\u65b7\u76f4\u63a5\u9023\u7dda + 127.0.0.1 \u672c\u5730\u56de\u74b0\u7d81\u5b9a + Apache TLS \u96d9\u5c64\u8a8d\u8b49 + Systemd \u6c99\u76d2\u300d<\/strong>\u56db\u9053\u9632\u7dda\u5fb9\u5e95\u963b\u7d55\u98a8\u96aa\u3002\n          <\/div>\n\n          <!-- \u6b65\u9a5f 1 -->\n          <h2>\n            <span class=\"in-badge\">1<\/span> \u4e3b\u6a5f\u521d\u59cb\u5316\u3001\u975e Root \u5e33\u865f\u8207 UFW \u9632\u706b\u7246\u914d\u7f6e\n          <\/h2>\n          <p>\n            \u5efa\u7acb\u5c08\u7528\u9694\u96e2\u904b\u7dad\u5e33\u865f <code style=\"color: #2563eb; font-weight: 600;\" class=\"dyn-user\">dshops<\/code>\uff0c\u4e26\u8a2d\u5b9a UFW \u9632\u706b\u7246\u898f\u5247\u3002\u7279\u5225\u6ce8\u610f\uff1a<strong>\u5fc5\u9808\u660e\u78ba\u963b\u65b7\u5916\u90e8\u5c0d Harness \u901a\u8a0a\u57e0 <span class=\"dyn-port\">3080<\/span> \u7684\u76f4\u63a5\u9023\u7dda<\/strong>\uff0c\u50c5\u5141\u8a31 HTTP\/HTTPS \u900f\u904e Apache \u5165\u53e3\u8f49\u767c\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>Terminal \u2014 \u7cfb\u7d71\u5347\u7d1a\u8207\u9632\u706b\u7246\u963b\u65b7<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb21e\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb21e\"><code class=\"language-text\" class=\"dyn-step-1\"># 1. \u66f4\u65b0\u7cfb\u7d71\u5957\u4ef6\u8207\u5b89\u88dd\u57fa\u790e\u9632\u8b77\u6a21\u7d44\nsudo apt update &amp;&amp; sudo apt upgrade -y\nsudo apt install -y ufw fail2ban curl wget git htop apache2-utils build-essential\n\n# 2. \u5efa\u7acb\u5c08\u7528\u9694\u96e2\u904b\u7dad\u4f7f\u7528\u8005 (\u4e0d\u7d66\u4e88\u76f4\u63a5\u767b\u5165 Shell \u6838\u5fc3\u6b0a\u9650)\nsudo useradd -m -s \/bin\/bash dshops\nsudo usermod -aG sudo dshops\n\n# 3. \u914d\u7f6e UFW \u9632\u706b\u7246\uff08\u9810\u8a2d\u62d2\u7d55\u6240\u6709\u50b3\u5165\u9023\u7dda\uff09\nsudo ufw default deny incoming\nsudo ufw default allow outgoing\n\n# \u53ea\u958b\u653e\u7ba1\u7406 SSH \u8207 Web \u901a\u8a0a\u57e0\nsudo ufw allow 22\/tcp comment 'SSH \u7ba1\u7406'\nsudo ufw allow 80\/tcp comment 'HTTP \u9a57\u8b49'\nsudo ufw allow 443\/tcp comment 'HTTPS \u52a0\u5bc6'\n\n# \u6838\u5fc3\u5b89\u5168\uff1a\u660e\u78ba\u62d2\u7d55\u5916\u7db2\u76f4\u63a2 Harness \u5f8c\u7aef\nsudo ufw deny 3080\/tcp comment '\u62d2\u7d55\u5916\u90e8\u76f4\u9023 DeepSeek Harness'\n\n# \u555f\u7528\u9632\u706b\u7246\u4e26\u6aa2\u9a57\u72c0\u614b\nsudo ufw --force enable\nsudo ufw status verbose<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 2 -->\n          <h2>\n            <span class=\"in-badge\">2<\/span> \u5b89\u88dd Node.js 22 LTS \u8207 DeepSeek Harness CLI\n          <\/h2>\n          <p>\n            DeepSeek Harness \u9700\u8981 Node.js 20 \u4ee5\u4e0a\u74b0\u5883\u3002\u6211\u5011\u900f\u904e NodeSource \u5b89\u88dd\u6700\u65b0\u7684 Node.js 22 LTS\uff0c\u4e26\u5b89\u88dd\u5b98\u65b9\u5957\u4ef6 <code style=\"color: #2563eb; font-weight: 600;\">@deepseek-ai\/dsh<\/code> \u8207\u9694\u96e2\u5de5\u4f5c\u76ee\u9304\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>Terminal \u2014 \u5b89\u88dd Node.js \u8207 Harness \u6838\u5fc3<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb2f8\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb2f8\"><code class=\"language-text\" class=\"dyn-step-2\"># 1. \u5c0e\u5165 NodeSource Node.js 22.x LTS \u5957\u4ef6\u5eab\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_22.x | sudo -E bash -\nsudo apt install -y nodejs\n\n# \u9a57\u8b49\u7248\u672c\u662f\u5426 &gt;= v20.0.0\nnode -v &amp;&amp; npm -v\n\n# 2. \u5168\u57df\u5b89\u88dd pnpm \u8207 DeepSeek Harness CLI\nsudo npm install -g pnpm @deepseek-ai\/dsh\n\n# 3. \u5efa\u7acb\u5c08\u5c6c\u904b\u4f5c\u8207\u667a\u6167\u9ad4\u5de5\u4f5c\u76ee\u9304 (Workspaces Jail)\nsudo mkdir -p \/var\/lib\/deepseek-harness\/workspaces\nsudo chown -R dshops:dshops \/var\/lib\/deepseek-harness\nsudo chmod 750 \/var\/lib\/deepseek-harness<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 3 -->\n          <h2>\n            <span class=\"in-badge\">3<\/span> \u914d\u7f6e Systemd \u80cc\u666f\u670d\u52d9\u8207 Linux \u6838\u5fc3\u5c64\u7d1a\u6c99\u76d2\u9694\u96e2\n          <\/h2>\n          <p>\n            \u70ba\u9632\u6b62 Harness \u5728\u57f7\u884c\u81ea\u4e3b\u4ee3\u78bc\u6642\u610f\u5916\u5b58\u53d6\u5230\u7cfb\u7d71\u6838\u5fc3\u654f\u611f\u6a94\u6848\uff0c\u6211\u5011\u5728 Systemd \u670d\u52d9\u4e2d\u52a0\u5165 <code style=\"background: #f1f5f9; padding: 2px 4px; border-radius: 4px; font-family: monospace;\">ProtectSystem=full<\/code>\u3001<code style=\"background: #f1f5f9; padding: 2px 4px; border-radius: 4px; font-family: monospace;\">ProtectHome=read-only<\/code> \u8207 <code style=\"background: #f1f5f9; padding: 2px 4px; border-radius: 4px; font-family: monospace;\">NoNewPrivileges=true<\/code>\u3002\u540c\u6642\u5f37\u5236\u5c07 Web \u670d\u52d9\u7d81\u5b9a\u5728\u672c\u5730\u56de\u74b0\u4ecb\u9762 <code style=\"color: #2563eb; font-weight: 600;\">127.0.0.1:<span class=\"dyn-port\">3080<\/span><\/code>\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>\/etc\/systemd\/system\/dsh-web.service<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb305\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb305\"><code class=\"language-text\" class=\"dyn-step-3\"># \u5efa\u7acb Systemd \u670d\u52d9\u55ae\u5143\u6a94\nsudo bash -c 'cat &lt;&lt; \"EOF\" &gt; \/etc\/systemd\/system\/dsh-web.service\n[Unit]\nDescription=DeepSeek Harness (dsh) Web Service\nAfter=network.target\n\n[Service]\nType=simple\nUser=dshops\nGroup=dshops\nWorkingDirectory=\/var\/lib\/deepseek-harness\n\n# \u95dc\u9375\u74b0\u5883\u8b8a\u6578\uff08\u50c5\u76e3\u807d\u672c\u5730 127.0.0.1\uff09\nEnvironment=\"NODE_ENV=production\"\nEnvironment=\"HOST=127.0.0.1\"\nEnvironment=\"PORT=3080\"\nEnvironment=\"DEEPSEEK_API_KEY=sk-dseek-v4flash-sample-key-12345\"\nEnvironment=\"DSH_WORKSPACE_ROOT=\/var\/lib\/deepseek-harness\/workspaces\"\n\n# \u555f\u52d5\u547d\u4ee4\uff1a\u672c\u5730 Web \u6a21\u5f0f\uff0c\u4e0d\u547c\u53eb\u684c\u9762\u5716\u5f62\u700f\u89bd\u5668\nExecStart=\/usr\/bin\/npx @deepseek-ai\/dsh web --no-open --host 127.0.0.1 --port 3080\nRestart=always\nRestartSec=5\n\n# Linux \u6838\u5fc3\u5b89\u5168\u6c99\u76d2\u9694\u96e2\u4fdd\u8b77\nProtectSystem=full\nProtectHome=read-only\nPrivateTmp=true\nProtectKernelTunables=true\nProtectControlGroups=true\nNoNewPrivileges=true\nReadWritePaths=\/var\/lib\/deepseek-harness \/tmp\n\n[Install]\nWantedBy=multi-user.target\nEOF'\n\n# \u8f09\u5165\u4e26\u555f\u52d5\u670d\u52d9\nsudo systemctl daemon-reload\nsudo systemctl enable dsh-web\nsudo systemctl restart dsh-web\n\n# \u6aa2\u67e5\u78ba\u8a8d\u50c5\u76e3\u807d 127.0.0.1 (\u7d55\u4e0d\u53ef\u51fa\u73fe 0.0.0.0)\nsudo ss -tulpn | grep 3080<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 4 -->\n          <h2>\n            <span class=\"in-badge\">4<\/span> \u5b89\u88dd Apache \u4e26\u555f\u7528 WebSocket (proxy_wstunnel) \u96d9\u5411\u4ee3\u7406\u6a21\u7d44\n          <\/h2>\n          <p>\n            DeepSeek Harness \u7684 Web UI \u4e0d\u50c5\u50b3\u8f38\u975c\u614b\u9801\u9762\uff0c\u9084\u4f9d\u8cf4 <strong>WebSocket<\/strong> \u96d9\u5411\u901a\u9053\u4e32\u6d41\u50b3\u8f38\u667a\u6167\u9ad4\u7684\u63a8\u7406\u601d\u8003\u8ecc\u8de1\uff08Trajectory\uff09\u3001\u7d42\u7aef\u6a5f\u8f38\u51fa\u8207 Token \u4e32\u6d41\u3002\u56e0\u6b64 Apache \u5fc5\u9808\u8f09\u5165 <code style=\"font-weight: 600;\">proxy_wstunnel<\/code> \u6a21\u7d44\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>Terminal \u2014 Apache \u6a21\u7d44\u555f\u7528\u8207\u521d\u59cb\u7db2\u7ad9\u8a2d\u5b9a<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb30e\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb30e\"><code class=\"language-text\" class=\"dyn-step-4\"># 1. \u5b89\u88dd Apache \u4f3a\u670d\u5668\nsudo apt install -y apache2\n\n# 2. \u555f\u7528\u53cd\u5411\u4ee3\u7406\u3001WebSocket \u7a7f\u900f\u8207\u5b89\u5168\u6a21\u7d44\nsudo a2enmod proxy\nsudo a2enmod proxy_http\nsudo a2enmod proxy_wstunnel\nsudo a2enmod rewrite\nsudo a2enmod headers\nsudo a2enmod ssl\nsudo a2enmod auth_basic\n\n# 3. \u505c\u7528\u9810\u8a2d\u7db2\u7ad9\u4e26\u5efa\u7acb\u521d\u6b65 HTTP \u865b\u64ec\u4e3b\u6a5f\nsudo a2dissite 000-default.conf\n\nsudo bash -c 'cat &lt;&lt; \"EOF\" &gt; \/etc\/apache2\/sites-available\/dsh.conf\n&lt;VirtualHost *:80&gt;\n    ServerName dsh.infernews.com\n    ServerAdmin admin@infernews.com\n\n    ServerSignature Off\n    ProxyPreserveHost On\n    ProxyRequests Off\n\n    ProxyPass \/ http:\/\/127.0.0.1:3080\/\n    ProxyPassReverse \/ http:\/\/127.0.0.1:3080\/\n\n    ErrorLog ${APACHE_LOG_DIR}\/dsh_error.log\n    CustomLog ${APACHE_LOG_DIR}\/dsh_access.log combined\n&lt;\/VirtualHost&gt;\nEOF'\n\nsudo a2ensite dsh.conf\nsudo apache2ctl configtest\nsudo systemctl restart apache2<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 5 -->\n          <h2>\n            <span class=\"in-badge\">5<\/span> Let&#8217;s Encrypt TLS \u6191\u8b49\u8207 Apache HTTP Auth \u8eab\u5206\u9598\u9580\n          <\/h2>\n          <p>\n            \u900f\u904e Certbot \u81ea\u52d5\u7c3d\u7f72 HTTPS \u6191\u8b49\uff0c\u4e26\u5229\u7528 Apache \u7684 <code style=\"font-weight: 600;\">.htpasswd<\/code> \u5efa\u7acb\u7b2c\u4e00\u9053\u5e33\u865f\u5bc6\u78bc\u4fdd\u8b77\u9598\u9580\u3002\u672a\u901a\u904e\u5bc6\u78bc\u9a57\u8b49\u8005\uff0c\u9023 Harness \u7684\u8f09\u5165\u756b\u9762\u90fd\u7121\u6cd5\u63a2\u6e2c\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>\/etc\/apache2\/sites-available\/dsh-le-ssl.conf<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb31e\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb31e\"><code class=\"language-text\" class=\"dyn-step-5\"># 1. \u5efa\u7acb Web \u9598\u9580 bcrypt \u5f37\u5bc6\u78bc\nsudo mkdir -p \/etc\/apache2\/auth\nsudo htpasswd -B -c \/etc\/apache2\/auth\/.htpasswd admin\nsudo chown -R root:www-data \/etc\/apache2\/auth\nsudo chmod 640 \/etc\/apache2\/auth\/.htpasswd\n\n# 2. \u5b89\u88dd Certbot \u7533\u8acb\u514d\u8cbb Let's Encrypt \u6191\u8b49\nsudo apt install -y certbot python3-certbot-apache\nsudo certbot --apache \\\n  --agree-tos \\\n  --redirect \\\n  --no-eff-email \\\n  --email admin@infernews.com \\\n  -d dsh.infernews.com\n\n# 3. \u90e8\u7f72\u6700\u7d42\u751f\u7522\u52a0\u56fa\u914d\u7f6e (\u542b WebSocket \u7a7f\u900f\u8207 Basic Auth \u9598\u9580)\nsudo bash -c 'cat &lt;&lt; \"EOF\" &gt; \/etc\/apache2\/sites-available\/dsh-le-ssl.conf\n&lt;IfModule mod_ssl.c&gt;\n&lt;VirtualHost *:443&gt;\n    ServerName dsh.infernews.com\n    ServerAdmin admin@infernews.com\n\n    # \u8cc7\u5b89\u9632\u79a6 Header\n    Header always set Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\"\n    Header always set X-Content-Type-Options \"nosniff\"\n    Header always set X-Frame-Options \"SAMEORIGIN\"\n    Header unset Server\n    ServerSignature Off\n\n    # \u9632\u6b62\u9577\u8acb\u6c42\u963b\u65b7\n    LimitRequestBody 20971520\n\n    # \u555f\u7528 Rewrite \u8655\u7406 WebSocket \u5347\u7d1a\u8acb\u6c42 (\u95dc\u9375\uff1aTrajectory \u5373\u6642\u4e32\u6d41)\n    RewriteEngine On\n    RewriteCond %{HTTP:Upgrade} =websocket [NC]\n    RewriteRule \/(.*) ws:\/\/127.0.0.1:3080\/$1 [P,L]\n\n    # \u53d6\u6d88\u4ee3\u7406\u7de9\u885d\uff0c\u78ba\u4fdd\u9577\u6587\u672c\u8207\u5373\u6642\u63a8\u7406 Token \u4e32\u6d41\u4e0d\u5ef6\u9072\n    SetEnv proxy-nokeepalive 1\n    SetEnv proxy-initial-not-buffered 1\n    Timeout 600\n    ProxyTimeout 600\n\n    # Web UI \u7b2c\u4e00\u9053\u8eab\u5206\u4fdd\u8b77\u9598\u9580\n    &lt;Location \"\/\"&gt;\n        AuthType Basic\n        AuthName \"DeepSeek Harness Protected\"\n        AuthUserFile \/etc\/apache2\/auth\/.htpasswd\n        Require valid-user\n\n        ProxyPass http:\/\/127.0.0.1:3080\/\n        ProxyPassReverse http:\/\/127.0.0.1:3080\/\n    &lt;\/Location&gt;\n\n    SSLEngine on\n    SSLCertificateFile \/etc\/letsencrypt\/live\/dsh.infernews.com\/fullchain.pem\n    SSLCertificateKeyFile \/etc\/letsencrypt\/live\/dsh.infernews.com\/privkey.pem\n    Include \/etc\/letsencrypt\/options-ssl-apache.conf\n\n    ErrorLog ${APACHE_LOG_DIR}\/dsh_ssl_error.log\n    CustomLog ${APACHE_LOG_DIR}\/dsh_ssl_access.log combined\n&lt;\/VirtualHost&gt;\n&lt;\/IfModule&gt;\nEOF'\n\n# \u8a9e\u6cd5\u9a57\u8b49\u4e26\u91cd\u8f09 Apache\nsudo apache2ctl configtest &amp;&amp; sudo systemctl reload apache2<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 6 -->\n          <h2>\n            <span class=\"in-badge\">6<\/span> Fail2ban \u81ea\u52d5\u5c01\u9396\u5bc6\u78bc\u66b4\u529b\u7834\u89e3\u653b\u64ca\n          <\/h2>\n          <p>\n            \u914d\u7f6e Fail2ban \u76e3\u63a7 Apache \u7684\u932f\u8aa4\u8a8d\u8b49\u65e5\u8a8c\u3002\u82e5\u653b\u64ca\u8005\u9023\u7e8c 3 \u6b21\u8f38\u5165\u932f\u8aa4\u5bc6\u78bc\uff0c\u81ea\u52d5\u900f\u904e iptables \u5c01\u9396\u5176 IP 24 \u5c0f\u6642\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>\/etc\/fail2ban\/jail.d\/dsh-apache.local<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb323\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb323\"><code class=\"language-text\" class=\"dyn-step-6\">sudo bash -c 'cat &lt;&lt; \"EOF\" &gt; \/etc\/fail2ban\/jail.d\/dsh-apache.local\n[apache-auth]\nenabled = true\nport = http,https\nfilter = apache-auth\nlogpath = \/var\/log\/apache2\/*error.log\nmaxretry = 3\nfindtime = 10m\nbantime = 24h\nEOF'\n\nsudo systemctl restart fail2ban\nsudo fail2ban-client status apache-auth<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u6b65\u9a5f 7 -->\n          <h2>\n            <span class=\"in-badge\">7<\/span> \u9023\u7dda\u5065\u5eb7\u6aa2\u67e5\u8207\u672a\u6388\u6b0a\u963b\u65b7\u9a57\u8b49\n          <\/h2>\n          <p>\n            \u900f\u904e\u7d42\u7aef\u6a5f\u57f7\u884c\u9a57\u8b49\uff0c\u78ba\u8a8d\u300c\u672a\u5e36\u5e33\u865f\u5bc6\u78bc\u6642\u662f\u5426\u8fd4\u56de 401 Unauthorized\u300d\u4ee5\u53ca\u300c\u651c\u5e36\u8a8d\u8b49\u5f8c\u662f\u5426\u80fd\u6210\u529f\u7a7f\u900f WebSocket \u9032\u5165 Harness \u4ecb\u9762\u300d\u3002\n          <\/p>\n\n          <div class=\"in-terminal-box\">\n            <div class=\"in-terminal-header\">\n              <div class=\"in-terminal-dots\">\n                <span class=\"in-dot in-dot-red\"><\/span>\n                <span class=\"in-dot in-dot-yellow\"><\/span>\n                <span class=\"in-dot in-dot-green\"><\/span>\n              <\/div>\n              <span>Terminal \u2014 \u9023\u7dda\u9a57\u8b49\u6e2c\u8a66<\/span>\n            <\/div>\n            <div class=\"codecopy-container\">\n                <div class=\"codecopy-header\">\n                    \n                    <button class=\"codecopy-btn\" data-target=\"codecopy-6aabf260cb327\" title=\"Copy code to clipboard\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                <\/svg>\n                <span class=\"codecopy-text\">Copy<\/span>\n            <\/button>\n                <\/div>\n                <pre class=\"line-numbers\" id=\"codecopy-6aabf260cb327\"><code class=\"language-text\" class=\"dyn-step-7\"># \u6e2c\u8a66 1\uff1a\u672a\u8a8d\u8b49\u5b58\u53d6\u6e2c\u8a66\uff08\u9810\u671f\u8fd4\u56de\uff1aHTTP 401 Unauthorized\uff09\ncurl -I -s https:\/\/dsh.infernews.com\/ | grep \"HTTP\/\"\n\n# \u6e2c\u8a66 2\uff1a\u5e36\u5165\u8a8d\u8b49\u5b58\u53d6\u6e2c\u8a66\uff08\u66ff\u63db\u70ba\u5be6\u969b\u5bc6\u78bc\uff0c\u9810\u671f\u8fd4\u56de\uff1aHTTP 200 OK\uff09\ncurl -u admin:YOUR_PASSWORD -I https:\/\/dsh.infernews.com\/\n\n# \u6e2c\u8a66 3\uff1a\u5373\u6642\u76e3\u63a7 Harness \u80cc\u666f\u670d\u52d9\u8ecc\u8de1\u8207\u667a\u6167\u9ad4\u65e5\u8a8c\nsudo journalctl -u dsh-web.service -f<\/code><\/pre>\n            <\/div>\n          <\/div>\n\n          <!-- \u4e0a\u7dda\u6aa2\u67e5\u8868 -->\n          <h2>\n            <span class=\"in-badge\">\u2713<\/span> DeepSeek Harness \u751f\u7522\u74b0\u5883\u4e0a\u7dda\u5b89\u5168\u6aa2\u67e5\u8868\n          <\/h2>\n          <div class=\"in-checklist\">\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>\u50c5\u7d81\u5b9a 127.0.0.1:<span class=\"dyn-port\">3080<\/span>\uff08\u7981\u6b62 0.0.0.0\uff09<\/span>\n            <\/div>\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>UFW \u9632\u706b\u7246\u963b\u65b7\u5916\u90e8\u76f4\u9023\u901a\u8a0a\u57e0 <span class=\"dyn-port\">3080<\/span><\/span>\n            <\/div>\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>Apache \u555f\u7528 <code>proxy_wstunnel<\/code> \u96d9\u5411\u4e32\u6d41<\/span>\n            <\/div>\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>\u5f37\u5236 HTTPS (TLS 1.3) \u8207 HSTS \u56de\u61c9\u6a19\u982d<\/span>\n            <\/div>\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>HTTP Basic Auth \u5e33\u865f\u5bc6\u78bc\u9598\u9580\u4fdd\u8b77<\/span>\n            <\/div>\n            <div class=\"in-checklist-item\">\n              <span class=\"in-check-icon\">\u2713<\/span>\n              <span>Systemd \u6c99\u76d2\u9694\u96e2 (<code>ProtectSystem=full<\/code>)<\/span>\n            <\/div>\n          <\/div>\n\n          <p style=\"font-size: 13px; color: #94a3b8; text-align: center; margin-top: 2rem; border-top: 1px solid #e2e8f0; padding-top: 1rem;\">\n            \u00a9 InferNews \u6280\u8853\u7279\u8f2f \u2022 \u672c\u6587\u7ae0\u5167\u5bb9\u5c08\u4f9b WordPress \u6587\u7ae0\u8ffd\u52a0\u5d4c\u5165\u4f7f\u7528\u3002\n          <\/p>\n        <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Agentic \u667a\u6167\u9ad4 VPS \u4f3a\u670d\u5668\u90e8\u7f72 Apache 2.4 \u53cd\u5411\u4ee3\u7406 WebSocket \u7a7f\u900f \u8cc7\u5b89\u52a0\u56fa DeepSeek Harness (dsh) \u9060\u7aef VPS \u4f3a\u670d\u5668\u5b89\u88dd\u8207 Apache \u5b89\u5168\u52a0\u56fa\u5be6\u6230\u6307\u5357 \u929c\u63a5 InferNews \u4ecb\u7d39\u4e4b DeepSeek Harness \u6838\u5fc3\u7279\u6027\uff1aHarness \u5177\u5099\u81ea\u4e3b\u547c\u53eb\u7d42\u7aef\u6a5f\uff08Bash\uff09\u3001\u8b80\u5beb\u6a94\u6848\u8207\u5916\u639b\u63d2\u4ef6\u6b0a\u9650\u3002\u82e5\u8981\u90e8\u7f72\u65bc\u516c\u7db2 VPS\uff0c\u5fc5\u9808\u5efa\u7acb\u56b4\u683c\u7684 Apache TLS \u52a0\u5bc6\u3001WebSocket \u8ecc\u8de1\u96d9\u5411\u8f49\u767c\u3001HTTP \u8eab\u5206\u9a57\u8b49\u9598\u9580\u8207 Linux \u6c99\u76d2\u9650\u5236\u3002 \u26a0\ufe0f\u3010\u8cc7\u5b89\u8b66\u793a\u3011\u70ba\u4ec0\u9ebc\u4e0d\u80fd\u628a DeepSeek Harness \u9810\u8a2d\u901a\u8a0a\u57e0\u76f4\u63a5\u66b4\u9732\u81f3\u516c\u7db2\uff1f DeepSeek Harness \u5177\u5099\u81ea\u4e3b\u667a\u6167\u9ad4\u4ee3\u78bc\u751f\u6210\u3001\u5916\u639b\u57f7\u884c\u8207 Bash Shell \u547d\u4ee4\u57f7\u884c\u80fd\u529b\u3002\u82e5\u60a8\u50c5\u4f7f\u7528 dsh web \u76e3\u807d 0.0.0.0 \u4e14\u7121\u4efb\u4f55\u8eab\u5206\u9a57\u8b49\uff0c\u4efb\u4f55\u6383\u63cf\u5230\u60a8 IP \u7684\u8a2a\u5ba2\u90fd\u80fd\u76f4\u63a5\u5728\u60a8\u7684 VPS \u4e0a\u57f7\u884c\u4efb\u610f\u6307\u4ee4\uff01\u672c\u6307\u5357\u900f\u904e\u300cUFW \u963b\u65b7\u76f4\u63a5\u9023\u7dda + 127.0.0.1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"wpai_generated_summary":"","footnotes":""},"class_list":["post-11244","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/pages\/11244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/comments?post=11244"}],"version-history":[{"count":9,"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/pages\/11244\/revisions"}],"predecessor-version":[{"id":12252,"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/pages\/11244\/revisions\/12252"}],"wp:attachment":[{"href":"https:\/\/infernews.com\/blog\/wp-json\/wp\/v2\/media?parent=11244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}