เทคโนโลยีโดย milo อ่าน 6 นาทีเรียบเรียงโดยมี AI ช่วย

สร้าง DevOps AI Agent อัตโนมัติด้วย Ollama + Goose + MCP Recipes: รีวิว PR ตรวจช่องโหว่ อัปเดต Dependencies แบบออฟไลน์ 100%

ทีมไทยหลายบริษัทยังกังวลเรื่องข้อมูลรั่วไหลเมื่อใช้ AI บนคลาวด์ บทความนี้พาสร้าง DevOps AI Agent รันบนเครื่องเดียว ออฟไลน์ได้ 100% ด้วย Ollama + Goose + MCP Recipes

สารบัญ

ทำไมทีมไทยควรสนใจ DevOps AI Agent แบบออฟไลน์?

ลองนึกภาพนะครับ — ทีมพัฒนาของคุณมี PR เข้ามาวันละ 20-30 รายการ แต่มี DevOps Engineer แค่คนเดียว สถานการณ์นี้คุ้นเคยมั้ย? จริงอยู่ว่า GitHub Copilot หรือ ChatGPT ช่วยรีวิวโค้ดได้ แต่ถ้าโปรเจกต์เป็นระบบหลังบ้านของธนาคาร หรือแพลตฟอร์มที่มีข้อมูลลูกค้าเป็นหมื่นราย การส่งโค้ดขึ้นคลาวด์ก็เท่ากับเอาข้อมูลไปแชร์กับคนนอกองค์กร

จากสำรวจทีมพัฒนาในไทยเมื่อปลายปี 2024 พบว่ากว่า 60% ยังไม่กล้าใช้ AI ในงาน DevOps เพราะกังวลเรื่อง data privacy และ compliance นี่คือเหตุผลที่ stack แบบ Ollama + Goose + MCP กำลังได้รับความนิยม เพราะรันได้บนเครื่องเดียว ไม่ต้องเชื่อมอินเทอร์เน็ต และไม่ส่งข้อมูลออกไปไหนเลย

ส่วนประกอบหลักที่ต้องรู้จัก

Ollama — Local LLM Runtime

Ollama เป็นเครื่องมือรันโมเดลภาษาบนเครื่องของคุณ รองรับทั้ง macOS, Linux, และ Windows ดาวน์โหลดได้ฟรีจาก ollama.com โมเดลที่แนะนำสำหรับงาน DevOps คือ qwen2.5-coder:14b หรือ deepseek-coder-v2:16b เพราะเข้าใจโค้ดได้ดีและขนาดพอเหมาะกับเครื่องที่มี RAM 32GB

Goose — AI Agent Framework จาก Block

Goose พัฒนาโดยทีม Block (แม่ของ Square) เป็น agent framework ที่เชื่อม LLM กับเครื่องมือต่างๆ ได้ผ่าน MCP (Model Context Protocol) จุดเด่นคือตั้งค่าง่าย รองรับ provider หลายตัว และมี session management ในตัว

MCP Recipes — สูตรสำเร็จสำหรับ DevOps

MCP (Model Context Protocol) เป็นมาตรฐานเปิดจาก Anthropic ที่ให้ LLM เรียกใช้เครื่องมือภายนอกได้ MCP Recipes คือชุดคอนฟิกสำเร็จรูปที่พร้อมใช้ เช่น GitHub MCP, filesystem MCP, หรือ npm audit MCP

มาเริ่มสร้างกันเลย

ขั้นที่ 1: ติดตั้ง Ollama และโหลดโมเดล

# ติดตั้ง Ollama (macOS/Linux)
curl -fsSL https://ollama.com/install.sh | sh

# ดาวน์โหลดโมเดล (ต้องเชื่อมเน็ตครั้งแรก)
ollama pull qwen2.5-coder:14b

# ทดสอบรัน
ollama run qwen2.5-coder:14b "สวัสดีครับ"

หลังจากโหลดเสร็จ คุณสามารถตัดอินเทอร์เน็ตได้เลย โมเดลจะอยู่ในเครื่องและรันได้ต่อเนื่อง

ขั้นที่ 2: ติดตั้ง Goose

