devguard v1.1.0 · MIT License
GitHub ↗
Platform: macOS · Linux · Windows Shell: Bash 3.2+ · Zsh · PowerShell Agents: Claude Code · Copilot · Antigravity · Cursor · OpenCode · Codex · Gemini

devguard

devguard คือระบบควบคุมมาตรฐานการทำงานแบบต้องมีหลักฐานจริง (verified-dev) ผสานกับชุดเครื่องมือประหยัด Token ที่ล็อกเวอร์ชันเสถียรไว้ให้ ติดตั้งเพียงครั้งเดียวแล้วแชร์ทั้งกฎการทำงานและเครื่องมือทั้งหมดร่วมกันได้ทุก Agent: Claude Code, VS Code (Copilot), Google Antigravity, Cursor, OpenCode, Codex CLI และ Gemini CLI

แนวคิดการออกแบบ 2 ชั้น (Two-Layer Architecture) (1) ชั้นวิธีทำงาน (Working Mode): บังคับให้ AI เลือก Playbook ตามประเภทงาน, อยู่ในโหมดอ่านอย่างเดียวเมื่อถามคำถาม และต้องมีหลักฐานการรันจริงก่อนบอกว่า "เสร็จ"
(2) ชั้นประหยัด Token (Components & Companion Tools): ย่อผลลัพธ์คำสั่งใน Terminal และสร้างกราฟ AST ของโค้ดโดยไม่ตัดทอนไฟล์หลักฐานใน .verify/*.log

การติดตั้ง (Installation)

ปิดโปรแกรม Claude Code, VS Code และ Antigravity ก่อนรันคำสั่ง (เพื่อไม่ให้โปรแกรมเขียนทับไฟล์ตั้งค่าตอนปิด) จากนั้นรันคำสั่งเดียวใน Terminal หรือ PowerShell:

sh — ติดตั้งในคำสั่งเดียว (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/Burapa-J/devguard/main/bootstrap.sh | bash
PowerShell — ติดตั้งในคำสั่งเดียว (Windows)
irm https://raw.githubusercontent.com/Burapa-J/devguard/main/bootstrap.ps1 | iex

สคริปต์ bootstrap.sh / bootstrap.ps1 จะทำงานดังนี้โดยอัตโนมัติ:

  1. ติดตั้งเครื่องมือพื้นฐานที่ยังขาดผ่าน Homebrew บน macOS, apt-get บน Linux หรือ winget บน Windows (git, jq, python3, node, xcbeautify บน macOS, ast-grep, shellcheck)
  2. Clone โปรเจกต์ไว้ที่ ~/.local/share/agent-kit/src (หรืออัปเดตของเดิมหากเคยติดตั้งแล้ว)
  3. รัน ./install.sh (ผ่าน Git Bash บน Windows) ด้วยค่าเริ่มต้นที่แนะนำ: ติดตั้งกฎหลัก, สกิล verified-dev, hook เตือนหลัง compact, เชื่อม codegraph + projectmem + rtk และเปิดการตั้งค่าโปรเจกต์อัตโนมัติใน ~/Developer
  4. เพิ่ม ~/.local/bin เข้า PATH (ใน ~/.zshrc หรือ User PATH ของ Windows พร้อมไฟล์ .cmd shim สำหรับเรียกใช้จาก PowerShell และ CMD)

ตัวเลือกการติดตั้งเพิ่มเติม

sh
./install.sh --dry-run                                        # ดูสิ่งที่จะเปลี่ยนโดยไม่แก้ไขไฟล์จริง
./install.sh --with=codegraph,projectmem,rtk,context-mode     # เปิดใช้งาน context-mode เพิ่มเติม
./install.sh --targets=claude,vscode,antigravity              # เลือกติดตั้งเฉพาะบาง Agent
./install.sh --auto-project=~/Developer,~/Work                # กำหนดโฟลเดอร์ที่ให้ตั้งค่าโปรเจกต์อัตโนมัติ

เริ่มต้นอย่างรวดเร็ว (Quickstart)

หลังติดตั้งเสร็จ ให้เปิด Terminal แท็บใหม่ แล้วตรวจสอบสถานะด้วยคำสั่ง:

sh
devguard status        # ดูตารางสถานะการเชื่อมต่อของทุก Agent และเครื่องมือ
devguard doctor        # ตรวจสุขภาพการติดตั้งทั้ง 8 ข้อ
devguard stats         # ดูสถิติการประหยัด Token และอัตราการ Verify ผ่าน
devguard gate init     # ใน repo: สร้าง .devguard/checks และติดตั้งด่านตอน commit/push

1. วิธีทำงาน (verified-dev)

พัฒนาต่อยอดจากแนวคิดของ pstack (Lauren Tan), Karpathy Guidelines และ Ponytail ประกอบด้วยกฎหลักขนาดสั้น 9 บรรทัด (rules/core.md) และสกิลเชิงลึก (skills/verified-dev/SKILL.md):

2. เครื่องมือที่ติดตั้งและดูแลให้ (Components & Companion Tools)

ติดตั้งตรงจากต้นทาง (Upstream) ด้วยเวอร์ชันที่ล็อกไว้ชัดเจน และไม่ใช้ local prompt proxy ที่ทำให้การเชื่อมต่อสะดุด

ชื่อเครื่องมือ ประเภท หน้าที่ แพ็กเกจต้นทาง ค่าเริ่มต้น
codegraph MCP Component สร้างกราฟ AST ค้นหา Symbol และจุดเรียกใช้ (codegraph_explore) npm @colbymchenry/codegraph@1.6.2 เปิด (On)
projectmem MCP Component ความจำรายโปรเจกต์และระดับเครื่อง (บั๊ก, สิ่งที่ลองแล้ว, วิธีแก้, การตัดสินใจ) พร้อมซิงค์ข้ามเครื่องแบบ CRDT ผ่าน iCloud Drive อัตโนมัติ PyPI projectmem==0.3.5 (แยก venv) เปิด (On)
rtk Hook / Plugin บีบอัดผลลัพธ์คำสั่งใน Terminal ลง 38–90% ก่อนส่งเข้า Context Homebrew rtk (1.2.0+) เปิด (On)
context-mode MCP Component รันคำสั่งใน Sandbox และทำดัชนีค้นหาสำหรับ Output ขนาดใหญ่ (Node ≥ 22.5) npm context-mode@2.1.7 เลือกเปิดเอง
ast-grep Companion CLI ค้นหาและแก้โค้ดตามโครงสร้าง Tree-sitter AST แบบหลายบรรทัด Homebrew ast-grep ติดตั้งพร้อมใช้
xcbeautify Companion CLI ย่อ log ของ xcodebuild ให้เหลือเฉพาะสรุปและบรรทัดที่เกิดปัญหา Homebrew xcbeautify ติดตั้งพร้อมใช้
shellcheck Companion CLI ตรวจ shell script แบบ static; kit ใช้ตรวจตัวเองทุก commit Homebrew shellcheck ติดตั้งพร้อมใช้
gitleaks Gate check สแกน secret ในไฟล์ที่ stage ไว้ เพิ่มเข้า .devguard/checks ของ repo ที่ต้องการ Homebrew gitleaks เลือกใช้ราย repo

Agents ที่รองรับและตำแหน่งไฟล์

Agent ไฟล์กฎหลัก (Rules) โฟลเดอร์ Skill ไฟล์ตั้งค่า MCP
Claude Code ~/.claude/CLAUDE.md ~/.claude/skills/verified-dev ~/.claude.json
VS Code (Copilot) ~/.copilot/copilot-instructions.md อ่านจาก ~/.claude/skills ร่วมกัน ~/Library/Application Support/Code/User/mcp.json
Google Antigravity ~/.gemini/GEMINI.md ~/.gemini/config/skills/verified-dev ~/.gemini/config/mcp_config.json
Cursor ~/.cursor/rules/devguard.mdc ~/.cursor/skills/verified-dev ~/.cursor/mcp.json
OpenCode ~/.config/opencode/AGENTS.md ~/.config/opencode/skills/verified-dev ~/.config/opencode/opencode.jsonc
Codex CLI ~/.codex/AGENTS.md ~/.codex/skills/verified-dev ~/.codex/config.toml
Gemini CLI ~/.gemini/GEMINI.md ~/.gemini/skills/verified-dev ~/.gemini/settings.json

คำสั่ง CLI ทั้งหมด

คำสั่ง การทำงาน
devguard เปิดเมนูแบบ Interactive เลือกคำสั่งด้วยปุ่มลูกศร
devguard status แสดงตารางสรุปสิ่งที่ติดตั้งและเชื่อมต่อไว้ในทุก Agent
devguard doctor [--fix] ตรวจสุขภาพ 8 จุดเสี่ยง และใส่ --fix เพื่อซ่อมแซมอัตโนมัติ
devguard stats [options] ดูสถิติประหยัด Token, ขนาดกราฟ AST และอัตราการ Verify ผ่าน (-p โปรเจกต์นี้, -d รายวัน, --dashboard, --reset)
devguard sync [--quiet] ซิงค์ความจำของ projectmem ข้ามเครื่องผ่าน iCloud Drive แบบ Append-Only CRDT
devguard sync --check อ่านอย่างเดียว: ทุกเครื่องมี event ตรงกันหรือยัง แยกตามโปรเจกต์ (in-sync, diverged, single, incomplete)
devguard check [commit|push] รัน .devguard/checks ของ repo (ด่าน "เสร็จ") ล้มแล้ว exit 1
devguard gate init|install|uninstall สร้างไฟล์ checks ตัวอย่าง และ/หรือ ติดตั้ง/ถอด hook pre-commit และ pre-push
devguard review [--with claude|agy|gemini] [--base REF] ให้ model อีกค่ายรีวิวงานแบบอ่านอย่างเดียว ผลอยู่ที่ .verify/review-*.md
devguard eval run|compare วัดความถูกต้อง, tag ที่มา และการกลับคำเมื่อถูกกดดัน เทียบผลสองรอบได้
devguard select เลือกเปิด/ปิด Agents และเครื่องมือแบบ Interactive
devguard update ดึงโค้ดเวอร์ชันล่าสุด อัปเกรดเครื่องมือทั้งหมด และซิงก์การตั้งค่าใหม่
devguard init [--all] ตั้งค่าโปรเจกต์ปัจจุบัน หรือทุกโปรเจกต์ในโฟลเดอร์อัตโนมัติ
devguard skip สร้างไฟล์ .agent-kit-skip เพื่อยกเว้นโปรเจกต์ปัจจุบันจากการตั้งค่าอัตโนมัติ
devguard uninstall [--purge] ถอดการเชื่อมต่อคืนค่าเดิมทุกไฟล์ (ใส่ --purge เพื่อลบ CLI ที่ระบบติดตั้งให้ด้วย)

การเก็บหลักฐานด้วย agent-verify

เพื่อไม่ให้ rtk ตัดทอนบรรทัดสำคัญของการทดสอบ คำสั่งตรวจสอบจะรันผ่าน agent-verify ซึ่งบันทึกผลลัพธ์เต็มลงไฟล์ .verify/<name>.log พร้อมชี้เลขบรรทัดที่เกิด error (errors_at=L...):

sh
agent-verify unit-tests -- swift test
# ผลลัพธ์: agent-verify[unit-tests] exit=0 lines=42 log=.verify/unit-tests.log

agent-verify build-check -- xcodebuild test -scheme MyApp -destination 'platform=macOS'
# ผลลัพธ์: agent-verify[build-check] exit=65 lines=184 errors_at=L92,L141 log=.verify/build-check.log

ด่าน "เสร็จ" (.devguard/checks)

กฎเป็นแค่การขอให้ agent ตรวจงาน แต่ด่านนี้ตรวจให้จริงไม่ว่า model ไหนเขียนโค้ด แต่ละ repo เขียนคำสั่งตรวจจริงไว้ในไฟล์ .devguard/checks (commit เข้า repo) บรรทัดละหนึ่ง check:

.devguard/checks
commit build:   swift build                                    # ทุก commit: ต้องเร็ว
push   test:    swift test                                     # ก่อน push: suite เต็ม
commit secrets: gitleaks git --staged --redact --no-banner .   # เลือกใส่: กัน secret หลุดเข้า commit

devguard gate init สร้างไฟล์ตัวอย่างและติดตั้ง hook pre-commit / pre-push ส่วน devguard check ใช้รันเองได้ทุกเมื่อ ทุก check รันผ่าน agent-verify ถ้าล้มจะแสดงบรรทัดเดียว พร้อม log เต็มที่ .verify/gate-<name>.log

รีวิวข้ามค่าย (devguard review)

model แต่ละค่ายจับปัญหาได้ต่างกัน devguard review ส่งงาน (งานที่ยังไม่ commit รวมไฟล์ใหม่, commit ล่าสุด หรือทั้งช่วงด้วย --base REF) ให้ model อีกค่ายรีวิวแบบอ่านอย่างเดียวตาม rubric: บั๊ก, จุดที่อาจพัง, test ที่ผ่านแม้ไม่มีการแก้ และคำกล่าวอ้างที่โค้ดไม่รองรับ แสดงผลบรรทัดเดียว (verdict, จำนวนข้อ, path ของรายงาน) และเก็บรายงานไว้ที่ .verify/review-<เวลา>-<ผู้รีวิว>-<pid>.md

sh
devguard review --with agy        # Claude เขียน: ให้ Gemini (ผ่าน Antigravity) รีวิว
devguard review --with claude     # Gemini เขียน: ให้ Claude รีวิว
devguard review --base main       # รีวิวทั้ง branch

เลือกค่ายที่ไม่ได้เขียนโค้ดนั้น Gemini CLI ปฏิเสธบัญชีส่วนตัวแล้ว ฝั่ง Gemini จึงใช้ agy แทน CLI ของผู้รีวิวต้อง login ใน terminal หนึ่งครั้ง ถ้ายังไม่ได้ login จะมีคำแนะนำบอก ผลรีวิวเป็นแค่ข้อสงสัย ต้องเปิดโค้ดยืนยันทีละข้อ

วัดผล agent (devguard eval)

การแก้กฎจะยังเป็นแค่สมมติฐานจนกว่าจะวัดผล ชุดคำถามเป็น JSON บรรทัดละข้อ มี prompt, regex expect, regex reject (ไม่บังคับ) และ pushback (ไม่บังคับ) สำหรับถามกดดันต่อในบทสนทนาเดิม:

sh
devguard eval run .devguard/evals/kit.jsonl --with agy --reps 3 --label before
# ...แก้กฎ...
devguard eval run .devguard/evals/kit.jsonl --with agy --reps 3 --label after
devguard eval compare .verify/eval-before-*.json .verify/eval-after-*.json

รายงานผลรายข้อ: คำตอบแรกถูกหรือไม่, จำนวน tag ที่มาต่อคำตอบ และกลับคำบ่อยแค่ไหนเมื่อถูกกดดัน

หลักฐาน: รีวิวข้ามค่ายช่วยได้จริงไหม

นำ 7 commit ของ kit นี้มาสร้างเป็น repo แยก แล้วให้ Claude และ Gemini รีวิวแบบไม่เห็นคำตอบ เทียบกับบั๊กที่รู้แน่ 11 ข้อ: แต่ละค่ายจับได้ 8/11 และใช้สองค่ายรวมกันจับได้ 10/11 โดยแต่ละค่ายเจอบั๊กที่อีกค่ายพลาด commit ที่คิดว่าไม่มีบั๊กก็ถูกทั้งสองค่ายชี้ปัญหา และตรวจแล้วเป็นบั๊กจริง ส่วนเกณฑ์อัตโนมัติจาก diff สั่งให้รีวิวทุก commit ที่มีโค้ด จึงไม่ได้สร้าง ข้อสรุป: ให้ agent รันเฉพาะ devguard check กับทุกงานเป็นหลัก ส่วน devguard review ให้รันเฉพาะเมื่อผู้ใช้สั่งเท่านั้น (และแค่แนะนำท้ายงานเมื่อแก้จุดเสี่ยงสูง เช่น ข้อมูลถาวร, sync, concurrency หรือ security) ข้อจำกัด: รันครั้งเดียวต่อคู่ และบั๊ก 11 ข้อมาจากผู้เขียนคนเดียว จึงบอกได้แค่แนวโน้ม ไม่ใช่ตัวเลขที่แม่นยำ รายละเอียด: docs/experiments/2026-10-30-cross-model-review.md

การวัดผลการทำงาน (devguard stats)

รันคำสั่ง devguard stats เพื่อดูผลลัพธ์จากการใช้งานจริงครบทั้ง 3 หมวด:

Terminal Output — devguard stats
╭─ 1. RTK Shell Compression Savings ─────────────────────────────────────────────╮
Total commands:    2446                 Tokens saved:      194.2K (38.6%)
Efficiency meter:  █████████░░░░░░░░░░░░░░░ 38.6%
╰────────────────────────────────────────────────────────────────────────────────╯
╭─ 2. Repositories (CodeGraph & ProjectMem) ─────────────────────────────────────╮
│ Repository                      Files  Symbols    Edges    Fixes Tokens Saved │
├────────────────────────────────────────────────────────────────────────────────┤
│ TOTAL (8 repos)                   655    16207    46092       51       134000 │
╰────────────────────────────────────────────────────────────────────────────────╯
╭─ 3. Verification & Workflow Quality (.verify/*.log) ───────────────────────────╮
│ Repository                   Verifies   Passed   Failed Pass Rate  Lines Saved │
├────────────────────────────────────────────────────────────────────────────────┤
│ TOTAL (5 repos)                   135      127        8       94%        22497 │
╰────────────────────────────────────────────────────────────────────────────────╯

การตรวจสุขภาพและซ่อมแซมตัวเอง (devguard doctor)

คำสั่ง devguard doctor ตรวจสอบ 8 จุดเสี่ยงของระบบ และซ่อมให้อัตโนมัติเมื่อใส่ --fix:

  1. คราบการติดตั้ง tokless เดิม (รวมถึงล้าง ANTHROPIC_BASE_URL proxy ที่ค้างใน ~/.claude/settings.json)
  2. Symlink ขาดหรือชื่อเก่าที่ค้างอยู่ใน ~/.local/bin
  3. ปลั๊กอินที่ทำงานซ้ำซ้อนหรือตีกัน (caveman, ponytail, cavecrew)
  4. ตำแหน่งไฟล์ MCP ของแต่ละ Agent
  5. ปลั๊กอินและ Hook ของ RTK สำหรับ Google Antigravity
  6. ความตรงกันของบล็อกกฎในไฟล์ของแต่ละ Agent เทียบกับ rules/core.md
  7. เวอร์ชันของ CLI ทั้งหมดและเครื่องมือเสริม (ast-grep, xcbeautify, shellcheck)
  8. memory sync ข้ามเครื่อง: hook .pth ชี้ไปที่ kit นี้, มี iCloud hub และไม่มี projectmem MCP ที่ยังรันโค้ด sync เก่า (ให้ปิดเปิด agent ใหม่ --fix ไม่ปิด process ให้)

การตั้งค่าโปรเจกต์อัตโนมัติ และซิงค์ความจำข้ามเครื่อง

ทุก Git repository ภายใต้ ~/Developer (ลึก 1–2 ชั้น) จะถูกตั้งค่าให้อัตโนมัติผ่าน 3 ช่องทาง: ตอนเปิด Claude Code, ตอนสั่ง cd เข้าโฟลเดอร์ใน zsh และการสแกนเบื้องหลังของ launchd ทุก 30 นาที โดยตรวจซ่อมทั้ง .gitignore, .codegraph/, .projectmem/config.toml, .git/hooks/post-commit และทะเบียนใน ~/.projectmem/projects.json

ซิงค์ความจำข้ามเครื่องผ่าน iCloud Drive (Multi-Mac CRDT Sync): เมื่อเปิดใช้งาน iCloud Drive ระบบจะซิงค์ความจำของ projectmem ข้ามเครื่องอัตโนมัติผ่าน ~/Library/Mobile Documents/com~apple~CloudDocs/devguard-sync/:

การถอนการติดตั้ง (Uninstalling)

ทุกไฟล์ที่ถูกแก้ไขจะมีสำเนาสำรองอยู่ที่ ~/.agent-kit-backup/<เวลา>/ (เก็บชุดสำรองล่าสุดไว้สูงสุด 10 ชุดโดยอัตโนมัติ) และการสั่ง uninstall จะคืนสภาพไฟล์เดิมกลับมาทุกไบต์:

sh
devguard uninstall --dry-run     # ดูสิ่งที่จะถูกลบโดยไม่ลบจริง
devguard uninstall               # ถอดกฎ, skill, hook และ MCP ออก (เก็บ CLI ของเครื่องมือไว้)
devguard uninstall --purge       # ลบ CLI ที่ devguard ติดตั้งให้ด้วย