{"id":696,"date":"2026-07-17T06:05:29","date_gmt":"2026-07-16T22:05:29","guid":{"rendered":"https:\/\/book.yuekegu.com\/index.php\/2026\/07\/17\/opencode-ai-%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae%e6%8c%87%e5%8d%97\/"},"modified":"2026-07-17T06:05:29","modified_gmt":"2026-07-16T22:05:29","slug":"opencode-ai-%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/book.yuekegu.com\/index.php\/2026\/07\/17\/opencode-ai-%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae%e6%8c%87%e5%8d%97\/","title":{"rendered":"OpenCode AI \u5b89\u88c5\u4e0e\u914d\u7f6e\u6307\u5357"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u524d\u8a00<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">OpenCode \u662f\u4e00\u6b3e AI \u7f16\u7a0b\u52a9\u624b\uff0c\u7c7b\u4f3c\u4e8e Claude Code \u548c Cursor \u7b49\u5de5\u5177\uff0c\u4f46\u5b83\u662f\u5f00\u6e90\u7684\u4e14\u53ef\u9ad8\u5ea6\u81ea\u5b9a\u4e49\u3002\u5b83\u652f\u6301\u591a\u6a21\u578b\uff08Anthropic Claude\u3001OpenAI\u3001DeepSeek \u7b49\uff09\uff0c\u63d0\u4f9b TUI \u7ec8\u7aef\u754c\u9762\u548c Web UI\uff0c\u8fd8\u62e5\u6709\u4e30\u5bcc\u7684\u63d2\u4ef6\u7cfb\u7edf\u548c MCP\uff08Model Context Protocol\uff09\u6269\u5c55\u80fd\u529b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u6587\u8bb0\u5f55\u4e86\u5728 Linux \u670d\u52a1\u5668\u4e0a\u5b89\u88c5\u548c\u914d\u7f6e OpenCode \u7684\u5b8c\u6574\u8fc7\u7a0b\uff0c\u5305\u62ec\u5168\u5c40\u5b89\u88c5\u3001\u63d2\u4ef6\u5b89\u88c5\u3001MCP \u670d\u52a1\u914d\u7f6e\u548c\u57fa\u7840\u4f7f\u7528\u6307\u5357\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u73af\u5883\u51c6\u5907<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OS\uff1a<\/strong>OpenCloudOS 9 (Linux x86_64)<\/li>\n<li><strong>Node.js\uff1a<\/strong>v24.18.0<\/li>\n<li><strong>npm\uff1a<\/strong>\u6700\u65b0\u7248<\/li>\n<li><strong>\u6743\u9650\uff1a<\/strong>root \u7528\u6237\u5168\u5c40\u5b89\u88c5<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u5168\u5c40\u5b89\u88c5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u547d\u4ee4\u975e\u5e38\u7b80\u5355\uff0c\u4e00\u884c\u641e\u5b9a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i -g opencode-ai<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u540e\u9a8c\u8bc1\u7248\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>opencode --version\n# \u8f93\u51fa: 1.18.3<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u529f\u80fd\u6982\u89c8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">opencode \u63d0\u4f9b\u4e86\u975e\u5e38\u4e30\u5bcc\u7684\u5b50\u547d\u4ee4\uff0c\u6838\u5fc3\u529f\u80fd\u5305\u62ec\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody>\n<tr><td>\u529f\u80fd\u5206\u7c7b<\/td><td>\u547d\u4ee4<\/td><td>\u8bf4\u660e<\/td><\/tr>\n<tr><td>AI \u7f16\u7a0b<\/td><td><code>opencode [project]<\/code><\/td><td>\u542f\u52a8 TUI \u7f16\u7a0b\u52a9\u624b<\/td><\/tr>\n<tr><td>ACP \u534f\u8bae<\/td><td><code>opencode acp<\/code><\/td><td>\u542f\u52a8 Agent Client Protocol \u670d\u52a1<\/td><\/tr>\n<tr><td>MCP \u7ba1\u7406<\/td><td><code>opencode mcp<\/code><\/td><td>\u7ba1\u7406 Model Context Protocol \u670d\u52a1\u5668<\/td><\/tr>\n<tr><td>\u8fd0\u884c\u4efb\u52a1<\/td><td><code>opencode run &lt;message&gt;<\/code><\/td><td>\u76f4\u63a5\u8fd0\u884c\u4efb\u52a1\u6d88\u606f<\/td><\/tr>\n<tr><td>\u4f1a\u8bdd\u7ba1\u7406<\/td><td><code>opencode session<\/code><\/td><td>\u7ba1\u7406\u4f1a\u8bdd<\/td><\/tr>\n<tr><td>Provider \u7ba1\u7406<\/td><td><code>opencode providers<\/code><\/td><td>\u7ba1\u7406 AI \u6a21\u578b\u548c\u51ed\u8bc1<\/td><\/tr>\n<tr><td>Agent \u7ba1\u7406<\/td><td><code>opencode agent<\/code><\/td><td>\u7ba1\u7406\u81ea\u5b9a\u4e49 Agent<\/td><\/tr>\n<tr><td>\u63d2\u4ef6\u7ba1\u7406<\/td><td><code>opencode plugin &lt;module&gt;<\/code><\/td><td>\u5b89\u88c5 npm \u63d2\u4ef6<\/td><\/tr>\n<tr><td>GitHub \u96c6\u6210<\/td><td><code>opencode github<\/code><\/td><td>GitHub Agent<\/td><\/tr>\n<tr><td>\u7edf\u8ba1<\/td><td><code>opencode stats<\/code><\/td><td>Token \u7528\u91cf\u7edf\u8ba1<\/td><\/tr>\n<tr><td>Web UI<\/td><td><code>opencode web<\/code><\/td><td>\u542f\u52a8 Web \u754c\u9762<\/td><\/tr>\n<tr><td>\u670d\u52a1\u6a21\u5f0f<\/td><td><code>opencode serve<\/code><\/td><td>\u542f\u52a8\u65e0\u5934\u670d\u52a1<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u914d\u7f6e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">opencode \u7684\u914d\u7f6e\u6587\u4ef6\u4f4d\u4e8e\u4ee5\u4e0b\u4f4d\u7f6e\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9879\u76ee\u914d\u7f6e\uff1a<\/strong><code>.\/opencode.json<\/code> \u6216 <code>.opencode\/opencode.json<\/code><\/li>\n<li><strong>\u5168\u5c40\u914d\u7f6e\uff1a<\/strong><code>~\/.config\/opencode\/opencode.json<\/code><\/li>\n<li><strong>\u5168\u5c40 Agent\uff1a<\/strong><code>~\/.config\/opencode\/agent\/&lt;name&gt;.md<\/code><\/li>\n<li><strong>\u5168\u5c40 Skills\uff1a<\/strong><code>~\/.config\/opencode\/skill\/&lt;name&gt;\/SKILL.md<\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"agent\": {},\n  \"plugin\": [],\n  \"command\": {},\n  \"username\": \"root\"\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5b89\u88c5\u63d2\u4ef6<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">opencode \u901a\u8fc7 <code>opencode plugin &lt;module&gt;<\/code> \u547d\u4ee4\u5b89\u88c5\u63d2\u4ef6\u3002\u76ee\u524d\u5df2\u53d1\u73b0\u7684\u53ef\u5b89\u88c5\u63d2\u4ef6\u5305\u62ec\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. oh-my-opencode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u6d41\u884c\u7684\u5168\u80fd\u63d2\u4ef6\uff0c\u63d0\u4f9b\u591a\u6a21\u578b\u7f16\u6392\u3001\u540e\u53f0\u5e76\u884c Agent \u548c\u4e30\u5bcc\u7684 LSP\/AST \u5de5\u5177\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>opencode plugin oh-my-opencode<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. @tarquinen\/opencode-dcp<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u4e0b\u6587\u88c1\u526a\u4f18\u5316\u63d2\u4ef6\uff0c\u901a\u8fc7\u79fb\u9664\u5bf9\u8bdd\u4e2d\u8fc7\u671f\u7684\u5de5\u5177\u8f93\u51fa\u6765\u8282\u7701 Token\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>opencode plugin @tarquinen\/opencode-dcp<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u81ea\u52a8\u53d1\u73b0\u63d2\u4ef6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c06 <code>.ts<\/code> \u6216 <code>.js<\/code> \u6587\u4ef6\u653e\u5728 <code>.opencode\/plugin\/<\/code> \u76ee\u5f55\u4e0b\u5373\u53ef\u81ea\u52a8\u52a0\u8f7d\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u914d\u7f6e MCP \u670d\u52a1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\uff08Model Context Protocol\uff09\u5141\u8bb8 opencode \u8fde\u63a5\u5916\u90e8\u670d\u52a1\u83b7\u53d6\u589e\u5f3a\u80fd\u529b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0 MCP \u670d\u52a1\u5668<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"mcp\": {\n    \"playwright\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@playwright\/mcp\"],\n      \"enabled\": true\n    },\n    \"filesystem\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@modelcontextprotocol\/server-filesystem\", \"\/workspace\"],\n      \"enabled\": true\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u67e5\u770b\u5df2\u914d\u7f6e\u7684 MCP \u670d\u52a1\u5668<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>opencode mcp list<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">MCP \u670d\u52a1\u5668\u7c7b\u578b<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>local\uff1a<\/strong>\u672c\u5730\u8fd0\u884c\u547d\u4ee4\u542f\u52a8<\/li>\n<li><strong>remote\uff1a<\/strong>\u8fdc\u7a0b URL \u8fde\u63a5\uff0c\u53ef\u914d\u7f6e Headers \u8ba4\u8bc1<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u914d\u7f6e AI Provider<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">opencode \u652f\u6301\u591a\u79cd AI \u6a21\u578b\u63d0\u4f9b\u5546\u3002\u914d\u7f6e API Key\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>opencode providers<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u6307\u5b9a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"provider\": {\n    \"anthropic\": {\n      \"options\": { \"apiKey\": \"***\" }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u652f\u6301\u7684 Provider\uff1aAnthropic (Claude)\u3001OpenAI (GPT \u7cfb\u5217)\u3001DeepSeek\u3001Google Gemini \u7b49\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001Skills\uff08\u81ea\u5b9a\u4e49\u6280\u80fd\uff09<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Skills \u662f opencode \u7684\u53ef\u91cd\u7528\u6307\u4ee4\u6a21\u5757\uff0c\u7c7b\u4f3c\u4e8e AI Agent \u7684 Skills \u6982\u5ff5\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b58\u653e\u4f4d\u7f6e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.config\/opencode\/skills\/my-skill\/SKILL.md<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Skill \u6587\u4ef6\u683c\u5f0f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>---\nname: my-skill\ndescription: \u8fd9\u4e2a skill \u5728\u4ec0\u4e48\u573a\u666f\u4e0b\u89e6\u53d1\u4f7f\u7528\n---\n\n# \u6211\u7684 Skill\n\n\uff08\u6280\u80fd\u7684\u8be6\u7ec6\u6307\u4ee4\u3001\u793a\u4f8b\u3001\u53c2\u8003\uff09\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001\u603b\u7ed3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">OpenCode v1.18.3 \u662f\u4e00\u6b3e\u529f\u80fd\u5f3a\u5927\u7684 AI \u7f16\u7a0b\u52a9\u624b\uff0c\u5177\u6709\u4ee5\u4e0b\u7279\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u8f7b\u91cf\u5b89\u88c5\uff1a<\/strong>\u53ea\u9700 <code>npm i -g opencode-ai<\/code> \u4e00\u884c\u547d\u4ee4<\/li>\n<li><strong>\u591a\u6a21\u578b\u652f\u6301\uff1a<\/strong>\u7075\u6d3b\u5207\u6362\u5404\u79cd AI \u63d0\u4f9b\u5546<\/li>\n<li><strong>\u63d2\u4ef6\u751f\u6001\uff1a<\/strong>\u652f\u6301 npm \u63d2\u4ef6\u6269\u5c55\u529f\u80fd<\/li>\n<li><strong>MCP \u96c6\u6210\uff1a<\/strong>\u901a\u8fc7 Model Context Protocol \u8fde\u63a5\u5916\u90e8\u670d\u52a1<\/li>\n<li><strong>\u591a\u79cd\u754c\u9762\uff1a<\/strong>TUI \/ Web UI \/ Headless Server<\/li>\n<li><strong>\u9ad8\u5ea6\u53ef\u5b9a\u5236\uff1a<\/strong>\u81ea\u5b9a\u4e49 Agent\u3001Skills\u3001Commands\u3001Permissions<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e0\u8bba\u662f\u4e2a\u4eba\u5f00\u53d1\u8005\u8fd8\u662f\u56e2\u961f\u534f\u4f5c\uff0copencode \u90fd\u662f\u4e00\u6b3e\u503c\u5f97\u5c1d\u8bd5\u7684 AI \u7f16\u7801\u5de5\u5177\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 OpenCode \u662f\u4e00\u6b3e AI \u7f16\u7a0b\u52a9\u624b\uff0c\u7c7b\u4f3c\u4e8e Claude Code \u548c  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,20],"tags":[],"class_list":["post-696","post","type-post","status-publish","format-standard","hentry","category-nodejs","category-20"],"_links":{"self":[{"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/posts\/696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/comments?post=696"}],"version-history":[{"count":0,"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/posts\/696\/revisions"}],"wp:attachment":[{"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/media?parent=696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/categories?post=696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/book.yuekegu.com\/index.php\/wp-json\/wp\/v2\/tags?post=696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}