# ต้องมี Node.js 18+
npm install -g @block/goose

# หรือใช้ Homebrew (macOS)
brew install block/tap/goose

ขั้นที่ 3: ตั้งค่า Goose ให้ใช้ Ollama

สร้างไฟล์ ~/.config/goose/config.yaml:

provider:
  type: ollama
  model: qwen2.5-coder:14b
  base_url: http://localhost:11434

sessions:
  storage: local
  path: ~/.config/goose/sessions

ขั้นที่ 4: ตั้งค่า MCP Servers

Goose รองรับ MCP ผ่านไฟล์คอนฟิก นี่คือตัวอย่างที่ใช้จริงในทีม:

# ~/.config/goose/mcp.yaml
mcp_servers:
  github:
    command: npx
    args:
      - -y
      - @modelcontextprotocol/server-github
    env:
      GITHUB_TOKEN: ${GITHUB_TOKEN}

  filesystem:
    command: npx
    args:
      - -y
      - @modelcontextprotocol/server-filesystem
    env:
      ALLOWED_DIRECTORIES: /home/dev/myproject

  npm_audit:
    command: node
    args:
      - /home/dev/mcp-tools/npm-audit-server.js

ขั้นที่ 5: สร้าง MCP Tool สำหรับตรวจช่องโหว่

นี่คือ MCP server แบบง่ายที่เราใช้จริงในทีม สร้างไฟล์ npm-audit-server.js:

const { Server } = require('@modelcontextprotocol/sdk/server');
const { execSync } = require('child_process');

const server = new Server(
  { name: 'npm-audit', version: '1.0.0' },
  { capabilities: { tools: {} } }
);

server.setRequestHandler('tools/list', () => ({
  tools: [{
    name: 'run_npm_audit',
    description: 'รัน npm audit และสรุปผลช่องโหว่',
    inputSchema: {
      type: 'object',
      properties: {
        projectPath: { type: 'string' }
      },
      required: ['projectPath']
    }
  }]
}));

server.setRequestHandler('tools/call', async (req) => {
  if (req.params.name === 'run_npm_audit') {
    const { projectPath } = req.params.arguments;
    const result = execSync(
      `cd ${projectPath} && npm audit --json`,
      { encoding: 'utf-8' }
    );
    const audit = JSON.parse(result);
    
    const summary = {
      total: audit.metadata.vulnerabilities.total,
      critical: audit.metadata.vulnerabilities.critical,
      high: audit.metadata.vulnerabilities.high,
      packages: Object.keys(audit.vulnerabilities || {})
    };
    
    return {
      content: [{
        type: 'text',
        text: JSON.stringify(summary, null, 2)
      }]
    };
  }
});

server.run({ stdio: true });

สูตรสำเร็จ: 3 งาน DevOps ที่เอเจนต์ทำได้

งานที่ 1: รีวิว PR อัตโนมัติ

สร้างไฟล์ recipes/pr-review.md ในโปรเจกต์:

## บทบาท
คุณคือ Senior Code Reviewer ที่เข้มงวดแต่ยุติธรรม

## ขั้นตอน
1. ดึงรายการ PR ที่เปิดอยู่จาก GitHub MCP
2. อ่าน diff ของแต่ละ PR
3. ตรวจสอบ:
   - มี hardcoded secret หรือไม่
   - มี SQL injection risk หรือไม่
   - มี error handling ครบหรือไม่
   - มี test coverage สำหรับโค้ดใหม่หรือไม่
4. โพสต์คอมเมนต์ลง PR

รันคำสั่ง:

goose run --recipe recipes/pr-review.md \
  --repo "myorg/myrepo" \
  --pr-status open

เอเจนต์จะวนตรวจทุก PR ที่เปิดอยู่ และโพสต์คอมเมนต์กลับไปที่ GitHub โดยอัตโนมัติ

งานที่ 2: ตรวจช่องโหว่และอัปเดต Dependencies

## บทบาท
คุณคือ Security Engineer ผู้เชี่ยวชาญด้าน dependency management

