-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path9.html
More file actions
276 lines (276 loc) · 17.8 KB
/
Copy path9.html
File metadata and controls
276 lines (276 loc) · 17.8 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 GitHub" />
<meta name="author" content="Jackson" />
<title>OpenCode GitHub - 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">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" class="active">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="8.html" class="page-nav-link">← OpenCode Web 使用</a>
<a href="10.html" class="page-nav-link">OpenCode GitLab →</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 GitHub\n\n\nOpenCode 可以深度集成 GitHub 工作流,让 AI 直接参与 Issue、Pull Request 和代码审查流程。\n\n\n\n**通过在评论中输入 /opencode 或 /oc,即可触发 AI 自动执行任务。**\n\n\n\n\n**OpenCode GitHub = 把 AI 变成你的自动化开发成员,直接参与 Issue、PR 和代码流程。**\n\n\n\n---\n\n\n\n## 一、核心能力\n\n\n\n\n\n- **Issue 分析:**自动理解问题并给出解释\n\n- **自动修复:**创建分支并提交 PR\n\n- **代码审查:**分析 PR 并提出改进建议\n\n- **自动化执行:**基于 GitHub Actions 运行\n\n\n\n**特点:**\n\n\n\n\n\n\n- 运行在你自己的 GitHub Runner 中\n\n- 安全可控,不依赖外部服务器执行代码\n\n\n\n\n---\n\n\n\n## 二、快速安装(推荐)\n\n\n在 GitHub 项目根目录运行:\n\n\n\n\n\`\`\`\n\nopencode github install\n\n\`\`\`\n\n\n该命令会自动完成:\n\n\n\n\n\n\n- 安装 GitHub App\n\n- 创建 GitHub Actions 工作流\n\n- 引导配置 API Key\n\n\n\n\n---\n\n\n\n## 三、手动安装(进阶)\n\n\n\n### 1、安装 GitHub App\n\n\n访问:\n\n\n\n\n\`\`\`\n\nhttps://github.com/apps/opencode-agent\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.github/workflows/opencode.yml\n\n\`\`\`\n\n\n示例:\n\n\n\n\n\`\`\`\n\nname: opencode\n\non:\n issue_comment:\n types: [created]\n pull_request_review_comment:\n types: [created]\n\njobs:\n opencode:\n if: |\n contains(github.event.comment.body, \'/oc\') ||\n contains(github.event.comment.body, \'/opencode\')\n runs-on: ubuntu-latest\n permissions:\n id-token: write\n steps:\n - name: Checkout repository\n uses: actions/checkout@v6\n with:\n fetch-depth: 1\n persist-credentials: false\n\n - name: Run OpenCode\n uses: anomalyco/opencode/github@latest\n env:\n ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n with:\n model: anthropic/claude-sonnet-4-20250514\n\n\`\`\`\n\n\n\n---\n\n\n\n### 3、配置 Secrets\n\n\n在 GitHub 仓库中:\n\n\n\n\n\n\n- 进入 Settings → Secrets → Actions\n\n- 添加 API Key(如 ANTHROPIC_API_KEY)\n\n\n\n\n---\n\n\n\n## 四、配置参数说明\n\n\n\n\n\n参数\n说明\n\n\n\n\n\nmodel\n使用的模型(必填)\n\n\n\nagent\n指定代理\n\n\n\nprompt\n自定义提示词\n\n\n\nshare\n是否分享会话\n\n\n\ntoken\nGitHub Token\n\n\n\n\n\n**说明:**\n\n\n\n\n\n\n- 默认使用 OpenCode GitHub App 的 Token\n\n- 也可以使用 GITHUB_TOKEN 或 PAT\n\n\n\n\n---\n\n\n\n## 五、支持的触发事件\n\n\n\n\n\n事件\n说明\n\n\n\n\n\nissue_comment\n评论触发 /opencode\n\n\n\npull_request_review_comment\n代码行评论触发\n\n\n\nissues\nIssue 创建/更新\n\n\n\npull_request\nPR 自动审查\n\n\n\nschedule\n定时任务\n\n\n\nworkflow_dispatch\n手动触发\n\n\n\n\n\n\n---\n\n\n\n## 六、常见使用方式\n\n\n\n### 1、解释 Issue\n\n\n在 Issue 评论:\n\n\n\n\n\`\`\`\n\n/opencode explain this issue\n\n\`\`\`\n\n\nAI 会总结问题并解释\n\n\n\n\n---\n\n\n\n### 2、自动修复 Issue\n\n\n\n\`\`\`\n\n/opencode fix this\n\n\`\`\`\n\n\n自动:\n\n\n\n\n\n\n- 创建分支\n\n- 修改代码\n\n- 提交 Pull Request\n\n\n\n\n---\n\n\n\n### 3、修改 PR\n\n\n\n\`\`\`\n\nDelete the attachment from S3 when the note is removed /oc\n\n\`\`\`\n\n\n直接在 PR 上执行修改\n\n\n\n\n---\n\n\n\n### 4、代码行级操作(非常强)\n\n\n在 PR 的 Files 页面评论:\n\n\n\n\n\`\`\`\n\n/oc add error handling here\n\n\`\`\`\n\n\nOpenCode 会自动获取:\n\n\n\n\n\n\n- 文件路径\n\n- 行号\n\n- 上下文 diff\n\n\n\n无需手动说明位置\n\n\n\n\n---\n\n\n\n## 七、定时任务(自动化)\n\n\n示例:每周扫描 TODO\n\n\n\n\n\`\`\`\n\non:\n schedule:\n - cron: "0 9 * * 1"\n\n\`\`\`\n\n\n示例 prompt:\n\n\n\n\n\`\`\`\n\nReview the codebase for TODO comments and summarize them\n\n\`\`\`\n\n\n**注意:**\n\n\n\n\n\n\n- 定时任务必须提供 prompt\n\n- 需要写权限(contents / pull-requests)\n\n\n\n\n---\n\n\n\n## 八、PR 自动审查\n\n\n示例:\n\n\n\n\n\`\`\`\n\non:\n pull_request:\n types: [opened, synchronize]\n\n\`\`\`\n\n\n默认行为:\n\n\n\n\n\n\n- 分析代码质量\n\n- 检测潜在 Bug\n\n- 提出改进建议\n\n\n\n\n---\n\n\n\n## 九、Issue 自动分类\n\n\n可以自动处理新 Issue,例如:\n\n\n\n\n\n\n- 过滤垃圾账号\n\n- 自动回复建议\n\n- 补充文档说明\n\n\n\n**注意:**\n\n\n\n\n\n\n- issues 事件必须提供 prompt\n\n\n\n\n---\n\n\n\n## 十、自定义提示词(高级用法)\n\n\n可以覆盖默认行为:\n\n\n\n\n\`\`\`\n\nprompt: |\n Review this pull request:\n - Check for bugs\n - Suggest improvements\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\npermissions:\n id-token: write\n contents: write\n pull-requests: write\n issues: write\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 [ OpenCode GitLab](http://www.runoob.com/opencode/opencode-gitlab.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>