-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path4.html
More file actions
276 lines (276 loc) · 18.4 KB
/
Copy path4.html
File metadata and controls
276 lines (276 loc) · 18.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="CodeClub - OpenCode 第一次使用" />
<meta name="author" content="Jackson" />
<title>OpenCode 第一次使用 - CodeClub</title>
<link rel="icon" type="image/x-icon" href="../../img/logo.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<link rel="stylesheet" href="../../css/main.css" />
<link rel="stylesheet" href="../../css/dark-mode.css" />
<link rel="stylesheet" href="../../css/mobile-optimizations.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.0/marked.min.js"></script>
<style>
.tutorial-page {
max-width: 1200px;
margin: 70px auto 40px;
padding: 0 20px;
display: flex;
gap: 20px;
}
.tutorial-sidebar {
width: 240px;
flex-shrink: 0;
position: sticky;
top: 70px;
max-height: calc(100vh - 90px);
overflow-y: auto;
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 16px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-sidebar h3 {
font-size: 15px;
margin: 0 0 12px;
color: var(--text-primary, #1a1a2e);
padding-bottom: 8px;
border-bottom: 2px solid var(--primary, #3b82f6);
}
.tutorial-sidebar a {
display: block;
padding: 5px 8px;
color: var(--text-secondary, #666);
text-decoration: none;
font-size: 13px;
border-radius: 4px;
line-height: 1.4;
}
.tutorial-sidebar a:hover {
background: var(--primary, #3b82f6);
color: #fff;
}
.tutorial-sidebar a.active {
background: var(--primary, #3b82f6);
color: #fff;
font-weight: 600;
}
.tutorial-main {
flex: 1;
min-width: 0;
}
.tutorial-article {
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 32px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-article h1 {
font-size: 26px;
margin-bottom: 16px;
color: var(--text-primary, #1a1a2e);
border-bottom: 2px solid var(--primary, #3b82f6);
padding-bottom: 12px;
}
.markdown-body {
font-size: 15px;
line-height: 1.8;
color: var(--text-secondary, #333);
}
.markdown-body h1 {
font-size: 24px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 8px;
}
.markdown-body h2 {
font-size: 20px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 6px;
}
.markdown-body h3 {
font-size: 17px;
}
.markdown-body pre {
background: #1e1e2e;
color: #cdd6f4;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
}
.markdown-body code {
font-family: 'Fira Code', 'Cascadia Code', monospace;
font-size: 14px;
}
.markdown-body p code {
background: #f1f5f9;
padding: 2px 6px;
border-radius: 4px;
color: #e83e8c;
}
.markdown-body blockquote {
border-left: 4px solid var(--primary, #3b82f6);
padding: 12px 20px;
margin: 16px 0;
background: #f8fafc;
border-radius: 0 8px 8px 0;
}
.markdown-body img {
max-width: 100%;
border-radius: 8px;
}
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 16px 0;
}
.markdown-body table th,
.markdown-body table td {
border: 1px solid var(--border, #e5e7eb);
padding: 8px 12px;
text-align: left;
}
.markdown-body table th {
background: var(--bg-primary, #f8fafc);
font-weight: 600;
}
.markdown-body table tr:nth-child(2n) {
background: var(--bg-primary, #f8fafc);
}
.markdown-body ul,
.markdown-body ol {
padding-left: 24px;
margin: 12px 0;
}
.markdown-body li {
margin: 4px 0;
}
.markdown-body hr {
border: none;
border-top: 1px solid var(--border, #e5e7eb);
margin: 24px 0;
}
.markdown-body a {
color: var(--primary, #3b82f6);
text-decoration: none;
}
.markdown-body a:hover {
text-decoration: underline;
}
.page-navigation {
display: flex;
justify-content: space-between;
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid var(--border, #e5e7eb);
}
.page-nav-link {
color: var(--primary, #3b82f6);
text-decoration: none;
font-weight: 500;
font-size: 14px;
}
.page-nav-link:hover {
text-decoration: underline;
}
.source-link {
margin-top: 16px;
font-size: 13px;
color: var(--text-secondary, #999);
}
.source-link a {
color: var(--primary, #3b82f6);
}
@media (max-width: 768px) {
.tutorial-page {
flex-direction: column;
}
.tutorial-sidebar {
width: 100%;
position: static;
max-height: 200px;
}
}
</style>
</head>
<body>
<nav class="navbar">
<div class="navbar-container">
<a class="navbar-brand" href="../../index.html">
<img src="../../img/logo.png" alt="CodeClub" width="32" height="32" />
<span>CodeClub</span>
</a>
<button class="mobile-menu-toggle" aria-label="切换导航菜单"><span></span><span></span><span></span></button>
<ul class="navbar-nav">
<li><a class="nav-link" href="../../index.html">首页</a></li>
<li><a class="nav-link" href="../../nav.html">网址导航</a></li>
<li><a class="nav-link" href="../../blog/">博客</a></li>
<li><a class="nav-link" href="../../wiki/index.html" target="_blank">WiKi</a></li>
<li><a class="nav-link active" href="../index.html">教程</a></li>
<li><a class="nav-link" href="../../book.html">图书</a></li>
<li><a class="nav-link" href="../../contact.html">联系我</a></li>
<li><a class="nav-link" href="../../about.html">关于我</a></li>
</ul>
</div>
</nav>
<div class="tutorial-page">
<div class="tutorial-sidebar">
<h3>📖 OpenCode</h3>
<a href="0.html">OpenCode 教程</a>
<a href="1.html">OpenCode 简介</a>
<a href="2.html">OpenCode 安装</a>
<a href="3.html">OpenCode 配置</a>
<a href="4.html" class="active">OpenCode 第一次使用</a>
<a href="5.html">OpenCode VSCode</a>
<a href="6.html">OpenCode 终端界面</a>
<a href="7.html">OpenCode CLI 使用</a>
<a href="8.html">OpenCode Web 使用</a>
<a href="9.html">OpenCode GitHub</a>
<a href="10.html">OpenCode GitLab</a>
<a href="11.html">OpenCode 工具</a>
<a href="12.html">OpenCode 规则</a>
<a href="13.html">OpenCode 代理</a>
<a href="14.html">OpenCode 主题</a>
<a href="15.html">OpenCode 快捷键</a>
<a href="16.html">OpenCode 自定义命令</a>
<a href="17.html">OpenCode 格式化工具</a>
<a href="18.html">OpenCode 权限配置</a>
<a href="19.html">OpenCode LSP 服务器配置</a>
<a href="20.html">OpenCode MCP 服务器配置</a>
<a href="21.html">OpenCode Skills</a>
<a href="22.html">OpenCode 自定义工具</a>
</div>
<div class="tutorial-main">
<div class="tutorial-article">
<div class="markdown-body" id="md-content"></div>
<div class="page-navigation">
<a href="3.html" class="page-nav-link">← OpenCode 配置</a>
<a href="5.html" class="page-nav-link">OpenCode VSCode →</a>
</div>
<div class="source-link">原文来源:<a href="https://www.runoob.com" target="_blank">菜鸟教程</a></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-content"><p>© 2024 CodeClub. All rights reserved.</p></div>
</footer>
<script src="../../js/dark-mode.js"></script>
<script src="../../js/mobile-menu.js"></script>
<script>
const md = `# OpenCode 第一次使用\n\n\n安装了 Claude Code 及配置好 API 后,我们就可以开始使用了。\n\n\n\n可以先进入项目目录:\n\n\n\n\`\`\`\n\ncd /path/to/project\n\`\`\`\n\n\n然后运行 OpenCode:\n\n\n\n\`\`\`\n\nopencode\n\`\`\`\n\n\n运行以下命令为项目初始化 OpenCode:\n\n\n\n\`\`\`\n\n/init\n\`\`\`\n\n\nOpenCode 会分析你的项目并在项目根目录创建一个 AGENTS.md 文件。\n\n\n\n退出 OpenCode,使用以下命令:\n\n\n\n\`\`\`\n/exit\n\`\`\`\n\n\n\n接下来,我们用一个最简单的示例项目来完成第一次使用。\n\n\n\n创建一个示例项目:\n\n\n\n\`\`\`\nmkdir opencode-runoob-test\ncd opencode-runoob-test\n\`\`\`\n\n然后运行 OpenCode:\n\n\n\n\`\`\`\n\nopencode\n\`\`\`\n\n运行以下命令为初始化:\n\n\n\n\`\`\`\n\n/init\n\`\`\`\n\n\n\n\n\n创建一个简单文件:\n\n\n\n\`\`\`\n\ntouch main.py\n\`\`\`\n\n\n\n写入以下内容:\n\n\n\n\`\`\`\n\ndef add(a, b):\n return a + b\n\`\`\`\n\n\n\n### 让 OpenCode 解释代码\n\n\n输入:\n\n\n\n\n\`\`\`\n解释 main.py 这个文件在做什么,用新手能理解的方式说明\n\`\`\`\n\n\n\nOpenCode 会读取当前目录下的代码,并给出解释。\n\n\n\n\n\n\n\n\n### 让 OpenCode 帮你改代码\n\n\n继续在 OpenCode 会话中输入:\n\n\n\n\n\`\`\`\n给这个函数增加类型注解,并补充基本的错误处理\n\`\`\`\n\n\nOpenCode 会给出修改建议,通常包含:\n\n\n\n \n\n- 修改后的代码\n\n- \n修改原因说明\n\n\n\n\n\n\n\n\n### \n\`@\` 符号\n\n使用 \`@\` 可以快速搜索并引用项目中的文件不需要手动复制代码,适合理解陌生项目。\n比如 @main.py 就可以关联到这个文件:\n\n\n\n\n\n\n---\n\n\n## OpenCode 的基本交互方式\n\n\n### 常见指令类型\n\n\n你可以把对 Claude Code 的指令分为三类:\n\n\n\n**1、解释型**\n\n\n\n\n\`\`\`\n解释这段代码\n\n这个函数为什么这么写\n\`\`\`\n\n**\n2、修改型**\n\n\n\n\n\`\`\`\n帮我重构这个函数\n\n拆分成多个小函数\n\`\`\`\n\n\n**3、生成型**\n\n\n\n\n\`\`\`\n补一个测试用例\n\n增加日志输出\n\`\`\`\n\n\n一个简单但好用的指令模板:\n\n\n\n\n\`\`\`\n在不改变现有行为的前提下,\n帮我优化 XXX 文件的可读性,\n并说明你做了哪些修改。\n\`\`\`\n\n\n\n\n---\n\n\n\n## 添加新功能(推荐流程)\n\n\n对于复杂需求,建议采用三步法:\n\n\n\n\n\n\n- 先制定计划\n\n- 再优化方案\n\n- 最后执行实现\n\n\n\n\n---\n\n\n\n### 1、制定计划(Plan 模式)\n\n\n按下 \`Tab\` 键切换到计划模式:\n\n\n\n\n\n\n\n此时 OpenCode **不会修改代码**,只会给出实现方案。\n\n\n\n#### 示例需求\n\n\n\n\`\`\`\n\n当用户删除一条笔记时,我们希望在数据库中将其标记为已删除。\n然后新增一个页面,用于展示最近删除的笔记。\n在该页面中,用户可以恢复笔记或彻底删除笔记。\n\n\`\`\`\n**说明:**\n\n\n\n\n\n\n- 描述越详细,结果越准确\n\n- 可以像和同事沟通一样描述需求\n\n\n\n\n### 2、优化与迭代计划\n\n\nOpenCode 给出方案后,你可以继续补充:\n\n\n\n\n\`\`\`\n\n我们希望这个新页面采用之前用过的一套设计。\n请参考这张图片,并按该风格实现。\n\n\`\`\`\n\n\n**技巧:**\n\n\n\n\n\n\n- 可以拖拽图片到终端作为参考\n\n- 可以补充业务规则、UI 要求等\n\n\n\n本质就是和 AI 一起做设计评审。\n\n\n\n\n\n### 3、执行实现(Build 模式)\n\n\n再次按 **Tab** 切换回执行模式:\n\n\n\n\n\n然后输入:\n\n\n\n\n\`\`\`\n\n很好,按照这个方案开始实现吧。\n\n\`\`\`\n\n\nOpenCode 会:\n\n\n\n\n\n\n- 创建/修改代码\n\n- 更新相关文件\n\n- 执行必要命令\n\n\n\n\n---\n\n\n\n## 直接修改(适合简单需求)\n\n\n对于简单任务,可以跳过计划,直接执行:\n\n\n\n\n\`\`\`\n\n给 /settings 路由添加认证逻辑。\n参考 @packages/functions/src/notes.ts 中的实现方式,\n并在 @packages/functions/src/settings.ts 中实现相同逻辑。\n\n\`\`\`\n\n\n**建议:**\n\n\n\n\n\n\n- 提供参考代码路径\n\n- 说明目标效果\n\n\n\n\n---\n\n\n\n## 撤销与重做\n\n\n如果修改结果不符合预期,可以使用:\n\n\n\n\n### 撤销修改\n\n\n\n\`\`\`\n\n/undo\n\n\`\`\`\n\n\n作用:\n\n\n\n\n\n- 回滚代码改动\n\n- 恢复之前的对话状态\n\n\n\n\n### 重做修改\n\n\n\n\`\`\`\n\n/redo\n\n\`\`\`\n\n\n**提示:**\n\n\n\n\n\n\n- /undo 可以多次使用\n\n- 适合反复尝试不同方案\n\n\n\n\n---\n\n\n\n## 分享对话\n\n\n你可以将当前会话分享给团队:\n\n\n\n\n\`\`\`\n\n/share\n\n\`\`\`\n\n\n执行后:\n\n\n\n\n\n\n- 生成分享链接\n\n- 自动复制到剪贴板\n\n\n\n**注意:**\n\n\n\n\n\n- 对话默认不会自动分享\n\n\n\n\n---\n\n\n\n## 使用技巧\n\n\n\n### 1、把它当初级工程师\n\n\n\n\n\n- 说清楚需求\n\n- 提供上下文\n\n- 不要模糊表达\n\n\n\n\n### 2、优先使用计划模式\n\n\n\n\n\n- 避免错误修改\n\n- 先评审方案再执行\n\n\n\n\n### 3、多用文件引用\n\n\n\n\n\n- @路径 能大幅提高准确率\n\n\n\n\n### 4、小步迭代\n\n\n\n\n\n- 不要一次做太复杂的需求\n\n- 拆分任务逐步完成\n\n\n\n**OpenCode 的使用本质是:用对话驱动开发流程,而不是手写代码。**\n\n \n \n \n \n \n\n \n \n [ VS Code 安装 OpenCode](http://www.runoob.com/opencode/opencode-vscode.html)\n \n\n \n \n \n \n \n\n\n\n\n \n \n \n### 点我分享笔记\n\n \n \n \n \n \n \n [取消](https://www.runoob.comjavascript:;)\n\n\n \n \n \n \n \n \n\n\n 分享笔记\n \n \n \n \n \n \n\n 昵称昵称 (必填)\n 邮箱邮箱 (必填)\n 引用地址引用地址\n \n\n \n \n \n \n\n \n \n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n 在线实例\n\n\n ·[HTML 实例](https://www.runoob.com/html/html-examples.html)\n\n\n ·[CSS 实例](https://www.runoob.com/css/css-examples.html)\n\n\n ·[JavaScript 实例](https://www.runoob.com/js/js-examples.html)\n\n\n ·[Ajax 实例](https://www.runoob.com/ajx/ajax-examples.html)\n\n\n ·[jQuery 实例](https://www.runoob.com/jquery/jquery-examples.html)\n\n\n ·[XML 实例](https://www.runoob.com/xml/xml-examples.html)\n\n\n ·[Java 实例](https://www.runoob.com/java/java-examples.html)\n\n\n\n\n\n 字符集&工具\n\n\n · [HTML 字符集设置](https://www.runoob.com/charsets/html-charsets.html)\n\n\n · [HTML ASCII 字符集](https://www.runoob.com/tags/html-ascii.html)\n\n\n · [JS 混淆/加密](https://www.jyshare.com/front-end/6939/)\n\n\n · [PNG/JPEG 图片压缩](https://www.jyshare.com/front-end/6232/)\n\n\n · [HTML 拾色器](https://www.runoob.com/tags/html-colorpicker.html)\n\n\n · [JSON 格式化工具](https://www.jyshare.com/front-end/53)\n\n\n · [随机数生成器](https://www.jyshare.com/front-end/6680/)\n\n\n\n\n 最新更新\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-custom-tools.html)\n\n\n ·\n [\n OpenCode Skills ](http://www.runoob.com/opencode/opencode-skills.html)\n\n\n ·\n [\n OpenCode MCP 服... ](http://www.runoob.com/opencode/opencode-mcp.html)\n\n\n ·\n [\n OpenCode LSP 服... ](http://www.runoob.com/opencode/opencode-lsp.html)\n\n\n ·\n [\n OpenCode 权限配置 ](http://www.runoob.com/opencode/opencode-permissions.html)\n\n\n ·\n [\n OpenCode 格式化... ](http://www.runoob.com/opencode/opencode-formatter.html)\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-commands.html)\n\n\n\n\n 站点信息\n\n\n ·\n [意见反馈](https://www.runoob.commailto:admin@runoob.com)\n\n\n ·\n [免责声明](https://www.runoob.com/disclaimer)\n\n\n ·\n [关于我们](https://www.runoob.com/aboutus)\n\n\n ·\n [文章归档](https://www.runoob.com/archives)\n\n\n\n\n\n\n\n **关注微信**\n\n\n\n \n\n\n\n\n\n\n Copyright © 2013-2026 **[菜鸟教程](https://www.runoob.com//www.runoob.com/)** \n **[runoob.com](https://www.runoob.com//www.runoob.com/)** All Rights Reserved. 备案号:[闽ICP备15012807号-1](https://beian.miit.gov.cn/)\n\n\n\n [ ](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n\n\n\n#### 微信关注\n\n `;
document.getElementById('md-content').innerHTML = marked.parse(md);
</script>
</body>
</html>