/init 是 OpenCode 中最常用的命令之一,通常用于启动新项目或在新环境中初始化 OpenCode 的上下文。但你可能不知道的是,它的功能远不止简单的“初始化”。
# 核心机制#
理解 /init 的强大之处,首先要理解它的工作原理。
## 模板驱动#
/init 命令本质上是一个 Prompt 模板,而不是一段硬编码的程序逻辑。
- 模板化:它的核心是一个文本文件(在源代码中通常为
initialize.txt)。 - 动态解析:当你执行命令时,系统会读取这个模板。
- 参数注入:模板中包含一个特殊的变量
$ARGUMENTS。你输入在/init后面所有的内容,都会被原封不动地替换到这个变量中。
这意味着,/init 实际上是一个通用的、可带参数的上下文启动器。
# 使用参数 ($ARGUMENTS)#
因为 $ARGUMENTS 机制的存在,你不需要修改 OpenCode 的任何源代码,就可以完全改变 /init 的行为。
你输入的任何文本都会直接透传给 AI,作为初始化指令的一部分。
## 基础用法#
bash/init
如果不带参数,$ARGUMENTS 为空(或默认值),AI 会按照默认的初始化流程(通常是分析当前目录结构、理解项目上下文)进行操作。
## 进阶用法:带参数启动#
你可以向 /init 传递具体的指令,让 AI 在初始化的同时完成特定任务。
语法:
bash/init <你的自定义指令>
# 实战示例:生成 AGENTS.md#
假设你刚克隆了一个新项目,并且希望 OpenCode 不仅是“理解”它,而是立即为你生成一份关于该项目的代理配置文档(AGENTS.md)。
你不需要分两步走(先 /init 再对话),而是可以一步到位:
text1/init Please analyze this codebase and create an AGENTS.md file containing: 21. Build/lint/test commands - especially for running a single test 32. Code style guidelines including imports, formatting, types, naming conventions, error handling, etc. 4 5The file you create will be given to agentic coding agents (such as yourself) that operate in this repository. Make it about 150 lines long. 6If there are Cursor rules (in .cursor/rules/ or .cursorrules) or Copilot rules (in .github/copilot-instructions.md), make sure to include them. 7 8If there's already an AGENTS.md, improve it if it's located in ${path}
## 发生了什么?#
- OpenCode 加载
initialize模板。 - 将你输入的“Please analyze this codebase...”这段长文本注入到模板的
$ARGUMENTS位置。 - 组合后的完整 Prompt 被发送给 AI。
- AI 接收到的指令变成了:“分析当前项目上下文,并且 根据用户的要求生成
AGENTS.md文件”。
# 为什么这被视为最佳实践?#
- 效率提升:将“上下文建立”和“首要任务执行”合并为一个步骤,减少了一次来回对话。
- 高度定制:无需编写新的自定义命令 (
.opencode/command/xxx.md),就可以通过/init配合参数实现临时的、复杂的启动逻辑。 - 灵活适应:对于不同的项目(前端、后端、文档库),你可以准备不同的
/init参数,让 AI 以最正确的姿势进入工作状态。
# 总结#
下次使用 /init 时,不妨试着告诉它你究竟想要它做什么,而不仅仅是让它“初始化”。充分利用 $ARGUMENTS 变量,让 AI 从第一句话开始就为你创造价值。