{"id":13447,"date":"2023-06-21T17:18:44","date_gmt":"2023-06-21T09:18:44","guid":{"rendered":"https:\/\/aif.amtbbs.org\/?p=13447"},"modified":"2023-06-21T17:18:44","modified_gmt":"2023-06-21T09:18:44","slug":"%e7%94%a8-gpt-4-%e5%88%9b%e5%bb%ba-vscode-%e6%8f%92%e4%bb%b6%ef%bc%8c%e6%88%91%e9%81%87%e5%88%b0%e7%9a%84%e5%85%ad%e4%b8%aa%e9%97%ae%e9%a2%98","status":"publish","type":"post","link":"https:\/\/aif.amtbbs.org\/index.php\/2023\/06\/21\/13447\/","title":{"rendered":"\u7528 GPT-4 \u521b\u5efa VSCode \u63d2\u4ef6\uff0c\u6211\u9047\u5230\u7684\u516d\u4e2a\u95ee\u9898"},"content":{"rendered":"<p>\u6700\u8fd1\uff0c\u6211\u4e00\u76f4\u5728\u5c1d\u8bd5\u4f7f\u7528\u8bed\u8a00\u6a21\u578b\uff08LLM\uff09\u6765\u7f16\u5199\u4ee3\u7801\u3002\u6211\u53d1\u73b0\u5b83\u4eec\u975e\u5e38\u64c5\u957f\u751f\u6210\u5c0f\u800c\u5b8c\u6574\u7684\u4ee3\u7801\u7247\u6bb5\u3002\u4e0d\u5e78\u7684\u662f\uff0c\u5982\u679c\u9700\u8981\u751f\u6210\u66f4\u591a\u7684\u4ee3\u7801\uff0c\u5c31\u9700\u8981\u4eba\u7c7b\u8bc4\u4f30 LLM \u7684\u8f93\u51fa\uff0c\u5e76\u63d0\u4f9b\u9002\u5f53\u7684\u540e\u7eed\u63d0\u793a\uff0c\u8fdb\u884c\u4f18\u5316\uff0c\u4e4b\u540e\u624d\u53ef\u4ee5\u4f7f\u7528\u3002<\/p>\n<p>\u76ee\u524d\uff0c\u5927\u90e8\u5206\u201cGPT \u5199\u4e86 X\u201d\u7684\u6848\u4f8b\u90fd\u662f\u5982\u6b64\u2014\u2014\u4eba\u7c7b\u5145\u5f53 LLM \u7684 REPL\uff08Read-Eval-Print Loop\uff0c\u8bfb\u53d6-\u6c42\u503c-\u8f93\u51fa\u5faa\u73af\uff09\uff0c\u4ed4\u7ec6\u5f15\u5bfc\u5927\u6a21\u578b\u4ea7\u751f\u529f\u80fd\u6027\u7684\u7ed3\u679c\u3002\u8fd9\u5e76\u4e0d\u662f\u8d2c\u4f4e\u8fd9\u4e2a\u8fc7\u7a0b\u7684\u610f\u601d\u2014\u2014\u5b83\u7684\u53ef\u884c\u6027\u5b9e\u5219\u4ee4\u4eba\u60ca\u53f9\u3002\u4f46\u6211\u4eec\u80fd\u5426\u8fdb\u4e00\u6b65\u5462\uff1f\u6211\u4eec\u80fd\u5426\u4f7f\u7528 LLM \u4e00\u6b21\u6027\u751f\u6210\u590d\u6742\u7a0b\u5e8f\u7684\u6240\u6709\u4ee3\u7801\uff0c\u800c\u65e0\u9700\u4efb\u4f55\u4eba\u7c7b\u4ecb\u5165\u5462\uff1f<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u7f16\u5199\u4e00\u4e2a VSCode \u6269\u5c55<\/strong><\/p>\n<p>\u4e3a\u4e86\u6d4b\u8bd5 GPT-4 \u751f\u6210\u590d\u6742\u7a0b\u5e8f\u7684\u80fd\u529b\uff0c\u6211\u8ba9\u5b83\u521b\u5efa\u4e00\u4e2a VSCode \u6269\u5c55\uff0c\u5141\u8bb8\u7528\u6237\u80fd\u591f\u8c03\u6574\u9009\u5b9a\u7684 Markdown \u6587\u672c\u7684\u6807\u9898\u7ea7\u522b\u3002\u8fd9\u4e2a\u4efb\u52a1\u9700\u8981\uff1a<\/p>\n<ul class=\"list-paddingleft-1\">\n<li>\u9488\u5bf9\u5982\u4f55\u642d\u5efa\u548c\u5c06\u7a0b\u5e8f\u516c\u5f00\u7ed9 VSCode \u7684\u9886\u57df\u7279\u5b9a\u77e5\u8bc6<\/li>\n<li>\u6df7\u5408\u4f7f\u7528\u591a\u79cd\u8bed\u8a00\u548c\u5e73\u53f0\uff1aVSCode \u6269\u5c55\u662f\u4f7f\u7528 TypeScript \u7f16\u5199\u7684\uff0c\u9700\u8981\u7f16\u5199TypeScript\u3001Node.js \u548c VSCode \u7684\u914d\u7f6e<\/li>\n<li>\u751f\u6210\u591a\u4e2a\u6587\u4ef6<\/li>\n<li>\u751f\u6210\u7528\u4e8e\u8c03\u8bd5\u3001\u6784\u5efa\u548c\u8fd0\u884c\u4ee3\u7801\u7684\u811a\u624b\u67b6<\/li>\n<\/ul>\n<p><strong>\u8bbe\u7f6e<\/strong><\/p>\n<p>\u5728\u8fd9\u4e2a\u5b9e\u9a8c\u4e2d\uff0c\u6211\u4f7f\u7528 GPT-4 \u8fdb\u884c\u6240\u6709\u7684\u751f\u6210\u4efb\u52a1\u3002\u6211\u53d1\u73b0 GPT-4 \u5728\u5f53\u4eca\u7684\u6a21\u578b\u4e2d\u6548\u679c\u6700\u597d\u3002<\/p>\n<p>\u6b64\u5916\uff0c\u6211\u4f7f\u7528\u4e86\u5f00\u6e90\u7684 smol-ai \u6846\u67b6\u6765\u751f\u6210\u4ee3\u7801\u3002<\/p>\n<p>smol-ai \u5728 README \u4e2d\u7684\u63cf\u8ff0\u5982\u4e0b\uff1a<\/p>\n<p>\u8fd9\u662f\u4e00\u4e2a\u201c\u521d\u7ea7\u5f00\u53d1\u4eba\u5458\u201d\u4ee3\u7406\uff08\u4e5f\u79f0\u4e3a smol dev\uff09\u7684\u539f\u578b\uff0c\u4e00\u65e6\u4f60\u7ed9\u5b83\u4e00\u4e2a\u4ea7\u54c1\u89c4\u8303\uff0c\u5b83\u5c31\u80fd\u4e3a\u4f60\u642d\u5efa\u6574\u4e2a\u4ee3\u7801\u5e93\uff0c\u4f46\u5b83\u5e76\u4e0d\u4f1a\u8fc7\u5ea6\u627f\u8bfa\u901a\u7528\u4eba\u5de5\u667a\u80fd\uff08AGI\uff09\u3002\u4e0e\u521b\u5efa\u7279\u5b9a\u3001\u56fa\u5b9a\u3001\u4e00\u6b21\u6027\u7684\u542f\u52a8\u5668\uff08\u5982 create-react-app \u6216 create-nextjs-app\uff09\u4e0d\u540c\uff0c\u8fd9\u57fa\u672c\u4e0a\u662f\u4e00\u4e2a\u521b\u5efa\u4efb\u4f55\u5e94\u7528\u7684\u6846\u67b6\uff0c\u4f60\u53ef\u4ee5\u4e0e smol dev \u7d27\u5bc6\u5faa\u73af\u5f00\u53d1\u3002<\/p>\n<p>\u6211\u559c\u6b22 smol-ai \u7684\u7b80\u6d01\u6027\u3002\u6574\u4e2a\u4ee3\u7801\u751f\u6210\u903b\u8f91\u90fd\u5728\u4e00\u4e2a\u5305\u542b\u4e09\u4e2a\u4e3b\u8981\u51fd\u6570\u7684\u5355\u4e2a Python \u6587\u4ef6\u4e2d\uff1a<\/p>\n<ol class=\"list-paddingleft-1\">\n<li>\u751f\u6210\u6267\u884c\u63d0\u793a\u6240\u9700\u7684\u6587\u4ef6\u5217\u8868\uff08\u4f8b\u5982 package.json\u3001index.js \u7b49\uff09\u3002<\/li>\n<li>\u751f\u6210\u6267\u884c\u63d0\u793a\u6240\u9700\u7684\u5171\u4eab\u4f9d\u8d56\u5217\u8868\uff08\u4f8b\u5982 axios\u3001react \u7b49\uff09\u3002<\/li>\n<li>\u5bf9\u4e8e\u751f\u6210\u7684\u6587\u4ef6\u5217\u8868\u4e2d\u7684\u6bcf\u4e2a\u6587\u4ef6\uff0c\u751f\u6210\u5e94\u8be5\u653e\u5165\u6587\u4ef6\u4e2d\u7684\u4ee3\u7801\uff0c\u5982\u679c\u9002\u7528\u7684\u8bdd\uff0c\u4f7f\u7528\u5171\u4eab\u4f9d\u8d56\u3002<\/li>\n<\/ol>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0csmol-ai \u8fd8\u63d0\u4f9b\u5176\u4ed6\u529f\u80fd\uff0c\u6bd4\u5982\u80fd\u591f\u8c03\u8bd5\u9519\u8bef\u548c\u6839\u636e\u5f53\u524d\u4ee3\u7801\u5e93\u751f\u6210\u63d0\u793a\u3002\u8fd9\u4e9b\u5728\u672c\u6587\u4e2d\u6ca1\u6709\u5c55\u5f00\u6765\u8bb2\u3002<\/p>\n<p><strong>Prompt<\/strong><\/p>\n<p>\u6211\u5148\u57fa\u4e8e\u7ed9\u51fa\u4e00\u6bb5\u63d0\u793a\u8bed\uff0c\u6765\u63cf\u8ff0\u6211\u7684\u95ee\u9898\uff1a<\/p>\n<pre>python main_no_modal.py \"a vscode extension that lets the user adjust the heading level of the selected text. it should have three commands: increase heading level, decrease heading level, and set heading level\"<\/pre>\n<p>\u8bf7\u6ce8\u610f\uff0c\u8fd9\u4e2a\u63d0\u793a\u662f\u7b80\u77ed\u4e14\u6982\u8ff0\u95ee\u9898\u6709\u4e9b\u7b3c\u7edf\u3002\u6211\u60f3\u770b\u770b GPT \u5728\u6ca1\u6709\u8f93\u5165\u4efb\u4f55\u989d\u5916\u7684\u7ec6\u8282\u6216\u8d85\u51fa\u8bad\u7ec3\u96c6\u4e2d\u7279\u5b9a\u9886\u57df\u77e5\u8bc6\u7684\u60c5\u51b5\u4e0b\uff0c\u80fd\u505a\u5f97\u591a\u597d\u3002<\/p>\n<p><strong>\u8f93\u51fa<\/strong><\/p>\n<p>\u7cfb\u7edf\u82b1\u8d39\u51e0\u5206\u949f\u751f\u6210\u4ee3\u7801\u540e\uff0csmol-ai \u521b\u5efa\u4e86\u4ee5\u4e0b\u6587\u4ef6\uff1a<\/p>\n<section>\n<pre><code>.\r\n\u251c\u2500\u2500\u00a0extension\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0package.json\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0src\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0commands\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0decreaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0increaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0setHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0extension.ts\r\n\u2514\u2500\u2500\u00a0shared_dependencies.md\r\n<\/code><\/pre>\n<\/section>\n<p>\u8bf7\u6ce8\u610f\uff0cshared_dependencies.md \u7684\u521b\u5efa\u662f\u4f5c\u4e3a\u5bf9\u5171\u540c\u4f9d\u8d56\u7684\u6700\u4f73\u731c\u6d4b\u3002\u5728\u6211\u4eec\u7684\u4f8b\u5b50\u4e2d\uff0c\u5b83\u521b\u5efa\u4e86\u4e00\u4e2a\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<section>\n<pre><code>the\u00a0app\u00a0is:\u00a0a\u00a0vscode\u00a0extension\u00a0that\u00a0lets\u00a0the\u00a0user\u00a0adjust\u00a0the\u00a0heading\u00a0level\u00a0of\u00a0the\u00a0selected\u00a0text.\u00a0it\u00a0should\u00a0have\u00a0three\u00a0commands:\u00a0increase\u00a0heading\u00a0level,\u00a0decrease\u00a0heading\u00a0level,\u00a0and\u00a0set\u00a0heading\u00a0level\r\n\r\nthe\u00a0files\u00a0we\u00a0have\u00a0decided\u00a0to\u00a0generate\u00a0are:\u00a0tsconfig.json,\u00a0package.json,\u00a0utils.ts,\u00a0extension.ts\r\n\r\nShared\u00a0dependencies:\r\n\r\n1.\u00a0Exported\u00a0variables:\r\n\u00a0\u00a0\u00a0-\u00a0adjustHeadingLevel\u00a0(from\u00a0utils.ts)\r\n\r\n2.\u00a0Data\u00a0schemas:\r\n\u00a0\u00a0\u00a0-\u00a0None\r\n\r\n3.\u00a0ID\u00a0names\u00a0of\u00a0DOM\u00a0elements:\r\n\u00a0\u00a0\u00a0-\u00a0None\r\n\r\n4.\u00a0Message\u00a0names:\r\n\u00a0\u00a0\u00a0-\u00a0None\r\n\r\n5.\u00a0Function\u00a0names:\r\n\u00a0\u00a0\u00a0-\u00a0increaseHeadingLevel\r\n\u00a0\u00a0\u00a0-\u00a0decreaseHeadingLevel\r\n\u00a0\u00a0\u00a0-\u00a0setHeadingLevel\r\n\r\n6.\u00a0Dependencies:\r\n\u00a0\u00a0\u00a0\u00a0-\u00a0None\r\n<\/code><\/pre>\n<\/section>\n<p>&nbsp;<\/p>\n<p><strong>\u4ee3\u7801<\/strong><\/p>\n<p>extension.ts \u662f\u5f00\u53d1\u4e00\u4e2a VSCode \u6269\u5c55\u7684\u5165\u53e3\u70b9\u3002\u5728\u8fd9\u4efd\u6587\u4ef6\u4e2d\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86\u6307\u5b9a\u7684\u4e09\u4e2a\u547d\u4ee4\u3002<\/p>\n<section>\n<pre><code>import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\nimport\u00a0{\u00a0increaseHeadingLevel\u00a0}\u00a0from\u00a0'.\/commands\/increaseHeadingLevel';\r\nimport\u00a0{\u00a0decreaseHeadingLevel\u00a0}\u00a0from\u00a0'.\/commands\/decreaseHeadingLevel';\r\nimport\u00a0{\u00a0setHeadingLevel\u00a0}\u00a0from\u00a0'.\/commands\/setHeadingLevel';\r\n\r\nexport\u00a0function\u00a0activate(context:\u00a0vscode.ExtensionContext)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0context.subscriptions.push(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.increaseHeadingLevel',\u00a0increaseHeadingLevel),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.decreaseHeadingLevel',\u00a0decreaseHeadingLevel),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.setHeadingLevel',\u00a0setHeadingLevel)\r\n\u00a0\u00a0\u00a0\u00a0);\r\n}\r\n\r\nexport\u00a0function\u00a0deactivate()\u00a0{}\r\n<\/code><\/pre>\n<\/section>\n<p>\u4e0b\u9762\u662f decreaseHeadingLevel.ts \u4e2d\u7684\u903b\u8f91\uff1a<\/p>\n<section>\n<pre><code>import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\n\r\nexport\u00a0async\u00a0function\u00a0decreaseHeadingLevel()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0editor\u00a0=\u00a0vscode.window.activeTextEditor;\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0(!editor)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0document\u00a0=\u00a0editor.document;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0selection\u00a0=\u00a0editor.selection;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0selectedText\u00a0=\u00a0document.getText(selection);\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0headingRegex\u00a0=\u00a0\/^(#+)\\s(.*)$\/;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0match\u00a0=\u00a0selectedText.match(headingRegex);\r\n\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0(!match)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.window.showErrorMessage('Invalid\u00a0selection.\u00a0Please\u00a0select\u00a0a\u00a0heading\u00a0to\u00a0decrease\u00a0its\u00a0level.');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0currentLevel\u00a0=\u00a0match[1].length;\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0(currentLevel\u00a0===\u00a01)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.window.showErrorMessage('Cannot\u00a0decrease\u00a0heading\u00a0level.\u00a0Already\u00a0at\u00a0the\u00a0lowest\u00a0level.');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0newLevel\u00a0=\u00a0currentLevel\u00a0-\u00a01;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0newHeading\u00a0=\u00a0'#'.repeat(newLevel)\u00a0+\u00a0'\u00a0'\u00a0+\u00a0match[2];\r\n\r\n\u00a0\u00a0\u00a0\u00a0await\u00a0editor.edit((editBuilder)\u00a0=&gt;\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0editBuilder.replace(selection,\u00a0newHeading);\r\n\u00a0\u00a0\u00a0\u00a0});\r\n}<\/code><\/pre>\n<\/section>\n<p>\u8fd9\u6bb5\u4ee3\u7801\u68c0\u67e5\u4e00\u4e2a\u6d3b\u52a8\u7684\u7f16\u8f91\u5668\uff0c\u5982\u679c\u5b58\u5728\u7684\u8bdd\uff0c\u5c31\u4f1a\u83b7\u53d6\u9009\u5b9a\u7684\u6587\u672c\u5e76\u901a\u8fc7\u6b63\u5219\u8868\u8fbe\u5f0f\u5bfb\u627e\u4e00\u4e2a markdown \u6807\u9898\u3002\u5982\u679c\u627e\u5230\u4e00\u4e2a\u6807\u9898\uff0c\u5e76\u4e14\u5f53\u524d\u7684\u6807\u9898\u7ea7\u522b\u8fd8\u6ca1\u6709\u8fbe\u5230\u6700\u4f4e\u7ea7\u522b\uff0c\u5b83\u5c31\u4f1a\u964d\u4f4e\u6807\u9898\u7ea7\u522b\u3002<\/p>\n<p>\u4e4d\u4e00\u770b\uff0c\u8fd9\u4e2a\u903b\u8f91\u6ca1\u6709\u4ec0\u4e48\u4e0d\u59a5\u3002\u5b83\u6267\u884c\u547d\u4ee4\u5e76\u68c0\u67e5\u8fb9\u7f18\u60c5\u51b5\u3002\u5b83\u751a\u81f3\u63d0\u4f9b\u4e86\u6709\u7528\u7684\u9519\u8bef\u4fe1\u606f\uff0c\u8fd9\u5df2\u7ecf\u4f7f\u5b83\u9886\u5148\u4e8e\u5927\u591a\u6570\u4eba\u5de5\u751f\u6210\u7684\u7a0b\u5e8f&#8230;&#8230;<\/p>\n<p><strong>\u6d4b\u8bd5\u6269\u5c55<\/strong><\/p>\n<p>\u4e3a\u4e86\u6d4b\u8bd5\u8fd9\u4e2a\u6269\u5c55\uff0c\u6211\u4eec\u9700\u8981\u6210\u529f\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a<\/p>\n<p>1. \u5b89\u88c5\u4f9d\u8d56\u9879<\/p>\n<p>2. \u7f16\u8bd1\u4ee3\u7801<\/p>\n<p>3. \u8fd0\u884c\u6269\u5c55<\/p>\n<p><strong>\u7b2c\u4e00\u6b65\uff1a\u5b89\u88c5<\/strong><\/p>\n<p>\u6211\u4eec\u5728\u5c1d\u8bd5\u5b89\u88c5\u4f9d\u8d56\u9879\u65f6\u9047\u5230\u4e86\u7b2c\u4e00\u4e2a\u95ee\u9898\uff1a<\/p>\n<section>\n<pre><code>$\u00a0yarn\r\n\r\nCouldn't\u00a0find\u00a0any\u00a0versions\u00a0for\u00a0\"vscode-test\"\u00a0that\u00a0matches\u00a0\"^1.6.2\"\r\n?\u00a0Please\u00a0choose\u00a0a\u00a0version\u00a0of\u00a0\"vscode-test\"\u00a0from\u00a0this\u00a0list:\u00a0(Use\u00a0arrow\u00a0keys)\r\n\u276f\u00a01.6.1\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u95ee\u9898 1&#8211;\u627e\u4e0d\u5230 vscode-test<\/strong><\/p>\n<p>\u68c0\u67e5 package.json \u7684\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<section>\n<pre><code>{\r\n\u00a0\u00a0\"name\":\u00a0\"adjust-heading-level\",\r\n\u00a0\u00a0...\r\n\u00a0\u00a0\"engines\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"vscode\":\u00a0\"^1.62.0\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"devDependencies\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"@types\/node\":\u00a0\"^14.17.0\",\r\n\u00a0\u00a0\u00a0\u00a0\"@types\/vscode\":\u00a0\"^1.62.0\",\r\n\u00a0\u00a0\u00a0\u00a0\"typescript\":\u00a0\"^4.4.2\",\r\n\u00a0\u00a0\u00a0\u00a0\"vscode\":\u00a0\"^1.1.37\",\r\n\u00a0\u00a0\u00a0\u00a0\"vscode-test\":\u00a0\"^1.6.2\"\r\n\u00a0\u00a0},\r\n}\r\n<\/code><\/pre>\n<\/section>\n<p>vscode \u5f15\u64ce\u51b3\u5b9a\u4e86 vscode \u7684\u6700\u4f4e\u7248\u672c\u3002\u73b0\u5728\u7684\uff08\u622a\u81f3 2023-05-23\uff09\u5f15\u64ce\u7248\u672c\u662f 1.78\u30021.62.0 \u7248\u672c\u662f\u5728 2021 \u5e74 10 \u6708 21 \u65e5\u53d1\u5e03\u7684\u3002<\/p>\n<p>\u8fd9\u4e0e GPT-4 \u7684\u77e5\u8bc6\u622a\u6b62\u65e5\u671f\u76f8\u543b\u5408\uff1a<\/p>\n<p>GPT-4 \u901a\u5e38\u7f3a\u4e4f\u5bf9\u5176\u7edd\u5927\u90e8\u5206\u6570\u636e\u622a\u6b62\u65e5\u671f\uff082021\u5e749\u6708\uff09\u4e4b\u540e\u53d1\u751f\u7684\u4e8b\u4ef6\u7684\u77e5\u8bc6\u3002<\/p>\n<p>1.6.2 \u7684\u00a0vscode-test \u7248\u672c\u4e0e 1.62 \u5728\u6570\u5b57\u4e0a\u76f8\u5dee\u4e86\u4e00\u4e2a\u70b9\uff0c\u8fd9\u8868\u660e GPT \u5f88\u53ef\u80fd\u5bf9\u8fd9\u4e9b\u6570\u5b57\u4ea7\u751f\u4e86\u5e7b\u89c9\uff0c\u51fa\u73b0\u4e86\u9519\u8bef\u3002<\/p>\n<p>\u5728\u4efb\u4f55\u60c5\u51b5\u4e0b\uff0c\u8fd9\u5f88\u5bb9\u6613\u89e3\u51b3\uff0c\u53ea\u8981\u6307\u5b9a\u6b63\u786e\u7684\u7248\u672c\u53f7\uff0c\u5e76\u91cd\u65b0\u5b89\u88c5\uff0c\u5c31\u53ef\u4ee5\u4fee\u590d\uff1a<\/p>\n<section>\n<pre><code>-\u00a0\u00a0\u00a0\"vscode-test\":\u00a0\"^1.6.2\"\r\n+\u00a0\u00a0\u00a0\"vscode-test\":\u00a0\"^1.6.1\"\r\n<\/code><\/pre>\n<\/section>\n<p>\u6240\u4ee5\uff0c\u91cd\u65b0\u8fd0\u884c\u5b89\u88c5\u8fc7\u7a0b\uff0c\u7b2c\u4e8c\u6b21\u5c31\u6210\u529f\u4e86\u3002<\/p>\n<section>\n<pre><code>$\u00a0yarn\r\n\r\n...\r\n[3\/5]\u00a0\ud83d\ude9a\u00a0\u00a0Fetching\u00a0packages...\r\n[4\/5]\u00a0\ud83d\udd17\u00a0\u00a0Linking\u00a0dependencies...\r\n[5\/5]\u00a0\ud83d\udd28\u00a0\u00a0Building\u00a0fresh\u00a0packages...\r\n\u2728\u00a0\u00a0Done\u00a0in\u00a04.31s.\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u7b2c\u4e8c\u6b65\uff1a\u7f16\u8bd1\u6784\u5efa<\/strong><\/p>\n<p>\u7531\u4e8e Typescript \u662f\u4e00\u79cd\u7f16\u8bd1\u8bed\u8a00\uff0c\u6211\u4eec\u9700\u8981\u6267\u884c\u4e00\u4e2a\u6784\u5efa\u6b65\u9aa4\uff0c\u5c06\u4ee3\u7801\u7f16\u8bd1\u6210 Javascript\u3002package.json \u4e2d\u5e26\u6709\u4ee5\u4e0b\u811a\u672c\uff1a<\/p>\n<section>\n<pre><code>\"scripts\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"vscode:prepublish\":\u00a0\"npm\u00a0run\u00a0compile\",\r\n\u00a0\u00a0\u00a0\u00a0\"compile\":\u00a0\"tsc\u00a0-p\u00a0.\/\",\r\n\u00a0\u00a0\u00a0\u00a0\"watch\":\u00a0\"tsc\u00a0-watch\u00a0-p\u00a0.\/\",\r\n\u00a0\u00a0\u00a0\u00a0\"postinstall\":\u00a0\"node\u00a0.\/node_modules\/vscode\/bin\/install\",\r\n\u00a0\u00a0\u00a0\u00a0\"test\":\u00a0\"npm\u00a0run\u00a0compile\u00a0&amp;&amp;\u00a0node\u00a0.\/node_modules\/vscode\/bin\/test\"\r\n\u00a0\u00a0},\r\n<\/code><\/pre>\n<\/section>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u7f16\u8bd1\u811a\u672c\u6765\u6784\u5efa\u4ee3\u7801\u3002\u8fd9\u5c31\u662f\u6211\u4eec\u9047\u5230\u4e0b\u4e00\u4e2a\u95ee\u9898\u7684\u5730\u65b9\uff1a<\/p>\n<section>\n<pre><code>$\u00a0yarn\u00a0compile\r\nwarning\u00a0package.json:\u00a0No\u00a0license\u00a0field\r\nwarning\u00a0adjust-heading-level@0.1.0:\u00a0The\u00a0engine\u00a0\"vscode\"\u00a0appears\u00a0to\u00a0be\u00a0invalid.\r\n$\u00a0tsc\u00a0-p\u00a0.\/\r\nerror\u00a0TS5057:\u00a0Cannot\u00a0find\u00a0a\u00a0tsconfig.json\u00a0file\u00a0at\u00a0the\u00a0specified\u00a0directory:\u00a0'.\/'.\r\nerror\u00a0Command\u00a0failed\u00a0with\u00a0exit\u00a0code\u00a01.\r\ninfo\u00a0Visit\u00a0https:\/\/yarnpkg.com\/en\/docs\/cli\/run\u00a0for\u00a0documentation\u00a0about\u00a0this\u00a0command.\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u95ee\u98982 &#8211; \u627e\u4e0d\u5230 tsconfig.json \u6587\u4ef6<\/strong><\/p>\n<p>Typescript \u9700\u8981\u4e00\u4e2a tsconfig.json \u6587\u4ef6\u6765\u7f16\u8bd1\u6210 Javascript\u3002\u5982\u679c\u4f60\u8bb0\u5f97\u6211\u4eec\u6700\u521d\u7684\u6587\u4ef6\u5e03\u5c40\uff0c\u6ca1\u6709 tsconfig.json \u6587\u4ef6\u3002<\/p>\n<section>\n<pre><code>.\r\n\u251c\u2500\u2500\u00a0extension\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0package.json\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0src\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0commands\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0decreaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0increaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0setHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0extension.ts\r\n\u2514\u2500\u2500\u00a0shared_dependencies.md\r\n<\/code><\/pre>\n<\/section>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0\u914d\u7f6e\u5e76\u91cd\u65b0\u6784\u5efa\u6765\u8865\u6551\u8fd9\u4e2a\u95ee\u9898\u3002\u4f46\u73b0\u5728\u6211\u4eec\u9047\u5230\u4e86\u66f4\u591a\u7684\u95ee\u9898\uff1a<\/p>\n<section>\n<pre><code>$\u00a0tsc\u00a0--init\r\n$\u00a0yarn\u00a0compile\r\n\r\nsrc\/commands\/decreaseHeadingLevel.ts:1:25\u00a0-\u00a0error\u00a0TS2307:\u00a0Cannot\u00a0find\u00a0module\u00a0'vscode'\u00a0or\u00a0its\u00a0corresponding\u00a0type\u00a0declarations.\r\n\r\n1\u00a0import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0~~~~~~~~\r\n\r\nsrc\/commands\/decreaseHeadingLevel.ts:30:24\u00a0-\u00a0error\u00a0TS7006:\u00a0Parameter\u00a0'editBuilder'\u00a0implicitly\u00a0has\u00a0an\u00a0'any'\u00a0type.\r\n\r\n30\u00a0\u00a0\u00a0\u00a0\u00a0await\u00a0editor.edit((editBuilder)\u00a0=&gt;\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0~~~~~~~~~~~\r\n\r\nsrc\/commands\/increaseHeadingLevel.ts:1:25\u00a0-\u00a0error\u00a0TS2307:\u00a0Cannot\u00a0find\u00a0module\u00a0'vscode'\u00a0or\u00a0its\u00a0corresponding\u00a0type\u00a0declarations.\r\n\r\n...\r\n\r\nFound\u00a07\u00a0errors\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u95ee\u98983&#8211;\u627e\u4e0d\u5230\u6a21\u5757<\/strong><\/p>\n<p>Typescript \u627e\u4e0d\u5230\u00a0vscode \u6a21\u5757\u7684\u539f\u56e0\u662f\u6211\u4eec\u4f7f\u7528\u7684\u5bfc\u5165\u8bed\u53e5\u7684\u8bed\u6cd5\uff1a<\/p>\n<section>\n<pre><code>\/\/\u00a0this\u00a0is\u00a0failing\r\nimport\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\n\r\n\/\/\u00a0this\u00a0would\u00a0work\r\nimport\u00a0vscode\u00a0from\u00a0'vscode';\r\n<\/code><\/pre>\n<\/section>\n<p>\u8bed\u6cd5\u4e0d\u540c\u7684\u539f\u56e0\u6765\u81ea\u4e8e CommonJs \u548c ES \u6a21\u5757\u4e4b\u95f4\u7684\u5dee\u5f02\uff0c\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u5bfc\u51fa\u4f9d\u8d56\u5173\u7cfb\uff0c\u4ee5\u53ca Typescript \u5982\u4f55\u8f6c\u8bd1\u8fd9\u4e9b\u5bfc\u51fa\u3002\u6a21\u5757\u517c\u5bb9\u6027\u4e2d\u4ee4\u4eba\u6293\u72c2\u7684\u602a\u5f02\u73b0\u8c61\u672c\u8eab\u5c31\u53ef\u4ee5\u518d\u5199\u4e00\u7bc7\u535a\u6587\u6765\u8be6\u8ff0\u4e86\u3002\u53ea\u662f\u73b0\u5728\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5728 tsconfig.json \u4e2d\u7981\u7528 esModuleInterop \u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<section>\n<pre><code>@@\u00a0-71,7\u00a0+71,7\u00a0@@\r\n-\u00a0\u00a0\u00a0\u00a0\"esModuleInterop\":\u00a0true,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/*\u00a0Emit\u00a0additional\u00a0JavaScript\u00a0to\u00a0ease\u00a0support\u00a0for\u00a0importing\u00a0CommonJS\u00a0modules.\u00a0This\u00a0enables\u00a0'allowSyntheticDefaultImports'\u00a0for\u00a0type\u00a0compatibility.\u00a0*\/\r\n+\u00a0\u00a0\u00a0\u00a0\"esModuleInterop\":\u00a0false,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/*\u00a0Emit\u00a0additional\u00a0JavaScript\u00a0to\u00a0ease\u00a0support\u00a0for\u00a0importing\u00a0CommonJS\u00a0modules.\u00a0This\u00a0enables\u00a0'allowSyntheticDefaultImports'\u00a0for\u00a0type\u00a0compatibility.\u00a0*\/\r\n<\/code><\/pre>\n<\/section>\n<p>\u8bf7\u6ce8\u610f\uff0c\u4ece Typescript 4.4 \u5f00\u59cb\uff0cesModuleInterop \u9ed8\u8ba4\u6539\u4e3a true\u3002\u8fd9\u662f\u57282022 \u5e74 3 \u6708 15 \u65e5\u53d1\u5e03\u7684&#8211;\u5728 GPT-4 \u6240\u83b7\u5f97\u7684\u6700\u65b0\u77e5\u8bc6\u622a\u6b62\u65e5\u671f\u4e4b\u540e\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u518d\u6b21\u5c1d\u8bd5\u6784\u5efa\u3002\u8fd9\u6b21\u53ea\u6709\u4e00\u4e2a\u9519\u8bef\u4e86\uff1a<\/p>\n<section>\n<pre><code>$\u00a0yarn\u00a0compile\r\n\r\nsrc\/commands\/setHeadingLevel.ts:2:10\u00a0-\u00a0error\u00a0TS2305:\u00a0Module\u00a0'\"..\/extension\"'\u00a0has\u00a0no\u00a0exported\u00a0member\u00a0'adjustHeadingLevel'.\r\n\r\n2\u00a0import\u00a0{\u00a0adjustHeadingLevel\u00a0}\u00a0from\u00a0'..\/extension';\r\n\r\nFound\u00a01\u00a0error.\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u95ee\u9898 4 &#8211; \u6ca1\u6709\u5bfc\u5165\u7684\u51fd\u6570<\/strong><\/p>\n<p>\u8fd9\u6700\u540e\u4e00\u4e2a\u9519\u8bef\u6765\u81ea\u4e8e\u8bd5\u56fe\u5bfc\u5165\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u51fd\u6570\u3002<\/p>\n<p>\u5177\u4f53\u6765\u8bf4\uff0csetHeadingLevel.ts \u4e2d\u7684\u903b\u8f91\u5982\u4e0b\uff1a<\/p>\n<section>\n<pre><code>import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\nimport\u00a0{\u00a0adjustHeadingLevel\u00a0}\u00a0from\u00a0'..\/extension';\r\n\r\nexport\u00a0async\u00a0function\u00a0setHeadingLevel()\u00a0{\r\n\u00a0\u00a0...\r\n}\r\n<\/code><\/pre>\n<\/section>\n<p>GPT \u5f88\u5bb9\u6613\u5728\u58f0\u660e\u5176\u4f9d\u8d56\u5173\u7cfb\u65f6\u8868\u73b0\u5f97\u5f88\u4e50\u89c2\u3002\u5b83\u6709\u65f6\u4f1a\u8c03\u7528\u6216\u5bfc\u5165\u4e0d\u5b58\u5728\u7684\u51fd\u6570\u3002\u8fd9\u5c31\u662f\u5176\u4e2d\u7684\u4e00\u79cd\u60c5\u51b5\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5220\u9664\u4f9d\u8d56\u5173\u7cfb\u548c\u624b\u52a8\u6dfb\u52a0 setHeadingLevel \u4e2d\u7684\u903b\u8f91\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a<\/p>\n<section>\n<pre><code>@@\u00a0-1,5\u00a0+1,4\u00a0@@\r\n\u00a0import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\n-import\u00a0{\u00a0adjustHeadingLevel\u00a0}\u00a0from\u00a0'..\/extension';\r\n\r\n\u00a0export\u00a0async\u00a0function\u00a0setHeadingLevel()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0editor\u00a0=\u00a0vscode.window.activeTextEditor;\r\n@@\u00a0-14,6\u00a0+13,12\u00a0@@\u00a0export\u00a0async\u00a0function\u00a0setHeadingLevel()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.window.showErrorMessage('invalidSelection');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n+\u00a0\u00a0\u00a0\u00a0const\u00a0headingRegex\u00a0=\u00a0\/^(#+)\\s(.*)$\/;\r\n+\u00a0\u00a0\u00a0\u00a0const\u00a0match\u00a0=\u00a0selectedText.match(headingRegex);\r\n+\u00a0\u00a0\u00a0\u00a0if\u00a0(!match)\u00a0{\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.window.showErrorMessage('Invalid\u00a0selection.');\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n+\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0inputOptions:\u00a0vscode.InputBoxOptions\u00a0=\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0prompt:\u00a0'setHeadingLevelPrompt',\r\n@@\u00a0-31,6\u00a0+36,16\u00a0@@\u00a0export\u00a0async\u00a0function\u00a0setHeadingLevel()\u00a0{\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(headingLevel)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0newHeadingLevel\u00a0=\u00a0parseInt(headingLevel);\r\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0adjustHeadingLevel(editor,\u00a0selection,\u00a0selectedText,\u00a0newHeadingLevel);\r\n+\u00a0\u00a0\u00a0\u00a0\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0newHeading\u00a0=\u00a0'#'.repeat(newHeadingLevel)\u00a0+\u00a0'\u00a0'\u00a0+\u00a0match[2];\r\n+\u00a0\u00a0\u00a0\u00a0\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0await\u00a0editor.edit((editBuilder)\u00a0=&gt;\u00a0{\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0editBuilder.replace(selection,\u00a0newHeading);\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\r\n\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0}\r\n<\/code><\/pre>\n<\/section>\n<p>\u6ce8\u610f\uff0c\u5927\u90e8\u5206\u7684\u4ee3\u7801\u662f\u4ece decreaseHeadingLevel.ts \u4e2d\u63d0\u53d6\u7684\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u518d\u6b21\u6784\u5efa\u3002\u8fd9\u4e00\u6b21\uff0c\u5b83\u6210\u529f\u4e86 \ud83c\udf89<\/p>\n<section>\n<pre><code>$\u00a0tsc\u00a0-p\u00a0.\/\r\n\u2728\u00a0\u00a0Done\u00a0in\u00a00.80s.\r\n<\/code><\/pre>\n<\/section>\n<p>\u63a5\u4e0b\u6765\u5c31\u662f\u8fd0\u884c\u5566~~<\/p>\n<p><strong>\u7b2c\u4e09\u6b65\u2014\u2014\u8fd0\u884c<\/strong><\/p>\n<p>\u8bf7\u6ce8\u610f\uff0cGPT \u6ca1\u6709\u63d0\u4f9b\u5173\u4e8e\u5982\u4f55\u8fd0\u884c\u8be5\u6269\u5c55\u7684\u8bf4\u660e\u3002\u4e5f\u6ca1\u6709\u8bf4\u660e\u5982\u4f55\u5b89\u88c5\u6216\u6784\u5efa\u8be5\u6269\u5c55\u3002\u5982\u679c\u4f60\u4ee5\u524d\u6784\u5efa\u8fc7 vscode \u6269\u5c55\uff0c\u8fd9\u5f88\u7b80\u5355\uff0c\u4f46\u8fd9\u5bf9\u65b0\u4eba\u6765\u8bf4\u53ef\u80fd\u4f1a\u6709\u4e9b\u96be\u5ea6\u3002<\/p>\n<p>\u8fd0\u884c\u4e00\u4e2a VSCode \u6269\u5c55\u9700\u8981\u4f60\u53bb &#8220;\u8fd0\u884c\u548c\u8c03\u8bd5 &#8220;\u9762\u677f\uff0c\u5f53 extension.ts \u6587\u4ef6\u5728\u7f16\u8f91\u5668\u4e2d\u5904\u4e8e\u6253\u5f00\u72b6\u6001\u65f6\uff0c\u542f\u52a8 vscode \u6269\u5c55\u4efb\u52a1\u3002<\/p>\n<p><img decoding=\"async\" class=\"rich_pages wxw-img js_insertlocalimg js_img_placeholder wx_img_placeholder\" src=\"data:;base64,<?xml%20version='1.0'%20encoding='UTF-8'?><svg%20width='1px'%20height='1px'%20viewBox='0%200%201%201'%20version='1.1'%20xmlns='http:\/\/www.w3.org\/2000\/svg'%20xmlns:xlink='http:\/\/www.w3.org\/1999\/xlink'><title><\/title><g%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%20fill-opacity='0'><g%20transform='translate(-249.000000\" alt=\"\u56fe\u7247\" crossorigin=\"anonymous\" data-ratio=\"0.6342592592592593\" data-s=\"300,640\" data-type=\"jpeg\" data-w=\"1080\" data-src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Pn4Sm0RsAuiaj7lT6u6GDtDEKKibiawKyKS2icb1dFfvmJ0Yxp0GSY0pSEmh6E13sQ8cSYVusllB8t46xqMRS1erLg\/640?wx_fmt=jpeg&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" data-index=\"1\" \/><\/p>\n<p>\u8fd9\u542f\u52a8\u4e86\u4e00\u4e2a\u65b0\u7684 vscode \u7a97\u53e3\uff0c\u5b89\u88c5\u4e86\u6211\u4eec\u7684\u6269\u5c55\u3002\u5f53\u6211\u8bd5\u56fe\u8c03\u7528\u4e00\u4e2a\u547d\u4ee4\u65f6\uff0c\u8fd9\u4e5f\u4f1a\u51fa\u9519\u3002<\/p>\n<section>\n<pre><code>Command\u00a0'Increase\u00a0Heading\u00a0Level'\u00a0resulted\u00a0in\u00a0an\u00a0error\u00a0command\u00a0'adjust-heading-level.\u00a0'increaseHeadingLevel'\u00a0was\u00a0not\u00a0found\r\n<\/code><\/pre>\n<\/section>\n<p><strong>\u95ee\u9898 5\u2014\u2014\u627e\u4e0d\u5230\u547d\u4ee4<\/strong><\/p>\n<p>\u5f53\u547d\u4ee4\u5728 package.json \u4e2d\u58f0\u660e\u65f6\uff0cVSCode \u5c31\u4f1a\u77e5\u9053\u5b83\u4eec\u7684\u5b58\u5728\u3002<\/p>\n<p>\u6211\u4eec\u7684 package.json \u58f0\u660e\u4e86\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<section>\n<pre><code>\u00a0\"activationEvents\":\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.increaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.decreaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.setHeadingLevel\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0...\r\n\u00a0\u00a0\"contributes\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"commands\":\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.increaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Increase\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.decreaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Decrease\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.setHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Set\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0}<\/code><\/pre>\n<\/section>\n<p>\u5728 package.json \u4e2d\u58f0\u660e\u540e\uff0c\u8fd9\u4e9b\u547d\u4ee4\u4e5f\u9700\u8981\u5728\u6269\u5c55\u4e2d\u6ce8\u518c\u3002<\/p>\n<p>extension.ts\uff1a<\/p>\n<section>\n<pre><code>export\u00a0function\u00a0activate(context:\u00a0vscode.ExtensionContext)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0context.subscriptions.push(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.increaseHeadingLevel',\u00a0increaseHeadingLevel),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.decreaseHeadingLevel',\u00a0decreaseHeadingLevel),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.commands.registerCommand('extension.setHeadingLevel',\u00a0setHeadingLevel)\r\n\u00a0\u00a0\u00a0\u00a0);\r\n}\r\n<\/code><\/pre>\n<p>\u4f60\u770b\u5230\u8fd9\u4e2a\u95ee\u9898\u4e86\u5417\uff1f<\/p>\n<p>Typescript \u6587\u4ef6\u5c06\u547d\u4ee4\u58f0\u660e\u4e3a extension.{COMMAND}\uff0c\u4f46 package.json \u5c06\u5b83\u4eec\u58f0\u660e\u4e3a adjust-heading-level.{COMMAND}\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8c03\u6574 package.json \u4ee5\u5339\u914d\u4ee3\u7801\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002\u867d\u7136\u4fee\u590d\u672c\u8eab\u5f88\u7b80\u5355\uff0c\u4f46\u80fd\u591f\u6b63\u786e\u8bca\u65ad\u8fd9\u4e2a\u95ee\u9898\u9700\u8981\u4e00\u4e9b\u9886\u57df\u77e5\u8bc6\uff0c\u77e5\u9053\u5728\u54ea\u91cc\u5bfb\u627e\u3002<\/p>\n<\/section>\n<section>\n<pre><code>@@\u00a0-1,5\u00a0+1,5\u00a0@@\r\n\u00a0{\r\n\u00a0\u00a0\u00a0\"displayName\":\u00a0\"Adjust\u00a0Heading\u00a0Level\",\r\n\u00a0\u00a0\u00a0\"description\":\u00a0\"A\u00a0VSCode\u00a0extension\u00a0that\u00a0lets\u00a0the\u00a0user\u00a0adjust\u00a0the\u00a0heading\u00a0level\u00a0of\u00a0the\u00a0selected\u00a0text.\",\r\n\u00a0\u00a0\u00a0\"version\":\u00a0\"0.1.0\",\r\n@@\u00a0-10,23\u00a0+10,20\u00a0@@\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\"Other\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"activationEvents\":\u00a0[\r\n-\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.increaseHeadingLevel\",\r\n-\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.decreaseHeadingLevel\",\r\n-\u00a0\u00a0\u00a0\u00a0\"onCommand:adjust-heading-level.setHeadingLevel\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"main\":\u00a0\".\/src\/extension.js\",\r\n\u00a0\u00a0\u00a0\"contributes\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\"commands\":\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.increaseHeadingLevel\",\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"extension.increaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Increase\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.decreaseHeadingLevel\",\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"extension.decreaseHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Decrease\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"adjust-heading-level.setHeadingLevel\",\r\n+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"command\":\u00a0\"extension.setHeadingLevel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"title\":\u00a0\"Set\u00a0Heading\u00a0Level\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n<\/code><\/pre>\n<\/section>\n<p>\u6ce8\u610f\uff1a\u6211\u4e5f\u7528\u5b83\u6765\u5220\u9664\u6fc0\u6d3b\u4e8b\u4ef6\uff08activationEvents\uff09&#8211;\u8fd9\u4e9b\u51b3\u5b9a\u4e86 VSCode \u6269\u5c55\u89e6\u53d1\u5668\u4f55\u65f6\u6fc0\u6d3b\u3002\u5bf9\u4e8e\u57fa\u4e8e\u547d\u4ee4\u7684\u6fc0\u6d3b\uff0cVSCode \u73b0\u5728\u80fd\u591f\u81ea\u52a8\u68c0\u6d4b\u5b83\u4eec\uff0c\u56e0\u6b64\u4e0d\u518d\u9700\u8981\u624b\u52a8\u58f0\u660e\u4e86\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u518d\u8bd5\u7740\u8fd0\u884c\u5e76\u589e\u52a0 header \u7684\u7ea7\u522b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13452\" src=\"https:\/\/aiforumimage.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/2023\/06\/4ffce04d92a4d6cb21c1494cdfcd6dc1.gif\" width=\"1079\" height=\"697\" alt=\"\u56fe\u7247\" \/><\/p>\n<p>\u55ef\uff0c\u8fd9\u662f\u4e0d\u5e94\u8be5\u53d1\u751f\u7684<\/p>\n<p><strong>\u95ee\u98986&#8211;\u9012\u51cf\u7684\u589e\u52a0<\/strong><\/p>\n<p>\u6211\u4eec\u6ca1\u6709\u589e\u52a0 header\uff0c\u800c\u662f\u8ba9 header \u6c34\u5e73\u4e0b\u964d\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u770b\u4e00\u4e0b increateHeadingLevel.ts\uff1a<\/p>\n<section>\n<pre><code>import\u00a0*\u00a0as\u00a0vscode\u00a0from\u00a0'vscode';\r\n\r\nexport\u00a0async\u00a0function\u00a0increaseHeadingLevel()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0editor\u00a0=\u00a0vscode.window.activeTextEditor;\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0(!editor)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0document\u00a0=\u00a0editor.document;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0selection\u00a0=\u00a0editor.selection;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0selectedText\u00a0=\u00a0document.getText(selection);\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0headingRegex\u00a0=\u00a0\/^(#+)\\s(.*)$\/;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0match\u00a0=\u00a0selectedText.match(headingRegex);\r\n\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0(!match)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0vscode.window.showErrorMessage('Invalid\u00a0selection.\u00a0Please\u00a0select\u00a0a\u00a0valid\u00a0heading.');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0currentLevel\u00a0=\u00a0match[1].length;\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0newLevel\u00a0=\u00a0Math.max(1,\u00a0currentLevel\u00a0-\u00a01);\r\n\u00a0\u00a0\u00a0\u00a0const\u00a0newText\u00a0=\u00a0'#'.repeat(newLevel)\u00a0+\u00a0'\u00a0'\u00a0+\u00a0match[2];\r\n\r\n\u00a0\u00a0\u00a0\u00a0await\u00a0editor.edit((editBuilder)\u00a0=&gt;\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0editBuilder.replace(selection,\u00a0newText);\r\n\u00a0\u00a0\u00a0\u00a0});\r\n}\r\n<\/code><\/pre>\n<p>\u4f60\u770b\u5230\u8fd9\u4e2a\u95ee\u9898\u4e86\u5417\uff1f<\/p>\n<p>\u6709\u4e00\u4e2a\u7531\u5355\u4e2a\u5b57\u7b26\u5dee\u5f02\u5f15\u8d77\u7684\u9519\u8bef\u3002<\/p>\n<section>\n<pre><code>@@\u00a0-19,7\u00a0+19,7\u00a0@@\u00a0export\u00a0async\u00a0function\u00a0increaseHeadingLevel()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0currentLevel\u00a0=\u00a0match[1].length;\r\n-\u00a0\u00a0\u00a0\u00a0const\u00a0newLevel\u00a0=\u00a0Math.max(1,\u00a0currentLevel\u00a0-\u00a01);\r\n+\u00a0\u00a0\u00a0\u00a0const\u00a0newLevel\u00a0=\u00a0Math.max(1,\u00a0currentLevel\u00a0+\u00a01);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0const\u00a0newText\u00a0=\u00a0'#'.repeat(newLevel)\u00a0+\u00a0'\u00a0'\u00a0+\u00a0match[2];\r\n<\/code><\/pre>\n<\/section>\n<\/section>\n<p>\u8ba9\u6211\u4eec\u518d\u6b21\u7f16\u8bd1\u548c\u8fd0\u884c\u5b83\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13453\" src=\"https:\/\/aiforumimage.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/2023\/06\/4ffce04d92a4d6cb21c1494cdfcd6dc1-1.gif\" width=\"1079\" height=\"697\" alt=\"\u56fe\u7247\" \/><\/p>\n<p>\u597d\u4e86\uff0c\u6ca1\u95ee\u9898\u4e86\uff01<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u601d\u8003<\/strong><\/p>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u505a\u5f97\u600e\u4e48\u6837\uff1f\u6211\u4eec\u5f97\u5230\u4e86\u4e00\u4e2a\u6709\u6548\u7684\u6269\u5c55\u7a0b\u5e8f\uff0c\u4e5f\u5b8c\u6210\u6211\u4eec\u63d0\u793a\u4e2d\u8bbe\u5b9a\u7684\u76ee\u6807\u3002<\/p>\n<p>\u8fbe\u5230\u8fd9\u4e00\u70b9\u7684\u8fc7\u7a0b\u5e76\u4e0d\u662f &#8220;\u81ea\u52a8&#8221;\u7684\u3002\u4e00\u8def\u4e0a\u6211\u4eec\u9047\u5230\u4e86\u5f88\u591a\u95ee\u9898\u3002\u5982\u679c\u4e8b\u5148\u6ca1\u6709\u5bf9 Typescript\u3001Node.js \u548c VSCode \u6709\u4e00\u5b9a\u7684\u4e86\u89e3\uff0c\u8fd9\u4e9b\u95ee\u9898\u5c06\u9700\u8981\u82b1\u8d39\u4e00\u6bb5\u65f6\u95f4\u6765\u8c03\u8bd5\u3002<\/p>\n<p>\u800c\u4e14\uff0c\u5c3d\u7ba1\u6211\u4eec\u80fd\u591f\u751f\u6210\u5de5\u4f5c\u4ee3\u7801\uff0c\u4f46\u4ecd\u6709\u8bb8\u591a\u5730\u65b9\u9700\u8981\u6539\u8fdb\uff0c\u5982\uff1a<\/p>\n<ul class=\"list-paddingleft-1\">\n<li>\u6ca1\u6709\u5173\u4e8e\u5982\u4f55\u5f00\u53d1\u3001\u4f7f\u7528\u6216\u53d1\u5e03\u8be5\u6269\u5c55\u7684\u8bf4\u660e<\/li>\n<li>\u6ca1\u6709\u9488\u5bf9 Typecript\/javascript\/vscode \u5de5\u4ef6\u7684 .gitignore \u6587\u4ef6<\/li>\n<li>\u6ca1\u6709\u914d\u7f6e\u5f00\u53d1\u4e2d\u8fd0\u884c\u6269\u5c55\u7684 launch.json \u6587\u4ef6<\/li>\n<li>\u6ca1\u6709\u6d4b\u8bd5<\/li>\n<li>\u6ca1\u6709\u4ee3\u7801\u91cd\u7528<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>\u4e00\u4e9b\u7edf\u8ba1\u6570\u5b57<\/strong><\/p>\n<p>GPT \u751f\u6210\u4e86 9 \u4e2a\u6587\u4ef6\uff0c\u6db5\u76d6\u4e86\u7ea6 100 \u884c\u7684 Typescript\uff0c\u7ea6 180 \u884c\u7684 json\uff0c\u4ee5\u53ca 17 \u884c\u7684 Markdown\u3002<\/p>\n<section>\n<pre><code>$\u00a0cloc\u00a0--exclude-dir=node_modules,out\u00a0--not-match-f=package-lock.json\u00a0--not-match-f=prompt.md\u00a0--include-ext=ts,json,md\u00a0.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a015\u00a0text\u00a0files.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a013\u00a0unique\u00a0files.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a07\u00a0files\u00a0ignored.\r\n\r\ngithub.com\/AlDanial\/cloc\u00a0v\u00a01.92\u00a0\u00a0T=0.01\u00a0s\u00a0(986.5\u00a0files\/s,\u00a036610.4\u00a0lines\/s)\r\n-------------------------------------------------------------------------------\r\nLanguage\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0files\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0blank\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0comment\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0code\r\n-------------------------------------------------------------------------------\r\nJSON\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a08\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0181\r\nTypeScript\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a022\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a098\r\nMarkdown\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a08\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a017\r\n-------------------------------------------------------------------------------\r\nSUM:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a09\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a038\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0296\r\n-------------------------------------------------------------------------------\r\n<\/code><\/pre>\n<\/section>\n<p>\u6700\u7ec8\u7684\u6587\u4ef6\u6811\uff1a<\/p>\n<section>\n<pre><code>$\u00a0tree\u00a0--gitfile\u00a0extension\/.gitignore\r\n.\r\n\u251c\u2500\u2500\u00a0extension\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0package.json\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0src\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0commands\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0decreaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0increaseHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0setHeadingLevel.ts\r\n\u2502\u00a0\u00a0\u00a0\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0extension.ts\u00a0\r\n\u2502\u00a0\u00a0\u00a0\u251c\u2500\u2500\u00a0tsconfig.json\r\n\u2502\u00a0\u00a0\u00a0\u2514\u2500\u2500\u00a0yarn.lock\r\n\u251c\u2500\u2500\u00a0prompt.md\r\n\u2514\u2500\u2500\u00a0shared_dependencies.md\r\n<\/code><\/pre>\n<\/section>\n<p>\u5728\u751f\u6210\u7684\u7ea6 300 \u884c\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u4e0d\u5f97\u4e0d\u4fee\u6539\/\u6dfb\u52a0\u7ea6 18 \u884c\uff0c\u4ee5\u4f7f\u4e00\u5207\u6b63\u5e38\u5de5\u4f5c\u3002<\/p>\n<p><strong>\u7ecf\u9a8c\u4e4b\u8c08<\/strong><\/p>\n<p>GPT \u80fd\u591f\u4f7f\u7528\u4e00\u4e2a\u6ca1\u6709\u7279\u5b9a\u9886\u57df\u80cc\u666f\u7684\u4e0a\u4e0b\u6587\u63d0\u793a\u6765\u751f\u6210\u5927\u90e8\u5206\u4ee3\u7801\u3002<\/p>\n<p>\u6709\u4e9b\u4e8b\u60c5\u9700\u8981\u6ce8\u610f\uff1a<\/p>\n<ul class=\"list-paddingleft-1\">\n<li>GPT-4 \u5bf9\u5176\u7d22\u5f15\u4e2d\u7684\u4ee3\u7801\u505a\u5f97\u5f88\u597d\uff0c\u4f46\u5982\u679c\u5e95\u5c42\u89c4\u8303\u5728\u5176\u77e5\u8bc6\u50a8\u5907\u622a\u6b62\u65e5\u671f\uff082021\u5e749\u6708\uff09\u540e\u53d1\u751f\u4e86\u53d8\u5316\uff0c\u5219\u53ef\u80fd\u4f1a\u4ea7\u751f\u9519\u8bef\u7684\u903b\u8f91\u3002<\/li>\n<li>GPT-4 \u4f1a\u4ea7\u751f\u7ec6\u5fae\u7684 Bug\u3002\u5728 increateHeadingLevel.ts \u7684\u6848\u4f8b\u4e2d\uff0c\u5c31\u662f\u4e00\u4e2a\u5b57\u7b26\u7684\u5dee\u5f02\u5bfc\u81f4\u6269\u5c55\u505a\u4e86\u4e0e\u8be5\u547d\u4ee4\u5e94\u8be5\u505a\u7684\u5b8c\u5168\u76f8\u53cd\u7684\u4e8b\u60c5\u3002<\/li>\n<li>GPT-4 \u5728\u642d\u5efa\u6a21\u677f\u65b9\u9762\u975e\u5e38\u51fa\u8272\uff0c\u4f46\u9886\u57df\u7684\u4e13\u4e1a\u77e5\u8bc6\u4ecd\u7136\u5f88\u91cd\u8981\uff08\u76ee\u524d\uff09\u3002\u5f53\u5efa\u7acb\u5728 GPT-4 \u7684\u622a\u6b62\u65e5\u671f\u540e\u53d1\u751f\u53d8\u5316\u7684\u6280\u672f\u4e0a\u65f6\uff0c\u8fd9\u4e00\u70b9\u5c24\u5176\u771f\u5b9e\u3002<\/li>\n<li>GPT-4 \u4e3a\u7f16\u7a0b\u5f15\u5165\u4e86\u53e6\u4e00\u4e2a\u62bd\u8c61\u5c42\u3002\u6211\u4eec\u73b0\u5728\u6709 7 \u4e2a\u7ffb\u8bd1\u5c42\uff0c\u7528\u4e8e\u7f16\u5199 typescript\uff08\u5f53\u6d89\u53ca\u5230\u5bb9\u5668\u6216\u865a\u62df\u673a\u65f6\uff0c\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u589e\u52a0\u4e00\u500d\uff09\u3002<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"rich_pages wxw-img js_insertlocalimg js_img_placeholder wx_img_placeholder\" src=\"data:;base64,<?xml%20version='1.0'%20encoding='UTF-8'?><svg%20width='1px'%20height='1px'%20viewBox='0%200%201%201'%20version='1.1'%20xmlns='http:\/\/www.w3.org\/2000\/svg'%20xmlns:xlink='http:\/\/www.w3.org\/1999\/xlink'><title><\/title><g%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%20fill-opacity='0'><g%20transform='translate(-249.000000\" alt=\"\u56fe\u7247\" crossorigin=\"anonymous\" data-ratio=\"0.34629629629629627\" data-s=\"300,640\" data-src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/Pn4Sm0RsAuiaj7lT6u6GDtDEKKibiawKyKS45VKyo3qSGeD6f0jMWkM8c7sCbhboAKJ8dmJEpkicx6UtbJPY8Vaexg\/640?wx_fmt=png&amp;tp=wxpic&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" data-type=\"png\" data-w=\"1080\" data-index=\"4\" \/><\/p>\n<p><strong>\u672a\u6765\u7684\u65b9\u5411<\/strong><\/p>\n<p>\u6211\u5728\u6700\u521d\u7684\u5b9e\u9a8c\u4e2d\u4f7f\u7528\u4e86\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684\u63d0\u793a\uff0c\u5e76\u6ca1\u6709\u63d0\u4f9b\u989d\u5916\u7684\u80cc\u666f\u4fe1\u606f\uff0c\u8fd9\u610f\u5473\u7740\u6709\u5f88\u591a\u6539\u8fdb\u7684\u4f59\u5730\u3002\u8fd9\u662f\u63a5\u4e0b\u6765\u7684\u4e00\u4e9b\u6b65\u9aa4\u548c\u60f3\u6cd5\uff1a<\/p>\n<ul class=\"list-paddingleft-1\">\n<li>\u5728\u5c1d\u8bd5\u8fd0\u884c\u6269\u5c55\u65f6\u9047\u5230\u7684\u6bcf\u4e00\u4e2a\u95ee\u9898\uff0c\u5c06\u5176\u4f5c\u4e3a\u4e00\u4e2a\u7ec6\u8282\u5305\u542b\u5728 GPT \u7684\u63d0\u793a\u4e2d\uff0c\u4ee5\u5f15\u8d77\u6ce8\u610f\n<p>\u901a\u8fc7\u5bf9 VSCode\u00a0\u6269\u5c55\u6587\u6863\u8fdb\u884c\u7d22\u5f15\u548c\u603b\u7ed3\uff0c\u4ee5\u51cf\u8f7b\u00a0GPT \u5f53\u524d\u7d22\u5f15\u4e2d\u6ca1\u6709\u7684\u65b0\u4fe1\u606f\uff0c\u4ece\u800c\u63a8\u5e7f\u8fd9\u4e00\u505a\u6cd5\u3002<\/p>\n<p>\u63a2\u8ba8\u901a\u8fc7\u5c06\u80fd\u591f\u8bbf\u95ee\u5f53\u4eca\u7684\u4e0a\u4e0b\u6587\uff08\u5982Bard\uff09\u7684 LLM \u4e0e\u00a0GPT\u00a0\u94fe\u63a5\u6765\u5b9e\u73b0\u8fd9\u4e00\u76ee\u7684\u3002<\/li>\n<li>\u751f\u6210\u6d4b\u8bd5\u6765\u9a8c\u8bc1\u903b\u8f91\uff0c\u5e76\u5728\u6d4b\u8bd5\u5931\u8d25\u65f6\u8ba9 GPT \u81ea\u52a8\u7ea0\u6b63\u3002<\/li>\n<li>\u4e3a\u9ad8\u8d28\u91cf\u7684 VSCode \u6269\u5c55\u751f\u6210\u4e00\u4e2a\u68c0\u67e5\u8868\uff0c\u8ba9 GPT \u9a8c\u8bc1\u5e76\u81ea\u52a8\u7ea0\u6b63\u5b83\u751f\u6210\u7684\u5de5\u4ef6\u3002<\/li>\n<\/ul>\n<p>\u6ce8\u610f\uff1a\u6211\u5df2\u7ecf\u8fd0\u884c\u4e86\u8fd9\u4e9b\u6b65\u9aa4\u7684\u4e00\u90e8\u5206\uff0c\u5e76\u4e14\u80fd\u591f\u5728\u7b2c\u4e00\u4ee3\u4e2d\u4f7f\u9519\u8bef\u6570\u91cf\u4e3a\u96f6\u3002\u4f60\u53ef\u4ee5\u770b\u770b\u5b83\u662f\u5426\u53ef\u4ee5\u63a8\u5e7f\u5230\u5176\u4ed6\u6848\u4f8b\u4e2d\u3002<\/p>\n<p>\u4e5f\u6b22\u8fce\u5206\u4eab\u4f60\u4f7f\u7528 GPT-4 \u505a\u5f00\u53d1\u7684\u7ecf\u9a8c\u3002<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_13447\" class=\"pvc_stats total_only  \" data-element-id=\"13447\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/aif.amtbbs.org\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\uff0c\u6211\u4e00\u76f4\u5728\u5c1d\u8bd5\u4f7f\u7528\u8bed\u8a00\u6a21\u578b\uff08LLM\uff09\u6765\u7f16\u5199\u4ee3\u7801\u3002\u6211\u53d1\u73b0\u5b83\u4eec\u975e\u5e38\u64c5\u957f\u751f\u6210\u5c0f\u800c\u5b8c\u6574\u7684\u4ee3\u7801\u7247\u6bb5\u3002\u4e0d\u5e78\u7684\u662f\uff0c\u5982\u679c\u9700 [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_13447\" class=\"pvc_stats total_only  \" data-element-id=\"13447\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/aif.amtbbs.org\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":8,"featured_media":13452,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-13447","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"_links":{"self":[{"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/posts\/13447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/comments?post=13447"}],"version-history":[{"count":1,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/posts\/13447\/revisions"}],"predecessor-version":[{"id":13455,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/posts\/13447\/revisions\/13455"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/media\/13452"}],"wp:attachment":[{"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/media?parent=13447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/categories?post=13447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aif.amtbbs.org\/index.php\/wp-json\/wp\/v2\/tags?post=13447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}