Files
opencode/packages/web/src/content/docs/zh-cn/commands.mdx
2026-02-09 11:34:35 -06:00

324 lines
6.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 命令
description: 為重複任務創建自定義命令。
---
自定义命令允许您指定在 TUI 中执行该命令时要运行的提示。
```bash frame="none"
/my-command
```
除了`/init`、`/undo`、`/redo`、`/share`、`/help`等内置命令之外,还有自定义命令。 [了解更多](/docs/tui#commands)。
---
## 創建命令文件
在`commands/`目录中创建markdown文件来定义自定义命令。
创建`.opencode/commands/test.md`
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
frontmatter 定义命令属性。内容成为模板。
通過鍵入 `/` 後跟命令名稱來使用該命令。
```bash frame="none"
"/test"
```
---
## 配置
您可以通过 OpenCode 配置或通过在 `commands/` 目录中创建 markdown 文件来添加自定义命令。
---
### JSON
在 OpenCode [配置](/docs/config) 中使用 `command` 选项:
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
现在您可以在 TUI 中运行这个命令:
```bash frame="none"
/test
```
---
### 降價
您还可以使用 Markdown 文件定义命令。将它们放入:
- 全球:`~/.config/opencode/commands/`
- 每个项目:`.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Markdown 文件名成为命令名。例如,`test.md` 让
你運行:
```bash frame="none"
/test
```
---
## 提示配置
自定義命令的提示支持幾個特殊的佔位符和語法。
---
### 論據
使用`$ARGUMENTS`占位符将参数提交给命令。
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
使用參數運行命令:
```bash frame="none"
/component Button
```
`$ARGUMENTS` 将替换为 `Button`。
您還可以使用位置參數訪問各個參數:
- `$1` - 第一個參數
- `$2` - 第二個參數
- `$3` - 第三個參數
- 等等...
例如:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
運行命令:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
這取代了:
- `$1` 与 `config.json`
- `$2` 与 `src`
- `$3` 与 `{ "key": "value" }`
---
### 外殼輸出
使用 _!`command`_ 将 [bash命令](/docs/tui#bash-commands) 输出注入到提示符中。
例如,要創建分析測試覆蓋率的自定義命令:
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
或者查看最近的更改:
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
命令在項目的根目錄中運行,其輸出成為提示的一部分。
---
### 文件參考
使用 `@` 後跟文件名將文件包含在命令中。
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
文件內容會自動包含在提示中。
---
## 選項
讓我們詳細看看配置選項。
---
### 模板
`template` 选项定义执行命令时将发送到 LLM 的提示。
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
這是一個**必需的**配置選項。
---
### 描述
使用 `description` 选项提供命令功能的简要描述。
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
当您输入命令时,这将在 TUI 中显示为描述。
---
### 代理人
使用`agent`配置选择指定哪个[代理人](/docs/agents)应执行此命令。
如果是 [子代理](/docs/agents/#subagents) 该命令将默认触发子代理调用。
要取消此行为,则将`subtask`设置为`false`。
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
這是一個**可選**配置選項。如果未指定,則默認為您當前的代理。
---
### 子任務
使用`subtask`布尔值强制命令触发[子代理](/docs/agents/#subagents)调用。
如果您希望命令不污染您的主要上下文並且將**強制**代理充當子代理,那麼這非常有用,
即使`mode`在[代理人](/docs/agents)配置上设置为`primary`。
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
這是一個**可選**配置選項。
---
### 模型
使用 `model` 配置覆盖此命令的默认模型。
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
這是一個**可選**配置選項。
---
## 內建
opencode包含`/init`、`/undo`、`/redo`、`/share`、`/help`等内置命令;【了解更多](/docs/tui#commands)。
:::笔记
自定義命令可以覆蓋內置命令。
:::
如果您定義同名的自定義命令,它將覆蓋內置命令。