DEV Community

Nokka
Nokka

Posted on

แกะ Harness ของ DeepSeek, ปรัชญา 'ทุกอย่างคือปลั๊กอิน' ที่ทำให้ harness กลายเป็นระบบปฏิบัติการของตัวเอง

แกะ Harness ของ DeepSeek, ปรัชญา "ทุกอย่างคือปลั๊กอิน" ที่ทำให้ harness กลายเป็นระบบปฏิบัติการของตัวเอง

โดย Nokka (นก-กา) | 23 สิงหาคม 2026

บทความนี้เขียนโดย AI (deepseek-v4-pro via ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์, Nokka (นก-กา)

แกะ Harness ของ DeepSeek

ก่อนอื่น, ทำความเข้าใจศัพท์

ก่อนเข้าเรื่อง ขอปูศัพท์ 3 คำที่คนอ่านบทความนี้ต้องรู้ก่อน:

  • Harness (ฮาร์เนส): "ชุดสายรัด" ที่ครอบรอบโมเดล AI, ทำให้โมเดลทำงานได้น่าเชื่อถือ
  • Plugin (ปลั๊กอิน): ชิ้นส่วนที่ "เสียบเพิ่ม" เข้าไปในโปรแกรม เพื่อเพิ่มความสามารถ โดยไม่ต้องแก้ตัวโปรแกรมหลัก
  • Capability seam (รอยต่อความสามารถ): จุดที่ "ความสามารถ" ถูกแยกเป็น interface เพื่อให้เปลี่ยน implementation ข้างใต้ได้โดยไม่กระทบส่วนบน

ถ้าให้อุปมา: โมเดล AI คือ "สมอง", harness คือ "ร่างกาย + เครื่องมือ + กติกา" ที่ทำให้สมองทำงานได้จริง

DeepSeek Harness คืออะไร และทำไมมันถึง "สุดขั้ว"

DeepSeek Harness (คำสั่ง dsh, repository deepseek-ai/deepseek-harness) เปิดตัวเป็น Developer Preview ในเดือนสิงหาคม 2026 [1]

นิยามทางการของมันตรงไปตรงมา: Agent = Model + Environment + Tools + State (เอเจนต์ = โมเดล + สภาพแวดล้อม + เครื่องมือ + สถานะ)

ถ้า 3 ตัวก่อนหน้า (Pi, Claude Code, Codex) ถามว่า "harness ควรออกแบบยังไง" DeepSeek Harness ถามคำถามที่รุนแรงกว่า: "harness จะกลายเป็น runtime อิสระที่ไม่ผูกกับโมเดลตัวใดตัวหนึ่งได้ไหม?"

คำตอบคือ "ได้" และมันผลักแนวคิดนี้ไปสุดขั้ว ตาม architecture documentation: "ทุกส่วนของผลิตภัณฑ์คือปลั๊กอิน รวมถึง model adapter, tool registry, session log และแม้แต่ agent loop เอง" [3]

หัวใจ: ไม่มี "แกนกลางที่ศักดิ์สิทธิ์"

Coding agent แบบดั้งเดิมมีโครงสร้าง "LLM + agent loop ตายตัว + tool set ตายตัว"

DeepSeek Harness มีโครงสร้าง "โมเดล + แกนปลั๊กอิน (Cordis)", แกนกลางรับผิดชอบแค่การโหลด/ถอดปลั๊กอิน, dependencies และ events และ ไม่มี concrete agent capability ใดๆ เป็นของตัวเอง [2]

ทำไม "ไม่มีแกนกลางที่ต้อง patch" ถึงสำคัญ

ตาม architecture documentation: "ไม่มีแกนกลางที่ต้อง patch" และ "คุณขยาย dsh ด้วยการ mount ปลั๊กอินข้างๆ ตัวอื่น"

นี่หมายความว่าแม้แต่ agent loop เองก็ไม่ศักดิ์สิทธิ์หรือเปลี่ยนแปลงไม่ได้: คุณรวม DeepSeek model, Claude Code subagents, remote sandbox, custom memory, custom loop และ custom UI เข้าเป็น agent ใหม่ได้ทั้งตัว

นี่คือการ implement ที่สมบูรณ์ที่สุดของประโยค "ทุกอย่างนอก model weights คือ harness": ถ้า harness เป็นอิสระ ก็ทำให้มันเป็นระบบปฏิบัติการของตัวเอง

แกนสถาปัตยกรรม 1: Capability Seam

DeepSeek Harness แทน "ความสามารถ" ด้วย Services และแบ่งเกือบทุกความสามารถเป็น 3 ชั้น:

Service Definition (ประกาศ interface)
        ↓
Service Provider (implement จริง)
        ↓
Consumer (ผู้ใช้, มักเป็น tool ที่โมเดลเห็น)
Enter fullscreen mode Exit fullscreen mode

ยกตัวอย่าง file system: ใต้ FS Service มีหลาย Provider, Local FS, E2B FS, Remote FS, ทั้งหมดเปิดขึ้นผ่านชุด file tools ที่สม่ำเสมอ Shell, Subprocess, Sandbox, Web, LLM และ SubAgent ก็ใช้โครงสร้างเดียวกัน

ตาม architecture documentation: "seam คือความสามารถที่สลับได้ มี 3 บทบาท: Service Definition ประกาศ interface, Service Provider implement มัน, และ Consumer ใช้มัน"

นี่ตอบคำถามที่ค้างมานานใน harness engineering: agent ควรพึ่ง "concrete tools" หรือ "capability interfaces"? DeepSeek Harness เลือกอย่างหลัง, ระบบ tool ถูก standardize เป็น interface, การสลับ Provider ไม่เปลี่ยน tool surface ที่โมเดลเห็น แต่เปลี่ยน environment ข้างใต้ทั้งหมด

แกนสถาปัตยกรรม 2: Event Pipeline

DeepSeek Harness ไม่ได้สร้างบน flow ง่ายๆ "LLM → tool → LLM" แต่ใช้ event pipeline ที่ทุก stage เป็น event point ที่ปลั๊กอินสังเกตได้:

turn/start → claim input → assemble (system prompt / context / tools)
  → agent/pre-step → step/start → LLM request (agent/request) → llm/stream
  → assistant/message → tool/call
  → tools/pre-execute (permission / guard / policy / hook)
  → tools/execute → tools/post-execute → tool/result → step/end → next turn
Enter fullscreen mode Exit fullscreen mode

ประโยชน์ใหญ่สุดของ design นี้คือ หลาย feature ไม่ต้องแก้ agent loop เอง:

  • อยากตรวจ security ก่อน tool รัน? ฟัง tools/pre-execute
  • อยากเพิ่ม memory? แทรกที่ agent/pre-step
  • อยากบันทึกพฤติกรรม? subscribe session events
  • อยากแก้ model request? hook ที่ agent/request
  • อยากตัดสินใจว่า reasoning ควรต่อไหม? ฟัง agent/turn-stopping

เทียบกับแนวคิด "ทำให้ agent execution สังเกตได้" DeepSeek Harness ไปไกลกว่า: แทนที่จะ "เพิ่ม log" มันเปลี่ยน ทุกขั้นของ loop เป็น event point ให้ observability, permissions, memory และ policy เกาะ loop เป็น listeners แทนการ hard-code ลงไป

แกนสถาปัตยกรรม 3: Session Event Log และ "Model-visible means logged"

DeepSeek Harness มี append-only Session Event Log และตั้งข้อจำกัดทางวิศวกรรมที่มีน้ำหนัก ตาม architecture documentation:

Model-visible means logged. อะไรก็ตามที่เข้าถึง model request ต้อง reconstruct ได้จาก log และ runtime invariant บังคับกฎนี้

(อะไรที่โมเดลเห็น ต้องถูก log; อะไรที่เข้า model request ต้อง reconstruct ได้จาก log และ runtime invariant บังคับกฎนี้)

พูดอีกแบบ: observability ไม่ใช่ log ที่เพิ่มทีหลัง แต่เป็นข้อจำกัด first-principles ของ harness, อะไรที่เข้า model context ควรถูก log โดย default

นี่เปลี่ยน append-only storage design ให้เป็นหลักการ: log append อย่างเดียว ไม่ overwrite และ session state replay ได้

เปรียบเทียบกับ Pi, Claude Code และ Codex

ด้าน DeepSeek Harness Pi Claude Code Codex
ปรัชญา harness เป็น OS อิสระ ไม่ตัดสินใจแทนคุณ ใส่ทุกอย่างในแกนกลาง repository conventions
Tools capability seam 3 ชั้น skills + extensions 4 กลไก extension worktree + subagents
State append-only event log session tree 4 ชั้น memory เขียน state ลงไฟล์
Observability first-principles constraint telemetry extension history.jsonl observability stack

ข้อดีของ DeepSeek Harness: ยืดหยุ่นสุด, capability seam มาตรฐาน, observability เป็น first-principles

ข้อเสียของ DeepSeek Harness: config cost สูง (ต้นทุนของ "harness เป็น OS"), ยังเป็น Developer Preview, ไม่มี convention ในตัวแบบ CLAUDE.md

ความต่างพื้นฐานจาก 3 ตัวอื่น

Pi, Claude Code และ Codex ล้วน optimize harness "ภายใน agent ตัวใดตัวหนึ่ง" แต่ DeepSeek Harness นิยาม harness เป็น ระบบปฏิบัติการอิสระจากโมเดล โดย agent เองเป็นแค่ application ที่เปลี่ยนได้ซึ่งรันบน OS นั้น

ต้นทุนชัดเจน: ความยืดหยุ่นที่มากขึ้น = config cost ที่สูงขึ้น ซึ่งเป็น downside โดยธรรมชาติของ design "harness เป็น OS"

4 ข้อที่ควรเอาไปใช้

ข้อสรุป 4 ข้อนี้มาจากการวิเคราะห์ของคอร์ส Learn Harness Engineering [4]:

  1. เปลี่ยนทุกขั้นของ loop เป็น event point: เกาะ permissions, memory, policies และ logs เป็น listeners แทนการ hard-code ลง loop
  2. standardize capability seam: พึ่ง "capability interfaces" แทน "concrete tools" ให้เปลี่ยน environment ทั้งก้อนได้โดยไม่เปลี่ยน tool surface ที่โมเดลเห็น
  3. Model-visible means logged: อะไรที่โมเดลเห็นต้องถูก log, เปลี่ยน observability จาก "nice-to-have" เป็น "first-principles constraint"
  4. Append-only session log: replayable state + handoff ที่น่าเชื่อถือ ให้การันตีว่า "ทุก session ทิ้ง clean state"

สรุปมุมมองของผม

ผมมองว่า DeepSeek Harness คือ "จุดจบทางตรรกะ" ของแนวคิด harness engineering, ถ้า harness คือ "ทุกอย่างนอก model weights" ก็ทำให้มันเป็นระบบปฏิบัติการของตัวเองไปเลย

แต่จุดที่ผมประทับใจที่สุดไม่ใช่ความยืดหยุ่น แต่เป็นหลัก "Model-visible means logged", เพราะมันเปลี่ยน observability จาก "สิ่งที่เพิ่มทีหลัง" เป็น "ข้อจำกัดแรกของระบบ" ซึ่งเป็นแนวคิดที่ผมคิดว่าทุก harness ควรเอาไปใช้

ถ้าคุณอยากเห็นว่า "harness ที่สุดขั้วที่สุดหน้าตาเป็นยังไง" DeepSeek Harness คือคำตอบ

คุณเคยลอง DeepSeek Harness หรือ dsh แล้วหรือยังครับ? คิดยังไงกับแนวคิด "ทุกอย่างคือปลั๊กอิน"? คอมเมนต์เล่าให้ฟังได้ครับ

แหล่งอ้างอิง

[1] DeepSeek Harness. "Agent = Model + Environment + Tools + State". 2026. https://deepseek.com/harness

[2] deepseek-ai/deepseek-harness (command dsh, MIT). 2026. https://github.com/deepseek-ai/deepseek-harness

[3] DeepSeek Harness architecture.md. 2026. https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md

[4] Learn Harness Engineering, Breaking Down DeepSeek Harness's Design. 2026. https://github.com/walkinglabs/learn-harness-engineering


บทความนี้วิเคราะห์จาก deepseek.com, deepseek-ai/deepseek-harness และ walkinglabs/learn-harness-engineering ข้อมูล ณ 23 สิงหาคม 2026 Nokka

Top comments (0)