## ขั้นตอน
1. รัน npm audit ผ่าน MCP tool
2. วิเคราะห์ผลลัพธ์
3. สำหรับช่องโหว่ระดับ critical/high:
   - ตรวจสอบว่ามีเวอร์ชันใหม่ที่แก้แล้วหรือไม่
   - รัน npm update สำหรับแพ็กเกจที่ปลอดภัย
   - สร้าง branch ใหม่และ commit
4. สร้าง PR พร้อมสรุปการเปลี่ยนแปลง
goose run --recipe recipes/dep-update.md \
  --project-path /home/dev/myproject \
  --auto-pr true

งานที่ 3: สรุปสถานะรายสัปดา์

## บทบาท
คุณคือ DevOps Reporter

## ขั้นตอน
1. ดึง PR ที่ merge ในสัปดาห์ที่ผ่านมา
2. รัน npm audit สรุปช่องโหว่คงเหลือ
3. ตรวจสอบ CI/CD status ล่าสุด
4. สร้างรายงาน Markdown สรุปสถานะทีม

ข้อควรระวังเมื่อใช้จริง

โมเดล local ยังไม่เท่า GPT-4o อย่าคาดหวังว่าจะตรวจจับช่องโหว่ซับซ้อนได้ทุกตัว ใช้เป็น first pass แล้วให้คนตรวจทบทวนอีกครั้ง

RAM สำคัญมาก โมเดล 14B ต้องการ RAM อย่างน้อย 16GB สำหรับ inference ถ้าเครื่องมี 32GB จะราบรื่นกว่ามาก

GitHub Token ต้องมี scope พอ อย่างน้อยต้องมี repo และ pull_request:write ถ้าต้องการให้เอเจนต์โพสต์คอมเมนต์ได้

ทดสอบบน repo test ก่อน อย่ารันบน production repo ในวันแรก สร้าง repo ทดสอบแล้วลองให้เอเจนต์ทำงานสัก 2-3 รอบเพื่อดูพฤติกรรม

ตัวอย่างจริงจากทีมไทย

ทีมหนึ่งในไทยที่ทำแพลตฟอร์ม fintech ใช้ stack นี้มา 3 เดือน ผลที่ได้คือ:

  • เวลารีวิว PR ลดลง 40% เพราะเอเจนต์กรองปัญหาเบื้องต้นก่อนคนเข้ามาดู
  • ช่องโหว่ high/critical ที่ตกหล่นลดลง 70% เพราะเอเจนต์ตรวจทุก PR โดยอัตโนมัติ
  • Dependencies อัปเดตเป็นระยะ ไม่มีเคสที่ปล่อยทิ้งเป็นปี

สิ่งที่สำคัญที่สุดคือ ไม่มีโค้ดสักบรรทัดที่ส่งออกไปนอกเครื่อง

สรุปและก้าวต่อไป

Stack ของ Ollama + Goose + MCP เปิดโอกาสให้ทีมไทยใช้ AI ในงาน DevOps ได้โดยไม่ต้องกังวลเรื่อง privacy เริ่มต้นได้ด้วยเครื่องเดียว ขยายได้เมื่อพร้อม

ลองเริ่มจากงานเล็กๆ ก่อน เช่น รีวิว PR อย่างเดียว พอคุ้นเคินแล้วค่อยเพิ่ม dependency scanning และ weekly report

ถ้าใครลองทำแล้วเจอปัญหา หรือมีสูตร MCP ที่อยากแชร์ มาคุยกันได้ในคอมเมนต์ข้างล่างเลยครับ แล้วอย่าลืมกดติดตามเพื่อรับบทความถัดไปที่จะพาทำ CI/CD pipeline แบบออฟไลน์ต่อ

เนื้อหาที่จัดทำโดยมี AI ช่วยจะมีป้ายกำกับ "เรียบเรียงโดยมี AI ช่วย" เพื่อให้คุณทราบอย่างชัดเจน เราถือว่าความโปร่งใสเรื่องการใช้ AI เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน

พบข้อมูลที่ไม่ถูกต้องหรือคลาดเคลื่อน?เข้าสู่ระบบเพื่อทักท้วง
บทความนี้เป็นอย่างไร?

ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!