| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- ---
- title: เครื่องมือ
- description: จัดการเครื่องมือที่ LLM สามารถใช้ได้
- ---
- เครื่องมืออนุญาตให้ LLM ดำเนินการในโค้ดเบสของคุณ OpenCode มาพร้อมกับชุดเครื่องมือในตัว แต่คุณสามารถขยายได้ด้วย [เครื่องมือที่กำหนดเอง](/docs/custom-tools) หรือ [MCP เซิร์ฟเวอร์](/docs/mcp-servers)
- ตามค่าเริ่มต้น เครื่องมือทั้งหมด **เปิดใช้งาน** และไม่จำเป็นต้องมีสิทธิ์ในการทำงาน คุณสามารถควบคุมการทำงานของเครื่องมือผ่าน [สิทธิ์](/docs/permissions)
- ---
- ## กำหนดค่า
- ใช้ฟิลด์ `permission` เพื่อควบคุมการทำงานของเครื่องมือ คุณสามารถอนุญาต ปฏิเสธ หรือต้องการการอนุมัติสำหรับเครื่องมือแต่ละรายการได้
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "deny",
- "bash": "ask",
- "webfetch": "allow"
- }
- }
- ```
- คุณยังสามารถใช้ไวด์การ์ดเพื่อควบคุมเครื่องมือหลายรายการพร้อมกันได้ ตัวอย่างเช่น หากต้องการขออนุมัติเครื่องมือทั้งหมดจากเซิร์ฟเวอร์ MCP:
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "mymcp_*": "ask"
- }
- }
- ```
- [เรียนรู้เพิ่มเติม](/docs/permissions) เกี่ยวกับการกำหนดค่าสิทธิ์
- ---
- ## บิวท์อิน
- นี่คือเครื่องมือในตัวทั้งหมดที่มีอยู่ใน OpenCode
- ---
- ### bash
- ดำเนินการคำสั่ง shell ในสภาพแวดล้อมโปรเจ็กต์ของคุณ
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "bash": "allow"
- }
- }
- ```
- เครื่องมือนี้อนุญาตให้ LLM รันคำสั่ง terminal เช่น `npm install`, `git status` หรือคำสั่ง shell อื่น ๆ
- ---
- ### edit
- แก้ไขไฟล์ที่มีอยู่โดยใช้การแทนที่สตริงที่แน่นอน
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- เครื่องมือนี้ทำการแก้ไขไฟล์อย่างแม่นยำโดยแทนที่ข้อความที่ตรงกันทุกประการ มันเป็นวิธีหลักที่ LLM แก้ไขโค้ด
- ---
- ### write
- สร้างไฟล์ใหม่หรือเขียนทับไฟล์ที่มีอยู่
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- ใช้สิ่งนี้เพื่ออนุญาตให้ LLM สร้างไฟล์ใหม่ มันจะเขียนทับไฟล์ที่มีอยู่หากมีอยู่แล้ว
- :::note
- เครื่องมือ `write` ถูกควบคุมโดยสิทธิ์ `edit` ซึ่งครอบคลุมการแก้ไขไฟล์ทั้งหมด (`edit`, `write`, `patch`, `multiedit`)
- :::
- ---
- ### read
- อ่านเนื้อหาไฟล์จากโค้ดเบสของคุณ
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "read": "allow"
- }
- }
- ```
- เครื่องมือนี้จะอ่านไฟล์และส่งกลับเนื้อหา รองรับการอ่านช่วงบรรทัดเฉพาะสำหรับไฟล์ขนาดใหญ่
- ---
- ### grep
- ค้นหาเนื้อหาไฟล์โดยใช้นิพจน์ทั่วไป
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "grep": "allow"
- }
- }
- ```
- ค้นหาเนื้อหาอย่างรวดเร็วทั่วทั้งโค้ดเบสของคุณ รองรับไวยากรณ์ regex เต็มรูปแบบและการกรองรูปแบบไฟล์
- ---
- ### glob
- ค้นหาไฟล์ตามรูปแบบการจับคู่
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "glob": "allow"
- }
- }
- ```
- ค้นหาไฟล์โดยใช้รูปแบบ glob เช่น `**/*.js` หรือ `src/**/*.ts` ส่งคืนเส้นทางไฟล์ที่ตรงกันโดยจัดเรียงตามเวลาแก้ไข
- ---
- ### list
- แสดงรายการไฟล์และไดเร็กทอรีในพาธที่กำหนด
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "list": "allow"
- }
- }
- ```
- เครื่องมือนี้แสดงรายการเนื้อหาไดเร็กทอรี ยอมรับรูปแบบ glob เพื่อกรองผลลัพธ์
- ---
- ### lsp (ขั้นทดลอง)
- โต้ตอบกับเซิร์ฟเวอร์ LSP ที่กำหนดค่าของคุณเพื่อรับฟีเจอร์อัจฉริยะด้านโค้ด เช่น คำจำกัดความ การอ้างอิง ข้อมูลโฮเวอร์ และลำดับชั้นการโทร
- :::note
- เครื่องมือนี้ใช้ได้เฉพาะเมื่อ `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (หรือ `OPENCODE_EXPERIMENTAL=true`)
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "lsp": "allow"
- }
- }
- ```
- การดำเนินการที่รองรับ ได้แก่ `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` และ `outgoingCalls`
- หากต้องการกำหนดค่าเซิร์ฟเวอร์ LSP ที่พร้อมใช้งานสำหรับโครงการของคุณ โปรดดู [LSP เซิร์ฟเวอร์](/docs/lsp)
- ---
- ### patch
- ใช้แพทช์กับไฟล์
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- เครื่องมือนี้ใช้ไฟล์แพทช์กับโค้ดเบสของคุณ มีประโยชน์สำหรับการใช้ความแตกต่างและแพตช์จากแหล่งต่างๆ
- :::note
- เครื่องมือ `patch` ถูกควบคุมโดยสิทธิ์ `edit` ซึ่งครอบคลุมการแก้ไขไฟล์ทั้งหมด (`edit`, `write`, `patch`, `multiedit`)
- :::
- ---
- ### skill
- โหลด [ทักษะ](/docs/skills) (ไฟล์ `SKILL.md`) และส่งคืนเนื้อหาในการสนทนา
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "skill": "allow"
- }
- }
- ```
- ---
- ### todowrite
- จัดการรายการสิ่งที่ต้องทำระหว่างเซสชันการเขียนโค้ด
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "todowrite": "allow"
- }
- }
- ```
- สร้างและอัปเดตรายการงานเพื่อติดตามความคืบหน้าระหว่างการดำเนินการที่ซับซ้อน LLM ใช้สิ่งนี้เพื่อจัดระเบียบงานที่มีหลายขั้นตอน
- :::note
- เครื่องมือนี้ปิดใช้งานสำหรับตัวแทนย่อยตามค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้ด้วยตนเอง [เรียนรู้เพิ่มเติม](/docs/agents/#สิทธิ์)
- :::
- ---
- ### webfetch
- ดึงเนื้อหาเว็บ
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "webfetch": "allow"
- }
- }
- ```
- อนุญาตให้ LLM ดึงข้อมูลและอ่านหน้าเว็บ มีประโยชน์สำหรับการค้นหาเอกสารหรือค้นคว้าแหล่งข้อมูลออนไลน์
- ---
- ### websearch
- ค้นหาข้อมูลในเว็บ
- :::note
- เครื่องมือนี้ใช้ได้เฉพาะเมื่อใช้ผู้ให้บริการ OpenCode หรือเมื่อตัวแปรสภาพแวดล้อม `OPENCODE_ENABLE_EXA` ถูกตั้งค่าเป็นค่าความจริง (เช่น `true` หรือ `1`)
- หากต้องการเปิดใช้งานเมื่อเปิดตัว OpenCode:
- ```bash
- OPENCODE_ENABLE_EXA=1 opencode
- ```
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "websearch": "allow"
- }
- }
- ```
- ทำการค้นหาเว็บโดยใช้ Exa AI เพื่อค้นหาข้อมูลที่เกี่ยวข้องทางออนไลน์ มีประโยชน์สำหรับการค้นคว้าหัวข้อ ค้นหาเหตุการณ์ปัจจุบัน หรือการรวบรวมข้อมูลนอกเหนือจากการตัดข้อมูลการฝึกอบรม
- ไม่จำเป็นต้องใช้คีย์ API เครื่องมือนี้เชื่อมต่อโดยตรงกับบริการ MCP ที่โฮสต์ของ Exa AI โดยไม่มีการตรวจสอบสิทธิ์
- :::tip
- ใช้ `websearch` เมื่อคุณต้องการค้นหาข้อมูล (การค้นพบ) และใช้ `webfetch` เมื่อคุณต้องการดึงเนื้อหาจาก URL เฉพาะ (การดึงข้อมูล)
- :::
- ---
- ### question
- ถามคำถามผู้ใช้ระหว่างการดำเนินการ
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "question": "allow"
- }
- }
- ```
- เครื่องมือนี้อนุญาตให้ LLM ถามคำถามผู้ใช้ระหว่างทำงาน มันมีประโยชน์สำหรับ:
- - การรวบรวมความชอบหรือความต้องการของผู้ใช้
- - ชี้แจงคำแนะนำที่ไม่ชัดเจน
- - การตัดสินใจเกี่ยวกับทางเลือกในการดำเนินการ
- - เสนอทางเลือกว่าจะไปในทิศทางใด
- คำถามแต่ละข้อประกอบด้วยส่วนหัว ข้อความคำถาม และรายการตัวเลือก ผู้ใช้สามารถเลือกจากตัวเลือกที่มีให้หรือพิมพ์คำตอบที่กำหนดเองได้ เมื่อมีคำถามหลายข้อ ผู้ใช้สามารถสลับไปมาระหว่างคำถามเหล่านั้นก่อนที่จะส่งคำตอบทั้งหมด
- ---
- ## เครื่องมือที่กำหนดเอง
- เครื่องมือแบบกำหนดเองช่วยให้คุณสามารถกำหนดฟังก์ชันของคุณเองที่ LLM สามารถเรียกได้ สิ่งเหล่านี้ถูกกำหนดไว้ในไฟล์ปรับแต่งของคุณและสามารถรันโค้ดได้ตามใจชอบ
- [เรียนรู้เพิ่มเติม](/docs/custom-tools) เกี่ยวกับการสร้างเครื่องมือที่กำหนดเอง
- ---
- ## MCP เซิร์ฟเวอร์
- เซิร์ฟเวอร์ MCP (Model Context Protocol) ช่วยให้คุณสามารถรวมเครื่องมือและบริการภายนอกได้ ซึ่งรวมถึงการเข้าถึงฐานข้อมูล การบูรณาการ API และบริการของบุคคลที่สาม
- [เรียนรู้เพิ่มเติม](/docs/mcp-servers) เกี่ยวกับการกำหนดค่าเซิร์ฟเวอร์ MCP
- ---
- ## ภายใน
- ภายใน เครื่องมือต่างๆ เช่น `grep`, `glob` และ `list` ใช้ [ripgrep](https://github.com/BurntSushi/ripgrep) ภายใต้ประทุน ตามค่าเริ่มต้น ripgrep เคารพรูปแบบ `.gitignore` ซึ่งหมายความว่าไฟล์และไดเร็กทอรีที่อยู่ใน `.gitignore` ของคุณจะถูกแยกออกจากการค้นหาและรายการ
- ---
- ### ละเว้นรูปแบบ
- หากต้องการรวมไฟล์ที่ปกติจะถูกละเว้น ให้สร้างไฟล์ `.ignore` ในรูทโปรเจ็กต์ของคุณ ไฟล์นี้สามารถอนุญาตเส้นทางบางอย่างได้อย่างชัดเจน
- ```text title=".ignore"
- !node_modules/
- !dist/
- !build/
- ```
- ตัวอย่างเช่น ไฟล์ `.ignore` นี้อนุญาตให้ ripgrep ค้นหาภายในไดเร็กทอรี `node_modules/`, `dist/` และ `build/` แม้ว่าไดเร็กทอรีเหล่านั้นจะแสดงอยู่ใน `.gitignore` ก็ตาม
|