154,302 ดาว กระทู้รีวิวทุกเรื่องที่ผมอ่านบอกผมสามอย่างเหมือนกัน: ทุกอย่างเป็นปลั๊กอิน, session log เป็นแบบ append-only, และมันเป็น developer preview
ไม่มีสักเรื่องบอกผมว่ามันกินเนื้อที่ดิสก์เท่าไหร่ หรือว่า RAM idle session ใช้เท่าไหร่ หรือว่าเกิดอะไรขึ้นเมื่อคุณชี้ไปที่ endpoint ที่ไม่ใช่ของ DeepSeek เอง
ผมเลยติดตั้งมันและให้มันทำงานหนึ่งอย่างสามครั้ง: สร้าง live ISS tracker ในไฟล์ HTML ไฟล์เดียวที่สมบูรณ์ในตัวเอง การตั้งค่า provider สามแบบ, prompt เดียวกัน, model เดียวกัน ทั้งสามเสร็จสมบูรณ์ ทั้งสามพิมพ์ "Done" อย่างมั่นใจพร้อมรายการหัวข้อย่อยของทุกอย่างที่มันบอกว่าตรวจสอบแล้ว
จากนั้นผมเปิดทั้งสามหน้าในเบราว์เซอร์ สองในนั้นพัง
ข้อสรุปสำคัญ
npm install @deepseek-ai/dshดึง 531 แพคเกจและ 306 MB บน macOS ไม่ใช่ 1.5 GB แต่ก็ไม่เล็กเช่นกัน และแพคเกจdshเองมีขนาด 172 KB- dsh web server idle อยู่ที่ 35 ถึง 40 MB RSS โดยมี session เปิดอยู่ หลังจากพุ่งสูงสุดประมาณ 212 MB ตอนบูต ตัวเลข 500 MB ที่คนพูดถึงไม่ใช่กระบวนการของเซิร์ฟเวอร์
- มุมมอง Trajectory คือของจริงในรุ่นนี้ มันเป็นสตรีมเหตุการณ์ JSONL แบบ append-only บนดิสก์ และมันช่วยให้ผมวินิจฉัยปัญหาการตั้งค่าได้ภายในไม่กี่นาทีแทนที่จะเป็นหลายชั่วโมง
- สองบรรทัด YAML (
compat.thinkingFormatและmaxTokensจริง) เปลี่ยนงานเดียวกันจากการรัน 36 ขั้นตอน 422 วินาที เป็น 15 ขั้นตอน 152 วินาที ไม่มีบรรทัดใดอยู่ในเว็บไซต์เอกสาร - ทุกการรันรายงานความสำเร็จ มีเพียงอันเดียวที่สร้างหน้าที่ไม่มีข้อผิดพลาดในคอนโซลเลย อ่านผลลัพธ์ ไม่ใช่สรุป
- มันเป็น developer preview และ README บอกไว้ด้วยตัวพิมพ์ใหญ่ ใช่, pilot ที่ถูกควบคุม ไม่ใช่ production control plane
นี่คือบทความทั้งหมดในภาพเดียว หน้า ISS tracker สองหน้า, prompt เดียวกัน, model เดียวกัน, แตกต่างกันที่การตั้งค่า ด้านซ้ายคือรันที่ปรับแต่งแล้ว ด้านขวาคือรันที่ไม่ได้ปรับ

เปรียบเทียบแบบเคียงข้างกันของหน้า ISS tracker สองหน้าที่สร้างโดย DeepSeek Harness ด้านซ้ายมีแผนที่โลกที่บิดเบี้ยวและป้ายที่ค้างอยู่ ด้านขวาแสดงผลถูกต้องพร้อมเครื่องหมายสด
ซ้าย: รันที่ปรับแต่งแล้ว 152 วินาที, เส้นทาง SVG ผิดรูปสิบห้าเส้นและป้ายที่ค้าง "Stale" ขวา: รันแบบ naive 422 วินาที, ไม่มีข้อผิดพลาดในคอนโซล ทั้งสองรายงานว่าเสร็จ
ทำไมรีวิว DeepSeek Harness ทุกเรื่องถึงพูดสามอย่างเหมือนกัน
Repo ถูกอัปโหลดเมื่อวันที่ 13 สิงหาคม และตอนที่ผมเริ่มเขียน มันมี 154,302 ดาว และ 15,960 forks ภายใต้ลิขสิทธิ์ MIT (GitHub, สิงหาคม 2026) ด้วยความเร็วขนาดนั้น เนื้อหาส่วนใหญ่เป็นการอ่าน README เพราะยังไม่มีเวลาสำหรับอย่างอื่น
ดังนั้น ภาพรวมรีวิว DeepSeek Harness ที่มีอยู่จึงแบ่งออกเป็นสามกลุ่ม และทั้งสามกลุ่มมีช่องโหว่เดียวกัน บทวิเคราะห์แบบ source-audit วิเคราะห์รอยต่อของปลั๊กอินและไม่เคยรัน benchmark บทวิเคราะห์ข้อมูลเปรียบเทียบจำนวน token และข้ามขนาดการติดตั้งและหน่วยความจำอย่างชัดเจน ส่วนบทวิเคราะห์สำหรับการจัดซื้อขององค์กรก็ถึงคำตัดสินโดยแทบไม่มีตัวเลขที่วัดได้เลย
ไม่มีใครติดตั้งมัน รันงานตั้งแต่ต้นจนจบ แล้วเปิดผลลัพธ์
ในขณะเดียวกัน คำวิจารณ์ที่เฉียบคมที่สุดไม่ได้อยู่ในรีวิวใดๆ มันเป็นความเห็นสองข้อในกระทู้เปิดตัว ซึ่งได้รับ 737 คะแนนและ 309 ความเห็นในสี่วัน

