คำสั่ง
คำสั่งที่กำหนดเองสำหรับงานที่ทำซ้ำๆ
คำสั่งช่วยให้คุณกำหนดชุดของพรอมต์ที่ใช้บ่อย เพื่อให้สามารถเรียกใช้งานได้อย่างรวดเร็วใน TUI
/my-commandคำสั่งแบบกำหนดเองเป็นส่วนเพิ่มเติมจากคำสั่งในตัว เช่น /init, /undo, /redo, /share, /help เรียนรู้เพิ่มเติม
การสร้างคำสั่ง
สร้างไฟล์ Markdown ในไดเร็กทอรี commands/ เพื่อกำหนดคำสั่งของคุณ
สร้าง .opencode/commands/test.md:
---description: Run tests with coverageagent: buildmodel: 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 กำหนดคุณสมบัติของคำสั่ง และเนื้อหาคือพรอมต์ที่จะส่งไปยัง LLM
ใช้คำสั่งโดยพิมพ์ / ตามด้วยชื่อไฟล์ (ไม่รวมนามสกุล) ใน TUI:
"/test"วิธีการกำหนด
คุณสามารถกำหนดคำสั่งได้สองวิธี: ผ่านการกำหนดค่า JSON หรือโดยการสร้างไฟล์ Markdown
JSON
ใช้ส่วน command ในไฟล์ config ของ OpenCode:
{ "$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:
/testMarkdown
หากต้องการกำหนดคำสั่งด้วยไฟล์ Markdown ให้วางไฟล์ไว้ใน:
- ระดับผู้ใช้ (Global):
~/.config/opencode/commands/ - ระดับโปรเจ็กต์:
.opencode/commands/
---description: Run tests with coverageagent: buildmodel: 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 ให้คุณเรียกใช้:
/testอาร์กิวเมนต์และการแทนที่
คำสั่งรองรับอาร์กิวเมนต์ตามตำแหน่งและการแทนที่ค่าพิเศษหลายรายการ
อาร์กิวเมนต์
คุณสามารถส่งผ่านอาร์กิวเมนต์ไปยังคำสั่งของคุณได้โดยใช้ $ARGUMENTS
---description: Create a new component---
Create a new React component named $ARGUMENTS with TypeScript support.Include proper typing and basic structure.รันคำสั่งพร้อมอาร์กิวเมนต์:
/component Buttonและ $ARGUMENTS จะถูกแทนที่ด้วย Button
คุณยังสามารถเข้าถึงแต่ละอาร์กิวเมนต์แยกกันได้:
$1- อาร์กิวเมนต์แรก$2- อาร์กิวเมนต์ที่สอง$3- อาร์กิวเมนต์ที่สาม- และอื่นๆ…
ตัวอย่าง:
---description: Create a new file with content---
Create a file named $1 in the directory $2with the following content: $3รันคำสั่ง:
/create-file config.json src "{ \"key\": \"value\" }"ผลลัพธ์ที่ได้:
$1แทนด้วยconfig.json$2แทนด้วยsrc$3แทนด้วย{ "key": "value" }
คำสั่ง Shell
ใช้ !command เพื่อแทรกเอาต์พุตของ คำสั่ง bash ใดๆ ลงในพรอมต์ของคุณ
ตัวอย่างเช่น การรันชุดทดสอบและรวมผลลัพธ์:
---description: Analyze test coverage---
Here are the current test results:!`npm test`
Based on these results, suggest improvements to increase coverage.หรือตรวจสอบการเปลี่ยนแปลงล่าสุดใน git:
---description: Review recent changes---
Recent git commits:!`git log --oneline -10`
Review these changes and suggest any improvements.คำสั่งจะถูกดำเนินการในไดเร็กทอรีรากของโปรเจ็กต์
การอ้างอิงไฟล์
คุณสามารถรวมเนื้อหาไฟล์ในคำสั่งของคุณโดยใช้ @ นำหน้าชื่อไฟล์
---description: Review component---
Review the component in @src/components/Button.tsx.Check for performance issues and suggest improvements.เนื้อหาของไฟล์จะถูกอ่านและรวมเข้าไปในพรอมต์ที่ส่งไปยัง LLM
ตัวเลือก
มาดูรายละเอียดของตัวเลือกการกำหนดค่าต่างๆ
Template (เทมเพลต)
template กำหนดพรอมต์ที่จะถูกส่งไปยัง LLM เมื่อเรียกใช้คำสั่ง
{ "command": { "test": { "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes." } }}ฟิลด์นี้ จำเป็น สำหรับการกำหนดค่าแบบ JSON (ใน Markdown คือส่วนเนื้อหา)
Description (คำอธิบาย)
ใช้ตัวเลือก description เพื่อให้คำอธิบายโดยย่อเกี่ยวกับสิ่งที่คำสั่งทำ
{ "command": { "test": { "description": "Run tests with coverage" } }}คำอธิบายนี้จะแสดงในรายการเติมคำอัตโนมัติของ TUI เมื่อคุณพิมพ์คำสั่ง
Agent (เอเจนต์)
ใช้ agent เพื่อระบุว่า เอเจนต์ ใดควรดำเนินการคำสั่งนี้
{ "command": { "review": { "agent": "plan" } }}นี่คือ ทางเลือก หากไม่ได้ระบุ จะใช้เอเจนต์ปัจจุบันของคุณ
Subtask (งานย่อย)
ใช้ subtask (บูลีน) เพื่อระบุว่าคำสั่งควรทำงานเป็น subagent หรือไม่
การตั้งค่านี้จะป้องกันไม่ให้คำสั่งรบกวนบริบทหลักของเซสชัน และจะ บังคับ ให้เอเจนต์ใช้โหมดที่เหมาะสม
{ "command": { "analyze": { "subtask": true } }}ส่วนนี้ ทางเลือก
Model (โมเดล)
ใช้ model เพื่อกำหนดโมเดลเฉพาะสำหรับคำสั่งนี้
{ "command": { "analyze": { "model": "anthropic/claude-3-5-sonnet-20241022" } }}ส่วนนี้ ทางเลือก
Built-ins (ในตัว)
OpenCode มีคำสั่งในตัวหลายคำสั่ง เช่น /init, /undo, /redo, /share, /help เรียนรู้เพิ่มเติม
อย่างไรก็ตาม เราไม่แนะนำให้ทำเช่นนั้น เว้นแต่คุณจะมีเหตุผลที่เฉพาะเจาะจง