{
  "version": "https://jsonfeed.org/version/1", 
  "title": "\u6280\u672f\u6808", 
  "description": "\u4e00\u4e2a\u6280\u80fd\u3001\u4e00\u4e2a\u7ecf\u9a8c\u3001\u4e00\u4e2a\u5957\u8def | \u4eba\u4eba\u90fd\u662f\u8d85\u7ea7\u4e2a\u4f53", 
  "home_page_url": "https://www.v2ex.com/go/skills", 
  "feed_url": "https://www.v2ex.com/feed/skills.json", 
  "icon": "https://cdn.v2ex.com/navatar/7022/2949/1290_large.png?m=1772417478", 
  "favicon": "https://cdn.v2ex.com/navatar/7022/2949/1290_normal.png?m=1772417478", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/loneranger1024", 
        "name": "loneranger1024", 
        "avatar": "https://cdn.v2ex.com/avatar/7d99/c6cf/673630_large.png?m=1773468208"
      }, 
      "url": "https://www.v2ex.com/t/1206984", 
      "title": "\u4f60\u7684\u5c4e\u5c71\u4ee3\u7801\u8be5\u88c5\u4e2a GPS \u4e86", 
      "id": "https://www.v2ex.com/t/1206984", 
      "date_published": "2026-04-19T08:00:58+00:00", 
      "content_html": "<p><strong>Vibe coding \u5f88\u723d\uff0c\u76f4\u5230\u9879\u76ee\u53d8\u6210\u5c4e\u5c71\u4ee3\u7801\u3002</strong></p>\n<p>\u7528 AI \u5199\u4ee3\u7801\u5c31\u50cf\u5f00\u4e86\u6302\u2014\u2014\u4e00\u4e2a prompt \u5c31\u80fd\u751f\u6210\u51e0\u767e\u884c\uff0c\u529f\u80fd\u8dd1\u5f97\u901a\uff0c\u6210\u5c31\u611f\u62c9\u6ee1\u3002\u4f46\u5f53\u9879\u76ee\u4ece demo \u6f14\u5230\u51e0\u4e07\u884c\u3001\u5341\u51e0\u4e2a\u6a21\u5757\u65f6\uff0c\u95ee\u9898\u5f00\u59cb\u66b4\u9732\uff1a\u6539\u4e86\u4e00\u5904\uff0c\u7275\u51fa\u4e09\u5904 bug \uff1b\u52a0\u4e86\u4e00\u4e2a\u529f\u80fd\uff0c\u4e0d\u77e5\u9053\u4f1a\u5f71\u54cd\u54ea\u91cc\uff1b AI \u6bcf\u6b21\u8fdb\u9879\u76ee\u90fd\u8981\u4ece\u5934\u8bfb\u4e00\u5806\u6587\u4ef6\uff0c\u4e0a\u4e0b\u6587\u8d8a\u5806\u8d8a\u4e71\u3002</p>\n<p><strong>\u8fd9\u80cc\u540e\u5176\u5b9e\u662f\u4e00\u4e2a\u8001\u95ee\u9898\uff1a\u6ca1\u6709\u6587\u6863\u3002</strong></p>\n<p>\u7a0b\u5e8f\u5458\u81ea\u53e4\u81ea\u5632\u300c\u5c4e\u5c71\u4ee3\u7801\u300d\uff0c\u672c\u8d28\u4e0a\u5c31\u662f\u524d\u4eba\u6ca1\u7559\u6587\u6863\uff0c\u540e\u4eba\u53ea\u80fd\u5728\u5783\u573e\u5c71\u91cc\u8003\u53e4\u3002\u8bbd\u523a\u7684\u662f\uff0c\u6bcf\u4e2a\u4eba\u5199\u4ee3\u7801\u65f6\u90fd\u4e0d\u7231\u5199\u6587\u6863\uff0c\u63a5\u624b\u522b\u4eba\u9879\u76ee\u65f6\u53c8\u75af\u72c2\u9a82\u5a18\u3002\u6587\u6863\u4e00\u76f4\u662f\u4ef6\u8d39\u65f6\u8d39\u529b\u7684\u82e6\u5dee\u4e8b\u2014\u2014\u4eba\u5199\uff0c\u4eba\u5fd8\uff0c\u4eba\u61d2\u3002</p>\n<p><strong>\u4f46\u73b0\u5728\uff0c\u5199\u6587\u6863\u8fd9\u4ef6\u4e8b\u53ef\u4ee5\u4ea4\u7ed9 AI \u3002</strong></p>\n<p>\u4e0d\u662f\u8ba9\u4eba\u5199\u597d\u4e86\u7ed9 AI \u770b\uff0c\u800c\u662f\u8ba9 AI \u81ea\u5df1\u7ef4\u62a4\u6587\u6863\uff1a\u4ee3\u7801\u600e\u4e48\u53d8\uff0c\u6587\u6863\u5c31\u600e\u4e48\u66f4\u65b0\u3002\u4f60\u7684 Agent \u6bcf\u6b21\u8fdb\u5165\u9879\u76ee\uff0c3 \u6b65\u5c31\u80fd\u6478\u6e05\u5168\u5c40\uff1b\u6bcf\u6b21\u63d0\u4ea4\u4ee3\u7801\uff0c\u7cfb\u7edf\u81ea\u52a8\u68c0\u67e5\u6587\u6863\u662f\u5426\u540c\u6b65\u66f4\u65b0\u3002\u6587\u6863\u4e0d\u518d\u662f\u62d6\u540e\u817f\u7684\u8d1f\u62c5\uff0c\u800c\u662f AI \u534f\u4f5c\u7684\u57fa\u7840\u8bbe\u65bd\u3002</p>\n<p>\u8fd9\u5957\u673a\u5236\u7684\u6838\u5fc3\u5c31\u4e24\u70b9\uff1a</p>\n<ol>\n<li><strong>\u5206\u5f62\u6587\u6863 + Prompt \u7ea6\u675f</strong> \u2014 L1/L2/L3 \u5206\u5f62\u7ed3\u6784\u8ba9 Agent \u5feb\u901f\u5efa\u7acb\u4e0a\u4e0b\u6587\uff0c\u89c4\u5219\u5199\u8fdb\u6839\u6587\u6863\u5f62\u6210\u81ea\u6211\u7ea6\u675f</li>\n<li><strong>Git Hook \u5f3a\u5236\u6821\u9a8c</strong> \u2014 \u63d0\u4ea4\u65f6\u81ea\u52a8\u68c0\u67e5\uff0c\u4ee3\u7801\u548c\u6587\u6863\u4e0d\u540c\u6b65\u5c31\u76f4\u63a5\u963b\u65ad\uff0c\u903c\u7740 Agent \u66f4\u65b0\u5b8c\u518d\u63d0\u4ea4</li>\n</ol>\n<hr/>\n<h2>\u4e00\u3001\u5206\u5f62\u6587\u6863\u7cfb\u7edf</h2>\n<h3>\u6838\u5fc3\u601d\u8def</h3>\n<p>\u6587\u6863\u6309\u5c42\u7ea7\u7ec4\u7ec7\uff0c\u50cf\u5206\u5f62\u4e00\u6837\uff1a\u6bcf\u4e00\u5c42\u53ea\u63cf\u8ff0\u81ea\u5df1\u76f4\u63a5\u7ba1\u8f96\u7684\u5185\u5bb9\uff0c\u4e0d\u8fc7\u5ea6\u5c55\u5f00\u3002</p>\n<pre><code>L1: \u6839\u76ee\u5f55 CLAUDE.md          \u2190 \u5168\u5c40\u67b6\u6784\u3001\u89c4\u5219\u3001\u76ee\u5f55\u5730\u56fe\nL2: \u5b50\u76ee\u5f55 CLAUDE.md          \u2190 \u8be5\u6a21\u5757\u7684\u804c\u8d23\u3001\u6587\u4ef6\u6e05\u5355\u3001\u5bfc\u51fa\u3001\u4f9d\u8d56\nL3: \u6587\u4ef6\u5934\u6ce8\u91ca\uff08\u53ef\u9009\uff09         \u2190 \u4ec5\u7528\u4e8e\u903b\u8f91\u590d\u6742\u3001\u4e0d\u76f4\u89c2\u7684\u6587\u4ef6\n</code></pre>\n<p>AI \u4ece\u4efb\u610f\u6587\u4ef6\u51fa\u53d1\uff0c\u6700\u591a 3 \u6b21 Read \u5373\u53ef\u5230\u8fbe\u5b8c\u6574\u4e0a\u4e0b\u6587\uff1a</p>\n<ul>\n<li>\u5f53\u524d\u6587\u4ef6 \u2192 L2 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a> \u2192 L1 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></li>\n</ul>\n<h3>\u6587\u4ef6\u5bf9\u4e0d\u53d8\u5f0f\uff08 File Pair Invariant \uff09</h3>\n<p>\u6bcf\u4e2a\u6709\u6587\u6863\u7684\u76ee\u5f55\uff0c\u5fc5\u987b\u540c\u65f6\u5b58\u5728\u4e24\u4e2a\u6587\u4ef6\uff1a</p>\n<pre><code>CLAUDE.md      \u2190 \u552f\u4e00\u7684\u7f16\u8f91\u6e90\uff0c\u5185\u5bb9\u5728\u8fd9\u91cc\nAGENTS.md      \u2190 CLAUDE.md \u7684\u7b26\u53f7\u94fe\u63a5\uff08 symlink \uff09\uff0c\u5185\u5bb9\u5b8c\u5168\u4e00\u81f4\n</code></pre>\n<p><strong>\u4ec0\u4e48\u662f symlink \uff08\u7b26\u53f7\u94fe\u63a5\uff09\uff1f</strong></p>\n<p>Symlink \u662f\u64cd\u4f5c\u7cfb\u7edf\u63d0\u4f9b\u7684\u4e00\u79cd\u7279\u6b8a\u6587\u4ef6\uff0c\u5b83\u672c\u8eab\u4e0d\u5305\u542b\u5b9e\u9645\u5185\u5bb9\uff0c\u800c\u662f\u6307\u5411\u53e6\u4e00\u4e2a\u6587\u4ef6\u7684\u8def\u5f84\u3002\u53ef\u4ee5\u7406\u89e3\u4e3a<strong>\u5feb\u6377\u65b9\u5f0f</strong>\u2014\u2014\u6253\u5f00 symlink \uff0c\u5b9e\u9645\u8bbf\u95ee\u7684\u662f\u5b83\u6307\u5411\u7684\u90a3\u4e2a\u6587\u4ef6\u3002\u7f16\u8f91\u6e90\u6587\u4ef6\uff0csymlink \u7684\u5185\u5bb9\u4e5f\u4f1a\u540c\u6b65\u53d8\u5316\u3002</p>\n<p><strong>\u4e3a\u4ec0\u4e48\u8981\u7528 symlink \uff1f</strong> \u4e0d\u540c AI \u5de5\u5177\u8bfb\u53d6\u7684\u5165\u53e3\u6587\u4ef6\u540d\u4e0d\u540c\uff1a</p>\n<ul>\n<li>Claude Code \u8bfb <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code></li>\n<li>Codex \u7b49\u8bfb <code><a href=\"http://AGENTS.md\" rel=\"nofollow\">AGENTS.md</a></code></li>\n</ul>\n<p>\u7528 symlink \u800c\u4e0d\u662f\u4e24\u4e2a\u72ec\u7acb\u6587\u4ef6\uff0c\u786e\u4fdd\u6c38\u8fdc\u4e0d\u4f1a\u51fa\u73b0\u5185\u5bb9\u4e0d\u4e00\u81f4\u7684\u60c5\u51b5\u3002</p>\n<h4>\u521b\u5efa symlink \u547d\u4ee4</h4>\n<pre><code class=\"language-bash\"># \u5728\u76ee\u5f55\u5185\u6267\u884c\uff08\u76f8\u5bf9\u8def\u5f84\uff09\nln -s \"CLAUDE.md\" \"AGENTS.md\"\n\n# \u9a8c\u8bc1\nls -la AGENTS.md          # \u5e94\u663e\u793a AGENTS.md -&gt; CLAUDE.md\n</code></pre>\n<hr/>\n<h3>L1 \u6587\u6863\uff08\u6839\u76ee\u5f55 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a> \uff09</h3>\n<p>\u653e\u5728\u9879\u76ee\u6839\u76ee\u5f55\uff0c\u5185\u5bb9\u5305\u62ec\uff1a</p>\n<ul>\n<li>\u9879\u76ee\u7b80\u4ecb + \u6280\u672f\u6808</li>\n<li>\u5f00\u53d1\u547d\u4ee4\uff08 dev/build/test/db migration \u7b49\uff09</li>\n<li>\u6574\u4f53\u76ee\u5f55\u7ed3\u6784\u56fe\uff08\u6df1\u5ea6 2 \u5c42\u5373\u53ef\uff09</li>\n<li>\u5173\u952e\u67b6\u6784\u6a21\u5f0f\uff08\u6570\u636e\u5e93\u8fde\u63a5\u65b9\u5f0f\u3001\u8ba4\u8bc1\u6d41\u7a0b\u3001\u6743\u9650\u7cfb\u7edf\u7b49\uff09</li>\n<li><strong>\u6587\u6863\u7cfb\u7edf\u672c\u8eab\u7684\u89c4\u5219</strong>\uff08\u4f55\u65f6\u521b\u5efa L2 \u3001Loop-back Check \uff09</li>\n</ul>\n<h4>\u6a21\u677f</h4>\n<pre><code class=\"language-markdown\"># [\u9879\u76ee\u540d]\n\n## \u6280\u672f\u6808\nNext.js 15 \u00b7 React 19 \u00b7 TypeScript \u00b7 Drizzle ORM \u00b7 ...\n\n## \u5f00\u53d1\u547d\u4ee4\npnpm dev / pnpm build / pnpm db:generate ...\n\n## \u76ee\u5f55\u7ed3\u6784\nsrc/\n\u251c\u2500\u2500 app/         # Next.js App Router\n\u251c\u2500\u2500 config/      # \u914d\u7f6e\u3001\u6570\u636e\u5e93 schema \u3001i18n\n\u251c\u2500\u2500 core/        # \u6846\u67b6\u6838\u5fc3\u6a21\u5757\n\u251c\u2500\u2500 extensions/  # \u53ef\u63d2\u62d4\u6269\u5c55\uff08 AI/\u652f\u4ed8/\u5b58\u50a8\uff09\n\u251c\u2500\u2500 shared/      # \u5171\u4eab\u7ec4\u4ef6\u3001hooks \u3001\u5de5\u5177\u51fd\u6570\n\u2514\u2500\u2500 themes/      # \u4e3b\u9898\u5b9e\u73b0\n\n## \u67b6\u6784\u6a21\u5f0f\n[\u5173\u952e\u6a21\u5f0f\u8bf4\u660e...]\n\n## \u5206\u5f62\u6587\u6863\u7cfb\u7edf\u89c4\u5219\n[\u89c1\u4e0b\u6587]\n</code></pre>\n<hr/>\n<h3>L2 \u6587\u6863\uff08\u5b50\u76ee\u5f55 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a> \uff09</h3>\n<p>\u6bcf\u4e2a L2 \u6587\u6863\u63a7\u5236\u5728 <strong>\u2264 80 \u884c</strong>\uff0c\u56fa\u5b9a\u56db\u8282\uff1a</p>\n<pre><code class=\"language-markdown\"># [\u6a21\u5757\u540d]\n&gt; \u672c\u76ee\u5f55\u6587\u4ef6\u6709\u53d8\u52a8\u65f6\uff0c\u8bf7\u540c\u6b65\u66f4\u65b0\u6b64\u6587\u6863\u3002\n\n## Purpose\n\u8fd9\u4e2a\u76ee\u5f55\u7684\u804c\u8d23\u662f\u4ec0\u4e48\n\n## File Inventory\n| \u6587\u4ef6/\u76ee\u5f55     | \u7528\u9014                        |\n| ------------ | --------------------------- |\n| `foo.ts`     | \u505a\u4ec0\u4e48                      |\n| `bar/`       | \u5b50\u6a21\u5757\uff0c\u505a\u4ec0\u4e48              |\n\n## Key Exports\n- `SomeClass` \u2014 \u63cf\u8ff0\n- `someFunction(arg)` \u2014 \u63cf\u8ff0\n\n## Dependencies\n- Depends on: `src/core/db`, `src/config`\n- Depended on by: `src/app/api/*`\n</code></pre>\n<h4>\u4f55\u65f6\u521b\u5efa L2 \u6587\u6863</h4>\n<p><strong>\u6ee1\u8db3\u4ee5\u4e0b\u4efb\u610f\u4e00\u6761</strong>\uff0c\u5c31\u5e94\u8be5\u521b\u5efa\uff1a</p>\n<ul>\n<li>\u662f\u9876\u5c42\u6216\u6838\u5fc3\u6a21\u5757\u76ee\u5f55\uff08 src/app \u3001src/core \u3001src/config \u7b49\uff09</li>\n<li>\u76f4\u63a5\u5b50\u9879\u6709 4 \u4e2a\u4ee5\u4e0a</li>\n<li>\u662f\u6e05\u6670\u7684\u6a21\u5757\u8fb9\u754c\u6216\u9ad8\u9891\u7ef4\u62a4\u5165\u53e3</li>\n<li>\u7236\u6587\u6863\u65e0\u6cd5\u5728 3 \u6b21 Read \u5185\u89e3\u91ca\u6e05\u695a</li>\n</ul>\n<p><strong>\u4ee5\u4e0b\u6761\u4ef6\u5168\u90e8\u6ee1\u8db3\u65f6\uff0c\u4e0d\u9700\u8981\u521b\u5efa</strong>\uff1a</p>\n<ul>\n<li>\u53ea\u6709 1-3 \u4e2a\u6587\u4ef6</li>\n<li>\u662f\u53f6\u5b50\u7ea7\u5b9e\u73b0\u7ec6\u8282</li>\n<li>\u7236\u6587\u6863\u5df2\u80fd\u5145\u5206\u63cf\u8ff0</li>\n</ul>\n<hr/>\n<h3>L3 \u6587\u6863\uff08\u6587\u4ef6\u5934\u6ce8\u91ca\uff09</h3>\n<p>\u53ea\u5728<strong>\u903b\u8f91\u590d\u6742\u3001\u975e\u76f4\u89c2</strong>\u7684\u6587\u4ef6\u9876\u90e8\u52a0\u6ce8\u91ca\u3002\u666e\u901a\u6587\u4ef6\u4e0d\u9700\u8981\uff0c\u4e0d\u8981\u6ee5\u7528\u3002</p>\n<p><strong>\u5fc5\u987b\u5199\u7684\u60c5\u51b5</strong>\uff1a</p>\n<ul>\n<li>\u6709\u975e\u76f4\u89c2\u7ea6\u675f\uff08\u5982\"\u4e0d\u80fd\u5e76\u53d1\u8c03\u7528\"\u3001\"\u4f9d\u8d56\u5168\u5c40\u72b6\u6001\"\uff09</li>\n<li>\u6709\u9690\u6666\u526f\u4f5c\u7528</li>\n<li>\u662f\u8de8\u6a21\u5757\u67a2\u7ebd\uff0c\u9700\u8981\u8bf4\u660e\u4e0a\u4e0b\u6e38\u5173\u7cfb</li>\n<li>\u7b97\u6cd5\u590d\u6742\u3001\u5b9e\u73b0\u4e0d\u76f4\u89c2</li>\n</ul>\n<p><strong>\u4e0d\u9700\u8981\u5199\u7684\u60c5\u51b5</strong>\uff1a</p>\n<ul>\n<li>\u7eaf\u5de5\u5177\u51fd\u6570\uff08 input/output \u53ef\u4ece\u7b7e\u540d\u63a8\u65ad\uff09</li>\n<li>\u6587\u4ef6\u540d\u5df2\u81ea\u89e3\u91ca\u7684 CRUD</li>\n</ul>\n<p><strong>\u6ce8\u91ca\u683c\u5f0f\uff08\u4e09\u6bb5\u5f0f + \u7ea6\u675f\uff09</strong>\uff1a</p>\n<pre><code class=\"language-typescript\">// input:  \u4f9d\u8d56\u5916\u90e8\u7684\u4ec0\u4e48\uff08\u6a21\u5757\u3001\u8868\u3001\u73af\u5883\u53d8\u91cf\u7b49\uff09\n// output: \u5bf9\u5916\u63d0\u4f9b\u4ec0\u4e48\uff08\u51fd\u6570\u3001\u7c7b\u3001\u63a5\u53e3\uff09\n// pos:    \u5728\u7cfb\u7edf\u5c40\u90e8\u7684\u5730\u4f4d\uff08\u88ab\u8c01\u8c03\u7528\u3001\u67a2\u7ebd\u4f5c\u7528\uff09\n// \u26a0 \u7ea6\u675f\uff1a\u5173\u952e\u9677\u9631\u3001\u975e\u76f4\u89c2\u884c\u4e3a\u3001\u7ade\u6001\u6761\u4ef6\u7b49\n</code></pre>\n<p>\u4e09\u6bb5\u5f0f\u8ba9 AI \u79d2\u61c2\u6587\u4ef6\u5750\u6807\uff0c\u7ea6\u675f\u884c\u6807\u6ce8\u9700\u8981\u7279\u522b\u6ce8\u610f\u7684\u5751\u3002L3 \u6ce8\u91ca\u672c\u8eab\u5c31\u662f\u4f18\u5148\u7ea7\u4fe1\u53f7\u2014\u2014\u6709\u6ce8\u91ca = AI \u9700\u63d0\u5347\u6ce8\u610f\u529b\u3002</p>\n<hr/>\n<h2>\u4e8c\u3001\u6587\u6863\u7ef4\u62a4\u89c4\u5219\uff1aLoop-back Check</h2>\n<p><strong>\u6bcf\u6b21\u5b8c\u6210\u4efb\u52a1\u540e</strong>\uff08\u4e0d\u7ba1\u662f\u4fee\u6539\u4ee3\u7801\u8fd8\u662f\u52a0\u529f\u80fd\uff09\uff0c\u5f3a\u5236\u6267\u884c\u4ee5\u4e0b\u68c0\u67e5\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u6b65\u9aa4</th>\n<th>\u89e6\u53d1\u6761\u4ef6</th>\n<th>\u64cd\u4f5c</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>L2 sync</strong></td>\n<td>\u589e\u5220\u6539\u4e86\u4efb\u4f55\u6587\u4ef6</td>\n<td>\u66f4\u65b0\u8be5\u76ee\u5f55\u7684 <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code> \u6587\u4ef6\u6e05\u5355</td>\n</tr>\n<tr>\n<td><strong>\u65b0\u76ee\u5f55</strong></td>\n<td>\u521b\u5efa\u4e86\u65b0\u76ee\u5f55</td>\n<td>\u540c\u65f6\u521b\u5efa <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code> + <code><a href=\"http://AGENTS.md\" rel=\"nofollow\">AGENTS.md</a></code> symlink</td>\n</tr>\n<tr>\n<td><strong>\u76ee\u5f55\u5220\u9664/\u91cd\u547d\u540d</strong></td>\n<td>\u5220\u9664/\u91cd\u547d\u540d\u4e86\u76ee\u5f55</td>\n<td>\u4fee\u590d\u6216\u5220\u9664\u5bf9\u5e94 symlink</td>\n</tr>\n<tr>\n<td><strong>L3 consideration</strong></td>\n<td>\u5927\u5e45\u4fee\u6539\u4e86\u590d\u6742\u6587\u4ef6</td>\n<td>\u66f4\u65b0/\u6dfb\u52a0\u6587\u4ef6\u5934\u6ce8\u91ca</td>\n</tr>\n<tr>\n<td><strong>L1 flag</strong></td>\n<td>\u65b0\u589e\u9876\u7ea7\u76ee\u5f55\u6216\u6269\u5c55\u7c7b\u522b</td>\n<td>\u66f4\u65b0\u6839 <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code> \u76ee\u5f55\u5730\u56fe</td>\n</tr>\n</tbody></table><p>\u8fd9\u4e2a\u89c4\u5219\u5199\u5728\u6839 <code><a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a></code> \u91cc\uff0c\u8ba9 AI \u6bcf\u6b21\u90fd\u80fd\u770b\u5230\uff0c\u5f62\u6210\u81ea\u6211\u5f3a\u5316\u7684\u95ed\u73af\u3002</p>\n<hr/>\n<h2>\u4e09\u3001Pre-commit Hook \u9632\u62a4\u673a\u5236</h2>\n<p><strong>\u4ec0\u4e48\u662f pre-commit hook \uff1f</strong></p>\n<p>\u5b83\u662f Git \u63d0\u4f9b\u7684\u4e00\u4e2a\u94a9\u5b50\u811a\u672c\uff0c\u5728\u4f60\u6267\u884c <code>git commit</code> \u65f6<strong>\u81ea\u52a8\u89e6\u53d1</strong>\u3002\u5982\u679c\u811a\u672c\u8fd4\u56de\u975e 0 \uff08\u5931\u8d25\uff09\uff0c\u63d0\u4ea4\u5c31\u4f1a\u88ab\u963b\u65ad\u3002\u5e38\u89c1\u7528\u9014\u5305\u62ec\uff1a\u81ea\u52a8\u683c\u5f0f\u5316\u4ee3\u7801\u3001\u8dd1\u5355\u5143\u6d4b\u8bd5\u3001\u68c0\u67e5\u4ee3\u7801\u89c4\u8303\u2014\u2014\u4ee5\u53ca\u6211\u4eec\u8fd9\u91cc\u505a\u7684\uff0c<strong>\u68c0\u67e5\u6587\u6863\u662f\u5426\u540c\u6b65\u66f4\u65b0</strong>\u3002</p>\n<p>\u6587\u6863\u89c4\u5219\u5199\u5f97\u518d\u6e05\u695a\uff0cAI \u4e5f\u53ef\u80fd\u5728\u67d0\u6b21\u4efb\u52a1\u4e2d\u6f0f\u6389\u3002<br/>\nPre-commit Hook \u63d0\u4f9b <strong>\u63d0\u4ea4\u65f6\u7684\u6700\u540e\u9632\u7ebf</strong>\u3002</p>\n<h3>Hook \u6587\u4ef6\u4f4d\u7f6e</h3>\n<pre><code>.git/hooks/\n\u2514\u2500\u2500 pre-commit\n</code></pre>\n<hr/>\n<h3>\u6838\u5fc3\u903b\u8f91</h3>\n<pre><code>1. \u6536\u96c6\u6240\u6709 staged \u6587\u4ef6\uff08 git diff --cached --name-only --diff-filter=ACMRD \uff09\n2. \u8fc7\u6ee4\u51fa\u5176\u4e2d\u5df2 staged \u7684 CLAUDE.md \uff08\u8bf4\u660e\u5f00\u53d1\u8005\u5df2\u7ecf\u5728\u66f4\u65b0\u6587\u6863\uff09\n3. \u5bf9\u6bcf\u4e2a\u975e\u6587\u6863\u7684 staged \u6587\u4ef6\uff1a\n   \u2514\u2500 \u5411\u4e0a\u904d\u5386\u76ee\u5f55\u6811\uff0c\u627e\u5230\u6700\u8fd1\u7684 CLAUDE.md\n      \u2514\u2500 \u5982\u679c\u8be5 CLAUDE.md \u672a\u88ab\u540c\u65f6 staged \u2192 \u6807\u8bb0\u76ee\u5f55\u4e3a \"stale\"\n4. \u5bf9\u6bcf\u4e2a stale \u76ee\u5f55\uff1a\n   \u251c\u2500 \u5206\u6790\u53d7\u5f71\u54cd\u6587\u4ef6\u7684\u53d8\u66f4\u7c7b\u578b\uff08 A/D/M/R \uff09\n   \u2514\u2500 \u5206\u7ea7\u5224\u65ad needs_review \uff08 A/D/R \u2192 true, M \u2192 false \uff09\n5. \u8f93\u51fa\u53d8\u66f4\u8be6\u60c5 + \u51b3\u7b56\u6307\u5357 + \u673a\u5668\u53ef\u8bfb\u7684 [DOC-HINT] \u5757\n6. exit 1 \u2192 \u963b\u65ad\u63d0\u4ea4\uff0c\u7b49\u5f85\u7528\u6237/Agent \u505a\u51fa\u9009\u62e9\n</code></pre>\n<p><strong>\u5173\u952e\u51b3\u7b56\uff1a\u963b\u65ad\u800c\u975e\u8b66\u544a\u3002</strong></p>\n<p>\u8fd9\u4e2a\u8bbe\u8ba1\u4e0d\u662f\u4e00\u5f00\u59cb\u5c31\u786e\u5b9a\u7684\uff0c\u800c\u662f\u7ecf\u5386\u4e86\u4e24\u8f6e\u8fed\u4ee3\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u7248\u672c</th>\n<th>\u7b56\u7565</th>\n<th>\u95ee\u9898</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>v1</td>\n<td>\u8b66\u544a\uff08<code>exit 2</code>\uff09</td>\n<td>\u5f00\u53d1\u8005\u548c AI \u90fd\u503e\u5411\u4e8e\u65e0\u8111\u786e\u8ba4\uff0c\u9632\u7ebf\u5f62\u540c\u865a\u8bbe</td>\n</tr>\n<tr>\n<td>v2</td>\n<td>\u5f3a\u5236\u66f4\u65b0</td>\n<td>\u8fc7\u4e8e\u7c97\u66b4\u2014\u2014\u4fee\u590d\u4e00\u4e2a typo \u6216\u6539\u4e2a\u53d8\u91cf\u540d\u4e5f\u8981\u66f4\u65b0\u6587\u6863\uff0c\u53cd\u800c\u589e\u52a0\u566a\u97f3</td>\n</tr>\n<tr>\n<td>v3</td>\n<td><strong>\u963b\u65ad + \u5206\u7ea7\u5224\u65ad</strong></td>\n<td>\u5361\u4f4f\u63d0\u4ea4\uff0c\u4f46\u6839\u636e\u53d8\u66f4\u7c7b\u578b\u7ed9\u51fa\u660e\u786e\u7684\u300c\u66f4\u65b0 / \u8df3\u8fc7\u300d\u5efa\u8bae</td>\n</tr>\n</tbody></table><p>\u5f53\u524d\u91c7\u7528\u4e24\u9636\u6bb5\u5904\u7406\uff1a</p>\n<ol>\n<li><strong>\u963b\u65ad\u9636\u6bb5</strong>\uff1a\u63d0\u4ea4\u65f6\u68c0\u6d4b\u5230 stale \u6587\u6863\uff0c\u76f4\u63a5 <code>exit 1</code> \u5361\u4f4f\u3002\u4e0d\u7ed9\"\u8b66\u544a\u540e\u81ea\u52a8\u653e\u884c\"\u7684\u6f0f\u6d1e\uff0c\u4e5f\u4e0d\u4e00\u5200\u5207\u5f3a\u5236\u66f4\u65b0\u3002</li>\n<li><strong>\u5224\u65ad\u9636\u6bb5</strong>\uff1a\u6839\u636e A/D/M/R \u53d8\u66f4\u7c7b\u578b\u81ea\u4e3b\u51b3\u7b56\u2014\u2014\u5b58\u5728 A/D/R \uff08\u589e\u5220\u91cd\u547d\u540d\uff09\u2192 <code>needs_review=true</code>\uff0c\u5efa\u8bae\u66f4\u65b0\uff1b\u53ea\u6709 M \uff08\u4fee\u6539\u5185\u5bb9\uff09\u2192 \u82e5\u786e\u8ba4\u4e0d\u5f71\u54cd\u63a5\u53e3/\u5bfc\u51fa\uff0c\u53ef\u7528 <code>--no-verify</code> \u8df3\u8fc7\u3002</li>\n</ol>\n<p><code>--no-verify</code> \u59cb\u7ec8\u53ef\u7528\uff0c\u4e0d\u4f1a\u5361\u4f4f\u4efb\u4f55\u5de5\u4f5c\u6d41\u3002\u8fd9\u79cd\u8bbe\u8ba1\u628a\u9009\u62e9\u6743\u8fd8\u7ed9\u4eba\u548c AI \uff0c\u540c\u65f6\u7528\u963b\u65ad\u786e\u4fdd\u9009\u62e9\u662f\u88ab<strong>\u6709\u610f\u8bc6</strong>\u505a\u51fa\u7684\u3002</p>\n<hr/>\n<h3>\u53d8\u66f4\u7c7b\u578b\u5206\u7ea7</h3>\n<p>Hook \u8f93\u51fa\u6bcf\u4e2a\u53d7\u5f71\u54cd\u6587\u4ef6\u7684\u53d8\u66f4\u7c7b\u578b\uff0c\u5e2e\u52a9\u5feb\u901f\u5224\u65ad\u662f\u5426\u771f\u7684\u9700\u8981\u66f4\u65b0\u6587\u6863\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b</th>\n<th>\u542b\u4e49</th>\n<th>\u5efa\u8bae</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>A</strong> (Added)</td>\n<td>\u65b0\u589e\u6587\u4ef6</td>\n<td>\u2705 \u66f4\u65b0 \u2014 File Inventory \u9700\u8981\u52a0\u5165\u65b0\u6761\u76ee</td>\n</tr>\n<tr>\n<td><strong>D</strong> (Deleted)</td>\n<td>\u5220\u9664\u6587\u4ef6</td>\n<td>\u2705 \u66f4\u65b0 \u2014 \u79fb\u9664\u5df2\u4e0d\u5b58\u5728\u7684\u6761\u76ee</td>\n</tr>\n<tr>\n<td><strong>R</strong> (Renamed)</td>\n<td>\u91cd\u547d\u540d</td>\n<td>\u2705 \u66f4\u65b0 \u2014 \u6587\u4ef6\u8def\u5f84\u53d8\u4e86</td>\n</tr>\n<tr>\n<td><strong>M</strong> (Modified)</td>\n<td>\u4fee\u6539\u5185\u5bb9</td>\n<td>\u26a0\ufe0f \u4ec5\u5f53\u63a5\u53e3/\u5bfc\u51fa\u53d8\u5316\u65f6\u9700\u8981\u66f4\u65b0</td>\n</tr>\n</tbody></table><p>\u8fd9\u4e2a\u5206\u7ea7\u5f15\u51fa\u4e00\u4e2a\u81ea\u52a8\u5316\u5224\u65ad\u89c4\u5219\uff1a**\u5b58\u5728 A/D/R \u53d8\u66f4 \u2192 <code>needs_review=true</code>**\u3002</p>\n<p>\u4f46 A/D/M/R \u53ea\u662f\u53d8\u66f4\u7c7b\u578b\uff0c\u4e0d\u662f\u66f4\u65b0\u51b3\u7b56\u3002\u4eba\u5728\u9762\u5bf9 hook \u963b\u65ad\u65f6\uff0c\u8fd8\u9700\u8981\u77e5\u9053\u300c\u4ec0\u4e48\u60c5\u51b5\u4e0b\u5fc5\u987b\u66f4\u65b0\u3001\u4ec0\u4e48\u60c5\u51b5\u4e0b\u53ef\u4ee5\u8df3\u8fc7\u300d\u3002\u5b8c\u6574\u7684\u51b3\u7b56\u89c4\u5219\u5982\u4e0b\uff1a</p>\n<table>\n<thead>\n<tr>\n<th>\u5fc5\u987b\u66f4\u65b0 \u2705</th>\n<th>\u53ef\u4ee5\u8df3\u8fc7 \u274c</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\u65b0\u589e/\u5220\u9664/\u91cd\u547d\u540d\u6587\u4ef6\u6216\u76ee\u5f55</td>\n<td>Debug \u4ee3\u7801\u3001console.log \u3001\u4e34\u65f6\u65e5\u5fd7</td>\n</tr>\n<tr>\n<td>\u4fee\u6539\u63a5\u53e3\u3001\u7c7b\u578b\u3001\u5bfc\u51fa\u7684\u51fd\u6570</td>\n<td>\u6ce8\u91ca\u6216\u4ee3\u7801\u683c\u5f0f\u5316\uff08 prettier / eslint \uff09</td>\n</tr>\n<tr>\n<td>\u8c03\u6574\u67b6\u6784\u6216\u6570\u636e\u6d41</td>\n<td>\u4e0d\u6539\u52a8\u63a5\u53e3\u7684\u5c0f bug \u4fee\u590d</td>\n</tr>\n<tr>\n<td>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff08 manifest \u3001vite \u3001tsconfig \uff09</td>\n<td>\u4ec5\u6d4b\u8bd5\u6587\u4ef6\u53d8\u66f4</td>\n</tr>\n<tr>\n<td>\u4f9d\u8d56\u5173\u7cfb\u53d1\u751f\u53d8\u5316</td>\n<td>\u65e0\u8bed\u4e49\u53d8\u5316\u7684\u53d8\u91cf\u91cd\u547d\u540d</td>\n</tr>\n</tbody></table><hr/>\n<h3>[DOC-HINT]\uff1a\u7ed9 AI Agent \u7684\u673a\u5668\u53ef\u8bfb\u5757</h3>\n<p>\u8fd9\u662f\u6574\u5957\u673a\u5236\u4e2d\u6700\u6709\u4ef7\u503c\u7684\u8bbe\u8ba1\u6f14\u8fdb\u3002</p>\n<p>\u4eba\u7c7b\u770b\u5230\u9ec4\u8272\u8b66\u544a\u53ef\u4ee5\u51ed\u76f4\u89c9\u5224\u65ad\"\u8fd9\u6b21\u6539\u52a8\u8981\u4e0d\u8981\u66f4\u65b0\u6587\u6863\"\uff0c\u4f46 AI Agent \u4e0d\u884c\u2014\u2014\u5b83\u9700\u8981\u7ed3\u6784\u5316\u4fe1\u53f7\u3002Hook \u8f93\u51fa\u672b\u5c3e\u9644\u5e26\u7684 <code>[DOC-HINT]</code> \u5757\u89e3\u51b3\u4e86\u8fd9\u4e2a\u95ee\u9898\uff1a</p>\n<pre><code>[DOC-HINT]\nstale:\n  src/auth/CLAUDE.md  | A=1 D=1 M=1 R=0 | needs_review=true\n  src/utils/CLAUDE.md | A=0 D=0 M=1 R=1 | needs_review=true\n\nrules:\n  A=Added    \u2192 doc update recommended\n  D=Deleted  \u2192 doc update recommended\n  R=Renamed  \u2192 doc update recommended\n  M=Modified \u2192 usually not needed unless interface/export changed\n</code></pre>\n<p>AI Agent \u53ef\u4ee5\u89e3\u6790\u8fd9\u4e2a\u5757\u6765\u81ea\u52a8\u51b3\u7b56\uff1a</p>\n<ul>\n<li><code>needs_review=true</code> \u2192 \u8bfb\u53d6\u5bf9\u5e94 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a> \uff0c\u6839\u636e A/D/R \u53d8\u66f4\u66f4\u65b0 File Inventory</li>\n<li><code>needs_review=false</code>\uff08\u53ea\u6709 M \u53d8\u66f4\uff09\u2192 \u53ef\u4ee5\u5b89\u5168\u4f7f\u7528 <code>--no-verify</code> \u8df3\u8fc7</li>\n</ul>\n<p><strong>[DOC-HINT] \u8ba9 hook \u4e0d\u4ec5\u662f\u7ed9\u4eba\u770b\u7684\u63d0\u9192\uff0c\u66f4\u662f AI \u5de5\u4f5c\u6d41\u4e2d\u7684\u4e00\u4e2a\u51b3\u7b56\u8282\u70b9\u3002</strong> \u8fd9\u624d\u662f\"AI \u53cb\u597d\"\u7684\u771f\u6b63\u542b\u4e49\u2014\u2014\u4e0d\u53ea\u662f\u6587\u6863\u7ed3\u6784\u5bf9 AI \u53cb\u597d\uff0c\u8fde\u5b88\u62a4\u673a\u5236\u7684\u8f93\u51fa\u4e5f\u8981\u5bf9 AI \u53cb\u597d\u3002</p>\n<hr/>\n<h3>\u5b9e\u9645\u6548\u679c\u793a\u4f8b</h3>\n<pre><code>$ git add src/auth/oauth.ts src/auth/login.ts src/utils/format.ts\n$ git commit -m \"feat: add OAuth support\"\n\n\u26a0  These directories have staged changes but their CLAUDE.md is not updated:\n\n  \u2192 src/auth/CLAUDE.md\n    A  src/auth/oauth.ts\n    M  src/auth/login.ts\n\n  \u2192 src/utils/CLAUDE.md\n    R  src/utils/format.ts\n    M  src/utils/date.ts\n\nUpdate docs, or skip with: git commit --no-verify -m \"message\"\n\nWhen to update: A/D/R, interface, architecture, config change\nWhen to skip:   debug code, formatting, minor fixes, tests, rename\n\n[DOC-HINT]\nstale:\n  src/auth/CLAUDE.md  | A=1 D=0 M=1 R=0 | needs_review=true\n  src/utils/CLAUDE.md | A=0 D=0 M=1 R=1 | needs_review=true\n\nrules:\n  A=Added    \u2192 doc update recommended\n  D=Deleted  \u2192 doc update recommended\n  R=Renamed  \u2192 doc update recommended\n  M=Modified \u2192 usually not needed unless interface/export changed\n</code></pre>\n<hr/>\n<h2>\u56db\u3001\u6574\u4f53\u67b6\u6784\u56fe</h2>\n<h2><img alt=\"\u67b6\u6784\u56fe\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://pub-e61e59c2220d4dfba3768981b76f6c40.r2.dev/img/project-doc-bootstrap.png\"/></h2>\n<h2>\u53c2\u8003\u4e0e\u81f4\u8c22</h2>\n<p>\u672c\u6587\u7684\u5206\u5f62\u6587\u6863\u601d\u8def\u6e90\u81ea <strong>\u8d75\u7eaf\u60f3</strong> \u7684\u5b9e\u8df5\u5206\u4eab\u3002\u4ed6\u5728\u4f7f\u7528 Claude Code \u5f00\u53d1 laper \u65f6\uff0c\u603b\u7ed3\u4e86\u4e00\u5957\u4ee5\u300c\u5206\u5f62\u300d\u4e3a\u6838\u5fc3\u7684\u6587\u6863\u7ec4\u7ec7\u65b9\u6cd5\u2014\u2014\u6bcf\u4e2a\u76ee\u5f55\u81ea\u5e26\u6781\u7b80\u8bf4\u660e\uff0c\u6bcf\u4e2a\u6587\u4ef6\u5934\u58f0\u660e input/output/pos \uff0c\u8ba9 AI \u5728\u81ea\u76f8\u4f3c\u7684\u7ed3\u6784\u4e2d\u5feb\u901f\u5efa\u7acb\u4e0a\u4e0b\u6587\u3002</p>\n<p>\u6211\u5728\u6b64\u57fa\u7840\u4e0a\u505a\u4e86\u62d3\u5c55\u548c\u5de5\u7a0b\u5316\uff1a</p>\n<ul>\n<li><strong>\u6587\u4ef6\u5bf9\u4e0d\u53d8\u5f0f</strong>\uff08 <a href=\"http://CLAUDE.md\" rel=\"nofollow\">CLAUDE.md</a> + <a href=\"http://AGENTS.md\" rel=\"nofollow\">AGENTS.md</a> symlink \uff09\u89e3\u51b3\u591a\u5de5\u5177\u517c\u5bb9</li>\n<li><strong>L3 \u6ce8\u91ca\u4ece\u5168\u91cf\u6539\u4e3a\u53ef\u9009</strong>\uff0c\u914d\u5408\u660e\u786e\u7684\u300c\u5fc5\u987b\u5199/\u4e0d\u9700\u8981\u5199\u300d\u5224\u65ad\u6807\u51c6\uff0c\u964d\u4f4e\u566a\u97f3</li>\n<li><strong>Pre-commit Hook \u786c\u963b\u65ad + [DOC-HINT]</strong> \u628a\u89c4\u5219\u4ece\u300c AI \u81ea\u89c9\u300d\u5347\u7ea7\u4e3a\u300c\u7cfb\u7edf\u5f3a\u5236\u300d</li>\n</ul>\n<p>\u5982\u679c\u4f60\u5bf9\u539f\u59cb\u65b9\u6848\u611f\u5174\u8da3\uff0c\u63a8\u8350\u5173\u6ce8\u8d75\u7eaf\u60f3\u7684\u5206\u4eab\u3002</p>\n<p>\u672c\u6587\u7684\u5b9e\u8df5\u548c\u5de5\u5177\u94fe\u5df2\u5f00\u6e90\u4e3a Skill \uff0c\u6b22\u8fce\u8bd5\u7528\u548c\u53cd\u9988\uff1a</p>\n<pre><code class=\"language-bash\"># \u4e00\u952e\u5b89\u88c5\nnpx skills add longranger2/project-doc-bootstrap\n</code></pre>\n<p>GitHub: <a href=\"https://github.com/longranger2/project-doc-bootstrap\" rel=\"nofollow\">https://github.com/longranger2/project-doc-bootstrap</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/debuginn", 
        "name": "debuginn", 
        "avatar": "https://cdn.v2ex.com/avatar/bc00/e25d/435776_large.png?m=1767929837"
      }, 
      "url": "https://www.v2ex.com/t/1206940", 
      "title": "\u5f00\u6e90\u4e86\u4e00\u4e2a Hugo \u4e3b\u9898\uff0c\u4e13\u95e8\u7528\u6765\u5c55\u793a AI Skill", 
      "id": "https://www.v2ex.com/t/1206940", 
      "date_published": "2026-04-19T02:19:51+00:00", 
      "content_html": "<p>\u5927\u5bb6\u597d\u5440\uff0c\u6211\u662f Meng \u5c0f\u7fbd\u3002</p>\n<p>\u6700\u8fd1\u4e00\u76f4\u5728\u6298\u817e AI \u5de5\u4f5c\u6d41\uff0c\u7528 Hermes \u8fd9\u7c7b AI \u52a9\u624b\u8d8a\u7528\u8d8a\u6df1\uff0c\u624b\u91cc\u7684 skill \u6512\u4e86\u4e00\u5927\u5806\u2014\u2014\u8bf4\u767d\u4e86\u5c31\u662f\u4e00\u5806\"\u9047\u5230\u8fd9\u7c7b\u95ee\u9898\u8be5\u600e\u4e48\u505a\"\u7684\u64cd\u4f5c\u624b\u518c\u3002\u5199\u7740\u5199\u7740\u5c31\u53d1\u73b0\u4e00\u4e2a\u95ee\u9898\uff1a\u8fd9\u4e9b skill \u5168\u8eba\u5728\u672c\u5730\u5403\u7070\uff0c\u60f3\u627e\u4e2a\u5730\u65b9\u5c55\u793a\u51fa\u6765\uff0c\u641c\u4e86\u4e00\u5708\u4e5f\u6ca1\u627e\u5230\u5408\u9002\u7684\u73b0\u6210\u65b9\u6848\u3002</p>\n<p>\u884c\u5427\uff0c\u90a3\u5c31\u81ea\u5df1\u505a\u4e00\u4e2a\u3002</p>\n<p>\u4e8e\u662f\u5c31\u6709\u4e86 hugo-theme-skills \uff0c\u4e00\u4e2a\u4e13\u95e8\u7528\u6765\u505a skill \u548c\u5de5\u5177\u4ecb\u7ecd\u9875\u7684 Hugo \u4e3b\u9898\uff0c\u73b0\u5728\u5df2\u7ecf\u5f00\u6e90\u4e86\u3002</p>\n<p>\u5982\u679c\u7528\u4e00\u53e5\u8bdd\u6982\u62ec\u5b83\uff0c\u6211\u4f1a\u8bf4\uff1a\u8fd9\u4e0d\u662f\u5355\u7eaf\u7684\u4e3b\u9898\u76ae\u80a4\uff0c\u800c\u662f\u4e00\u4e2a\u300c\u6280\u80fd\u5361\u7247 + \u53ef\u4ea4\u4e92\u5de5\u5177\u9875 + \u53ef\u6269\u5c55\u63a7\u4ef6\u7cfb\u7edf\u300d\u4e09\u5408\u4e00\u7684\u5c0f\u6846\u67b6\u3002</p>\n<p>\u5982\u679c\u4f60\u624b\u91cc\u5df2\u7ecf\u6709\u4e00\u6279 AI skill \u3001\u5de5\u4f5c\u6d41\u811a\u672c\u6216\u8005\u5c0f\u5de5\u5177\uff0c\u60f3\u628a\u5b83\u4eec\u6574\u7406\u6210\u4e00\u4e2a\u80fd\u5c55\u793a\u3001\u80fd\u5b89\u88c5\u3001\u8fd8\u80fd\u76f4\u63a5\u4e92\u52a8\u4f53\u9a8c\u7684\u7ad9\u70b9\uff0c\u8fd9\u4e2a\u4e3b\u9898\u4f1a\u6bd4\u8f83\u9002\u5408\u4f60\u3002</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://webp.debuginn.com/20260418dE4G1Y.png\"/></p>\n<p><img alt=\"\u9996\u9875\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://webp.debuginn.com/20260418kl6pGt.jpg\"/></p>\n<ul>\n<li>Demo\uff1a<a href=\"https://skills.debuginn.com\" rel=\"nofollow\">ttps://skills.debuginn.com</a></li>\n<li>\u6211\u7684\u5de5\u5177\u7ad9\u70b9\uff1a<a href=\"https://tools.debuginn.com\" rel=\"nofollow\">https://tools.debuginn.com</a></li>\n<li>GitHub\uff1a<a href=\"https://github.com/debuginn/hugo-theme-skills\" rel=\"nofollow\">https://github.com/debuginn/hugo-theme-skills</a></li>\n</ul>\n<p>\u6b22\u8fce Star \uff0c\u6b22\u8fce\u63d0 Issue \uff0c\u4e5f\u6b22\u8fce\u76f4\u63a5 PR \u8fdb\u6765\u4e00\u8d77\u73a9\uff5e</p>\n<p>\u8be6\u7ec6\u6587\u7ae0\uff1a<a href=\"https://blog.debuginn.com/p/hugo-theme-skills/\" rel=\"nofollow\">\u5f00\u6e90\u4e86\u4e00\u4e2a Hugo \u4e3b\u9898\uff0c\u4e13\u95e8\u7528\u6765\u5c55\u793a AI Skill</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/bennydeng7", 
        "name": "bennydeng7", 
        "avatar": "https://cdn.v2ex.com/gravatar/ec39c02f7d279e1164378a4367b6b136?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1206129", 
      "title": "\u5bf9\u53bb\u6c34\u5370\u7684\u8ba8\u8bba", 
      "id": "https://www.v2ex.com/t/1206129", 
      "date_published": "2026-04-15T08:53:24+00:00", 
      "content_html": "<p>\u8fd9\u4e24\u5929\u6709\u51e0\u4e2a AI \u751f\u4ea7\u7684\u77ed\u89c6\u9891\u8981\u53bb\u6c34\u5370\uff0c\u6298\u817e\u4e86\u51e0\u4e2a\u65b9\u6848\uff1a1.\u526a\u5f71\u7684 AI \u53bb\u6c34\u5370(\u5145\u4e86\u4f1a\u5458)\uff0c\u6548\u679c\u4e5f\u8fd8\u5c06\u5c31\uff1b 2.\u662f\u7528\u526a\u5f71\u7684\u906e\u7f69\u529f\u80fd\uff1b 3.\u6211\u5728 github \u627e\u4e86\u4e00\u4e2a <a href=\"https://github.com/D-Ogi/WatermarkRemover-AI.git\" rel=\"nofollow\">https://github.com/D-Ogi/WatermarkRemover-AI.git</a> ; \u8fd9\u4e2a\u65b9\u6848 \u7528\u7684\u6a21\u578b\uff0c\u597d\u4e0d\u5bb9\u5668\u89e3\u51b3\u4e86\u4e00\u4e9b\u95ee\u9898\u540e\uff0c\u89c6\u9891\u53bb\u6c34\u5370 \u8f93\u51fa\u89c6\u9891\u5168\u9ed1\u4e86\uff0c\u4e0d\u592a\u4f1a\u7f16\u7801\uff0c\u6ca1\u7ee7\u7eed\u6df1\u5165\u7814\u7a76\u4e86\uff1b</p>\n<p>\u8bf7\u95ee\u5927\u5bb6\u6709\u4ec0\u4e48\u597d\u7684\u514d\u8d39\u53bb\u6c34\u5370\u7684\u65b9\u6848\u6ca1</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/evamayy", 
        "name": "evamayy", 
        "avatar": "https://cdn.v2ex.com/gravatar/8af853bd9f5aeb9d7dae7b2eaf89ff47?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1206014", 
      "title": "\u6709\u4ec0\u4e48\u6bd4\u8f83\u597d\u7684\u7ba1\u7406 skill \u7684\u5de5\u5177", 
      "id": "https://www.v2ex.com/t/1206014", 
      "date_published": "2026-04-15T03:23:41+00:00", 
      "content_html": "<p>\u672c\u5730\u7528 Claude \u548c codex \u5404\u5b89\u88c5\u4e86\u4e00\u4e9b skill \uff0c\u4f46\u662f\u611f\u89c9\u4e0d\u597d\u7ba1\u7406\uff0c\u800c\u4e14\u7248\u672c\u4e0d\u597d\u7ba1\u7406\n\u77e5\u9053 vercel \u6709\u4e00\u4e2a add-skill \uff0c\u597d\u50cf\u6ca1\u6709\u53ef\u89c6\u5316\u754c\u9762\n\u5927\u5bb6\u6709\u4ec0\u4e48\u63a8\u8350</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/bbroot", 
        "name": "bbroot", 
        "avatar": "https://cdn.v2ex.com/gravatar/f0b6c23d006e9840aff514318c0e915c?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1205766", 
      "title": "\u6709\u73a9 ai/\u9f99\u867e\u5199\u5c0f\u8bf4\u7684\u4e48\uff1f\u6413\u4e86\u4e2a\u5c0f\u8bf4 bug \u68c0\u67e5 skill", 
      "id": "https://www.v2ex.com/t/1205766", 
      "date_published": "2026-04-14T06:01:37+00:00", 
      "content_html": "<p>\u76f4\u63a5\u653e\u5730\u5740 <a href=\"https://github.com/bbroot/novel-bug-checker\" rel=\"nofollow\">https://github.com/bbroot/novel-bug-checker</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/tonyeasyai", 
        "name": "tonyeasyai", 
        "avatar": "https://cdn.v2ex.com/avatar/9b11/0c2b/675816_large.png?m=1729736646"
      }, 
      "url": "https://www.v2ex.com/t/1197656", 
      "date_modified": "2026-03-12T03:03:32+00:00", 
      "content_html": "<p>Ag tool \u4e00\u770b\uff0c\u5237\u65b0\u5468\u671f\u52a0\u5230\u4e86\u4e00\u5468\uff0c\u800c\u4e14\u4eca\u5929 gemini 3.1 \u660e\u663e\u964d\u667a\u4e25\u91cd</p>\n", 
      "date_published": "2026-03-12T03:03:00+00:00", 
      "title": "\u5927\u5584\u4eba\u53c8\u5f00\u6574\u4e86\u5417\uff0c\u964d\u667a+\u4e00\u5468\u4e00\u5237", 
      "id": "https://www.v2ex.com/t/1197656"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/OneOctet", 
        "name": "OneOctet", 
        "avatar": "https://cdn.v2ex.com/gravatar/4c34679b083988767fa11b15af640857?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1197177", 
      "date_modified": "2026-03-10T09:10:54+00:00", 
      "content_html": "\u6211\u662f\u540e\u7aef\u5f00\u53d1\uff0c\u73b0\u5728\u9700\u8981\u5904\u7406\u4e00\u4e9b\u6570\u636e\u7edf\u8ba1\u7684\u9700\u6c42\uff0c\u4e0d\u60f3\u5728\u4e1a\u52a1\u5e93\u8fdb\u884c\uff0c\u9700\u8981\u81ea\u5df1\u642d\u5efa\u6570\u4ed3\u3002<br />\u7edf\u8ba1\u9700\u6c42\uff0c\u90fd\u662f\u4e00\u4e9b\u7528\u6237\u8ba2\u5355\u6570\u636e\u7edf\u8ba1\uff0c\u7535\u5546\u8d22\u52a1\u62a5\u8868\u7b49\uff0c\u8ba2\u5355\u91cf\u5343\u4e07\u5de6\u53f3\uff0c\u6bcf\u65e5\u65b0\u589e 5w \u5de6\u53f3\u3002<br /><br />\u4f8b\u5982\u7edf\u8ba1\u6bcf\u4e2a\u7528\u6237\uff0c\u6bcf\u65e5\u4e0b\u5355\u6570\u91cf\u3002\u7528\u6237\u5728 3/9 \u4e0b\u4e86 3 \u5355\uff0c\u5219\u9700\u8981 t+1 \u7edf\u8ba1\u51fa\u4e00\u6761\u8bb0\u5f55<br />user_id = 123 date = 03/09 count = 3<br />\u5982\u679c 3 / 10 \u53f7\uff0c\u7528\u6237\u9000\u6b3e\u4e86 3 / 9 \u7684 1 \u4e2a\u8ba2\u5355\uff0c\u5219\u9700\u8981\u5237\u65b0\u8bb0\u5f55\u4e3a<br />user_id = 123 date = 03/09 count = 2<br /><br />\u7136\u540e\u5c31\u662f\u4e00\u4e9b\u5176\u4ed6\u7684\u7edf\u8ba1\u9700\u6c42\uff0c\u6bd4\u5982\u6bcf\u5929\u6bcf\u4e2a\u5546\u6237\u7684\u8425\u4e1a\u989d\uff0c\u8ba2\u5355\u6570\u4e4b\u7c7b\u7684\uff0c\u7ed3\u7b97\u62a5\u8868\u7b49<br /><br />\u8bf7\u95ee\u6570\u4ed3\u5e94\u8be5\u7528\u4ec0\u4e48\uff0c\u60f3\u7528\u5b9e\u65f6\u7684\u6570\u4ed3\uff0c\u76ee\u524d\u9009\u5b9a doris<br />\u4e86\u89e3\u4e86\u4e00\u4e0b\u6570\u4ed3\u4e00\u822c\u90fd\u662f\u5206\u5c42\u5904\u7406\u7684 ods -&gt; dwd -&gt; dws - ads<br /><br />ods \u5c42\u7684\u8868\u5e94\u8be5\u600e\u4e48\u5efa\uff1f\u6309\u4e1a\u52a1\u6570\u636e\u5e93\u4e00\u6837\u76f4\u63a5\u7167\u642c\u5417\uff1f<br />\u4f8b\u5982\u8ba2\u5355\u8868 order, \u8868\u6a21\u578b\u9009\u4ec0\u4e48\uff1f\u4e3b\u952e\u6a21\u578b\uff08 Unique Key Model \uff09\u5417\uff1f\u5206\u533a\u952e\u600e\u4e48\u9009\uff1f<br /><br />\u6709\u4eba\u6307\u6761\u660e\u8def\u5417\uff1f\u95ee AI \u7ed9\u7684\u65b9\u6848\u90fd\u662f\u6a21\u51cc\u4e24\u53ef\u7684\uff0c\u8fd8\u662f\u771f\u4eba\u6307\u5bfc\u4e00\u4e0b\u8e0f\u5b9e\u3002\u63d0\u524d\u611f\u8c22\u4e86", 
      "date_published": "2026-03-10T09:06:15+00:00", 
      "title": "\u6570\u636e\u7edf\u8ba1\u95ee\u9898\u8bf7\u6559\uff0c\u6570\u4ed3\u5927\u54e5\u8bf7\u8fdb\uff0c\u5e2e\u4e0a\u5fd9\u7684\u53ef\u4ee5\u53d1\u7ea2\u5305\u611f\u8c22\ud83d\ude4f", 
      "id": "https://www.v2ex.com/t/1197177"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JieyueXing", 
        "name": "JieyueXing", 
        "avatar": "https://cdn.v2ex.com/avatar/59da/4184/624907_large.png?m=1775884346"
      }, 
      "url": "https://www.v2ex.com/t/1195098", 
      "title": "\u4eca\u5e74\u5e94\u8be5\u662f Agent \u5de5\u7a0b\u5316\u4e4b\u5e74", 
      "id": "https://www.v2ex.com/t/1195098", 
      "date_published": "2026-03-02T02:04:00+00:00", 
      "content_html": "\u8fd9\u4e24\u5e74\u770b\u4f3c\u53d8\u5316\u5f88\u5927\u6982\u5ff5\u5c42\u51fa\u4e0d\u7a77\uff0c\u90fd\u662f\u56f4\u7ed5\u201c\u4eba\u7c7b\u8bed\u8a00\u7684\u63d0\u793a\u8bcd\u4e0e\u5927\u6a21\u578b\u4ea4\u4e92\u201d\uff0c\u201c\u5de5\u5177\u8c03\u7528\u4e0e\u6d41\u7a0b\u7f16\u6392\u201d\u6765\u5c55\u5f00\u7684\u3002<br /><br />\u4eca\u5e74\u4e0e\u53bb\u5e74\u7684\u672c\u8d28\u533a\u522b\uff0c\u8bf4\u7247\u9762\u4e9b\u5c31\u662f\u5927\u8bed\u8a00\u6a21\u578b\u7684 \u201c\u4e0a\u4e0b\u6587\u201d\uff0c\u201c\u9075\u5faa\u5ea6\u201d\uff0c\u201c\u811a\u624b\u67b6\u201d\uff0c\u201c\u6027\u4ef7\u6bd4\u201d \u6709\u4e86\u5f88\u5927\u7684\u63d0\u5347\uff0c\u4ee5\u6b64\u4e3a\u57fa\u7840\uff0c\u5927\u5bb6\u624d\u80fd\u5728\u201c\u63d0\u793a\u8bcd\u4ea4\u4e92\u201d\u4e0a\u96d5\u82b1\u3002<br /><br />\u53bb\u5e74\u662f Vibe Coding \u5e74\uff0c\u4eca\u5e74\u5e94\u8be5\u662f Agent \u5de5\u7a0b\u5316\u4e4b\u5e74\u3002\u4ece\u201c\u5199\u63d0\u793a\u8bcd\u7684\u62bd\u5956\u7f16\u7a0b\u201d\u5230\u201c\u591a\u6a21\u578b\u901a\u7528\u7684\u53ef\u89c2\u6d4b\u7f16\u6392\u201d\u3002\u7a0b\u5e8f\u5458\u7684\u6982\u5ff5\u4ece\u5355\u4e00\u5355\u8bed\u8a00\u7684\u7f16\u7801\u5458\u9010\u6e10\u8f6c\u53d8\u4e3a\u6709\u4ea7\u54c1\u601d\u7ef4\u4f1a\u64cd\u63a7\u591a\u6a21\u578b\u4e0e\u5de5\u5177\u7684\u5de5\u7a0b\u5e08\u3002<br /><br />AI \u662f\u4e2a\u4eba\u80fd\u529b\u7684\u6760\u6746\uff0c\u53ea\u80fd\u4ee5\u500d\u7387\u653e\u5927\u4f60\u7684\u8ba4\u77e5\u4e0e\u6267\u884c\u529b\uff0c\u4e0d\u4f1a\u51ed\u7a7a\u521b\u9020\u539f\u672c\u4e0d\u5b58\u5728\u7684\u4ef7\u503c\u3002\u76ee\u524d\u7684\u524d\u671f\u5e02\u573a\u4ee5\u538b\u7f29\u4eba\u529b\u548c\u65f6\u95f4\u6210\u672c\u6765\u8282\u7701\u4ef7\u503c\uff0c\u86cb\u7cd5\u8fd8\u662f\u90a3\u4e48\u5927\uff0c\u53ea\u4e0d\u8fc7\u6bcf\u4e2a\u4eba\u5403\u7684\u53d8\u5c11\u4e86\u3002\u77ed\u671f\u589e\u91cf\u4ef7\u503c\u6709\u9650\uff0c\u4ef7\u503c\u7ed3\u6784\u6b63\u5728\u91cd\u6392\u3002<br /><br />\u4e5f\u8bb8\u5728\u5ea6\u8fc7\u67d0\u4e2a\u666e\u901a\u7684\u5468\u4e8c\u4e4b\u540e\uff0c\u4e00\u5207\u90fd\u4f1a\u4e0d\u4e00\u6837\u4e86\u3002\u2014\u201c\u5947\u70b9\u5c06\u5728\u661f\u671f\u4e8c\u53d1\u751f\u201d"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JieyueXing", 
        "name": "JieyueXing", 
        "avatar": "https://cdn.v2ex.com/avatar/59da/4184/624907_large.png?m=1775884346"
      }, 
      "url": "https://www.v2ex.com/t/1195079", 
      "title": "skill \u662f\u4e0d\u662f\u7b97\u662f\u4e00\u4e2a\u6700\u5c0f\u7684\u4ea7\u54c1\u5355\u4f4d", 
      "id": "https://www.v2ex.com/t/1195079", 
      "date_published": "2026-03-02T01:24:27+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cyangbo", 
        "name": "cyangbo", 
        "avatar": "https://cdn.v2ex.com/gravatar/d10e1f9afc5a55b158459b51dce70e69?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1195054", 
      "title": "\u8bf7\u524d\u7aef\u5927\u4f6c\u63a8\u8350\u597d\u7528\u7684\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf\u7684\u524d\u7aef\u6a21\u7248\uff0c\u7ed9\u540e\u7aef\u5f00\u53d1\u4f7f\u7528", 
      "id": "https://www.v2ex.com/t/1195054", 
      "date_published": "2026-03-01T16:08:43+00:00", 
      "content_html": "<p>\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf\uff0c\u73b0\u5728\u8981\u627e\u4e00\u4e2a\u5f00\u6e90\u7684 vue \u8bed\u8a00\u7684\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf\u7684\u524d\u7aef\uff08\u540e\u7aef\u5f00\u53d1\u4eba\u5458\uff0c\u4f7f\u7528\u524d\u7aef vue \uff09</p>\n<p>\u6211\u76ee\u524d\u627e\u7684\u662f\uff1avue-pure-admin</p>\n<p>\u6709\u4ec0\u4e48\u522b\u7684\u6846\u67b6\u63a8\u8350\u5417\uff1f</p>\n<p>\u6700\u5927\u9700\u6c42\u662f\uff1a\u5bb9\u6613\u4e0a\u624b</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/anlitechnet", 
        "name": "anlitechnet", 
        "avatar": "https://cdn.v2ex.com/avatar/c1d8/cac5/790043_large.png?m=1771999156"
      }, 
      "url": "https://www.v2ex.com/t/1193905", 
      "title": "\u516c\u53f8\u8981\u91cd\u6784\u4e0b\u5e73\u53f0\u6280\u672f\u5e95\u5ea7\uff0c\u9009\u5f00\u6e90\u7684\u54ea\u4e2a\u597d", 
      "id": "https://www.v2ex.com/t/1193905", 
      "date_published": "2026-02-25T02:32:19+00:00", 
      "content_html": "<p>Java \u8bed\u8a00\u7684\uff0c\u65e2\u6709\u7684\u5e73\u53f0\u6280\u672f\u5e95\u5ea7\u6bd4\u8f83\u65e7\u4e86\uff0cjdk8 \u7684\uff0c\u73b0\u5728\u8981\u5168\u9762\u5347\u7ea7\u4e3a jdk17 \u7684\uff0c\u81ea\u7814\u7684\u8bdd\u65f6\u95f4\u6765\u4e0d\u53ca\u4e86\u3002\u8981\u5feb\u901f\u51fa\u4ea7\u54c1</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/airhunter", 
        "name": "airhunter", 
        "avatar": "https://cdn.v2ex.com/gravatar/ead0d8be0cbd8eb16ae96b4d0127cf25?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1190605", 
      "title": "MacOS \u4e0a\u4f7f\u7528 oh-my-opencode \u667a\u80fd\u4f53\u7f3a\u5c11\u6700\u65b0\u7684\uff0c\u6c42\u52a9", 
      "id": "https://www.v2ex.com/t/1190605", 
      "date_published": "2026-02-04T02:27:16+00:00", 
      "content_html": "<p>\u6211\u73b0\u5728\u9047\u5230\u4e2a\u8be1\u5f02\u73b0\u8c61\u3002windows \u4e0a\u7684 opencode \u6253\u5f00\u53ef\u4ee5\u7528 tab \u5207 Sisyphus \uff0cPrometheus \u3001Hephaestus\u2026\u2026\n\u4f46\u5728 mac \u4e0a\uff0cTab \u5207\u6362\u53ea\u6709 Sisyphus \u548c Planner-Sisyphus \u4e24\u4e2a\u3002</p>\n<p>\u4e24\u8fb9 Opencode \u7248\u672c\u4e00\u81f4\uff0c\u90fd\u662f\u6700\u65b0\u7684 1.1.50 \uff0coh-my-opencode \u4e3a 3.2.2</p>\n<p>\u914d\u7f6e\u6587\u4ef6\u4ece windows \u4e0a COPY \u4e86 opencode.json \u548c oh-my-opencode.json \u8986\u76d6 MacOS \u4e2d\u7684\u914d\u7f6e\u4e5f\u65e0\u6548\u3002</p>\n<p>BTW\uff1awindows \u4e0a opencode \u4e00\u76f4\u5728\u7528\uff0cmac \u4e0a\u6709\u534a\u4e2a\u6708\u6ca1\u7528\u4e86\uff0c\u6240\u4ee5\u7248\u672c\u90fd\u662f\u4eca\u5929\u5f00\u673a\u81ea\u5df1\u5347\u7ea7\u4e0a\u53bb\u7684\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JieyueXing", 
        "name": "JieyueXing", 
        "avatar": "https://cdn.v2ex.com/avatar/59da/4184/624907_large.png?m=1775884346"
      }, 
      "url": "https://www.v2ex.com/t/1188447", 
      "title": "AutoHotkey\uff1a\u975e\u5e38\u5bb9\u6613\u4e0a\u624b\u7684 Windows \u81ea\u52a8\u5316\u811a\u672c\u8bed\u8a00\u5de5\u5177", 
      "id": "https://www.v2ex.com/t/1188447", 
      "date_published": "2026-01-26T07:50:34+00:00", 
      "content_html": "<p>AutoHotkey (AHK) \u53ef\u4ee5\u7528\u6781\u5c11\u4ee3\u7801\u5b9e\u73b0 Windows \u70ed\u952e/\u7a97\u53e3/\u952e\u9f20/\u6587\u672c \u7b49\u5904\u7406\uff0c\u53ef\u8bfb\u6027\u548c\u7ef4\u62a4\u6027\u8f83\u5f3a\u3002</p>\n<p>\u5728 Windows \u4e0a\u53ef\u4ee5\u5feb\u901f\u5c06 .ahk \u811a\u672c\u5c01\u88c5\u6210 .exe \uff08\u4e5f\u53ef\u4ee5\u53cc\u51fb .ahk \u76f4\u63a5\u8fd0\u884c\uff0c\u6bd4 .cmd/.bat/.ps1 \u517c\u5bb9\u6027\u66f4\u5f3a\u66f4\u5bb9\u6613\u5206\u53d1\uff0c\u4e0d\u5bb9\u6613\u8e29 UTF-8 \u4e71\u7801\u7684\u5751\uff09\u3002\u4e0d\u719f\u6089\u7684\u4eba\u4e5f\u53ef\u901a\u8fc7 AI \u5feb\u901f\u642d\u5efa\u8d77\u4e00\u4e2a\u5e26 UI \u53ef\u5e38\u9a7b\u4efb\u52a1\u680f\u7684\u811a\u672c\u5de5\u5177\u3002</p>\n<p>\u4f7f\u7528\u573a\u666f\uff1a</p>\n<ul>\n<li>\u6bd4\u5982\u6700\u7b80\u5355\u7684\u8fde\u70b9\u5668\uff0c\u6216\u8005\u7c98\u8d34\u677f\u76d1\u542c\u4e8b\u4ef6\uff08\u901a\u8fc7 AI \u5728\u5f88\u77ed\u7684\u65f6\u95f4\u5185\u5c31\u53ef\u76f4\u63a5\u5b9e\u73b0\u4e0e\u4f7f\u7528\uff09\u3002</li>\n<li>\u6bd4\u5982\u201c\u76d1\u63a7 Outlook \u65b0\u90ae\u4ef6 \u2192 \u63d0\u53d6\u4e3b\u9898/\u53d1\u4ef6\u4eba/\u5185\u5bb9 \u2192 \u8c03\u7528 Webhook \u63a8\u9001\u5230\u98de\u4e66/\u9489\u9489\u201d\u3002</li>\n<li>\u6bd4\u5982\u5c01\u88c5\u6210 .exe \u4e4b\u540e\u901a\u8fc7 --\u5165\u53e3\u53c2\u6570 \u5207\u6362 windows \u81ea\u5e26\u7684\u8f93\u5165\u6cd5\u4e3a en/zh/jp \uff0c\u7136\u540e\u5728 Electron \u6216 Tauri \u4e2d\u4e0e\u524d\u7aef\u8f93\u5165\u6846\u76d1\u542c\u4e8b\u4ef6\u8fdb\u884c\u7ed3\u5408\u8c03\u7528\uff0c\u9002\u7528\u4e8e\u5fc5\u987b\u5728\u7279\u5b9a\u7684\u8f93\u5165\u6846\u5207\u6362\u5bf9\u5e94\u7684\u8f93\u5165\u6cd5\u7684\u95ee\u9898\u3002\u4e5f\u53ef\u62d3\u5c55\u4e3a Node.js \u4e0e Windows \u539f\u751f\u63a5\u53e3\u7684\u7c98\u5408\u3002</li>\n</ul>\n<p>\u6587\u6863\uff08 v2 \uff0cAI \u53ef\u80fd\u66f4\u719f\u6089 v1 \u8bed\u6cd5\uff09\uff1a <a href=\"https://www.autohotkey.com/docs/v2/\" rel=\"nofollow\">https://www.autohotkey.com/docs/v2/</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/couture", 
        "name": "couture", 
        "avatar": "https://cdn.v2ex.com/avatar/b2ff/db77/659362_large.png?m=1764546479"
      }, 
      "url": "https://www.v2ex.com/t/1188089", 
      "title": "\u865a\u62df\u5316\u56fd\u4ea7 ZStack \u66ff\u6362 VMware \u4e2a\u4eba\u9047\u5230\u7684\u75db\u70b9", 
      "id": "https://www.v2ex.com/t/1188089", 
      "date_published": "2026-01-24T12:03:39+00:00", 
      "content_html": "<p>\u9996\u5148\u6211\u4e0d\u662f\u63a8\u9500\u4ea7\u54c1\uff0c\u5c31\u662f\u5355\u7eaf\u7684\u5206\u4eab\uff0c\u6211\u5728\u56fd\u4ea7\u5316\u865a\u62df\u5316\u66ff\u4ee3\u4e2d\u4f7f\u7528 zstack \u66ff\u6362 VMware \u9047\u5230\u7684\u95ee\u9898\uff0c\u4e0d\u77e5\u9053\u5404\u4f4d\u5927\u4f6c\u5982\u4f55\u89e3\u51b3\u8fd9\u4e9b\u75db\u70b9\u3002\n1.drs \u4e0d\u540c cpu \u4e4b\u95f4\u4e0d\u53ef\u7528\n2.\u4e0d\u80fd\u6279\u91cf\u70ed\u8fc1\u79fb\n3.\u9875\u9762\u5237\u65b0\u975e\u5e38\u62bd\u8c61\uff0c\u4e00\u4f1a\u513f\u6b63\u5e38\uff0c\u4e00\u4f1a\u513f\u4e0d\u6b63\u5e38\n4.\u865a\u62df\u673a\u5173\u673a\u6216\u8005\u662f\u91cd\u542f\u4ee5\u540e\u9700\u8981\u624b\u52a8\u540c\u6b65\u4e0b\u53d1 IP</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/JieyueXing", 
        "name": "JieyueXing", 
        "avatar": "https://cdn.v2ex.com/avatar/59da/4184/624907_large.png?m=1775884346"
      }, 
      "url": "https://www.v2ex.com/t/1186317", 
      "title": "\u6280\u672f\u6808\u9996\u8d34\uff1a\u5929\u4e0b\u98ce\u4e91\u51fa\u6211\u8f88\uff0c\u4e00\u5165\u6c5f\u6e56\u5c81\u6708\u50ac", 
      "id": "https://www.v2ex.com/t/1186317", 
      "date_published": "2026-01-16T11:38:30+00:00", 
      "content_html": "<blockquote>\n<p>\u5929\u4e0b\u98ce\u4e91\u51fa\u6211\u8f88\uff0c\u4e00\u5165\u6c5f\u6e56\u5c81\u6708\u50ac\u3002<br/>\n\u7687\u56fe\u9738\u4e1a\u8c08\u7b11\u4e2d\uff0c\u4e0d\u80dc\u4eba\u751f\u4e00\u573a\u9189\u3002  </p>\n</blockquote>\n<p><strong>Flash \u65f6\u4ee3 \u4e00\u4e2a\u4eba\u3001\u4e00\u53f0\u7535\u8111\u3001\u5c31\u80fd\u628a\u8111\u5b50\u91cc\u7684\u6c5f\u6e56\u505a\u51fa\u6765\u3002</strong> </p>\n<p>\u65e9\u671f\u201c\u72ec\u7acb\u5f00\u53d1\u8005\u201d\u534a\u74f6\u795e\u4ed9\u918b\u7684\u300a\u91d1\u5eb8\u7fa4\u4fa0\u4f20 2/3 \u300b\u7b97\u662f\u6211\u513f\u65f6\u7684\u4e00\u4ee3\u795e\u4f5c\u4e4b\u4e00\u3002<br/>\n\u6700\u8fd1\u7684\u65b0\u4f5c\u300a\u5927\u4fa0\u7acb\u5fd7\u4f20\u300b\u4eff\u4f5b\u8ba9\u4eba\u68a6\u56de\u90a3\u4e2a\u5728 4399 \u5237\u5b58\u6863\u7684\u4e0b\u5348\u3002</p>\n<p>\u6280\u672f\u6808\u9996\u8d34\uff0c\u795d\u5927\u5bb6\u5728\u5404\u81ea\u7684\u9886\u57df\u91cc\uff0c\u6784\u5efa\u51fa\u5c5e\u4e8e\u81ea\u5df1\u7684\u6c5f\u6e56\u68a6\u3002</p>\n<p><img alt=\"jyqxz3\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/Q8hO20UU.jpeg\"/></p>\n"
    }
  ]
}