เครื่องมือ
จัดการเครื่องมือที่ LLM สามารถใช้ได้
เครื่องมืออนุญาตให้ LLM ดำเนินการในโค้ดเบสของคุณ OpenCode มาพร้อมกับชุดเครื่องมือในตัว แต่คุณสามารถขยายได้ด้วย เครื่องมือที่กำหนดเอง หรือ MCP เซิร์ฟเวอร์
ตามค่าเริ่มต้น เครื่องมือทั้งหมด เปิดใช้งาน และไม่จำเป็นต้องมีสิทธิ์ในการทำงาน คุณสามารถควบคุมการทำงานของเครื่องมือผ่าน สิทธิ์
กำหนดค่า
ใช้ฟิลด์ permission เพื่อควบคุมการทำงานของเครื่องมือ คุณสามารถอนุญาต ปฏิเสธ หรือต้องการการอนุมัติสำหรับเครื่องมือแต่ละรายการได้
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "deny", "bash": "ask", "webfetch": "allow" }}คุณยังสามารถใช้ไวด์การ์ดเพื่อควบคุมเครื่องมือหลายรายการพร้อมกันได้ ตัวอย่างเช่น หากต้องการขออนุมัติเครื่องมือทั้งหมดจากเซิร์ฟเวอร์ MCP:
{ "$schema": "https://opencode.ai/config.json", "permission": { "mymcp_*": "ask" }}เรียนรู้เพิ่มเติม เกี่ยวกับการกำหนดค่าสิทธิ์
บิวท์อิน
นี่คือเครื่องมือในตัวทั้งหมดที่มีอยู่ใน OpenCode
bash
ดำเนินการคำสั่ง shell ในสภาพแวดล้อมโปรเจ็กต์ของคุณ
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": "allow" }}เครื่องมือนี้อนุญาตให้ LLM รันคำสั่ง terminal เช่น npm install, git status หรือคำสั่ง shell อื่น ๆ
edit
แก้ไขไฟล์ที่มีอยู่โดยใช้การแทนที่สตริงที่แน่นอน
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}เครื่องมือนี้ทำการแก้ไขไฟล์อย่างแม่นยำโดยแทนที่ข้อความที่ตรงกันทุกประการ มันเป็นวิธีหลักที่ LLM แก้ไขโค้ด
write
สร้างไฟล์ใหม่หรือเขียนทับไฟล์ที่มีอยู่
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}ใช้สิ่งนี้เพื่ออนุญาตให้ LLM สร้างไฟล์ใหม่ มันจะเขียนทับไฟล์ที่มีอยู่หากมีอยู่แล้ว
read
อ่านเนื้อหาไฟล์จากโค้ดเบสของคุณ
{ "$schema": "https://opencode.ai/config.json", "permission": { "read": "allow" }}เครื่องมือนี้จะอ่านไฟล์และส่งกลับเนื้อหา รองรับการอ่านช่วงบรรทัดเฉพาะสำหรับไฟล์ขนาดใหญ่
grep
ค้นหาเนื้อหาไฟล์โดยใช้นิพจน์ทั่วไป
{ "$schema": "https://opencode.ai/config.json", "permission": { "grep": "allow" }}ค้นหาเนื้อหาอย่างรวดเร็วทั่วทั้งโค้ดเบสของคุณ รองรับไวยากรณ์ regex เต็มรูปแบบและการกรองรูปแบบไฟล์
glob
ค้นหาไฟล์ตามรูปแบบการจับคู่
{ "$schema": "https://opencode.ai/config.json", "permission": { "glob": "allow" }}ค้นหาไฟล์โดยใช้รูปแบบ glob เช่น **/*.js หรือ src/**/*.ts ส่งคืนเส้นทางไฟล์ที่ตรงกันโดยจัดเรียงตามเวลาแก้ไข
list
แสดงรายการไฟล์และไดเร็กทอรีในพาธที่กำหนด
{ "$schema": "https://opencode.ai/config.json", "permission": { "list": "allow" }}เครื่องมือนี้แสดงรายการเนื้อหาไดเร็กทอรี ยอมรับรูปแบบ glob เพื่อกรองผลลัพธ์
lsp (Experimental)
โต้ตอบกับเซิร์ฟเวอร์ LSP ที่กำหนดค่าของคุณเพื่อรับฟีเจอร์อัจฉริยะด้านโค้ด เช่น คำจำกัดความ การอ้างอิง ข้อมูลโฮเวอร์ และลำดับชั้นการโทร
{ "$schema": "https://opencode.ai/config.json", "permission": { "lsp": "allow" }}การดำเนินการที่รองรับ ได้แก่ goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls และ outgoingCalls
หากต้องการกำหนดค่าเซิร์ฟเวอร์ LSP ที่พร้อมใช้งานสำหรับโครงการของคุณ โปรดดู LSP เซิร์ฟเวอร์
patch
ใช้แพทช์กับไฟล์
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}เครื่องมือนี้ใช้ไฟล์แพทช์กับโค้ดเบสของคุณ มีประโยชน์สำหรับการใช้ความแตกต่างและแพตช์จากแหล่งต่างๆ
skill
โหลด ทักษะ (ไฟล์ SKILL.md) และส่งคืนเนื้อหาในการสนทนา
{ "$schema": "https://opencode.ai/config.json", "permission": { "skill": "allow" }}todowrite
จัดการรายการสิ่งที่ต้องทำระหว่างเซสชันการเขียนโค้ด
{ "$schema": "https://opencode.ai/config.json", "permission": { "todowrite": "allow" }}สร้างและอัปเดตรายการงานเพื่อติดตามความคืบหน้าระหว่างการดำเนินการที่ซับซ้อน LLM ใช้สิ่งนี้เพื่อจัดระเบียบงานที่มีหลายขั้นตอน
todoread
อ่านรายการสิ่งที่ต้องทำที่มีอยู่
{ "$schema": "https://opencode.ai/config.json", "permission": { "todoread": "allow" }}อ่านสถานะรายการสิ่งที่ต้องทำปัจจุบัน ใช้โดย LLM เพื่อติดตามงานที่กำลังรอดำเนินการหรือเสร็จสิ้น
webfetch
ดึงเนื้อหาเว็บ
{ "$schema": "https://opencode.ai/config.json", "permission": { "webfetch": "allow" }}อนุญาตให้ LLM ดึงข้อมูลและอ่านหน้าเว็บ มีประโยชน์สำหรับการค้นหาเอกสารหรือค้นคว้าแหล่งข้อมูลออนไลน์
websearch
ค้นหาข้อมูลในเว็บ
{ "$schema": "https://opencode.ai/config.json", "permission": { "websearch": "allow" }}ทำการค้นหาเว็บโดยใช้ Exa AI เพื่อค้นหาข้อมูลที่เกี่ยวข้องทางออนไลน์ มีประโยชน์สำหรับการค้นคว้าหัวข้อ ค้นหาเหตุการณ์ปัจจุบัน หรือการรวบรวมข้อมูลนอกเหนือจากการตัดข้อมูลการฝึกอบรม
ไม่จำเป็นต้องใช้คีย์ API เครื่องมือนี้เชื่อมต่อโดยตรงกับบริการ MCP ที่โฮสต์ของ Exa AI โดยไม่มีการตรวจสอบสิทธิ์
question
ถามคำถามผู้ใช้ระหว่างการดำเนินการ
{ "$schema": "https://opencode.ai/config.json", "permission": { "question": "allow" }}เครื่องมือนี้อนุญาตให้ LLM ถามคำถามผู้ใช้ระหว่างทำงาน มันมีประโยชน์สำหรับ:
- การรวบรวมความชอบหรือความต้องการของผู้ใช้
- ชี้แจงคำแนะนำที่ไม่ชัดเจน
- การตัดสินใจเกี่ยวกับทางเลือกในการดำเนินการ
- เสนอทางเลือกว่าจะไปในทิศทางใด
คำถามแต่ละข้อประกอบด้วยส่วนหัว ข้อความคำถาม และรายการตัวเลือก ผู้ใช้สามารถเลือกจากตัวเลือกที่มีให้หรือพิมพ์คำตอบที่กำหนดเองได้ เมื่อมีคำถามหลายข้อ ผู้ใช้สามารถสลับไปมาระหว่างคำถามเหล่านั้นก่อนที่จะส่งคำตอบทั้งหมด
เครื่องมือที่กำหนดเอง
เครื่องมือแบบกำหนดเองช่วยให้คุณสามารถกำหนดฟังก์ชันของคุณเองที่ LLM สามารถเรียกได้ สิ่งเหล่านี้ถูกกำหนดไว้ในไฟล์ปรับแต่งของคุณและสามารถรันโค้ดได้ตามใจชอบ
เรียนรู้เพิ่มเติม เกี่ยวกับการสร้างเครื่องมือที่กำหนดเอง
MCP เซิร์ฟเวอร์
เซิร์ฟเวอร์ MCP (Model Context Protocol) ช่วยให้คุณสามารถรวมเครื่องมือและบริการภายนอกได้ ซึ่งรวมถึงการเข้าถึงฐานข้อมูล การบูรณาการ API และบริการของบุคคลที่สาม
เรียนรู้เพิ่มเติม เกี่ยวกับการกำหนดค่าเซิร์ฟเวอร์ MCP
ภายใน
ภายใน เครื่องมือต่างๆ เช่น grep, glob และ list ใช้ ripgrep ภายใต้ประทุน ตามค่าเริ่มต้น ripgrep เคารพรูปแบบ .gitignore ซึ่งหมายความว่าไฟล์และไดเร็กทอรีที่อยู่ใน .gitignore ของคุณจะถูกแยกออกจากการค้นหาและรายการ
ละเว้นรูปแบบ
หากต้องการรวมไฟล์ที่ปกติจะถูกละเว้น ให้สร้างไฟล์ .ignore ในรูทโปรเจ็กต์ของคุณ ไฟล์นี้สามารถอนุญาตเส้นทางบางอย่างได้อย่างชัดเจน
!node_modules/!dist/!build/ตัวอย่างเช่น ไฟล์ .ignore นี้อนุญาตให้ ripgrep ค้นหาภายในไดเร็กทอรี node_modules/, dist/ และ build/ แม้ว่าไดเร็กทอรีเหล่านั้นจะแสดงอยู่ใน .gitignore ก็ตาม