# เครื่องมือ

Clew มีเครื่องมือในตัว 50+ รายการ พร้อมเครื่องมือ MCP ที่โหลดแบบไดนามิก เครื่องมือถูกเรียกโดยโมเดล AI ผ่านบล็อก `tool_use`

## วิธีการทำงานของเครื่องมือ

เครื่องมือถูกกำหนดด้วย Zod schemas ใน `src/Tool.ts` ผ่านตัวช่วย `buildTool()` และลงทะเบียนใน `src/tools.ts`

    โมเดลส่ง tool_use
      ปรับมาตรฐานการเรียกใช้เครื่องมือ (toolCallParser.ts)
      ตรวจสอบสิทธิ์ (permissions.ts)
      ฮุค PreToolUse (ปลั๊กอิน)
      ดำเนินการเครื่องมือ (StreamingToolExecutor)
      ฮุค PostToolUse (ปลั๊กอิน)
      ส่งคืนผลลัพธ์เป็น tool_result
      วนซ้ำคำถามต่อไป

## การดำเนินการไฟล์และโค้ด

เครื่องมือ | คำอธิบาย
--- | ---
`Read` | อ่านไฟล์พร้อมหมายเลขบรรทัด, รองรับรูปภาพ, PDF, Jupyter notebooks
`Write` | สร้างไฟล์ใหม่พร้อมเนื้อหาเต็ม
`Edit` | แก้ไขแบบแทนที่สตริงที่แน่นอน
`Glob` | ค้นหาไฟล์ด้วย pattern, เรียงตามเวลาแก้ไข
`Grep` | ค้นหาเนื้อหาด้วย regex พร้อมบรรทัดบริบท
`NotebookEdit` | แก้ไขเซลล์ Jupyter notebook

## เชลล์และระบบ

เครื่องมือ | คำอธิบาย
--- | ---
`Bash` | รันคำสั่ง shell พร้อม timeout, background, sandbox
`Monitor` | สตรีม stdout/stderr จากงานพื้นหลังแบบเรียลไทม์
`TaskOutput` | รับผลลัพธ์จากงานที่กำลังรันหรือเสร็จแล้ว

## ค้นหาและเว็บ

เครื่องมือ | คำอธิบาย
--- | ---
`WebSearch` | ค้นหาเว็บหลายผู้ให้บริการ (Tavily, Brave, Serper, SearXNG, DuckDuckGo)
`WebFetch` | ดึงและวิเคราะห์เนื้อหาจาก URL
`SessionSearch` | ค้นหาข้อความเต็มในประวัติเซสชันที่ผ่านมา

## ความปลอดภัยและสิทธิ์ของเครื่องมือ

แต่ละเครื่องมือประกาศ:

- isEnabled() — พร้อมใช้งานใน build ปัจจุบันหรือไม่
- isConcurrencySafe() — รันพร้อมกับเครื่องมืออื่นได้หรือไม่
- isReadOnly() — ไม่แก้ไขระบบไฟล์
- isDestructive() — ดำเนินการที่ไม่สามารถย้อนกลับ