{
  "version": "https://jsonfeed.org/version/1", 
  "title": "\u5f00\u6e90\u8f6f\u4ef6", 
  "description": "", 
  "home_page_url": "https://www.v2ex.com/go/opensource", 
  "feed_url": "https://www.v2ex.com/feed/opensource.json", 
  "icon": "https://cdn.v2ex.com/navatar/1543/843a/395_large.png?m=1466398352", 
  "favicon": "https://cdn.v2ex.com/navatar/1543/843a/395_normal.png?m=1466398352", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/tuple", 
        "name": "tuple", 
        "avatar": "https://cdn.v2ex.com/gravatar/e30f857fd38802948dd60e9fb484132e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1237138", 
      "title": "[\u5f00\u6e90] build-ai-agent-harness \u4e2d\u6587\u7ffb\u8bd1\u7248", 
      "id": "https://www.v2ex.com/t/1237138", 
      "date_published": "2026-08-25T09:58:47+00:00", 
      "content_html": "\u6700\u8fd1\u770b\u5230\u4e00\u7bc7 \u6784\u5efa Agent Harness \u7684\u6559\u7a0b\uff0c\u4f46\u662f\u6ca1\u6709\u4e2d\u6587\u7248 \u6240\u4ee5\u5c31\u7528 AI \u7ffb\u8bd1\u4e86\u4e00\u7248\uff0c\u5f00\u6e90\u51fa\u6765\u7ed9\u5927\u5bb6\u53c2\u8003<br />\u539f\u6587\uff1a <a target=\"_blank\" href=\"https://vercel.com/academy/build-ai-agent-harness\" rel=\"nofollow noopener\">https://vercel.com/academy/build-ai-agent-harness</a><br />\u7ffb\u8bd1\u7248\uff1a <a target=\"_blank\" href=\"https://agentharnesszh.vercel.app\" rel=\"nofollow noopener\">https://agentharnesszh.vercel.app</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/fzwu", 
        "name": "fzwu", 
        "avatar": "https://cdn.v2ex.com/gravatar/e33eceaace249947288f35fac1e0d069?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1236496", 
      "title": "[\u5f00\u6e90]\u6211\u505a\u4e86\u4e2a\u8fd8\u7b97\u4e0d\u6210\u719f\u7684\u5185\u5bb9\u805a\u5408\u793e\u533a Atoman\uff0c\u6b22\u8fce\u4f53\u9a8c", 
      "id": "https://www.v2ex.com/t/1236496", 
      "date_published": "2026-08-22T18:56:58+00:00", 
      "content_html": "<p>\u7f51\u7ad9\u5730\u5740\uff1a<a href=\"https://www.atoman.org\" rel=\"nofollow\">https://www.atoman.org</a></p>\n<p><strong>Atoman</strong>\u7684\u76ee\u6807\u4e0d\u662f\u518d\u505a\u4e00\u4e2a\u9760\u7b97\u6cd5\u63a8\u5185\u5bb9\u3001\u9760\u60c5\u7eea\u62c9\u4e92\u52a8\u7684\u5e73\u53f0\uff0c\u800c\u662f\u5c1d\u8bd5\u6253\u9020\u4e00\u4e2a<strong>\u9ad8\u8d28\u91cf\u3001\u5c11\u8a00\u8bba\u9650\u5236\u3001\u4ee5\u6c42\u771f\u4e3a\u6838\u5fc3\u7684\u7eaf\u51c0\u793e\u533a</strong>\u3002</p>\n<p>\u8fd9\u91cc\u5f53\u7136\u53ef\u4ee5\u6709\u4e0d\u540c\u89c2\u70b9\uff0c\u751a\u81f3\u53ef\u4ee5\u6709\u6fc0\u70c8\u7684\u4e89\u8bba\uff1b\u4f46\u6211\u5e0c\u671b\u8ba8\u8bba\u5c3d\u91cf\u56de\u5230\u4e8b\u5b9e\u3001\u8bc1\u636e\u548c\u903b\u8f91\u672c\u8eab\u3002\u5c11\u4e00\u70b9\u54d7\u4f17\u53d6\u5ba0\u3001\u8ddf\u98ce\u548c\u4fe1\u606f\u566a\u58f0\uff0c\u591a\u4e00\u70b9\u8ba4\u771f\u9605\u8bfb\u3001\u72ec\u7acb\u5224\u65ad\u548c\u771f\u5b9e\u4ea4\u6d41\u3002</p>\n<p>\u76ee\u524d\u7ad9\u5185\u7684\u6a21\u5757\u6bd4\u8f83\u591a\uff1a</p>\n<ul>\n<li><strong>\u8ba2\u9605</strong>\uff1a\u805a\u5408 RSS \u3001\u535a\u5ba2\u3001\u64ad\u5ba2\u7b49\u66f4\u65b0\uff0c\u652f\u6301\u5206\u7ec4\u3001\u641c\u7d22\u3001\u7b5b\u9009\u89c4\u5219\u3001\u6536\u85cf\u4e0e\u7a0d\u540e\u9605\u8bfb\u3002\u628a\u771f\u6b63\u5173\u5fc3\u7684\u4fe1\u606f\u6536\u5728\u4e00\u8d77\uff0c\u6309\u81ea\u5df1\u7684\u8282\u594f\u770b\u3002</li>\n<li><strong>\u535a\u5ba2</strong>\uff1a\u53ef\u4ee5\u53d1\u5e03\u957f\u6587\uff0c\u4e5f\u53ef\u4ee5\u968f\u624b\u8bb0\u5f55\u51e0\u53e5\uff1b\u6587\u7ae0\u53ef\u901a\u8fc7\u9891\u9053\u548c\u5408\u96c6\u6574\u7406\uff0c\u5e76\u652f\u6301\u8ba2\u9605\u3001\u9605\u8bfb\u4e0e\u6536\u85cf\u3002</li>\n<li><strong>\u97f3\u4e50</strong>\uff1a\u6574\u7406\u827a\u4eba\u3001\u4e13\u8f91\u3001\u6b4c\u66f2\u548c\u6b4c\u5355\uff0c\u652f\u6301\u64ad\u653e\u3001\u5bfc\u5165\u3001\u6536\u85cf\u548c\u6b4c\u8bcd\u6ce8\u91ca\u3002\u5e0c\u671b\u5b83\u4e0d\u53ea\u662f\u64ad\u653e\u5668\uff0c\u4e5f\u662f\u4e00\u4efd\u80fd\u6301\u7eed\u79ef\u7d2f\u7684\u97f3\u4e50\u6863\u6848\u3002</li>\n<li><strong>\u8bba\u575b</strong>\uff1a\u53d1\u5e16\u3001\u56de\u590d\u4e0e\u641c\u7d22\u7684\u8ba8\u8bba\u7a7a\u95f4\uff0c\u9002\u5408\u56f4\u7ed5\u5177\u4f53\u95ee\u9898\u6162\u6162\u804a\u6e05\u695a\u3002</li>\n<li><strong>\u8fa9\u8bba</strong>\uff1a\u628a\u6709\u5206\u6b67\u7684\u8bdd\u9898\u5355\u72ec\u62ff\u51fa\u6765\u8ba8\u8bba\uff0c\u5c3d\u91cf\u8ba9\u4e0d\u540c\u7acb\u573a\u56f4\u7ed5\u8bba\u70b9\u548c\u4f9d\u636e\u4ea4\u950b\uff0c\u800c\u4e0d\u662f\u4e92\u76f8\u8d34\u6807\u7b7e\u3002</li>\n<li><strong>\u4eba\u7269\u65f6\u95f4\u7ebf</strong>\uff1a\u7528\u65f6\u95f4\u4e0e\u4e8b\u4ef6\u68b3\u7406\u4eba\u7269\u548c\u8bdd\u9898\u7684\u6765\u9f99\u53bb\u8109\uff0c\u5e2e\u52a9\u7406\u89e3\u80cc\u666f\uff0c\u800c\u4e0d\u53ea\u770b\u4e00\u4e2a\u5b64\u7acb\u7684\u7ed3\u8bba\u3002</li>\n<li><strong>\u64ad\u5ba2\u4e0e\u89c6\u9891</strong>\uff1a\u6536\u5f55\u548c\u53d1\u5e03\u66f4\u9002\u5408\u7528\u58f0\u97f3\u3001\u753b\u9762\u8868\u8fbe\u7684\u5185\u5bb9\uff0c\u8ba9\u4fe1\u606f\u7684\u5448\u73b0\u4e0d\u5c40\u9650\u4e8e\u6587\u5b57\u3002</li>\n</ul>\n<p>\u73b0\u5728\u53ea\u6709\u535a\u5ba2\u3001\u97f3\u4e50\u548c\u8ba2\u9605\u4e09\u4e2a\u6a21\u5757\u80fd\u8fbe\u5230\u53ef\u4ee5\u7528\u7684\u7a0b\u5ea6\u3002\u5f88\u591a\u529f\u80fd\u8fd8\u5728\u5b8c\u5584\uff0c\u4f53\u9a8c\u548c\u5185\u5bb9\u4e5f\u9700\u8981\u65f6\u95f4\u79ef\u7d2f\uff0c\u96be\u514d\u4f1a\u6709\u4e0d\u987a\u624b\u6216\u4e0d\u5b8c\u6574\u7684\u5730\u65b9\u3002\u4f46\u65b9\u5411\u662f\u660e\u786e\u7684\uff1a\u505a\u4e00\u4e2a\u80fd\u5b89\u9759\u83b7\u53d6\u4fe1\u606f\u3001\u8ba4\u771f\u8868\u8fbe\u89c2\u70b9\u3001\u5766\u8bda\u8ba8\u8bba\u95ee\u9898\u7684\u5730\u65b9\u3002</p>\n<p>\u6b22\u8fce\u6765\u770b\u770b\uff1a<a href=\"https://www.atoman.org\" rel=\"nofollow\">https://www.atoman.org</a></p>\n<p>\u4e5f\u6b22\u8fce\u7ed9\u6211\u63d0\u63d0\u610f\u89c1\uff0c\u63d0 Issue\n<a href=\"https://github.com/FrazeWu/Atoman-Frontend\" rel=\"nofollow\">https://github.com/FrazeWu/Atoman-Frontend</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/CziL", 
        "name": "CziL", 
        "avatar": "https://cdn.v2ex.com/avatar/5a30/f569/484692_large.png?m=1787280731"
      }, 
      "url": "https://www.v2ex.com/t/1236103", 
      "title": "\u5199\u4e86\u4e00\u4e2a\u5f3a\u5236\u8ba9\u81ea\u5df1\u4f11\u606f\u7684 Windows \u5c0f\u5de5\u5177\uff0c\u5206\u4eab\u7ed9\u5927\u5bb6", 
      "id": "https://www.v2ex.com/t/1236103", 
      "date_published": "2026-08-21T03:22:42+00:00", 
      "content_html": "<h2>\u80cc\u666f</h2>\n<p>\u6700\u8fd1\u51c6\u5907\u53bb\u505a\u8fd1\u89c6\u624b\u672f\uff0c\u533b\u751f\u8bf4\u505a\u5b8c\u540e\u8981\u6267\u884c\u81f3\u5c11 1 \u4e2a\u6708\u4ee5\u4e0a\u7684 20-20-20 \uff0c\u4e5f\u5c31\u6bcf 20 \u5206\u949f\u770b 20m \u5916\u8d85\u8fc7 20 \u79d2\u3002\u4e3a\u4e86\u907f\u514d\u81ea\u5df1\u6c89\u8ff7\u5de5\u4f5c\u65e0\u6cd5\u81ea\u62d4\uff0c\u6211\u5f00\u59cb\u8c03\u7814\u5e02\u9762\u4e0a\u76f8\u5173\u5de5\u5177\uff0c\u53d1\u73b0\u6ca1\u6709\u4e00\u4e2a\u9002\u5408\u6211\u7684\uff0c\u4e8e\u662f\u51b3\u5b9a\u81ea\u5df1\u5f00\u53d1\u4e00\u4e2a\u3002</p>\n<h2>\u4ecb\u7ecd</h2>\n<p>ForceBreak \u662f\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u5f3a\u5236\u4f11\u606f\u7684 Windows \u5c0f\u5de5\u5177\uff0c\u57fa\u4e8e QT \u5f00\u53d1\uff0c\u5b8c\u5168\u5f00\u6e90\uff0c\u5f53\u8fbe\u5230\u5de5\u4f5c\u65f6\u957f\u65f6\uff0c\u5c06\u5f39\u51fa\u4e00\u4e2a\u5168\u5c4f\u62e6\u622a\u9875\uff0c\u5f3a\u8feb\u4f60\u4f11\u606f\uff0c\u957f\u671f\u4f7f\u7528\u53ef\u4ee5\u907f\u514d\u4e45\u5750\u5e26\u6765\u7684\u5371\u5bb3\u3002</p>\n<h2>\u529f\u80fd</h2>\n<ul>\n<li>\u8bbe\u7f6e\u5de5\u4f5c\u65f6\u95f4\u3001\u4f11\u606f\u65f6\u95f4\u3001\u63d0\u524d\u63d0\u9192\u65f6\u95f4</li>\n<li>\u652f\u6301\u8bbe\u7f6e\u4f11\u606f\u671f\u95f4\u7684\u6587\u6848</li>\n<li>\u8981\u63d0\u524d\u7ed3\u675f\u4f11\u606f\uff0c\u9700\u8981\u8f93\u5165\u5bc6\u7801\uff0c\u589e\u52a0\u4e00\u5230\u95e8\u69db</li>\n</ul>\n<h2>\u622a\u56fe</h2>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/eNwcvjh.png\"/> </p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/TlFgYMo.png\"/> </p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/askiyMG.png\"/> </p>\n<h2>\u611f\u60f3</h2>\n<p>\u7528\u4e86\u51e0\u5929\u540e\uff0c\u6211\u53d1\u73b0\u6211\u4e0d\u4f1a\u518d\u8fc7\u4e8e\u6c89\u8ff7\u5de5\u4f5c\u4e86\uff0c\u5230\u70b9\u4e86\u5c31\u8d77\u6765\u4f11\u606f\u3002\u4f11\u606f\u671f\u95f4\uff0c\u62e6\u622a\u9875\u4e5f\u53ef\u4ee5\u9632\u6b62\u540c\u4e8b\u5077\u7aa5\u5c4f\u5e55\u5185\u5bb9\uff0c\u611f\u89c9\u8fd8\u662f\u633a\u597d\u7528\u7684\u3002\u5982\u679c\u6709\u9700\u8981\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u70b9\u51fb\u94fe\u63a5\u4e0b\u8f7d\u5b89\u88c5\u4f53\u9a8c\uff0c\u5982\u679c\u89c9\u5f97\u6709\u5e2e\u52a9\uff0c\u9ebb\u70e6\u7ed9\u4e2a star \uff0c\u611f\u8c22\uff01</p>\n<p><a href=\"https://github.com/qaz624824554/ForcedBreak\" rel=\"nofollow\">https://github.com/qaz624824554/ForcedBreak</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Rayvonme", 
        "name": "Rayvonme", 
        "avatar": "https://cdn.v2ex.com/avatar/e044/2262/638451_large.png?m=1787226655"
      }, 
      "url": "https://www.v2ex.com/t/1235975", 
      "date_modified": "2026-08-20T12:02:35+00:00", 
      "content_html": "<p>\u5185\u5b58\u5360\u7528 10M \u5de6\u53f3</p>\n<p>\u4e00\u6b3e\u8f7b\u91cf\u7ea7\u3001\u7cbe\u81f4\u3001\u4ee5\u672c\u5730\u6570\u636e\u4e3a\u6838\u5fc3\u7684 AI \u63d0\u793a\u8bcd\u7ba1\u7406\u52a9\u624b\u3002<br/>\n\u7528\u4e8e\u6536\u85cf\u3001\u6574\u7406\u3001\u5feb\u901f\u641c\u7d22\u3001\u5206\u7c7b\u548c\u590d\u7528\u60a8\u5e38\u7528\u7684 AI \u63d0\u793a\u8bcd\u52a9\u624b\u3002</p>\n<p><img alt=\"PromptNest \u9875\u9762\u6f14\u793a\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://nos.netease.com/ysf/7818e0e0315f02e76f78d5410e700072.png\"/></p>\n<p>\u5982\u679c PromptNest \u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u6b22\u8fce\u7ed9\u9879\u76ee\u4e00\u4e2a \u2b50 Star \u3002</p>\n<p><a href=\"https://github.com/leon-dev-lab/PromptNest\" rel=\"nofollow\">https://github.com/leon-dev-lab/PromptNest</a></p>\n<p>\u2728 \u6838\u5fc3\u529f\u80fd</p>\n<ul>\n<li>\u63d0\u793a\u8bcd\u7ba1\u7406\uff1a\u65b0\u5efa\u3001\u7f16\u8f91\u3001\u5220\u9664\u3001\u590d\u5236\u3001\u6536\u85cf\u3001\u521b\u5efa\u526f\u672c</li>\n<li>\u4e00\u952e\u590d\u5236\uff1a\u590d\u5236\u65f6\u81ea\u52a8\u7ec4\u5408\u201c\u6807\u9898 + \u63d0\u793a\u8bcd\u6b63\u6587\u201d</li>\n<li>\u5168\u6587\u641c\u7d22\uff1a\u652f\u6301\u6807\u9898\u3001\u6b63\u6587\u3001\u5206\u7c7b\u3001\u6807\u7b7e\u3001\u5907\u6ce8\u5feb\u901f\u68c0\u7d22</li>\n<li>\u81ea\u7531\u6392\u5e8f\uff1a\u63d0\u793a\u8bcd\u5361\u7247\u652f\u6301\u62d6\u62fd\u6392\u5e8f\u5e76\u6301\u4e45\u5316\u4fdd\u5b58</li>\n<li>\u5206\u7c7b\u7ba1\u7406\uff1a\u65b0\u589e\u3001\u5220\u9664\u3001\u91cd\u547d\u540d\u3001\u62d6\u62fd\u6392\u5e8f</li>\n<li>\u5206\u7c7b\u914d\u8272\uff1a\u5185\u7f6e 20 \u79cd\u5206\u7c7b\u989c\u8272\uff0c\u53ef\u81ea\u7531\u9009\u62e9</li>\n<li>\u6807\u7b7e Chips\uff1a\u8f93\u5165\u6807\u7b7e\u540e\u6309 Enter \u521b\u5efa\uff0c\u70b9\u51fb \u00d7 \u5373\u53ef\u79fb\u9664</li>\n<li>\u6807\u7b7e\u8054\u60f3\uff1a\u8f93\u5165\u65f6\u6839\u636e\u5f53\u524d\u6709\u6548\u6807\u7b7e\u5e93\u81ea\u52a8\u63a8\u8350\u5386\u53f2\u6807\u7b7e</li>\n<li>\u6536\u85cf\u4e0e\u6700\u8fd1\u4f7f\u7528\uff1a\u5feb\u901f\u627e\u5230\u5e38\u7528 Prompt</li>\n<li>\u81ea\u52a8\u4fdd\u5b58\uff1a\u7f16\u8f91\u5185\u5bb9\u7ea6 650ms \u9632\u6296\u81ea\u52a8\u4fdd\u5b58\uff0c\u65e0\u9700\u9891\u7e41\u624b\u52a8\u70b9\u51fb\u4fdd\u5b58</li>\n<li>JSON \u5bfc\u5165 / \u5bfc\u51fa\uff1a\u65b9\u4fbf\u5907\u4efd\u3001\u8fc1\u79fb\u548c\u6062\u590d\u63d0\u793a\u8bcd\u5e93</li>\n<li>\u81ea\u5b9a\u4e49\u6570\u636e\u76ee\u5f55\uff1a\u53ef\u4ee5\u628a\u6570\u636e\u653e\u5230\u4f60\u6307\u5b9a\u7684\u6587\u4ef6\u5939\u4e2d</li>\n<li>\u6d45\u8272 / \u6df1\u8272\u6a21\u5f0f\uff1a\u652f\u6301\u4e3b\u9898\u5207\u6362</li>\n<li>\u7cfb\u7edf\u6258\u76d8\uff1a\u652f\u6301\u5173\u95ed\u5230\u6258\u76d8\u3001\u53cc\u51fb\u6258\u76d8\u6062\u590d\u7a97\u53e3</li>\n</ul>\n", 
      "date_published": "2026-08-20T11:54:48+00:00", 
      "title": "\u4e00\u6b3e\u8f7b\u91cf\u7ea7\u5f00\u6e90 AI \u63d0\u793a\u8bcd\u7ba1\u7406\u52a9\u624b PromptNest\uff0f\u8bb0\u4e8b\u672c", 
      "id": "https://www.v2ex.com/t/1235975"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/MuDong17", 
        "name": "MuDong17", 
        "avatar": "https://cdn.v2ex.com/gravatar/37f74c40aa259a52e82aa99d4db68c67?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1235871", 
      "title": "\u5206\u4eab\u4e00\u4e2a\u6211\u5728\u505a\u7684\u591a\u8bed\u8a00\u8fd0\u884c\u65f6\u7248\u672c\u7ba1\u7406\u5de5\u5177\uff1a Pinset", 
      "id": "https://www.v2ex.com/t/1235871", 
      "date_published": "2026-08-20T06:21:51+00:00", 
      "content_html": "<p>\u6700\u8fd1\u5728\u505a\u4e00\u4e2a\u5f00\u6e90 CLI\uff1aPinset \u3002\n\u5b83\u4e3b\u8981\u89e3\u51b3\u591a\u8bed\u8a00\u9879\u76ee\u9700\u8981\u540c\u65f6\u7ef4\u62a4\u591a\u5957\u7248\u672c\u7ba1\u7406\u5668\u7684\u95ee\u9898\u3002\u76ee\u524d\u901a\u8fc7\u7edf\u4e00\u7684 pinset.toml \u548c pinset.lock \u7ba1\u7406 Node.js \u3001pnpm \u3001Bun \u3001Go \u3001Python \u3001Java \u3001Rust \u3001.NET \u548c Flutter/Dart \u3002\n\u8bbe\u8ba1\u4e0a\u6bd4\u8f83\u5f3a\u8c03\uff1a</p>\n<ul>\n<li>\u9879\u76ee\u5185\u9ed8\u8ba4\u91c7\u7528\u4e25\u683c\u8def\u7531\uff0c\u907f\u514d\u610f\u5916\u4f7f\u7528\u5168\u5c40\u6216\u7cfb\u7edf\u7248\u672c</li>\n<li>\u53ef\u4ee5\u89e3\u91ca\u5f53\u524d\u7248\u672c\u662f\u5982\u4f55\u9009\u51fa\u6765\u7684</li>\n<li>\u5b89\u88c5\u65f6\u8fdb\u884c\u5b8c\u6574\u6027\u548c\u6765\u6e90\u6821\u9a8c</li>\n<li>\u652f\u6301\u53ea\u8bfb\u3001\u79bb\u7ebf\u7684\u9501\u6587\u4ef6\u5ba1\u8ba1</li>\n<li>\u4f20\u7edf\u7248\u672c\u6587\u4ef6\u53ea\u901a\u8fc7\u663e\u5f0f\u7684 detect / import \u8fc1\u79fb\uff0c\u4e0d\u4f1a\u88ab\u9759\u9ed8\u5f53\u4f5c\u8fd0\u884c\u65f6\u56de\u9000\n\u9879\u76ee\u4f7f\u7528 Rust \u7f16\u5199\uff0cMIT \u534f\u8bae\uff1a</li>\n</ul>\n<p>Github \u5730\u5740\uff1a<a href=\"https://github.com/Future-Element/pinset\" rel=\"nofollow\">Pinset</a></p>\n<p>\u8d77\u56e0\u662f\u56e0\u4e3a\u6211\u7535\u8111\u91cd\u88c5\u4e86\u7cfb\u7edf\uff0c\u7136\u540e\u60f3\u914d\u7f6e\u4e0b\u5f00\u53d1\u73af\u5883\uff0c\u53d1\u73b0\u8981\u5b89\u88c5\uff0cfnm \u3001fvm \u3001go \u3001rust \u3001uv \u3001flutter... \u611f\u89c9\u6709\u70b9\u9ebb\u70e6\u3002\u4e8e\u662f\uff0c\u5728\u6ca1\u6709\u641c\u7d22\u6709\u6ca1\u6709\u591a\u8bed\u8a00\u7ba1\u7406\u5de5\u5177\u7684\u60c5\u51b5\u4e0b\uff0c\u8111\u5b50\u4e00\u70ed\uff0c\u60f3\u81ea\u5df1\u5199\u4e00\u4e2a...\u4e0d\u559c\u52ff\u55b7</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/pkuwkl", 
        "name": "pkuwkl", 
        "avatar": "https://cdn.v2ex.com/gravatar/5221b6a96436b40c713a1dcc4b68c9f8?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1235732", 
      "title": "[\u5f00\u6e90] agy-staff: \u8ba9 Gemini \u6210\u4e3a Codex / Claude Code \u7684\u5458\u5de5", 
      "id": "https://www.v2ex.com/t/1235732", 
      "date_published": "2026-08-19T16:23:32+00:00", 
      "content_html": "<p>Repo: <a href=\"https://github.com/keli-wen/agy-staff\" rel=\"nofollow\">https://github.com/keli-wen/agy-staff</a></p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/keli-wen/agy-staff/master/assets/logo/gemini-agy.svg\"/></p>\n<p>\u5176\u5b9e\u662f\u628a Antigravity \u505a\u6210\u4e86 Codex / Claude \u7684 subagent \u63d2\u4ef6 <code>agy-staff</code> \u3002\u8ba9 Gemini \u4e3a\u53e6\u5916\u7684\u6a21\u578b\u6253\u5de5\u3002</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/keli-wen/agy-staff/master/assets/design.png\"/></p>\n<p>\u4e3a\u4ec0\u4e48\u4f1a\u60f3\u505a\u8fd9\u4e2a\u4e1c\u897f\u5462\uff1f\u4e3b\u8981\u662f\u6211 agentic engineering \u4e2d\u9047\u5230\u7684\u4e00\u4e9b\u75db\u70b9\uff1a</p>\n<ol>\n<li><strong>\u76ee\u524d</strong>\u901f\u5ea6\u5feb\u7684\u6a21\u578b\u901a\u5e38\u6548\u679c\u4e0d\u4f73\uff1b\u800c\u80fd\u529b\u66f4\u5f3a\u7684\u6a21\u578b\uff0c\u63a8\u7406\u901f\u5ea6\u901a\u5e38\u8f83\u6162\uff08<strong>\u70b9\u540d GPT 5.6 Sol</strong>\uff09\uff0c\u800c\u4e14\u989d\u5ea6\u4e0d\u8db3\u3002</li>\n<li>Gemini \u4f1a\u5458\u7684\u83b7\u53d6\u6210\u672c\u8f83\u4f4e\uff0c\u4f46\u5982\u4f55\u9ad8\u6548\u5229\u7528\u5b83\u7684\u989d\u5ea6\u5462\uff1f\u76ee\u524d\u5b83\u7684\u80fd\u529b\u8fd8\u4e0d\u9002\u5408\u4f5c\u4e3a\u4e00\u4e2a ochestrator \u3002</li>\n</ol>\n<p>\u81ea Gemini 3.5 Flash \u4e4b\u540e\uff0c\u5176\u5b9e Gemini Flash \u5f00\u59cb\u6709\u6f5c\u5728\u7684\u751f\u6001\u4f4d\uff08\u9ad8\u6548\u7684\u6267\u884c\u8005\uff09\u3002\u4f46\u5f7c\u65f6\u5b83\u7684\u80fd\u529b\u8fd8\u662f\u592a\u5dee\u4e86\uff0c\u7528\u6237\uff08\u4f8b\u5982\u6211\uff09\u6ca1\u529e\u6cd5\u4fe1\u4efb\u5b83\u3002\u4f46\u968f\u7740\u8fed\u4ee3\u5230 Gemini 3.7 Flash \uff0c\u5b83\u7684\u80fd\u529b\u8f83\u4e4b\u4e8e\u81ea\u5df1\u6709\u4e86\u4e00\u6b21\u8dc3\u5347\uff0c\u660e\u663e\u53ef\u9760\u4e0d\u5c11\u3002\u6240\u4ee5\u8ba9 Codex \u6216 Claude Code \u4e2d\u7684\u9876\u7ea7\u6a21\u578b\u901a\u8fc7 grill \u548c review \u5f97\u5230\u89e3\u51b3\u95ee\u9898\u7684 spec / insights \uff0c\u8ba9 Gemini \u4f5c\u4e3a\u63a5\u53d7\u6d3e\u9063\u5b83\u4eec\u7684\u5458\u5de5\uff0c\u5e76\u5b8c\u6210\u5177\u4f53\u5de5\u4f5c\u3002\u8fd9\u4e2a\u6d41\u7a0b\u4f3c\u4e4e\u80fd\u6709\u6548\u7684\u89e3\u51b3\u6211\u4e0a\u8ff0\u63d0\u5230\u7684\u4e24\u4e2a\u75db\u70b9\u3002<strong>\u800c\u4e14 Antrigravity CLI \u8fd8\u53ef\u4ee5\u539f\u751f\u8c03\u7528 Nano Banana \u52a0\u4e0a Gemini \u7cfb\u5217\u6a21\u578b\u5728\u591a\u6a21\u6001/\u524d\u7aef\u9886\u57df\u7684\u80fd\u529b\uff0c\u5728\u4e0d\u90a3\u4e48\u6ce8\u91cd\u6267\u884c\u7684\u9886\u57df\uff08\u8425\u9500\uff0c\u5206\u6790\uff0c\u8bbe\u8ba1\uff09\u5b83\u4e5f\u53ef\u4ee5\u6210\u4e3a Codex / Claude \u5f3a\u5927\u7684\u52a9\u624b\uff08\u5c24\u5176\u662f Claude \u65e0\u6cd5\u539f\u751f\u751f\u56fe\uff09</strong></p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/keli-wen/agy-staff/refs/heads/master/assets/why.png\"/></p>\n<p>\u6240\u4ee5\u6211\u505a\u4e86\u5bf9\u5e94\u7684\u63d2\u4ef6\uff0c\u76ee\u524d\u63d0\u4f9b\u4e94\u79cd\u5e38\u7528\u89d2\u8272\uff1a</p>\n<ul>\n<li><code>staffer</code>\uff1a\u901a\u7528\u4efb\u52a1\uff0c\u4e5f\u53ef\u4ee5\u8c03\u7528 Antigravity \u539f\u751f\u80fd\u529b\u751f\u6210\u56fe\u7247</li>\n<li><code>researcher</code>\uff1a\u4ee3\u7801\u5e93\u8c03\u7814 / Deep Research</li>\n<li><code>reviewer</code>\uff1aCode Review \uff0c\u4e5f\u53ef\u4ee5 Review \u65b9\u6848\u3001\u8bbe\u8ba1\u548c\u51b3\u7b56</li>\n<li><code>implementer</code>\uff1a\u5b9e\u73b0\u4e00\u4e2a\u8fb9\u754c\u660e\u786e\u7684\u7f16\u7801\u4efb\u52a1</li>\n<li><code>ask</code>\uff1a\u5feb\u901f\u95ee\u4e00\u53e5\uff0c\u62ff\u4e00\u4e2a\u72ec\u7acb\u7684\u7b2c\u4e8c\u610f\u89c1</li>\n</ul>\n<p>\u76ee\u524d\u8fd9\u4e2a plugin \u4e3b\u8981\u56f4\u7ed5\u6211\u81ea\u5df1\u7684\u5e38\u89c1\u9700\u6c42\u800c\u8bbe\u8ba1\uff0c\u4f8b\u5982\u4ee3\u7801\u5b9e\u73b0\u3001Deep Research \u548c\u72ec\u7acb Review \uff08\u901a\u7528 Review \u548c Code Review \uff09\u3002\u4e3a\u4e86\u8ba9\u5b83\u7528\u8d77\u6765\u66f4\u50cf harness \u539f\u751f\u63d0\u4f9b\u7684 Subagent \uff0c\u6211\u4e5f\u5728 ochestration \u4e0a\u8fed\u4ee3\u4e86\u51e0\u4e2a\u7248\u672c\uff08\u4efb\u52a1\u6d3e\u53d1\u4e0e\u5524\u9192\u3001\u540e\u53f0\u6267\u884c\u3001\u7ed3\u679c\u56de\u6536\u548c follow-up \u7b49\u4ea4\u4e92\u7ec6\u8282\uff09\u3002</p>\n<p>\u5176\u4e2d\u4e00\u4e9b\u8bbe\u8ba1\u501f\u9274\u4e86 Anthropic \u535a\u5ba2\u4e2d\u7684\u6700\u4f73\u5b9e\u8df5\u3002\u4e0d\u8fc7\u76ee\u524d\u8fd8\u5904\u4e8e\u6bd4\u8f83\u65e9\u671f\u7684\u9636\u6bb5\uff0c\u5f88\u591a\u5224\u65ad\u66f4\u591a\u6765\u81ea\u6211\u7684\u4e2a\u4eba\u4f7f\u7528\u4e60\u60ef\uff08\u5199\u535a\u5ba2\u65f6\u5b66\u4e60\u7684\u4e00\u4e9b\u5185\u5bb9\uff09\u3002</p>\n<p>\u63a5\u4e0b\u6765\u6211\u51c6\u5907\u5148\u6b63\u5e38\u4f7f\u7528\u4e00\u4e24\u5468\uff0c<strong>\u770b\u770b Gemini \u4f5c\u4e3a\u5458\u5de5\u5230\u5e95\u80fd\u4e0d\u80fd\u9ad8\u6548\u9ad8\u8d28\u91cf\u7684\u5b8c\u6210\u4efb\u52a1</strong>\u3002\u7b49\u79ef\u7d2f\u4e86\u4e00\u4e9b\u771f\u5b9e\u4f53\u9a8c\u4e4b\u540e\uff0c\u6211\u4f1a\u518d\u56de\u6765\u5206\u4eab\u5176\u4e2d\u6bd4\u8f83\u6709\u610f\u601d\u7684 insights \u3002</p>\n<p>\u6b22\u8fce\u5927\u5bb6 file issue \u548c contribute \uff01\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/YAFEIML", 
        "name": "YAFEIML", 
        "avatar": "https://cdn.v2ex.com/avatar/3df9/57ba/69588_large.png?m=1661906159"
      }, 
      "url": "https://www.v2ex.com/t/1235665", 
      "title": "\u5f00\u6e90\uff1a\u864e\u7259\uff0c\u6597\u9c7c\uff0c B \u7ad9\u8f6c\u53d1\u63a8\u6d41\uff0c\u8001\u8bbe\u5907\u798f\u97f3\uff0c\u4e2d\u5e74\u7537\u4eba\u7684\u6700\u540e\u4e00\u70b9\u7231\u597d\u3002", 
      "id": "https://www.v2ex.com/t/1235665", 
      "date_published": "2026-08-19T09:24:23+00:00", 
      "content_html": "\u6ca1\u4e8b\u559c\u6b22\u7528\u6295\u5f71\u770b CS \u6bd4\u8d5b\uff0c10 \u5e74\u524d\u7684\u6781\u7c73 H1 \u5b89\u88c5\u864e\u7259\u4e4b\u7c7b\u7684\u5ba2\u6237\u7aef\u90fd\u4e0d\u80fd\u6b63\u5e38\u6253\u5f00\uff0c\u4e5f\u4e0d\u60f3\u6362\u8bbe\u5907\uff0c\u5c31\u641e\u4e86\u4e2a\u4e8c\u6b21\u63a8\u6d41\u7684\u5c0f\u5de5\u5177\uff0c\u8fd8\u522b\u8bf4\uff0cjellyfin \u4e2d\u64ad\u653e\u4e00\u70b9\u90fd\u4e0d\u5361\u4e86\u3002<br /> <a target=\"_blank\" href=\"https://i.imgur.com/ihahwiL.png\" target=\"_blank\" rel=\"nofollow noopener\"><img src=\"https://i.imgur.com/ihahwiL.png\" class=\"embedded_image\" rel=\"noreferrer\"></a><br /><a target=\"_blank\" href=\"https://github.com/Yafeiml/LiveStreamGateway\" rel=\"nofollow noopener\">https://github.com/Yafeiml/LiveStreamGateway</a><br />\u652f\u6301 docker\uff0cwindows \u90e8\u7f72\uff0c\u4e0d\u5efa\u8bae wsl docker\uff0c\u4f1a\u5185\u5b58\u6cc4\u9732\uff0c\u5e94\u8be5\u662f\u7f51\u7edc\u4fa7\u7684\u95ee\u9898\uff0c\u8fd8\u6ca1\u89e3\u51b3\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/whoseChild", 
        "name": "whoseChild", 
        "avatar": "https://cdn.v2ex.com/gravatar/60d1fed1e9c8d63d28629face61a78f3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1235592", 
      "title": "\u505a\u4e86\u4e00\u4e2a\u6447\u4e00\u6447\u5e7f\u544a\u7684 APP \u7ea2\u9ed1\u699c\u5355\uff0c\u6709\u4eba\u60f3\u4e00\u8d77 Contribute \u5417~", 
      "id": "https://www.v2ex.com/t/1235592", 
      "date_published": "2026-08-19T06:34:04+00:00", 
      "content_html": "<p><a href=\"https://github.com/Blaxon/shame-on-shake-ads\" rel=\"nofollow\">https://github.com/Blaxon/shame-on-shake-ads</a></p>\n<p>\u88ab\u8fd9\u4e9b\u65e0\u826f\u5e7f\u544a\u70e6\u6b7b\u4e86\uff0c\u60f3\u505a\u70b9\u5565\uff0c\u4e8e\u662f\u5c31\u6709\u4e86\u8fd9\u4e2a\u9879\u76ee<br/>\n\u5982\u679c\u4f60\u611f\u5174\u8da3\u7684\u8bdd\uff0c\u6b22\u8fce\u652f\u6301\u672c\u9879\u76ee\ud83d\udc4f\ud83c\udffb</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinghelee", 
        "name": "xinghelee", 
        "avatar": "https://cdn.v2ex.com/avatar/7e6d/6496/71832_large.png?m=1785605452"
      }, 
      "url": "https://www.v2ex.com/t/1235035", 
      "title": "Termite 2.0.0 \u66f4\u65b0\uff1a\u4e3a\u5e76\u884c AI \u5f00\u53d1\u505a\u7684 macOS \u539f\u751f\u7ec8\u7aef", 
      "id": "https://www.v2ex.com/t/1235035", 
      "date_published": "2026-08-17T08:05:47+00:00", 
      "content_html": "<p>Termite \u662f\u4f7f\u7528 SwiftUI + AppKit \u5f00\u53d1\u7684 macOS \u539f\u751f\u7ec8\u7aef\uff0c\u4e3b\u8981\u7528\u6765\u7ba1\u7406\u540c\u65f6\u8fd0\u884c\u7684\u591a\u4e2a coding agent \u3002</p>\n<p>2.0.0 \u7684\u4e3b\u8981\u66f4\u65b0\uff1a</p>\n<ul>\n<li>\u901a\u8fc7\u5c40\u57df\u7f51\u6216 Tailscale \u5728\u624b\u673a\u4e0a\u64cd\u4f5c\u7ec8\u7aef\u548c iOS Simulator</li>\n<li>\u5728 iPhone \u6216\u8005 iPad \u4e0a\u9884\u89c8\u64cd\u4f5c\u63a7\u5236 iOS \u6a21\u62df\u5668</li>\n</ul>\n<p><a href=\"https://termite.xinghelee.com/assets/mobile-simulator-demo.mp4\" rel=\"nofollow\"><img alt=\"\u624b\u673a\u8fdc\u7a0b\u63a7\u5236\u7ec8\u7aef\u548c iOS Simulator \u89c6\u9891\u6f14\u793a\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://termite.xinghelee.com/assets/mobile-video-poster-device.png\"/></a></p>\n<p>\u25b6 <a href=\"https://termite.xinghelee.com/assets/mobile-simulator-demo.mp4\" rel=\"nofollow\">\u70b9\u51fb\u89c2\u770b\u624b\u673a\u8fdc\u7a0b\u64cd\u4f5c\u7ec8\u7aef\u548c iOS Simulator \u6f14\u793a\uff08 2 \u5206 24 \u79d2\uff09</a></p>\n<p><img alt=\"Termite 2.0.0\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://termite.xinghelee.com/assets/hero-latest.png\"/></p>\n<p>\u5b98\u7f51\uff1a <a href=\"https://termite.xinghelee.com/\" rel=\"nofollow\">https://termite.xinghelee.com/</a></p>\n<p>GitHub\uff1a <a href=\"https://github.com/xinghelee/Termite\" rel=\"nofollow\">https://github.com/xinghelee/Termite</a></p>\n<p>Homebrew\uff1a<code>brew install --cask xinghelee/tap/termite</code></p>\n<p>\u652f\u6301 macOS 26.0+\uff0cGPL-3.0 \u5f00\u6e90\u3002\u6b22\u8fce\u8bd5\u7528\u548c\u53cd\u9988\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/bowen628", 
        "name": "bowen628", 
        "avatar": "https://cdn.v2ex.com/avatar/9907/0817/379930_large.png?m=1585292505"
      }, 
      "url": "https://www.v2ex.com/t/1234212", 
      "date_modified": "2026-08-13T13:35:00+00:00", 
      "content_html": "DeepSeek \u4eca\u5929\u628a Harness \uff08 dsh \uff09\u5f00\u4e86\u5f00\u53d1\u8005\u9884\u89c8\u3001MIT \u534f\u8bae\u3002\u6211\u4e24\u4e2a\u90fd\u88c5\u4e86\u672c\u673a\u8dd1\u4e86\u4e00\u904d\u2014\u2014dsh \u548c\u6211\u4e00\u76f4\u5728\u505a\u7684 BitFun\u2014\u2014\u5199\u4e2a\u5ba2\u89c2\u5bf9\u6bd4\u7ed9\u9009\u578b\u7684\u670b\u53cb\u3002<br /><br />## \u5b9a\u4f4d<br />- **dsh**\uff1aDeepSeek \u5b98\u65b9 agent harness \uff0cNode/TS \uff0c\u8dd1\u5728 Cordis \u5143\u6846\u67b6\u4e0a\uff0c\u6838\u5fc3\u662f\u300c everything is a plugin \u300d\uff1b\u5f62\u6001 web / headless / tui \u4e09\u79cd profile \u3002<br />- **BitFun**\uff1aRust + Tauri \u684c\u9762 agent \uff0c\u6a21\u578b\u65e0\u5173\uff0c\u8d70\u300c\u684c\u9762 + \u4efb\u52a1\u4e13\u5c5e Mini App \u300d\u8def\u7ebf\u3002<br /><br />## \u67b6\u6784<br />dsh \u7684 profile \u662f\u63d2\u4ef6 bundle \u7684 patch \u5c42\u6309\u5e8f\u53e0\u52a0\uff0c\u6362 provider \u5c31\u662f\u5f80 ctx.llm \u6ce8\u518c\u4e2a\u9002\u914d\u5668\uff08\u5185\u7f6e llm-deepseek \u3001llm-pi-ai \uff09\u3002<br />BitFun \u662f\u56db\u5c42\u5b9a\u5236\uff1a\u81ea\u5b9a\u4e49 Agent \u2192 MCP / Skills / Codex \u517c\u5bb9 Hooks \u2192 Mini Apps \u2192 \u6e90\u7801\u7ea7\uff1b\u6a21\u578b\u5f00\u7bb1\u5373\u591a\uff0ccatalog \u91cc\u6709 Claude / DeepSeek / GLM / Kimi / Qwen \u3002<br /><br />## \u4e0a\u4e0b\u6587\u6210\u672c\uff08\u6211\u6700\u5728\u610f\u7684\uff09<br />dsh \u7528 compaction \uff08 basic + tool-result-pruner \uff09+ token-meter \u538b\u4e0a\u4e0b\u6587\u3002<br />BitFun \u8d70\u53e6\u4e00\u6761\u8def\uff1aprompt \u62fc\u63a5\u5b57\u8282\u7ea7\u7a33\u5b9a\uff0c\u8de8\u8f6e\u4e0d\u5e26\u4f1a\u6296\u52a8\u7684\u65f6\u95f4\u6233\u3001\u4e0d\u91cd\u6392\uff0cSWE-Bench-Pro \u5b9e\u6d4b KV cache \u5e73\u5747\u547d\u4e2d\u7387 98.67%\uff1b\u68c0\u7d22\u7528\u5e38\u9a7b\u8de8\u8f6e\u7d22\u5f15 flashgrep \uff0cChromium \u7ea7\u4ed3\u5e93\u6700\u9ad8\u7701 94.6%\u3001\u5e73\u5747\u7ea6 36 \u500d\u3002<br /><br />## \u6743\u9650<br />\u90fd\u6709\u5ba1\u6279\uff1adsh \u7684 tool-ask-user \uff0cBitFun \u7684\u6743\u9650\u5ba1\u6279 + \u8fdc\u7a0b\u5ba1\u6279\uff1b BitFun \u989d\u5916\u6709\u96f6\u77e5\u8bc6\u4e2d\u7ee7\u7684\u81ea\u6258\u7ba1\u591a\u8bbe\u5907\u63a7\u5236\u3002<br /><br />## \u7ed3\u8bba<br />\u4e0d\u662f\u8c01\u66f4\u597d\uff0c\u662f\u9ed8\u8ba4\u53d6\u820d\u4e0d\u540c\u3002\u8981 DeepSeek \u5b98\u65b9\u751f\u6001 + \u63d2\u4ef6\u53ef\u7ec4\u5408\u6027\u8ddf dsh \uff08\u6ce8\u610f\u8fd8\u662f dev preview \uff0c\u4f1a\u6709 breaking change \uff09\uff1b\u8981\u5f00\u7bb1\u591a\u6a21\u578b + \u684c\u9762\u5f62\u6001 + \u5df2\u5b9e\u6d4b\u7684\u6027\u80fd\u5de5\u7a0b\u770b BitFun \u3002\u4e24\u4e2a\u90fd MIT \uff0c\u5efa\u8bae\u90fd\u88c5\u4e0a\u3001\u62ff\u81ea\u5df1\u7684\u771f\u5b9e\u4efb\u52a1\u8dd1\u4e00\u904d\u518d\u4e0b\u7ed3\u8bba\u3002<br /><br />- BitFun: <a target=\"_blank\" href=\"https://github.com/GCWing/BitFun\" rel=\"nofollow noopener\">https://github.com/GCWing/BitFun</a><br />- dsh: <a target=\"_blank\" href=\"https://github.com/deepseek-ai/deepseek-harness\" rel=\"nofollow noopener\">https://github.com/deepseek-ai/deepseek-harness</a>", 
      "date_published": "2026-08-13T13:29:47+00:00", 
      "title": "\u5b9e\u6d4b\u5bf9\u6bd4\uff1a DeepSeek Harness (dsh) vs BitFun\uff0c\u4e24\u4e2a\u5f00\u6e90 Agent Harness \u7684\u4e0d\u540c\u89e3\u6cd5", 
      "id": "https://www.v2ex.com/t/1234212"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/vanchKong", 
        "name": "vanchKong", 
        "avatar": "https://cdn.v2ex.com/gravatar/ad82bba4cc0b99618b26ca092b7b7eeb?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1233825", 
      "title": "\u4f7f\u7528 AI \u91cd\u6784\u4e86\u4e00\u4e0b\u4ee5\u524d\u7684\u5c0f\u5de5\u5177\u9879\u76ee", 
      "id": "https://www.v2ex.com/t/1233825", 
      "date_published": "2026-08-12T05:57:19+00:00", 
      "content_html": "<p><a href=\"https://github.com/vanchKong/Ya-Anything\" rel=\"nofollow\">https://github.com/vanchKong/Ya-Anything</a></p>\n<p>\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u7528\u770b\u770b\uff0c\u4e5f\u53ef\u4ee5\u518d\u63d0\u70b9\u610f\u89c1\u3002</p>\n<p>\u6211\u5199\u8fd9\u4e2a\u5de5\u5177\u662f\u9700\u8981\u5c06\u524d\u7aef\u9759\u6001\u8d44\u6e90\u6279\u91cf\u538b\u7f29\uff0c\u62d6\u5165\u6587\u4ef6\u6216\u6587\u4ef6\u5939\uff0c\u81ea\u52a8\u5728\u539f\u8def\u5f84\u66ff\u6362\u8986\u76d6\u538b\u7f29\u540e\u7684\u8d44\u6e90\uff0c\u538b\u7f29\u7387\u975e\u5e38\u53ef\u89c2\uff0c\u51fa\u6765\u7684\u8d28\u91cf\u4e5f\u5b8c\u5168\u53ef\u63a5\u53d7\uff08\u53cc\u51fb\u5bf9\u6bd4\u538b\u7f29\u524d\u540e\u8d28\u91cf\uff09\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\uff0c\u6211\u53c8\u52a0\u5165\u4e86 glb \u6a21\u578b\u7684\u538b\u7f29\uff0c\u538b\u7f29\u5747\u652f\u6301\u56de\u6eda\uff0c\u5f53\u7136\u662f\u5b58\u5728\u5185\u5b58\u91cc\u7684\uff0c\u8f6f\u4ef6\u5173\u6389\u5c31\u6ca1\u6cd5\u56de\u6eda\u4e86\u3002</p>\n<p>\u5e02\u9762\u4e0a\u5176\u5b9e\u6709\u4e00\u4e2a\u7c7b\u4f3c\u7684\u4ea7\u54c1\uff0c\u5356 70 \u5143\uff0c\u4e0d\u8fc7\u6ca1\u6709\u82f9\u679c\u82af\u7247\u7248\u672c\uff0c\u542f\u52a8\u76f8\u5f53\u5361\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/haxqer", 
        "name": "haxqer", 
        "avatar": "https://cdn.v2ex.com/avatar/d0a0/f778/739641_large.png?m=1786429618"
      }, 
      "url": "https://www.v2ex.com/t/1233507", 
      "date_modified": "2026-08-11T04:29:53+00:00", 
      "content_html": "<p>\u4e24\u5e74\u524d\u505a\u9879\u76ee\u9700\u8981\u6c47\u7387\u6570\u636e\uff0c\u7ffb\u4e86\u4e00\u5708\u73b0\u6210\u7684\u670d\u52a1\uff1a\u8981\u4e48\u5fc5\u987b\u6ce8\u518c\u7533\u8bf7 API Key \uff0c\u8981\u4e48\u514d\u8d39\u989d\u5ea6\u6bcf\u6708\u53ea\u6709\u51e0\u767e\u4e0a\u5343\u6b21\uff0c\u8981\u4e48\u7528\u7740\u7528\u7740\u5c31\u6084\u6084\u505c\u670d\u4e86\u3002\u4e8e\u662f\u5e72\u8106\u81ea\u5df1\u642d\u4e86\u4e00\u4e2a\uff0c\u5e76\u4e14\u51b3\u5b9a\u4e00\u76f4\u514d\u8d39\u7ef4\u62a4\u4e0b\u53bb\u3002</p>\n<p>GitHub: <a href=\"https://github.com/haxqer/FreeExchangeRateApi\" rel=\"nofollow\">https://github.com/haxqer/FreeExchangeRateApi</a></p>\n<h2>\u76ee\u524d\u7684\u60c5\u51b5</h2>\n<ul>\n<li>\u5df2\u7ecf<strong>\u7a33\u5b9a\u8fd0\u884c 2 \u5e74</strong></li>\n<li>\u5f53\u524d\u6bcf\u6708\u7ea6 <strong>500 \u4e07\u6b21</strong> API \u8bf7\u6c42</li>\n<li><strong>\u627f\u8bfa\u514d\u8d39\u7ef4\u62a4 10 \u5e74</strong></li>\n</ul>\n<h2>\u7279\u70b9</h2>\n<ul>\n<li><strong>\u5b8c\u5168\u514d\u8d39</strong>\uff1a\u4e0d\u6536\u8d39\uff0c\u4e5f\u4e0d\u9700\u8981 API Key \uff0c\u76f4\u63a5\u8bf7\u6c42\u5c31\u80fd\u7528</li>\n<li><strong>\u6bcf\u5c0f\u65f6\u66f4\u65b0</strong>\uff1a\u6c47\u7387\u6570\u636e\u6bcf\u5c0f\u65f6\u5237\u65b0\u4e00\u6b21</li>\n<li><strong>\u4e0d\u9650\u8c03\u7528\u9891\u7387</strong>\uff1a\u6ca1\u6709\u5f3a\u5236\u9650\u6d41</li>\n<li><strong>170+ \u5e01\u79cd</strong>\uff1a\u6cd5\u5e01\u3001\u52a0\u5bc6\u8d27\u5e01\uff08 BTC \u7b49\uff09\u3001\u8d35\u91d1\u5c5e\uff08\u91d1\u3001\u94f6\u3001\u94c2\u3001\u94af\uff09\u90fd\u8986\u76d6</li>\n</ul>\n<h2>\u7528\u6cd5</h2>\n<p>\u53ea\u6709\u4e00\u4e2a\u63a5\u53e3\uff0c\u4e00\u4e2a GET \u8bf7\u6c42\uff1a</p>\n<pre><code class=\"language-bash\">curl https://api.exchangerate.fun/latest\n</code></pre>\n<p>\u7528 <code>base</code> \u6307\u5b9a\u57fa\u51c6\u8d27\u5e01\uff08 ISO 4217 \u4ee3\u7801\uff0c\u9ed8\u8ba4 USD \uff09\uff1a</p>\n<pre><code class=\"language-bash\">curl https://api.exchangerate.fun/latest?base=CNY\n</code></pre>\n<p>\u8fd4\u56de\uff1a</p>\n<pre><code class=\"language-json\">{\n  \"timestamp\": 1786417200,\n  \"base\": \"CNY\",\n  \"rates\": {\n    \"USD\": 0.148254,\n    \"EUR\": 0.128469,\n    \"JPY\": 23.611762,\n    \"HKD\": 1.163154\n  }\n}\n</code></pre>\n<p>README \u91cc\u6709 JavaScript / Python / Go / PHP \u7684\u8c03\u7528\u793a\u4f8b\uff0cMIT \u534f\u8bae\u5f00\u6e90\u3002</p>\n<p>\u5982\u679c\u5bf9\u4f60\u6709\u7528\uff0c\u6b22\u8fce\u76f4\u63a5\u62ff\u53bb\u7528\uff1b\u6709\u95ee\u9898\u6216\u8005\u5efa\u8bae\u4e5f\u6b22\u8fce\u63d0 issue \u3002</p>\n", 
      "date_published": "2026-08-11T04:20:55+00:00", 
      "title": "\u5206\u4eab\u4e00\u4e2a\u514d\u8d39\u6c47\u7387 API\uff1a\u5df2\u7ecf\u7a33\u5b9a\u8fd0\u884c 2 \u5e74\uff08\u6bcf\u6708 500 \u4e07\u6b21\u8bf7\u6c42\uff09", 
      "id": "https://www.v2ex.com/t/1233507"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hanbaoaaa", 
        "name": "hanbaoaaa", 
        "avatar": "https://cdn.v2ex.com/gravatar/9df27a15812995f9b79304d5c1507f82?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1233228", 
      "title": "[\u5f00\u6e90\u5206\u4eab] \u4ec5\u9700\u4e00\u4e2a\u811a\u672c\u5c31\u80fd\u5c06\u76ee\u5f55\u8f6c s3 \u670d\u52a1\uff0c FluxonFS vs Alluxio 5x \u541e\u5410", 
      "id": "https://www.v2ex.com/t/1233228", 
      "date_published": "2026-08-10T05:24:17+00:00", 
      "content_html": "<p>\u5982\u4eca\uff0c\u4ece AI \u8bad\u7ec3\u6846\u67b6\u52a0\u8f7d\u6a21\u578b\u3001\u65e5\u5fd7\u7cfb\u7edf\u5f52\u6863\uff0c\u5230\u4e2a\u4eba NAS \u7684\u8f7b\u91cf\u5907\u4efd\uff0cS3 \u5df2\u7ecf\u4e8b\u5b9e\u6210\u4e3a\u73b0\u4ee3\u4e91\u539f\u751f\u548c AI \u5de5\u5177\u94fe\u7684\u6807\u51c6\u5bf9\u8c61\u5b58\u50a8\u63a5\u53e3\u3002\u8fc7\u53bb\u63d0\u5230\u81ea\u5efa S3 \uff0c\u5168\u7403\u5f00\u53d1\u8005\u7684\u9ed8\u8ba4\u9009\u9879\u662f MinIO\u2014\u2014\u9ad8\u6027\u80fd\u3001S3 \u517c\u5bb9\u3001\u90e8\u7f72\u7b80\u5355\u3002\u4f46\u8fc7\u53bb\u51e0\u5e74\uff0cMinIO \u7684\u4e00\u7cfb\u5217\u64cd\u4f5c\u8ba9\u793e\u533a\u9010\u6e10\u79bb\u5fc3\uff1aLicense \u4ece\u5bbd\u677e\u7684 Apache 2.0 \u53d8\u4e3a\u4e25\u82db\u7684 AGPLv3 \uff0c\u5f00\u6e90\u7248\u63a5\u8fde\u780d\u6389 Console \u7ba1\u7406\u63a7\u5236\u53f0\uff0c\u5546\u4e1a\u5316\u6536\u7d27\u7684\u610f\u56fe\u8d8a\u6765\u8d8a\u660e\u663e\u3002\u5bf9\u4e8e\u8bb8\u591a\u4e2d\u5c0f\u56e2\u961f\u548c\u4e2a\u4eba\u5f00\u53d1\u8005\u6765\u8bf4\uff0cMinIO \u786e\u5b9e\u6709\u4e9b\"\u4e0d\u884c\u4e86\"\u3002</p>\n<p>\u5728\u8fd9\u4e2a\u751f\u6001\u4f4d\u7a7a\u7f3a\u7684\u7a97\u53e3\u671f\uff0cRustFS \u5e94\u8fd0\u800c\u751f\uff0c\u521a\u597d\u5b8c\u7f8e\u8865\u4e0a\u4e86\u8fd9\u4e2a\u4f4d\u7f6e\u3002\u5b83\u7528 Rust \u91cd\u5199\u4e86\u5bf9\u8c61\u5b58\u50a8\u7684\u6838\u5fc3\uff0c\u51ed\u501f\u65e0 GC \u505c\u987f\u3001\u7f16\u8bd1\u671f\u5185\u5b58\u5b89\u5168\u7684\u7279\u6027\uff0c\u63d0\u4f9b\u4e86\u6781\u9ad8\u7684\u5e76\u53d1\u6027\u80fd\u548c\u6781\u4f4e\u7684\u5ef6\u8fdf\uff0c\u4ee5\u53ca\u826f\u597d\u7684\u793e\u533a\u8fd0\u8425\uff0c\u8fc5\u901f\u6210\u4e3a\u66ff\u4ee3 MinIO \u7684\u4f18\u79c0\u6807\u6746\u3002</p>\n<p>\u4f46\u65e0\u8bba\u662f MinIO \u8fd8\u662f RustFS \uff0c\u5b83\u4eec\u672c\u8d28\u4e0a\u90fd\u662f\u72ec\u7acb\u7684\u5bf9\u8c61\u5b58\u50a8\u7cfb\u7edf\u3002 \u6570\u636e\u4e00\u65e6\u5199\u5165\uff0c\u5c31\u4f1a\u88ab\u7cfb\u7edf\u63a5\u7ba1\uff0c\u8f6c\u5316\u4e3a\u5185\u90e8\u683c\u5f0f\u548c\u5206\u7247\u76ee\u5f55\u3002\u8fd9\u5728\u6784\u5efa\u5927\u89c4\u6a21\u4f01\u4e1a\u7ea7\u96c6\u7fa4\u65f6\u4f18\u52bf\u660e\u663e\uff0c\u4f46\u5728\u4e2a\u4eba\u4f7f\u7528\u3001\u8f7b\u91cf\u7ea7\u5f00\u53d1\u6216\u672c\u5730 AI \u8c03\u8bd5\u573a\u666f\u4e2d\uff0c\u5374\u5e26\u6765\u4e00\u79cd\u5272\u88c2\u7684\u4f53\u9a8c\u2014\u2014\u4f60\u65e0\u6cd5\u7528 ls \u76f4\u63a5\u67e5\u770b\u6587\u4ef6\u5206\u5e03\uff0c\u65e0\u6cd5\u7528 grep \u5feb\u901f\u68c0\u7d22\u65e5\u5fd7\uff0c\u65e0\u6cd5\u7528 rsync \u76f4\u63a5\u8fc1\u79fb\u6570\u636e\u3002</p>\n<p>\u5927\u5bb6\u5728\u4f7f\u7528\u4e00\u4e9b\u7b80\u5355\u7684\u7f51\u7edc\u5b58\u50a8\u7ec4\u4ef6\u65f6\u53ef\u80fd\u4f1a\u9762\u4e34\u4e00\u4e2a\u77db\u76fe\uff1a<strong>\u65e2\u9700\u8981\u6807\u51c6 S3 \u63a5\u53e3\u517c\u5bb9\u73b0\u4ee3\u5de5\u5177\u94fe\uff0c\u53c8\u9700\u8981\u6570\u636e\u4ee5\u666e\u901a\u6587\u4ef6\u5f62\u5f0f\u5b58\u5728\uff0c\u4ee5\u4fbf\u4f7f\u7528 <code>ls</code>\u3001<code>grep</code>\u3001<code>rsync</code> \u7b49 Linux \u5de5\u5177\u76f4\u63a5\u5904\u7406\u3002</strong></p>\n<p><strong>\u5178\u578b\u573a\u666f\uff1a</strong></p>\n<ul>\n<li><strong>AI \u8bad\u7ec3\u4e0e\u63a8\u7406</strong>\uff1a\u6846\u67b6\u6216\u5468\u8fb9\u5de5\u5177\u901a\u8fc7 <code>s3://</code> \u52a0\u8f7d\u6a21\u578b\u4e0e\u6570\u636e\u96c6\uff0c\u5de5\u7a0b\u5e08\u7528\u672c\u5730\u5de5\u5177\u68c0\u67e5\u5360\u7528\u6216\u8c03\u8bd5\u914d\u7f6e\u3002</li>\n<li><strong>\u65e5\u5fd7\u4e0e\u5907\u4efd</strong>\uff1a\u4e1a\u52a1\u7a0b\u5e8f\u901a\u8fc7 S3 SDK \u5199\u5165\uff0c\u8fd0\u7ef4\u4eba\u5458\u7528\u672c\u5730\u5de5\u5177\u6392\u67e5\u548c\u5206\u53d1\u3002</li>\n<li><strong>\u8f7b\u91cf\u5f00\u53d1\u4e0e\u4e2a\u4eba NAS</strong>\uff1a\u76f4\u63a5\u590d\u7528\u73b0\u6709\u76ee\u5f55\uff0c\u65e0\u9700\u90e8\u7f72\u72ec\u7acb\u5bf9\u8c61\u5b58\u50a8\uff1b\u6570\u636e\u53ef\u968f\u65f6\u901a\u8fc7 <code>tar</code> \u6216 <code>rsync</code> \u8fc1\u79fb\u3002</li>\n</ul>\n<p><strong>\u5e38\u89c1\u65b9\u6848\u7684\u5c40\u9650\uff1a</strong></p>\n<ul>\n<li><strong>MinIO \u7b49\u5bf9\u8c61\u5b58\u50a8</strong>\uff1a\u63d0\u4f9b S3 \u63a5\u53e3\uff0c\u4f46\u6570\u636e\u76ee\u5f55\u7531\u670d\u52a1\u81ea\u8eab\u7ba1\u7406\uff0c\u4e0d\u9002\u5408\u7ed5\u8fc7\u670d\u52a1\u76f4\u63a5\u8bfb\u5199\u3002</li>\n<li><strong>HTTP / FTP</strong>\uff1a\u53ef\u76f4\u63a5\u8bbf\u95ee\u6587\u4ef6\uff0c\u4f46\u7f3a\u5c11 SigV4 \u9274\u6743\u3001Multipart Upload \u7b49 S3 \u8bed\u4e49\u3002</li>\n<li><strong>NFS / SMB</strong>\uff1a\u4fdd\u7559\u6587\u4ef6\u8bbf\u95ee\u65b9\u5f0f\uff0c\u4f46\u65e0\u6cd5\u4e3a\u53ea\u652f\u6301 S3 \u7684\u5e94\u7528\u63d0\u4f9b\u5165\u53e3\u3002</li>\n</ul>\n<h2>FluxonFS \u7684\u89e3\u51b3\u601d\u8def\uff1a\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4f5c\u4e3a\u771f\u76f8\u6e90\uff0cFluxon \u4ec5\u4f5c\u63a5\u53e3\u8f6c\u6362\u548c\u7f13\u5b58\u52a0\u901f</h2>\n<p>\u9488\u5bf9\u4e0a\u8ff0\u5c40\u9650\uff0c\u9700\u8981\u4e00\u79cd\u65e2\u63d0\u4f9b\u6807\u51c6 S3 \u63a5\u53e3\uff0c\u53c8\u4e0d\u63a5\u7ba1\u6570\u636e\u7ba1\u7406\u3001\u4ecd\u5141\u8bb8\u76f4\u63a5\u64cd\u4f5c\u5e95\u5c42\u6587\u4ef6\u7684\u65b9\u6848\u3002\u5728\u7edf\u4e00\u6570\u636e\u8bbf\u95ee\u4e0e\u7f13\u5b58\u52a0\u901f\u9886\u57df\uff0cAlluxio \u662f\u8fd9\u4e00\u7406\u5ff5\u7684\u5f00\u521b\u8005\u4e4b\u4e00\uff1a\u5b83\u8bc1\u660e\u4e86\u901a\u8fc7\u7edf\u4e00\u63a5\u53e3\u5c42\u548c\u667a\u80fd\u7f13\u5b58\uff0c\u53ef\u4ee5\u6709\u6548\u89e3\u8026\u4e0a\u5c42\u5e94\u7528\u4e0e\u5e95\u5c42\u5b58\u50a8\u3002</p>\n<p>\u56f4\u7ed5\u201c\u534f\u8bae\u8f6c\u6362 + \u8bbf\u95ee\u52a0\u901f\u201d\uff0c\u4e1a\u754c\u957f\u671f\u5b58\u5728\u591a\u6761\u6280\u672f\u8def\u5f84\uff1aNFS \u3001SMB \u5c06\u8fdc\u7a0b\u6587\u4ef6\u7cfb\u7edf\u66b4\u9732\u7ed9\u672c\u5730\u5ba2\u6237\u7aef\uff1b s3fs \u7b49 FUSE \u5de5\u5177\u628a\u8fdc\u7a0b S3 bucket \u6302\u8f7d\u4e3a\u672c\u5730\u76ee\u5f55\uff1b Ceph \u3001JuiceFS \u7b49\u5b58\u50a8\u7cfb\u7edf\u901a\u8fc7\u81ea\u8eab\u7684\u6570\u636e\u4e0e\u5143\u6570\u636e\u5c42\u63d0\u4f9b\u6587\u4ef6\u548c S3 \u7b49\u591a\u79cd\u8bbf\u95ee\u63a5\u53e3\uff1b RustFS \u7b49\u5bf9\u8c61\u5b58\u50a8\u5219\u4e13\u6ce8\u4e8e\u63d0\u4f9b\u9ad8\u6027\u80fd\u7684 S3 \u517c\u5bb9\u5165\u53e3\u3002\u5b83\u4eec\u89e3\u51b3\u7684\u95ee\u9898\u76f8\u8fd1\uff0c\u4f46\u6620\u5c04\u65b9\u5411\u548c\u6743\u5a01\u6570\u636e\u6e90\u4e0d\u540c\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u6280\u672f\u8def\u5f84</th>\n<th>\u5178\u578b\u65b9\u6848</th>\n<th>\u6743\u5a01\u6570\u636e\u6e90</th>\n<th>\u4e3b\u8981\u7279\u70b9</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\u8fdc\u7a0b\u6587\u4ef6\u7cfb\u7edf \u2192 \u672c\u5730\u6587\u4ef6\u63a5\u53e3</td>\n<td>NFS \u3001SMB</td>\n<td>\u8fdc\u7a0b\u6587\u4ef6\u7cfb\u7edf</td>\n<td>\u63d0\u4f9b\u6587\u4ef6\u8bed\u4e49\uff0c\u4f46\u4e0d\u80fd\u76f4\u63a5\u6ee1\u8db3\u53ea\u652f\u6301 S3 \u7684\u5e94\u7528</td>\n</tr>\n<tr>\n<td>S3 \u5bf9\u8c61\u5b58\u50a8 \u2192 \u672c\u5730\u6587\u4ef6\u63a5\u53e3</td>\n<td>s3fs</td>\n<td>S3 \u5bf9\u8c61\u5b58\u50a8</td>\n<td>\u901a\u8fc7 FUSE \u6a21\u62df\u6587\u4ef6\u8bbf\u95ee\uff0c\u5e95\u5c42\u5bf9\u8c61\u5b58\u50a8\u4ecd\u662f\u771f\u76f8\u6e90</td>\n</tr>\n<tr>\n<td>\u81ea\u6709\u5b58\u50a8\u7cfb\u7edf \u2192 \u591a\u534f\u8bae\u63a5\u53e3</td>\n<td>Ceph \u3001JuiceFS</td>\n<td>\u7cfb\u7edf\u81ea\u8eab\u7684\u6570\u636e\u4e0e\u5143\u6570\u636e\u5c42</td>\n<td>\u540c\u65f6\u63d0\u4f9b\u6587\u4ef6\u548c\u5bf9\u8c61\u5165\u53e3\uff0c\u4f46\u6570\u636e\u7531\u8be5\u5b58\u50a8\u7cfb\u7edf\u7ba1\u7406</td>\n</tr>\n<tr>\n<td>\u81ea\u6709\u5bf9\u8c61\u5b58\u50a8 \u2192 S3 \u63a5\u53e3</td>\n<td>MinIO \u3001RustFS</td>\n<td>\u5bf9\u8c61\u5b58\u50a8\u81ea\u8eab</td>\n<td>\u63d0\u4f9b\u539f\u751f S3 \u670d\u52a1\uff0c\u4f46\u4e0d\u4ee5\u73b0\u6709\u666e\u901a\u76ee\u5f55\u4f5c\u4e3a\u6743\u5a01\u6570\u636e\u6e90</td>\n</tr>\n<tr>\n<td>\u73b0\u6709\u672c\u5730\u76ee\u5f55 \u2192 \u591a\u534f\u8bae\u63a5\u53e3</td>\n<td>Alluxio \u3001FluxonFS</td>\n<td>\u672c\u5730\u666e\u901a\u6587\u4ef6</td>\n<td>\u65e0\u9700\u8fc1\u79fb\u6216\u8f6c\u6362\u6570\u636e\uff0c\u589e\u52a0\u591a\u534f\u8bae\u5165\u53e3\u5e76\u590d\u7528\u7f13\u5b58\u3001\u5171\u4eab\u5185\u5b58\u548c RDMA \u80fd\u529b</td>\n</tr>\n</tbody></table><p>FluxonFS \u5c5e\u4e8e\u4e0a\u8868\u7b2c\u4e94\u7c7b\uff1a\u5b83\u76f4\u63a5\u53e0\u52a0\u5728\u73b0\u6709\u672c\u5730\u76ee\u5f55\u4e4b\u4e0a\uff0c\u4e0d\u8981\u6c42\u6570\u636e\u8fc1\u79fb\u5230\u65b0\u7684\u5b58\u50a8\u683c\u5f0f\u3002<strong>\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u59cb\u7ec8\u662f\u552f\u4e00\u6743\u5a01\u6570\u636e\u6e90\uff08 Single Source of Truth \uff09</strong>\uff1b FluxonFS \u4e0d\u63a5\u7ba1\u6570\u636e\u7ba1\u7406\uff0c\u53ea\u5728\u5176\u4e0a\u63d0\u4f9b\u591a\u534f\u8bae\u8bbf\u95ee\u4e0e\u7f13\u5b58\u52a0\u901f\u3002\u672c\u6587\u805a\u7126\u5176\u4e2d\u7684\u6807\u51c6 S3 \u63a5\u53e3\u3002</p>\n<p>\u5728\u6b64\u57fa\u7840\u4e0a\uff0cFluxonFS \u590d\u7528 Fluxon \u5e95\u5c42\u7684 KV \u7f13\u5b58\u3001\u5171\u4eab\u5185\u5b58\u548c RDMA \u6570\u636e\u901a\u8def\uff0c\u5728\u4fdd\u6301\u6570\u636e\u5f52\u5c5e\u4e0d\u53d8\u7684\u540c\u65f6\uff0c\u52a0\u901f\u70ed\u70b9\u5bf9\u8c61\u548c\u8de8\u8282\u70b9\u8bbf\u95ee\u3002</p>\n<p>FluxonFS \u4e0d\u4f1a\u63a5\u7ba1\u3001\u5c01\u88c5\u6216\u9690\u85cf\u6570\u636e\uff0c\u800c\u662f\u76f4\u63a5\u53e0\u52a0\u5728\u73b0\u6709\u672c\u5730\u76ee\u5f55\u4e4b\u4e0a\uff1a</p>\n<ul>\n<li><strong>\u63a5\u53e3\u8f6c\u6362</strong>\uff1a\u5904\u7406 SigV4 \u9274\u6743\u3001Multipart Upload \u7b49 S3 \u8bed\u4e49\uff0c\u5e76\u5c06 S3 \u8bf7\u6c42\u5b9e\u65f6\u8f6c\u6362\u4e3a\u5bf9\u672c\u5730\u6587\u4ef6\u7684 POSIX \u8bfb\u5199\u3002</li>\n<li><strong>\u6743\u9650\u7ba1\u63a7</strong>\uff1a\u57fa\u4e8e S3 \u534f\u8bae\u9644\u52a0\u591a\u79df\u6237\u8eab\u4efd\u8ba4\u8bc1\u4e0e\u8bbf\u95ee\u6743\u9650\u7ba1\u7406\uff0c\u4e3a\u672c\u5730\u76ee\u5f55\u589e\u52a0\u7edf\u4e00\u7684\u670d\u52a1\u4fa7\u5b89\u5168\u8fb9\u754c\u3002</li>\n<li><strong>\u7f13\u5b58\u52a0\u901f</strong>\uff1a\u5229\u7528\u5185\u7f6e KV \u7f13\u5b58\u52a0\u901f\u70ed\u70b9\u6570\u636e\u8bbf\u95ee\uff1b\u7f13\u5b58\u4e0d\u53c2\u4e0e\u6743\u5a01\u6570\u636e\u7ba1\u7406\uff0c\u53ef\u968f\u65f6\u4e22\u5f03\u6216\u91cd\u5efa\u3002</li>\n<li><strong>\u9ad8\u6027\u80fd\u6570\u636e\u901a\u8def</strong>\uff1a\u590d\u7528 Fluxon \u5e95\u5c42\u7684 RDMA \u4e0e\u5171\u4eab\u5185\u5b58\u80fd\u529b\uff1b\u8282\u70b9\u5185\u901a\u8fc7\u5171\u4eab\u5185\u5b58\u51cf\u5c11\u6570\u636e\u590d\u5236\uff0c\u8282\u70b9\u95f4\u53ef\u901a\u8fc7 RDMA \u964d\u4f4e\u4f20\u8f93\u5f00\u9500\u3002</li>\n</ul>\n<p>\u8fd9\u610f\u5473\u7740\uff1a</p>\n<ul>\n<li><strong>\u5bf9 S3 \u5ba2\u6237\u7aef</strong>\uff1a\u770b\u5230\u7684\u662f\u6807\u51c6\u7684 <code>s3://</code> bucket \uff0c\u53ef\u4ee5\u6b63\u5e38\u4e0a\u4f20\u3001\u4e0b\u8f7d\u548c\u5217\u4e3e\u5bf9\u8c61\u3002</li>\n<li><strong>\u5bf9\u672c\u5730\u7528\u6237</strong>\uff1a\u6570\u636e\u59cb\u7ec8\u4ee5\u666e\u901a\u6587\u4ef6\u5f62\u5f0f\u4fdd\u5b58\u5728\u78c1\u76d8\u4e0a\uff0c\u53ef\u4ee5\u968f\u65f6\u4f7f\u7528 <code>ls</code>\u3001<code>grep</code>\u3001<code>rsync</code> \u7b49 Linux \u5de5\u5177\u76f4\u63a5\u64cd\u4f5c\u3002</li>\n</ul>\n<p>\u8fd9\u79cd\u8bbe\u8ba1\u5b9e\u73b0\u4e86\u96f6\u6570\u636e\u8fc1\u79fb\u4e0e\u53cc\u5411\u900f\u660e\uff0c\u9002\u5408\u73b0\u4ee3 AI \u5de5\u4f5c\u6d41\u548c\u8f7b\u91cf\u7ea7\u8fd0\u7ef4\u573a\u666f\u3002</p>\n<h2>FluxonFS S3 \u8bfb\u5199\u6027\u80fd</h2>\n<p>\u4e0b\u9762\u662f\u5728\u540c\u4e00\u53f0\u5f00\u53d1\u673a\u4e0a\uff0c\u4f7f\u7528 <code>rclone v1.60.1</code> \u5bf9 FluxonFS S3 \u548c Alluxio S3 Proxy \u8fdb\u884c\u7684\u5355\u673a\u5bf9\u6bd4\u3002\u4e24\u5957\u670d\u52a1\u5747\u91cd\u590d\u6267\u884c 3 \u6b21\uff1b\u5171\u5b8c\u6210 162 \u4e2a\u6d4b\u8bd5\u6848\u4f8b\uff0c\u6587\u4ef6\u5185\u5bb9\u3001\u5b9e\u9645\u78c1\u76d8\u8bfb\u5199\u5b57\u8282\u548c\u5e72\u6270\u68c0\u67e5\u5168\u90e8\u901a\u8fc7\u3002</p>\n<ul>\n<li><strong>\u6d4b\u8bd5\u89c4\u6a21</strong>\uff1a2,000 \u00d7 4 KiB \u3001256 \u00d7 1 MiB \u300132 \u00d7 256 MiB \uff08\u5171 8 GiB \uff09\uff0c\u5e76\u53d1\u4e3a 1 \u30018 \u300132 \uff0c\u6bcf\u7ec4\u8fd0\u884c 3 \u8f6e\u3002</li>\n<li><strong>\u6301\u4e45\u5316 PUT</strong>\uff1a\u6e90\u6587\u4ef6\u4f4d\u4e8e <code>/dev/shm</code>\uff1b\u8ba1\u65f6\u5305\u542b\u4e0a\u4f20\u548c\u76ee\u6807 NVMe \u6587\u4ef6\u7cfb\u7edf\u7684 <code>syncfs</code>\uff0c\u4e0d\u53ea\u7edf\u8ba1 HTTP \u8fd4\u56de\u65f6\u95f4\u3002</li>\n<li><strong>\u51b7\u8bfb</strong>\uff1a\u6570\u636e\u4ece NVMe \u8bfb\u53d6\u5230 <code>/dev/shm</code>\uff1b\u6bcf\u7ec4\u5f00\u59cb\u524d\u91cd\u542f\u670d\u52a1\u5e76\u901a\u8fc7 <code>POSIX_FADV_DONTNEED</code> \u9a71\u9010\u6587\u4ef6\u9875\u7f13\u5b58\uff0cFluxonFS \u5173\u95ed\u5f02\u6b65\u7f13\u5b58\u56de\u586b\uff0cAlluxio \u4f7f\u7528 <code>NO_CACHE</code>\u3002</li>\n<li><strong>\u70ed\u8bfb</strong>\uff1a\u4e24\u5957\u670d\u52a1\u7684\u5e94\u7528\u5c42\u5185\u5b58\u7f13\u5b58\u4e0a\u9650\u5747\u8bbe\u4e3a 64 GiB \uff0c\u5b9e\u9645\u8f7d\u5165\u7ea6 8.26 GiB \u6d4b\u8bd5\u6570\u636e\u3002\u5148\u5c06\u6570\u636e\u5b8c\u6574\u8f7d\u5165 Fluxon KV shared memory \u6216 Alluxio Worker MEM \uff0c\u5e76\u5b8c\u6210\u4e00\u6b21\u4e0d\u8ba1\u65f6\u7684 S3 GET \uff1b\u968f\u540e\u4ec5\u9a71\u9010\u5e95\u5c42 NVMe \u6587\u4ef6\u7684 Linux \u9875\u7f13\u5b58\uff0c\u4e0d\u6e05\u9664\u4e0a\u8ff0\u5e94\u7528\u7f13\u5b58\u3002\u8ba1\u65f6\u671f\u95f4\u8981\u6c42\u540e\u7aef NVMe \u8bfb\u53d6\u91cf\u4e3a 0 \u3002</li>\n</ul>\n<p>\u56fe\u4e2d\u7684\u67f1\u9ad8\u4e3a\u4e09\u8f6e\u7b97\u672f\u5747\u503c\u30024 KiB \u5c0f\u6587\u4ef6\u4f7f\u7528 <code>objects/s</code>\uff0c1 MiB \u548c 256 MiB \u6587\u4ef6\u4f7f\u7528 <code>MiB/s</code>\uff1b\u5404\u6587\u4ef6\u5927\u5c0f\u9762\u677f\u91c7\u7528\u72ec\u7acb\u7eb5\u8f74\uff0c\u51b7\u8bfb\u4e0e\u70ed\u8bfb\u5728\u540c\u4e00\u9762\u677f\u5185\u5171\u7528\u7eb5\u8f74\u3002</p>\n<h3>\u6301\u4e45\u5316 PUT \u3001\u51b7\u8bfb\u4e0e\u70ed\u8bfb\u6c47\u603b\u56fe</h3>\n<p><img alt=\"FluxonFS S3 \u4e0e Alluxio S3 Proxy \u6301\u4e45\u5316 PUT \u3001\u51b7\u8bfb\u548c\u70ed\u8bfb\u6027\u80fd\u6c47\u603b\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://picui.ogmua.cn/s1/2026/08/10/6a795fa054639.webp\"/></p>\n<p><em>\u56fe\u6ce8\uff1a\u7b2c\u4e00\u884c\u662f\u6301\u4e45\u5316 PUT \uff1b\u7b2c\u4e8c\u884c\u5728\u540c\u4e00\u7eb5\u8f74\u5185\u5408\u5e76\u51b7\u8bfb\u548c\u70ed\u8bfb\u3002\u6bcf\u4e2a\u5e76\u53d1\u6863\u4f4d\u4f9d\u6b21\u6392\u5217 FluxonFS \u51b7\u8bfb\u3001Alluxio \u51b7\u8bfb\u3001FluxonFS \u70ed\u8bfb\u3001Alluxio \u70ed\u8bfb\uff1b\u4e0b\u65b9\u767e\u5206\u6bd4\u4e2d\uff0c\u7eff\u8272\u8868\u793a FluxonFS \u9886\u5148\uff0c\u7ea2\u8272\u8868\u793a FluxonFS \u843d\u540e\u3002</em></p>\n<h3>\u6d4b\u8bd5\u7ed3\u679c\u7ed3\u8bba</h3>\n<ol>\n<li><strong>FluxonFS \u5728\u6301\u4e45\u5316 PUT \u4e0e\u51b7\u8bfb\u7684\u5168\u90e8 18 \u7ec4\u7ec4\u5408\u4e2d\u5747\u5feb\u4e8e Alluxio \u3002</strong> \u6301\u4e45\u5316 PUT \u7684\u9886\u5148\u5e45\u5ea6\u4e3a 36%\uff5e 726%\uff0c\u51b7\u8bfb\u7684\u9886\u5148\u5e45\u5ea6\u4e3a 7%\uff5e 661%\u3002</li>\n<li><strong>\u5c0f\u6587\u4ef6\u548c\u4e2d\u6587\u4ef6\u5728\u5e76\u53d1\u8bbf\u95ee\u4e0b\u6536\u76ca\u6700\u660e\u663e\u3002</strong> 4 KiB \u51b7\u8bfb\u5728\u5e76\u53d1 1 \u30018 \u300132 \u4e0b\u5206\u522b\u8fbe\u5230 605 \u30013,539 \u548c 4,259 objects/s \uff1b 1 MiB \u51b7\u8bfb\u5728\u5e76\u53d1 32 \u4e0b\u8fbe\u5230 1,145 MiB/s \uff0c\u7ea6\u4e3a Alluxio \u7684 7.6 \u500d\u3002</li>\n<li><strong>\u5927\u6587\u4ef6\u51b7\u8bfb\u66f4\u63a5\u8fd1\u5e95\u5c42 NVMe \u541e\u5410\u4e0a\u9650\u3002</strong> FluxonFS \u5728\u5e76\u53d1 1 \u30018 \u300132 \u4e0b\u5206\u522b\u9886\u5148\u7ea6 7%\u300119% \u548c 42%\uff1b\u4f18\u52bf\u4ecd\u7136\u5b58\u5728\uff0c\u4f46\u4e0d\u50cf\u5c0f\u6587\u4ef6\u548c\u4e2d\u6587\u4ef6\u90a3\u6837\u663e\u8457\u3002</li>\n<li><strong>\u70ed\u8bfb\u4e2d\uff0c\u5c0f\u6587\u4ef6\u9ad8\u5e76\u53d1\u4f18\u52bf\u6700\u660e\u663e\uff0c\u4e2d\u5927\u6587\u4ef6\u6574\u4f53\u63a5\u8fd1\u3002</strong> FluxonFS \u7684 4 KiB \u5bf9\u8c61\u541e\u5410\u9886\u5148\u7ea6 8%\uff5e 43%\uff1b 1 MiB \u5728\u5e76\u53d1 8 \u65f6\u9886\u5148\u7ea6 19%\uff0c\u5e76\u53d1 1 \u548c 32 \u65f6\u4e0e Alluxio \u76f8\u5dee\u4e0d\u8db3 1%\uff1b 256 MiB \u5728\u4e09\u79cd\u5e76\u53d1\u4e0b\u7684\u5dee\u5f02\u4e0d\u8d85\u8fc7\u7ea6 1.2%\u3002</li>\n</ol>\n<h2>\u76ee\u5f55\u3001\u5bf9\u8c61\u4e0e\u7f13\u5b58\u5982\u4f55\u5bf9\u5e94</h2>\n<p>\u4e0a\u8ff0\u8bbe\u8ba1\u901a\u8fc7 FluxonFS \u7684 <code>export</code> \u6a21\u5f0f\u843d\u5730\uff1a<code>export_name</code> \u5bf9\u5e94 bucket \uff0c\u5bfc\u51fa\u6839\u76ee\u5f55\u4e0b\u7684\u76f8\u5bf9\u8def\u5f84\u5bf9\u5e94 object key \u3002</p>\n<table>\n<thead>\n<tr>\n<th>FluxonFS \u6982\u5ff5</th>\n<th>S3 \u6982\u5ff5</th>\n<th>\u672c\u5730\u6587\u4ef6\u7cfb\u7edf</th>\n<th>\u53cc\u5411\u884c\u4e3a</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>export_name</code></td>\n<td>bucket</td>\n<td>\u5bfc\u51fa\u76ee\u5f55\u7684\u5bf9\u5916\u540d\u79f0</td>\n<td>\u9884\u5148\u58f0\u660e\u7684 export \u4f5c\u4e3a bucket \u66b4\u9732</td>\n</tr>\n<tr>\n<td><code>remote_root_dir_abs</code></td>\n<td>bucket \u6839\u8def\u5f84</td>\n<td>\u771f\u5b9e\u6587\u4ef6\u6240\u5728\u7684\u7edd\u5bf9\u76ee\u5f55</td>\n<td>\u4f5c\u4e3a\u6743\u5a01\u6570\u636e\u6e90\uff0c\u8bfb\u5199\u6700\u7ec8\u4f5c\u7528\u4e8e\u6b64</td>\n</tr>\n<tr>\n<td><code>relpath</code></td>\n<td>object key</td>\n<td>\u6839\u76ee\u5f55\u4e0b\u7684\u76f8\u5bf9\u8def\u5f84</td>\n<td>S3 \u5199\u5165\u751f\u6210\u771f\u5b9e\u6587\u4ef6\uff1b\u672c\u5730\u6587\u4ef6\u53ef\u7531 S3 \u8bfb\u53d6</td>\n</tr>\n<tr>\n<td><code>username</code> / <code>password</code></td>\n<td>Access Key ID / Secret Access Key</td>\n<td>FluxonFS \u7528\u6237\u51ed\u636e</td>\n<td>\u7528\u4e8e\u6807\u51c6 SigV4 \u9274\u6743</td>\n</tr>\n</tbody></table><p><code>serve_s3_single_node</code> \u9ed8\u8ba4\u4f7f\u7528\u4ee5\u4e0b\u6620\u5c04\uff1a</p>\n<pre><code class=\"language-text\">export_name = quick-start-export\nremote_root_dir_abs = /data\n\ns3://quick-start-export/llama/model.safetensors\n                                 \u21c5\n/data/llama/model.safetensors\n</code></pre>\n<p><code>quick-start-export</code> \u662f\u56fa\u5b9a bucket \u540d\u79f0\uff0c\u4e0d\u4ece\u76ee\u5f55\u540d\u63a8\u5bfc\u3002\u73b0\u6709\u6570\u636e\u65e0\u9700\u5bfc\u5165\uff0c\u672c\u5730\u5de5\u5177\u4e0e S3 \u5ba2\u6237\u7aef\u76f4\u63a5\u64cd\u4f5c\u540c\u4e00\u6279\u6587\u4ef6\u3002</p>\n<h2>\u542f\u52a8\uff1aLinux \u811a\u672c\u4e0e Docker \u4e24\u79cd\u8def\u5f84</h2>\n<p>\u4ee5\u4e0b\u4e24\u79cd\u65b9\u5f0f\u542f\u52a8\u540c\u4e00\u5957\u670d\u52a1\uff0c\u5c06\u6307\u5b9a\u76ee\u5f55\u66b4\u9732\u4e3a <code>quick-start-export</code> bucket \u3002S3 endpoint \u4e3a <code>http://127.0.0.1:26180/fs_s3</code>\u3002</p>\n<h3>\u524d\u7f6e\uff1a\u7528 Docker \u542f\u52a8\u4e2d\u95f4\u4ef6</h3>\n<p>\u65b9\u5f0f A \u548c\u65b9\u5f0f B \u90fd\u590d\u7528\u540c\u4e00\u7ec4\u5916\u90e8\u4e2d\u95f4\u4ef6\uff1aetcd \u8d1f\u8d23\u63a7\u5236\u9762\u5143\u6570\u636e\uff0cGreptimeDB \u8d1f\u8d23\u76d1\u63a7\u6570\u636e\u3002\u4e0b\u9762\u7684\u547d\u4ee4\u4f7f\u7528 Docker named volume \u6301\u4e45\u5316\u6570\u636e\uff0c\u5728 Linux Shell \u548c PowerShell \u4e2d\u90fd\u53ef\u9010\u884c\u6267\u884c\uff1a</p>\n<pre><code class=\"language-bash\">docker volume create fluxon-s3-etcd\ndocker volume create fluxon-s3-greptime\ndocker run -d --name fluxon-s3-etcd --restart unless-stopped -p 22379:2379 -v fluxon-s3-etcd:/etcd-data quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd --data-dir /etcd-data --name etcd0 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-state new\ndocker run -d --name fluxon-s3-greptime --restart unless-stopped -p 24000:4000 -v fluxon-s3-greptime:/greptimedb greptime/greptimedb:v0.15.1 standalone start --data-home /greptimedb --http-addr 0.0.0.0:4000 --rpc-bind-addr 127.0.0.1:4001 --mysql-addr 127.0.0.1:4002 --postgres-addr 127.0.0.1:4003\n</code></pre>\n<p>\u786e\u8ba4\u4e24\u4e2a\u5bb9\u5668\u5747\u4e3a <code>Up</code>\uff1a</p>\n<pre><code class=\"language-bash\">docker ps --filter name=fluxon-s3-etcd --filter name=fluxon-s3-greptime\n</code></pre>\n<p>\u8fd9\u4e24\u4e2a\u7aef\u53e3\u6ca1\u6709\u914d\u7f6e\u9274\u6743\uff0c\u53ea\u5e94\u5728\u672c\u673a\u6216\u53d7\u4fe1\u7f51\u7edc\u4e2d\u5f00\u653e\u3002\u5df2\u6709\u53ef\u7528\u7684 etcd \u548c GreptimeDB \u65f6\uff0c\u53ef\u4ee5\u8df3\u8fc7\u672c\u8282\u5e76\u66ff\u6362\u540e\u6587\u5730\u5740\u3002</p>\n<h3>\u65b9\u5f0f A\uff1aLinux \uff08 pip \uff09</h3>\n<p>Linux x86_64 \u9700\u8981 Python 3.10 \u6216\u66f4\u9ad8\u7248\u672c\u3002\u5b89\u88c5 Fluxon\uff1a</p>\n<pre><code class=\"language-bash\">python3 -m pip install --upgrade fluxon-py\n</code></pre>\n<p>\u65b0\u5efa <code><a href=\"http://serve_s3_single_node.py\" rel=\"nofollow\">serve_s3_single_node.py</a></code>\uff1a</p>\n<pre><code class=\"language-python\">from fluxon_py.quick_start import serve_s3_single_node\n\nkv_master_config = {\n    \"etcd_endpoints\": [\"127.0.0.1:22379\"],\n    \"cluster_name\": \"fluxon_s3\",\n    \"instance_key\": \"fluxon_s3_master\",\n    \"network\": {\n        \"tcp_reactor_mode\": \"event_driven\",\n    },\n    \"port\": 25100,\n    \"log_dir\": \"/path/to/state/kv-master/log\",\n    \"monitoring\": {\n        \"prometheus_base_url\": \"http://127.0.0.1:24000/v1/prometheus\",\n        \"prom_remote_write_url\": [\"http://127.0.0.1:24000/v1/prometheus/write\"],\n        \"otlp_log_api\": {\n            \"otlp_endpoint\": \"http://127.0.0.1:24000/v1/otlp/v1/logs\",\n            \"db_name\": \"public\",\n            \"table_name\": \"fluxon_logs\",\n        },\n    },\n}\n\nkv_owner_config = {\n    \"instance_key\": \"fluxon_s3_owner\",\n    \"network\": {\n        \"tcp_reactor_mode\": \"event_driven\",\n    },\n    \"contribute_to_cluster_pool_size\": {\"dram\": 1073741824, \"vram\": {}},\n    \"fluxonkv_spec\": {\n        \"etcd_addresses\": [\"127.0.0.1:22379\"],\n        \"cluster_name\": \"fluxon_s3\",\n        \"share_mem_path\": \"/dev/shm/fluxon-s3\",\n        \"sub_cluster\": \"default\",\n        \"large_file_paths\": [\"/path/to/state/kv-owner/large\"],\n    },\n}\n\nserve_s3_single_node(\n    \"/path/to/data\",  # \u8981\u66b4\u9732\u4e3a S3 \u7684\u672c\u5730\u6570\u636e\u76ee\u5f55\n    \"/path/to/state\",  # Fluxon \u6301\u4e45\u72b6\u6001\u76ee\u5f55\n    kv_master_config=kv_master_config,  # KV master \u914d\u7f6e\n    kv_owner_config=kv_owner_config,  # KV owner \u914d\u7f6e\n    export_name=\"quick-start-export\",  # S3 bucket \u540d\u79f0\n    start_middleware=False,  # \u590d\u7528\u5916\u90e8 etcd \u548c GreptimeDB\n    greptime_base_url=\"http://127.0.0.1:24000\",  # GreptimeDB \u5730\u5740\n)\n</code></pre>\n<p>\u672c\u6587\u7684\u5355\u673a Quick Start \u5728 KV master \u548c owner \u4e24\u4e2a\u8fdb\u7a0b\u4e2d\u90fd\u663e\u5f0f\u4f7f\u7528 <code>event_driven</code> \u6a21\u5f0f\uff0c\u4ee5\u964d\u4f4e\u7a7a\u95f2 CPU \u5360\u7528\uff1b Quick Start \u5185\u90e8\u542f\u52a8\u7684 zero-contribution external KV client \u4e5f\u9ed8\u8ba4\u4f7f\u7528 <code>event_driven</code>\u3002owner \u548c master \u8fd9\u4e24\u7c7b\u670d\u52a1\u5668\u8fdb\u7a0b\u5728\u672a\u914d\u7f6e\u65f6\u9ed8\u8ba4\u4f7f\u7528 <code>busy_poll</code>\uff0c\u4ee5\u6700\u5c0f\u5316\u7f51\u7edc\u4e8b\u4ef6\u5524\u9192\u548c\u7ebf\u7a0b\u8c03\u5ea6\u5ef6\u8fdf\uff0c\u4f46\u4f1a\u5360\u7528\u66f4\u591a CPU \u3002\u8be5\u9009\u9879\u662f\u8fdb\u7a0b\u7ea7\u914d\u7f6e\uff0cmaster \u548c owner \u9700\u8981\u5206\u522b\u8bbe\u7f6e\u3002</p>\n<p>\u8fd0\u884c\uff1a</p>\n<pre><code class=\"language-bash\">python3 serve_s3_single_node.py\n</code></pre>\n<p><code>export_name</code> \u662f\u5bf9\u5916\u66b4\u9732\u7684 bucket \u540d\u79f0\u3002<code>serve_s3_single_node</code> \u76f4\u63a5\u4f7f\u7528\u4e24\u4efd KV runtime \u914d\u7f6e\uff0c\u5e76\u590d\u7528\u524d\u7f6e\u6b65\u9aa4\u542f\u52a8\u7684 etcd \u548c GreptimeDB \u3002\u670d\u52a1\u5728\u524d\u53f0\u8fd0\u884c\uff0c\u6309 <code>Ctrl-C</code> \u505c\u6b62\u3002</p>\n<p><strong>\u8def\u5f84\u4f5c\u7528\uff1a</strong></p>\n<ul>\n<li><code>/path/to/data</code>\uff1aexport \u6743\u5a01\u6570\u636e\u76ee\u5f55\u3002</li>\n<li><code>/path/to/state</code>\uff1aFluxon \u6301\u4e45\u72b6\u6001\u76ee\u5f55\uff0c\u5305\u542b KV \u65e5\u5fd7\u3001\u7f13\u5b58\u5927\u6587\u4ef6\u548c <code>fs_master/access.db</code>\u3002</li>\n<li><code>/dev/shm/fluxon-s3</code>\uff1aKV owner \u5171\u4eab\u533a\uff0c\u53ef\u91cd\u5efa\uff1b\u6bcf\u4e2a\u5b9e\u4f8b\u5e94\u4f7f\u7528\u72ec\u7acb\u8def\u5f84\u5e76\u9884\u7559\u8db3\u591f\u5bb9\u91cf\u3002</li>\n</ul>\n<h3>\u65b9\u5f0f B\uff1aDocker \u8fd0\u884c</h3>\n<p>\u4e5f\u53ef\u4ee5\u4f7f\u7528 Docker \u542f\u52a8\uff1b Windows \u5f53\u524d\u5fc5\u987b\u4f7f\u7528 Docker Desktop \u7684 Linux \u5bb9\u5668\u3002\u4ee5\u4e0b\u547d\u4ee4\u5728 PowerShell \u4e2d\u8fd0\u884c\uff0c\u521d\u59cb\u8d26\u53f7 <code>admin / admin</code> \u4ec5\u7528\u4e8e\u9996\u6b21\u8bbe\u7f6e\u3002</p>\n<p><strong>\u9996\u6b21\u521d\u59cb\u5316\u524d\u4e0d\u8981\u5bf9\u5176\u4ed6\u4e3b\u673a\u5f00\u653e <code>26180</code> \u7aef\u53e3\u3002</strong></p>\n<pre><code class=\"language-powershell\">docker run -d --name fluxon-s3 `\n  --restart unless-stopped `\n  -p 26180:26180 `\n  --shm-size 2g `\n  --add-host=host.docker.internal:host-gateway `\n  --mount \"type=bind,src=C:\\fluxon-s3\\data,dst=/data\" `\n  --mount \"type=bind,src=C:\\fluxon-s3\\state,dst=/state\" `\n  --entrypoint python3 `\n  \"hanbaoaaa/fluxon_quick_start:0.2.4\" `\n  -c \"\nfrom fluxon_py.quick_start import serve_s3_single_node\n\nkv_master_config = {\n    'etcd_endpoints': ['host.docker.internal:22379'],\n    'cluster_name': 'fluxon_s3',\n    'instance_key': 'fluxon_s3_master',\n    'network': {\n        'tcp_reactor_mode': 'event_driven',\n    },\n    'port': 25100,\n    'log_dir': '/state/kv-master/log',\n    'monitoring': {\n        'prometheus_base_url': 'http://host.docker.internal:24000/v1/prometheus',\n        'prom_remote_write_url': ['http://host.docker.internal:24000/v1/prometheus/write'],\n        'otlp_log_api': {\n            'otlp_endpoint': 'http://host.docker.internal:24000/v1/otlp/v1/logs',\n            'db_name': 'public',\n            'table_name': 'fluxon_logs',\n        },\n    },\n}\n\nkv_owner_config = {\n    'instance_key': 'fluxon_s3_owner',\n    'network': {\n        'tcp_reactor_mode': 'event_driven',\n    },\n    'contribute_to_cluster_pool_size': {'dram': 1073741824, 'vram': {}},\n    'fluxonkv_spec': {\n        'etcd_addresses': ['host.docker.internal:22379'],\n        'cluster_name': 'fluxon_s3',\n        'share_mem_path': '/dev/shm/fluxon-s3',\n        'sub_cluster': 'default',\n        'large_file_paths': ['/state/kv-owner/large'],\n    },\n}\n\nserve_s3_single_node(\n    '/data',  # \u8981\u66b4\u9732\u4e3a S3 \u7684\u5bb9\u5668\u5185\u6570\u636e\u76ee\u5f55\n    '/state',  # \u5bb9\u5668\u5185 Fluxon \u6301\u4e45\u72b6\u6001\u76ee\u5f55\n    kv_master_config=kv_master_config,  # KV master \u914d\u7f6e\n    kv_owner_config=kv_owner_config,  # KV owner \u914d\u7f6e\n    export_name='quick-start-export',  # S3 bucket \u540d\u79f0\n    start_middleware=False,  # \u590d\u7528\u5916\u90e8 etcd \u548c GreptimeDB\n    greptime_base_url='http://host.docker.internal:24000',  # GreptimeDB \u5730\u5740\n)\n\"\n</code></pre>\n<p>\u5c06\u4e24\u4e2a <code>C:\\fluxon-s3\\...</code> \u66ff\u6362\u4e3a\u5df2\u5b58\u5728\u7684 Windows \u76ee\u5f55\uff1a</p>\n<ul>\n<li><code>/data</code>\uff1a\u6743\u5a01\u6570\u636e\u76ee\u5f55\uff0c\u6620\u5c04\u81ea\u5bbf\u4e3b\u673a\u3002</li>\n<li><code>/state</code>\uff1a\u6301\u4e45\u72b6\u6001\u76ee\u5f55\uff0c\u5305\u542b <code>access.db</code>\uff1b\u4e24\u4e2a bind mount \u5747\u9700\u4fdd\u7559\u3002</li>\n<li><code>/dev/shm/fluxon-s3</code>\uff1aKV owner \u5171\u4eab\u533a\uff0c\u53ef\u91cd\u5efa\uff1b<code>--shm-size 2g</code> \u4e3a\u9ed8\u8ba4 1 GiB DRAM \u6c60\u9884\u7559\u7a7a\u95f4\u3002</li>\n</ul>\n<p>\u4ee5\u4e0a\u793a\u4f8b\u9488\u5bf9 Windows Docker Desktop \u3002Linux \u63a8\u8350\u4f7f\u7528\u65b9\u5f0f A \uff1b\u82e5\u6539\u7528 Docker \uff0c\u5e94\u5c06 bind mount \u6362\u4e3a Linux \u8def\u5f84\uff0c\u5e76\u6dfb\u52a0 <code>--user \"$(id -u):$(id -g)\"</code>\u3002\u540c\u65f6\u786e\u4fdd\u6570\u636e\u4e0e\u72b6\u6001\u76ee\u5f55\u5bf9\u8be5\u7528\u6237\u53ef\u5199\uff0c\u5426\u5219\u5bb9\u5668\u4ee5 root \u521b\u5efa\u7684\u6587\u4ef6\u53ef\u80fd\u65e0\u6cd5\u7531\u5bbf\u4e3b\u673a\u666e\u901a\u7528\u6237\u76f4\u63a5\u4fee\u6539\u3002</p>\n<p>\u5220\u9664 <code>/state/fs_master/access.db</code> \u4f1a\u91cd\u7f6e\u8d26\u53f7\u521d\u59cb\u5316\u72b6\u6001\u3002Unix \u4e0b\u8be5\u6587\u4ef6\u6743\u9650\u4e3a <code>0600</code>\u3002</p>\n<h3>\u7aef\u70b9\u4e0e\u9996\u6b21\u8bbe\u7f6e</h3>\n<p>\u670d\u52a1\u542f\u52a8\u540e\u63d0\u4f9b\uff1a</p>\n<pre><code class=\"language-text\">S3 endpoint: http://127.0.0.1:26180/fs_s3\nWeb UI:      http://127.0.0.1:26180/fs_s3/ui/\nbucket:      quick-start-export\n</code></pre>\n<p>Docker \u540e\u53f0\u65e5\u5fd7\u53ef\u901a\u8fc7 <code>docker logs fluxon-s3</code> \u67e5\u770b\u3002\u9996\u6b21\u7528 <code>admin / admin</code> \u767b\u5f55 Web UI \u540e\uff0c\u9875\u9762\u4f1a\u5f3a\u5236\u8fdb\u5165 <strong>Change Credentials</strong>\uff1a</p>\n<p><img alt=\"\u9996\u6b21\u767b\u5f55 FluxonFS Web UI\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://picui.ogmua.cn/s1/2026/08/10/6a795f9d47f1d.webp\"/></p>\n<p><img alt=\"\u9996\u6b21\u8bbe\u7f6e\u65b0\u7528\u6237\u540d\u548c\u5bc6\u7801\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://picui.ogmua.cn/s1/2026/08/10/6a795fa012e8f.webp\"/></p>\n<ol>\n<li>\u8f93\u5165\u65b0\u7528\u6237\u540d\uff0c\u5b83\u540c\u65f6\u662f S3 Access Key ID \u3002</li>\n<li>\u8f93\u5165\u4e0e <code>admin</code> \u4e0d\u540c\u7684\u65b0\u5bc6\u7801\uff0c\u5b83\u540c\u65f6\u662f S3 Secret Access Key \u3002</li>\n<li>\u63d0\u4ea4\u540e\uff0c\u6d4f\u89c8\u5668\u53ef\u80fd\u56e0\u7f13\u5b58\u4e86\u65e7 Basic Auth \u51ed\u636e\u800c\u518d\u6b21\u5f39\u51fa\u767b\u5f55\u6846\uff1b\u6b64\u65f6\u4f7f\u7528\u65b0\u51ed\u636e\u767b\u5f55\u3002</li>\n</ol>\n<p>\u6539\u5bc6\u5b8c\u6210\u524d\uff0cS3 \u8bf7\u6c42\u8fd4\u56de <code>AccessDenied</code>\u3002\u63d0\u4ea4\u540e\u65e7\u51ed\u636e\u7acb\u5373\u5931\u6548\uff0c\u72b6\u6001\u5199\u5165 <code>access.db</code>\u3002\n\u51ed\u636e\u66f4\u65b0\u540e\u7b49\u5f85\u7ea6 2 \u79d2\uff0c\u8ba9\u6743\u9650\u72b6\u6001\u4f20\u64ad\u5230 FS agent \uff0c\u518d\u4f7f\u7528 S3 \u5ba2\u6237\u7aef\u3002</p>\n<h2>\u9a8c\u8bc1\u672c\u5730\u76ee\u5f55\u4e0e S3 \u7684\u53cc\u5411\u6620\u5c04</h2>\n<p>\u4ee5\u4e0b\u547d\u4ee4\u4ee5 <code>/path/to/data</code> \u4e3a\u6743\u5a01\u6570\u636e\u76ee\u5f55\u3002</p>\n<h3>\u914d\u7f6e <code>rclone</code> \u4f5c\u4e3a S3 \u5ba2\u6237\u7aef</h3>\n<p>\u6539\u5bc6\u540e\u521b\u5efa <code>/tmp/rclone-fluxon.conf</code>\u3002<code>umask 077</code> \u53ef\u9632\u6b62\u5176\u4ed6\u672c\u673a\u7528\u6237\u8bfb\u53d6 Secret Access Key\uff1a</p>\n<pre><code class=\"language-bash\">umask 077\ncat &gt; /tmp/rclone-fluxon.conf &lt;&lt;'EOF'\n[fluxon]\ntype = s3\nprovider = Other\nenv_auth = false\naccess_key_id = &lt;\u9996\u6b21\u8bbe\u7f6e\u540e\u7684\u65b0\u7528\u6237\u540d&gt;\nsecret_access_key = &lt;\u9996\u6b21\u8bbe\u7f6e\u540e\u7684\u65b0\u5bc6\u7801&gt;\nregion = us-east-1\nendpoint = http://127.0.0.1:26180/fs_s3\nforce_path_style = true\ndisable_checksum = true\nuse_multipart_etag = false\nEOF\n</code></pre>\n<p>FluxonFS \u4f7f\u7528 path-style bucket \u8def\u5f84\uff1a</p>\n<pre><code class=\"language-text\">http://127.0.0.1:26180/fs_s3/quick-start-export/from-local.txt\n</code></pre>\n<h3>\u64cd\u4f5c 1\uff1aS3 \u5199\u5165 \u2192 \u672c\u5730\u7acb\u5373\u53ef\u89c1</h3>\n<pre><code class=\"language-bash\"># S3 \u5ba2\u6237\u7aef\u5199\u5165\nprintf 'uploaded through S3\\n' &gt; /tmp/from-client.txt\nrclone --config /tmp/rclone-fluxon.conf copyto \\\n  /tmp/from-client.txt \\\n  fluxon:quick-start-export/upload/from-client.txt\n\n# \u672c\u5730\u76f4\u63a5\u8bfb\u53d6\ncat /path/to/data/upload/from-client.txt\n# \u8f93\u51fa\uff1auploaded through S3\n</code></pre>\n<p>\u4ee5\u4e0b\u622a\u56fe\u6765\u81ea\u5c06 <code>export_name</code> \u914d\u7f6e\u4e3a <code>manual-data</code> \u7684\u5b9e\u6d4b\u73af\u5883\uff1b\u9664 bucket \u540d\u79f0\u5916\uff0c\u64cd\u4f5c\u4e0e\u4e0a\u9762\u7684 <code>quick-start-export</code> \u793a\u4f8b\u76f8\u540c\u3002</p>\n<p><img alt=\"rclone \u4e0a\u4f20\u5bf9\u8c61\u6210\u529f\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://picui.ogmua.cn/s1/2026/08/10/6a795f9dd6686.webp\"/></p>\n<p>\u4e0a\u4f20\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u5728 Web UI \u4e2d\u770b\u5230\u540c\u4e00\u4e2a\u5bf9\u8c61\uff1a</p>\n<p><img alt=\"\u5728 Web UI \u4e2d\u786e\u8ba4 rclone \u4e0a\u4f20\u7684\u5bf9\u8c61\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://picui.ogmua.cn/s1/2026/08/10/6a795f9f4abde.webp\"/></p>\n<h3>\u64cd\u4f5c 2\uff1a\u672c\u5730\u4fee\u6539 \u2192 S3 \u8bfb\u53d6\u751f\u6548</h3>\n<pre><code class=\"language-bash\"># \u672c\u5730\u76f4\u63a5\u8ffd\u52a0\necho 'appended locally' &gt;&gt; /path/to/data/upload/from-client.txt\n\n# S3 \u5ba2\u6237\u7aef\u8bfb\u53d6\nrclone --config /tmp/rclone-fluxon.conf cat \\\n  fluxon:quick-start-export/upload/from-client.txt\n# \u8f93\u51fa\u5305\u542b\uff1auploaded through S3 \u3001appended locally\n</code></pre>\n<h3>\u64cd\u4f5c 3\uff1aS3 \u5220\u9664 \u2192 \u672c\u5730\u6587\u4ef6\u6d88\u5931</h3>\n<pre><code class=\"language-bash\">rclone --config /tmp/rclone-fluxon.conf deletefile \\\n  fluxon:quick-start-export/upload/from-client.txt\n\ntest ! -e /path/to/data/upload/from-client.txt &amp;&amp; \\\n  echo '\u672c\u5730\u6587\u4ef6\u5df2\u540c\u6b65\u5220\u9664'\n</code></pre>\n<p>\u4e09\u7ec4\u9a8c\u8bc1\u8986\u76d6 S3 \u5199\u5165\u3001\u672c\u5730\u4fee\u6539\u548c S3 \u5220\u9664\uff0c\u64cd\u4f5c\u59cb\u7ec8\u4f5c\u7528\u4e8e\u540c\u4e00\u4efd\u6743\u5a01\u6570\u636e\u3002</p>\n<h2>\u5f53\u524d\u517c\u5bb9\u8fb9\u754c\u4e0e\u6ce8\u610f\u4e8b\u9879</h2>\n<p>FluxonFS \u7528\u4e8e\u878d\u5408 S3 \u534f\u8bae\u5165\u53e3\u4e0e\u672c\u5730\u6587\u4ef6\u5de5\u4f5c\u6d41\uff0c\u4e0d\u8986\u76d6 AWS S3 \u7684\u5168\u90e8\u4f01\u4e1a\u7ea7\u7279\u6027\u3002</p>\n<p><code>rclone</code> \u662f\u4f7f\u7528\u5e7f\u6cdb\u4e14\u957f\u671f\u7ef4\u62a4\u7684 S3 \u6570\u636e\u4f20\u8f93\u5de5\u5177\u3002\u672c\u6587\u7528 <code>rclone v1.60.1</code> \u8fdb\u884c\u7aef\u5230\u7aef\u96c6\u6210\u6d4b\u8bd5\uff0c\u8986\u76d6 bucket \u68c0\u67e5\u3001\u5bf9\u8c61\u5217\u4e3e\u3001\u4e0a\u4f20\u3001\u4e0b\u8f7d\u3001\u5220\u9664\u548c Multipart Upload \uff0c\u7ed3\u679c\u5177\u6709\u8f83\u5f3a\u4ee3\u8868\u6027\u3002</p>\n<p><strong>\u517c\u5bb9\u6027\u6458\u8981\uff1a</strong></p>\n<ul>\n<li><strong>\u652f\u6301</strong>\uff1a<code>ListBuckets</code>\u3001<code>HeadBucket</code>\u3001<code>ListObjectsV2</code> \u7684\u6838\u5fc3 <code>prefix</code> / <code>delimiter</code>\u3001<code>GET</code>\u3001<code>HEAD</code>\u3001\u5355\u6bb5 Range \u3001<code>PUT</code>\u3001<code>DELETE</code>\u3001Multipart Upload \uff0c\u4ee5\u53ca Header \u5f62\u5f0f\u7684 SigV4 \u9274\u6743\u3002<code>PUT</code> \u53ef\u81ea\u52a8\u521b\u5efa\u7236\u76ee\u5f55\uff1b Multipart part \u5728\u5b8c\u6210\u6216\u53d6\u6d88\u540e\u6e05\u7406\u3002</li>\n<li><strong>\u53d7\u9650\u6216\u4e0d\u652f\u6301</strong>\uff1a\u5ba2\u6237\u7aef\u4e0d\u80fd\u52a8\u6001\u521b\u5efa bucket \uff1b\u5bf9\u5df2\u6709 bucket \u6267\u884c <code>PUT /bucket</code> \u4ec5\u8fd4\u56de\u6210\u529f\u4ee5\u517c\u5bb9 <code>rclone</code>\u3002export \u540d\u79f0\u9650 3\u201363 \u4f4d\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u6216\u8fde\u5b57\u7b26\uff0c\u4e14\u4e0d\u80fd\u4ee5\u8fde\u5b57\u7b26\u5f00\u5934\u6216\u7ed3\u5c3e\u3002\u5bf9\u8c61\u5217\u8868\u6682\u65e0\u5b8c\u6574 continuation token \u7ffb\u9875\uff1b\u6682\u4e0d\u627f\u8bfa query-string \u9884\u7b7e\u540d URL \uff0c\u4e5f\u4e0d\u652f\u6301\u7248\u672c\u63a7\u5236\u3001ACL \u3001\u6807\u7b7e\u3001\u751f\u547d\u5468\u671f\u7b56\u7565\u3001\u670d\u52a1\u7aef\u52a0\u5bc6\u548c\u5b8c\u6574 <code>CopyObject</code> \u8bed\u4e49\u3002ETag \u4e0d\u4fdd\u8bc1\u4e3a MD5 \u3002</li>\n</ul>\n<p><em>\u6ce8\uff1a\u4e0a\u8ff0\u6d4b\u8bd5\u8986\u76d6\u5e38\u89c1\u8bfb\u5199\u94fe\u8def\uff0c\u4e0d\u4ee3\u8868\u901a\u8fc7 AWS S3 \u5168\u91cf\u517c\u5bb9\u6027\u8ba4\u8bc1\u3002</em></p>\n<p><strong>\u5173\u952e\u6ce8\u610f\u4e8b\u9879\uff1a</strong></p>\n<ol>\n<li><strong>\u8010\u4e45\u6027\u4f9d\u8d56\u5e95\u5c42\u5b58\u50a8</strong>\uff1a\u589e\u52a0 S3 \u5165\u53e3\u4e0d\u4f1a\u81ea\u52a8\u83b7\u5f97\u591a\u526f\u672c\u6216\u9ad8\u53ef\u7528\u80fd\u529b\u3002</li>\n<li><strong>\u5e76\u53d1\u9700\u4e1a\u52a1\u534f\u8c03</strong>\uff1aS3 \u5ba2\u6237\u7aef\u4e0e\u672c\u5730\u8fdb\u7a0b\u540c\u65f6\u5199\u540c\u4e00\u6587\u4ef6\u65f6\uff0c\u4e0a\u5c42\u4e1a\u52a1\u4ecd\u9700\u4fdd\u8bc1\u539f\u5b50\u6027\u5e76\u5904\u7406\u51b2\u7a81\u3002</li>\n<li><strong>\u516c\u7f51\u90e8\u7f72\u9700\u989d\u5916\u52a0\u56fa</strong>\uff1a\u793a\u4f8b\u4f7f\u7528 HTTP \u3002\u9996\u6b21\u6539\u5bc6\u524d\u4e0d\u5f97\u5411\u5176\u4ed6\u4e3b\u673a\u5f00\u653e <code>26180</code>\uff1b Linux \u4e0a\u7684 <code>22379</code>\u3001<code>25100</code> \u548c <code>24000</code> \u5e94\u9650\u5236\u4e3a\u672c\u673a\u8bbf\u95ee\u3002\u5bf9\u5916\u670d\u52a1\u8fd8\u9700\u914d\u7f6e TLS \u3001\u6743\u9650\u8fb9\u754c\u3001\u76d1\u63a7\u548c\u5907\u4efd\u3002</li>\n</ol>\n<h2>\u7ed3\u8bed</h2>\n<p>\u4f7f\u7528 FluxonFS \u53ef\u4ee5\u8f7b\u677e\u5c06\u73b0\u6709\u6587\u4ef6\u5939\u8f6c\u6362\u4e3a S3 \u670d\u52a1\uff0c\u6b22\u8fce\u8bd5\u7528\u548c\u8d21\u732e\u4ee3\u7801\u3002\u5982\u679c\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\uff0c\u4e5f\u6b22\u8fce\u6dfb\u52a0\u5fae\u4fe1\uff08\u89c1 README \uff09\u6216\u63d0\u4ea4 <a href=\"https://github.com/Tele-AI/Fluxon/issues\" rel=\"nofollow\">Issue</a>\uff0c\u6211\u4eec\u4f1a\u79ef\u6781\u3001\u9ad8\u6548\u5730\u89e3\u51b3\u95ee\u9898\u3002</p>\n<p>Fluxon \u662f\u9762\u5411 AI \u6570\u636e\u6d41\u52a8\u7684\u5f00\u6e90\u6570\u636e\u9762\u52a0\u901f\u5e95\u5ea7\uff0c\u5728\u7edf\u4e00\u7cfb\u7edf\u67b6\u6784\u4e0b\u63d0\u4f9b\u5206\u5e03\u5f0f\u952e\u503c\u7f13\u5b58\u3001RPC \u3001\u6d88\u606f\u961f\u5217\u548c\u517c\u5bb9 S3 \u7684\u6587\u4ef6\u5bf9\u8c61\u7f13\u5b58\u52a0\u901f\u80fd\u529b\uff0c\u5e76\u590d\u7528\u5171\u4eab\u5185\u5b58\u3001RDMA \u3001\u76d1\u63a7\u548c\u90e8\u7f72\u5de5\u5177\u94fe\u3002FluxonFS \u662f\u5176\u4e2d\u8fde\u63a5\u666e\u901a\u6587\u4ef6\u76ee\u5f55\u4e0e\u5bf9\u8c61\u8bbf\u95ee\u751f\u6001\u7684\u4e00\u73af\u3002</p>\n<p>Fluxon \u7531\u4e2d\u56fd\u7535\u4fe1\u4eba\u5de5\u667a\u80fd\u7814\u7a76\u9662\uff08 TeleAI \uff09 AI Infra \u56e2\u961f\u7814\u53d1\uff0c\u7531\u4e2d\u56fd\u7535\u4fe1\u9996\u5e2d\u79d1\u5b66\u5bb6\u674e\u5b66\u9f99\u6559\u6388\u5e26\u9886\uff0c\u5df2\u57fa\u4e8e Apache License 2.0 \u5f00\u6e90\u3002\u6b22\u8fce\u4f7f\u7528 Fluxon \uff0c\u4e5f\u6b22\u8fce\u5bf9 AI \u63a8\u7406\u7f13\u5b58\u3001\u5f02\u6784\u8bad\u7ec3\u3001Rust \u6570\u636e\u9762\u3001\u6587\u4ef6\u4e0e\u5bf9\u8c61\u5b58\u50a8\u4ee5\u53ca\u5206\u5e03\u5f0f\u7cfb\u7edf\u611f\u5174\u8da3\u7684\u5f00\u53d1\u8005\u53c2\u4e0e\u9879\u76ee\u3002GitHub \u4ed3\u5e93\u5730\u5740\uff1a <a href=\"https://github.com/Tele-AI/Fluxon\" rel=\"nofollow\">https://github.com/Tele-AI/Fluxon</a> \u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yufan993", 
        "name": "yufan993", 
        "avatar": "https://cdn.v2ex.com/gravatar/e793a39974076340b3122931fe949251?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1232896", 
      "title": "\u63a8\u8350\u81ea\u7528\u300c\u6587\u5b57\u8f6c\u6717\u8bfb\u97f3\u9891\u300d\u5de5\u5177\uff1a Edge TTS \u8bed\u97f3\u5408\u6210\u52a9\u624b\uff08\u5f00\u6e90 \u00b7 \u514d\u8d39 \u00b7 Windows\uff09", 
      "id": "https://www.v2ex.com/t/1232896", 
      "date_published": "2026-08-08T06:15:31+00:00", 
      "content_html": "<h1>\u63a8\u8350\u81ea\u7528\u300c\u6587\u5b57\u8f6c\u6717\u8bfb\u97f3\u9891\u300d\u5de5\u5177\uff1aEdge TTS \u8bed\u97f3\u5408\u6210\u52a9\u624b\uff08\u5f00\u6e90 \u00b7 \u514d\u8d39 \u00b7 Windows \uff09</h1>\n<p>\u5e73\u65f6\u6709\u628a\u957f\u6587\u3001\u7b14\u8bb0\u3001\u6280\u672f\u6587\u7ae0\"\u53d8\u6210\u97f3\u9891\u6765\u542c\"\u7684\u4e60\u60ef\u3002\u8bd5\u4e86\u4e00\u5708\u6587\u672c\u8f6c\u8bed\u97f3\uff0c\u6700\u540e\u9501\u5b9a\u4e86\u5fae\u8f6f Edge TTS\uff1a\u5b83\u4e0d\u662f\u90a3\u79cd\u673a\u68b0\u7684\u673a\u5668\u97f3\uff0c\u800c\u662f<strong>\u975e\u5e38\u81ea\u7136\u3001\u6e05\u6670\u3001\u4e13\u4e1a\u7684\u771f\u4eba\u6717\u8bfb\u611f</strong>\uff0c\u65e0\u8bba\u4e2d\u6587\u3001\u7ca4\u8bed\u3001\u82f1\u6587\u8fd8\u662f\u5176\u4ed6\u5916\u8bed\uff0c\u90fd\u975e\u5e38\u597d\u542c\u3002\u4e8e\u662f\u6211\u628a\"\u7c98\u8d34\u6587\u5b57 \u2192 \u751f\u6210 MP3\"\u505a\u6210\u4e86 Windows \u684c\u9762\u5de5\u5177\uff0c\u73b0\u5728\u6574\u7406\u6210\u5f00\u6e90\u9879\u76ee\u5206\u4eab\u7ed9\u5927\u5bb6\u3002</p>\n<h2>\u4e3a\u4ec0\u4e48\u7528\u5fae\u8f6f TTS</h2>\n<ul>\n<li><strong>\u7528\u8fc7 Edge \u6717\u8bfb\u529f\u80fd\u7684\u4eba\u90fd\u61c2</strong>\uff1a\u4e0d\u662f\u673a\u5668\u97f3\uff0c\u800c\u662f\u975e\u5e38\u81ea\u7136\u3001\u6e05\u6670\u3001\u4e13\u4e1a\u7684\u771f\u4eba\u6717\u8bfb\u611f</li>\n<li><strong>\u652f\u6301\u51e0\u767e\u79cd\u8bed\u8a00\u3001\u6570\u767e\u4e2a\u97f3\u8272</strong>\uff1a\u7537\u58f0\u3001\u5973\u58f0\u90fd\u975e\u5e38\u4e30\u5bcc</li>\n<li>\u65e0\u8bba\u4e2d\u6587\u3001\u7ca4\u8bed\u3001\u82f1\u8bed\uff0c\u8fd8\u662f\u5176\u4ed6\u5916\u8bed\uff0c\u90fd\u6beb\u65e0\u673a\u68b0\u611f</li>\n<li><strong>\u5b8c\u5168\u514d\u8d39</strong>\uff0c\u4e0d\u9700\u8981 API Key</li>\n</ul>\n<h2>\u529f\u80fd\u7279\u70b9</h2>\n<ul>\n<li>\u7c98\u8d34\u6587\u7ae0/\u7b14\u8bb0 \u2192 \u4e00\u952e\u751f\u6210\u5168\u6587\u6717\u8bfb\u97f3\u9891\uff08 MP3 \uff09</li>\n<li><strong>\u751f\u6210\u4e00\u6b21\uff0c\u4e4b\u540e\u53ef\u968f\u65f6\u8bd5\u542c\u6216\u4fdd\u5b58\u4e0b\u8f7d\uff0c\u4e0d\u91cd\u590d\u5408\u6210</strong></li>\n<li>\u5b9e\u65f6\u8fdb\u5ea6\u6761\uff0c\u65ad\u7f51/\u5361\u4f4f\u81ea\u52a8\u63d0\u793a\uff0c\u53ef\u7ee7\u7eed\u7b49\u5f85\u3001\u91cd\u8bd5\u6216\u53d6\u6d88</li>\n<li>\u4e2d\u6587 / English \u754c\u9762\u4e00\u952e\u5207\u6362\uff0c\u65e5\u95f4 / \u591c\u95f4\u4e3b\u9898</li>\n<li>\u9ed8\u8ba4\u97f3\u8272\u4e0e\u53c2\u6570\u517c\u5bb9\u539f\u5de5\u4f5c\u6d41\uff08 Andrew \u00b7 +0% / +0% / +0Hz \uff09\uff0c\u63a8\u8350\u4e2d\u6587\u5973\u58f0\u6653\u6653</li>\n<li>\u7eff\u8272\u4fbf\u643a\u7248 + \u5b89\u88c5\u7248\u90fd\u6709\uff0cWindows 10+ \u65e0\u9700\u88c5 Python \uff0c\u652f\u6301\u5378\u8f7d</li>\n</ul>\n<h2>\u4e0b\u8f7d</h2>\n<p>GitHub Releases\uff1a <a href=\"https://github.com/JJosephph/ms-edge-tts-gui/releases\" rel=\"nofollow\">https://github.com/JJosephph/ms-edge-tts-gui/releases</a></p>\n<ul>\n<li>\u89c9\u5f97\u597d\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u53bb\u4ed3\u5e93\u70b9\u4e2a <strong>Star</strong> \u2b50</li>\n<li><code>EdgeTTSGui-Setup.exe</code>\uff1a\u5b89\u88c5\u7248\uff08\u63a8\u8350\uff0c\u53ef\u5378\u8f7d\uff09</li>\n<li><code>EdgeTTSGui-Portable.exe</code>\uff1a\u514d\u5b89\u88c5\u4fbf\u643a\u7248\uff0c\u53cc\u51fb\u5373\u7528</li>\n</ul>\n<h2>\u5f00\u6e90</h2>\n<ul>\n<li>MIT License \uff0c\u5b8c\u5168\u514d\u8d39</li>\n<li>\u5f00\u53d1\u8005\uff1aWangYufan \uff08 QQ 1471056247 \uff09</li>\n<li>\u4ed3\u5e93\u5730\u5740\uff1a <a href=\"https://github.com/JJosephph/ms-edge-tts-gui\" rel=\"nofollow\">https://github.com/JJosephph/ms-edge-tts-gui</a></li>\n<li>\u89c9\u5f97\u597d\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u53bb\u4ed3\u5e93\u70b9\u4e2a <strong>Star</strong> \u2b50\uff0c\u6709\u5efa\u8bae\u6216\u95ee\u9898\u4e5f\u53ef\u4ee5\u76f4\u63a5\u63d0 Issue</li>\n</ul>\n<hr/>\n<p><strong>\u53d1\u5e16\u63d0\u793a</strong></p>\n<ul>\n<li>V2EX\uff1a\u56fe\u7247\u9700\u8981\u5148\u4e0a\u4f20\u5230\u56fe\u5e8a\uff08\u5982 <a href=\"http://sm.ms\" rel=\"nofollow\">sm.ms</a> \u3001GitHub Issues \u56fe\u5e8a\uff09\uff0c\u518d\u66ff\u6362\u94fe\u63a5\uff1b\u53d1\u5728\u300c\u5206\u4eab\u521b\u9020\u300d\u8282\u70b9\u3002</li>\n<li>\u6398\u91d1 / CSDN\uff1a\u652f\u6301\u76f4\u63a5\u7c98\u8d34\u56fe\u7247\uff0c\u6216\u5bfc\u5165\u672c\u5730 Markdown \u540e\u81ea\u52a8\u4e0a\u4f20\u3002</li>\n<li>\u5982\u9700\u82f1\u6587\u7248\u63a8\u6587\uff0c\u8bf4\u4e00\u58f0\u53ef\u4ee5\u518d\u7ed9\u4e00\u7248\u3002</li>\n</ul>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinghelee", 
        "name": "xinghelee", 
        "avatar": "https://cdn.v2ex.com/avatar/7e6d/6496/71832_large.png?m=1785605452"
      }, 
      "url": "https://www.v2ex.com/t/1232003", 
      "date_modified": "2026-08-04T06:41:18+00:00", 
      "content_html": "<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/009327Od.png\"/></p>\n<p>\u6709\u5f00\u53d1\u8005\u8d26\u53f7\u7684\u53ef\u4ee5\u81ea\u5df1\u7f16\u8bd1</p>\n<p>\u6ca1\u6709\u5f00\u53d1\u8005\u8d26\u53f7\u7684\uff0c\u53ef\u4ee5\u7559\u90ae\u7bb1\u52a0 testflight \u6d4b\u8bd5\u7ec4</p>\n<p>GitHub: <a href=\"https://github.com/xinghelee/v2ex\" rel=\"nofollow\">https://github.com/xinghelee/v2ex</a></p>\n", 
      "date_published": "2026-08-04T06:40:38+00:00", 
      "title": "\u505a\u4e00\u4e2a iOS 27 \u98ce\u683c\u7684 V2EX \u5ba2\u6237\u7aef", 
      "id": "https://www.v2ex.com/t/1232003"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinghelee", 
        "name": "xinghelee", 
        "avatar": "https://cdn.v2ex.com/avatar/7e6d/6496/71832_large.png?m=1785605452"
      }, 
      "url": "https://www.v2ex.com/t/1231718", 
      "title": "macOS \u539f\u751f\u7ec8\u7aef Termite 1.18 \u7248\u672c\u53d1\u5e03-\u65b0\u589e\u5de5\u4f5c\u533a\u7075\u611f\u6765\u81ea ARC \u6d4f\u89c8\u5668", 
      "id": "https://www.v2ex.com/t/1231718", 
      "date_published": "2026-08-03T05:47:52+00:00", 
      "content_html": "<p>\u7075\u611f\u6765\u81ea ARC \u6d4f\u89c8\u5668\u548c DIA \u6d4f\u89c8\u5668</p>\n<p>\u652f\u6301\u89e6\u63a7\u677f\u5de6\u53f3\u5feb\u901f\u5207\u6362</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/IKH0qL57.png\"/></p>\n<p>GitHub:<a href=\"https://github.com/xinghelee/Termite\" rel=\"nofollow\">https://github.com/xinghelee/Termite</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinghelee", 
        "name": "xinghelee", 
        "avatar": "https://cdn.v2ex.com/avatar/7e6d/6496/71832_large.png?m=1785605452"
      }, 
      "url": "https://www.v2ex.com/t/1231488", 
      "title": "\u4eca\u5929\u7ed9 Berth \u8fde\u53d1\u4e86 v1.3 \u548c v1.4 \u4e24\u4e2a\u7248\u672c", 
      "id": "https://www.v2ex.com/t/1231488", 
      "date_published": "2026-08-01T16:11:18+00:00", 
      "content_html": "\u4eca\u5929\u7ed9 Berth \u8fde\u53d1\u4e86 v1.3 \u548c v1.4 \u4e24\u4e2a\u7248\u672c,\u5168\u662f\u65e5\u5e38\u9ad8\u9891\u573a\u666f:<br /><br />\ud83d\udcc1 \u62d6\u62fd\u4e0a\u4f20\u2014\u2014\u6587\u4ef6\u4ece Finder \u62d6\u8fdb\u7ec8\u7aef\u7a97\u53e3,\u81ea\u52a8\u7ecf SFTP \u4f20\u5230 shell \u5f53\u524d\u6240\u5728\u76ee\u5f55\u3002\u677e\u624b\u524d\u5361\u7247\u5c31\u663e\u793a\u76ee\u6807\u8def\u5f84,\u540c\u540d\u6587\u4ef6\u5148\u95ee\u8986\u76d6\u8fd8\u662f\u8df3\u8fc7,\u5168\u7a0b\u4e0d\u5f80\u7ec8\u7aef\u6253\u4e00\u4e2a\u5b57<br /><br />\ud83d\udc33 Docker \u9762\u677f\u2014\u2014\u8fdc\u7aef\u5bb9\u5668 compose \u5206\u7ec4\u3001\u72b6\u6001\u8272\u70b9\u3001\u7aef\u53e3\u6620\u5c04,\u6253\u5f00\u671f\u95f4\u81ea\u52a8\u5237\u65b0;\u542f\u52a8/\u505c\u6b62/\u91cd\u542f/\u770b\u65e5\u5fd7,\u751f\u4ea7\u8b66\u6212\u4e3b\u673a\u7684\u64cd\u4f5c\u5148\u8fc7\u786e\u8ba4<br /><br />\ud83d\udd11  \u8001\u683c\u5f0f\u79c1\u94a5\u76f4\u63a5\u7528\u2014\u2014\u963f\u91cc\u4e91\u817e\u8baf\u4e91\u4e0b\u53d1\u7684 .pem \u3001OpenSSH 7.8 \u4e4b\u524d\u7684 key,\u7c98\u8d34\u5373\u8fde,\u81ea\u52a8\u8f6c\u6362,\u544a\u522b ssh-keygen -p \u3002\u8fd9\u6761\u6765\u81ea\u793e\u533a\u8d21\u732e\u8005 coosir \u7684 PR,\u5f00\u6e90\u7684\u7f8e\u597d\u83ab\u8fc7\u4e8e\u6b64,\u611f\u8c22 \ud83d\ude4f<br /><br />\ud83e\udd16 AI \u52a9\u624b\u611f\u77e5\u5f53\u524d\u76ee\u5f55\u2014\u2014\u300c\u770b\u770b\u8fd9\u4e2a\u76ee\u5f55\u4e0b\u7684\u65e5\u5fd7\u300d\u76f4\u63a5\u5c31\u80fd\u5e72\u6d3b,\u6ca1\u88c5 shell \u96c6\u6210\u4e5f\u80fd\u81ea\u52a8\u63a2\u6d4b\u3002\u8fd9\u6761\u6765\u81ea\u793e\u533a pharaohnie \u53cd\u9988<br /><br />macOS \u539f\u751f SSH \u5ba2\u6237\u7aef,\u514d\u8d39:<br /><br /><a target=\"_blank\" href=\"/i/D8u653jN.gif\" rel=\"nofollow noopener\" target=\"_blank\" title=\"\u5728\u65b0\u7a97\u53e3\u6253\u5f00\u56fe\u7247 D8u653jN.gif\"><img src=\"//i.v2ex.co/D8u653jN.gif\" class=\"embedded_image\"></a><br /><br />Github\uff1a <a target=\"_blank\" href=\"https://github.com/xinghelee/Berth\" rel=\"nofollow noopener\">https://github.com/xinghelee/Berth</a><br />Website\uff1a <a target=\"_blank\" href=\"https://berth.xinghelee.com\" rel=\"nofollow noopener\">https://berth.xinghelee.com</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cnwinds78", 
        "name": "cnwinds78", 
        "avatar": "https://cdn.v2ex.com/gravatar/e9a61fe1801bb6205425007e5c0b0a01?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1231241", 
      "title": "\uff3b\u5f00\u6e90\uff3d\u7ed9\u5206\u6563 Cursor \u8d26\u53f7\u505a\u4e86\u4e2a\u81ea\u6258\u7ba1\u989d\u5ea6\u4e0e\u7528\u91cf\u770b\u677f", 
      "id": "https://www.v2ex.com/t/1231241", 
      "date_published": "2026-07-31T06:42:55+00:00", 
      "content_html": "<p>\u5148\u653e\u80fd\u76f4\u63a5\u9a8c\u8bc1\u7684\u4e1c\u897f\uff1a</p>\n<ul>\n<li>\u4ed3\u5e93\uff1a <a href=\"https://github.com/cnwinds/cursor-pulse\" rel=\"nofollow\">https://github.com/cnwinds/cursor-pulse</a></li>\n<li>\u989d\u5ea6\u770b\u677f / \u7528\u91cf\u5206\u6790 / \u652f\u51fa\u7ba1\u63a7\u4e09\u5f20\u771f\u5b9e\u540e\u53f0\u622a\u56fe\uff08\u533f\u540d\u6f14\u793a\u6570\u636e\uff09\uff1a <a href=\"https://github.com/cnwinds/cursor-pulse/blob/master/README_CN.md#%E5%BF%AB%E9%80%9F%E9%A2%84%E8%A7%88\" rel=\"nofollow\">https://github.com/cnwinds/cursor-pulse/blob/master/README_CN.md#\u5feb\u901f\u9884\u89c8</a></li>\n</ul>\n<p><strong>\u4e3a\u4ec0\u4e48\u505a</strong></p>\n<p>\u6211\u4eec\u7684\u5b58\u91cf\u573a\u666f\u662f\uff1a\u56e2\u961f\u5df2\u7ecf\u5408\u89c4\u3001\u5206\u6563\u5730\u6301\u6709\u591a\u628a\u72ec\u7acb Cursor \u8d26\u53f7\uff08\u4e0d\u540c\u6210\u5458\u5404\u6301\u4e00\u628a\uff0c\u53f0\u8d26\u5728\u5185\u7f51\u7ef4\u62a4\uff09\u3002\u8fd0\u7ef4\u4e0a\u6700\u96be\u7684\u4e0d\u662f\u300c\u518d\u4e70\u4e00\u4e2a Cursor \u300d\uff0c\u800c\u662f<strong>\u989d\u5ea6\u5feb\u8017\u5c3d\u65f6\u5f80\u5f80\u540e\u77e5\u540e\u89c9</strong>\u2014\u2014\u5f97\u5728\u5b98\u7f51\u3001\u8868\u683c\u548c\u7fa4\u91cc\u62fc\u4fe1\u606f\u3002\u60f3\u8981\u4e00\u4e2a<strong>\u6570\u636e\u7559\u5728\u81ea\u5df1\u673a\u5668\u4e0a</strong>\u7684\u805a\u5408\u770b\u677f\uff0c\u4e8e\u662f\u5199\u4e86 Cursor Pulse \uff0cMIT \u5f00\u6e90\u3002</p>\n<p><strong>\u4e09\u4e2a\u6838\u5fc3\u80fd\u529b</strong>\uff08\u6309\u4f18\u5148\u7ea7\uff09\uff1a</p>\n<ol>\n<li><strong>\u989d\u5ea6\u770b\u677f + \u8017\u5c3d\u9884\u6d4b</strong>\uff1a\u5bf9\u9f50 Cursor Plan &amp; Usage \u7684 billing cycle \uff0c\u6807 warning / exhausted \uff0c\u7ed9\u51fa\u9884\u8ba1\u8017\u5c3d\u65e5\u671f\uff08\u7ebf\u6027\u5916\u63a8\uff0c\u5468\u671f\u65e9\u671f\u8bef\u5dee\u4f1a\u5927\uff09</li>\n<li><strong>\u7528\u91cf\u5206\u6790</strong>\uff1a\u65e5\u5386\u533a\u95f4\u6309\u8d26\u53f7\u3001\u6a21\u578b\u3001Token \u770b\u7ed3\u6784\u2014\u2014\u4e0e\u770b\u677f\u8ba1\u8d39\u5468\u671f\u53e3\u5f84\u4e0d\u540c\uff0c\u522b\u76f4\u63a5\u5bf9\u6570\u5b57</li>\n<li><strong>On-Demand \u652f\u51fa\u7ba1\u63a7</strong>\uff1a\u540c\u6b65\u65f6\u53ef\u68c0\u6d4b\u5e76\u5c1d\u8bd5\u5173\u95ed\u6309\u91cf\u652f\u51fa\uff0c\u72b6\u6001\u53d8\u5316\u901a\u77e5\u7ba1\u7406\u5458</li>\n</ol>\n<p>\u51ed\u636e\u7ecf\u5e94\u7528\u5c42\u52a0\u5bc6\u540e\u5165\u5e93\uff1b\u9ed8\u8ba4\u6808\u662f Web + DB + <code>channel</code> \u540c\u6b65\u8fdb\u7a0b\uff0c\u9489\u9489/\u98de\u4e66 IM \u3001\u501f Key \u4e0e MITM Proxy \u90fd\u662f\u53ef\u9009\u6269\u5c55\u3002</p>\n<p><strong>\u6280\u672f\u6808</strong>\uff1aPython 3.11+\uff08 Pulse \u63a7\u5236\u9762\uff09\u3001Vue \u7ba1\u7406\u540e\u53f0\u3001SQLite/Postgres \u3001Docker Compose \u90e8\u7f72\uff1b\u540c\u6b65\u8d70 Cursor User API Key \u2192 \u672a\u516c\u5f00 HTTP \u63a5\u53e3\uff08\u4ed3\u5e93\u5185 <code>docs/<a href=\"http://cursor-usage-api.md\" rel=\"nofollow\">cursor-usage-api.md</a></code> \u6709\u7b14\u8bb0\uff09\u3002</p>\n<p><strong>\u9650\u5236\uff08\u8bf7\u5148\u770b\u518d\u90e8\u7f72\uff09</strong></p>\n<ul>\n<li><strong>\u72ec\u7acb\u975e\u5b98\u65b9\u9879\u76ee</strong>\uff0c\u4e0e Cursor / Anysphere \u65e0\u96b6\u5c5e\u5173\u7cfb</li>\n<li>\u4f9d\u8d56 <strong>Cursor \u672a\u516c\u5f00 API</strong>\uff0c\u53ef\u80fd\u5931\u6548\uff0c\u4e5f\u53ef\u80fd\u4e0e ToS \u51b2\u7a81\u2014\u2014\u89c1 <code>NOTICE</code></li>\n<li>\u6210\u5458\u7ef4\u5ea6\u662f<strong>\u8d26\u53f7\u4e3b\u4f7f\u7528\u4eba</strong>\u5b57\u6bb5\uff0c\u4e0d\u662f\u300c\u8c01\u5728 IDE \u91cc\u6572\u4ee3\u7801\u300d\u7ea7\u8ffd\u8e2a</li>\n<li>\u9996\u6b21\u7ed1 Key \u540e\u9700\u7b49\u540c\u6b65\u5468\u671f\u624d\u6709\u770b\u677f\u6570\u636e\uff1b<code><a href=\"http://setup.sh\" rel=\"nofollow\">setup.sh</a></code> \u751f\u914d\u7f6e\u4e0d\u662f\u96f6\u914d\u7f6e</li>\n</ul>\n<p><strong>\u60f3\u5f81\u96c6\u4e09\u7c7b\u5177\u4f53\u53cd\u9988</strong>\uff08\u56de\u5e16\u6216 GitHub Issue \u5747\u53ef\uff0c\u8bf7\u5e26\u73af\u5883\u4fe1\u606f\uff09\uff1a</p>\n<ol>\n<li>Docker \u90e8\u7f72\u5361\u70b9\uff08 OS \u3001Compose \u7248\u672c\u3001\u62a5\u9519\u6458\u8981\uff09</li>\n<li>\u540c\u6b65/\u770b\u677f\u53e3\u5f84\u4e0e Cursor \u5b98\u7f51\u4e0d\u4e00\u81f4\u7684\u53ef\u590d\u73b0 case</li>\n<li>\u591a\u8d26\u53f7\u53f0\u8d26 + \u8017\u5c3d\u9884\u6d4b UI/\u4ea4\u4e92\u4e0a\u4e0d\u987a\u624b\u7684\u5730\u65b9</li>\n</ol>\n<p>\u5efa\u8bae\u5148\u770b README_CN \u7684\u9002\u5408/\u4e0d\u9002\u5408\uff0c\u518d\u51b3\u5b9a\u662f\u5426\u8bd5\u90e8\u7f72\uff1b\u6709\u7528\u7684\u8bdd\u6b22\u8fce Star \u65b9\u4fbf\u68c0\u7d22\uff0c\u4f46\u4e0d\u5fc5\u4e3a Star \u800c Star \u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/angel001ma", 
        "name": "angel001ma", 
        "avatar": "https://cdn.v2ex.com/gravatar/18846969b9c2cfa16f816f694c249fc8?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1231177", 
      "date_modified": "2026-07-31T03:16:01+00:00", 
      "content_html": "<p>\u516c\u53f8\u7edf\u4e00\u5b89\u88c5\u4e86 Git AI \uff0c\u4f46\u4e0d\u60f3\u8ba9\u79c1\u4eba\u4ed3\u5e93\u7684\u4ed3\u5e93\u540d\u3001\u8def\u5f84\u3001\u5206\u652f\u3001Skill \u6216\u654f\u611f\u5185\u5bb9\u76f4\u63a5\u79bb\u5f00\u672c\u673a\uff1f\u6211\u505a\u4e86\u4e00\u4e2a\u672c\u5730\u63a7\u5236\u9762\u677f\uff0c\u7528\u6765\u628a\u8fd9\u4e9b\u7b56\u7565\u914d\u7f6e\u5316\u3002</p>\n<p>\u4ed3\u5e93\uff1a\n<a href=\"https://github.com/yingyanzhitong/git-ai-control\" rel=\"nofollow\">https://github.com/yingyanzhitong/git-ai-control</a></p>\n<p>\u5feb\u901f\u542f\u52a8\uff1a</p>\n<pre><code class=\"language-bash\">npx git-ai-control\n</code></pre>\n<p>\u76ee\u524d\u529f\u80fd\uff1a</p>\n<ul>\n<li>\u5f00\u542f / \u6682\u505c Git AI \uff0c\u5e76\u663e\u793a\u5b9e\u9645\u8fd0\u884c\u72b6\u6001\uff1b</li>\n<li>\u4e3a\u591a\u4e2a\u4ed3\u5e93\u89c4\u5219\u8bbe\u5b9a\u4e0a\u4f20\u4e8b\u4ef6\u3001\u4fdd\u7559\u5b57\u6bb5\u3001\u4ed3\u5e93 / \u76ee\u5f55 / \u5206\u652f\u6761\u4ef6\uff0c\u4ee5\u53ca\u201c\u5168\u90e8\u4ed3\u5e93\u201d\u7684\u5168\u5c40\u515c\u5e95\uff1b</li>\n<li>\u8bc6\u522b API Key \u3001\u79c1\u94a5\u3001\u51ed\u636e\u7b49\u654f\u611f\u5185\u5bb9\uff0c\u53ef\u8131\u654f\u6216\u963b\u65ad\uff1b</li>\n<li>\u4ee5\u5141\u8bb8\u540d\u5355\u3001\u963b\u6b62\u6b63\u5219\u548c\u5ba1\u8ba1 / \u963b\u65ad\u6a21\u5f0f\u6cbb\u7406 Agent \u548c\u6a21\u578b\uff1b</li>\n<li>\u72ec\u7acb\u914d\u7f6e Skill \u8fc7\u6ee4\uff0c\u5e76\u67e5\u770b\u5b9e\u9645\u5199\u5165 <code>~/.git-ai</code> \u7684 JSON \uff1b</li>\n<li>\u652f\u6301 macOS \u3001Linux \u3001Windows \uff1b\u63a7\u5236\u9762\u677f\u548c\u8fc7\u6ee4\u670d\u52a1\u53ea\u7ed1\u5b9a\u672c\u673a\u56de\u73af\u5730\u5740\u3002</li>\n</ul>\n<p>\u517c\u5bb9\u6027\u8bf4\u660e\uff1a\u4ed3\u5e93\u7ea7\u8fc7\u6ee4\u3001\u5b57\u6bb5\u8131\u654f\u3001Skill \u8fc7\u6ee4\u7b49\u80fd\u529b\u4f9d\u8d56 Git AI \u7684 <code>custom_metrics</code> \u6269\u5c55\u70b9\uff1b\u5b98\u65b9\u7248\u672c\u4ec5\u7ba1\u7406\u516c\u5f00\u7684\u539f\u751f\u914d\u7f6e\uff0c\u4e0d\u4f1a\u628a\u672a\u63a5\u7ba1\u7684\u4ee3\u7406\u8bef\u62a5\u4e3a\u751f\u6548\u3002</p>\n<p>\u6b22\u8fce\u8bd5\u7528\u3001\u63d0 issue \u6216 PR \uff0c\u4e5f\u6b22\u8fce\u53cd\u9988\u8fd8\u9700\u8981\u54ea\u4e9b\u672c\u5730\u7b56\u7565\u63d2\u4ef6\u3002</p>\n<h2>\u754c\u9762\u622a\u56fe</h2>\n<p><img alt=\"Git AI \u8bbe\u7f6e\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/yingyanzhitong/git-ai-control/main/docs/images/git-ai-settings.jpg\"/></p>\n<p><img alt=\"\u63d2\u4ef6\u7ba1\u7406\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/yingyanzhitong/git-ai-control/main/docs/images/plugin-management.jpg\"/></p>\n", 
      "date_published": "2026-07-31T03:14:37+00:00", 
      "title": "[\u5f00\u6e90] Git AI Control\uff1a Git AI \u7684\u672c\u5730\u9690\u79c1\u4e0e\u7b56\u7565\u63a7\u5236\u9762\u677f", 
      "id": "https://www.v2ex.com/t/1231177"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Chentao1006", 
        "name": "Chentao1006", 
        "avatar": "https://cdn.v2ex.com/avatar/84d9/ee44/199_large.png?m=1781354557"
      }, 
      "url": "https://www.v2ex.com/t/1230987", 
      "title": "\u6211\u505a\u4e86\u4e00\u4e2a\u53ef\u4ece\u624b\u673a\u8fdc\u7a0b\u7ba1\u7406 Mac \u7684\u5f00\u6e90\u63a7\u5236\u53f0\uff1a Flux Monitor", 
      "id": "https://www.v2ex.com/t/1230987", 
      "date_published": "2026-07-30T06:32:22+00:00", 
      "content_html": "<p>\u6211\u505a\u4e86\u4e00\u4e2a\u9762\u5411\u81ea\u5df1 Mac \u7684\u5f00\u6e90\u7cfb\u7edf\u76d1\u63a7\u4e0e\u8fdc\u7a0b\u7ba1\u7406\u5de5\u5177\uff1a<strong>Flux Monitor</strong>\u3002</p>\n<p>\u6700\u521d\u662f\u4e3a\u4e86\u5c11\u5f00\u51e0\u4e2a SSH \u7a97\u53e3\uff1a\u51fa\u95e8\u65f6\u60f3\u786e\u8ba4 Mac mini \u4e0a\u7684\u670d\u52a1\u6709\u6ca1\u6709\u6302\u3001\u54ea\u4e2a\u8fdb\u7a0b\u5360\u8d44\u6e90\u3001\u7aef\u53e3\u88ab\u8c01\u5360\u4e86\uff0c\u6216\u8005\u5feb\u901f\u770b\u770b Docker \u3001Nginx \u548c\u7cfb\u7edf\u65e5\u5fd7\u3002</p>\n<p>\u5b83\u73b0\u5728\u5305\u542b\uff1a</p>\n<ul>\n<li>CPU \u3001\u5185\u5b58\u3001\u78c1\u76d8\u3001\u7f51\u7edc\u7b49\u7cfb\u7edf\u72b6\u6001</li>\n<li>\u8fdb\u7a0b\u3001\u7aef\u53e3\u4e0e\u65e5\u5fd7\u67e5\u770b</li>\n<li>Docker \u3001Nginx \u3001LaunchAgent / LaunchDaemon \u7ba1\u7406</li>\n<li>macOS \u83dc\u5355\u680f\u542f\u52a8\u5668</li>\n<li>iOS \u548c Android \u5ba2\u6237\u7aef\uff0c\u53ef\u8fdc\u7a0b\u8fde\u63a5\u548c\u7ba1\u7406\u81ea\u5df1\u7684 Mac</li>\n<li>\u53ef\u9009 AI \u8f85\u52a9\uff0c\u7528\u4e8e\u65e5\u5fd7\u89e3\u8bfb\u3001\u914d\u7f6e\u5ba1\u67e5\u548c\u6392\u969c\u5efa\u8bae</li>\n<li>\u53ef\u9009\u7684 InstaTunnel \u516c\u7f51\u8bbf\u95ee</li>\n</ul>\n<p>\u9879\u76ee\u662f MIT \u5f00\u6e90\uff1a</p>\n<ul>\n<li>GitHub\uff1a <a href=\"https://github.com/chentao1006/FluxMonitor\" rel=\"nofollow\">https://github.com/chentao1006/FluxMonitor</a></li>\n<li>macOS \u4e0b\u8f7d\u4e0e Homebrew \u5b89\u88c5\uff1a\u4ed3\u5e93 README</li>\n<li>iOS\uff1a <a href=\"https://apps.apple.com/app/flux-remote/id6761290185\" rel=\"nofollow\">https://apps.apple.com/app/flux-remote/id6761290185</a></li>\n<li>Android\uff1a <a href=\"https://play.google.com/store/apps/details?id=com.ct106.flux_remote\" rel=\"nofollow\">https://play.google.com/store/apps/details?id=com.ct106.flux_remote</a></li>\n</ul>\n<p>\u5b89\u5168\u63d0\u9192\uff1a\u516c\u7f51\u8bbf\u95ee\u662f\u53ef\u9009\u9879\uff0c\u542f\u7528\u524d\u8bf7\u81ea\u884c\u8bbe\u7f6e\u5f3a\u5bc6\u7801\u5e76\u66ff\u6362\u9ed8\u8ba4 JWT \u5bc6\u94a5\uff1b\u4e0d\u8981\u628a\u7ba1\u7406\u9762\u677f\u65e0\u4fdd\u62a4\u5730\u66b4\u9732\u5230\u516c\u7f51\u3002</p>\n<p>\u5982\u679c\u4f60\u5728\u7528 Mac mini \u3001\u5bb6\u7528\u670d\u52a1\u5668\u6216\u4e2a\u4eba\u5f00\u53d1\u673a\uff0c\u6b22\u8fce\u8bd5\u7528\u5e76\u544a\u8bc9\u6211\uff1a\u54ea\u4e9b\u7ba1\u7406\u52a8\u4f5c\u6700\u9700\u8981\u3001\u8fdc\u7a0b\u8fde\u63a5\u6709\u54ea\u4e9b\u95ee\u9898\u3001\u4f60\u8fd8\u5e0c\u671b\u8865\u54ea\u4e9b\u80fd\u529b\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Jackwang0127", 
        "name": "Jackwang0127", 
        "avatar": "https://cdn.v2ex.com/gravatar/46e7a1e0fc075118bfcadb03c7638921?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1230841", 
      "title": "\u4ec0\u4e48\u90fd\u6ca1\u5e72 \u88ab\u5e16\u4e0a\u83ab\u987b\u6709\u7684\u7f6a\u540d!", 
      "id": "https://www.v2ex.com/t/1230841", 
      "date_published": "2026-07-29T14:13:43+00:00", 
      "content_html": "<p>\u665a\u4e0a\u5728 email \u91cc\u770b\u5230  pallets \u8bf4 \u6211\u53d1\u4e86\u67d0\u4e2a\u5e16\u5b50 \u8ddf\u4ed6\u4eec\u7684\u793e\u533a\u89c2\u5ff5\u4e0d\u4e00\u6837 \u628a\u6211\u62c9\u9ed1(\u8fd9\u662f\u6295\u7968\u7684\u7ed3\u679c) \u636e\u8bf4\u662f \u7ef4\u62a4\u8005\u770b\u5230 \u6211\u53d1\u7684\u5e16\u5b50!  <strong>\u5783\u573e\u56e2\u961f\u914d\u5783\u573e\u4eba</strong> </p>\n<p><img alt=\"\u622a\u5c4f 2026-07-29 22.13.15.png\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/f5749568d9e64026a4eb6899c5caa3cf%7Etplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgSmFja3dhbmc=:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMjc4ODAxNzIyMDg5OTMzNiJ9&amp;rk3s=e9ecf3d6&amp;x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&amp;x-orig-expires=1785420803&amp;x-orig-sign=IAtYbnFy7V7IvXH9wroa%2F5EBI70%3D\"/></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/h5ds", 
        "name": "h5ds", 
        "avatar": "https://cdn.v2ex.com/gravatar/8e3888fc1623dfecd51d090cd43cd834?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1230678", 
      "title": "\u4f60\u4eec\u90fd\u5728\u7528 AI\uff0c\u800c\u6211\u7528\u53e4\u6cd5\u7f16\u7a0b\u505a\u4e86\u4e00\u4e2a\u526a\u6620", 
      "id": "https://www.v2ex.com/t/1230678", 
      "date_published": "2026-07-29T04:33:25+00:00", 
      "content_html": "<h1>\u4f60\u4eec\u90fd\u5728\u7528 AI \uff0c\u800c\u6211\u7528\u53e4\u6cd5\u7f16\u7a0b\u505a\u4e86\u4e00\u4e2a\u526a\u6620</h1>\n<p>\u6700\u8fd1\u6253\u5f00\u6280\u672f\u793e\u533a\uff0c\u6ee1\u5c4f\u90fd\u662f\"\u6211\u7528 AI 10 \u5206\u949f\u505a\u4e86\u4e00\u4e2a App\"\u3001\"\u96f6\u4ee3\u7801 AI \u5f00\u53d1\u5168\u6808\u5e94\u7528\"\u3002Cursor \u3001Copilot \u3001\u5404\u79cd Agent \u6ee1\u5929\u98de\uff0c\u4eff\u4f5b\u4e0d\u804a AI \u90fd\u4e0d\u597d\u610f\u601d\u8bf4\u81ea\u5df1\u662f\u7a0b\u5e8f\u5458\u3002</p>\n<p>\u6211\u504f\u4e0d\u3002</p>\n<p>\u6211\u7528\u4e86<strong>\u7eaf\u624b\u5de5\u3001\u65e0\u6dfb\u52a0\u3001\u53e4\u6cd5\u917f\u9020</strong>\u7684\u65b9\u5f0f\uff0c\u4e00\u884c\u4e00\u884c\u6572\u51fa\u4e86\u4e00\u4e2a\u5f00\u6e90\u7684\u89c6\u9891\u526a\u8f91\u5de5\u5177\u2014\u2014<strong>\u65e0\u754c\u4e91\u526a\uff08 unicut \uff09</strong>\u3002</p>\n<p><img alt=\"unicut\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://h5ds-cdn.oss-cn-beijing.aliyuncs.com/github/images/chat-ai-to-video.png\"/></p>\n<h2>\u4e3a\u4ec0\u4e48\u505a\u8fd9\u4e2a\uff1f</h2>\n<p>\u89c6\u9891\u526a\u8f91\u5de5\u5177\u5f88\u591a\uff0c\u4f46\u73b0\u72b6\u662f\uff1a</p>\n<ul>\n<li>\u526a\u6620\u529f\u80fd\u5f3a\u5927\uff0c\u4f46\u95ed\u6e90\uff0c\u4f60\u6c38\u8fdc\u4e0d\u77e5\u9053\u4ee3\u7801\u91cc\u53d1\u751f\u4e86\u4ec0\u4e48</li>\n<li>\u5927\u90e8\u5206\u5728\u7ebf\u526a\u8f91\u5de5\u5177\u529f\u80fd\u7b80\u964b\uff0c\u53ea\u80fd\u505a\u7b80\u5355\u7684\u62fc\u63a5\u88c1\u526a</li>\n<li>\u6ca1\u6709\u4e00\u6b3e B/S \u67b6\u6784\u7684\u526a\u8f91\u5de5\u5177\u80fd\u505a\u5230\u771f\u6b63\"\u4e13\u4e1a\u7ea7\"</li>\n</ul>\n<p>\u6240\u4ee5\u6211\u60f3\u8bd5\u8bd5\uff1a\u5230\u5e95\u80fd\u4e0d\u80fd\u5728\u6d4f\u89c8\u5668\u91cc\uff0c\u7eaf\u624b\u5de5\u6253\u9020\u4e00\u4e2a\u529f\u80fd\u5bf9\u6807\u526a\u6620\u7684\u5f00\u6e90\u526a\u8f91\u5de5\u5177\uff1f</p>\n<h2>\u53e4\u6cd5\u7f16\u7a0b\u7684\u6210\u679c</h2>\n<p>\u7ecf\u8fc7\u65e0\u6570\u4e2a\u624b\u5de5 coding \u7684\u65e5\u591c\uff0cunicut \u73b0\u5728\u957f\u8fd9\u6837\uff1a</p>\n<h3>\u652f\u6301\u7684\u5143\u7d20\u7c7b\u578b</h3>\n<p>\u89c6\u9891\u3001\u56fe\u7247\u3001\u82b1\u5b57\u3001\u97f3\u9891\u3001\u7279\u6548\u3001\u8d34\u7eb8\uff08 Lottie \uff09\u3001\u6ee4\u955c\u3001\u955c\u5934\u3001\u5b57\u5e55\u3001\u4e8c\u7ef4\u7801\u3001\u56fe\u8868\uff08\u5f00\u53d1\u4e2d\uff09\u2026\u2026\u8be5\u6709\u7684\u90fd\u6709\uff0c\u8fd8\u652f\u6301\u63d2\u4ef6\u6269\u5c55\u3002</p>\n<h3>\u52a8\u753b\u7cfb\u7edf\uff0c\u624b\u5199\u7684</h3>\n<p>Lottie \u52a8\u753b\u3001\u8f6c\u573a\u52a8\u753b\u3001\u5173\u952e\u5e27\u52a8\u753b\u3001\u5143\u7d20\u52a8\u753b\u3001\u9010\u5b57\u52a8\u753b\u3001\u906e\u7f69\u52a8\u753b\u2014\u2014\u6bcf\u4e00\u5e27\u52a8\u753b\u903b\u8f91\u90fd\u662f\u6211\u4eb2\u624b\u7801\u51fa\u6765\u7684\uff0c\u6ca1\u6709\u4efb\u4f55 AI \u4ee3\u7b14\u3002</p>\n<h3>\u89c6\u89c9\u6548\u679c</h3>\n<p>LUT \u6ee4\u955c\u3001\u57fa\u7840\u6ee4\u955c\u3001\u7eff\u5e55\u62a0\u56fe\u3001WebGL \u7279\u6548\u3001\u53e0\u52a0\u6a21\u5f0f\u3001\u7f29\u653e\u65cb\u8f6c\u4f4d\u79fb\u900f\u660e\u5ea6\u955c\u50cf\u7ffb\u8f6c\u3001\u89c6\u9891\u53d8\u901f\u3001\u97f3\u9891\u53d8\u901f\u3001\u6587\u5b57\u6548\u679c\u2014\u2014\u5168\u90e8\u53e4\u6cd5\u624b\u5199\u3002</p>\n<h3>\u62a0\u56fe\u5168\u5bb6\u6876</h3>\n<p>\u94a2\u7b14\u5de5\u5177\u62a0\u56fe\u3001\u9b54\u68d2\u62a0\u56fe\u3001AI \u62a0\u56fe\u3001\u88c1\u526a\u62a0\u56fe\u3002\u7b49\u7b49\uff0c\u4f60\u53ef\u80fd\u4f1a\u95ee\uff1a\"\u4e0d\u662f\u8bf4\u53e4\u6cd5\u7f16\u7a0b\u5417\uff0c\u600e\u4e48\u8fd8\u6709 AI \u62a0\u56fe\uff1f\"</p>\n<p>\u2014\u2014AI \u529f\u80fd\u662f\u4ea7\u54c1\u91cc\u7684\uff0c\u4f46\u4ee3\u7801\u662f\u6211\u81ea\u5df1\u5199\u7684\uff0c\u8fd9\u4e0d\u51b2\u7a81\u5427 \ud83d\ude04</p>\n<h3>\u6a21\u677f\u4e0e\u7d20\u6750</h3>\n<p>\u89c6\u9891\u6a21\u677f\u3001\u56fe\u7247\u7d20\u6750\u3001\u82b1\u5b57\u7d20\u6750\u3001\u8f6c\u573a\u7d20\u6750\u3001\u97f3\u9891\u7d20\u6750\u3001\u8d34\u7eb8\u7d20\u6750\u3001\u6ee4\u955c\u7d20\u6750\u3001\u7279\u6548\u7d20\u6750\uff0c\u7d20\u6750\u5e93\u9f50\u5168\u3002</p>\n<h2>\u4ea7\u54c1\u91cc\u786e\u5b9e\u96c6\u6210\u4e86 AI</h2>\n<p>\u867d\u7136\u4ee3\u7801\u662f\u53e4\u6cd5\u624b\u5199\uff0c\u4f46\u4ea7\u54c1\u672c\u8eab\u96c6\u6210\u4e86\u4e0d\u5c11 AI \u80fd\u529b\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u529f\u80fd</th>\n<th>\u8d39\u7528</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>AI \u81ea\u52a8\u8bc6\u522b\u7d20\u6750\u5185\u5bb9</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u81ea\u52a8\u526a\u8f91</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u4eba\u50cf\u5206\u79bb</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u56fe\u50cf\u53d8\u6e05\u6670</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u6d82\u62b9</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u62a0\u56fe</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u89c6\u9891\u8f68\u8ff9\u8ffd\u8e2a</td>\n<td>\u514d\u8d39</td>\n</tr>\n<tr>\n<td>AI \u751f\u6210\u5b57\u5e55</td>\n<td>\u6536\u8d39</td>\n</tr>\n<tr>\n<td>AI \u6587\u5b57\u8f6c\u8bed\u97f3</td>\n<td>\u6536\u8d39</td>\n</tr>\n<tr>\n<td>AI \u81ea\u52a8\u751f\u6210\u56fe\u7247</td>\n<td>\u6536\u8d39</td>\n</tr>\n<tr>\n<td>AI \u81ea\u52a8\u751f\u6210\u89c6\u9891</td>\n<td>\u6536\u8d39</td>\n</tr>\n</tbody></table><p>\u5927\u90e8\u5206 AI \u529f\u80fd\u514d\u8d39\u5f00\u653e\uff0c\u6bd5\u7adf\u6211\u5199\u4ee3\u7801\u5df2\u7ecf\u591f\u7d2f\u4e86\uff0c\u6ca1\u5fc5\u8981\u518d\u8ba9\u5927\u5bb6\u4e3a AI \u529f\u80fd\u989d\u5916\u638f\u94b1\u3002</p>\n<h2>\u65f6\u95f4\u8f74\uff0c\u526a\u8f91\u7684\u7075\u9b42</h2>\n<p>\u624b\u5199\u7684\u65f6\u95f4\u8f74\u7f16\u8f91\u5668\u652f\u6301\uff1a\u5143\u7d20\u5206\u5272\u88c1\u526a\u3001\u6279\u91cf\u64cd\u4f5c\u3001\u5e27\u56fe\u9884\u89c8 / \u97f3\u6ce2\u9884\u89c8\u3001\u591a\u8f68\u9053\u7f16\u8f91\u3001\u9690\u85cf / \u9501\u5b9a / \u5438\u9644\u3001\u65f6\u95f4\u8f74\u7f29\u653e\u3001\u64a4\u9500 / \u91cd\u505a\u3001\u5b9a\u683c\u5143\u7d20\u3001\u5c3a\u5bf8\u88c1\u526a\u3001\u65f6\u95f4\u88c1\u526a\u3002</p>\n<p>\u8bf4\u5b9e\u8bdd\uff0c\u65f6\u95f4\u8f74\u8fd9\u5757\u662f\u6700\u96be\u5199\u7684\uff0c\u4e5f\u662f\u6700\u80fd\u4f53\u73b0\"\u53e4\u6cd5\u7f16\u7a0b\"\u542b\u91d1\u91cf\u7684\u90e8\u5206\u3002</p>\n<h2>\u6765\u4f53\u9a8c</h2>\n<p>\u522b\u5149\u542c\u6211\u8bf4\uff0c\u81ea\u5df1\u53bb\u8bd5\u8bd5\uff1a</p>\n<ul>\n<li>\u5728\u7ebf\u4f53\u9a8c\uff1a<a href=\"https://unicut.h5ds.com/\" rel=\"nofollow\">https://unicut.h5ds.com/</a></li>\n<li>GitHub \uff08\u6c42 Star \uff09\uff1a<a href=\"https://github.com/mtsee/unicut\" rel=\"nofollow\">https://github.com/mtsee/unicut</a></li>\n<li>Gitee\uff1a<a href=\"https://gitee.com/676015863/unicut\" rel=\"nofollow\">https://gitee.com/676015863/unicut</a></li>\n</ul>\n<hr/>\n<p>AI \u65f6\u4ee3\uff0c\u4eba\u4eba\u90fd\u5728\u7528 AI \u5199\u4ee3\u7801\u3002\u6211\u9009\u62e9\u7528\u6700\u6734\u7d20\u7684\u65b9\u5f0f\uff0c\u5199\u4e00\u4e2a\u5bf9\u5f97\u8d77\u81ea\u5df1\u7684\u4ea7\u54c1\u3002\u5982\u679c\u4f60\u4e5f\u559c\u6b22\u8fd9\u79cd\"\u53e4\u6cd5\"\u7cbe\u795e\uff0c\u6b22\u8fce\u6765\u8bd5\u8bd5\u3001\u6765 Star \u3001\u6765\u63d0 PR \u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/h5ds", 
        "name": "h5ds", 
        "avatar": "https://cdn.v2ex.com/gravatar/8e3888fc1623dfecd51d090cd43cd834?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1230657", 
      "title": "\u7ec8\u4e8e\u6709\u53ef\u4ee5\u66ff\u4ee3\u526a\u6620\u7684\u5f00\u6e90\u89c6\u9891\u5de5\u5177\u4e86\uff01\u6570\u636e\u5168\u672c\u5730\uff0c\u8fd8\u80fd\u7528 AI \u804a\u5929\u526a\u89c6\u9891", 
      "id": "https://www.v2ex.com/t/1230657", 
      "date_published": "2026-07-29T03:39:27+00:00", 
      "content_html": "# \u7ec8\u4e8e\u6709\u53ef\u4ee5\u66ff\u4ee3\u526a\u6620\u7684\u5f00\u6e90\u89c6\u9891\u5de5\u5177\u4e86\uff01\u6570\u636e\u5168\u672c\u5730\uff0c\u8fd8\u80fd\u7528 AI \u804a\u5929\u526a\u89c6\u9891<br /><br />![\u7f16\u8f91\u5668\u754c\u9762]( <a target=\"_blank\" href=\"https://h5ds-cdn.oss-cn-beijing.aliyuncs.com/github/images/chat-ai-to-video.png\" rel=\"nofollow noopener\">https://h5ds-cdn.oss-cn-beijing.aliyuncs.com/github/images/chat-ai-to-video.png</a>)<br /><br />\u5982\u679c\u4f60\u5728\u505a\u89c6\u9891\u521b\u4f5c\uff0c\u5927\u6982\u7387\u7528\u8fc7\u6216\u8005\u81f3\u5c11\u542c\u8fc7**\u526a\u6620**\u3002\u5b83\u786e\u5b9e\u662f\u76ee\u524d\u56fd\u5185\u6700\u597d\u7528\u7684\u89c6\u9891\u526a\u8f91\u5de5\u5177\u4e4b\u4e00\u2014\u2014\u529f\u80fd\u5168\u3001\u6a21\u677f\u591a\u3001\u4e0a\u624b\u5feb\u3002<br /><br />\u4f46\u526a\u6620\u6709\u4e24\u4e2a\u8ba9\u5f88\u591a\u4eba\u5934\u75bc\u7684\u95ee\u9898\uff1a**\u6536\u8d39\u8d8a\u6765\u8d8a\u8d35**\uff08 AI \u529f\u80fd\u3001\u9ad8\u7ea7\u7279\u6548\u3001\u53bb\u6c34\u5370\u90fd\u8981 VIP \uff09\uff0c\u4ee5\u53ca**\u6570\u636e\u5728\u4e91\u7aef**\uff08\u4f60\u7684\u7d20\u6750\u548c\u9879\u76ee\u5b58\u5728\u522b\u4eba\u670d\u52a1\u5668\u4e0a\uff09\u3002<br /><br />**\u6709\u6ca1\u6709\u4e00\u6b3e\u5de5\u5177\uff0c\u529f\u80fd\u4e0d\u8f93\u526a\u6620\uff0c\u5b8c\u5168\u514d\u8d39\u5f00\u6e90\uff0c\u800c\u4e14\u6570\u636e\u53ea\u5728\u4f60\u81ea\u5df1\u7684\u7535\u8111\u4e0a\uff1f**<br /><br />\u4eca\u5929\u8981\u4ecb\u7ecd\u7684\u5c31\u662f\u2014\u2014**UNICUT \uff08\u65e0\u754c\u4e91\u526a\u8f91\uff09**\u3002<br /><br />***<br /><br />## \u4e3a\u4ec0\u4e48 UNICUT \u80fd\u66ff\u4ee3\u526a\u6620\uff1f<br /><br />### \u4e0d\u9700\u8981\u5b89\u88c5\uff0c\u6253\u5f00\u6d4f\u89c8\u5668\u5c31\u80fd\u7528<br /><br />UNICUT \u662f\u4e00\u4e2a**\u7eaf Web \u7aef**\u7684\u89c6\u9891\u7f16\u8f91\u5668\u3002\u4e0d\u88c5\u5ba2\u6237\u7aef\u3001\u4e0d\u5360\u786c\u76d8\u7a7a\u95f4\u3001\u4e0d\u7528\u62c5\u5fc3\u7cfb\u7edf\u517c\u5bb9\u6027\u3002\u7535\u8111\u4e0a\u6709 Chrome \u6216 Edge \u6d4f\u89c8\u5668\u5c31\u80fd\u6253\u5f00\u3002<br /><br />\u4f46\u5343\u4e07\u522b\u4ee5\u4e3a Web \u7248\u5c31\u662f\"\u73a9\u5177\u7ea7\"\u3002UNICUT \u7528\u4e86\u4e00\u5957\u6781\u5176\u786c\u6838\u7684\u6280\u672f\u6808\u2014\u2014PixiJS WebGL \u6e32\u67d3\u753b\u5e03\u3001FFmpeg<br />WebAssembly \u505a\u89c6\u9891\u7f16\u89e3\u7801\u3001MediaPipe + ONNX Runtime Web \u505a AI \u63a8\u7406\u2014\u2014**\u6240\u6709\u8fd0\u7b97\u90fd\u5728\u6d4f\u89c8\u5668\u672c\u5730\u5b8c\u6210\uff0c\u6027\u80fd\u4e0d\u8f93\u539f\u751f\u5e94\u7528**\u3002<br /><br />### \u529f\u80fd\u5168\u9762\u5bf9\u6807<br /><br />\u526a\u6620\u6709\u7684\u6838\u5fc3\u529f\u80fd\uff0cUNICUT \u57fa\u672c\u90fd\u6709\uff1a<br /><br />| \u529f\u80fd          | \u526a\u6620    | UNICUT |<br />| ----------- | ----- | ------ |<br />| \u591a\u8f68\u9053\u65f6\u95f4\u8f74      | \u2705     | \u2705      |<br />| \u5173\u952e\u5e27\u52a8\u753b       | \u2705     | \u2705      |<br />| \u8f6c\u573a\u6548\u679c        | \u2705     | \u2705      |<br />| LUT \u8c03\u8272\u6ee4\u955c    | \u2705     | \u2705      |<br />| \u7eff\u5e55\u62a0\u56fe        | \u2705     | \u2705      |<br />| \u66f2\u7ebf\u53d8\u901f        | \u2705     | \u2705      |<br />| \u8499\u7248          | \u2705     | \u2705      |<br />| \u6587\u5b57\u6a21\u677f\uff08\u82b1\u5b57\uff09    | \u2705     | \u2705      |<br />| Lottie \u8d34\u7eb8\u52a8\u753b | \u2705     | \u2705      |<br />| \u97f3\u9891\u6de1\u5165\u6de1\u51fa      | \u2705     | \u2705      |<br />| AI \u62a0\u56fe       | \u2705 VIP | \u2705 \u514d\u8d39   |<br />| AI \u8d85\u5206\u8fa8\u7387     | \u274c     | \u2705 \u514d\u8d39   |<br />| AI \u5bf9\u8bdd\u526a\u8f91     | \u274c     | \u2705 \u514d\u8d39   |<br /><br />\u6700\u6700\u5173\u952e\u7684\u4e00\u70b9\uff1a**UNICUT \u6838\u5fc3\u526a\u8f91\u529f\u80fd\u5b8c\u5168\u514d\u8d39\uff0cAI \u62a0\u56fe\u3001\u8d85\u5206\u8fa8\u7387\u3001\u4eba\u50cf\u5206\u79bb\u7b49\u5927\u91cf AI \u80fd\u529b\u4e5f\u514d\u8d39\u5f00\u653e**\u3002<br /><br />***<br /><br />## AI \u80fd\u529b\u76f4\u63a5\u62c9\u6ee1<br /><br />UNICUT \u7684\u514d\u8d39 AI \u529f\u80fd\u5df2\u7ecf\u5168\u9762\u8986\u76d6\u521b\u4f5c\u6d41\u7a0b\u7684\u5404\u4e2a\u73af\u8282\uff1a<br /><br />- **AI \u62a0\u56fe**\uff1a\u57fa\u4e8e MediaPipe \u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\uff0c\u4e00\u952e\u5206\u79bb\u4e3b\u4f53\u548c\u80cc\u666f\uff0c\u63a8\u7406\u5728\u6d4f\u89c8\u5668\u672c\u5730\u5b8c\u6210<br />- **AI \u4eba\u50cf\u5206\u79bb**\uff1a\u7cbe\u786e\u5206\u5272\u4eba\u7269\u4e0e\u80cc\u666f\uff0c\u4e0d\u900a\u8272\u4e8e\u684c\u9762\u7aef\u6548\u679c<br />- **AI \u56fe\u50cf\u8d85\u5206\u8fa8\u7387**\uff1a\u4f4e\u5206\u8fa8\u7387\u7d20\u6750\u4e00\u952e\u53d8\u6e05\u6670\uff0c\u8001\u7167\u7247\u548c\u4f4e\u753b\u8d28\u89c6\u9891\u6709\u6551\u4e86<br />- **AI \u6a61\u76ae\u64e6**\uff1a\u6d82\u62b9\u5f0f\u667a\u80fd\u64e6\u9664\u6c34\u5370\u548c\u4e0d\u9700\u8981\u7684\u7269\u4f53<br />- **AI \u89c6\u9891\u8f68\u8ff9\u8ffd\u8e2a**\uff1a\u8ba9\u8d34\u7eb8\u548c\u6587\u5b57\u81ea\u52a8\u8ddf\u968f\u89c6\u9891\u4e2d\u7684\u7269\u4f53\u79fb\u52a8<br />- **AI \u81ea\u52a8\u8bc6\u522b\u7d20\u6750\u5185\u5bb9**\uff1a\u81ea\u52a8\u5206\u6790\u7d20\u6750\u5e76\u667a\u80fd\u6253\u6807\u7b7e\uff0c\u65b9\u4fbf\u7ba1\u7406\u548c\u68c0\u7d22<br />- **AI \u81ea\u52a8\u526a\u8f91**\uff1a\u667a\u80fd\u5206\u6790\u89c6\u9891\u5185\u5bb9\uff0c\u81ea\u52a8\u9009\u53d6\u7cbe\u5f69\u7247\u6bb5<br /><br />\u540c\u65f6\uff0cUNICUT \u4e5f\u63d0\u4f9b\u4e86 AI \u5b57\u5e55\u3001AI \u6587\u5b57\u8f6c\u8bed\u97f3\u3001AI \u751f\u56fe/\u751f\u89c6\u9891\u7b49\u9ad8\u7ea7 AI \u529f\u80fd\uff0c\u6309\u9700\u4ed8\u8d39\u4f7f\u7528\u3002<br /><br />### \u66f4\u7edd\u7684\u2014\u2014\u7528\u81ea\u7136\u8bed\u8a00\u526a\u89c6\u9891<br /><br />\u8fd9\u662f\u526a\u6620\u76ee\u524d\u5b8c\u5168\u6ca1\u6709\u7684\u529f\u80fd\u3002UNICUT \u5185\u7f6e\u4e86\u4e00\u4e2a AI \u5bf9\u8bdd\u52a9\u624b\uff0c\u63a5\u5165\u4e86 17 \u79cd\u5e95\u5c42\u5de5\u5177\u3002\u4f60\u53ea\u9700\u8981\u7528\u81ea\u7136\u8bed\u8a00\u4e0b\u6307\u4ee4\uff1a<br /><br />&gt; \"\u7ed9\u8fd9\u4e2a\u5143\u7d20\u52a0 5 \u4e2a\u6b8b\u5f71\u6548\u679c\" \"\u5728 3 \u79d2\u7684\u4f4d\u7f6e\u526a\u4e00\u5200\" \"\u900f\u660e\u5ea6\u4f9d\u6b21\u51cf\u5c11 20%\" \"\u628a\u9009\u4e2d\u5143\u7d20\u7684\u5f00\u59cb\u65f6\u95f4\u4f9d\u6b21\u52a0 0.2 \u79d2\"<br /><br />AI \u4f1a\u81ea\u52a8\u8c03\u7528\u5bf9\u5e94\u5de5\u5177\uff0c\u5b8c\u6210\u64cd\u4f5c\u3002\u4e0d\u7528\u627e\u6309\u94ae\u3001\u4e0d\u7528\u8bb0\u5feb\u6377\u952e\u2014\u2014**\u4f60\u8ddf\u5b83\u804a\u5929\uff0c\u5b83\u5c31\u5e2e\u4f60\u526a\u3002**<br /><br />***<br /><br />## \u6570\u636e\u53ea\u5728\u4f60\u81ea\u5df1\u7684\u7535\u8111\u4e0a<br /><br />\u8fd9\u662f UNICUT \u548c\u526a\u6620\u6700\u6839\u672c\u7684\u533a\u522b\u3002<br /><br />\u526a\u6620\u7684\u9879\u76ee\u6587\u4ef6\u3001\u7d20\u6750\u3001\u4e91\u7aef\u8349\u7a3f\u90fd\u5b58\u5728\u670d\u52a1\u5668\u4e0a\u3002\u800c UNICUT \u5229\u7528**\u6d4f\u89c8\u5668 File System Access<br />API**\uff0c\u8ba9\u4f60\u9009\u62e9\u4e00\u4e2a\u672c\u5730\u6587\u4ef6\u5939\u4f5c\u4e3a\u5de5\u4f5c\u76ee\u5f55\u3002\u6240\u6709\u7d20\u6750\u548c\u9879\u76ee\u6570\u636e\u76f4\u63a5\u5b58\u50a8\u5728\u8fd9\u4e2a\u6587\u4ef6\u5939\u91cc\u2014\u2014**\u6ca1\u6709\u4e2d\u95f4\u670d\u52a1\u5668\uff0c\u6ca1\u6709\u4e91\u5b58\u50a8\uff0c\u4f60\u7684\u7d20\u6750\u6c38\u8fdc\u5c5e\u4e8e\u4f60\u81ea\u5df1**\u3002<br /><br />\u5bf9\u4e8e\u4f01\u4e1a\u7528\u6237\u3001MCN \u673a\u6784\u3001\u6216\u8005\u4efb\u4f55\u5728\u610f\u6570\u636e\u9690\u79c1\u7684\u521b\u4f5c\u8005\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u4e2a\u521a\u9700\u7ea7\u522b\u7684\u5dee\u5f02\u3002<br /><br />***<br /><br />## \u5f00\u6e90\u610f\u5473\u7740\u4ec0\u4e48\uff1f<br /><br />\u8fd9\u610f\u5473\u7740\uff1a<br /><br />- **\u5b8c\u5168\u514d\u8d39**\uff1a\u6ca1\u6709\u529f\u80fd\u9650\u5236\uff0c\u6ca1\u6709\u6c34\u5370\uff0c\u6ca1\u6709\u4ed8\u8d39\u5899<br />- **\u4ee3\u7801\u900f\u660e**\uff1a\u4f60\u53ef\u4ee5\u770b\u5230\u6bcf\u4e00\u884c\u4ee3\u7801\uff0c\u4e0d\u7528\u62c5\u5fc3\u540e\u95e8\u6216\u9690\u79c1\u6cc4\u9732<br />- **\u53ef\u5b9a\u5236**\uff1a\u4f01\u4e1a\u53ef\u4ee5\u57fa\u4e8e UNICUT \u4e8c\u6b21\u5f00\u53d1\uff0c\u5b9a\u5236\u81ea\u5df1\u7684\u526a\u8f91\u5de5\u5177<br />- **\u793e\u533a\u9a71\u52a8**\uff1aBug \u4fee\u590d\u3001\u529f\u80fd\u8fed\u4ee3\u7531\u793e\u533a\u5171\u540c\u63a8\u8fdb<br /><br />***<br /><br />## \u9002\u5408\u8c01\u7528\uff1f<br /><br />| \u7528\u6237\u7c7b\u578b            | \u63a8\u8350\u7406\u7531                 |<br />| --------------- | -------------------- |<br />| **\u4e2a\u4eba\u521b\u4f5c\u8005**       | \u514d\u8d39\u3001\u529f\u80fd\u5168\u3001AI \u52a0\u6301\uff0c\u96f6\u6210\u672c\u4e13\u4e1a\u526a\u8f91 |<br />| **MCN / \u81ea\u5a92\u4f53\u56e2\u961f** | \u6570\u636e\u672c\u5730\u5b58\u50a8\uff0c\u7d20\u6750\u5b89\u5168\u6709\u4fdd\u969c       |<br />| **\u4f01\u4e1a\u7528\u6237**        | \u5f00\u6e90\u53ef\u5b9a\u5236\uff0c\u53ef\u96c6\u6210\u5230\u5185\u90e8\u7cfb\u7edf       |<br />| **\u5f00\u53d1\u8005**         | \u6280\u672f\u6808\u5148\u8fdb\uff0c\u5b66\u4e60\u524d\u7aef\u89c6\u9891\u5904\u7406\u7684\u6700\u4f73\u5b9e\u8df5  |<br />| **\u6559\u80b2\u673a\u6784**        | \u96f6\u5b89\u88c5\u95e8\u69db\uff0c\u5b66\u751f\u6253\u5f00\u6d4f\u89c8\u5668\u5c31\u80fd\u4e0a\u8bfe    |<br /><br />***<br /><br />## \u5feb\u901f\u5f00\u59cb<br /><br />```bash<br />git clone <a target=\"_blank\" href=\"https://github.com/your-org/unicut.git\" rel=\"nofollow noopener\">https://github.com/your-org/unicut.git</a><br />cd unicut<br />yarn install<br />yarn dev<br />```<br /><br />\u6253\u5f00\u6d4f\u89c8\u5668\uff0c\u9009\u62e9\u4e00\u4e2a\u672c\u5730\u6587\u4ef6\u5939\uff0c\u5f00\u59cb\u521b\u4f5c\u3002<br /><br />***<br /><br />## \u5199\u5728\u6700\u540e<br /><br />\u526a\u6620\u662f\u4e00\u6b3e\u4f18\u79c0\u7684\u4ea7\u54c1\uff0c\u4f46\u5b83\u4e5f\u8d8a\u6765\u8d8a\u50cf\u4e00\u4e2a\"\u4ed8\u8d39\u5de5\u5177\"\u3002UNICUT \u7684\u51fa\u73b0\u8bc1\u660e\u4e86\uff1a**\u4e0d\u82b1\u94b1\u3001\u4e0d\u4e0a\u4f20\u6570\u636e\u3001\u4e0d\u5b89\u88c5\u5ba2\u6237\u7aef\u2014\u2014\u4e5f\u80fd\u505a\u51fa\u4e13\u4e1a\u7ea7\u7684\u89c6\u9891\u7f16\u8f91\u5de5\u5177\u3002**<br /><br />\u5f00\u6e90\u7684\u529b\u91cf\u5728\u4e8e\uff1a\u5b83\u4e0d\u4f1a\u56e0\u4e3a\u5546\u4e1a\u7b56\u7565\u800c\u9609\u5272\u529f\u80fd\uff0c\u4e0d\u4f1a\u56e0\u4e3a\u8425\u6536\u538b\u529b\u800c\u52a0\u5e7f\u544a\uff0c\u4e0d\u4f1a\u56e0\u4e3a\u6570\u636e\u53d8\u73b0\u9700\u6c42\u800c\u4e0a\u4f20\u4f60\u7684\u7d20\u6750\u3002<br /><br />**\u5982\u679c\u4f60\u662f\u521b\u4f5c\u8005\uff0c\u4f60\u7684\u5de5\u5177\u5e94\u8be5\u4e3a\u4f60\u670d\u52a1\uff0c\u800c\u4e0d\u662f\u53cd\u8fc7\u6765\u3002**<br /><br />\u8bd5\u8bd5 UNICUT \uff0c\u4f60\u53ef\u80fd\u518d\u4e5f\u56de\u4e0d\u53bb\u4e86\u3002<br /><br />***<br /><br />&lt;p align=\"center\"&gt;<br />  &lt;b&gt;UNICUT \u2014 \u5f00\u6e90\u3001\u514d\u8d39\u3001\u6570\u636e\u5f52\u4f60&lt;/b&gt;<br />&lt;/p&gt;"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinghelee", 
        "name": "xinghelee", 
        "avatar": "https://cdn.v2ex.com/avatar/7e6d/6496/71832_large.png?m=1785605452"
      }, 
      "url": "https://www.v2ex.com/t/1229496", 
      "title": "\u5f00\u6e90\u4e00\u6b3e MAC \u539f\u751f\u7ec8\u7aef\u548c\u4e00\u6b3e\u539f\u751f SSH \u5ba2\u6237\u7aef", 
      "id": "https://www.v2ex.com/t/1229496", 
      "date_published": "2026-07-24T03:03:06+00:00", 
      "content_html": "<p>macOS \u539f\u751f\u7ec8\u7aef\u3002\u9760\u539f\u751f SwiftUI \u8d28\u611f + \u6df1\u5ea6 shell \u96c6\u6210\u7684\u6548\u7387\u529f\u80fd\u505a\u5dee\u5f02\u5316\u3002\u65e0\u9650\u5206\u5c4f\uff0c\u6587\u4ef6\u6d4f\u89c8\uff0cGit \u9762\u677f\u7b49\u7684\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/lalQDNFz.png\"/></p>\n<p><a href=\"https://github.com/xinghelee/Termite\" rel=\"nofollow\">https://github.com/xinghelee/Termite</a></p>\n<p>Berth \u662f\u4e00\u6b3e Swift \u539f\u751f\u7684 macOS SSH \u5ba2\u6237\u7aef\u2014\u2014Metal \u6e32\u67d3\u7ec8\u7aef\u3001\u8fde\u63a5\u590d\u7528\u3001\u65e0\u9650\u5206\u5c4f\u3002\u5bc6\u7801\u4e0e\u79c1\u94a5\u53ea\u8fdb Keychain,\u4efb\u4f55\u6570\u636e\u4e0d\u79bb\u5f00\u4f60\u7684 Mac \u3002</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/NY43Qffal.png\"/></p>\n<p><a href=\"https://github.com/xinghelee/Berth\" rel=\"nofollow\">https://github.com/xinghelee/Berth</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/leitwolf", 
        "name": "leitwolf", 
        "avatar": "https://cdn.v2ex.com/avatar/56c5/bea2/116416_large.png?m=1431357306"
      }, 
      "url": "https://www.v2ex.com/t/1229480", 
      "title": "PurePic\uff1a\u4e00\u4e2a\u7531 AI \u5168\u5236\u4f5c\u7684\u8f7b\u91cf\u56fe\u7247\u67e5\u770b\u5668", 
      "id": "https://www.v2ex.com/t/1229480", 
      "date_published": "2026-07-24T02:31:16+00:00", 
      "content_html": "<p>PurePic \u662f\u4e00\u4e2a\u9762\u5411 Windows x64 \u7684\u539f\u751f\u56fe\u7247\u67e5\u770b\u5668\uff0c\u8bbe\u8ba1\u3001\u4ee3\u7801\u548c\u6587\u6863\u5747\u7531 AI \u5b8c\u6210\u3002\u5b83\u5c0f\u5de7\u8f7b\u5feb\uff0c\u5f53\u524d\u5355\u6587\u4ef6 EXE \u53ea\u6709\u7ea6 674 KiB \uff0c\u65e0\u9700\u5b89\u88c5\uff0c\u4e0b\u8f7d\u540e\u5373\u53ef\u8fd0\u884c\u3002</p>\n<p>\u5b83\u652f\u6301\u5e38\u89c1\u56fe\u7247\u683c\u5f0f\u3001\u7f29\u653e\u548c\u5e73\u79fb\u3001\u5168\u5c4f\u3001\u540c\u76ee\u5f55\u56fe\u7247\u5207\u6362\u3001\u7f29\u7565\u56fe\u6d4f\u89c8\u3001\u5217\u8868\u5237\u65b0\u53ca\u79fb\u5165\u56de\u6536\u7ad9\u7b49\u529f\u80fd\u3002\u5982\u679c\u4f60\u89c9\u5f97 Windows \u7cfb\u7edf\u81ea\u5e26\u7684\u56fe\u7247\u67e5\u770b\u5668\u4e0d\u591f\u8f7b\u4fbf\uff0cPurePic \u53ef\u4ee5\u4f5c\u4e3a\u4e00\u4e2a\u7b80\u6d01\u3001\u5feb\u901f\u7684\u66ff\u4ee3\u9009\u62e9\u3002</p>\n<h2>\u6280\u672f\u6808</h2>\n<p>PurePic \u4f7f\u7528 Rust 2024 \u548c windows-rs \u5f00\u53d1\uff0c\u57fa\u4e8e\u539f\u751f Win32 \u6784\u5efa\u754c\u9762\uff0c\u901a\u8fc7 WIC \u89e3\u7801\u56fe\u7247\uff0c\u5e76\u4f7f\u7528 Direct2D \u3001DirectWrite \u3001D3D11 \u548c DXGI \u5b8c\u6210\u6e32\u67d3\u3002</p>\n<p>\u9879\u76ee\u5730\u5740\uff1a<a href=\"https://github.com/lonewolf9527/PurePic\" rel=\"nofollow\">GitHub - PurePic</a></p>\n<p><img alt=\"PurePic 1.1.0 \u622a\u56fe\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/lonewolf9527/PurePic/main/images/screenshot.jpg\"/></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yanghuichaofb", 
        "name": "yanghuichaofb", 
        "avatar": "https://cdn.v2ex.com/gravatar/462141048ebd51eb1a48702d93062c0a?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1227895", 
      "date_modified": "2026-07-18T08:30:26+00:00", 
      "content_html": "<p>\u6211\u505a\u4e86\u4e00\u4e2a AI \u5199\u6807\u4e66\u7684\u5de5\u5177\uff1a\n<a href=\"https://linux.do/t/topic/2282202\" rel=\"nofollow\"> [\u5f00\u6e90\u81ea\u8350]  OpenBidKit_Yibiao\uff1a\u4e00\u4e2a\u57fa\u4e8e AI \u7684\u667a\u80fd\u6295\u6807\u5de5\u5177\u7bb1 - \u8d44\u6e90\u835f\u8403 - LINUX DO</a>\n\u8ba4\u771f\u7ef4\u62a4\u4e86 3 \u4e2a\u591a\u6708\uff0c\u6536\u83b7 1000+start 4000+\u7528\u6237\u3002\n\u4e4b\u524d\u4e5f\u6709\u7528\u6237\u53cd\u9988\uff0c\u5728\u5404\u81ea\u5a92\u4f53\u5e73\u53f0\u53d1\u73b0\u5f88\u591a\u660e\u663e\u5957\u58f3\u6613\u6807\u7684\u4e8c\u5f00\u8f6f\u4ef6\u3002\n\u4f46\u662f\u505a\u5f00\u6e90\u9879\u76ee\uff0c\u522b\u4eba\u62ff\u53bb\u4e8c\u5f00\u4e5f\u662f\u5f88\u6b63\u5e38\u7684\uff0c\u6211\u5e76\u6ca1\u6709\u653e\u5728\u5fc3\u4e0a\u3002</p>\n<p>\u76f4\u5230\u6628\u665a\uff0c\u6709\u7528\u6237\u8ddf\u6211\u8bf4\u5728\u54b8\u9c7c\u4e0a\uff0c\u6709\u76f4\u63a5\u62ff\u7740\u6211\u7684\u5f00\u6e90\u53d1\u884c\u7248\u53bb\u5356\u7684\uff0c\u800c\u4e14\u5356\u7684\u86ee\u597d...\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://oss.agnet.top/keep/2026/07/17/20260717090402803.png\"/></p>\n<p>\u770b\u4e86\u4ed6\u7684\u9500\u552e\u8bb0\u5f55\uff0c\u6211\u6709\u70b9\u868c\u57e0\u4f4f\u4e86\uff0c\u7adf\u7136\u5356\u7684\u6bd4\u6211\u7684\u5f00\u6e90\u6253\u8d4f\u591a\u591a\u4e86\uff0c\u679c\u7136\u4eba\u8d5a\u4e0d\u5230\u81ea\u5df1\u8ba4\u77e5\u4ee5\u5916\u7684\u94b1\uff01\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://oss.agnet.top/keep/2026/07/17/20260717090402804.png\"/></p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://oss.agnet.top/keep/2026/07/17/20260717090402805.png\"/></p>\n<p>\u800c\u6211\u82e6\u82e6\u66f4\u65b0\u4e86\u51e0\u4e2a\u6708\uff0c\u6536\u5230\u7684\u6253\u8d4f\u4e0d\u8fc7\u4e00\u767e\u591a\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://oss.agnet.top/keep/2026/07/17/20260717090402807.png\"/></p>\n", 
      "date_published": "2026-07-17T01:07:06+00:00", 
      "title": "\u7136\u4eba\u8d5a\u4e0d\u5230\u81ea\u5df1\u8ba4\u77e5\u4ee5\u5916\u7684\u94b1\uff01", 
      "id": "https://www.v2ex.com/t/1227895"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jsyzchen", 
        "name": "jsyzchen", 
        "avatar": "https://cdn.v2ex.com/avatar/4769/4004/107780_large.png?m=1784173474"
      }, 
      "url": "https://www.v2ex.com/t/1227686", 
      "title": "\u5199\u4e86\u4e00\u4e2a\u8f7b\u91cf\u7684\u540e\u53f0\u5bfc\u822a\u9875 Admin Dock\uff0c Docker \u4e00\u952e\u90e8\u7f72", 
      "id": "https://www.v2ex.com/t/1227686", 
      "date_published": "2026-07-16T03:48:31+00:00", 
      "content_html": "<p>\u5e73\u65f6\u5de5\u4f5c\u548c\u6298\u817e\u9879\u76ee\u65f6\uff0c\u5404\u79cd\u540e\u53f0\u5730\u5740\u8d8a\u79ef\u8d8a\u591a\uff1a\u751f\u4ea7\u73af\u5883\u3001\u6d4b\u8bd5\u73af\u5883\u3001\u5f00\u53d1\u73af\u5883\uff0c\u518d\u52a0\u4e0a\u76d1\u63a7\u3001\u6570\u636e\u5e93\u3001CI/CD \u7b49\u5de5\u5177\uff0c\u7ecf\u5e38\u8981\u7ffb\u6d4f\u89c8\u5668\u4e66\u7b7e\uff0c\u5076\u5c14\u8fd8\u4f1a\u70b9\u9519\u73af\u5883\u3002</p>\n<p>\u4e8e\u662f\u6211\u505a\u4e86\u4e00\u4e2a\u8f7b\u91cf\u7684\u540e\u53f0\u5bfc\u822a\u9875\uff1a<strong>Admin Dock</strong>\u3002</p>\n<p>\u5b83\u6709\u70b9\u50cf\u4e00\u4e2a\u4e13\u95e8\u653e\u540e\u53f0\u7cfb\u7edf\u7684 Launchpad \uff0c\u53ef\u4ee5\u628a\u5e38\u7528\u5165\u53e3\u96c6\u4e2d\u5230\u4e00\u4e2a\u9875\u9762\u7ba1\u7406\uff0c\u5e76\u901a\u8fc7\u9192\u76ee\u7684\u6807\u7b7e\u533a\u5206 <code>prod</code>\u3001<code>test</code> \u548c <code>dev</code> \u73af\u5883\u3002</p>\n<p>\u76ee\u524d\u652f\u6301\uff1a</p>\n<ul>\n<li>\u6309\u540d\u79f0\u6216\u57df\u540d\u641c\u7d22\uff0c\u652f\u6301 <code>\u2318/Ctrl + K</code> \u5feb\u901f\u805a\u7126</li>\n<li>\u6309\u751f\u4ea7\u3001\u6d4b\u8bd5\u3001\u5f00\u53d1\u73af\u5883\u7b5b\u9009</li>\n<li>\u6dfb\u52a0\u3001\u7f16\u8f91\u548c\u5220\u9664\u540e\u53f0\u5165\u53e3</li>\n<li>\u586b\u5199\u7f51\u5740\u540e\uff0c\u81ea\u52a8\u8bc6\u522b\u7f51\u9875\u6807\u9898\u548c\u56fe\u6807</li>\n<li>\u652f\u6301\u4e0a\u4f20\u81ea\u5b9a\u4e49\u56fe\u6807</li>\n<li>\u684c\u9762\u3001\u5e73\u677f\u548c\u624b\u673a\u7aef\u81ea\u9002\u5e94</li>\n<li>Go + SQLite \uff0c\u6570\u636e\u672c\u5730\u6301\u4e45\u5316</li>\n<li>\u5355\u5bb9\u5668\u8fd0\u884c\uff0c\u4e0d\u4f9d\u8d56 MySQL \u3001Redis \u7b49\u5916\u90e8\u670d\u52a1</li>\n</ul>\n<p>\u90e8\u7f72\u4e5f\u6bd4\u8f83\u7b80\u5355\uff0c\u62c9\u53d6\u9879\u76ee\u540e\u6267\u884c\uff1a</p>\n<pre><code class=\"language-bash\">docker compose up -d --build\n</code></pre>\n<p>\u7136\u540e\u8bbf\u95ee\uff1a</p>\n<pre><code class=\"language-text\">http://localhost:3000\n</code></pre>\n<p>\u76ee\u524d\u9879\u76ee\u5b9a\u4f4d\u662f\u4e2a\u4eba\u4f7f\u7528\u6216\u90e8\u7f72\u5728\u53ef\u4fe1\u5185\u7f51\uff0c\u6240\u4ee5\u6682\u65f6\u6ca1\u6709\u8d26\u53f7\u548c\u6743\u9650\u7cfb\u7edf\u3002\u5982\u679c\u9700\u8981\u4ece\u516c\u7f51\u8bbf\u95ee\uff0c\u5efa\u8bae\u5728\u53cd\u5411\u4ee3\u7406\u5c42\u589e\u52a0\u8ba4\u8bc1\u548c HTTPS \u3002</p>\n<p>\u9879\u76ee\u521a\u5f00\u6e90\u4e0d\u4e45\uff0c\u529f\u80fd\u8fd8\u6bd4\u8f83\u514b\u5236\u3002\u540e\u7eed\u51c6\u5907\u6839\u636e\u5b9e\u9645\u4f7f\u7528\u60c5\u51b5\u7ee7\u7eed\u5b8c\u5584\uff0c\u4e5f\u6b22\u8fce\u5927\u5bb6\u63d0 Issue \u3001\u5efa\u8bae\u529f\u80fd\u6216\u8005\u8d21\u732e\u4ee3\u7801\u3002</p>\n<p>GitHub\uff1a<br/>\n<a href=\"https://github.com/jsyzchen/admin-dock\" rel=\"nofollow\">jsyzchen/admin-dock</a></p>\n<p>\u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u4f60\u6709\u70b9\u7528\uff0c\u6216\u8005\u89c9\u5f97\u601d\u8def\u8fd8\u4e0d\u9519\uff0c<strong>\u6c42\u4e00\u4e2a Star \u2b50</strong>\uff0c\u611f\u8c22\u5404\u4f4d V \u53cb\u652f\u6301\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/2933170747", 
        "name": "2933170747", 
        "avatar": "https://cdn.v2ex.com/avatar/3c17/d634/301534_large.png?m=1761117652"
      }, 
      "url": "https://www.v2ex.com/t/1226944", 
      "title": "\u7ec8\u4e8e\u505a\u51fa\u4e86\u6211\u7406\u60f3\u4e2d\u7684\u90a3\u4e2a\u4f18\u96c5\u7684\u8de8\u5e73\u53f0\u9605\u8bfb\u8f6f\u4ef6", 
      "id": "https://www.v2ex.com/t/1226944", 
      "date_published": "2026-07-13T06:48:09+00:00", 
      "content_html": "<h3><strong>\u7b80\u5355\u6765\u8bf4</strong></h3>\n<p>ReadAware:</p>\n<ul>\n<li>\u662f\u4e2a\u73b0\u4ee3\u4e14\u4f18\u96c5\u7684\u9605\u8bfb\u5668\uff0c\u652f\u6301 macOS/Windows/Linus/Android/iOS \u5168\u5e73\u53f0\u4f7f\u7528\uff08<em>\u4f46\u662f iOS \u8fd8\u6ca1\u4e0a\u67b6\uff0c\u5e76\u4e14 Windows/Linux \u7f3a\u4e4f\u5e7f\u6cdb\u6d4b\u8bd5</em>\uff09</li>\n<li>\u5185\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8c03\u7528\u5404\u79cd\u5de5\u5177\u7684 Agent \uff0c\u5e76\u4e14\u652f\u6301\u81ea\u8fdb\u5316\u7684\u8bb0\u5fc6\u7cfb\u7edf</li>\n<li>\u514d\u8d39\u4e14\u5f00\u6e90</li>\n</ul>\n<h3>\u4e3a\u4ec0\u4e48\u4f18\u96c5</h3>\n<ul>\n<li>UI \u754c\u9762\u662f\u50cf\u7d20\u7ea7\u7cbe\u8c03\u8fc7\u7684\uff0c\u81f3\u5c11\u6211\u89c9\u5f97\u5b83\u5f88\u6f02\u4eae\u3002\u867d\u7136\u6ca1\u6709\u4e00\u884c\u4ee3\u7801\u662f\u6211\u624b\u5199\u7684\uff0c\u4f46\u662f\u4f60\u4e0d\u4f1a\u770b\u89c1\u4efb\u4f55 AI slop</li>\n<li>\u6700\u559c\u6b22\u7684\u529f\u80fd\uff1a\u9010\u53e5\u9605\u8bfb\uff0cADHD \u53cb\u597d\uff0c\u5e76\u4e14\u652f\u6301\u4e30\u5bcc\u7684\u6807\u8bb0\u7cfb\u7edf\uff08\u4e0b\u5212\u7ebf\u3001\u9ad8\u4eae\u3001\u7b14\u8bb0\uff09</li>\n<li>\u652f\u6301\u591a\u79cd\u8bed\u8a00\u3001\u914d\u8272\u3001\u5b57\u4f53\u3001\u5927\u5c0f\u7b49\u7b49\u9605\u8bfb\u8bbe\u7f6e\uff0c\u540e\u7eed\u9884\u8ba1\u652f\u6301\u66f4\u591a\uff01</li>\n<li>\u4e0d\u61c2\u7684\u968f\u65f6\u53ef\u4ee5\u95ee AI \u3001\u548c\u5b83\u804a\u5929\uff0c\u8fd8\u53ef\u4ee5\u67e5\u5355\u8bcd\uff08\u751a\u81f3\u53ef\u4ee5\u6807\u6ce8\uff0c\u65b9\u4fbf\u4ee5\u540e\u590d\u4e60\uff09</li>\n<li>\u9605\u8bfb\u65f6\u95f4\u7edf\u8ba1\uff08\u5176\u5b9e\u9664\u4e86\u8de8\u5e73\u53f0\u540c\u6b65\u4e4b\u5916\uff0c\u8fd9\u662f\u5fae\u4fe1\u8bfb\u4e66\u6211\u6700\u559c\u6b22\u7684\u529f\u80fd\uff09</li>\n<li>\u8de8\u5e73\u53f0\uff0c\u5728\u624b\u673a\u548c\u5e73\u677f\u4e0a\u7167\u6837\u53ef\u4ee5\u8bfb\u4e66\uff0c\u540e\u7eed\u8fd8\u4f1a\u652f\u6301\u8de8\u5e73\u53f0\u540c\u6b65</li>\n<li>\u4ee5\u53ca\u66f4\u591a\u5c0f\u7ec6\u8282</li>\n</ul>\n<h3>\u5f00\u59cb\u4f53\u9a8c\uff01</h3>\n<ul>\n<li>\u53ef\u4ee5\u5728<a href=\"https://readaware.app\" rel=\"nofollow\">\u5b98\u7f51</a>\u4e0b\u8f7d</li>\n<li>\u4e5f\u53ef\u4ee5\u5728 <a href=\"https://github.com/ahpxex/read-aware\" rel=\"nofollow\">GitHub Release</a> \u4e0b\u8f7d</li>\n<li>\u5546\u5e97\u652f\u6301\u8fd8\u5728\u4e0a\u67b6\u4e2d</li>\n</ul>\n<p>\u540c\u65f6\uff0c\u6b22\u8fce\u7ed9\u6211\u63d0 issues \u3001\u8d21\u732e\u4ee3\u7801</p>\n<p>GitHub:\n<a href=\"https://github.com/ahpxex/read-aware\" rel=\"nofollow\">https://github.com/ahpxex/read-aware</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/mingoing428", 
        "name": "mingoing428", 
        "avatar": "https://cdn.v2ex.com/gravatar/179f6b996d1e520edc0f9af1248b745e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1226670", 
      "title": "cursor canvas \u6280\u80fd\u590d\u523b", 
      "id": "https://www.v2ex.com/t/1226670", 
      "date_published": "2026-07-12T03:06:45+00:00", 
      "content_html": "<p>\u4ecb\u7ecd: <a href=\"https://cursor.com/cn/blog/canvas\" rel=\"nofollow\">https://cursor.com/cn/blog/canvas</a></p>\n<p>\u8fd9\u4e2a\u7b97\u662f\u9006\u5411\u91cd\u65b0\u5b9e\u73b0\u7684\u7248\u672c, \u4e0d\u4f9d\u8d56 cursor,\u4efb\u4f55 ai agent \u90fd\u80fd\u4f7f\u7528\n<a href=\"https://github.com/eightHundreds/canvasx\" rel=\"nofollow\">https://github.com/eightHundreds/canvasx</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cuishuang", 
        "name": "cuishuang", 
        "avatar": "https://cdn.v2ex.com/gravatar/ab03a22e9f5ca6080e6b15b887632bd5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1226353", 
      "date_modified": "2026-07-10T04:37:30+00:00", 
      "content_html": "<p>\u4f7f\u7528 Rust+egui+SQLite \u5199\u4e86\u4e00\u4e2a\u5ba2\u6237\u7aef\u5de5\u5177\uff1aDuplicate File Checker \uff0c\u4e00\u6b3e\u8de8\u8bbe\u5907\u7684\u91cd\u590d\u6587\u4ef6\u6e05\u7406\u5668\u3002</p>\n<p>\u8be5\u5de5\u5177\u4e3b\u8981\u89e3\u51b3\u4e00\u4e2a\u6211\u81ea\u5df1\u7ecf\u5e38\u9047\u5230\u7684\u95ee\u9898\uff1a\u624b\u91cc\u6709\u591a\u5757\u79fb\u52a8\u786c\u76d8\uff0c\u6709\u591a\u53f0\u7535\u8111\uff0c\u591a\u4e2a\u5907\u4efd\u76ee\u5f55\uff0c\u65f6\u95f4\u4e00\u4e45\uff0c\u8fd9\u4e9b\u8bbe\u5907\u548c\u5b58\u50a8\u4e2d\u4f1a\u6709\u5927\u91cf\u91cd\u590d\u7684\u89c6\u9891\u3001\u56fe\u7247\u3001\u5907\u4efd\u6587\u4ef6\u3002\u4f46\u8fd9\u4e9b\u786c\u76d8/\u8bbe\u5907\u53c8\u4e0d\u53ef\u80fd\u540c\u65f6\u5168\u90e8\u63d2\u5728\u4e00\u53f0\u7535\u8111\u4e0a\uff0c\u4f20\u7edf\u7684\u5355\u673a\u67e5\u91cd\u5de5\u5177\u5c31\u4e0d\u592a\u597d\u7528\u3002\u2026</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://files.mdnice.com/user/68120/057befe1-ff7c-4b77-bb82-3e5588862274.jpg\"/></p>\n<p>\u5728\u5b58\u50a8\u4ef7\u683c\u56e0\u4e3a AI \u70ed\u6f6e\u800c\u98de\u6da8\u7684\u4eca\u5929\uff0c\u51fa\u4e8e\u8282\u7ea6\u8003\u91cf\uff0c\u6709\u4e86\u8fd9\u4e2a\u5de5\u5177\u3002</p>\n<p>Duplicate File Checker \u7684\u89e3\u51b3\u601d\u8def\u662f\uff1a\u5148\u5206\u522b\u626b\u63cf\u4e0d\u540c\u786c\u76d8\u6216\u76ee\u5f55\uff0c\u628a\u6587\u4ef6\u7d22\u5f15\u4fdd\u5b58\u5728\u672c\u5730\u6570\u636e\u5e93\u91cc\uff1b\u4e4b\u540e\u5373\u4f7f\u786c\u76d8\u4e0d\u540c\u65f6\u8fde\u63a5\uff0c\u4e5f\u53ef\u4ee5\u57fa\u4e8e\u5386\u53f2\u7d22\u5f15\u505a\u8de8\u78c1\u76d8\u67e5\u91cd\u3002\u5b83\u652f\u6301\u6309\u6587\u4ef6\u5927\u5c0f\u5feb\u901f\u5339\u914d\uff0c\u4e5f\u652f\u6301\u201c\u6587\u4ef6\u5927\u5c0f + \u91c7\u6837 SHA-256 Hash\u201d\u505a\u66f4\u7cbe\u786e\u7684\u5224\u65ad\u3002</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://files.mdnice.com/user/68120/b117f138-eb0f-467a-8927-2a5389736c26.jpg\"/></p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://files.mdnice.com/user/68120/0028fba1-398a-4346-8445-a45113591636.jpg\"/></p>\n<p>\u76ee\u524d\u5df2\u652f\u6301\u539f\u751f\u684c\u9762 GUI \u548c\u547d\u4ee4\u884c\u6a21\u5f0f\uff0cMac \u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d dmg \u4f7f\u7528\u3002\u5220\u9664\u65f6\u9ed8\u8ba4\u79fb\u5230\u5e9f\u7eb8\u7bd3\uff0c\u5e76\u4e14\u9700\u8981\u624b\u52a8\u52fe\u9009\u786e\u8ba4\uff0c\u5c3d\u91cf\u907f\u514d\u8bef\u5220\u3002</p>\n<p>\u9002\u5408\u8fd9\u4e9b\u573a\u666f\uff1a</p>\n<ul>\n<li>\u591a\u5757\u79fb\u52a8\u786c\u76d8\u4e4b\u95f4\u67e5\u91cd\u590d\u6587\u4ef6</li>\n<li>\u6e05\u7406\u89c6\u9891\u3001\u56fe\u7247\u3001\u4e0b\u8f7d\u76ee\u5f55\u3001\u5907\u4efd\u76d8</li>\n<li>\u627e\u51fa\u4e0d\u540c\u7535\u8111\u4e4b\u95f4\u91cd\u590d\u4fdd\u5b58\u7684\u5927\u6587\u4ef6</li>\n<li>\u5148\u626b\u63cf\u5efa\u7d22\u5f15\uff0c\u4e4b\u540e\u6162\u6162\u51b3\u5b9a\u5220\u54ea\u4e9b</li>\n</ul>\n<p>\u9879\u76ee\u5730\u5740\uff1a\n<a href=\"https://github.com/cuishuang/Duplicate-File-Checker\" rel=\"nofollow\">https://github.com/cuishuang/Duplicate-File-Checker</a></p>\n<p>\u5982\u679c\u4f60\u4e5f\u88ab\u591a\u4e2a\u79fb\u52a8\u786c\u76d8\u6216\u5b58\u50a8\u8bbe\u5907\u91cc\u7684\u91cd\u590d\u6587\u4ef6\u6298\u78e8\u8fc7\uff0c\u53ef\u4ee5\u8bd5\u8bd5\u770b\u3002\u6b22\u8fce Star \uff0c\u4e5f\u6b22\u8fce\u63d0 Issue \u548c\u5efa\u8bae\u3002</p>\n", 
      "date_published": "2026-07-10T04:33:58+00:00", 
      "title": "\u4e00\u6b3e\u8de8\u8bbe\u5907\u7684\u91cd\u590d\u6587\u4ef6\u6e05\u7406\u5668", 
      "id": "https://www.v2ex.com/t/1226353"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hixuri", 
        "name": "hixuri", 
        "avatar": "https://cdn.v2ex.com/avatar/5c54/c0e8/47508_large.png?m=1771988114"
      }, 
      "url": "https://www.v2ex.com/t/1226039", 
      "title": "Excelize \u5f00\u6e90\u5341\u5468\u5e74\uff0c\u53d1\u5e03 2.11.0 \u7248\u672c", 
      "id": "https://www.v2ex.com/t/1226039", 
      "date_published": "2026-07-09T03:01:37+00:00", 
      "content_html": "<p><img alt='\"Excelize \u5f00\u6e90\u5341\u5468\u5e74\uff0c\u53d1\u5e03 2.11.0 \u7248\u672c\"' class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://xuri.me/wp-content/uploads/2026/07/excelize_10th_anniversary.png\"/></p>\n<p>Excelize \u662f\u4e00\u6b3e\u7528\u4e8e\u64cd\u4f5c Office Excel \u7535\u5b50\u8868\u683c\u529e\u516c\u6587\u6863\u7684\u5f00\u6e90\u57fa\u7840\u5e93\uff0c\u57fa\u4e8e ECMA-376 \uff0cISO/IEC 29500 \u56fd\u9645\u6807\u51c6\u3002\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u8bfb\u53d6\u3001\u5199\u5165\u7531 Excel \u3001WPS \u3001OpenOffice \u7b49\u529e\u516c\u8f6f\u4ef6\u521b\u5efa\u7684\u7535\u5b50\u8868\u683c\u6587\u6863\u3002\u652f\u6301 XLAM / XLSM / XLSX / XLTM / XLTX \u7b49\u591a\u79cd\u6587\u6863\u683c\u5f0f\uff0c\u9ad8\u5ea6\u517c\u5bb9\u5e26\u6709\u6837\u5f0f\u3001\u56fe\u7247(\u8868)\u3001\u900f\u89c6\u8868\u3001\u5207\u7247\u5668\u7b49\u590d\u6742\u7ec4\u4ef6\u7684\u6587\u6863\uff0c\u5e76\u63d0\u4f9b\u6d41\u5f0f\u8bfb\u5199\u652f\u6301\uff0c\u7528\u4e8e\u5904\u7406\u5305\u542b\u5927\u89c4\u6a21\u6570\u636e\u7684\u5de5\u4f5c\u7c3f\u3002\u53ef\u5e94\u7528\u4e8e\u5404\u7c7b\u62a5\u8868\u5e73\u53f0\u3001\u4e91\u8ba1\u7b97\u3001\u8fb9\u7f18\u8ba1\u7b97\u7b49\u7cfb\u7edf\u3002\u81ea 2016 \u5e74\u5f00\u6e90\u4ee5\u6765\u5df2\u6210\u4e3a\u5f00\u53d1\u8005\u5728\u5904\u7406\u7535\u5b50\u8868\u683c\u529e\u516c\u6587\u6863\u65f6\u7684\u70ed\u95e8\u9009\u62e9\uff0c\u6b63\u5728\u88ab\u5e7f\u6cdb\u5e94\u7528\u4e8e\u5927\u578b\u4e92\u8054\u7f51\u516c\u53f8\u3001\u4e2d\u5c0f\u4f01\u4e1a\u5ba2\u6237\u548c\u521d\u521b\u516c\u53f8\u3002\u8363\u83b7 2025 \u4e0a\u6d77\u5f00\u6e90\u521b\u65b0\u83c1\u82f1\u5956\u3001\u5165\u9009 2023 \u5f00\u6e90\u521b\u65b0\u699c\u4f18\u79c0\u5f00\u6e90\u9879\u76ee\u3001\u8363\u83b7 2022 \u5e74\u4e2d\u56fd\u5f00\u6e90\u521b\u65b0\u5927\u8d5b\u4e00\u7b49\u5956\u30012020 Gopher China - Go \u9886\u57df\u660e\u661f\u5f00\u6e90\u9879\u76ee (GSP)\u30012018 \u5e74\u5f00\u6e90\u4e2d\u56fd\u7801\u4e91\u6700\u6709\u4ef7\u503c\u5f00\u6e90\u9879\u76ee GVP (Gitee Most Valuable Project)\u3002</p>\n<h2>\u5f00\u6e90\u4ee3\u7801</h2>\n<ul>\n<li><strong>GitHub:</strong> <a href=\"https://github.com/xuri/excelize\" rel=\"nofollow\">github.com/xuri/excelize</a></li>\n<li><strong>\u4e2d\u6587\u7b80\u4f53\u5b57\u6587\u6863:</strong> <a href=\"https://xuri.me/excelize/zh-hans\" rel=\"nofollow\">xuri.me/excelize/zh-hans</a></li>\n</ul>\n<blockquote>\n<p>Excelize Star History on GitHub</p>\n</blockquote>\n<p><img alt='\"Excelize Star History on GitHub\"' class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://xuri.me/wp-content/uploads/2026/07/excelize_10th_stargazers.png\"/></p>\n<p>2026 \u5e74 7 \u6708 7 \u65e5\uff0c\u5728 Excelize \u5f00\u6e90\u5341\u5468\u5e74\u4e4b\u9645\uff0c\u793e\u533a\u6b63\u5f0f\u53d1\u5e03\u4e86 2.11.0 \u7248\u672c\uff0c\u8be5\u7248\u672c\u5305\u542b 40 \u4f59\u9879\u66f4\u65b0\uff0c\u5305\u62ec\u65b0\u589e\u529f\u80fd\u3001\u9519\u8bef\u4fee\u590d\u548c\u517c\u5bb9\u6027\u63d0\u5347\u4f18\u5316\u3002\u6765\u81ea\u4e16\u754c\u5404\u5730\u7684 27 \u540d\u5f00\u53d1\u8005\u4e3a\u6b64\u7248\u672c\u8d21\u732e\u4e86\u4ee3\u7801\u3002\u4e0b\u9762\u662f\u6709\u5173\u8be5\u7248\u672c\u66f4\u65b0\u5185\u5bb9\u7684\u6458\u8981\uff0c\u6b64\u7248\u672c\u4e2d\u6700\u663e\u8457\u7684\u53d8\u5316\u5305\u62ec\uff1a</p>\n<h2>\u7248\u672c\u8bf4\u660e</h2>\n<p>\u6b64\u7248\u672c\u4e2d\u6700\u663e\u8457\u7684\u53d8\u5316\u5305\u62ec\uff1a</p>\n<h3>\u517c\u5bb9\u6027\u63d0\u793a</h3>\n<ul>\n<li>\u5347\u7ea7 Go \u8bed\u8a00\u7248\u672c\u8981\u6c42\u81f3 1.25.0 \u6216\u66f4\u9ad8\u7248\u672c\uff0c\u4ee5\u5347\u7ea7\u4f9d\u8d56\u5305 <code><a href=\"http://golang.org/x/net\" rel=\"nofollow\">golang.org/x/net</a></code></li>\n<li>\n\u5173\u4e8e <code>AddChart</code>\u3001<code>AddChartSheet</code> \u548c <code>AddShape</code> \u51fd\u6570\u7684\u4e0d\u517c\u5bb9\u53d8\u66f4<ul>\n<li><code>Chart</code> \u6570\u636e\u7c7b\u578b\u4e2d <code>Title</code> \u5b57\u6bb5\u7684\u6570\u636e\u7c7b\u578b\u7531 <code>[]RichTextRun</code> \u66f4\u6539\u4e3a <code>ChartTitle</code></li>\n<li><code>Shape</code> \u6570\u636e\u7c7b\u578b\u4e2d <code>Line</code> \u5b57\u6bb5\u7684\u6570\u636e\u7c7b\u578b\u7531 <code>ShapeLine</code> \u66f4\u6539\u4e3a <code>LineOptions</code></li>\n<li>\u6570\u636e\u7c7b\u578b <code>ChartDashType</code> \u91cd\u547d\u540d\u4e3a <code>LineDashType</code></li>\n<li>\u6570\u636e\u7c7b\u578b <code>ChartLineType</code> \u91cd\u547d\u540d\u4e3a <code>LineType</code></li>\n<li>\u6570\u636e\u7c7b\u578b <code>ChartLine</code> \u91cd\u547d\u540d\u4e3a <code>LineOptions</code></li>\n</ul>\n</li>\n</ul>\n<h3>\u5b89\u5168\u66f4\u65b0</h3>\n<ul>\n<li>\u8bfb\u53d6\u5de5\u4f5c\u8868\u65f6\u68c0\u67e5\u884c\u53f7\u4ee5\u9632\u6b62\u65e0\u9650\u5236\u5185\u5b58\u5206\u914d (CVE-2026-54063)\uff0c\u76f8\u5173\u5b89\u5168\u516c\u544a #GHSA-h69g-9hx6-f3v4</li>\n<li>\u901a\u8fc7\u9a8c\u8bc1\u5de5\u4f5c\u8868\u884c\u53f7\u662f\u5426\u8d85\u51fa\u6700\u5927\u9650\u5236\u6765\u9632\u6b62\u653b\u51fb\u8005\u63a7\u5236\u6d41\u5f0f\u8bfb\u53d6\u5185\u5b58\u5206\u914d (CVE-2026-59161)\uff0c\u76f8\u5173\u5b89\u5168\u516c\u544a #GHSA-q5j5-6p94-4gwc</li>\n<li>\u9632\u6b62\u5728\u5171\u4eab\u5b57\u7b26\u4e32\u8868\u7d22\u5f15\u65e0\u6548\u65f6\u83b7\u53d6\u5355\u5143\u683c\u503c\u5f15\u53d1\u7a0b\u5e8f panic (CVE-2026-59162)\uff0c\u76f8\u5173\u5b89\u5168\u516c\u544a #GHSA-fx5j-qcqg-grpf</li>\n</ul>\n<h3>\u65b0\u589e\u529f\u80fd</h3>\n<ul>\n<li>\u65b0\u589e <code>ChartTitle</code> \u6570\u636e\u7c7b\u578b</li>\n<li>\u65b0\u589e <code>PivotTableShowValuesAs</code> \u6570\u636e\u7c7b\u578b</li>\n<li>\u65b0\u589e <code>PivotTableShowValuesAsType</code> \u679a\u4e3e\u7c7b\u578b</li>\n<li>\u65b0\u589e 3 \u4e2a\u5bfc\u51fa\u9519\u8bef\u53d8\u91cf\uff1a<code>ErrPivotTableShowValuesAsBaseField</code>\u3001<code>ErrPivotTableShowValuesAsBaseItem</code> \u548c <code>ErrUnsupportedPivotTableShowValuesAsType</code></li>\n<li><code>PivotTableField</code> \u6570\u636e\u7c7b\u578b\u4e2d\u65b0\u589e <code>ShowValuesAs</code> \u5b57\u6bb5</li>\n<li><code>PivotTableOptions</code> \u548c <code>SlicerOptions</code> \u6570\u636e\u7c7b\u578b\u4e2d\u65b0\u589e <code>SelectedItems</code> \u5b57\u6bb5</li>\n<li>\u65b0\u589e <code>AutoFitColWidth</code> \u51fd\u6570\uff0c\u652f\u6301\u81ea\u52a8\u8c03\u6574\u5217\u5bbd\uff0c\u76f8\u5173 issue 92</li>\n<li><code>SetSheetName</code> \u51fd\u6570\u652f\u6301\u5bf9\u539f\u672c\u65e0\u6548\u7684\u540d\u79f0\u5de5\u4f5c\u8868\u8fdb\u884c\u91cd\u547d\u540d\uff0c\u76f8\u5173 issue 548</li>\n<li><code>CalcCellValue</code> \u51fd\u6570\u652f\u6301\u8ba1\u7b97\u5e26\u6709\u6ce2\u6d6a\u53f7\u901a\u914d\u7b26\u6761\u4ef6\u7684\u5355\u5143\u683c\u516c\u5f0f</li>\n<li><code>CalcCellValue</code> \u51fd\u6570\u652f\u6301\u8ba1\u7b97\u5e26\u6709\u9690\u5f0f\u4ea4\u96c6\u7684\u5355\u5143\u683c\u516c\u5f0f\uff0c\u5e76\u4fee\u590d\u6b63\u5219\u8868\u8fbe\u5f0f\u6761\u4ef6\u8ba1\u7b97\u6709\u8bef\u7684\u95ee\u9898</li>\n<li><code>CalcCellValue</code> \u51fd\u6570\u652f\u6301\u8ba1\u7b97\u5e26\u6709\u8de8\u5de5\u4f5c\u8868\u7684\u4e09\u7ef4\u5f15\u7528\u5355\u5143\u683c\u516c\u5f0f\uff0c\u76f8\u5173 issue 2303</li>\n<li><code>CalcCellValue</code> \u51fd\u6570\u652f\u6301\u8fd4\u56de\u4e0d\u5e94\u7528\u6570\u5b57\u683c\u5f0f\u7684\u539f\u59cb\u5355\u5143\u683c\u516c\u5f0f\u8ba1\u7b97\u7ed3\u679c\uff0c\u76f8\u5173 issue 2316</li>\n<li><code>AddPivotTable</code> \u51fd\u6570\u5728\u521b\u5efa\u6570\u636e\u900f\u89c6\u8868\u65f6\uff0c\u652f\u6301\u68c0\u67e5\u76f8\u540c\u6570\u636e\u5b57\u6bb5\u662f\u5426\u540c\u65f6\u51fa\u73b0\u5728\u6570\u636e\u900f\u89c6\u8868\u7684\u5217\u3001\u884c\u548c\u7b5b\u9009\u5b57\u6bb5\u4e2d\uff0c\u4ee5\u9632\u6b62\u751f\u6210\u635f\u574f\u7684\u5de5\u4f5c\u7c3f</li>\n<li><code>AddPivotTable</code> \u548c <code>GetPivotTables</code> \u51fd\u6570\u652f\u6301\u8bbe\u7f6e\u548c\u83b7\u53d6\u6570\u636e\u900f\u89c6\u8868\u6570\u636e\u5b57\u6bb5\u7684\"\u503c\u663e\u793a\u65b9\u5f0f\"\uff0c\u76f8\u5173 issue 2340</li>\n<li><code>AddPivotTable</code>\u3001<code>AddSlicer</code>\u3001<code>GetPivotTables</code> \u548c <code>GetSlicers</code> \u51fd\u6570\u652f\u6301\u8bbe\u7f6e\u548c\u83b7\u53d6\u6570\u636e\u900f\u89c6\u8868\u53ca\u6570\u636e\u900f\u89c6\u8868\u5207\u7247\u5668\u7684\u7b5b\u9009\u9009\u5b9a\u9879\uff0c\u76f8\u5173 issue 2154</li>\n<li><code>AddChart</code> \u548c <code>AddChartSheet</code> \u51fd\u6570\u5728\u6dfb\u52a0\u56fe\u8868\u65f6\uff0c\u652f\u6301\u4f7f\u7528\u516c\u5f0f\u8bbe\u7f6e\u56fe\u8868\u6807\u9898</li>\n<li><code>AddChart</code> \u548c <code>AddChartSheet</code> \u51fd\u6570\u5728\u6dfb\u52a0\u56fe\u8868\u65f6\uff0c\u652f\u6301\u8bbe\u7f6e\u56fe\u8868\u6807\u9898\u548c\u56fe\u8868\u5750\u6807\u8f74\u6807\u9898\u7684\u5e03\u5c40</li>\n<li><code>AddChart</code> \u548c <code>AddChartSheet</code> \u51fd\u6570\u5728\u6dfb\u52a0\u56fe\u8868\u65f6\uff0c\u652f\u6301\u8bbe\u7f6e\u56fe\u8868\u6807\u9898\u548c\u56fe\u8868\u5750\u6807\u8f74\u6807\u9898\u7684\u7ebf\u6761\u683c\u5f0f</li>\n<li><code>AddShape</code> \u51fd\u6570\u5728\u6dfb\u52a0\u5f62\u72b6\u65f6\uff0c\u652f\u6301\u8bbe\u7f6e\u5f62\u72b6\u7684\u7ebf\u6761\u683c\u5f0f</li>\n<li><code>NewStyle</code> \u51fd\u6570\u5728\u521b\u5efa\u7eaf\u8272\u586b\u5145\u6837\u5f0f\u65f6\uff0c\u82e5\u672a\u6307\u5b9a\u81ea\u5b9a\u4e49\u989c\u8272\u503c\uff0c\u5219\u652f\u6301\u81ea\u52a8\u8bbe\u7f6e\u524d\u666f\u8272\u548c\u80cc\u666f\u8272</li>\n</ul>\n<h3>\u517c\u5bb9\u6027\u63d0\u5347</h3>\n<ul>\n<li>\u4fee\u590d\u56fe\u8868\u5de5\u4f5c\u8868\u5728 Excel Online \u548c KingSoft WPS\u2122 Office \u4e2d\u4e0d\u663e\u793a\u7684\u95ee\u9898\uff0c\u76f8\u5173 issue 2273</li>\n</ul>\n<h3>\u95ee\u9898\u4fee\u590d</h3>\n<ul>\n<li>\u4fee\u590d v2.8.1 \u4e2d\u5f15\u5165\u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 1383</li>\n<li>\u4fee\u590d <code>AddChart</code> \u51fd\u6570\u5728\u6dfb\u52a0\u56fe\u8868\u65f6\uff0c\u82e5\u672a\u6307\u5b9a\u7cfb\u5217\u586b\u5145\u989c\u8272\u5c06\u5f15\u53d1\u7a0b\u5e8f panic \u7684\u95ee\u9898</li>\n<li>\u4fee\u590d <code>CalcCellValue</code> \u51fd\u6570\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u8ba1\u7b97\u5e26\u6709\u65e0\u6548\u884c\u5f15\u7528\u7684\u5355\u5143\u516c\u5f0f\u65f6\u5c06\u5f15\u53d1\u7a0b\u5e8f panic \u7684\u95ee\u9898\uff0c\u76f8\u5173 issue 2266</li>\n<li>\u4fee\u590d\u4f7f\u7528 <code>CalcCellValue</code> \u51fd\u6570\u65f6\u516c\u5f0f\u7cbe\u786e\u6587\u672c\u5339\u914d\u65e0\u6cd5\u5339\u914d\u5b50\u5b57\u7b26\u4e32\u7684\u95ee\u9898</li>\n<li>\u4fee\u590d <code>CalcCellValue</code> \u51fd\u6570\u8ba1\u7b97 BINOM.INV \u3001CHIINV \u3001CHISQ.DIST \u3001IMSECH \u3001IMSQRT \u548c NEGBINOM.DIST \u516c\u5f0f\u51fd\u6570\u65f6\u7684\u8ba1\u7b97\u7cbe\u5ea6\u95ee\u9898</li>\n<li>\u4fee\u590d <code>CalcCellValue</code> \u51fd\u6570\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u5bf9\u5305\u542b FREQUENCY \u516c\u5f0f\u51fd\u6570\u8ba1\u7b97\u7ed3\u679c\u6709\u8bef\u7684\u95ee\u9898</li>\n<li>\u4fee\u590d <code>CalcCellValue</code> \u51fd\u6570\u8ba1\u7b97\u62ec\u53f7\u6216\u8fd0\u7b97\u7b26\u5185\u5305\u542b\u9519\u8bef\u503c\u7684\u516c\u5f0f\u65f6\uff0c\u8fd4\u56de\u9519\u8bef\u8ba1\u7b97\u7ed3\u679c\u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 2344</li>\n<li>\u4fee\u590d <code>AddComment</code> \u51fd\u6570\u6dfb\u52a0\u6279\u6ce8\u65f6\uff0c\u82e5\u4f5c\u8005\u5df2\u5b58\u5728\u4e8e\u4f5c\u8005\u5217\u8868\u65f6\uff0c\u4e3a\u6240\u6709\u6279\u6ce8\u5206\u914d\u9519\u8bef\u4f5c\u8005 ID \u7684\u95ee\u9898\uff0c\u76f8\u5173 issue 2289</li>\n<li>\u4fee\u590d\u56e0\u8fd4\u56de\u9519\u8bef\u524d\u672a\u6b63\u786e\u91ca\u653e\u6587\u4ef6\u9501\u800c\u5bfc\u81f4\u6f5c\u5728\u6b7b\u9501\u7684\u95ee\u9898</li>\n<li>\u4fee\u590d\u90e8\u5206\u60c5\u51b5\u4e0b\u81ea\u5b9a\u4e49\u6570\u5b57\u683c\u5f0f\u4e2d\u9017\u53f7\u672a\u88ab\u6b63\u786e\u683c\u5f0f\u5316\u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 2297</li>\n<li>\u4fee\u590d\u5217\u8fed\u4ee3\u5668\u8bfb\u53d6\u5305\u542b\u65e0\u6548\u5de5\u4f5c\u8868 XML \u7684\u635f\u574f\u5de5\u4f5c\u7c3f\u65f6\u5f15\u53d1\u7a0b\u5e8f panic \u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 2299</li>\n<li>\u4fee\u590d\u8c03\u6574\u5305\u542b\u5916\u90e8\u5f15\u7528\u7684\u516c\u5f0f\u540e\uff0c\u516c\u5f0f\u4e2d\u7684\u5355\u5f15\u53f7\u4e22\u5931\u95ee\u9898</li>\n<li>\u4fee\u590d\u90e8\u5206\u60c5\u51b5\u4e0b\u65e0\u6cd5\u89e3\u5bc6\u4f7f\u7528 ECMA-376 Agile \u52a0\u5bc6\u548c SHA-512 \u54c8\u5e0c\u7b97\u6cd5\u4fdd\u62a4\u7684\u5de5\u4f5c\u7c3f\u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 2328</li>\n<li>\u4fee\u590d <code>SetCellFormula</code> \u51fd\u6570\u5728\u4f7f\u7528\u666e\u901a\u516c\u5f0f\u8986\u76d6\u5171\u4eab\u5355\u5143\u683c\u516c\u5f0f\u65f6\uff0c\u672a\u6e05\u9664\u5171\u4eab\u516c\u5f0f\u5143\u6570\u636e\u7684\u95ee\u9898\uff0c\u89e3\u51b3 issue 2337</li>\n</ul>\n<h3>\u6027\u80fd\u4f18\u5316</h3>\n<ul>\n<li>\u964d\u4f4e\u8bfb\u53d6\u672a\u52a0\u5bc6\u5de5\u4f5c\u7c3f\u65f6\u7684\u5185\u5b58\u5360\u7528\uff0c\u884c\u8fed\u4ee3\u5668\u5185\u5b58\u5f00\u9500\u76f8\u8f83\u4e8e\u4e0a\u4e00\u7248\u672c\u964d\u4f4e\u6700\u9ad8\u7ea6 85%</li>\n<li>\n\u4f18\u5316\u5750\u6807\u8f6c\u6362\u51fd\u6570\u53ca\u90e8\u5206\u5185\u90e8\u51fd\u6570\u7684\u6027\u80fd<ul>\n<li><code>ColumnNumberToName</code> \u51fd\u6570\u7684\u5185\u5b58\u5f00\u9500\u76f8\u8f83\u4e8e\u4e0a\u4e00\u7248\u672c\u964d\u4f4e\u6700\u9ad8\u7ea6 90%</li>\n<li><code>CoordinatesToCellName</code> \u51fd\u6570\u7684\u5185\u5b58\u5f00\u9500\u76f8\u8f83\u4e8e\u4e0a\u4e00\u7248\u672c\u964d\u4f4e\u6700\u9ad8\u7ea6 13%</li>\n<li>\u5185\u90e8\u51fd\u6570 <code>isNumeric</code> \u7684\u5185\u5b58\u5f00\u9500\u76f8\u8f83\u4e8e\u4e0a\u4e00\u7248\u672c\u964d\u4f4e\u6700\u9ad8\u7ea6 68%</li>\n</ul>\n</li>\n</ul>\n<h3>\u5176\u4ed6</h3>\n<ul>\n<li>Go Modules \u4f9d\u8d56\u6a21\u5757\u66f4\u65b0</li>\n<li>\u5355\u5143\u6d4b\u8bd5\u4e0e\u6587\u6863\u66f4\u65b0</li>\n<li>\u5305\u542b\u963f\u62c9\u4f2f\u8bed\u3001\u5fb7\u8bed\u3001\u82f1\u8bed\u3001\u897f\u73ed\u7259\u8bed\u3001\u6cd5\u8bed\u3001\u610f\u5927\u5229\u8bed\u3001\u65e5\u8bed\u3001\u97e9\u8bed\u3001\u8461\u8404\u7259\u8bed\u3001\u4fc4\u8bed\u3001\u7b80\u4f53\u4e2d\u6587\u548c\u7e41\u4f53\u4e2d\u6587\u7684<a href=\"https://xuri.me/excelize\" rel=\"nofollow\">\u591a\u56fd\u8bed\u8a00\u6587\u6863\u7f51\u7ad9</a>\u66f4\u65b0</li>\n<li>\u652f\u6301 WebAssembly / JavaScript \u7684 <a href=\"https://github.com/xuri/excelize-wasm\" rel=\"nofollow\">excelize-wasm</a> NPM \u5305\u53d1\u5e03\u7248\u672c\u66f4\u65b0</li>\n<li>\u652f\u6301 Python \u7684 <a href=\"https://github.com/xuri/excelize-py\" rel=\"nofollow\">excelize</a> PyPI \u5305\u53d1\u5e03\u7248\u672c\u66f4\u65b0</li>\n<li>\u652f\u6301 C# \u7684 <a href=\"https://github.com/xuri/excelize-cs\" rel=\"nofollow\">ExcelizeCs</a> NuGet .Net \u5305\u53d1\u5e03</li>\n</ul>\n<h3>\u81f4\u8c22</h3>\n<p>\u611f\u8c22 Excelize \u7684\u6240\u6709\u8d21\u732e\u8005\uff0c\u4ee5\u4e0b\u662f\u4e3a\u6b64\u7248\u672c\u63d0\u4ea4\u4ee3\u7801\u7684\u8d21\u732e\u8005\u5217\u8868\uff1a</p>\n<ul>\n<li>Rynzie02 (Rynzie)</li>\n<li>jpoz (James Pozdena)</li>\n<li>tvso (Tammy)</li>\n<li>yyt030 (yyt)</li>\n<li>hwo411 (Igor Khodyrev)</li>\n<li>JimLee0921 (TuoLee)</li>\n<li>zhuyanhuazhuyanhua (zhuhua)</li>\n<li>kenny-not-dead (Roman Sergeev)</li>\n<li>debugdoctor (Debug Doctor)</li>\n<li>Journeyman150 (Vladislav Anisimov)</li>\n<li>ivolkoff (Ivan Volkov)</li>\n<li>plandem (Andrey G.)</li>\n<li>martskins</li>\n<li>shcabin</li>\n<li>narasaka (Nathanael Tehilla Gunawan)</li>\n<li>lawrence3699 (chaoliang yan)</li>\n<li>SAY-5 (Sai Asish Y)</li>\n<li>noahchiu22 (Noah)</li>\n<li>rootsec1 (Abhishek Murthy)</li>\n<li>guangxuewu</li>\n<li>AdamDrewsTR (Adam Drews)</li>\n<li>grmblfrz (Swen Th\u00fcmmler)</li>\n<li>WaterRRabbit</li>\n<li>krystophny (Christopher Albert)</li>\n<li>Aprax14 (Damiano Scarpellini)</li>\n<li>artur-chopikian (Artur Chopikian)</li>\n<li>huijian3139 (Jason)</li>\n</ul>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/MasonDye", 
        "name": "MasonDye", 
        "avatar": "https://cdn.v2ex.com/gravatar/e5e57183461044c906a1ad03ca7bb512?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1224943", 
      "date_modified": "2026-07-04T09:05:47+00:00", 
      "content_html": "<h1>OmenXHub</h1>\n<p><strong>\u66f4\u7f8e\u89c2\u3001\u8f7b\u91cf\u3001\u529f\u80fd\u5b8c\u5907\u7684\u6697/\u5149\u5f71\u7cbe\u7075\u63a7\u5236\u4e2d\u5fc3</strong></p>\n<p>\u4e8c\u5f00\u81ea breadeding \u5927\u4f6c\u7684 OmenSuperHub \uff0c\u8fc1\u79fb GUI \u5230 WPF-UI \uff0c\u91c7\u7528\u5168\u65b0\u7684 Windows 11 \u6837\u5f0f\u6781\u7b80\u4e3b\u9898\u754c\u9762\u3002</p>\n<hr/>\n<h2>\ud83d\udcf8 \u754c\u9762\u9884\u89c8</h2>\n<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><img alt=\"\u622a\u56fe 1\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/TAhBiHFOd6vSdDgCiBuWtVNYVbWH2Sz1.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 2\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/sUQYxml6CQA1W9vHcasE5heABETNbu5P.webp\"/></td>\n</tr>\n<tr>\n<td><img alt=\"\u622a\u56fe 3\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/jKknzm6WOwGk5QzWBC2J0wEzrmYqNIpT.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 3-2\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/xcC8DMeZusJnQ2YLJhDQPYf8DYskPjjI.webp\"/></td>\n</tr>\n<tr>\n<td><img alt=\"\u622a\u56fe 4\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/8aPp4q9P6O43CS6TYDXLv9UPhcHhPUfY.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 5\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/N1keJb69mLwV5hzNZhSY4dXGoouKW684.webp\"/></td>\n</tr>\n<tr>\n<td><img alt=\"\u622a\u56fe 6\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/lSQLull8ThwFj7vg3xaV6oVS1TYWJNrO.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 6-2\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/VVHnsesVBWbfeNeh3GHrQXbcKQkEXu76.webp\"/></td>\n</tr>\n<tr>\n<td><img alt=\"\u622a\u56fe 7\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/9VGeppfD4VpoKZxVgL9YoqRvqCOVjeUP.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 8\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/blAbTcaRPbKYHuh2eFx5oClaDeI4fX7h.webp\"/></td>\n</tr>\n<tr>\n<td><img alt=\"\u622a\u56fe 9\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/6TDLovq5xYBWgB0urFr1t7tJRNKPvWlD.webp\"/></td>\n<td><img alt=\"\u622a\u56fe 9-2\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/IxmeBaOk7HSWQuUpYJpXo9FL6mr3843e.webp\"/></td>\n</tr>\n</tbody></table><hr/>\n<h2>\u2728 \u529f\u80fd\u7279\u6027</h2>\n<h3>\ud83d\udcca \u4eea\u8868\u677f</h3>\n<ul>\n<li>CPU / GPU \u6e29\u5ea6\u3001\u4f7f\u7528\u7387\u3001\u9891\u7387\u3001\u529f\u8017</li>\n<li>\u98ce\u6247\u8f6c\u901f\u3001\u5185\u5b58\u5360\u7528\u3001\u7f51\u901f</li>\n<li>\u989c\u8272\u7f16\u7801\u8fdb\u5ea6\u6761\uff08\u7eff \u2192 \u9ec4 \u2192 \u7ea2\uff09\u5b9e\u65f6\u53cd\u6620\u8d1f\u8f7d\u72b6\u6001</li>\n</ul>\n<h3>\u26a1 \u6027\u80fd\u63a7\u5236</h3>\n<ul>\n<li>CPU \u529f\u7387\u9650\u5236\uff08 PL1 / PL2 \uff09\u3001IccMax \u3001AC Load Line</li>\n<li>\u7535\u6e90\u6a21\u5f0f / \u8ba1\u5212\u3001EcoQoS \u6548\u7387\u6a21\u5f0f\u3001Core Keep \u6838\u5fc3\u4fdd\u6301</li>\n<li>GPU \u9891\u7387\u9650\u5236\u3001\u6838\u5fc3\u8d85\u9891\u3001\u663e\u5b58\u8d85\u9891</li>\n<li>TGP / PPAB \u3001dState \u3001DB \u7248\u672c</li>\n<li>\u56fe\u5f62\u6a21\u5f0f\u5207\u6362\u3001\u70ed\u5207\u6362</li>\n<li>\u5c4f\u5e55\u5237\u65b0\u7387\u3001\u6700\u5927\u5e27\u7387</li>\n</ul>\n<h3>\ud83c\udf00 \u98ce\u6247\u63a7\u5236</h3>\n<ul>\n<li>\u98ce\u6247\u6a21\u5f0f\uff1a\u81ea\u52a8 / \u6700\u5927 / \u56fa\u5b9a RPM</li>\n<li>\u6e29\u5ea6\u7075\u654f\u5ea6\u8c03\u8282</li>\n<li>\u81ea\u5b9a\u4e49\u98ce\u6247\u66f2\u7ebf\uff08\u62d6\u62fd\u63a7\u5236\u70b9\uff09</li>\n<li>\u9ad8\u6e29\u81ea\u52a8\u4fdd\u62a4</li>\n<li>\u98ce\u6247\u9664\u5c18</li>\n</ul>\n<h3>\ud83d\udca1 \u706f\u5149\u63a7\u5236</h3>\n<ul>\n<li>\u652f\u6301\u952e\u76d8 / \u706f\u6761\u8bbe\u5907\uff08 Basic / Dojo \u56db\u5206\u533a\u534f\u8bae\uff09</li>\n<li>10 \u79cd\u52a8\u753b\u6548\u679c</li>\n<li>4 \u533a\u72ec\u7acb\u989c\u8272\u63a7\u5236</li>\n<li>\u4eae\u5ea6\u63a7\u5236\u3001\u901f\u5ea6\u63a7\u5236</li>\n</ul>\n<h3>\ud83e\udd16 \u81ea\u52a8\u5316</h3>\n<ul>\n<li><strong>16 \u79cd\u89e6\u53d1\u6761\u4ef6</strong>\uff1a\u8fdb\u7a0b\u542f\u52a8 / \u505c\u6b62\u3001\u9501\u5b9a / \u89e3\u9501\u3001\u7535\u6e90\u63d2\u62d4\u3001\u5916\u63a5\u663e\u793a\u5668\u3001\u5b9a\u65f6\u3001CPU / GPU \u6e29\u5ea6\u3001\u7535\u6c60\u7535\u91cf\u7b49</li>\n<li><strong>23 \u79cd\u6267\u884c\u6b65\u9aa4</strong>\uff1a\u9884\u8bbe\u3001\u5237\u65b0\u7387\u3001\u7535\u6e90\u3001WiFi / \u84dd\u7259\u3001\u4eae\u5ea6\u3001\u97f3\u9891\u3001\u5b8f\u7b49</li>\n<li>\u6258\u76d8\u5feb\u6377\u64cd\u4f5c\uff0c\u4e00\u952e\u89e6\u53d1</li>\n</ul>\n<h3>\u2328\ufe0f \u952e\u76d8\u5b8f</h3>\n<ul>\n<li>\u5f55\u5236 / \u56de\u653e\u952e\u76d8\u64cd\u4f5c\u5e8f\u5217</li>\n<li>\u89e6\u53d1\u5feb\u6377\u952e</li>\n<li>\u4e8b\u4ef6\u7f16\u8f91</li>\n</ul>\n<h3>\ud83d\udd27 \u5176\u4ed6\u529f\u80fd</h3>\n<ul>\n<li>\u667a\u80fd\u5145\u7535</li>\n<li>\u6570\u5b57\u9501\u5b9a / \u5927\u5199\u9501\u5b9a / \u89e6\u6478\u677f\u9501\u5b9a</li>\n<li>HWiNFO64 \u96c6\u6210</li>\n<li>HTTP API \u670d\u52a1</li>\n</ul>\n<h3>\ud83d\udda5\ufe0f \u7cfb\u7edf\u4fe1\u606f</h3>\n<ul>\n<li>\u7cfb\u7edf\u786c\u4ef6\u8be6\u60c5</li>\n<li>PawnIO \u9a71\u52a8\u72b6\u6001</li>\n<li>\u4f20\u611f\u5668\u6e29\u5ea6</li>\n<li>GPU \u8fdb\u7a0b\u7ba1\u7406</li>\n<li>\u76d1\u63a7\u9009\u9879</li>\n</ul>\n<h3>\u2699\ufe0f \u8bbe\u7f6e</h3>\n<ul>\n<li>\u6d6e\u7a97\u663e\u793a\uff08\u4f4d\u7f6e / \u5b57\u4f53 / \u900f\u660e\u5ea6 / \u591a\u663e\u793a\u5668\uff09</li>\n<li>Omen \u952e\uff08 5 \u79cd\u884c\u4e3a\uff09</li>\n<li>OSD \u63d0\u793a</li>\n<li>\u6258\u76d8\u56fe\u6807\uff08\u539f\u7248 / \u81ea\u5b9a\u4e49 / \u52a8\u6001\uff09</li>\n<li>\u5f00\u673a\u81ea\u542f</li>\n<li>\u81ea\u5b9a\u4e49\u4e3b\u754c\u9762 LOGO</li>\n<li>\u4e3b\u9898\uff1a\u7cfb\u7edf / \u6df1\u8272 / \u4eae\u8272</li>\n<li>\u8bed\u8a00\u5207\u6362</li>\n<li>\u81ea\u5b9a\u4e49\u80cc\u666f\uff08\u900f\u660e\u5ea6 / \u9ad8\u65af\u6a21\u7cca\uff09</li>\n<li>\u6570\u636e\u672c\u5730\u5316</li>\n<li>\u8c03\u8bd5\u65e5\u5fd7</li>\n</ul>\n<hr/>\n<h2>\ud83d\udd17 \u9879\u76ee\u94fe\u63a5\uff08\u70b9\u70b9 Star \uff09</h2>\n<ul>\n<li><strong>\u9879\u76ee\u5730\u5740</strong>\uff1a<a href=\"https://github.com/MasonDye/OmenXHub\" rel=\"nofollow\">github.com/MasonDye/OmenXHub</a></li>\n<li><strong>\u4e0b\u8f7d\u5730\u5740</strong>\uff1a<a href=\"https://github.com/MasonDye/OmenXHub/releases\" rel=\"nofollow\">github.com/MasonDye/OmenXHub/releases</a></li>\n</ul>\n<hr/>\n<h2>\ud83d\ude4f \u81f4\u8c22</h2>\n<table>\n<thead>\n<tr>\n<th>\u8d21\u732e\u8005</th>\n<th>\u8d21\u732e\u5185\u5bb9</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>MasonDye</strong></td>\n<td>GUI \u8bbe\u8ba1\u4e0e WPF \u524d\u7aef\u5f00\u53d1</td>\n</tr>\n<tr>\n<td><strong>One1turn</strong></td>\n<td>WPF-UI Windows 11 \u6837\u5f0f\u91cd\u5199 + \u6027\u80fd\u4f18\u5316</td>\n</tr>\n<tr>\n<td><strong>breadeding</strong></td>\n<td>OmenSuperHub \uff08\u539f\u59cb\u6846\u67b6\u4e0e\u4ee3\u7801\uff09</td>\n</tr>\n<tr>\n<td><strong>GeographicCone</strong></td>\n<td>OmenMon / OmenHwCtl \uff08\u7075\u611f\u6765\u6e90\u4e0e OGH \u4ea4\u4e92\u7814\u7a76\uff09</td>\n</tr>\n<tr>\n<td><strong>OpenHardwareMonitor</strong></td>\n<td>LibreHardwareMonitor \uff08\u786c\u4ef6\u76d1\u63a7\u6838\u5fc3\u5e93\uff09</td>\n</tr>\n</tbody></table>", 
      "date_published": "2026-07-04T09:02:52+00:00", 
      "title": "OmenXHub \u66f4\u7f8e\u89c2 \u8f7b\u91cf \u529f\u80fd\u5b8c\u5907\u7684\u6697/\u5149\u5f71\u7cbe\u7075\u63a7\u5236\u4e2d\u5fc3", 
      "id": "https://www.v2ex.com/t/1224943"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ackyes", 
        "name": "ackyes", 
        "avatar": "https://cdn.v2ex.com/avatar/5082/322a/327111_large.png?m=1783107732"
      }, 
      "url": "https://www.v2ex.com/t/1224870", 
      "title": "boss \u76f4\u8058 ai \u62db\u8058\u52a9\u624b\uff08hr \u7528", 
      "id": "https://www.v2ex.com/t/1224870", 
      "date_published": "2026-07-03T19:47:59+00:00", 
      "content_html": "<p>\u5f00\u6e90\u4e00\u4e2a\u51e0\u4e2a\u6708\u524d\u641e\u7684\u534a\u81ea\u52a8\u5316 boss \u76f4\u8058\u8c37\u6b4c\u6d4f\u89c8\u5668\u63d2\u4ef6\uff0c\u5728\u725b\u4eba\u63a8\u8350\u9875\uff0cai \u81ea\u52a8\u521d\u7b5b\u6253\u62db\u547c\u3002\n\u6700\u8fd1\u6ca1\u4ec0\u4e48\u62db\u8058\u9700\u6c42\uff0c\u6682\u65f6\u4e5f\u6ca1\u6709\u63d0\u5347\u7a7a\u95f4\u4e86\n\u5f00\u6e90\u5730\u5740\uff1a <a href=\"https://github.com/Ackyess/lanxing\" rel=\"nofollow\">https://github.com/Ackyess/lanxing</a>\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://pic1.imgdb.cn/item/6a48119b1f8fda9783e0aca9.png\"/>\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://pic1.imgdb.cn/item/6a4810821f8fda9783e0ac47.png\"/>\n\u514d\u8d23\u58f0\u660e\n\u6d4f\u89c8\u5668\u81ea\u52a8\u5316\u53ef\u80fd\u8fdd\u53cd Boss \u76f4\u8058\u7528\u6237\u534f\u8bae\uff0c\u5b58\u5728\u8d26\u53f7\u9650\u5236 / \u5c01\u7981\u98ce\u9669\uff0c\u662f\u5426\u4f7f\u7528\u7531\u4f60\u81ea\u884c\u5224\u65ad\u5e76\u627f\u62c5\u540e\u679c\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/marlkiller", 
        "name": "marlkiller", 
        "avatar": "https://cdn.v2ex.com/gravatar/0d3aa0d47e77fe8b55b0305b11c274b4?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1224853", 
      "date_modified": "2026-07-03T14:29:14+00:00", 
      "content_html": "<h1>VirtualLocation</h1>\n<p>macOS \u4e0a\u6a21\u62df iOS \u8bbe\u5907\u5b9a\u4f4d\u7684\u5de5\u5177\uff0c\u652f\u6301 <strong>\u666e\u901a\u6a21\u5f0f (DVT)</strong> \u548c <strong>\u4ee3\u7406\u6a21\u5f0f (MITM)</strong> \u4e24\u79cd\u65b9\u6848\u3002</p>\n<p>\u4ee3\u7406\u6a21\u5f0f\u76ee\u524d\u53ef\u8fc7\u67d0\u4f01\u4e1a x \u4fe1</p>\n<p><img alt=\"preview\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/marlkiller/VirtualLocation/refs/heads/main/preview.png\"/></p>\n<h2>\u6784\u5efa</h2>\n<pre><code class=\"language-bash\"># \u7f16\u8bd1\nswift build -c release\n\n# \u6253\u5305 .app\n./build_app.sh arm     # Apple Silicon\n./build_app.sh intel   # Intel\n./build_app.sh u2b     # Universal\n\n# \u5982\u9047\u5230\u300c Apple \u65e0\u6cd5\u9a8c\u8bc1 'VirtualLocation.app' \u662f\u5426\u5305\u542b\u53ef\u80fd\u5371\u5bb3 Mac \u5b89\u5168\u6216\u6cc4\u6f0f\u9690\u79c1\u7684\u6076\u610f\u8f6f\u4ef6\u300d\u63d0\u793a\uff0c\u8bf7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u89e3\u9664\u9694\u79bb\u6807\u8bb0\uff1a\nxattr -cr /Applications/VirtualLocation.app\n</code></pre>\n<h2>\u4e24\u79cd\u65b9\u6848</h2>\n<h3>1. \u666e\u901a\u6a21\u5f0f (DVT)</h3>\n<p>\u901a\u8fc7 USB \u5229\u7528 Apple \u7684 <strong>DVT (Developer Tools)</strong> \u534f\u8bae\u76f4\u63a5\u5411 iOS \u8bbe\u5907\u6ce8\u5165\u5b9a\u4f4d\u3002</p>\n<ul>\n<li>\u539f\u7406\uff1aMac \u901a\u8fc7 <code>usbmuxd</code> \u4e0e iPhone \u901a\u4fe1\uff0c\u8c03\u7528 <code>pymobiledevice3</code> \u7684 <code>developer dvt simulate-location set</code> \u547d\u4ee4\uff0c\u5c06\u5750\u6807\u5199\u5165\u8bbe\u5907\u7684 GPS \u5b50\u7cfb\u7edf\u3002DVT \u8fdb\u7a0b\u9700\u4fdd\u6301\u8fd0\u884c\u4ee5\u7ef4\u6301\u6a21\u62df\u5b9a\u4f4d\u3002</li>\n<li>\u4f18\u70b9\uff1a\u8bbe\u7f6e\u7b80\u5355\uff0c\u5373\u63d2\u5373\u7528\u3002</li>\n<li>\u7f3a\u70b9\uff1a\u5fc5\u987b\u63d2\u7ebf\uff0c\u4f9d\u8d56 Python \u73af\u5883\u3002</li>\n</ul>\n<p><strong>\u7528\u6cd5\uff1a</strong></p>\n<ol>\n<li>\u6570\u636e\u7ebf\u8fde\u63a5 iPhone \uff0c\u786e\u4fdd\u5df2\u5f00\u542f\u5f00\u53d1\u8005\u6a21\u5f0f</li>\n<li>\u70b9\u51fb\u5de5\u5177\u680f\u5b89\u88c5 <code>pymobiledevice3</code>\uff08\u81ea\u52a8\u521b\u5efa <code>~/.venv_pmd3/</code> \u865a\u62df\u73af\u5883\uff09</li>\n<li>\u9009\u62e9\u8bbe\u5907\uff0c\u70b9\u51fb\u5730\u56fe\u9009\u70b9\u540e\u6309 <code>\u5e94\u7528</code></li>\n</ol>\n<h3>2. \u4ee3\u7406\u6a21\u5f0f (MITM)</h3>\n<p>\u5728 Mac \u4e0a\u542f\u52a8 HTTP/HTTPS \u4ee3\u7406\uff0c\u5bf9 iPhone \u7684 WiFi \u5b9a\u4f4d\u8bf7\u6c42\u8fdb\u884c<strong>\u4e2d\u95f4\u4eba\u52ab\u6301</strong>\uff0c\u7be1\u6539\u5b9a\u4f4d\u54cd\u5e94\u3002</p>\n<ul>\n<li>\u539f\u7406\uff1aiPhone \u4f1a\u5411 <code><a href=\"http://gs-loc.apple.com\" rel=\"nofollow\">gs-loc.apple.com</a></code> / <code><a href=\"http://gs-loc-cn.apple.com\" rel=\"nofollow\">gs-loc-cn.apple.com</a></code> \u53d1\u8d77 WiFi \u5b9a\u4f4d\u8bf7\u6c42\uff08 protobuf \u683c\u5f0f\uff09\u3002\u4ee3\u7406\u62e6\u622a\u8be5\u8bf7\u6c42\uff0c\u5b8c\u6210 TLS \u63e1\u624b\u540e\u89e3\u6790 protobuf \u8f7d\u8377\uff0c\u627e\u5230\u5176\u4e2d\u7684\u7ecf\u7eac\u5ea6\u5b57\u6bb5\u8fdb\u884c\u66ff\u6362\uff0c\u518d\u8fd4\u56de\u7be1\u6539\u540e\u7684\u54cd\u5e94\u7ed9 iPhone \u3002</li>\n<li>\u7ec6\u8282\uff1a\u4ee3\u7406\u81ea\u52a8\u751f\u6210 CA \u8bc1\u4e66\uff0c\u5e76\u4e3a Apple \u5b9a\u4f4d\u57df\u540d\u52a8\u6001\u7b7e\u53d1\u670d\u52a1\u5668\u8bc1\u4e66\uff1b\u652f\u6301 gzip \u538b\u7f29\u7684 protobuf \u54cd\u5e94\u89e3\u5305\u4e0e\u56de\u5305\u3002</li>\n<li>\u4f18\u70b9\uff1a\u65e0\u7ebf\u64cd\u4f5c\uff0c\u65e0\u9700\u6570\u636e\u7ebf\u3002</li>\n<li>\u7f3a\u70b9\uff1a\u9700\u8981\u914d\u7f6e WiFi \u4ee3\u7406\u5e76\u624b\u52a8\u5b89\u88c5/\u4fe1\u4efb CA \u8bc1\u4e66\u3002</li>\n</ul>\n<p><strong>\u7528\u6cd5\uff1a</strong></p>\n<ol>\n<li>iPhone \u8fde\u63a5 Mac \u540c\u4e2a WiFi \uff0c<strong>\u5148\u5173\u95ed iPhone \u4e0a\u7684 VPN/\u4ee3\u7406\u8f6f\u4ef6</strong>\uff0c\u518d\u8bbe\u7f6e WiFi \u4ee3\u7406\u4e3a Mac IP + \u6307\u5b9a\u7aef\u53e3\uff08\u9ed8\u8ba4 8888 \uff09</li>\n<li>\u7528 Safari \u8bbf\u95ee <code>http://&lt;Mac IP&gt;:&lt;\u7aef\u53e3&gt;</code> \u4e0b\u8f7d\u5e76\u5b89\u88c5 CA \u8bc1\u4e66</li>\n<li>\u5728 iOS \u8bbe\u7f6e &gt; \u901a\u7528 &gt; \u5173\u4e8e &gt; \u8bc1\u4e66\u4fe1\u4efb\u8bbe\u7f6e\u4e2d<strong>\u542f\u7528</strong>\u8be5\u8bc1\u4e66</li>\n<li>\u70b9\u542f\u52a8\u4ee3\u7406\uff0c\u9009\u70b9\u540e\u6309 <code>\u5e94\u7528</code></li>\n<li>\u5173\u95ed/\u91cd\u65b0\u6253\u5f00 iOS \u8bbe\u5907\u7684\u5b9a\u4f4d\u670d\u52a1</li>\n</ol>\n<blockquote>\n<p>\u4ee3\u7406\u542f\u52a8\u540e\u4f1a\u81ea\u52a8\u751f\u6210 CA \u8bc1\u4e66\u5e76\u5bfc\u5165 macOS \u94a5\u5319\u4e32\u3002</p>\n</blockquote>\n<blockquote>\n<p>\u4ee3\u7406\u6a21\u5f0f\u7684\u5b9e\u73b0\u53c2\u8003\u4e86 <a href=\"https://github.com/FFF686868/proxypin-wloc-spoofer\" rel=\"nofollow\">proxypin-wloc-spoofer</a> \u2014\u2014 \u4e00\u4e2a\u901a\u8fc7 ProxyPin \u811a\u672c\u52ab\u6301 Apple WLOC \u5b9a\u4f4d\u54cd\u5e94\u7684\u5f00\u6e90\u9879\u76ee\u3002</p>\n</blockquote>\n<h2>\u7cfb\u7edf\u8981\u6c42</h2>\n<ul>\n<li>macOS 14+</li>\n<li>Xcode Command Line Tools</li>\n<li>\u666e\u901a\u6a21\u5f0f\uff1aUSB \u8fde\u63a5\u7684 iOS \u8bbe\u5907</li>\n<li>\u4ee3\u7406\u6a21\u5f0f\uff1aOpenSSL \u3001\u540c\u4e00 WiFi \u4e0b\u7684 iPhone</li>\n</ul>\n<p>Release:\n<a href=\"https://github.com/marlkiller/VirtualLocation/releases/tag/v0.0.1\" rel=\"nofollow\">https://github.com/marlkiller/VirtualLocation/releases/tag/v0.0.1</a></p>\n", 
      "date_published": "2026-07-03T14:24:35+00:00", 
      "title": "\u8f7b\u91cf macOS \u4e0a\u6a21\u62df iOS \u8bbe\u5907\u5b9a\u4f4d\u7684\u5de5\u5177", 
      "id": "https://www.v2ex.com/t/1224853"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/luomingxiaoyang", 
        "name": "luomingxiaoyang", 
        "avatar": "https://cdn.v2ex.com/gravatar/fd0977665d84bb1393857d3107f85b71?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1224596", 
      "title": "[\u72ec\u7acb\u5f00\u53d1] \u56e0\u4e3a\u5acc Quicker \u9650\u5236\u591a\u4e14\u6536\u8d39\uff0c\u6211\u7528\u4e1a\u4f59\u65f6\u95f4\u5199\u4e86\u6b3e\u514d\u8d39\u5f00\u6e90\u7684 Windows \u6548\u7387\u795e\u5668", 
      "id": "https://www.v2ex.com/t/1224596", 
      "date_published": "2026-07-02T11:26:06+00:00", 
      "content_html": "<p>\u4f60\u597d\uff0c\u6211\u662f\u71d5\u5b50\u542f\u52a8\u5668\u7684\u5f00\u53d1\u8005\u3002\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://yanzi.luoluoluo.cc.cd/assets/readme-cover-16x9.png\"/>\n\u4f5c\u4e3a\u4e00\u540d\u6bcf\u5929\u9ad8\u5f3a\u5ea6\u4f7f\u7528 Windows \u7684\u952e\u76d8\u4fa0/\u7a0b\u5e8f\u5458\uff0c\u6211\u4e00\u76f4\u5bf9\u201c\u5feb\u6377\u6548\u7387\u5de5\u5177\u201d\u6709\u7740\u91cd\u5ea6\u7684\u4f9d\u8d56\u3002\u66fe\u7ecf\uff0c\u6211\u662f Quicker \u7684\u91cd\u5ea6\u7528\u6237\uff0c\u5b83\u786e\u5b9e\u6781\u5927\u5730\u5e2e\u6211\u51cf\u5c11\u4e86\u91cd\u590d\u52b3\u52a8\u3002\u4f46\u7528\u7740\u7528\u7740\uff0c\u6211\u5f00\u59cb\u611f\u5230\u4e00\u4e1d\u96be\u53d7\uff1a\u514d\u8d39\u7248\u7684\u529f\u80fd\u9650\u5236\u8d8a\u6765\u8d8a\u591a\u3001\u9ad8\u7ea7\u529f\u80fd\u9700\u8981\u6309\u6708\u4ed8\u8d39\u8ba2\u9605\uff0c\u4e14\u4f5c\u4e3a\u4e00\u4e2a\u95ed\u6e90\u5de5\u5177\uff0c\u6211\u5bf9\u4e8e\u672c\u5730\u914d\u7f6e\u6587\u4ef6\u7684\u9690\u79c1\u5b89\u5168\u548c\u672a\u6765\u7684\u53ef\u8fc1\u79fb\u6027\u603b\u662f\u5e26\u6709\u4e00\u70b9\u987e\u8651\u3002\u800c\u53e6\u4e00\u6b3e\u795e\u5668 Raycast \uff0c\u867d\u7136\u7cbe\u81f4\uff0c\u4f46\u539f\u751f\u5bf9 Windows \u7cfb\u7edf\u7684\u652f\u6301\u548c\u672c\u5730\u5316\u603b\u89c9\u5f97\u6709\u4e9b\u6c34\u571f\u4e0d\u670d\u3002</p>\n<p>\u65e2\u7136\u627e\u4e0d\u5230\u5b8c\u7f8e\u7684\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u7a0b\u5e8f\u5458\uff0c\u90a3\u4e0d\u5982\u81ea\u5df1\u52a8\u624b\u9020\u4e2a\u8f6e\u5b50\u5427\uff01</p>\n<p>\u4e8e\u662f\uff0c\u6211\u7528\u4e1a\u4f59\u65f6\u95f4\u5199\u4e0b\u4e86 \u71d5\u5b50\u542f\u52a8\u5668 (Yanzi Launcher)\u3002\u6211\u60f3\u505a\u4e00\u6b3e\u5f7b\u5e95\u514d\u8d39\u3001\u5b8c\u5168\u5f00\u6e90\u3001\u672c\u5730\u4f18\u5148\u7684\u6548\u7387\u5de5\u5177\uff0c\u7ed9 Windows \u7528\u6237\u591a\u4e00\u4e2a\u6e05\u723d\u3001\u65e0\u8d1f\u62c5\u7684\u9009\u62e9\u3002</p>\n<p>\u5b98\u7f51\u514d\u8d39\u4e0b\u8f7d\u4f53\u9a8c\uff1a\u71d5\u5b50\u542f\u52a8\u5668\u5b98\u7f51 ( <a href=\"https://yanzi.luoluoluo.cc.cd/\" rel=\"nofollow\">https://yanzi.luoluoluo.cc.cd/</a>)</p>\n<p>\u4e3a\u4ec0\u4e48\u53eb\u201c\u4e00\u53e5\u8bdd\uff0cAI \u5e2e\u4f60\u9020\u5de5\u5177\u201d\uff1f\n\u5728\u8bbe\u8ba1\u71d5\u5b50\u542f\u52a8\u5668\u7684\u521d\u671f\uff0c\u6211\u53ea\u60f3\u505a\u4e2a\u597d\u770b\u7684\u201c\u53f3\u952e\u4e5d\u5bab\u683c\u8f6e\u76d8\u9762\u677f\u201d\u52a0\u201cAlt + \u7a7a\u683c\u6781\u901f\u641c\u7d22\u201d\uff0c\u65b9\u4fbf\u6211\u5feb\u901f\u542f\u52a8\u672c\u5730\u8f6f\u4ef6\u3001\u6253\u5f00\u5e38\u7528\u76ee\u5f55\u3002\u4f46\u6211\u5f88\u5feb\u610f\u8bc6\u5230\u4e00\u4e2a\u75db\u70b9\uff1a\u6bcf\u4e2a\u4eba\u7684\u63d0\u6548\u9700\u6c42\u90fd\u592a\u96f6\u788e\u4e86\u3002</p>\n<p>\u6709\u4eba\u60f3\u8981\u4e00\u4e2a\u6279\u91cf\u628a\u56fe\u7247\u8f6c\u6210 .png \u7684\u5c0f\u811a\u672c\uff0c\u6709\u4eba\u60f3\u8981\u4e00\u952e\u6e05\u7406\u526a\u8d34\u677f\uff0c\u8fd8\u6709\u4eba\u60f3\u8981\u81ea\u52a8\u5bf9\u9009\u4e2d\u7684 JSON \u8fdb\u884c\u683c\u5f0f\u5316\u2026\u2026\u5982\u679c\u8fd9\u4e9b\u5c0f\u529f\u80fd\u5168\u9760\u6211\u4e00\u4e2a\u4eba\u5199\uff0c\u6211\u7d2f\u6b7b\u4e5f\u5199\u4e0d\u8fc7\u6765\u3002</p>\n<p>\u76f4\u5230\u4eca\u5e74\u5927\u6a21\u578b\u6280\u672f\u7206\u53d1\uff0c\u6211\u7a81\u7136\u6709\u4e86\u7075\u611f\uff1a\u6211\u5199\u4e0d\u8fc7\u6765\uff0c\u4f46 AI \u53ef\u4ee5\u5199\u554a\uff01</p>\n<p>\u4e8e\u662f\u6211\u4e3a\u71d5\u5b50\u6ce8\u5165\u4e86\u201cAI \u6269\u5c55\u751f\u6210\u201d\u7684\u57fa\u56e0\u3002\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u61c2\u7f16\u7a0b\uff1a</p>\n<p>\u4f60\u53ea\u9700\u8981\u5728\u5bf9\u8bdd\u6846\u91cc\u7528\u666e\u901a\u7684\u5927\u767d\u8bdd\u8ddf DeepSeek \u3001ChatGPT \u6216\u8c46\u5305\u8bf4\uff1a\u201c\u5e2e\u6211\u5199\u4e00\u4e2a\u6279\u91cf\u628a\u5f53\u524d\u6587\u4ef6\u5939\u4e0b\u6240\u6709\u6587\u4ef6\u6539\u540d\u7684 BAT \u811a\u672c\uff0c\u5e76\u4ee5\u71d5\u5b50\u542f\u52a8\u5668\u7684\u6269\u5c55 JSON \u683c\u5f0f\u8f93\u51fa\u3002\u201d\nAI \u4f1a\u628a\u914d\u7f6e\u548c\u4ee3\u7801\u5199\u597d\u3002\u4f60\u76f4\u63a5\u4e00\u952e\u590d\u5236\uff0c\u5728\u71d5\u5b50\u542f\u52a8\u5668\u91cc\u7c98\u8d34\uff0c\u5de5\u5177\u69fd\u7acb\u523b\u5c31\u80fd\u7528\uff01\n\u8fd9\u5c31\u662f\u201c\u71d5\u5b50\u201d\u6700\u5927\u7684\u7075\u9b42\u2014\u2014\u628a\u201c\u9020\u5de5\u5177\u201d\u7684\u6743\u529b\u4ea4\u8fd8\u7ed9 AI \uff0c\u8ba9\u4e0d\u61c2\u4ee3\u7801\u7684\u666e\u901a\u6253\u5de5\u4eba\uff0c\u4e5f\u80fd\u62e5\u6709\u65e0\u9650\u7684\u6548\u7387\u751f\u4ea7\u529b\u3002</p>\n<p>\u73b0\u5728\u7684\u9879\u76ee\u72b6\u6001\n\u7ecf\u8fc7\u51e0\u4e2a\u6708\u65ad\u65ad\u7eed\u7eed\u7684\u6253\u78e8\uff0c\u76ee\u524d\u201c\u71d5\u5b50\u542f\u52a8\u5668\u201d\u7684\u57fa\u7840\u6846\u67b6\u5df2\u7ecf\u975e\u5e38\u7a33\u5b9a\uff1a</p>\n<p>\u53cc\u6a21\u64cd\u4f5c\uff1a\u957f\u6309\u9f20\u6807\u53f3\u952e\u547c\u51fa\u4e5d\u5bab\u683c\u9762\u677f\uff08\u652f\u6301\u4efb\u610f\u62d6\u62fd\u6587\u4ef6\u3001\u8f6f\u4ef6\u6216\u6269\u5c55\u5230\u7a7a\u69fd\uff09\uff0c\u6216\u8005\u6309 Alt + Space \u5f39\u51fa\u62fc\u97f3\u7f29\u5199\u79d2\u641c\u3002\n100% \u5f00\u6e90\u4e0e\u672c\u5730\u4f18\u5148\uff1a\u4f60\u7684\u914d\u7f6e\u3001\u4f60\u590d\u5236\u7684\u5185\u5bb9\u3001\u4f60\u8ba9 AI \u751f\u6210\u7684\u4ee3\u7801\uff0c\u5168\u90fd\u5728\u4f60\u81ea\u5df1\u7684\u7535\u8111\u4e0a\uff0c\u6570\u636e\u5b8c\u5168\u4e0d\u4e0a\u4f20\u4e91\u7aef\uff0c\u7ed9\u4f60\u7edd\u5bf9\u7684\u5b89\u5168\u611f\u3002\n\u5b8c\u5168\u514d\u8d39\uff1a\u6ca1\u6709\u5272\u97ed\u83dc\u5957\u8def\uff0c\u9879\u76ee\u6e90\u7801\u5f7b\u5e95\u516c\u5f00\u3002\n\u6700\u65b0\u7684\u52a8\u6001\u66f4\u65b0\n\u5c31\u5728\u521a\u521a\u8fc7\u53bb\u7684\u8fd9\u4e24\u5929\uff0c\u6211\u53c8\u809d\u4e86\u51e0\u4e2a\u7ec6\u8282\u66f4\u65b0\uff1a</p>\n<p>\u4f18\u5316\u201c\u6781\u7b80\u521b\u5efa\u6a21\u5f0f\u201d\uff1a\u4e3a\u4e86\u8ba9\u4e0d\u61c2\u4ee3\u7801\u7684\u7528\u6237\u4f7f\u7528 AI \u751f\u6210\u5de5\u5177\u66f4\u987a\u624b\uff0c\u6211\u91cd\u65b0\u68b3\u7406\u5e76\u91cd\u6784\u4e86\u201c\u7b80\u6613\u6269\u5c55\u7a97\u201d\u7684\u5e03\u5c40\uff0c\u73b0\u5728\u5173\u952e\u8bcd\u3001\u5206\u7c7b\u4ee5\u53ca\u6743\u9650\u914d\u7f6e\u4e00\u76ee\u4e86\u7136\uff0c\u6781\u5927\u5730\u964d\u4f4e\u4e86\u5bfc\u5165 AI \u4ee3\u7801\u7684\u95e8\u69db\u3002\n\u4e0a\u7ebf\u4e86\u6807\u51c6\u5b98\u7f51 Favicon\uff1a\u4e4b\u524d\u6709\u670b\u53cb\u53cd\u9988\u5728\u6d4f\u89c8\u5668\u548c\u641c\u7d22\u5f15\u64ce\u4e2d\u8bbf\u95ee\u5b98\u7f51\u56fe\u6807\u6709\u4e9b bug \u3002\u6211\u4eca\u5929\u7279\u5730\u63d0\u53d6\u4ea7\u54c1 Logo \uff0c\u751f\u6210\u4e86\u591a\u5c3a\u5bf8\u7684 favicon.ico \u90e8\u7f72\u4e0a\u7ebf\uff0c\u73b0\u5728\u6240\u6709\u9875\u9762\u90fd\u5df2\u7ecf\u914d\u7f6e\u4e86\u89c4\u8303\u7684\u56fe\u6807\u6307\u5411\u3002\n\u5199\u5728\u6700\u540e\n\u71d5\u5b50\u542f\u52a8\u5668\u76ee\u524d\u7531\u6211\u4e00\u4eba\u5229\u7528\u4e1a\u4f59\u65f6\u95f4\u7ef4\u62a4\u3002\u5b83\u53ef\u80fd\u6ca1\u6709\u5546\u4e1a\u8f6f\u4ef6\u90a3\u4e48\u94fa\u5929\u76d6\u5730\u7684\u5e7f\u544a\u5ba3\u4f20\uff0c\u4f46\u5b83\u80dc\u5728\u771f\u8bda\u3001\u8f7b\u91cf\u3001\u5f00\u6e90\u4e14\u514d\u8d39\u3002</p>\n<p>\u5982\u679c\u4f60\u89c9\u5f97\u5b83\u5bf9\u4f60\u7684\u5de5\u4f5c\u6709\u4e00\u4e1d\u4e00\u6beb\u7684\u5e2e\u52a9\uff0c\u6b22\u8fce\u6765\u4f53\u9a8c\u5e76\u7ed9\u6211\u63d0\u51fa\u5b9d\u8d35\u7684\u610f\u89c1\uff1a</p>\n<p>\u5b98\u65b9\u7f51\u7ad9\uff1a <a href=\"https://yanzi.luoluoluo.cc.cd\" rel=\"nofollow\">https://yanzi.luoluoluo.cc.cd</a>\nGitHub \u6e90\u7801\u5e93\uff08\u6c42\u4e2a \u2b50 \u652f\u6301\uff09\uff1aGitHub - luoluoluo22/yanzi</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/RainJayFxxk", 
        "name": "RainJayFxxk", 
        "avatar": "https://cdn.v2ex.com/gravatar/1fed84968be9718a25af721aa93ffa9c?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1224340", 
      "title": "[\u5f00\u6e90\u5206\u4eab] RPG Roleplay Platform\uff1a\u628a\u4f60\u6536\u85cf\u7684\u5c0f\u8bf4\u53d8\u6210\u53ef\u4ea4\u4e92\u6e38\u620f\u4e16\u754c\u7684\u81ea\u6258\u7ba1 LLM \u5f15\u64ce", 
      "id": "https://www.v2ex.com/t/1224340", 
      "date_published": "2026-07-01T14:43:02+00:00", 
      "content_html": "<p>\u6700\u8fd1\u53d1\u73b0\u4e00\u4e2a\u633a\u6709\u610f\u601d\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u5206\u4eab\u7ed9\u540c\u6837\u559c\u6b22\u6298\u817e LLM + \u89d2\u8272\u626e\u6f14\u7684\u575b\u53cb\u3002</p>\n<h2>\u8fd9\u662f\u4ec0\u4e48</h2>\n<p>\u4e00\u53e5\u8bdd\u6982\u62ec\uff1a<strong>\u4e00\u4e2a\u81ea\u6258\u7ba1\u7684 LLM RPG \u5f15\u64ce\uff0c\u80fd\u628a\u957f\u7bc7\u5c0f\u8bf4\u8f6c\u5316\u6210\u53ef\u4ea4\u4e92\u7684\u6e38\u620f\u4e16\u754c</strong>\u3002</p>\n<p>\u4f5c\u8005\u6700\u521d\u662f\u4e3a\u4e86\u8dd1\u81ea\u5df1\u4e00\u90e8 485 \u4e07\u5b57\u7684\u5c0f\u8bf4\u505a\u7684\uff0c\u540e\u6765\u76f4\u63a5\u5f00\u6e90\u4e86\u3002\u5b9a\u4f4d\u4ecb\u4e8e SillyTavern \u548c AI Dungeon\n\u4e4b\u95f4\uff0c\u4f46\u66f4\u504f\"\u4e16\u754c\u89c2\u9a71\u52a8\"\uff0c\u800c\u4e0d\u662f\u5355\u7eaf\u7684\u89d2\u8272\u5361\u5bf9\u8bdd\u3002</p>\n<p>\u9879\u76ee\u5730\u5740\uff1a <a href=\"https://github.com/felixchaos/rpg-roleplay-platform\" rel=\"nofollow\">https://github.com/felixchaos/rpg-roleplay-platform</a>\nLicense\uff1aAGPL-3.0 \uff08\u670d\u52a1\u7aef\u5fc5\u987b\u5f00\u6e90\uff0c\u5546\u4e1a\u6388\u6743\u53ef\u8054\u7cfb\u4f5c\u8005\uff09</p>\n<h2>\u622a\u56fe</h2>\n<p><img alt=\"\u9884\u89c8\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.postimg.cc/85Z3DcLv/image.png\"/></p>\n<h2>\u4eae\u70b9\u5728\u54ea</h2>\n<p>\u4e0d\u662f\u53c8\u4e00\u4e2a\u5957\u58f3 ChatGPT \uff0c\u4e3b\u8981\u6709\u51e0\u70b9\u6bd4\u8f83\u6233\u6211\uff1a</p>\n<ul>\n<li><strong>Git \u98ce\u683c\u7684\u5b58\u6863\u7cfb\u7edf</strong>\uff1acommit / ref / checkout \uff0c\u53ef\u4ee5\u968f\u65f6\u5f00\u5206\u652f\u8dd1\u4e0d\u540c\u5267\u60c5\u8d70\u5411\uff0c\u4e0d\u559c\u6b22\u5c31 checkout \u56de\u6765</li>\n<li><strong>\u5185\u7f6e BM25 + pgvector \u68c0\u7d22</strong>\uff1a\u539f\u6587\u672c\u76f4\u63a5\u5582\u8fdb\u53bb\uff0cAI \u5728\u7eed\u5199\u65f6\u4f1a\u771f\u7684\"\u8bb0\u5f97\"\u8bbe\u5b9a\uff0c\u800c\u4e0d\u662f\u585e\u6ee1\u4e0a\u4e0b\u6587\u5c31\u5d29</li>\n<li><strong>D&amp;D 5E \u89c4\u5219\u96c6</strong>\uff1a\u81ea\u5e26\u906d\u9047\u6218\u7cfb\u7edf\u3001\u7269\u54c1\u680f\uff0c\u8dd1\u684c\u9762 RPG \u4e5f\u591f\u7528</li>\n<li><strong>\u4e09\u9762\u677f Markdown \u7f16\u8f91\u5668</strong>\uff1a\u6587\u4ef6\u6811 + \u7f16\u8f91\u533a + AI \u4fa7\u677f\uff0c\u652f\u6301\u5e7d\u7075\u6587\u672c\u7eed\u5199\u3001\u6309\u5757 accept/reject \uff0c\u5199\u4f5c\u5de5\u5177\u515a\u4f1a\u559c\u6b22</li>\n<li><strong>Tavern \u6a21\u5f0f</strong>\uff1a\u517c\u5bb9 SillyTavern \u89d2\u8272\u5361\u62d6\u653e\u5bfc\u5165\uff0c\u5206\u652f\u5bf9\u8bdd\u3001\u6bcf\u8f6e system prompt \u53ef\u7f16\u8f91</li>\n<li><strong>BYOK \u52a0\u5bc6\u5b58\u50a8</strong>\uff1a\u5bc6\u94a5 AES-256-GCM \u52a0\u5bc6\uff0c\u652f\u6301 10+ \u4f9b\u5e94\u5546\uff08 Anthropic / OpenAI / Gemini / DeepSeek / DashScope \u7b49\uff09</li>\n</ul>\n<h2>\u6280\u672f\u6808</h2>\n<table>\n<thead>\n<tr>\n<th>\u5c42</th>\n<th>\u7528\u4e86\u4ec0\u4e48</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\u540e\u7aef</td>\n<td>Python 3.12 + FastAPI + uvicorn</td>\n</tr>\n<tr>\n<td>\u6570\u636e\u5e93</td>\n<td>Postgres 16 + pgvector + Redis</td>\n</tr>\n<tr>\n<td>\u524d\u7aef</td>\n<td>React 19 + Vite + Cloudscape Design</td>\n</tr>\n<tr>\n<td>\u90e8\u7f72</td>\n<td>Docker / \u88f8\u673a\u811a\u672c / \u684c\u9762 App</td>\n</tr>\n</tbody></table><h2>\u4e09\u79cd\u90e8\u7f72\u65b9\u5f0f\uff0c\u6309\u9700\u9009</h2>\n<ol>\n<li><strong>\u684c\u9762\u7248\uff08\u63a8\u8350\u65b0\u624b\uff09</strong>\uff1a\u7b7e\u540d\u8fc7\u7684 macOS / Windows \u5e94\u7528\uff0c\u5185\u7f6e Postgres + Python \uff0c\u53cc\u51fb\u542f\u52a8\uff0c\u5168\u79bb\u7ebf</li>\n<li><strong>\u4e00\u952e\u811a\u672c</strong>\uff1a<code>git clone</code> \u540e\u8dd1 <code>./scripts/<a href=\"http://setup.sh\" rel=\"nofollow\">setup.sh</a></code>\uff0cvenv \u3001DB \u3001\u8fc1\u79fb\u4e00\u628a\u68ad</li>\n<li><strong>\u624b\u52a8\u90e8\u7f72</strong>\uff1a\u7ea6 8 \u6b65\uff0c\u9002\u5408\u60f3\u6254\u5230\u81ea\u5df1 VPS \u4e0a\u7684</li>\n</ol>\n<h2>\u548c SillyTavern \u6709\u5565\u533a\u522b</h2>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>SillyTavern</th>\n<th>RPG Roleplay</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\u6838\u5fc3\u5355\u4f4d</td>\n<td>\u89d2\u8272\u5361</td>\n<td>\u5c0f\u8bf4 + \u4e16\u754c\u89c2</td>\n</tr>\n<tr>\n<td>\u68c0\u7d22</td>\n<td>\u9700\u88c5\u6269\u5c55</td>\n<td>\u5185\u7f6e BM25 + \u5411\u91cf</td>\n</tr>\n<tr>\n<td>\u5b58\u6863</td>\n<td>\u5bfc\u51fa\u804a\u5929\u8bb0\u5f55</td>\n<td>Git \u98ce\u683c\u5206\u652f</td>\n</tr>\n</tbody></table><p>\u7b80\u5355\u8bf4\uff1aSillyTavern \u66f4\u50cf\"AI \u8001\u5a46\u804a\u5929\u5668\"\uff0c\u8fd9\u4e2a\u66f4\u50cf\"AI \u8dd1\u56e2 DM + \u5c0f\u8bf4\u7eed\u5199\u5de5\u4f5c\u53f0\"\u3002</p>\n<h2>\u9002\u5408\u8c01</h2>\n<ul>\n<li>\u624b\u91cc\u6709\u5fc3\u6c34\u5c0f\u8bf4\u60f3\u8dd1\u4e8c\u521b\u7684</li>\n<li>\u60f3\u642d\u4e2a\u79c1\u4eba AI \u8dd1\u56e2\u684c\u7684</li>\n<li>\u7f51\u6587\u4f5c\u8005\u60f3\u62ff AI \u505a\u8f85\u52a9\u5927\u7eb2/\u7eed\u5199\u7684</li>\n<li>\u5355\u7eaf\u60f3\u73a9 SillyTavern \u4f46\u5acc\u8bb0\u5fc6\u529b\u4e0d\u591f\u7528\u7684</li>\n</ul>\n<h2>\u6211\u8e29\u7684\u5751\uff08\u63d0\u524d\u907f\u96f7\uff09</h2>\n<ul>\n<li>pgvector \u9996\u6b21\u62c9\u8d77\u6765\u5360\u8d44\u6e90\u4e0d\u5c0f\uff0c2C4G \u7684\u5c0f\u9e21\u6709\u70b9\u5403\u529b\uff0c\u5efa\u8bae 4C8G \u8d77\u6b65</li>\n<li>BYOK \u7528\u56fd\u4ea7\u5382\u5546\uff08 DeepSeek / DashScope \uff09\u6027\u4ef7\u6bd4\u62c9\u6ee1\uff0cClaude / GPT \u8dd1\u957f\u5267\u60c5\u94b1\u5305\u9876\u4e0d\u4f4f</li>\n<li>Docker \u90e8\u7f72\u8bb0\u5f97\u628a volume \u6302\u597d\uff0c\u4e0d\u7136\u5b58\u6863\u5168\u6ca1</li>\n</ul>\n<p>\u629b\u7816\u5f15\u7389\uff0c\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u53bb\u4ed3\u5e93 star \u4e00\u4e0b\uff0c\u4f5c\u8005\u54cd\u5e94\u8fd8\u633a\u52e4\u5feb\u3002\u6709\u4e00\u8d77\u73a9\u7684\u6b22\u8fce\u697c\u4e0b\u4ea4\u6d41\u914d\u7f6e\u548c prompt \u5fc3\u5f97\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/shiyu2001", 
        "name": "shiyu2001", 
        "avatar": "https://cdn.v2ex.com/avatar/924b/f35c/641874_large.png?m=1786158942"
      }, 
      "url": "https://www.v2ex.com/t/1223462", 
      "title": "[\u5f00\u6e90] \u544a\u522b\u201c\u5220\u5e93\u8dd1\u8def\u201d\u7684\u6050\u60e7\uff1a\u6211\u505a\u4e86\u4e00\u6b3e\u8de8\u5e73\u53f0\u7684\u78c1\u76d8\u6e05\u7406\u5de5\u5177 Skiff", 
      "id": "https://www.v2ex.com/t/1223462", 
      "date_published": "2026-06-28T09:58:11+00:00", 
      "content_html": "<p>\u6211\u5e73\u65f6\u4e00\u76f4\u628a Linux \u5f53\u4e3b\u529b\u673a\u7528\u3002\u6bcf\u6b21\u9047\u5230\u78c1\u76d8\u7a7a\u95f4\u544a\u6025\uff0c\u6e05\u7406\u5783\u573e\u57fa\u672c\u90fd\u5f97\u9760\u547d\u4ee4\u884c\u3002\u867d\u7136\u80fd\u6e05\uff0c\u4f46\u4f53\u9a8c\u771f\u7684\u8ba9\u4eba\u5934\u75bc\uff1a\u9762\u5bf9\u4e00\u5806\u6df1\u5c42\u8def\u5f84\u548c\u76ee\u5f55\uff0c\u7ecf\u5e38\u5f97\u53cd\u590d\u67e5\u8d44\u6599\u786e\u8ba4\u8fd9\u5230\u5e95\u662f\u65e0\u7528\u7f13\u5b58\u3001\u5386\u53f2\u65e5\u5fd7\uff0c\u8fd8\u662f\u67d0\u4e2a\u8f6f\u4ef6\u7684\u201c\u8eab\u5bb6\u6027\u547d\u201d\u3002\u6bcf\u6b21\u6572\u547d\u4ee4\u90fd\u5c0f\u5fc3\u7ffc\u7ffc\uff0c\u5220\u4e2a\u6587\u4ef6\u7b80\u76f4\u50cf\u5728\u62c6\u70b8\u5f39\u3002\ud83d\udca3</p>\n<p>\u5b9e\u5728\u53d7\u4e0d\u4e86\u8fd9\u79cd\u6298\u78e8\uff0c\u540e\u6765\u6211\u5e72\u8106\u81ea\u5df1\u52a8\u624b\u505a\u4e86\u4e00\u4e2a\u78c1\u76d8\u6e05\u7406\u5de5\u5177,Skiff \u3002</p>\n<p>\u8fd9\u4e2a\u540d\u5b57\u53d6\u81ea\u201c\u8f7b\u821f\u5df2\u8fc7\u4e07\u91cd\u5c71\u201d\uff0c\u5e0c\u671b\u80fd\u8ba9\u5927\u5bb6\u5728\u6e05\u7406\u7cfb\u7edf\u3001\u91ca\u653e\u7a7a\u95f4\u65f6\uff0c\u4e5f\u80fd\u4f53\u9a8c\u5230\u90a3\u79cd\u5982\u91ca\u91cd\u8d1f\u3001\u8f7b\u5feb\u6d41\u7545\u7684\u611f\u89c9\u3002</p>\n<p>\ud83d\udd17 \u5f00\u6e90\u5730\u5740\uff1a <a href=\"https://github.com/DrizzleTime/Skiff\" rel=\"nofollow\">https://github.com/DrizzleTime/Skiff</a></p>\n<h3>\u622a\u56fe\u9884\u89c8</h3>\n<p><img alt=\"qLWnqg4b4ttfhUs7H2vY8EgGQoMqtHGK.webp\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/qLWnqg4b4ttfhUs7H2vY8EgGQoMqtHGK.webp\"/>\n<img alt=\"lAEsD7iLJeTyo4rqSQKet83m68eCpGso.webp\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/lAEsD7iLJeTyo4rqSQKet83m68eCpGso.webp\"/>\n<img alt=\"EtdsK6UAY6K8tMltJwtYM1aQbVS6NN48.webp\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/EtdsK6UAY6K8tMltJwtYM1aQbVS6NN48.webp\"/>\n<img alt=\"OJ12kfpzs4rj2fVGniQNYXdXfg2OP46I.webp\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/OJ12kfpzs4rj2fVGniQNYXdXfg2OP46I.webp\"/>\n<img alt=\"MnL7LE2xAgCc3OoewOV9WAOoygOX0zlY.webp\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://cdn.nodeimage.com/i/MnL7LE2xAgCc3OoewOV9WAOoygOX0zlY.webp\"/></p>\n<h3>\u6838\u5fc3\u529f\u80fd</h3>\n<p>\u76ee\u524d Skiff \u5df2\u7ecf\u5b9e\u73b0\u7684\u529f\u80fd\u4e3b\u8981\u5305\u62ec\uff1a</p>\n<p>\u5168\u65b9\u4f4d\u7f13\u5b58\u626b\u63cf\uff1a\u7cbe\u51c6\u5b9a\u4f4d\u5e76\u6e05\u7406\u7cfb\u7edf\u3001\u6d4f\u89c8\u5668\u4ee5\u53ca\u5404\u7c7b\u5f00\u53d1\u5de5\u5177\u4ea7\u751f\u7684\u5197\u4f59\u7f13\u5b58\u3002</p>\n<p>\u5305\u7ba1\u7406\u5668\u7626\u8eab\uff1a\u652f\u6301 APT \u3001Pacman \u3001Flatpak \u3001Homebrew \u7b49\u4e3b\u6d41\u5305\u7ba1\u7406\u5668\u7684\u6570\u636e\u548c\u65e0\u7528\u4f9d\u8d56\u6e05\u7406\u3002</p>\n<p>AI \u667a\u80fd\u5206\u6790\uff1a\u652f\u6301 AI \u8f85\u52a9\u5206\u6790\u529f\u80fd\uff0c\u5e2e\u4f60\u66f4\u667a\u80fd\u5730\u5224\u65ad\u90a3\u4e9b\u201c\u5403\u4e0d\u51c6\u201d\u7684\u6587\u4ef6\u53bb\u7559\u3002</p>\n<p>Agent \u8bb0\u5f55\u6e05\u7406\uff1a\u4e00\u952e\u6e05\u7406\u672c\u5730\u5404\u7c7b Agent \u5de5\u5177\u79ef\u7d2f\u7684\u5386\u53f2\u4f1a\u8bdd\u8bb0\u5f55\u548c\u9648\u65e7\u65e5\u5fd7\u3002</p>\n<p>\u73af\u5883\u53d8\u91cf\u5b89\u5168\u7ba1\u7406\uff1a\u53ef\u89c6\u5316\u7ba1\u7406 zsh, bash, fish, PowerShell \u7b49\u73af\u5883\u53d8\u91cf\u3002\u63d0\u4f9b\u53d8\u66f4\u9884\u89c8\u548c\u81ea\u52a8\u5907\u4efd\u529f\u80fd\uff0c\u518d\u4e5f\u4e0d\u6015\u6539\u9519\u73af\u5883\u5bfc\u81f4\u7cfb\u7edf\u5d29\u6e83\u3002</p>\n<h3>\u6b22\u8fce\u5171\u5efa</h3>\n<p>\u9879\u76ee\u76ee\u524d\u8fd8\u5728\u6301\u7eed\u6253\u78e8\u4e2d\u3002\u4e0d\u540c\u5e73\u53f0\u3001\u4e0d\u540c\u53d1\u884c\u7248\u7684\u7f13\u5b58\u8def\u5f84\u548c\u5305\u7ba1\u7406\u5668\u884c\u4e3a\u5dee\u5f02\u5f88\u5927\uff0c\u5982\u679c\u4f60\u5728\u4f7f\u7528\u7684\u8fc7\u7a0b\u4e2d\u6709\u66f4\u597d\u7684\u4f18\u5316\u5efa\u8bae\uff0c\u6216\u8005\u6709\u5e0c\u671b Skiff \u652f\u6301\u7684\u65b0\u6e05\u7406\u76ee\u6807\uff0c\u975e\u5e38\u6b22\u8fce\u76f4\u63a5\u6765 GitHub \u63d0 Issue \u6216 PR \uff01</p>\n<p>\u5982\u679c Skiff \u5e2e\u52a9\u4f60\u627e\u56de\u4e86\u5b9d\u8d35\u7684\u78c1\u76d8\u7a7a\u95f4\uff0c\u6b22\u8fce\u7ed9\u4e2a Star \u2b50 \u652f\u6301\u4e00\u4e0b\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/izumi0uu", 
        "name": "izumi0uu", 
        "avatar": "https://cdn.v2ex.com/gravatar/887c04e9a5b45fd916bb69d4d1c6e4ca?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1223370", 
      "title": "[\u5f00\u6e90] \u4e00\u4e2a\u652f\u6301\u81ea\u5b9a\u4e49\u7ba1\u7406 github star \u9875\u7684\u6d4f\u89c8\u5668\u63d2\u4ef6", 
      "id": "https://www.v2ex.com/t/1223370", 
      "date_published": "2026-06-27T15:52:07+00:00", 
      "content_html": "<h2><strong>GitHub Star \u8fc7\u7684\u9879\u76ee\u9002\u5408\u6536\u85cf,\u4f46\u505a\u4e0d\u4e86\u957f\u671f\u7ba1\u7406\u3002</strong></h2>\n<p>\u5f53\u4f60\u7684 star \u9879\u76ee\u6536\u85cf\u5230\u51e0\u767e\u51e0\u5343\u4e2a\u7684\u65f6\u5019\uff0c\u901a\u8fc7\u539f\u751f list \u529f\u80fd\u96be\u4ee5\u7ba1\u7406\uff0cai \u65f6\u4ee3\uff0cgithub \u9879\u76ee\u6307\u6570\u7ea7\u589e\u957f\uff0c\u800c\u4f60\u53c8\u60f3\u6536\u85cf\u5404\u79cd\u5404\u6837\u7684\u9879\u76ee\uff0c\u8fc7\u540e\u53c8\u5fd8\u8bb0\u5728\u54ea\uff0c\u53eb\u4ec0\u4e48\u540d\u5b57\u4e86\uff0c\u6240\u4ee5\u6709\u5f88\u591a\u96be\u89e3\u51b3\u7684\u95ee\u9898:</p>\n<ul>\n<li>\u5206\u9875\u770b\u4e0d\u5230\u5168\u90e8 stars \u4ed3\u5e93</li>\n<li>\u6ca1\u6709\u4e2a\u4eba\u6253\u6807\u7b7e\u7cfb\u7edf</li>\n<li>\u6ca1\u6709\u771f\u6b63\u7684\u7b14\u8bb0\u5c42</li>\n<li>\u5f88\u96be\u56de\u770b\u5f53\u65f6\u5b58\u4e86\u4ec0\u4e48\u3001\u4e3a\u4ec0\u4e48\u5b58</li>\n</ul>\n<p>Better GitHub Stars Manager \u63d2\u4ef6\u8ba9 GitHub Stars \u5bf9\u91cd\u5ea6\u7528\u6237\u771f\u6b63\u53ef\u7ba1\u7406\u3002</p>\n<p><a href=\"https://i.imgur.com/X3YzjXd.gif\" rel=\"nofollow\">https://i.imgur.com/X3YzjXd.gif</a></p>\n<p><a href=\"https://github.com/izumi0uu/better-github-stars-manager\" rel=\"nofollow\">https://github.com/izumi0uu/better-github-stars-manager</a></p>\n<h2><strong>\u529f\u80fd\u7279\u6027</strong></h2>\n<ul>\n<li>\n<p><strong>\u4e00\u6b21\u7ba1\u7406\u6240\u6709\u5df2 star \u9879\u76ee</strong>\u00a0\u628a\u4f60 star \u7684\u4ed3\u5e93\u52a0\u8f7d\u8fdb\u865a\u62df\u5316\u8868\u683c\u3002</p>\n</li>\n<li>\n<p><strong>\u5feb\u901f\u641c\u7d22\u4e0e\u7b5b\u9009</strong>\u00a0\u5728\u4ed3\u5e93\u540d\u3001\u63cf\u8ff0\u3001topics \u3001\u7b14\u8bb0\u4e2d\u5168\u6587\u641c\u7d22;\u6309\u8bed\u8a00\u3001\u6807\u7b7e\u3001\u672a\u6253\u6807\u7b7e\u7b5b\u9009\u3002</p>\n</li>\n<li>\n<p><strong>\u60ac\u6d6e\u6309\u94ae\u4e00\u952e\u5207\u6362</strong>\u00a0\u5728\u4f60\u81ea\u5df1\u7684 Github star \u9875\uff0c \u63d0\u4f9b\u60ac\u6d6e\u6309\u94ae\u4e00\u952e\u5207\u6362\u5230\u7ba1\u7406\u9762\u677f\u3002</p>\n</li>\n<li>\n<p><strong>\u81ea\u5b9a\u4e49\u6807\u7b7e\u4e0e\u7b14\u8bb0</strong>\u00a0\u52a0\u4f60\u81ea\u5df1\u7684\u6807\u7b7e\u548c\u7b14\u8bb0,\u8ba9 star \u4ece\u88ab\u52a8\u5217\u8868\u53d8\u6210\u4e00\u4e2a\u53ef\u7528\u7684\u8d44\u6599\u5e93\u3002</p>\n</li>\n<li>\n<p><strong>\u81ea\u52a8\u63a8\u8350\u6807\u7b7e</strong>\u00a0\u4e00\u952e\u6216\u6279\u91cf\u628a\u4ed3\u5e93\u7684 topics \u4e0e\u8bed\u8a00\u8f6c\u6210\u63a8\u8350\u6807\u7b7e\u3002</p>\n</li>\n<li>\n<p><strong>\u589e\u91cf\u540c\u6b65\u4e0e\u5168\u91cf\u91cd\u626b</strong>\u00a0\u5feb\u901f\u62c9\u53d6\u65b0 star \u7684\u4ed3\u5e93;\u9700\u8981\u65f6\u53ef\u5168\u91cf\u91cd\u626b\u6765\u5bf9\u8d26 unstar,\u540c\u65f6\u4fdd\u7559\u4f60\u7684\u6279\u6ce8\u3002</p>\n</li>\n<li>\n<p><strong>repo \u9875 tag chip</strong>\u00a0\u76f4\u63a5\u5728\u5355\u4e2a GitHub \u4ed3\u5e93\u9875\u67e5\u770b\u548c\u7f16\u8f91\u4f60\u7684\u6807\u7b7e\u3002</p>\n</li>\n<li>\n<p><strong>\u8de8\u8bbe\u5907\u6279\u6ce8\u540c\u6b65</strong>\u00a0\u901a\u8fc7\u4f60\u81ea\u5df1\u7684\u79c1\u6709 GitHub Gist \u63a8\u9001/\u62c9\u53d6\u6807\u7b7e\u4e0e\u7b14\u8bb0\u3002</p>\n</li>\n<li>\n<p><strong>Gist \u652f\u6491\u7684\u5b58\u50a8\u5c42</strong>\u00a0\u628a\u6279\u6ce8\u5c42\u653e\u5728\u4e00\u4e2a\u4e13\u7528 secret Gist \u91cc,\u53ef\u79fb\u690d\u3001\u53ef\u6062\u590d\u3001\u8de8\u8bbe\u5907\u540c\u6b65,\u65e0\u9700\u540e\u7aef\u3002</p>\n</li>\n</ul>\n<h2><strong>\u622a\u56fe</strong></h2>\n<p><a href=\"https://i.imgur.com/gvbyW2Z.png\" rel=\"nofollow\">https://i.imgur.com/gvbyW2Z.png</a></p>\n<h2><strong>\u6559\u7a0b</strong></h2>\n<ol>\n<li>\u5148\u4ece Chrome Web Store \u5b89\u88c5\u6269\u5c55\u3002</li>\n<li>\u6253\u5f00\u63d2\u4ef6\uff0c\u70b9\u51fb\u8df3\u8f6c Options \u9875,\u7c98\u8d34\u4e00\u4e2a GitHub personal access token \u5e76\u9a8c\u8bc1\u3002</li>\n<li>\u8bbf\u95ee\u4f60\u7684 GitHub stars \u9875:<code><a href=\"https://github.com/\" rel=\"nofollow\">https://github.com/</a>{you}?tab=stars</code>\u3002</li>\n<li>\u8fd0\u884c\u00a0<strong>Sync</strong>\u00a0\u5bfc\u5165\u4f60\u7684 star \u3002</li>\n<li>\u8fb9\u6d4f\u89c8\u4ed3\u5e93\u8fb9\u641c\u7d22\u3001\u7b5b\u9009\u3001\u6253\u6807\u7b7e\u3001\u52a0\u7b14\u8bb0\u3002</li>\n<li>\u60f3\u8ba9\u6279\u6ce8\u8de8\u8bbe\u5907\u6d41\u8f6c\u65f6\u7528\u00a0<strong>Push</strong>\u00a0\u548c\u00a0<strong>Pull</strong>\u3002</li>\n</ol>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/415333856", 
        "name": "415333856", 
        "avatar": "https://cdn.v2ex.com/avatar/a7bc/8fef/75157_large.png?m=1782400357"
      }, 
      "url": "https://www.v2ex.com/t/1222770", 
      "title": "[Github \u5f00\u6e90] \u4e2a\u4eba\u81ea\u6258\u7ba1\u3001\u96f6\u8fd0\u7ef4\u7684 A \u80a1\u300c\u9009\u80a1 + \u76d1\u63a7 + \u56de\u6d4b\u300d\u667a\u80fd\u91cf\u5316\u5de5\u4f5c\u53f0", 
      "id": "https://www.v2ex.com/t/1222770", 
      "date_published": "2026-06-25T06:02:28+00:00", 
      "content_html": "<p>tickflow-stock-panel\n\u9879\u76ee\u5730\u5740:<a href=\"https://github.com/shy3130/tickflow-stock-panel\" rel=\"nofollow\">https://github.com/shy3130/tickflow-stock-panel</a></p>\n<p>\u9879\u76ee\u524d\u8eab\u662f\u4e24\u7248\u81ea\u7528\u7684\u91cf\u5316\u56de\u6d4b\u7cfb\u7edf,\u73b0\u5728\u4e3a\u4e86\u63d0\u5347\u7b56\u7565\u548c\u56de\u6d4b\u6027\u80fd\u60f3\u91cd\u6784\u9879\u76ee,\u7d22\u6027\u5c31\u5f00\u6e90\u4e86</p>\n<p>\u672c\u9879\u76ee\u57fa\u4e8e Tickflow \u6570\u636e\u6e90,\u65e0\u9700\u4ed8\u8d39\u5c31\u80fd\u5b9a\u5236\u7b56\u7565+\u56de\u6d4b,\u652f\u6301\u63a5\u5165\u7b2c\u4e09\u65b9\u81ea\u6709\u4e2a\u6027\u5316\u6570\u636e.\u9879\u76ee\u9002\u914d\u4e86\u5168\u6863\u4f4d,\u4f46\u53ea\u662f\u5b9a\u5236\u7b56\u7565\u9009\u80a1+\u56de\u6d4b\u7684\u5c31\u4e0d\u8981\u6d88\u8d39\u4e86,\u514d\u8d39\u8db3\u591f,\u81ea\u6709\u6570\u636e\u6e90\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u76f4\u63a5\u63a5\u5165\u4e2a\u6027\u5316\u6269\u5c55\u6570\u636e\u6765\u4f7f\u7528.</p>\n<p>\u5feb\u901f\u8fd0\u884c:\n<a href=\"http://dev.sh\" rel=\"nofollow\">dev.sh</a>(mac)\ndev.ps1(win)</p>\n<p>\u6b22\u8fce\u5927\u4f6c\u4eec fork \u548c star,\u53ef\u4ee5\u591a\u63d0 issues\\pr,\u4e5f\u53ef\u4ee5\u4e8c\u6b21\u5f00\u53d1.</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/tuple", 
        "name": "tuple", 
        "avatar": "https://cdn.v2ex.com/gravatar/e30f857fd38802948dd60e9fb484132e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1222718", 
      "title": "[\u5f00\u6e90] \u5634\u9041 TalkOut: AI \u6597\u5634\u6e38\u620f \u7528\u4e00\u5f20\u5634\u8bf4\u670d\u4e00\u4e2a\u6b7b\u6d3b\u4e0d\u677e\u53e3\u7684 AI", 
      "id": "https://www.v2ex.com/t/1222718", 
      "date_published": "2026-06-25T03:20:36+00:00", 
      "content_html": "<blockquote>\n<p>\u4e00\u4e2a\u5f00\u6e90\u7684 AI \u5bf9\u8bdd\u8bf4\u670d\u5c0f\u6e38\u620f\u3002\u4f60\u7528\u5634(\u6253\u5b57)\u53bb\u8bf4\u670d\u4e00\u4e2a<strong>\u6b7b\u6d3b\u4e0d\u80af\u677e\u53e3</strong>\u7684 AI \u89d2\u8272,\u8ba9\u5b83\u505a\u5b83\u672c\u6765\u4e0d\u613f\u505a\u7684\u4e8b\u3002\u6bcf\u4e2a\u89d2\u8272\u6709\u4eba\u8bbe\u3001\u6709\u9690\u85cf\u8f6f\u808b\u3001\u6709\u4e00\u8e29\u5c31\u7ffb\u8f66\u7684\u7ea2\u7ebf\u3002\u652f\u6301<strong>\u4efb\u610f OpenAI \u517c\u5bb9\u7aef\u70b9</strong>(\u4e2d\u8f6c / DeepSeek / GLM / Kimi / \u672c\u5730\u90fd\u884c),Vercel \u6216\u81ea\u6258\u7ba1\u4e00\u952e\u4e0a\u3002</p>\n<p>\u4ed3\u5e93: <a href=\"https://github.com/cranux/TalkOut\" rel=\"nofollow\">https://github.com/cranux/TalkOut</a>  \u00b7  \u5728\u7ebf\u4f53\u9a8c: <a href=\"https://talk-out-kappa.vercel.app/\" rel=\"nofollow\">https://talk-out-kappa.vercel.app/</a></p>\n</blockquote>\n<h3>\u8fd9\u73a9\u610f\u513f\u662f\u5565</h3>\n<p>\u300c\u5634\u9041\u300d= \u5634\u70ae\u5fcd\u672f\u3002\u7ed9\u4f60 8 \u4e2a\u6027\u683c\u5404\u5f02\u7684\u5bf9\u624b:\u95e8\u536b\u00b7\u8001\u5f20\u3001\u6d77\u5173 AI\u00b7K \u3001\u524d\u4efb\u00b7\u5c0f\u8587\u3001\u8001\u677f\u00b7\u738b\u603b\u3001\u5916\u661f\u8c03\u67e5\u5458\u00b7Zorp \u3001\u9000\u6b3e AI\u00b79527 \u3001\u4e08\u6bcd\u5a18\u00b7\u738b\u963f\u59e8\u3001\u667a\u80fd\u95e8\u9501\u00b7\u5c0f\u9501\u3002</p>\n<p>\u6bcf\u4e2a\u89d2\u8272\u4e0d\u662f\u968f\u4fbf\u804a\u804a:</p>\n<ul>\n<li><strong>\u6709\u9690\u85cf\u8f6f\u808b</strong> \u2014\u2014 \u4f60\u5f97\u8bd5\u63a2\u7740\u6233\u4e2d\u5b83\u771f\u6b63\u5728\u610f\u7684\u70b9,\u7a7a\u6cdb\u6c42\u60c5/\u60c5\u7eea\u65bd\u538b\u4e00\u5f8b 0 \u5206\u751a\u81f3\u5012\u6263;</li>\n<li><strong>\u6709\u7ea2\u7ebf</strong> \u2014\u2014 \u5a01\u80c1\u3001\u7529\u9505\u3001\u6446\u70c2\u2026\u2026\u4e00\u8e29\u5f53\u573a\u7ffb\u8f66;</li>\n<li><strong>\u8bf4\u670d\u5ea6\u6761 + \u56de\u5408\u4e0a\u9650</strong> \u2014\u2014 \u6512\u6ee1\u8bf4\u670d\u5ea6\u7b97\u8d62,\u56de\u5408\u8017\u5c3d\u5c31 GG \u3002</li>\n</ul>\n<p>\u6700\u9a9a\u7684\u8bbe\u8ba1:<strong>AI \u4e00\u6b21\u8c03\u7528\u91cc\u540c\u65f6\u5f53\u6f14\u5458\u53c8\u5f53\u88c1\u5224</strong> \u2014\u2014 \u65e2\u4ee5\u89d2\u8272\u8eab\u4efd\u56de\u4f60\u53f0\u8bcd,\u53c8\u7ed9\u8fd9\u53e5\u8bdd\u6253\u5206(\u8bf4\u670d\u5ea6 \u00b1\u3001\u60c5\u7eea\u3001\u662f\u5426\u8e29\u7ea2\u7ebf),\u4e00\u4e2a\u7ed3\u6784\u5316\u8f93\u51fa\u641e\u5b9a\u3002</p>\n<h3>\u529f\u80fd</h3>\n<ul>\n<li>\ud83c\udfad 8 \u89d2\u8272\u81ea\u7531\u7ec3\u4e60</li>\n<li>\ud83c\udfc6 <strong>\u6bcf\u65e5\u540c\u9898</strong>:\u5168\u7f51\u5f53\u5929\u540c\u4e00\u4e2a\u5bf9\u624b,\u6bd4\u8c01\u56de\u5408\u6700\u5c11,<strong>\u6392\u884c\u699c</strong>\u4e0a\u699c</li>\n<li>\ud83d\uddbc\ufe0f <strong>\u6218\u62a5\u5361</strong>:\u4e00\u5c40\u7ed3\u675f\u751f\u6210\u53ef\u5206\u4eab\u7684 PNG \u6218\u62a5,\u79fb\u52a8\u7aef\u76f4\u63a5\u8c03\u7cfb\u7edf\u5206\u4eab</li>\n<li>\ud83c\udfa8 4 \u5957<strong>\u65b0\u7c97\u91ce\u4e3b\u4e49</strong>\u914d\u8272\u4e3b\u9898(\u725b\u76ae\u7eb8 / \u591c\u58a8 / \u871c\u6843 / \u8584\u8377),PC / \u624b\u673a\u81ea\u9002\u5e94</li>\n<li>\ud83d\ude48 \u514d\u767b\u5f55(\u533f\u540d ID),\u5f00\u7bb1\u5373\u73a9</li>\n</ul>\n<h3>\u6280\u672f\u6808 / \u5bf9\u81ea\u6258\u7ba1\u53cb\u597d\u7684\u70b9</h3>\n<ul>\n<li><strong>Next.js 15 + React 19 + TS</strong>,\u524d\u540e\u7aef\u4e00\u4f53</li>\n<li><strong>\u6a21\u578b\u5c42\u7edf\u4e00 OpenAI \u534f\u8bae</strong>,\u914d\u7f6e\u5c31\u4e09\u4ef6\u5957:<code>LLM_API_KEY</code> + <code>LLM_MODEL</code> + <code>LLM_BASE_URL</code>\u3002\u4efb\u4f55\u517c\u5bb9\u7aef\u70b9\u90fd\u80fd\u585e \u2014\u2014 \u5b98\u65b9\u3001DeepSeek \u3001\u901a\u4e49\u3001Kimi \u3001GLM \u3001<strong>\u4e2d\u8f6c\u7f51\u5173</strong>\u3001\u672c\u5730 Ollama \u968f\u4fbf</li>\n<li><strong>\u601d\u8003/\u63a8\u7406\u6a21\u578b\u4e5f\u80fd\u7528</strong>:\u7ed3\u6784\u5316\u8f93\u51fa\u505a\u4e86\u81ea\u9002\u5e94\u964d\u7ea7\u94fe <code>\u5de5\u5177\u8c03\u7528 \u2192 response_format(json_object) \u2192 \u7eaf\u63d0\u793a\u8bcd</code>,\u78b0\u5230\u4e0d\u652f\u6301 <code>tool_choice</code> \u7684\u601d\u8003\u6a21\u578b\u81ea\u52a8\u4e0b\u6c89,\u4e0d\u4f1a\u4e00\u4e0a\u6765\u5c31 400</li>\n<li><strong>\u5b58\u50a8\u53cc\u540e\u7aef\u81ea\u52a8\u5207\u6362</strong>:\u914d\u4e86 Upstash Redis \u5c31\u7528 Redis,\u6ca1\u914d\u5c31\u7528\u672c\u5730\u6587\u4ef6 <code>.data/</code>,\u4ee3\u7801\u96f6\u6539\u52a8</li>\n<li>\u4e00\u4efd\u633a\u5168\u7684 <code><a href=\"http://DEPLOY.md\" rel=\"nofollow\">DEPLOY.md</a></code>:Vercel+Upstash(\u90fd\u6709\u514d\u8d39\u989d\u5ea6)/ systemd+Nginx / Docker / \u56fd\u5185\u8bbf\u95ee\u6ce8\u610f\u4e8b\u9879 \u5168\u5199\u4e86</li>\n</ul>\n<h3>\u90e8\u7f72</h3>\n<pre><code class=\"language-bash\">git clone https://github.com/cranux/TalkOut &amp;&amp; cd TalkOut\nnpm install\ncp .env.example .env.local   # \u586b LLM_API_KEY + LLM_MODEL(+ \u53ef\u9009 base_url)\nnpm run dev\n</code></pre>\n<p>\u4e91\u7aef\u5c31 Vercel \u5bfc\u5165 + \u914d\u51e0\u4e2a\u73af\u5883\u53d8\u91cf</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/gongzhaoman", 
        "name": "gongzhaoman", 
        "avatar": "https://cdn.v2ex.com/avatar/d2ed/e318/641223_large.png?m=1701489546"
      }, 
      "url": "https://www.v2ex.com/t/1221780", 
      "title": "\u5f00\u6e90\u4e86\u4e00\u4e2a\u81ea\u6258\u7ba1\u7684 Agent \u7f16\u6392\u9879\u76ee\uff0c\u4e0d\u60f3\u518d\u7528\u62d6\u62fd\u753b\u5de5\u4f5c\u6d41\u4e86", 
      "id": "https://www.v2ex.com/t/1221780", 
      "date_published": "2026-06-21T10:15:39+00:00", 
      "content_html": "<p>\u6700\u8fd1\u628a\u4e4b\u524d\u81ea\u5df1\u7528\u7684 Agent \u7f16\u6392\u9879\u76ee\u5f00\u6e90\u4e86\uff0c\u5730\u5740\u5728\u8fd9\u91cc\uff1a</p>\n<p><strong><a href=\"https://github.com/gongzhaoman0426/agent\" rel=\"nofollow\">https://github.com/gongzhaoman0426/agent</a></strong></p>\n<p>\u5148\u8bf4\u80cc\u666f\u3002\u6211\u6298\u817e Agent \u6709\u4e00\u6bb5\u65f6\u95f4\u4e86\uff0cDify \u3001LangGraph \u8fd9\u4e9b\u90fd\u7528\u8fc7\u3002\u80fd\u7528\uff0c\u4f46\u6709\u51e0\u4e2a\u5730\u65b9\u4e00\u76f4\u4e0d\u592a\u987a\u624b\uff1a</p>\n<ul>\n<li>\u5de5\u4f5c\u6d41\u8981\u4e48\u5728 UI \u91cc\u62d6\uff0c\u8981\u4e48\u5b58\u6570\u636e\u5e93\uff0c\u6539\u4e2a\u903b\u8f91\u4e0d\u597d diff \uff0c\u4e5f\u4e0d\u597d review</li>\n<li>\u5de5\u5177\u6269\u5c55\u7ecf\u5e38\u8981\u6539\u4e00\u5806\u914d\u7f6e\uff0c\u548c\u4ee3\u7801\u8131\u8282</li>\n<li>\u6709\u4e9b\u80fd\u529b\uff08\u6bd4\u5982\u5b9a\u65f6\u4efb\u52a1\u3001\u98de\u4e66\u8868\u683c\uff09\u60f3\u63a5\u8fdb\u53bb\uff0c\u5f97\u7ed5\u4e00\u5708</li>\n</ul>\n<p>\u6240\u4ee5\u8fd9\u4e2a\u9879\u76ee\u8d70\u4e86\u4e00\u6761\u6bd4\u8f83\u300c\u7a0b\u5e8f\u5458\u5411\u300d\u7684\u8def\uff1a<strong>\u5de5\u4f5c\u6d41\u3001\u5de5\u5177\u5305\u3001\u6280\u80fd\uff0c\u5168\u90e8\u7528 TypeScript \u4ee3\u7801\u5b9a\u4e49\uff0c\u542f\u52a8\u65f6\u81ea\u52a8\u540c\u6b65\u5230\u6570\u636e\u5e93</strong>\u3002\u6539\u903b\u8f91\u5c31\u662f\u6539\u4ee3\u7801\u3001\u63d0 PR \uff0c\u548c\u666e\u901a\u540e\u7aef\u9879\u76ee\u4e00\u6837\u3002</p>\n<h3><strong>\u5b83\u5927\u6982\u80fd\u5e72\u4ec0\u4e48</strong></h3>\n<p>\u4e0d\u662f\u90a3\u79cd\u300c\u4e0a\u4f20\u6587\u6863\u5c31\u80fd\u804a\u5929\u300d\u7684 demo \uff0c\u66f4\u63a5\u8fd1\u4e00\u4e2a\u53ef\u81ea\u90e8\u7f72\u7684\u5c0f\u578b Agent \u5e73\u53f0\uff1a</p>\n<ul>\n<li><strong>Agent \u7ba1\u7406</strong>\uff1a\u914d\u7f6e prompt \u3001\u6302\u8f7d\u5de5\u5177\u5305\uff0c\u5bf9\u8bdd\u8d70 SSE \u6d41\u5f0f\u8f93\u51fa</li>\n<li><strong>\u77e5\u8bc6\u5e93 RAG</strong>\uff1a\u4e0a\u4f20\u6587\u4ef6\uff0cpgvector \u505a\u5411\u91cf\u68c0\u7d22\uff0cAgent \u53ef\u4ee5\u67e5</li>\n<li><strong>\u5de5\u4f5c\u6d41</strong>\uff1a\u4e8b\u4ef6\u94fe\u9a71\u52a8\uff08<code>WORKFLOW_START \u2192 ... \u2192 WORKFLOW_STOP</code>\uff09\uff0c\u7528 <code>@workflowId</code> \u88c5\u9970\u5668\u6ce8\u518c\uff0cDSL \u5199\u5728\u4ee3\u7801\u91cc</li>\n<li><strong>\u5de5\u5177\u5305\uff08 Toolkit \uff09</strong>\uff1a<code>@toolkitId</code> \u6ce8\u518c\uff0c\u542f\u52a8\u65f6\u81ea\u52a8\u53d1\u73b0\u3002\u5185\u7f6e\u4e86\u901a\u7528\u5de5\u5177\u3001\u77e5\u8bc6\u5e93\u67e5\u8be2\u3001\u5de5\u4f5c\u6d41\u6267\u884c\u3001\u98de\u4e66\u591a\u7ef4\u8868\u683c\u3001\u5b9a\u65f6\u4efb\u52a1\u7b49</li>\n<li><strong>\u6280\u80fd\uff08 Skill \uff09</strong>\uff1a\u7c7b\u4f3c Cursor Skill \u7684\u601d\u8def\uff0cAgent \u6309\u9700 <code>useSkill</code> \u8bfb\u53d6\u6307\u4ee4\uff0c\u8fd8\u80fd\u8dd1\u6c99\u7bb1\u811a\u672c</li>\n<li><strong>\u804a\u5929\u8bb0\u5fc6</strong>\uff1a\u6700\u8fd1\u6d88\u606f + \u8de8 session \u5411\u91cf\u68c0\u7d22 + token \u8d85\u9608\u503c\u81ea\u52a8\u538b\u7f29\u6458\u8981\uff0c\u4e0d\u662f\u7b80\u5355\u622a\u65ad\u5386\u53f2</li>\n</ul>\n<h3><strong>\u6280\u672f\u6808</strong></h3>\n<p>\u524d\u540e\u7aef monorepo \uff08 pnpm \uff09\uff1a</p>\n<ul>\n<li>\u540e\u7aef\uff1aNestJS 10 + Prisma + PostgreSQL \uff08 pgvector \uff09</li>\n<li>\u524d\u7aef\uff1aReact 19 + Vite + Tailwind + shadcn/ui</li>\n<li>LLM\uff1aLlamaIndex \uff0c\u9ed8\u8ba4\u63a5 OpenAI \uff08\u6a21\u578b\u548c embedding \u53ef\u914d\uff09</li>\n<li>\u8ba4\u8bc1\uff1abetter-auth</li>\n</ul>\n<p><code>docker compose up -d</code> \u80fd\u8d77\u5168\u5957\uff08 Postgres + API + Web \uff09\uff0c\u672c\u5730\u5f00\u53d1\u5c31 <code>pnpm dev:api</code> / <code>pnpm dev:web</code>\u3002</p>\n<h3><strong>\u51e0\u4e2a\u6211\u89c9\u5f97\u8fd8\u7b97\u6709\u610f\u601d\u7684\u8bbe\u8ba1</strong></h3>\n<p><strong>1. \u4ee3\u7801\u5373\u914d\u7f6e</strong></p>\n<p>\u5de5\u4f5c\u6d41\u4e0d\u662f\u5728\u524d\u7aef\u521b\u5efa\u7684\uff0c\u800c\u662f\u5728 <code>apps/agent-api/src/workflow/workflows/*.workflow.ts</code> \u91cc\u7ee7\u627f <code>BaseWorkflow</code> \u5199 DSL \u3002\u5de5\u5177\u5305\u3001\u6280\u80fd\u540c\u7406\uff0c\u88c5\u9970\u5668 + \u542f\u52a8\u65f6 discovery \uff0c\u8ddf NestJS \u6a21\u5757\u6ce8\u518c\u7684\u611f\u89c9\u5dee\u4e0d\u591a\u3002</p>\n<p><strong>2. Agent \u65e0\u72b6\u6001</strong></p>\n<p>\u6bcf\u6b21\u5bf9\u8bdd\u8bf7\u6c42\u91cd\u65b0\u62c9\u914d\u7f6e\u3001\u5b9e\u4f8b\u5316\u5de5\u5177\u3001\u521b\u5efa LlamaIndex agent \u3002\u4e0d\u8de8\u8bf7\u6c42\u590d\u7528\u5b9e\u4f8b\uff0c\u90e8\u7f72\u548c\u8c03\u8bd5\u7b80\u5355\u4e00\u4e9b\uff0c\u4ee3\u4ef7\u662f\u51b7\u542f\u52a8\u5f00\u9500\uff0c\u76ee\u524d\u8fd8\u80fd\u63a5\u53d7\u3002</p>\n<p><strong>3. \u5b9a\u65f6\u4efb\u52a1</strong></p>\n<p>Agent \u53ef\u4ee5\u901a\u8fc7\u5de5\u5177\u521b\u5efa cron \u4efb\u52a1\uff0c\u5230\u70b9\u81ea\u52a8\u53d1\u6d88\u606f\u7ed9\u81ea\u5df1\u5904\u7406\u3002\u6bd4\u5982\u300c\u6bcf\u5929\u65e9\u4e0a 9 \u70b9\u5e2e\u6211\u6574\u7406\u5f85\u529e\u300d\u8fd9\u79cd\uff0c\u4e0d\u7528\u53e6\u5916\u6302\u4e2a\u8c03\u5ea6\u7cfb\u7edf\u3002</p>\n<h3><strong>\u73b0\u72b6\u548c\u5c40\u9650\uff08\u8bf4 honest \u7684\uff09</strong></h3>\n<ul>\n<li>\u6587\u6863\u8fd8\u5728\u8865\uff0cREADME \u4e0d\u7b97\u5b8c\u5584\uff0c\u5efa\u8bae\u76f4\u63a5\u770b <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code> \u548c\u4ee3\u7801\u7ed3\u6784</li>\n<li>\u5de5\u4f5c\u6d41\u6267\u884c\u5668\u7528 <code>new Function()</code> \u8dd1 step handler \uff0c\u7075\u6d3b\u4f46\u4e5f\u8981\u6ce8\u610f\u5b89\u5168\u8fb9\u754c</li>\n<li>\u76ee\u524d\u793a\u4f8b\u5de5\u4f5c\u6d41\u548c\u6280\u80fd\u4e0d\u591a\uff0c\u98de\u4e66\u96c6\u6210\u9700\u8981\u4f60\u81ea\u5df1\u914d token</li>\n<li>\u6d4b\u8bd5\u8986\u76d6\u4e00\u822c\uff0c\u751f\u4ea7\u7528\u5efa\u8bae\u5148\u81ea\u5df1\u8dd1\u4e00\u904d\u6838\u5fc3\u94fe\u8def</li>\n</ul>\n<h3><strong>\u9002\u5408\u8c01\u770b</strong></h3>\n<ul>\n<li>\u60f3\u81ea\u6258\u7ba1 Agent \uff0c\u53c8\u4e0d\u60f3\u7ed1\u6b7b\u5728\u67d0\u4e2a SaaS \u4e0a\u7684</li>\n<li>\u504f\u597d\u300c\u5de5\u4f5c\u6d41/\u5de5\u5177\u7528\u4ee3\u7801\u7ba1\u7406\u3001\u53ef\u7248\u672c\u63a7\u5236\u300d\u7684</li>\n<li>\u5df2\u7ecf\u5728\u7528 NestJS / LlamaIndex \uff0c\u60f3\u627e\u4e2a\u53ef\u53c2\u8003\u67b6\u6784\u7684</li>\n</ul>\n<p>\u4e0d\u9002\u5408\uff1a\u60f3\u8981\u96f6\u4ee3\u7801\u62d6\u62fd\u3001\u5f00\u7bb1\u5373\u7528\u7684\u4f01\u4e1a\u7ea7\u5e73\u53f0\u2014\u2014\u8fd9\u4e2a\u65b9\u5411\u4e0d\u4e00\u6837\u3002</p>\n<h3><strong>\u60f3\u53c2\u4e0e\u7684\u8bdd</strong></h3>\n<p>Issue \u3001PR \u3001Star \u90fd\u6b22\u8fce\u3002\u5982\u679c\u4f60\u4e5f\u5728\u505a Agent \u7f16\u6392\uff0c\u5c24\u5176\u662f\u300c\u4ee3\u7801\u4f18\u5148 vs \u53ef\u89c6\u5316\u4f18\u5148\u300d\u8fd9\u5757\uff0c\u633a\u60f3\u542c\u542c\u4f60\u7684\u505a\u6cd5\u548c\u8e29\u8fc7\u7684\u5751\u3002</p>\n<p>\u4ed3\u5e93\uff1a<strong><a href=\"https://github.com/gongzhaoman0426/agent\" rel=\"nofollow\">https://github.com/gongzhaoman0426/agent</a></strong></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sparker", 
        "name": "sparker", 
        "avatar": "https://cdn.v2ex.com/avatar/d8e0/ce2d/716068_large.png?m=1781491828"
      }, 
      "url": "https://www.v2ex.com/t/1220478", 
      "title": "[Github \u5f00\u6e90] Obsidian \u661f\u6807\u7ba1\u7406\u63d2\u4ef6\uff1a obsidian-github-stars-manager", 
      "id": "https://www.v2ex.com/t/1220478", 
      "date_published": "2026-06-15T02:59:13+00:00", 
      "content_html": "<h1><strong>\u5982\u679c\u4f60\u7528 Obsidian \uff0c\u6070\u597d\u53c8\u559c\u6b22\u53bb\u6700\u5927\u540c\u6027\u4ea4\u53cb\u5e73\u53f0\u70b9\u70b9\uff0c\u4e8b\u540e\u53c8\u4e0d\u77e5\u9053\u81ea\u5df1\u505a\u4e86\u4ec0\u4e48\uff0c\u90a3\u4f60\u6709\u798f\u4e86\uff01</strong></h1>\n<p><strong>GitHub\uff1a</strong> <a href=\"https://github.com/EmberSparks/obsidian-github-stars-manager\" rel=\"nofollow\">\u4ee3\u7801\u4ed3\u5e93</a></p>\n<h2><strong>\u80fd\u5e72\u5565</strong></h2>\n<ol>\n<li>\n<p>\u540c\u6b65 github \u8d26\u53f7 star \u7684\u4ed3\u5e93\uff0c\u663e\u793a star \u6570\u3001fork \u6570\u91cf\u3001\u66f4\u65b0\u65f6\u95f4</p>\n</li>\n<li>\n<p>\u6807\u7b7e<strong>\u529f\u80fd</strong>\u3001<strong>\u5907\u6ce8</strong>\u3001<strong>\u94fe\u63a5</strong>\u529f\u80fd\n<img alt=\"image|690x464\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://www.nodeloc.com/uploads/default/optimized/3X/2/5/25563d73814e7bff29fe72d254d63e68ca8fd67f_2_690x464.png\"/></p>\n</li>\n<li>\n<p>\u591a\u8d26\u53f7\u7ba1\u7406\uff0c\u805a\u5408\u5c0f\u53f7\u4fe1\u606f\n<img alt=\"image|690x256\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://www.nodeloc.com/uploads/default/original/3X/2/2/2277f70bb6bc5c9ff54b18ddd28a54608a1ace89.png\"/></p>\n</li>\n</ol>\n<h2>\u5176\u4ed6</h2>\n<ol>\n<li>\u4f1a\u4e0d\u4f1a\u66f4\u65b0\uff1a\u80fd\u7528\u5c31\u884c\u539f\u5219</li>\n<li>\u98ce\u683c\u53c2\u8003\uff1a\u5404\u79cd github stars \u7ba1\u7406\u9879\u76ee</li>\n</ol>\n<h2>\u5df2\u4e0a\u67b6 Obsidian \u4ed3\u5e93\uff01\u641c\u7d22 obsidian stars manager \u5373\u53ef\u5b89\u88c5</h2>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/attention", 
        "name": "attention", 
        "avatar": "https://cdn.v2ex.com/gravatar/99377ca420ae3e8bcab115053b8968b0?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1218567", 
      "date_modified": "2026-06-07T23:00:07+00:00", 
      "content_html": "<blockquote>\n<p>\u4e00\u4e2a\u5f00\u6e90\u5de5\u5177\u300c\u77e5\u8fd4 AhaDiff \u300d\uff1a\u628a AI \u5199\u7684\u6bcf\u6b21\u6539\u52a8\u90fd\u7ed9\u4f60\u8bb2\u6e05\u695a\uff0c\u8ba9\u4f60 vibe coding \u65f6\u4e0d\u518d\u65e0\u8111\u70b9\u7ee7\u7eed</p>\n</blockquote>\n<h2>\u8d77\u56e0\uff1a\u4f7f\u7528 ai \u8fdb\u884c vibe coding \u867d\u7136\u5feb\uff0c\u4f46\u662f\u4ee3\u7801\u4e2d\u7684\u6539\u52a8\u5374\u6ca1\u6709\u5185\u5316\u6210\u81ea\u5df1\u7684\u77e5\u8bc6</h2>\n<p>\u6211\u7528 AI \u5199\u4ee3\u7801\u7ecf\u5e38\u662f\u8fd9\u6837\uff1a\u7528 ai \u5199\u51fa\u4e00\u5927\u6bb5\u4ee3\u7801\uff0c\u6211\u5927\u81f4\u770b\u4e00\u773c\uff0c\u56de\u590d\u7ee7\u7eed\uff1b\u53ea\u8981\u6ca1\u51fa\u9519\u5c31\u4e00\u76f4\u7ee7\u7eed\u3002\u5982\u679c\u62a5\u9519\u6216\u8005\u4e0d\u7b26\u5408\u6211\u7684\u9700\u6c42\u5c31\u628a\u95ee\u9898\u544a\u8bc9 ai \uff0c\u8fdb\u884c\u6539\u52a8\u3002\u9879\u76ee\u5b8c\u6210\u4e86\uff0c\u5404\u4e2a\u529f\u80fd\u90fd\u6b63\u5e38\u8fd0\u884c\u4e86\uff0c\u8dd1\u5f97\u4e5f\u4e0d\u9519\u3002\u53ef\u662f\u6709\u4e2a\u95ee\u9898\uff0c\u5047\u5982\u4f60\u56de\u5934\u95ee\u6211\u300c\u8fd9\u4e2a\u5730\u65b9\u4e3a\u4ec0\u4e48\u8fd9\u4e48\u5199\u300d\uff0c\u5f88\u5927\u53ef\u80fd\u662f\u4e00\u8138\u61f5\u903c\u7684\u72b6\u6001\uff0c\u56e0\u4e3a ai \u66ff\u6211\u5b8c\u6210\u4e86 90%\u4ee5\u4e0a\u7684\u4ee3\u7801\u6539\u52a8\u3002</p>\n<p>\u5e76\u4e14\u5728\u8bba\u575b\u4e2d\u6211\u7ecf\u5e38\u770b\u5230\u7c7b\u4f3c\u7684\u8ba8\u8bba\uff0c\u5f88\u591a\u4eba\u90fd\u63d0\u53ca\u4e86\u8fd9\u4e2a\u95ee\u9898\uff1a\u901a\u8fc7 vibe coding \u6307\u6325 AI \u628a\u6d3b\u5e72\u4e86\uff0c\u6548\u7387\u786e\u5b9e\u9ad8\uff0c\u53ef\u4e00\u4e2a\u9879\u76ee\u505a\u5b8c\uff0c\u81ea\u5df1\u597d\u50cf\u6ca1\u600e\u4e48\u957f\u8fdb\uff0c\u6ca1\u6709\u4ece\u4e2d\u5b66\u5230\u771f\u4e1c\u897f\u3002</p>\n<p>\u6211\u60f3\u8981\u7684\u5176\u5b9e\u5f88\u7b80\u5355\uff1aAI \u5199\u5b8c\u4e4b\u540e\uff0c\u6709\u4e2a\u4e1c\u897f\u80fd\u628a\u8fd9\u6b21\u6539\u52a8\u7ed9\u6211\u8bb2\u6e05\u695a\uff0c\u4e3a\u4ec0\u4e48\u8981\u8fd9\u4e48\u6539\uff0c\u8fd9\u4e48\u6539\u7684\u4f5c\u7528\u4f55\u5728\uff0c\u5e76\u4e14\u628a\u8fd9\u6b21\u6539\u52a8\u7684\u77e5\u8bc6\u8fdb\u884c\u5185\u5316\uff0c\u5f62\u6210\u81ea\u5df1\u8111\u5b50\u4e2d\u7684\u77e5\u8bc6\uff0c\u4e8e\u662f\u5c31\u5f00\u53d1\u4e86\u77e5\u8fd4\u8fd9\u4e2a\u9879\u76ee\u3002</p>\n<h2>\u5b83\u5c31\u5e72\u4e00\u4ef6\u4e8b\uff1a\u628a ai \u7684\u6539\u52a8\u53d8\u6210\u80fd\u67e5\u8bc1\u7684\u7b14\u8bb0\uff0c\u80fd\u8ba9\u4f60\u5b66\u5230\u771f\u77e5\u8bc6</h2>\n<p>\u77e5\u8fd4\u901a\u8fc7\u8bfb\u4f60\u7684\u4e00\u6b21\u4ee3\u7801\u6539\u52a8\uff0c\u628a\u5b83<strong>\u53d8\u6210\u4e00\u4efd\u5b8c\u6574\u7684\u5b66\u4e60\u6750\u6599</strong>\uff1a\u5f62\u6210\u4e00\u7bc7\u5b8c\u6574\u7684\u300c\u6539\u4e86\u4ec0\u4e48\u3001\u4e3a\u4ec0\u4e48\u8fd9\u6837\u4fee\u6539\u300d\u7684\u8bfe\u7a0b\uff0c\u4e00\u4efd\u6bcf\u6761\u7ed3\u8bba\u90fd\u6807\u4e86\u51fa\u5904\u7684\u6e05\u5355\u3002<strong>\u540c\u65f6\u9644\u5e26\u5b8c\u5584\u7684\u6d4b\u9a8c\u548c\u5e26\u590d\u4e60\u5468\u671f\u7684\u590d\u4e60\u5361\u7247\uff0c\u901a\u8fc7\u590d\u4e60\u66f2\u7ebf\u8bbe\u7f6e\uff0c\u4e00\u904d\u904d\u7684\u91cd\u590d\uff0c\u907f\u514d\u76f8\u5173\u77e5\u8bc6\u7684\u9057\u5fd8</strong>\uff0c\u800c\u4e0d\u4ec5\u4ec5\u53ea\u662f\u5c55\u73b0\u76f8\u5173\u6539\u52a8\u7684\u76f8\u5173\u77e5\u8bc6\u70b9\u3002</p>\n<p><img alt=\"\u8fd0\u884c\u9762\u677f\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-dashboard.png\"/></p>\n<p><em>\u8fd0\u884c\u9762\u677f\uff1a\u6bcf\u5b66\u4e00\u6b21\u5c31\u591a\u4e00\u6761\u8bb0\u5f55\uff0c\u5e26\u8bc4\u5206\u548c\u8d28\u91cf\u8d8b\u52bf</em></p>\n<p>\u5e76\u4e14\u4e3a\u4e86<strong>\u907f\u514d ai \u7684\u5e7b\u89c9\u95ee\u9898\uff1a\u7b14\u8bb0\u91cc\u6bcf\u4e00\u53e5\u8bdd\uff0c\u90fd\u8981\u7ed1\u5230\u67d0\u4e2a\u6587\u4ef6\u7684\u67d0\u4e00\u884c\u4ee3\u7801\u4e0a</strong>\uff0c\u518d\u9644\u5e26\u8fd9\u4e2a\u5b66\u4e60\u7b14\u8bb0\u5bf9\u5e94\u7684\u4e00\u4e2a\u72b6\u6001\uff1a</p>\n<ul>\n<li><code>verified</code> \u6709\u636e\u53ef\u67e5</li>\n<li><code>weak</code> \u8bc1\u636e\u504f\u5f31</li>\n<li><code>not_proven</code> \u6ca1\u9a8c\u8bc1\u5230</li>\n<li><code>contradicted</code> \u548c\u4ee3\u7801\u5bf9\u4e0d\u4e0a</li>\n<li><code>rejected</code> \u88ab\u5426\u51b3</li>\n</ul>\n<p><img alt=\"\u8bfe\u7a0b\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-lesson.png\"/></p>\n<p><em>\u8bfe\u7a0b\u9875\uff1aAI \u628a\u8fd9\u6b21\u6539\u52a8\u7684\u76f8\u5173\u77e5\u8bc6\u70b9\u5c55\u73b0\u7ed9\u4f60\u770b</em></p>\n<p><img alt=\"\u5dee\u5f02\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-diff.png\"/></p>\n<p><em>\u5dee\u5f02\u9875\uff1a\u5de6\u8fb9\u662f\u4ee3\u7801 diff \uff0c\u53f3\u4fa7\u7684 claim \u5361\u7247\u70b9\u5f00\uff0c\u4f1a\u8df3\u8f6c\u5230\u5bf9\u5e94 diff \uff0c\u540c\u65f6\u80fd\u770b\u5230\u8fd9\u6b21\u6539\u52a8\u5bf9\u5e94\u7684\u77e5\u8bc6\u70b9</em></p>\n<h2>\u5149\u770b\u77e5\u8bc6\u70b9\u8fd8\u4e0d\u591f\uff0c\u90a3\u4e48\u6211\u4eec\u5b66\u4e60\u5b8c\u6210\u4e4b\u540e\u6d4b\u8bd5\u4f60\u771f\u7684\u4f1a\u4e86\u5417\uff0c\u5e76\u4e14\u6839\u636e fsrs \u7b97\u6cd5\uff0c\u4f1a\u52a0\u5165\u4e4b\u524d\u505a\u8fc7\u7684\u6d4b\u9a8c\u9898</h2>\n<p><strong>\u770b\u61c2\u4e86 lesson \u7684\u7b14\u8bb0\u77e5\u8bc6\u70b9\uff0c\u4e0d\u4ee3\u8868\u4f60\u771f\u7684\u4f1a\u4e86\uff0c\u5e76\u4e14\u4f1a\u7528\u4e86</strong>\uff0c\u6240\u4ee5\u5b66\u4e60\u5b8c\u8bfe\u7a0b\u4e4b\u540e\u8fd8<strong>\u9644\u5e26\u4e86\u6d4b\u9a8c\u548c\u590d\u4e60\u5361\u7247</strong>\u3002</p>\n<p>\u6d4b\u9a8c\u662f \u901a\u8fc7\u9009\u62e9\u9898\u7684\u65b9\u5f0f\u5448\u73b0\u7ed9\u4f60\uff0c\u53ef\u5728 settings \u4e2d\u52a8\u6001\u8bbe\u7f6e\u6d4b\u9a8c\u9898\u7684\u6570\u91cf\u3002</p>\n<p>\u6bcf\u9053\u9898\u7b54\u9898\u5b8c\u6210\u4e4b\u540e\uff0c\u80fd\u770b\u8fd9\u9053\u9898\u5bf9\u5e94\u7684\u77e5\u8bc6\u70b9\uff0c\u4ee5\u53ca\u8fd9\u9053\u9898\u7ecf\u5e38\u51fa\u9519\u7684\u5730\u65b9</p>\n<p><img alt=\"\u6d4b\u9a8c\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-quiz.png\"/></p>\n<p><em>\u6d4b\u9a8c\u9875\uff1a\u4ee5\u9009\u62e9\u9898\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u7b54\u5b8c\u624d\u663e\u793a\u8fd9\u9053\u9898\u76ee\u5bf9\u5e94\u7684\u4ee3\u7801\u6539\u52a8</em></p>\n<p>\u590d\u4e60\u7528\u7684\u662f\u95f4\u9694\u91cd\u590d\uff0c\u5c31\u662f Anki \u590d\u4e60\u5361\u7247\u90a3\u5957\u601d\u8def\uff0c\u80cc\u540e\u662f FSRS \u7b97\u6cd5\u3002\u5b66\u8fc7\u7684\u4e1c\u897f\u4f1a\u6309\u9057\u5fd8\u66f2\u7ebf\uff0c\u5728\u5408\u9002\u7684\u65f6\u95f4\u70b9\u52a0\u5165\u5230\u590d\u4e60\u90e8\u5206\u8ba9\u4f60\u518d\u8fc7\u4e00\u904d\uff0c\u907f\u514d\u770b\u4e00\u904d\u5c31\u5fd8\u7684\u60c5\u51b5\u3002</p>\n<p><img alt=\"\u590d\u4e60\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-review.png\"/></p>\n<p><em>\u590d\u4e60\u9875\uff1a\u5230\u671f\u7684\u5361\u7247\u6309 Again / Hard / Good / Easy \u8bc4\u5206</em></p>\n<p>\u6d4b\u9a8c\u548c\u590d\u4e60\u8fd8\u5acc\u4e0d\u591f\u7684\u8bdd\uff0c\u518d\u6765\u4e2a <strong>Challenge \uff08 opt-in \u7684\u8fdb\u9636\u73a9\u6cd5\uff09</strong>\uff1a\u5b83\u628a\u67d0\u6b21\u6539\u52a8\u505a\u6210\u4e00\u9053\u6311\u6218\uff0c\u8ba9\u4f60\u81ea\u5df1\u5148\u8fc7\u4e00\u904d\uff0c\u518d\u62ff\u4f60\u7684\u7ed3\u679c\u548c\u771f\u5b9e diff \u9010\u6761\u6bd4\u5bf9\uff0c<strong>\u628a\u4f60\u6f0f\u6389\u3001\u6ca1\u638c\u63e1\u7684\u5730\u65b9\u6311\u51fa\u6765</strong>\uff0c\u7136\u540e\u53cd\u9988\u5230\u590d\u4e60\u4e2d\u3002\u5bf9\u7740\u67d0\u4e2a run id \u8dd1 <code>ahadiff challenge build &lt;run_id&gt;</code>\uff0c\u5c31\u80fd\u5728 webui \u4e2d\u4f53\u73b0\u3002</p>\n<h2>\u5b66\u5f97\u591a\u4e86\uff0c\u77e5\u8bc6\u4f1a\u81ea\u5df1\u8fde\u6210\u7f51\uff0c\u5f62\u6210\u771f\u6b63\u7684\u6982\u5ff5\u56fe\u8c31</h2>\n<p><strong>\u501f\u9274\u4e86 llm-wiki \u548c graphify \u7684\u601d\u8def\u3002</strong></p>\n<p>\u540c\u4e00\u4e2a\u6982\u5ff5\u5728\u597d\u51e0\u6b21\u6539\u52a8\u91cc\u53cd\u590d\u51fa\u73b0\uff0c\u77e5\u8fd4\u4f1a\u628a\u5b83\u4eec\u6536\u96c6\u8d77\u6765\uff0c<strong>\u8fde\u6210\u4e00\u5f20\u6982\u5ff5\u56fe\u8c31\u3002</strong></p>\n<p><img alt=\"\u6982\u5ff5\u56fe\u8c31\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-concepts-graph.png\"/></p>\n<p><em>\u6982\u5ff5\u56fe\u8c31\uff1a\u6a2a\u8de8\u591a\u6b21\u6539\u52a8\u7684\u77e5\u8bc6\u5730\u56fe</em></p>\n<h2>\u6bcf\u6b21\u5b66\u4e60\u90fd\u6253\u5206\uff0c\u80fd\u770b\u51fa\u81ea\u5df1\u5728\u4e0d\u5728\u8fdb\u6b65</h2>\n<p>\u6bcf\u8dd1\u4e00\u6b21\uff0c\u77e5\u8fd4\u4f1a<strong>\u4ece\u51c6\u786e\u6027\u3001\u8bc1\u636e\u3001\u8986\u76d6\u7387\u7b49\u516b\u4e2a\u7ef4\u5ea6\u6253\u4e2a 0 \u5230 100 \u7684\u5206</strong>\uff0c\u5224\u5b9a\u8fd9\u6b21\u5b66\u4e60\u7b97\u4e0d\u7b97\u5408\u683c\u3002\u4f60\u4e5f\u53ef\u4ee5<strong>\u53e6\u5f00\u4e00\u4e2a\u6a21\u578b\u5f53\u300c\u7b2c\u4e8c\u8bc4\u59d4\u300d\u590d\u6838\u4e00\u904d</strong>\uff0c\u4e0d\u8fc7\u5b83\u53ea\u662f\u53c2\u8003\uff0c\u4e0d\u4f1a\u63a8\u7ffb\u5224\u5b9a\u3002\u5206\u6570\u662f\u900f\u660e\u7684\uff0c\u70b9\u5f00\u80fd\u770b\u5230\u6bcf\u4e00\u4e2a\u7ef4\u5ea6\u7684\u8bc4\u5206\u7ec6\u8282\u3002</p>\n<p><img alt=\"\u516b\u7ef4\u8bc4\u5206\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-rundetail-score.png\"/></p>\n<p><em>\u8fd0\u884c\u8be6\u60c5\uff1a\u516b\u4e2a\u7ef4\u5ea6\u7684\u8bc4\u5206\u660e\u7ec6</em></p>\n<h2>\u89c9\u5f97\u67d0\u6b21\u8bb2\u5f97\u8fd8\u4e0d\u591f\u597d\uff1f\u8ba9\u5b83\u91cd\u5b66\u51e0\u904d\uff0c\u5206\u6570\u66f4\u9ad8\u624d\u7559</h2>\n<p>\u6253\u5b8c\u5206\uff0c\u4f60\u53ef\u80fd\u4f1a\u89c9\u5f97\u67d0\u6b21\u8bb2\u5f97\u8fd8\u4e0d\u591f\u900f\uff0c\u60f3\u8ba9\u5b83\u518d\u8bb2\u597d\u4e00\u70b9\u3002<code>improve-run</code> \u80fd\u591f\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002</p>\n<p>\u5bf9\u7740\u67d0\u6b21 run \u8dd1 <code>ahadiff improve-run &lt;run_id&gt;</code>\uff0c\u5b83\u4f1a\u5728\u4f60\u81ea\u5df1\u7684\u9879\u76ee\u91cc\uff0c\u62ff\u8fd9\u6b21\u6539\u52a8\u628a\u8bfe\u7a0b\u7528\u66f4\u9ad8\u8d28\u91cf\u91cd\u65b0\u751f\u6210\u51e0\u904d\uff08\u9ed8\u8ba4 3 \u904d\uff0c\u4e13\u95e8\u76ef\u7740\u4e0a\u6b21\u5f97\u5206\u6700\u4f4e\u7684\u90a3\u4e00\u7ef4\u6539\u8fdb\uff09\uff0c\u518d\u8fdb\u884c\u4e00\u6b21\u91cd\u65b0\u6253\u5206\u3002<strong>\u53ea\u6709\u65b0\u751f\u6210\u7684\u5206\u6570\u786e\u5b9e\u6bd4\u539f\u6765\u9ad8\uff0c\u624d\u4f1a\u7559\u4e0b\u6765</strong>\u3002</p>\n<p>\u6574\u4e2a\u6539\u8fdb\u8fc7\u7a0b\u5b83\u4e0d\u78b0 git \u3001\u4e0d\u6539 prompt \u3001\u4e5f\u4e0d\u8986\u76d6\u4f60\u539f\u6765\u90a3\u6761\u5df2\u7ecf\u4fdd\u5b58\u7684\u8bb0\u5f55\u3002</p>\n<h2>\u600e\u4e48\u7528\uff1a\u5148\u88c5\u4e0a\uff0c\u7136\u540e\u57fa\u672c\u5c31\u4e24\u6761\u547d\u4ee4</h2>\n<p>\u73b0\u5728\u5df2\u7ecf\u53ef\u4ee5\u76f4\u63a5\u4ece pip \u5b89\u88c5\uff1a</p>\n<pre><code class=\"language-bash\">pip install ahadiff\n</code></pre>\n<p>\u88c5\u597d\u5e76\u914d\u597d provider \u4e4b\u540e\uff0c\u6838\u5fc3\u5c31\u4e24\u6b65\uff1a</p>\n<pre><code class=\"language-bash\"># \u5b66\u4e00\u6b21\u6700\u8fd1\u7684\u6539\u52a8\nahadiff learn HEAD~1..HEAD\n\n# \u6253\u5f00\u672c\u5730\u7f51\u9875\uff0c\u770b\u7b14\u8bb0\u3001\u505a\u6d4b\u9a8c\u3001\u590d\u4e60\nahadiff serve\n</code></pre>\n<p>serve \u4f1a\u63d0\u4f9b webui \uff0c\u4f9b\u4f60\u5b66\u4e60\u3002\u60f3\u5b66\u6682\u5b58\u533a\u91cc\u8fd8\u6ca1\u63d0\u4ea4\u7684\u6539\u52a8\uff0c\u5c31 <code>ahadiff learn --staged</code>\u3002<strong>\u6539\u52a8\u4ece\u54ea\u6765\u90fd\u884c\uff1a\u6700\u8fd1\u7684\u63d0\u4ea4\u3001\u6682\u5b58\u533a\u3001\u8865\u4e01\u6587\u4ef6\u3001\u4e24\u4e2a\u76ee\u5f55\u7684\u5bf9\u6bd4\uff0c\u4e00\u5171\u652f\u6301\u5341\u79cd\u6765\u6e90\uff0c\u4e0d\u4ec5\u4ec5\u662f\u4ece git diff \u4e2d\u8fdb\u884c\u5b66\u4e60\u3002</strong></p>\n<p>\u51e0\u4e2a\u8ba9\u4f60\u7701\u5fc3\u7684\u70b9\uff1a</p>\n<ul>\n<li><strong>\u4f60\u7684\u4ee3\u7801 diff \u9ed8\u8ba4\u4e0d\u5916\u4f20</strong>\u3002\u9690\u79c1\u9ed8\u8ba4\u662f <code>strict_local</code>\uff0cdiff \u548c\u4ee3\u7801\u90fd\u5f85\u5728\u4f60\u672c\u673a\uff1b\u60f3\u7528\u8fdc\u7aef\u6a21\u578b\uff0c\u5f97\u4f60\u81ea\u5df1\u663e\u5f0f\u6253\u5f00\uff0c<strong>\u5efa\u8bae\u8c03\u6210\u8131\u654f\u8fdc\u7aef\u6a21\u5f0f\uff0c\u65e5\u5e38\u4f7f\u7528\u66f4\u52a0\u65b9\u4fbf\u3002</strong></li>\n<li><strong>\u7528\u4f60\u81ea\u5df1\u7684 key</strong>\uff08 BYOK \uff09\uff0c\u652f\u6301\u516b\u79cd AI \u670d\u52a1\u683c\u5f0f\u3002\u5982\u679c\u4e0d\u60f3\u4f7f\u7528 api \uff0c\u907f\u514d\u9690\u79c1\u6cc4\u9732\u7684\u60c5\u51b5\uff0c\u4e5f\u652f\u6301\u63a5\u5165\u672c\u5730\u7684 LM Studio \u6216 Ollama \u3002</li>\n<li><strong>\u80fd\u5bfc\u51fa\u6210 Anki \u5361\u7247</strong>\uff0c\u590d\u4e60\u5b8c\u6210\u540e\u8fd8\u80fd\u5bfc\u51fa\u4e3a anki \u5361\u7247\uff0c\u63a5\u5165\u81ea\u5df1\u65e5\u5e38\u4f7f\u7528\u7684 anki \u8f6f\u4ef6\u3002</li>\n<li><strong>\u80fd\u7ed9 AI \u52a9\u624b\u5199\u672c\u5730\u89c4\u5219\u548c skills</strong>\u3002\u5982\u679c\u4f60\u5e0c\u671b Claude \u3001Codex \u3001Cursor \u3001Copilot \u3001Gemini \u8fd9\u4e9b\u5de5\u5177\u4e5f\u77e5\u9053\u600e\u4e48\u4f7f\u7528\u77e5\u8fd4\uff0c\u53ef\u4ee5\u5728\u9879\u76ee\u91cc\u8fd0\u884c <code>ahadiff install --detect</code>\uff0c\u518d\u6309\u9700\u8981\u6267\u884c <code>ahadiff install codex</code> \u6216 <code>ahadiff install claude</code>\u3002\u5b83\u5199\u7684\u662f\u9879\u76ee\u672c\u5730\u6307\u5f15\uff0c\u4e0d\u4f1a\u628a\u4ee3\u7801\u4e0a\u4f20\u51fa\u53bb\u3002</li>\n<li><strong>\u6539\u52a8\u592a\u5927\u4e5f\u4e0d\u6015\u6491\u7206\u6a21\u578b</strong>\u3002\u9ed8\u8ba4\u4f1a\u6309\u4f60\u9009\u7684\u6a21\u578b\u4e0a\u4e0b\u6587\uff0c\u81ea\u52a8\u7b97\u51fa\u8fd9\u6b21\u6700\u591a\u6355\u83b7\u591a\u5c11 diff \uff08\u7efc\u5408\u6a21\u578b\u4e0a\u4e0b\u6587\u3001\u8f93\u51fa\u9884\u7559\u548c\u4e2d\u6587 diff \u7684\u5bc6\u5ea6\uff09\uff0c\u4e0d\u4f1a\u4e00\u80a1\u8111\u5168\u585e\u8fdb\u53bb\uff1b\u60f3\u81ea\u5df1\u5b9a\u4e5f\u884c\uff0c\u5728 settings \u91cc\u5207\u6210\u624b\u52a8\u6a21\u5f0f\u3002</li>\n<li><strong>\u61d2\u5f97\u6bcf\u6b21\u624b\u52a8\u8dd1</strong>\u3002<code>ahadiff watch</code> \u80fd\u76ef\u7740\u4f60\u7684\u4ed3\u5e93\uff0c\u6587\u4ef6\u4e00\u6539\u5c31\u81ea\u52a8\u89e6\u53d1 learn \uff0c\u9002\u5408\u8fb9 vibe coding \u8fb9\u987a\u624b\u628a\u8fd9\u6b21\u6539\u52a8\u5b66\u6389\u3002</li>\n</ul>\n<p><img alt=\"\u8bbe\u7f6e\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://agi-is-going-to-arrive.github.io/ahadiff/video/public/screenshots/zh/zh-settings.png\"/></p>\n<p><em>\u8bbe\u7f6e\u9875\uff1a\u586b key \u3001\u9009\u6a21\u578b\u3001\u8c03\u9690\u79c1\u548c\u6355\u83b7\u4e0a\u9650\uff0c\u90fd\u5728\u8fd9</em></p>\n<h2>\u90e8\u5206\u9650\u5236</h2>\n<ul>\n<li>\n<p>\u73b0\u5728\u5df2\u7ecf\u53d1\u5e03\u5230 PyPI \uff0c\u76f4\u63a5 <code>pip install ahadiff</code> \u5373\u53ef\u3002\u6e90\u7801\u5b89\u88c5\u4e3b\u8981\u7ed9\u8d21\u732e\u8005\u5f00\u53d1\u65f6\u4f7f\u7528\uff1a<code>uv tool install --editable .</code>\u3002</p>\n</li>\n<li>\n<p>\u9ed8\u8ba4\u529f\u80fd\u4e0d\u9700\u8981\u989d\u5916\u5b89\u88c5\uff1b\u53ea\u6709 FSRS \u53c2\u6570\u81ea\u52a8\u4f18\u5316\u8fd9\u79cd\u91cd\u4f9d\u8d56\u80fd\u529b\u9700\u8981\u5355\u72ec\u88c5 <code>pip install 'ahadiff[optimizer]'</code>\u3002</p>\n</li>\n<li>\n<p>Windows \u4e0a\u6838\u5fc3\u7684 learn \u548c serve \u5747\u53ef\u4f7f\u7528\uff1b\u4f46\u662f\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u4e2a\u522b\u529f\u80fd\uff08\u6bd4\u5982 <code>--compare-dir</code> \u76ee\u5f55\u5bf9\u6bd4\uff09\u76ee\u524d\u53ea\u5728 macOS / Linux \u4e0a\u652f\u6301\u3002</p>\n</li>\n</ul>\n<h2>\u94fe\u63a5</h2>\n<ul>\n<li>GitHub\uff1a<a href=\"https://github.com/AGI-is-going-to-arrive/ahadiff\" rel=\"nofollow\">https://github.com/AGI-is-going-to-arrive/ahadiff</a></li>\n<li>\u9879\u76ee\u4e3b\u9875\uff1a<a href=\"https://agi-is-going-to-arrive.github.io/ahadiff/\" rel=\"nofollow\">https://agi-is-going-to-arrive.github.io/ahadiff/</a></li>\n</ul>\n<p>\u6f14\u793a\u89c6\u9891\uff08\u4e2d\u6587\uff0c\u5e26\u5b57\u5e55\uff09\uff1a</p>\n<p><a href=\"https://www.bilibili.com/video/BV1b57k6yEWm\" rel=\"nofollow\">https://www.bilibili.com/video/BV1b57k6yEWm</a></p>\n<p>\u5982\u679c\u4f60\u4e5f\u5e38\u6709\u300c\u8fd9\u4ee3\u7801\u662f AI \u5199\u7684\uff0c\u6211\u60f3\u4ece\u4e2d\u5b66\u5230\u771f\u4e1c\u897f\u300d\u8fd9\u79cd\u60f3\u6cd5\uff0c\u6b22\u8fce\u5c1d\u8bd5\ud83d\udc4f\u3002</p>\n<p><strong>\u8ba9\u4f60\u4ece\u6bcf\u6b21 vibe coding \u4e2d\u5b66\u5230\u771f\u4e1c\u897f\uff0c\u800c\u4e0d\u53ea\u662f\u65e0\u8111\u786e\u8ba4/\u7ee7\u7eed\u3002</strong></p>\n<p><strong>\u89c9\u5f97\u6709\u7528\u7684\u6b22\u8fce\u7ed9\u8fd9\u4e2a\u9879\u76ee\u70b9\u4e2a\u2728</strong></p>\n<p>\u6709\u95ee\u9898\u7684\u6216\u8005\u89c9\u5f97\u53ef\u4ee5\u6539\u8fdb\u7684\u5730\u65b9\u7684\u6b22\u8fce\u63d0 pr \u548c issues \u3002</p>\n", 
      "date_published": "2026-06-07T11:01:46+00:00", 
      "title": "\u300c\u5f00\u6e90\u300d\u77e5\u8fd4(Ahadiff)--vibe coding \u4e4b\u540e\uff0c\u4f60\u771f\u7684\u5b66\u5230\u4e1c\u897f\u4e86\u5417\uff1f\u8ba9\u77e5\u8fd4\u4e3a\u4f60\u89e3\u51b3", 
      "id": "https://www.v2ex.com/t/1218567"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/VickAgent", 
        "name": "VickAgent", 
        "avatar": "https://cdn.v2ex.com/avatar/5eae/26ae/633977_large.png?m=1776417459"
      }, 
      "url": "https://www.v2ex.com/t/1218391", 
      "title": "\u6c42\u63a8\u8350\u4e00\u5957 B2b2c \u7684\u5546\u57ce\u7cfb\u7edf \uff0c\u53ef\u4ee5 SAAS \u7ed9\u5546\u6237\u5f00\u72ec\u7acb\u7ad9\u3002", 
      "id": "https://www.v2ex.com/t/1218391", 
      "date_published": "2026-06-06T05:20:11+00:00", 
      "content_html": "\u6c42\u63a8\u8350\u4e00\u5957 B2b2c \u7684\u5546\u57ce\u7cfb\u7edf \uff0c\u53ef\u4ee5 SAAS \u7ed9\u5546\u6237\u5f00\u72ec\u7acb\u7ad9\u3002<br /><br />\u57fa\u7840\u4fe1\u606f\u662f\uff1a<br />\u81ea\u6709\u6d77\u5916\u4ed3\u8d27\u76d8\uff0c\u73b0\u5728\u60f3\u505a\u4e00\u5957 S2b2c \u6216\u662f B2b2c \u7684\u5546\u57ce\u7cfb\u7edf\uff0c\u6709\u8d27\u76d8\u7684\u53ef\u4ee5\u5165\u9a7b\uff0c\u76f8\u5f00\u5e97\u505a\u72ec\u7acb\u7ad9\u7684\u4e5f\u53ef\u4ee5\u7ed9\u4ed6 SAAS \u72ec\u7acb\u7ad9\uff0c<br /><br />\u6709\u6ca1\u6709\u5927\u4f6c\u770b\u4e0b\u6709\u8fd9\u6837\u7684\u7cfb\u7edf\uff0c\u5f00\u6e90\u652f\u6301\u4e8c\u5f00\uff0c\u6709\u73b0\u6210\u7684\u4e5f\u884c\u53ef\u4ee5\u6709\u5c1d\u4ea4\u6d41\uff08 Wechat:Vick_mall)"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/colinsimth", 
        "name": "colinsimth", 
        "avatar": "https://cdn.v2ex.com/gravatar/1fa07bd72237429fcbabe8d0221b53ec?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1218120", 
      "date_modified": "2026-06-05T02:51:21+00:00", 
      "content_html": "\n<p><strong>\u6807\u9898\uff1a</strong> Viko\uff1a\u4e00\u6b3e\u5f00\u6e90\u7684\u672c\u5730\u97f3\u89c6\u9891\u56fe\u7247\u5904\u7406\u5de5\u5177</p>\n<hr/>\n<p>\u6279\u91cf\u5904\u7406\u591a\u4e2a\u89c6\u9891/\u56fe\u7247\u8981\u8f6c\u683c\u5f0f\u3001\u538b\u4f53\u79ef\u3001\u6279\u91cf\u52a0\u6c34\u5370\uff0c\u7d20\u6750\u4e0d\u5fc5\u4e0a\u4f20\u4e91\u7aef\uff1b\u4e0d\u8bb0 FFmpeg \u547d\u4ee4\u3002</p>\n<p>\u628a\u97f3\u89c6\u9891/\u56fe\u7247\u7684\u8f6c\u6362\u3001\u538b\u7f29\u3001\u6c34\u5370\u3001\u964d\u566a\u3001\u5143\u6570\u636e\u7f16\u8f91\u6536\u8fdb\u4e00\u4e2a\u5de5\u5177\u91cc\uff0c\u652f\u6301\u6279\u91cf\u4efb\u52a1\u961f\u5217\uff0c\u9ed8\u8ba4\u53c2\u6570\u5f00\u7bb1\u5373\u7528\uff0c\u9700\u8981\u65f6\u518d\u7cbe\u8c03\u7801\u7387\u3001\u5206\u8fa8\u7387\u3001\u7f16\u7801\u5668\u3002\u6240\u6709\u5904\u7406\u90fd\u5728\u672c\u673a\u5b8c\u6210\uff0c<strong>\u7d20\u6750\u4e0d\u5fc5\u4e0a\u4f20\u4e91\u7aef</strong>\u3002</p>\n<h2>\u6838\u5fc3\u4eae\u70b9</h2>\n<ul>\n<li><strong>\u4e00\u7ad9\u5f0f\u5a92\u4f53\u5904\u7406</strong>\uff1a\u8f6c\u6362\u5668\u3001\u538b\u7f29\u5668\u3001\u6c34\u5370\u3001\u964d\u566a\u3001\u5143\u6570\u636e\u7f16\u8f91\uff0c\u5e38\u7528\u80fd\u529b\u96c6\u4e2d\u5728\u4e00\u4e2a\u5e94\u7528\u91cc\uff0c\u4e0d\u7528\u5728\u591a\u4e2a\u5de5\u5177\u4e4b\u95f4\u6765\u56de\u8df3\u3002</li>\n<li><strong>\u6279\u91cf\u4efb\u52a1\u961f\u5217</strong>\uff1a\u591a\u6587\u4ef6\u4e00\u6b21\u62d6\u5165\uff0c\u7edf\u4e00\u914d\u7f6e\u6216\u9010\u6761\u5fae\u8c03\uff1b\u4efb\u52a1\u8bb0\u5f55\u53ef\u641c\u7d22\u3001\u6392\u5e8f\uff0c\u4e00\u952e\u6253\u5f00\u8f93\u51fa\u76ee\u5f55\u3002</li>\n<li><strong>\u9ed8\u8ba4\u5373\u7528\uff0c\u4e5f\u53ef\u7cbe\u8c03</strong>\uff1a\u4e0d\u61c2\u7f16\u7801\u53c2\u6570\u4e5f\u80fd\u76f4\u63a5\u51fa\u7ed3\u679c\uff1b\u9700\u8981\u65f6\u53ef\u8c03 CRF/VBR \u3001\u5206\u8fa8\u7387\u3001\u7f16\u7801\u5668\uff0c\u8fd8\u652f\u6301\u6781\u901f\u6a21\u5f0f\u4e0e GPU \u786c\u4ef6\u52a0\u901f\uff08 NVENC / QSV / VideoToolbox \u7b49\uff0c\u89c6\u7cfb\u7edf\u73af\u5883\u800c\u5b9a\uff09\u3002</li>\n<li><strong>\u672c\u5730\u4f18\u5148\uff0c\u9690\u79c1\u53ef\u63a7</strong>\uff1a\u5a92\u4f53\u5f15\u64ce\u57fa\u4e8e Rust <code>ffmpeg-next</code> \u96c6\u6210\uff0c\u6587\u4ef6\u7559\u5728\u672c\u673a\uff0c\u9002\u5408\u5bf9\u7d20\u6750\u9690\u79c1\u6709\u8981\u6c42\u7684\u521b\u4f5c\u8005\u548c\u5c0f\u56e2\u961f\u3002</li>\n<li><strong>\u8de8\u5e73\u53f0\u684c\u9762\u5e94\u7528</strong>\uff1a\u652f\u6301 <strong>macOS</strong>\uff08 Apple Silicon \uff09\u3001<strong>Windows</strong>\uff0c\u57fa\u4e8e Tauri 2 + React \u6784\u5efa\uff0c\u4f53\u79ef\u76f8\u5bf9 Electron \u66f4\u8f7b\u3002</li>\n</ul>\n<p><strong>\u80fd\u529b\u4e00\u89c8\uff1a</strong></p>\n<ul>\n<li><strong>\u8f6c\u6362\u5668</strong>\uff1a\u6279\u91cf\u8f6c\u7801\u97f3\u89c6\u9891/\u56fe\u7247\uff0c\u652f\u6301 GIF \u7b49\u52a8\u56fe\u8f93\u51fa</li>\n<li><strong>\u538b\u7f29\u5668</strong>\uff1a\u4e00\u952e\u6279\u91cf\u538b\u7f29\uff0c\u53ef\u8c03\u8d28\u91cf</li>\n<li><strong>\u6c34\u5370</strong>\uff1a\u6587\u672c/\u56fe\u7247\u6c34\u5370\uff0c\u4fbf\u4e8e\u54c1\u724c\u4e0e\u7248\u6743\u6807\u6ce8</li>\n<li><strong>\u964d\u566a</strong>\uff1a\u97f3\u89c6\u9891\u964d\u566a\uff0c\u9002\u5408\u65e5\u5e38\u7d20\u6750\u4f18\u5316</li>\n<li><strong>\u5143\u6570\u636e</strong>\uff1a\u89c6\u9891/\u97f3\u9891/\u56fe\u7247\u5143\u6570\u636e\u6279\u91cf\u7f16\u8f91</li>\n<li><strong>\u6211\u7684\u6587\u4ef6</strong>\uff1a\u5904\u7406\u7ed3\u679c\u96c6\u4e2d\u7ba1\u7406</li>\n</ul>\n<h2>\u8fd0\u884c\u754c\u9762\u622a\u56fe</h2>\n<p><img alt=\"\u9996\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/boy-lin/viko/main/public/app/1.png\"/></p>\n<p><img alt=\"\u8f6c\u6362\u5668\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/boy-lin/viko/main/public/app/2.png\"/></p>\n<p><img alt=\"\u538b\u7f29\u5668\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/boy-lin/viko/main/public/app/4.png\"/></p>\n<p><img alt=\"\u4efb\u52a1\u8bb0\u5f55\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://raw.githubusercontent.com/boy-lin/viko/main/public/app/5.png\"/></p>\n<h2>\u8bbf\u95ee\u4e0e\u4e0b\u8f7d</h2>\n<p>\u672c\u9879\u76ee\u5b8c\u5168\u5f00\u6e90\uff0c\u63d0\u4f9b\u5404\u5e73\u53f0\u5b89\u88c5\u5305\u4e0b\u8f7d\u3002</p>\n<ul>\n<li><strong>\u4e0b\u8f7d\u5b89\u88c5</strong>\uff1a <a href=\"https://avi.2342342.xyz\" rel=\"nofollow\">https://avi.2342342.xyz</a></li>\n<li><strong>GitHub \u5f00\u6e90\u5730\u5740</strong>\uff1a <a href=\"https://github.com/boy-lin/viko\" rel=\"nofollow\">https://github.com/boy-lin/viko</a></li>\n</ul>\n<p>\u5b89\u88c5\u540e\u6253\u5f00\u5373\u53ef\u4f7f\u7528\uff0c\u9996\u6b21\u5904\u7406\u53ef\u76f4\u63a5\u91c7\u7528\u9ed8\u8ba4\u53c2\u6570\uff1b\u6709\u8fdb\u9636\u9700\u6c42\u65f6\u518d\u9010\u6b65\u8c03\u6574\u5373\u53ef\u3002</p>\n<h2>\u6280\u672f\u6808</h2>\n<p>\u5982\u679c\u4f60\u5bf9 Tauri + FFmpeg \u96c6\u6210\u611f\u5174\u8da3\uff0c\u8fd9\u4e2a\u9879\u76ee\u4e5f\u8bb8\u503c\u5f97\u4e00\u770b\uff1a</p>\n<ul>\n<li><strong>\u524d\u7aef</strong>\uff1aReact 18 + TypeScript + Vite + Tailwind CSS + Zustand</li>\n<li><strong>\u684c\u9762\u7aef</strong>\uff1aTauri 2</li>\n<li><strong>\u5a92\u4f53\u5f15\u64ce</strong>\uff1aRust <code>ffmpeg-next</code> 8.x \uff08 codec / format / filter / scaling / resampling \uff09</li>\n<li><strong>License</strong>\uff1aMIT \uff0c\u6b22\u8fce Fork \u4e8c\u6b21\u5f00\u53d1</li>\n</ul>\n<p>\u4ece\u6e90\u7801\u8fd0\u884c\uff1a</p>\n<pre><code class=\"language-bash\">git clone https://github.com/boy-lin/viko.git\ncd viko\ncorepack enable &amp;&amp; pnpm install\npnpm check:deps    # macOS / Linux \u68c0\u67e5 FFmpeg \u5f00\u53d1\u5e93\npnpm tauri:dev\n</code></pre>\n<h2>\u9002\u5408\u8c01\u7528</h2>\n<ul>\n<li><strong>\u5185\u5bb9\u521b\u4f5c\u8005</strong>\uff1a\u6279\u91cf\u8f6c\u7801\u3001\u538b\u7f29\u3001\u52a0\u6c34\u5370</li>\n<li><strong>\u9690\u79c1\u654f\u611f\u7528\u6237</strong>\uff1a\u7d20\u6750\u4e0d\u4e0a\u4f20\u4e91\u7aef\uff0c\u6570\u636e\u7559\u5728\u672c\u673a</li>\n<li><strong>\u5f00\u53d1\u8005</strong>\uff1a\u57fa\u4e8e Tauri + FFmpeg \u4e8c\u6b21\u6269\u5c55</li>\n<li><strong>\u5165\u95e8\u7528\u6237</strong>\uff1a\u9ed8\u8ba4\u53c2\u6570\u5373\u7528\uff0c\u9010\u6b65\u5b66\u4e60\u8fdb\u9636\u9009\u9879</li>\n</ul>\n", 
      "date_published": "2026-06-05T02:49:48+00:00", 
      "title": "[\u5f00\u6e90] \u97f3\u89c6\u9891\u56fe\u7247\u5904\u7406\u5de5\u5177 \u6279\u91cf\u53cb\u597d \u672c\u673a\u5904\u7406\u4e0d\u4e0a\u4f20", 
      "id": "https://www.v2ex.com/t/1218120"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/x97bgt", 
        "name": "x97bgt", 
        "avatar": "https://cdn.v2ex.com/avatar/5771/2673/358047_large.png?m=1783309361"
      }, 
      "url": "https://www.v2ex.com/t/1217853", 
      "date_modified": "2026-06-07T00:59:47+00:00", 
      "content_html": "<p>\u4e00\u76f4\u5f88\u597d\u5947\u5f00\u6e90\u9879\u76ee\u7684 License \u7684\u7ea6\u675f\u529b\u3002\u5982\u679c\u4f60\u57fa\u4e8e\u522b\u4eba\u7684\u9879\u76ee\u505a\u4e86\u4e00\u4e2a\u4ea7\u54c1\uff0c\u7136\u540e\u95ed\u6e90\u5546\u7528\uff0c\u90a3\u4f60\u8fd9\u4e2a License \u6709\u5565\u7528\uff1f\u6bd4\u5982\u4f60\u7528\u4e86\u4e00\u4e2a GPL \u9879\u76ee\uff0c\u7136\u540e\u95ed\u6e90\uff0c\u90a3\u4e5f\u6ca1\u4eba\u77e5\u9053\u3002\u522b\u4eba\u4e5f\u4e0d\u77e5\u9053\u4f60\u4fb5\u6743\u3002</p>\n<p>\u6240\u4ee5 License \u5c31\u662f\u4e00\u4e2a\u541b\u5b50\u534f\u5b9a\uff1f</p>\n", 
      "date_published": "2026-06-04T04:47:39+00:00", 
      "title": "\u5f00\u6e90\u9879\u76ee\u7684 License \u662f\u541b\u5b50\u534f\u8bae\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/1217853"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/C5H12O5", 
        "name": "C5H12O5", 
        "avatar": "https://cdn.v2ex.com/avatar/75a9/7657/636986_large.png?m=1781624915"
      }, 
      "url": "https://www.v2ex.com/t/1216539", 
      "date_modified": "2026-06-01T00:01:39+00:00", 
      "content_html": "<p>\u521a\u521a\u4e0a CodeMirror \u7684 GitHub \u4ed3\u5e93\u51c6\u5907\u641c\u4e00\u4e0b Issue \uff0c\u7ed3\u679c\u53d1\u73b0\u7ec4\u7ec7\u5185\u6240\u6709\u4ed3\u5e93\u90fd\u5728\u4e0a\u4e2a\u6708 Public Archive \u4e86\u3002\u5413\u4e86\u6211\u4e00\u8df3\uff0c\u8fd8\u4ee5\u4e3a\u4e0d\u7ef4\u62a4\u4e86\uff0c\u56e0\u4e3a\u6211\u7684\u51e0\u4e2a\u5f00\u6e90\u9879\u76ee\u90fd\u4f9d\u8d56\u4e86 CodeMirror \uff0c\u8fd9\u53ef\u5982\u4f55\u662f\u597d\u3002\u7ed3\u679c\u641c\u7d22\u4e86\u4e00\u756a\u624d\u53d1\u73b0\u662f\u4f5c\u8005\u628a\u5e93\u90fd\u8fc1\u79fb\u5230\u4e86\u81ea\u5efa\u7684\u670d\u52a1\u4e0a\uff0c\u770b\u4f5c\u8005\u53d1\u5e16\u7684\u5185\u5bb9\u4ed6\u4e5f\u662f\u5bf9 GitHub \u4e0d\u6ee1\u4e45\u77e3\u4e86...</p>\n", 
      "date_published": "2026-05-29T10:07:55+00:00", 
      "title": "CodeMirror \u4f5c\u8005\u628a\u4ed6\u6240\u6709\u4ed3\u5e93\u90fd\u8fc1\u51fa\u4e86 GitHub", 
      "id": "https://www.v2ex.com/t/1216539"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/marlkiller", 
        "name": "marlkiller", 
        "avatar": "https://cdn.v2ex.com/gravatar/0d3aa0d47e77fe8b55b0305b11c274b4?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1216523", 
      "date_modified": "2026-05-29T09:24:14+00:00", 
      "content_html": "<h1>FlowForge Crypto\uff1a\u4e00\u6b3e\u5f00\u6e90\u7684\u53ef\u89c6\u5316\u3001\u8282\u70b9\u5f0f\u7684\u73b0\u4ee3\u5bc6\u7801\u5b66/\u52a0\u5bc6\u89e3\u5bc6\u5de5\u4f5c\u53f0</h1>\n<p>\u5e73\u65f6\u5728\u641e\u9006\u5411\u5206\u6790\u3001\u534f\u8bae\u6293\u5305\u6216\u8005 CTF \u7684\u65f6\u5019\uff0c\u5927\u5bb6\u80af\u5b9a\u6ca1\u5c11\u8ddf\u5404\u79cd\u52a0\u5bc6\u7b97\u6cd5\u6253\u4ea4\u9053\u3002\u4e3a\u4e86\u9a8c\u8bc1\u4e00\u6bb5\u6570\u636e\u662f AES \u3001RSA \u8fd8\u662f\u5355\u7eaf\u7684 Base64 \uff0c\u6211\u4eec\u5f80\u5f80\u9700\u8981\u5728\u5404\u79cd\u5728\u7ebf\u5de5\u5177\u3001\u672c\u5730\u5c0f\u63d2\u4ef6\uff0c\u751a\u81f3\u5199 Python \u811a\u672c\u4e4b\u95f4\u6765\u56de\u5207\u6362\uff0c\u6709\u65f6\u5019\u6b65\u9aa4\u4e00\u591a\uff0c\u81ea\u5df1\u90fd\u7ed5\u6655\u4e86\u3002</p>\n<p>\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u75db\u70b9\uff0c\u6211\u5f00\u53d1\u4e86\u4e00\u6b3e<strong>\u5b8c\u5168\u5f00\u6e90\u3001\u7eaf\u524d\u7aef\u8fd0\u884c</strong>\u7684\u53ef\u89c6\u5316\u52a0\u5bc6\u89e3\u5bc6\u5de5\u4f5c\u53f0 \u2014\u2014 <strong>FlowForge Crypto</strong>\u3002</p>\n<p>\u53ea\u9700\u50cf\u8fde\u7ebf\u6e38\u620f\u4e00\u6837\u62d6\u62fd\u8282\u70b9\uff0c\u5c31\u80fd\u76f4\u89c2\u5730\u6784\u5efa\u548c\u6d4b\u8bd5\u590d\u6742\u7684\u52a0\u5bc6\u5de5\u4f5c\u6d41\uff0c\u6267\u884c\u8fc7\u7a0b\u6240\u89c1\u5373\u6240\u5f97\u3002\u4eca\u5929\u5f00\u6e90\u5206\u4eab\u7ed9\u5927\u5bb6\uff0c\u5e0c\u671b\u80fd\u6210\u4e3a\u5927\u5bb6\u624b\u8fb9\u5b9e\u7528\u7684\u8f85\u52a9\u5229\u5668\uff01</p>\n<hr/>\n<h3>\ud83c\udf1f \u6838\u5fc3\u4eae\u70b9</h3>\n<ul>\n<li><strong>\u26a1 \u53ef\u89c6\u5316\u5de5\u4f5c\u6d41</strong>\uff1a\u544a\u522b\u7e41\u7410\u7684\u4ee3\u7801\u548c\u72ec\u7acb\u7684\u8f6c\u6362\u5de5\u5177\u3002\u901a\u8fc7\u8fde\u7ebf\u7684\u65b9\u5f0f\u7ec4\u5408\u5404\u4e2a\u7b97\u6cd5\u8282\u70b9\uff0c\u6570\u636e\u6d41\u5411\u6e05\u6670\u53ef\u89c1\uff0c\u975e\u5e38\u9002\u5408\u5206\u6790\u590d\u6742\u7684\u5d4c\u5957\u52a0\u5bc6\u534f\u8bae\u3002</li>\n<li>\n<strong>\ud83d\udee0\ufe0f \u4e30\u5bcc\u7684\u7b97\u6cd5\u652f\u6301</strong>\uff1a<ul>\n<li><strong>\u5bf9\u79f0\u52a0\u5bc6</strong>\uff1aAES (GCM/CBC), ChaCha20-Poly1305 \u7b49</li>\n<li><strong>\u975e\u5bf9\u79f0\u52a0\u5bc6</strong>\uff1aRSA, ECC (\u692d\u5706\u66f2\u7ebf)</li>\n<li><strong>\u54c8\u5e0c\u7b97\u6cd5</strong>\uff1aSHA-256, SHA-3, MD5 \u7b49</li>\n<li><strong>\u7f16\u7801\u8f6c\u6362</strong>\uff1aBase64, Hex, Base58, Base32, UTF-8</li>\n<li><strong>\u884d\u751f\u4e0e\u8ba4\u8bc1</strong>\uff1aPBKDF2, Argon2, HMAC, JWT \u89e3\u6790, OTP \u7b49</li>\n</ul>\n</li>\n<li><strong>\u23f1\ufe0f \u5b9e\u65f6\u6267\u884c\u53cd\u9988</strong>\uff1a\u4fee\u6539\u4efb\u610f\u8282\u70b9\u7684\u53c2\u6570\u6216\u6570\u636e\uff0c\u6574\u4e2a\u5de5\u4f5c\u6d41\u4f1a\u77ac\u95f4\u81ea\u52a8\u91cd\u65b0\u8ba1\u7b97\u3002</li>\n<li><strong>\ud83d\udcdd \u8be6\u7ec6\u65e5\u5fd7\u8ffd\u8e2a</strong>\uff1a\u5185\u7f6e\u6267\u884c\u65e5\u5fd7\uff0c\u6bcf\u4e00\u6b65\u8f6c\u6362\u7684\u8017\u65f6\u548c\u7ed3\u679c\u4e00\u76ee\u4e86\u7136\uff0c\u65b9\u4fbf\u5b9a\u4f4d\u9519\u8bef\u3002</li>\n<li><strong>\ud83d\udee1\ufe0f \u5b89\u5168\u9690\u79c1</strong>\uff1a\u7eaf\u524d\u7aef\uff08 React 19 + Vite \uff09\u5b9e\u73b0\uff0c\u6838\u5fc3\u57fa\u4e8e WebCrypto \u53ca\u6210\u719f\u5e93\uff0c\u6240\u6709\u6570\u636e\u8ba1\u7b97\u90fd\u5728\u6d4f\u89c8\u5668\u672c\u5730\u5b8c\u6210\uff0c<strong>\u4e0d\u4f1a\u4e0a\u4f20\u4efb\u4f55\u6570\u636e</strong>\uff0c\u5206\u6790\u654f\u611f\u534f\u8bae\u65f6\u7edd\u5bf9\u5b89\u5168\u3002</li>\n</ul>\n<hr/>\n<h3>\ud83d\udcf8 \u8fd0\u884c\u754c\u9762\u622a\u56fe</h3>\n<p><img alt=\"Overview\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/marlkiller/flowforge-crypto/blob/main/imgs/overview.png?raw=true\"/></p>\n<hr/>\n<h3>\ud83c\udf10 \u8bbf\u95ee\u4e0e\u4e0b\u8f7d</h3>\n<p>\u672c\u9879\u76ee\u76ee\u524d\u63d0\u4f9b\u5728\u7ebf Web \u7248\uff08\u514d\u5b89\u88c5\u76f4\u63a5\u7528\uff09\uff0c\u540c\u65f6\u4e5f\u5b8c\u5168\u5f00\u6e90\u3002</p>\n<ul>\n<li>\ud83d\udc49 **\u5728\u7ebf\u4f53\u9a8c (Live Demo)**\uff1a<a href=\"https://flowforge-crypto.pages.dev/\" rel=\"nofollow\">https://flowforge-crypto.pages.dev/</a></li>\n<li>\ud83d\udcbb <strong>GitHub \u5f00\u6e90\u5730\u5740</strong>\uff1a<a href=\"https://github.com/marlkiller/flowforge-crypto\" rel=\"nofollow\">https://github.com/marlkiller/flowforge-crypto</a></li>\n</ul>\n<hr/>\n<h3>\ud83d\ude80 \u8fdb\u9636\u73a9\u6cd5\uff1a\u4e00\u952e\u5bfc\u5165\u5de5\u4e1a\u7ea7\u52a0\u5bc6\u6d41</h3>\n<p>\u4e3a\u4e86\u8ba9\u5927\u5bb6\u5feb\u901f\u4e0a\u624b\uff0c\u9875\u9762\u5185\u7f6e\u4e00\u4e9b\u751f\u6210\u597d\u7684\u914d\u7f6e\u6587\u4ef6\u3002\u5728\u9875\u9762\u5de6\u4fa7\u83dc\u5355\u70b9\u51fb <strong>[Demo]</strong> \u6309\u94ae\uff0c\u5373\u53ef\u4e00\u952e\u52a0\u8f7d\u5b8c\u6574\u7684\u52a0\u89e3\u5bc6/\u7b7e\u540d/\u9a8c\u8bc1\u6d41\u7a0b</p>\n<p>\u8fd9\u4e2a\u6d41\u7a0b\u5c55\u793a\u4e86\uff1a</p>\n<ol>\n<li><strong>\u591a\u7ea7\u6d3e\u751f</strong>\uff1a\u4ece\u540c\u4e00\u4e2a\u5bc6\u7801\u6d3e\u751f\u51fa\u4e0d\u540c\u7684\u52a0\u5bc6\u5bc6\u94a5\u548c\u7b7e\u540d\u5bc6\u94a5\u3002</li>\n<li><strong>\u5b89\u5168\u6253\u5305</strong>\uff1a\u7248\u672c\u53f7 + \u968f\u673a\u76d0 + IV + \u5bc6\u6587 + HMAC \u7b7e\u540d\u7684\u5b8c\u6574\u6784\u9020\u903b\u8f91\u3002</li>\n<li><strong>\u5b9e\u65f6\u6821\u9a8c</strong>\uff1a\u4fee\u6539\u5de6\u4fa7\u4efb\u4f55\u8f93\u5165\uff0c\u53f3\u4fa7\u89e3\u5bc6\u94fe\u8def\u5b9e\u65f6\u8054\u52a8\uff0c\u975e\u5e38\u9002\u5408\u6df1\u5165\u7406\u89e3\u52a0\u5bc6\u534f\u8bae\u7ed3\u6784\u3002</li>\n</ol>\n<hr/>\n<h3>\ud83d\udca1 \u540e\u7eed\u8ba1\u5212</h3>\n<p>\u76ee\u524d\u9879\u76ee\u8fd8\u5728\u6301\u7eed\u8fed\u4ee3\u4e2d\uff0c\u540e\u7eed\u8ba1\u5212\u52a0\u5165\uff1a</p>\n<ol>\n<li>\u66f4\u591a\u5c0f\u4f17\u9006\u5411\u7b97\u6cd5\u652f\u6301\u3002</li>\n<li>\u5e38\u7528\u52a0\u5bc6\u7279\u5f81\u7684\u81ea\u52a8\u8bc6\u522b\u8282\u70b9\u3002</li>\n<li>\u5de5\u4f5c\u6d41\u7684\u672c\u5730\u5bfc\u5165\u5bfc\u51fa\u529f\u80fd\u3002</li>\n</ol>\n<p>\u6b22\u8fce\u5404\u4f4d\u5927\u4f6c\u4f53\u9a8c\u3001\u62cd\u7816\u3001\u63d0 Bug \u3002\u5982\u679c\u89c9\u5f97\u8fd9\u4e2a\u5de5\u5177\u5bf9\u4f60\u7684\u5206\u6790\u5de5\u4f5c\u6709\u5e2e\u52a9\uff0c\u53bb GitHub \u7ed9\u4e2a <strong>Star \u2b50</strong> \u5c31\u66f4\u611f\u6fc0\u4e0d\u5c3d\u5566\uff01</p>\n", 
      "date_published": "2026-05-29T09:23:19+00:00", 
      "title": "FlowForge Crypto\uff1a\u4e00\u6b3e\u5f00\u6e90\u7684\u53ef\u89c6\u5316\u3001\u8282\u70b9\u5f0f\u7684\u73b0\u4ee3\u5bc6\u7801\u5b66/\u52a0\u5bc6\u89e3\u5bc6\u5de5\u4f5c\u53f0", 
      "id": "https://www.v2ex.com/t/1216523"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Zeeland4v", 
        "name": "Zeeland4v", 
        "avatar": "https://cdn.v2ex.com/avatar/151d/6b3f/687680_large.png?m=1772382317"
      }, 
      "url": "https://www.v2ex.com/t/1216037", 
      "title": "\u6211\u505a\u4e86\u4e00\u4e2a Agent Team \u534f\u4f5c\u5e73\u53f0\u2014\u2014Rudder\uff1a\u8ba9 Agent Team \u5728\u5b9e\u8df5\u4e2d\u6210\u957f", 
      "id": "https://www.v2ex.com/t/1216037", 
      "date_published": "2026-05-27T15:50:39+00:00", 
      "content_html": "<p>\u6700\u8fd1\u5728\u5f00\u53d1 Rudder \uff0c\u4e00\u4e2a\u7ed9\u91cd\u5ea6 agent \u7528\u6237\u4f7f\u7528\u7684 Agent Team \u534f\u4f5c\u5e73\u53f0\u3002</p>\n<p>\u9879\u76ee\u5730\u5740\uff1a</p>\n<ul>\n<li>GitHub\uff1a<a href=\"https://github.com/Undertone0809/rudder\" rel=\"nofollow\">GitHub - Undertone0809/rudder: Rudder is an orchestration and control platform for agent work, and the operating layer for agent teams. \u00b7 GitHub</a></li>\n<li>Docs\uff1a<a href=\"https://doc.rudder.zeeland.studio/\" rel=\"nofollow\">https://doc.rudder.zeeland.studio</a></li>\n</ul>\n<p>\u5982\u679c\u4f60\u5df2\u7ecf\u5728\u9ad8\u9891\u4f7f\u7528 Codex \u3001Claude Code \u3001Cursor \uff0c\u6216\u8005\u5df2\u7ecf\u5f00\u59cb\u7ef4\u62a4\u81ea\u5df1\u7684 Agent Skill \uff0cRudder \u89e3\u51b3\u7684\u662f\u4e0b\u4e00\u9636\u6bb5\u7684\u95ee\u9898\uff1a</p>\n<p>Agent \u4e0d\u53ea\u662f\u5b8c\u6210\u4efb\u52a1\uff0c\u8fd8\u80fd\u5728\u771f\u5b9e\u4efb\u52a1\u3001review \u548c feedback \u91cc\u6301\u7eed\u8fed\u4ee3\u81ea\u5df1\u7684\u80fd\u529b\u3002</p>\n<p>Rudder \u628a goals \u3001issues \u3001agent runs \u3001reviews \u3001feedback \u3001skills \u548c learning \u4e32\u6210\u4e00\u4e2a work loop \u3002\u4e00\u6b21 agent run \u7ed3\u675f\u540e\uff0c\u4e0d\u53ea\u7559\u4e0b transcript \uff0c\u8fd8\u4f1a\u7559\u4e0b\u53ef\u8ffd\u8e2a\u3001\u53ef review \u3001\u53ef\u6c89\u6dc0\u3001\u53ef\u56de\u6eda\u7684\u5b66\u4e60\u8bb0\u5f55\u3002</p>\n<p>\u6211\u81ea\u5df1\u73b0\u5728\u9ad8\u9891\u7528 Codex \u3001Claude Code \uff0c\u4e5f\u5f00\u59cb\u5927\u91cf\u4f7f\u7528 Agent Skill \u3002\u5355\u6b21\u6267\u884c\u5df2\u7ecf\u5f88\u5f3a\u3002\u6539\u4ee3\u7801\u3001\u67e5 API \u3001\u5199\u8bf4\u660e\u3001\u4fee CI \uff0c\u8fd9\u4e9b\u90fd\u80fd\u505a\u3002\u5f88\u591a know-how \u4e5f\u786e\u5b9e\u53ef\u4ee5\u6c89\u6dc0\u4e0b\u6765\u3002</p>\n<p>\u4f46\u7528\u4e45\u4e86\u4ee5\u540e\uff0c\u9ebb\u70e6\u7684\u662f\u8fd9\u4e9b\u95ee\u9898\uff1a</p>\n<ul>\n<li>\u4ec0\u4e48\u5e94\u8be5\u53d8\u6210 memory \uff1f</li>\n<li>\u4ec0\u4e48\u5e94\u8be5\u53d8\u6210 skill \uff1f</li>\n<li>\u4ec0\u4e48\u53ea\u662f\u8fd9\u6b21\u4efb\u52a1\u7684\u4e00\u6b21\u6027\u7ea6\u675f\uff1f</li>\n<li>\u4ec0\u4e48\u5e94\u8be5\u7559\u5728\u5f53\u524d issue \u91cc\uff1f</li>\n<li>\u4ec0\u4e48\u6839\u672c\u4e0d\u8be5\u6c89\u6dc0\uff1f</li>\n</ul>\n<p>\u4e00\u4e9b\u53ef\u80fd\u7684\u60c5\u51b5\uff1a\u4e00\u6761 review feedback \u53ef\u80fd\u662f\u56e2\u961f\u957f\u671f\u539f\u5219\uff0c\u4e5f\u53ef\u80fd\u53ea\u662f\u8fd9\u6b21\u4efb\u52a1\u7684\u4e34\u65f6\u8981\u6c42\u3002\u4e00\u4e2a\u6210\u529f\u7ecf\u9a8c\u53ef\u80fd\u503c\u5f97\u6c89\u6dc0\u6210 skill \uff0c\u4e5f\u53ef\u80fd\u53ea\u9002\u5408\u7559\u5728\u8fd9\u6b21\u4efb\u52a1\u91cc\u3002\u4e00\u4e2a skill \u88ab\u542f\u7528\u4ee5\u540e\uff0c\u4e5f\u4e0d\u4ee3\u8868\u5b83\u771f\u7684\u8ba9 agent \u505a\u5f97\u66f4\u597d\u3002\u5b83\u53ef\u80fd\u8bef\u89e6\u53d1\uff0c\u53ef\u80fd\u62ff\u9519 source of truth \uff0c\u53ef\u80fd\u589e\u52a0\u4e0a\u4e0b\u6587\u6210\u672c\uff0c\u4e5f\u53ef\u80fd\u628a\u65e7\u5224\u65ad\u5e26\u56de\u65b0\u4efb\u52a1\u3002</p>\n<p>\u5728\u8fd9\u4e2a\u57fa\u7840\u4e0a\uff0cRudder \u662f agent team \u5728\u5b9e\u8df5\u4e2d\u6210\u957f\u7684\u8fd0\u884c\u5c42\uff1a\u4e00\u8fb9\u63a8\u8fdb\u771f\u5b9e\u5de5\u4f5c\uff0c\u4e00\u8fb9\u628a\u56e2\u961f\u7684\u6d41\u7a0b\u3001\u504f\u597d\u3001\u5224\u65ad\u6807\u51c6\u548c skill usage \u53d8\u6210\u53ef\u590d\u7528\u7684\u80fd\u529b\u8d44\u4ea7\u3002</p>\n<h2>\u4e3e\u4e2a\u4f8b\u5b50</h2>\n<p>\u6bd4\u5982\u4e00\u6b21 release \u4efb\u52a1\u5931\u8d25\u4e86\u3002</p>\n<p>\u666e\u901a agent \u5de5\u5177\u53ef\u80fd\u6700\u540e\u7559\u4e0b transcript \u3001\u9519\u8bef\u65e5\u5fd7\u548c\u4e00\u53e5\u603b\u7ed3\uff1a\u201c\u4e0b\u6b21\u53d1\u5e03\u524d\u8981\u66f4\u5c0f\u5fc3\u3002\u201d</p>\n<p>\u8fd9\u53e5\u8bdd\u6ca1\u4ec0\u4e48\u7528\u3002</p>\n<p>Rudder \u4f1a\u66f4\u5173\u5fc3\u8fd9\u4e9b\u4e1c\u897f\uff1a</p>\n<ul>\n<li>\u8fd9\u6b21 issue \u7684\u76ee\u6807\u662f\u4ec0\u4e48\u3002</li>\n<li>agent \u6267\u884c\u65f6\u52a0\u8f7d\u4e86\u54ea\u4e2a release skill \u3002</li>\n<li>\u5b83\u67e5\u4e86\u54ea\u4e9b source of truth \uff0c\u6bd4\u5982 tag \u3001registry \u3001CI run \u3002</li>\n<li>reviewer \u4e3a\u4ec0\u4e48\u9000\u56de\u3002</li>\n<li>\u8fd9\u6b21\u5931\u8d25\u66b4\u9732\u7684\u662f skill \u7684\u89e6\u53d1\u95ee\u9898\u3001\u6d41\u7a0b\u95ee\u9898\uff0c\u8fd8\u662f source \u8bfb\u53d6\u95ee\u9898\u3002</li>\n<li>\u8fd9\u6761\u7ecf\u9a8c\u662f\u5426\u503c\u5f97\u53d8\u6210 skill update \u3002</li>\n<li>\u66f4\u65b0\u540e\uff0c\u4e0b\u6b21\u7c7b\u4f3c release \u662f\u5426\u51cf\u5c11\u8fd4\u5de5\u3002</li>\n<li>\u5982\u679c\u6ca1\u6709\u6539\u5584\uff0c\u80fd\u4e0d\u80fd\u56de\u6eda\u8fd9\u6b21 skill update \u3002</li>\n</ul>\n<p>\u8fd9\u6837\u4e00\u6b21\u5931\u8d25\u5c31\u4e0d\u662f\u201c\u53c8\u5931\u8d25\u4e86\u4e00\u6b21\u201d\uff0c\u800c\u662f agent team \u7684\u4e00\u6b21\u8bad\u7ec3\u6837\u672c\u3002</p>\n<h2>\u548c GitHub Issues + Claude Code + \u4e00\u5806 Skill \u6709\u4ec0\u4e48\u533a\u522b\uff1f</h2>\n<p>\u8fd9\u4e2a\u95ee\u9898\u5f88\u5173\u952e\u3002\u56e0\u4e3a\u6211\u81ea\u5df1\u4e5f\u5728\u7528\u8fd9\u4e9b\u4e1c\u897f\u3002</p>\n<p>GitHub Issues / Linear \u80fd\u7ba1\u7406\u4efb\u52a1\uff0c\u4f46\u5b83\u4eec\u4e0d\u592a\u5173\u5fc3 agent \u5728\u8fd9\u6b21\u4efb\u52a1\u91cc\u5b66\u5230\u4e86\u4ec0\u4e48\u3002</p>\n<p>Codex / Claude Code \u5f88\u9002\u5408\u6267\u884c\u4efb\u52a1\uff0c\u4f46 run \u7ed3\u675f\u540e\uff0cfeedback \u3001review \u3001\u5931\u8d25\u6a21\u5f0f\u548c skill \u66f4\u65b0\u5f88\u96be\u81ea\u7136\u8fdb\u5165\u4e0b\u4e00\u6b21\u5de5\u4f5c\u3002</p>\n<p>Agent Skill \u80fd\u6c89\u6dc0\u7ecf\u9a8c\uff0c\u4f46 skill \u672c\u8eab\u4e5f\u4f1a\u53d8\u6210\u95ee\u9898\uff1a</p>\n<ul>\n<li>\u4ec0\u4e48\u65f6\u5019\u5e94\u8be5\u89e6\u53d1\u8fd9\u4e2a skill \uff1f</li>\n<li>\u8fd9\u6b21\u89e6\u53d1\u662f\u4e0d\u662f\u8bef\u89e6\u53d1\uff1f</li>\n<li>\u5b83\u6709\u6ca1\u6709\u5148\u62ff\u5bf9 source of truth \uff1f</li>\n<li>\u5b83\u6709\u6ca1\u6709\u771f\u7684\u964d\u4f4e\u8fd4\u5de5\uff1f</li>\n<li>\u5b83\u662f\u4e0d\u662f\u53ea\u662f\u628a\u4e00\u6b21\u6027\u504f\u597d\u5199\u6210\u4e86\u957f\u671f\u89c4\u5219\uff1f</li>\n<li>\u5b83\u53d8\u5dee\u4ee5\u540e\u80fd\u4e0d\u80fd\u56de\u6eda\uff1f</li>\n</ul>\n<p>Rudder \u628a\u8fd9\u4e9b agent \u7684\u6267\u884c\u8fc7\u7a0b\u653e\u8fdb\u4e00\u4e2a\u53ef\u8ffd\u8e2a\u3001\u53ef review \u3001\u53ef\u6c89\u6dc0\u3001\u53ef\u56de\u6eda\u7684\u5de5\u4f5c\u5faa\u73af\u91cc\u3002</p>\n<h2>\u6b22\u8fce\u8bd5\u7528\u3001star \u548c\u63d0 issue</h2>\n<p>Rudder \u8fd8\u5728\u5feb\u901f\u8fed\u4ee3\u4e2d\uff0c\u6b22\u8fce\u5927\u5bb6\u63d0\u4f9b\u53cd\u9988\uff01</p>\n<p><a href=\"https://github.com/Undertone0809/rudder\" rel=\"nofollow\">github.com</a></p>\n<p>\u5982\u679c\u4f60\u4e5f\u5728\u91cd\u5ea6\u4f7f\u7528 agent \uff0c\u6b22\u8fce\u8bd5\u7528\u3001star \uff0c\u6216\u8005\u76f4\u63a5\u62ff\u81ea\u5df1\u7684 agent workflow \u6765\u6311\u6218\u8fd9\u4e2a\u8bbe\u8ba1\u3002</p>\n<p>\u6b22\u8fce\u5927\u5bb6\u53cd\u9988\uff0c\u6700\u540e\u4e5f\u60f3\u542c\u542c\u5927\u5bb6\u7684\u8ba8\u8bba\uff01</p>\n<ol>\n<li>\u4f60\u5e73\u5e38\u5f00\u53d1\u7684\u65f6\u5019\u7528\u7684 Agent Skill \uff0c\u4e3b\u8981\u662f\u81ea\u5df1\u642d\u5efa\u7684\uff0c\u8fd8\u662f\u53bb\u7f51\u4e0a\u627e\u597d\u7528\u73b0\u6210\u66f4\u591a\uff1f</li>\n<li>\u4f60\u5982\u4f55\u8bc4\u4ef7\u81ea\u5df1\u5e73\u5e38\u4f7f\u7528\u7684 agent skill \uff0c\u4f1a\u53bb\u8dd1 evaluation \u5417\uff1f</li>\n<li>Agent Skill \u591a\u4e86\u4ee5\u540e\uff0c\u4f60\u4eec\u5982\u4f55\u5904\u7406 skill \u8d8a\u5199\u8d8a\u957f\u3001\u8d8a\u5199\u8d8a\u4e71\u3001\u8fc7\u5ea6\u6536\u655b\u7684\u95ee\u9898\uff1f</li>\n<li>\u4f60\u4eec\u73b0\u5728\u600e\u4e48\u5224\u65ad\u4e00\u6761 feedback \u5e94\u8be5\u8fdb memory \u3001skill \u3001workflow \uff0c\u8fd8\u662f\u53ea\u7559\u5728\u5f53\u524d issue \uff1f</li>\n<li>\u4f60\u4eec\u4f1a\u4e0d\u4f1a\u60f3\u77e5\u9053\u67d0\u4e2a skill \u5230\u5e95\u6709\u6ca1\u6709\u8ba9\u4efb\u52a1\u6210\u529f\u7387\u53d8\u9ad8\uff1f</li>\n<li>\u5982\u679c\u4e00\u4e2a\u5de5\u5177\u80fd\u8bb0\u5f55 run \u3001review \u3001learning proposal \u3001skill update \u3001eval \u548c rollback \uff0c\u4f60\u4f1a\u89c9\u5f97\u8fd9\u662f\u521a\u9700\uff0c\u8fd8\u662f\u8fc7\u5ea6\u8bbe\u8ba1\uff1f</li>\n</ol>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/donmenjie", 
        "name": "donmenjie", 
        "avatar": "https://cdn.v2ex.com/avatar/b48e/9690/386413_large.png?m=1779428057"
      }, 
      "url": "https://www.v2ex.com/t/1214711", 
      "title": "[\u5f00\u6e90] \u7ec8\u4e8e\u5b9e\u73b0\u4e00\u8fb9\u7528\u4e2d\u8f6c\u7ad9\u4e00\u8fb9\u5728\u624b\u673a\u4e0a\u7528 codex \u4e86", 
      "id": "https://www.v2ex.com/t/1214711", 
      "date_published": "2026-05-22T06:51:58+00:00", 
      "content_html": "<p>\u6211\u6700\u8fd1\u7528 Codex \u6bd4\u8f83\u591a\uff0c\u4e5f\u6298\u817e\u4e86\u81ea\u5df1\u7684 API \uff0c\u771f\u7684\u723d\u98de\u3002</p>\n<p>\u4f46\u5f88\u5feb\u53d1\u73b0\u4e00\u4e2a\u95ee\u9898\uff1a\u53ea\u8981\u8d70 API \u7684\u8bdd\uff0c\u63d2\u4ef6\u529f\u80fd\u548c Codex mobile \u529f\u80fd\u7528\u4e0d\u4e86\u3002</p>\n<p>\u6240\u4ee5\u6211\u5e72\u8106\u76f4\u63a5\u95ee Codex\uff1a\u6709\u6ca1\u6709\u529e\u6cd5\uff1f\u6709\u70b9\u4ee5\u6bd2\u653b\u6bd2\u4e86\u5c5e\u4e8e\u662f\u3002<br/>\n\u6700\u540e\u6298\u817e\u51fa\u6765\u8fd9\u4e48\u4e2a\u8f6f\u4ef6\uff0c\u53eb <code>CodexPilot</code>\u3002</p>\n<p>\u9879\u76ee\u5730\u5740\uff1a<br/>\n<a href=\"https://github.com/hl9565/CodexPilot\" rel=\"nofollow\">https://github.com/hl9565/CodexPilot</a></p>\n<p>\u6211\u89c9\u5f97\u6bd4\u8f83\u6709\u7528\u7684\u6838\u5fc3\u529f\u80fd\u662f\u4e24\u4e2a\u3002</p>\n<h2>\u767b\u5f55\u7ef4\u6301</h2>\n<p>\u4e00\u662f\u5728\u7ef4\u6301\u5b98\u65b9\u767b\u5f55\u4fe1\u606f\u7684\u60c5\u51b5\u4e0b\uff0c\u7528 API \u7684\u65b9\u5f0f\u8c03\u7528\u81ea\u5df1\u7684\u6a21\u578b\uff0c\u5c31\u53ef\u4ee5\u6109\u5feb\u5730\u5728\u624b\u673a\u4e0a\u63a7\u5236 Codex \u4e86\u3002\n<img alt=\"CodexPilot \u684c\u9762\u83dc\u5355\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/hl9565/CodexPilot/blob/main/docs/images/community/codexpilot-community-menu-desktop.png?raw=true\"/></p>\n<p><img alt=\"CodexPilot \u624b\u673a\u63a7\u5236\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/hl9565/CodexPilot/blob/main/docs/images/community/codexpilot-community-mobile-control.jpg?raw=true\"/></p>\n<p><img alt=\"CodexPilot \u4e2d\u8f6c\u914d\u7f6e\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/hl9565/CodexPilot/blob/main/docs/images/community/codexpilot-community-provider.png?raw=true\"/></p>\n<p>\u5148\u767b\u5f55\u81ea\u5df1\u7684\u8d26\u53f7\uff0c\u518d\u9000\u51fa Codex \u3002<br/>\nCodexPilot \u542f\u52a8\u540e\u9009\u62e9\u6df7\u5408\u4e2d\u8f6c\uff0c\u4e0b\u9762\u914d\u7f6e\u4e0a\u4e2d\u8f6c\u7ad9\u5c31\u884c\u4e86\uff0c\u8bb0\u5f97\u8981\u4ece CodexPilot \u542f\u52a8 Codex \u3002</p>\n<h2>\u5bf9\u8bdd\u540c\u6b65</h2>\n<p>\u4e8c\u5219\u662f\u5bf9\u8bdd\u540c\u6b65\u3002<br/>\n\u5728\u4ece\u5b98\u65b9\u5207\u6362\u5230 API \u7684\u60c5\u51b5\u4e0b\uff0c\u65e7\u7684\u5bf9\u8bdd\u4f1a\u6d88\u5931\uff08\u5207\u6362 Provider \u4e5f\u4f1a\uff09\uff0c\u56e0\u6b64\u505a\u4e86\u8fd9\u4e2a\u529f\u80fd\uff0c\u53ef\u4ee5\u81ea\u5df1\u51b3\u5b9a\u5bf9\u8bdd\u663e\u793a\u5728\u54ea\u4e2a Provider \u4e0b\u3002</p>\n<p><img alt=\"CodexPilot \u5bf9\u8bdd\u540c\u6b65\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://github.com/hl9565/CodexPilot/blob/main/docs/images/community/codexpilot-community-sessions.png?raw=true\"/></p>\n<p>\u6838\u5fc3\u60f3\u6cd5\u5f88\u7b80\u5355\uff1a\u539f\u7248\u597d\u7528\u7684\u5730\u65b9\u5c3d\u91cf\u4fdd\u7559\uff0c\u4e0d\u65b9\u4fbf\u7684\u5730\u65b9\u81ea\u5df1\u8865\u4e00\u70b9\u3002</p>\n<p>\u5e0c\u671b\u5927\u5bb6\u63d0\u610f\u89c1\u3002</p>\n"
    }
  ]
}