ความเห็น Hacker News สองข้อที่พิมพ์ตรงจากกระทู้เปิดตัวเกี่ยวกับขนาดการติดตั้งและการใช้หน่วยความจำ idle ของ DeepSeek Harness
สองข้อร้องเรียนที่รีวิวนี้พยายามตรวจสอบจริงๆ อ้างอิงแบบ word-for-word จากกระทู้เปิดตัว
ผู้ใช้ Kuyawa: "47mb downloaded, 1.5gb after build, wtf?" และในแก้ไข "35 dependencies make up for 1.4gb, what they are for?" ผู้ใช้ eglintondust ในกระทู้ย่อยเกี่ยวกับโหลด CPU: "Memory usage definitely is out of hand, have an idle session right now eating 500MB" (Hacker News, สิงหาคม 2026)
นั่นคือสองตัวเลขที่ผมต้องการตรวจสอบก่อน เพราะมันเป็นตัวเลขที่ตัดสินว่าสิ่งนี้จะอยู่บนแล็ปท็อปของคุณหรือไม่ ทั้งสองกลายเป็นซับซ้อนกว่าที่คำพูดแนะนำ และหนึ่งในนั้นวัดสิ่งที่แตกต่างจากที่คนสันนิษฐาน หากคุณต้องการ primer เกี่ยวกับสถาปัตยกรรมก่อนที่จะเข้าใจทั้งหมดนี้ นั่นคือบทความอื่น: DeepSeek Harness คืออะไรกันแน่
วิธีที่ผมตั้งค่ารีวิว DeepSeek Harness นี้: หนึ่งงาน, หนึ่ง endpoint
การตั้งค่านั้นจงใจให้น่าเบื่อเพื่อให้ตัวแปรคือการตั้งค่า ไม่ใช่งาน
งาน. สร้าง live ISS tracker ใน index.html ไฟล์เดียวที่สมบูรณ์ในตัวเอง ต้องใช้ API ภายนอก, การแสดงแผนที่, ลูป polling, และการจัดการข้อผิดพลาด ดังนั้นมันบังคับให้มีการวนลูปเครื่องมือหลายขั้นตอนจริงๆ แทนที่จะเป็นการถ่ายโอนโค้ดครั้งเดียว และที่สำคัญ ผมเปิดผลลัพธ์และเห็นได้ทันทีว่ามันทำงานหรือไม่
Model. deepseek-ai/deepseek-v4-flash-0731 ซึ่งเป็น model เดียวกันในทั้งสามรัน ดังนั้นจึงไม่มีอะไรในการเปรียบเทียบที่เป็นความแตกต่างของ model
Endpoint. นี่คือส่วนที่คนข้าม Harness ไม่มี model ในตัว มันต้องใช้ base URL และคีย์ที่เข้ากันได้กับ OpenAI เต็มรูปแบบ และพื้นผิวการตั้งค่าสำหรับสิ่งนั้นคือที่มาของปัญหาทั้งสามข้อของผม ผมรันเทียบกับ endpoint ที่เข้ากันได้กับ OpenAI ซึ่งโฮสต์อยู่ โดยมีราคา DeepSeek แบบ flat และไม่มีค่าธรรมเนียมชั่วโมง peak ซึ่งสำคัญเมื่อคุณกำลังจะรันงานเดียวกันซ้ำๆ และต้องการให้ค่าใช้จ่ายเทียบเคียงได้ระหว่างรัน endpoint ที่เข้ากันได้ทุกตัวทำงานในลักษณะเดียวกัน
| Endpoint | โปรโตคอล | GET /models | รูปแบบการเรียกเก็บเงิน | V4 1M-context |
|---|---|---|---|---|
| DeepSeek first-party API | openai-completions | ใช่ | แบ่ง peak และ off-peak, 01:00-04:00 และ 06:00-10:00 UTC เป็น peak, off-peak ครึ่งนึง (เอกสาร DeepSeek API, สิงหาคม 2026) | ใช่ |
| Atlas Cloud | openai-completions | ใช่, คืนค่า 200 พร้อม 135 models ตอนที่ผมตรวจสอบ | แบบต่อ token, ไม่มีค่าธรรมเนียม peak | ใช่, $0.14 in / $0.28 out ต่อ 1M สำหรับ V4 Flash |
| Local Ollama | openai-completions | ใช่ | ฟรี, แม้ว่า web search ในตัวยังต้องใช้ Ollama cloud | ขึ้นอยู่กับ local model |
หมายเหตุตรงไปตรงมาหนึ่งข้อในแถวกลาง เพราะมันกัดผมทีหลัง: มันคืนค่า {"code":200,"msg":"succeed","data":[...]} แทนที่จะเป็นซอง {"object":"list","data":[...]} มาตรฐานของ OpenAI อาร์เรย์ data มีอยู่ ดังนั้น client ที่ยืดหยุ่นก็ใช้ได้ แต่อย่าถือว่า endpoint "ที่เข้ากันได้กับ OpenAI" ทุกตัวจะเหมือนกันกับ spec ทุกไบต์
ราคาอ่านจาก หน้า model V4 Flash เมื่อวันที่ 18 สิงหาคม 2026 ไม่มีป้ายส่วนลดสำหรับ model DeepSeek ใดๆ ในตอนนี้ ดังนั้นไม่มีอะไรที่นี่เป็นอัตราจำกัดเวลา
ขั้นตอนที่ 1: ติดตั้ง DeepSeek Harness และวัดว่ามันเสียค่าอะไรจริงๆ
ทุกอย่างต่อจากนี้สามารถทำซ้ำได้บน macOS ด้วย Node 22.19+ หรือ 24+ (ไม่มี support 23.x และคู่มือหลายเล่มก็เข้าใจผิดตรงนี้) ผมรัน Node v24.15.0 และ @deepseek-ai/[email protected]
เริ่มต้นด้วย quickstart ซึ่งเป็นคำสั่งเดียว:
bash1node -v # ^22.19.0 || >=24, ไม่ใช่ 23.x 2npx @deepseek-ai/dsh web # Web UI ที่ http://127.0.0.1:3080 3
เพื่อให้ได้ตัวเลขที่คุณสามารถเปรียบเทียบกับข้อกล่าวอ้าง 1.5 GB ได้จริง ให้ติดตั้งลงในไดเรกทอรีที่สะอาดแทนแล้ววัด:
bash1mkdir dsh-size && cd dsh-size && npm init -y 2npm install @deepseek-ai/dsh 3du -sh node_modules 4du -sh node_modules/* | sort -h | tail -8 # ที่ที่น้ำหนักอยู่ 5
นี่คือสิ่งที่ได้บนเครื่องของผม:
text1added 531 packages in 2m 2306M node_modules 3255 รายการระดับบนสุดใน node_modules 4172K node_modules/@deepseek-ai/dsh <- ตัวแพคเกจเอง 5 6 13M node_modules/@shikijs 7 13M node_modules/openai 8 14M node_modules/@google/genai 9 17M node_modules/@img/sharp-libvips-darwin-arm64 10 24M node_modules/@mistralai/mistralai 11 26M node_modules/node-pty 12 27M node_modules/@deepseek-ai 13 34M node_modules/@opentelemetry 14
ดังนั้น: 306 MB, ไม่ใช่ 1.5 GB ตัวเลข 1.5 GB ในความคิดเห็น Hacker News นั้นเป็นการ build จาก source แบบเต็ม ซึ่งลาก dev dependencies และ build output ไปทั่วทั้ง monorepo การติดตั้ง runtime เป็นหนึ่งในห้าของนั้น
แต่ถึงกระนั้น 306 MB สำหรับ coding agent ก็ยังมากอยู่ดี และรายละเอียดก็อธิบายได้ว่าทำไมคนถึงหงุดหงิด คุณกำลังติดตั้ง SDK ของผู้จำหน่ายสามรายที่คุณอาจไม่เคยเรียก (openai, @google/genai, @mistralai/mistralai รวมกัน 51 MB), ต้นไม้ OpenTelemetry เต็ม, ไฟล์ไบนารี sharp ดั้งเดิม, และ syntax highlighter "ทุกอย่างเป็นปลั๊กอิน" มีค่าใช้จ่ายในการจัดส่ง และตอนนี้คุณจ่ายทั้งหมดล่วงหน้าไม่ว่าคุณจะใช้เส้นทางเหล่านั้นหรือไม่
สำหรับหน่วยความจำ idle ให้บูต web profile, เปิด session, ปล่อยไว้เฉยๆ และอ่าน RSS:
bash1npx @deepseek-ai/dsh web --port 3099 2# จากนั้น ในอีก shell: 3ps -o pid,rss,command -p $(pgrep -f "dsh web") 4
สุ่มตัวอย่างทุกนาทีเป็นเวลาห้านาทีโดยมี session เปิดอยู่และไม่มีงานทำงาน:
text1t+0s 101.8 MB (ทันทีหลังจากเปิด session) 2t+60s 37.0 MB 3t+120s 39.8 MB 4t+180s 38.8 MB 5t+240s 35.8 MB 6t+300s 35.0 MB 7
มันแตะประมาณ 212 MB ระหว่างบูต, ตกลงมาที่ ~102 MB เมื่อ UI เชื่อมต่อ, จากนั้น garbage collector ก็ลดมันลงมาเหลือแถบ 35 ถึง 40 MB และมันก็อยู่ตรงนั้น นั่นไม่ใช่ "เกินการควบคุม"
แต่ eglintondust ก็ไม่จำเป็นต้องผิด และนี่คือส่วนที่ควรทำความเข้าใจ: โปรไฟล์ dsh web คือเซิร์ฟเวอร์ท้องถิ่นบวกกับแท็บเบราว์เซอร์ 35 MB คือเซิร์ฟเวอร์ UI เป็นเว็บแอปเต็มรูปแบบในเบราว์เซอร์ของคุณ และหน่วยความจำนั้นถูกคิดค่าใช้จ่ายกับ Chrome ไม่ใช่ dsh หากคุณกำลังดู session idle 500 MB ใน Activity Monitor ให้ตรวจสอบว่ากระบวนการใดเป็นสาเหตุก่อนที่จะรายงานบั๊ก รายละเอียดการติดตั้งเต็มอยู่ใน คำแนะนำการติดตั้ง 10 นาที

ผลลัพธ์เทอร์มินัลจริงแสดงพื้นที่ติดตั้งและการวัดหน่วยความจำ idle ของ DeepSeek Harness
การวัดจริง พร้อมคำสั่งที่มองเห็นได้ ติดตั้ง 306 MB, idle 35 MB
ขั้นตอนที่ 2: ชี้ DeepSeek Harness ไปที่ endpoint ของคุณเอง
ใน UI นี่คือ Settings จากนั้น Models จากนั้น Add a custom provider: provider ID, base URL, protocol, key, model list คุณยังสามารถเขียนมันลงใน $DSH_HOME/settings.yaml ได้โดยตรง (ค่าเริ่มต้น ~/.dsh/settings.yaml) ซึ่งเป็นสิ่งที่ผมทำ เพราะเวอร์ชันไฟล์คือสิ่งที่คุณสามารถ diff ระหว่างรันได้
ส่วนต่างๆ ในไฟล์นั้นถูกคีย์ด้วย plugin ID ซึ่งไม่ชัดเจนในครั้งแรก dict provider อยู่ภายใต้ llm-pi-ai และการเลือก model เริ่มต้นอยู่ภายใต้ agent-default-model:
yaml1llm-pi-ai: 2 providers: 3 atlas: 4 displayName: Atlas Cloud 5 api: openai-completions 6 baseURL: https://api.atlascloud.ai/v1 7 apiKeyEnv: ATLAS_API_KEY 8 models: 9 - id: deepseek-ai/deepseek-v4-flash-0731 10 11agent-default-model: 12 provider: atlas 13 model: deepseek-ai/deepseek-v4-flash-0731 14
นั่นคือการตั้งค่าแบบ naive และมันคือสิ่งที่ผมเริ่มต้นด้วย มันใช้งานได้ รับคีย์จาก คอนโซล Atlas, export ATLAS_API_KEY=..., และการรันก็ผ่านไป สังเกตว่า apiKeyEnv เป็นการอ้างอิง ไม่ใช่ความลับ ดังนั้นจึงไม่มีคีย์ใดไปอยู่ในไฟล์นี้
รายละเอียดหนึ่งจาก UI ที่พลาดได้ง่ายและดีจริงๆ: เมื่อคีย์มาจาก environment ฟิลด์ API key จะแสดงเป็น Provided by the launch environment (read-only) จุดสีเขียวถัดจาก provider หมายความว่าเส้นทางถูกแก้ไข จุดสีแดงถัดจาก provider DeepSeek ในตัวหมายความว่ามันไม่มีข้อมูลรับรอง นั่นคือการตรวจสอบสุขภาพสองวินาทีที่คุณไม่ต้องไปค้นหา
สองอย่างเกี่ยวกับการตั้งค่านี้ผิดเงียบๆ อย่างไรก็ตาม และผมไม่พบจนกระทั่งผมเปรียบเทียบ trajectories เก็บความคิดนั้นไว้จนถึงขั้นตอนที่ 4

หน้า Settings Models ของ DeepSeek Harness แสดง custom provider ที่เข้ากันได้กับ OpenAI ชื่อ Atlas Cloud พร้อมจุดสถานะสีเขียวและคีย์ API ที่มาจาก launch environment แบบอ่านอย่างเดียว
การตั้งค่า, Models, custom provider จุดสีเขียวหมายความว่าเส้นทางแก้ไขแล้ว; provider DeepSeek ในตัวด้านบนเป็นสีแดงเพราะไม่มีคีย์
ขั้นตอนที่ 3: รีวิว DeepSeek Harness เปรียบเทียบสามรัน
Prompt เดียวกันทุกครั้ง วางข้อความนี้แบบคำต่อคำถ้าคุณต้องการทำซ้ำ:
text1Build a single-page ISS tracker in one self-contained index.html. 2 3Requirements: 4- Fetch the ISS position from https://api.wheretheiss.at/v1/satellites/25544 every 5 seconds. 5- Render a world map with a marker at the current lat/lon, plus a fading trail of the last 60 positions. 6- Show altitude (km), velocity (km/h), and the current lat/lon in a readable panel. 7- No build step, no npm install, no API key. Vanilla JS + inline CSS only. 8- Handle fetch failures without breaking the page: keep the last known position and show a stale badge. 9- Write the file, then report done. 10
รันแบบ headless เพื่อให้ transcript สะอาด:
bash1export DSH_HOME=$PWD/dsh-home 2export ATLAS_API_KEY=<your key> 3dsh --profile headless "<the prompt above>" 4
สามการตั้งค่า:
- รัน A, แบบปรับแต่ง:
compat.thinkingFormat: deepseek,contextWindow: 1048576,maxTokens: 131072. - รัน B, แบบ naive จากขั้นตอนที่ 2: รายการ model มีแต่
id. - รัน C, ความผิดพลาดที่ดูสมเหตุสมผล: เหมือน A แต่มี
maxTokens: 4096, ตัวเลขที่ผมยกมาจากตัวอย่าง README ของ adapter เอง
ทั้งสาม exit 0 ทั้งสามเขียน index.html ทั้งสามพิมพ์สรุปที่อ้างว่าตรวจสอบแล้ว สรุปของรัน C ถึงกับอวดการซ่อมแซมตัวเอง: "A couple of bugs I caught and fixed during the build: an undefined variable in the trail fade, incorrect N/S-E/W suffix logic..."
จากนั้นผมเปิดทั้งสามไฟล์ในเบราว์เซอร์จริงโดยเปิดคอนโซล และปล่อยให้มัน polling สองรอบ
| รัน A (ปรับแต่ง) | รัน B (naive) | รัน C (maxTokens: 4096) | |
|---|---|---|---|
| เวลาจริง | 152.7 วินาที | 422.5 วินาที | 50.2 วินาที |
| ขั้นตอน | 15 | 36 | 8 |
| การเรียกเครื่องมือ | 14 | 35 | 7 |
| ส่วนผสมเครื่องมือ | 6 edit, 4 read, 2 bash | 19 bash, 8 read, 3 grep | 4 edit, 1 write, 1 bash |
| ขนาดไฟล์ที่เขียน | 19,569 B | 10,812 B | 11,326 B |
| ข้อผิดพลาดคอนโซลเมื่อโหลด | 15 | 0 | 12 |
| สิ่งที่พัง | เส้นทางทุกทวีปผิดรูป, ไม่มีเครื่องหมาย ISS, ป้าย "Stale" ติดค้างตลอดไป | ไม่มีอะไร | trail circles ทั้งหมด cx="NaN", marker จอดที่ 0,0, ละติจูดพิมพ์เป็น -34.76° S |
อ่านตารางนั้นอีกครั้ง รันที่เร็วที่สุดและรันที่ผมปรับแต่งอย่างระมัดระวังทั้งคู่ส่งหน้าที่พัง รันที่ช้า, naive, แพงที่สุดคือรันเดียวที่ทำงานได้
ความล้มเหลวของรัน A เป็นสิ่งที่ให้ความรู้ แผง telemetry สมบูรณ์แบบ: ระดับความสูง 431 กม., ความเร็ว 27,547 กม./ชม., ละติจูด/ลองจิจูดที่ถูกต้อง, อัปเดตแบบสด แผนที่ด้านล่างมันเป็นก้อนสีเขียว เพราะเส้นทางของทวีปทั้งสิบห้าสิ้นสุดด้วย L ที่ไม่มีพิกัด ("... L48.0 624.0 L Z") และป้ายบอกว่า "Stale, keeping last position" พร้อม "Last update: -" ในขณะที่การดึงข้อมูลสำเร็จสามครั้งอยู่ในแท็บเครือข่าย มันได้ส่วนที่ยากถูกต้องและส่วนที่มองเห็นผิด
เหตุผลอยู่ในบันทึกการใช้เหตุผลของมันเอง ที่ขั้นตอนที่ 12 ในคำพูดของมันเอง: มันลบตัวแปรที่ตัวสร้างแผนที่ของมันยังใช้อยู่, สังเกตเห็น, และเดินหน้าต่อไป การถดถอยที่เกิดจากตัวเองแบบนี้ในช่วงท้ายของการรันคือสิ่งที่ trajectory แบบ append-only เหมาะสำหรับ ซึ่งเป็นขั้นตอนถัดไป
รัน C ตลกกว่าและแย่กว่า มันอ้างว่าแก้ไขบั๊ก trail fade และตรรกะคำต่อท้าย N/S แล้ว trail คือสิ่งที่พังพอดี (วงกลม NaN สิบสองวง, ไม่มี trail แสดงเลย), และป้ายละติจูดอ่านว่า -34.76° S ซึ่งเป็น double-signed มันไม่ได้แก้ไขสองสิ่งที่มันบอกว่ามันแก้ไขเลย และมันตรวจสอบงานด้วย node --check ซึ่งแยกวิเคราะห์ไวยากรณ์ JavaScript และไม่รู้ว่าเส้นทาง SVG ถูกต้องตามกฎหมายหรือไม่

หน้า ISS tracker ของรันที่สาม: trail ที่ตำแหน่ง NaN, marker ติดอยู่ที่มุมซ้ายบน, และป้ายละติจูดแบบ double-signed
รัน C, การรัน 50 วินาที: สวย, สด, และพังเงียบๆ ในสองจุดที่มันอ้างว่าแก้ไขแล้ว
ไม่มีสิ่งใดเป็นบั๊กของ Harness จริงๆ มันเป็นบั๊กของ coding-agent ที่ Harness ดำเนินการอย่างซื่อสัตย์และรายงานว่าสำเร็จอย่างซื่อสัตย์ ซึ่งนำเราไปสู่ส่วนเดียวของรุ่นนี้ที่ทำให้ผมประทับใจจริงๆ
ขั้นตอนที่ 4: การแก้ไขสองบรรทัด และมุมมอง Trajectory ของ DeepSeek Harness ที่พบมัน
รัน B ใช้เวลา 2.8 เท่าของรัน A ไม่สมเหตุสมผลสำหรับผม model เดียวกัน, งานเดียวกัน, และความแตกต่างเพียงอย่างเดียวคือ YAML สองสามบรรทัด ดังนั้นผมจึงไปที่ Trajectory
คำอธิบายอย่างเป็นทางการนั้นถูกต้อง ซึ่งหายากกว่าที่ควรจะเป็น: "Everything the model sees is recorded in an append-only session log: system prompts, reasoning, tool calls and results, subagent scheduling, and every context injection... In the Trajectory view, you can inspect these records by source. Resume, fork, search, and replay all operate on the same event stream" (DeepSeek Harness, สิงหาคม 2026)
มันไม่ใช่การตลาด สตรีมเป็นไฟล์จริง:
bash1ls $DSH_HOME/sessions/<workspace>/session-<uuid>/session.jsonl.zstd 2
หนึ่งเหตุการณ์ JSON ต่อบรรทัด, zstd-framed, append-only รัน A สร้าง 606 เหตุการณ์; รัน B สร้าง 1,709 กรองตามแหล่งที่มาใน UI หรือเพียง grep ไฟล์ที่ถอดรหัสแล้ว ประเภทเหตุการณ์คือสิ่งที่ประโยคข้างต้นสัญญาไว้: turn/start, step/start, request/header, request/context, assistant/chunk, reasoning-chunks, tool-call-chunks, tool/call, tool/result, step/end, turn/end
เหตุการณ์ request/header คือสิ่งที่แก้ปัญหาได้ มันบันทึกการตั้งค่าที่ส่งไปบนสายจริง:
jsonc1// รัน A 2{"config":{"provider":"atlas","model":"deepseek-ai/deepseek-v4-flash-0731","maxTokens":131072}, 3 "adapterDefaults":{"maxTokens":true}} 4 5// รัน B 6{"config":{"provider":"atlas","model":"deepseek-ai/deepseek-v4-flash-0731"}} 7
รัน B ไม่ได้ส่งขีดจำกัด output เลย และการใช้เหตุผลของมันพองตัวเป็น 72,420 ตัวอักษรใน 33 บล็อก เทียบกับ 9,094 ตัวอักษรของรัน A ใน 9 บล็อก นั่นคือที่มาของ 270 วินาทีที่เพิ่มขึ้นและ 44,170 output token ที่เพิ่มขึ้น
สาเหตุมีเอกสาร แต่ไม่อยู่ในเว็บไซต์เอกสาร มันถูกฝังอยู่ใน packages/llm/llm-pi-ai/README.md: ภาษาถิ่นของการคิดนั้น เดาจาก URL endpoint ในคำพูดของผู้ดูแลเอง compat.thinkingFormat เป็นสิ่งที่ "pi-ai guesses from the endpoint URL; a private gateway's URL says nothing, so a DeepSeek-dialect gateway would be spoken to in the OpenAI dialect with no way to correct it."
endpoint ของผมคืนค่า reasoning_content ซึ่งเป็นตัวสะกดของ DeepSeek ชื่อโฮสต์ของมันไม่ได้บอกอะไรเกี่ยวกับเรื่องนั้น ดังนั้นในรัน B adapter จึงถอยกลับไปใช้ dialect ของ OpenAI, ไม่สามารถส่งระดับการคิดได้, และ model ก็ใช้เหตุผลตามค่าเริ่มต้นของตัวเองในทุกๆ 36 การเรียก แยกต่างหาก, รายการ model ที่ประกาศเฉพาะ id จะสืบทอดค่าตกสำรองของเส้นทาง defaultContextWindow: 262144 และ defaultMaxTokens: 32768 ดังนั้น model ที่มี 1,048,576 token จะสูญเสียสามในสี่ของหน้าต่างอย่างเงียบๆ
ทั้งสองเป็นสองบรรทัด:
yaml1llm-pi-ai: 2 providers: 3 atlas: 4 api: openai-completions # compat.* มีอยู่ภายใต้โปรโตคอลนี้เท่านั้น 5 baseURL: https://api.atlascloud.ai/v1 6 apiKeyEnv: ATLAS_API_KEY 7 compat: 8 thinkingFormat: deepseek # หยุดเดาจาก URL 9 supportsReasoningEffort: true 10 models: 11 - id: deepseek-ai/deepseek-v4-flash-0731 12 contextWindow: 1048576 # แทนที่ค่า fallback 262,144 13 maxTokens: 131072 # ปล่อยให้ reasoning มีพื้นที่ว่างจริง 14
สองสิ่งที่ต้องจำไว้ในหัว ลำดับการแก้ไขคือ model, จากนั้น route, จากนั้นรายการแคตตาล็อกที่ติดตั้ง, จากนั้นการเดา URL ของ pi-ai ดังนั้นค่าที่ระดับ model จึงชนะ และ compat.* มีอยู่ภายใต้ api: openai-completions เท่านั้น; วางไว้ที่อื่นแล้วการแก้ไขจะล้มเหลวทันที adapter ยังจงใจไม่รองรับ Bedrock, Vertex, Azure, หรือ Codex เนื่องจากการรับรองความถูกต้องของพวกเขาต้องการมากกว่าคีย์, endpoint, และ headers
ตั้งค่าแล้ว การตั้งค่าสายของรัน A ก็ถูกต้อง ใบเรียกเก็บ token ลดลง 3.5 เท่า และมันยังส่งแผนที่ที่พังอยู่ ซึ่งเป็นบทสรุปที่ตรงไปตรงมาของแบบฝึกหัดทั้งหมดนี้: การแก้ไขการตั้งค่าเป็นของจริง และมันแก้ไขใบเรียกเก็บเงิน ไม่ใช่การตรวจสอบโค้ดที่คุณยังต้องทำเอง

สตรีมเหตุการณ์ session แบบ append-only จากการรัน DeepSeek Harness จริง พร้อมจำนวนเหตุการณ์และ request header ที่เปิดเผยปัญหาการตั้งค่า
สตรีมเหตุการณ์ Trajectory จากรัน A: 606 เหตุการณ์ และเหตุการณ์เดียวที่เปิดเผยขีดจำกัด output ที่ขาดหายไป
รีวิว DeepSeek Harness นี้มีค่าใช้จ่ายเท่าไหร่ และพร้อมสำหรับการผลิตหรือไม่
การรัน agent แบบเต็มสามครั้งของงานที่ไม่สำคัญ จาก trajectories โดยตรง ในอัตรา flat $0.14 in / $0.28 out ต่อ 1M:
| รัน A | รัน B | รัน C | รวม | |
|---|---|---|---|---|
| การเรียก LLM | 15 | 36 | 8 | 59 |
| Uncached input tokens | 38,452 | 109,408 | 20,781 | 168,641 |
| Output tokens | 12,740 | 56,910 | 6,969 | 76,619 |
| Cache-read tokens | 280,832 | 2,150,144 | 108,800 | 2,539,776 |
| Cache share of prompt | 88.0% | 95.2% | 84.0% | 93.8% |
| Uncached input + output | $0.0090 | $0.0313 | $0.0049 | $0.0452 |
| หากทุก cached token คิดราคาในอัตรา input เต็ม | $0.0483 | $0.3323 | $0.0201 | $0.4007 |
สองสิ่งที่ควรดึงออกมาจากนั้น ประการแรก ตัวเลข cache เป็นจริงและ endpoint รายงาน: 93.8% ของ prompt token ทั้งหมดในสามรันกลับมาเป็น cache reads ซึ่งเป็นสิ่งที่ทำให้ agent loop มีราคาไม่แพงเลย ประการที่สอง การรันที่ตั้งค่าผิดมีค่าใช้จ่าย 3.5 เท่าของรันที่ปรับแต่งแล้วสำหรับงานที่มีขนาดเท่ากัน นั่นคือราคาจริงของ YAML สองบรรทัด
สังเกตรูปร่างของการเรียกครั้งแรกในทุกรัน: ประมาณ 11,000 input token ก่อนที่ agent จะทำอะไรเลย นั่นคือ system prompt, tool schemas, และ skill catalogue ที่ "ทุกอย่างเป็นปลั๊กอิน" หมายถึง และคุณจ่ายมันในทุก session ใหม่ นั่นคือเหตุผลที่อัตราการ cache hit สำคัญกว่าใน harness นี้มากกว่าใน harness ที่บางกว่า และเหตุใดการรันแบบ Minimal (bash plus file editor เท่านั้น) ก็คุ้มค่าที่จะลองถ้างานของคุณไม่ต้องการชุดเครื่องมือเต็ม
แล้วคุณสามารถนำไปใช้ในการผลิตได้หรือไม่? ไม่ และโปรเจกต์ก็เห็นด้วยกับคุณ คำพูดของREADME: "DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES." Web UI เปิดด้วย modal ที่บอกว่า "DeepSeek Harness 0.1 remains in testing for Harness developers." ลิขสิทธิ์ MIT หมายความว่าคุณสามารถทำอะไรก็ได้ตามต้องการ; มันไม่ได้หมายความว่า API ที่คุณสร้างขึ้นจะยังมีอยู่ในเดือนหน้า
| คุณเป็นใคร | คำตัดสิน | เหตุผล |
|---|---|---|
| นักพัฒนาเดี่ยวที่ต้องการเขียนโค้ดให้เสร็จในวันนี้ | ข้ามไปก่อน | สองในสามรันของผมส่ง output ที่พังพร้อม "done" อย่างมั่นใจ คุณจะใช้เวลากับ harness ไม่ใช่งาน |
| ทีม Infra ที่ต้องการแก้ไข agent loop เอง | ทดลอง pilot | นี่คือเครื่องมือเดียวที่ loop, tools, และ UI ทั้งหมดเป็น config ที่สับเปลี่ยนได้ ซึ่งหายากจริงๆ และคุ้มค่ากับเวลาของคุณ |
| องค์กรที่กำลังตั้ง production control plane | ยังไม่ถึงเวลา | มีการสัญญาว่าจะมีการเปลี่ยนแปลงที่ทำลายความเข้ากันได้เป็นลายลักษณ์อักษร, plugins และ MCP servers ทำงานนอก sandbox, และเว็บไซต์เอกสารขาดการตั้งค่าที่กำหนดใบเรียกเก็บ token ของคุณ |
| ผู้สร้างปลั๊กอินและเครื่องมือ | ใช่, ตอนนี้ | รอยต่อส่วนขยายคือประเด็นทั้งหมด, ระบบนิเวศมีขนาดเล็ก, และปลั๊กอินรุ่นแรกๆ จะมีพื้นที่ให้ตัวเอง |
รายการความเสี่ยงที่เหลือนั้นสั้นและเป็นจริง มี UUID การส่งข้อมูลทางไกลแบบไม่ระบุชื่อ ปลั๊กอินและ MCP servers ดำเนินการภายนอก bash sandbox ดังนั้นปลั๊กอินคือโค้ดที่คุณเลือกที่จะเชื่อถือ และตามที่รีวิวนี้พบอย่างยากลำบาก การตั้งค่าที่ควบคุมต้นทุนและความถูกต้องมีเอกสารอยู่ใน package README มากกว่าในคู่มือ ซึ่งหมายความว่าใบเรียกเก็บเงินครั้งแรกของคุณอาจสูงกว่าที่ควรจะเป็นหลายเท่า ด้วยเหตุผลที่ไม่มีข้อความแสดงข้อผิดพลาดบอกคุณ
รีวิว DeepSeek Harness: คำถามที่พบบ่อย
DeepSeek Harness พร้อมสำหรับการผลิตหรือไม่?
ไม่ README ระบุไว้อย่างชัดเจน: "DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES." Web UI ย้ำใน modal เริ่มต้น Pilot ที่ถูกควบคุมใน workload ที่ไม่สำคัญนั้นสมเหตุสมผลในวันนี้ Production control plane ที่ทีมของคุณต้องพึ่งพานั้นไม่ใช่ เพราะพื้นผิว API ที่คุณสร้างขึ้นนั้นไม่เสถียรอย่างชัดเจน
DeepSeek Harness ใช้ดิสก์และหน่วยความจำเท่าไหร่จริงๆ?
บน macOS, npm install @deepseek-ai/dsh ดึง 531 แพคเกจและ 306 MB ซึ่งแพคเกจ dsh เองมีขนาด 172 KB ตัวเลข 1.5 GB ที่อ้างถึงกันคือการ build จาก source แบบเต็ม ไม่ใช่การติดตั้ง runtime กระบวนการเว็บเซิร์ฟเวอร์ idle อยู่ที่ 35 ถึง 40 MB RSS โดยมี session เปิดอยู่ หลังจากพุ่งสูงสุดใกล้ 212 MB ระหว่างบูต หน่วยความจำของ UI ถูกคิดค่าใช้จ่ายกับเบราว์เซอร์ของคุณ ไม่ใช่ dsh
ทำไมการรัน DeepSeek Harness ของฉันถึงช้าและแพงกว่าที่คาดไว้มาก?
ส่วนใหญ่แล้วรายการ model ของคุณประกาศเฉพาะ id เท่านั้น ซึ่งสืบทอดค่าตกสำรองของเส้นทาง defaultContextWindow: 262144 และ defaultMaxTokens: 32768 และปล่อยให้ adapter เดาภาษาถิ่นของการคิดจากชื่อโฮสต์ของ endpoint ในการทดสอบของผม การรวมกันนั้นสร้าง 36 ขั้นตอนแทนที่จะเป็น 15 และต้นทุน token สูงขึ้น 3.5 เท่าสำหรับงานเดียวกัน ตั้งค่า compat.thinkingFormat, contextWindow จริง และ maxTokens จริง
DeepSeek Harness ทำงานกับ endpoint ที่ไม่ใช่ของ DeepSeek หรือไม่?
ได้, base URL ที่เข้ากันได้กับ OpenAI ใดๆ ก็ใช้ได้ และนั่นคือวิธีที่คนส่วนใหญ่จะรันมัน ข้อเสียคือภาษาถิ่นของการคิดถูกอนุมานจาก URL ดังนั้น gateway ที่ใช้ dialect DeepSeek บนชื่อโฮสต์ที่เป็นกลางจะถูกพูดด้วย dialect OpenAI compat.thinkingFormat: deepseek คือการแก้ไข และมันมีอยู่ภายใต้ api: openai-completions เท่านั้น Bedrock, Vertex, Azure, และ Codex ไม่ได้รับการสนับสนุนโดยเจตนา
มุมมอง Trajectory มีประโยชน์จริงหรือเป็นแค่การตลาด?
มันมีประโยชน์ และเป็นสิ่งที่แข็งแกร่งที่สุดในรุ่นนี้ Session log เป็นไฟล์ JSONL แบบ append-only จริงที่คุณสามารถกรองตามแหล่งที่มา, ดำเนินการต่อ, แยกสาขา, และเล่นซ้ำได้ และเหตุการณ์ request/header บอกผมว่าการตั้งค่าใดถึงสาย ซึ่งเป็นสิ่งที่แก้ปัญหาของผม สิ่งที่มันไม่ได้ทำคืออธิบาย ว่าทำไม model ถึงเลือกอะไรบางอย่าง มันบันทึกสิ่งที่ model เห็น ไม่ใช่เหตุผลที่มันตัดสินใจ
DeepSeek Harness vs Claude Code หรือ OpenCode ควรใช้อันไหนในชีวิตประจำวัน?
ถ้าคุณต้องการสิ่งที่เขียนโค้ดได้อย่างน่าเชื่อถือในวันนี้ ไม่ใช่อันนี้ ยังไม่ เลือก Harness เมื่อ runtime ของ agent เองคือสิ่งที่คุณต้องการเปลี่ยน เพราะการสับเปลี่ยน loop, tools, หรือ UI นั้นเป็นการตั้งค่าที่นี่มากกว่าการ fork สำหรับการเปรียบเทียบเชิงตัวเลขเกี่ยวกับการใช้ token โปรดดู DeepSeek Harness vs OpenCode และสำหรับเลเยอร์ส่วนขยาย ปลั๊กอินใดที่ควรติดตั้ง
รันเมื่อวันที่ 18 สิงหาคม 2026 บน macOS, Node v24.15.0, @deepseek-ai/[email protected], model deepseek-ai/deepseek-v4-flash-0731 ที่ให้บริการผ่าน endpoint ที่เข้ากันได้กับ OpenAI บน Atlas Cloud จำนวน token, เวลาจริง, และข้อผิดพลาดคอนโซลทุกอันในบทความนี้มาจาก session logs และ browser consoles ของการรันเหล่านั้น






