รัน local LLM ในแอป ChatGPT Desktop ด้วย opencodex ตัวเดียว
โดย Nokka (นก-กา) | 19 กันยายน 2026
บทความนี้เขียนโดย AI (โมเดล deepseek-v4.1-flash ของผู้ให้บริการ ollama-cloud) ผ่าน Hermes Agent จาก Nous Research ตรวจสอบและเรียบเรียงโดย Nokka ข้อความในเครื่องหมายคำพูดที่เป็นคำแปลเป็นคำแปลของผม ไม่ใช่สำเนาต้นฉบับ
มีเครื่องมือตัวหนึ่งที่ทำให้แอป ChatGPT Desktop คุยกับโมเดลที่ไม่ใช่ของ OpenAI ได้ และมันทำงานง่ายจนน่าตกใจ คือแก้ค่า base URL ในเครื่องให้ชี้มาที่ proxy ที่รันอยู่บนเครื่องเราเอง [1]
เครื่องมือนั้นชื่อ opencodex เป็นโอเพนซอร์สสัญญาอนุญาต MIT ทำงานเป็น proxy ในเครื่อง ไม่ใช่ fork หรือการดัดแปลงตัวแอป [1][2]
⇒ ผู้เขียนบทความทดสอบบน XDA เล่าว่าแอป ChatGPT Desktop ของเขาเชื่อว่ากำลังคุยกับเซิร์ฟเวอร์ OpenAI มาตลอด แต่จริง ๆ แล้วมันคุยกับ MiniMax M3, โมเดลจาก subscription OpenCode และ local LLM อย่าง Qwen 3.8 27B กับ GLM-5.3-Flash ที่รันเองบนเครื่อง [1]
ภาพที่ 1: ตำแหน่งที่ opencodex แทรกอยู่ในเส้นทางของคำขอ
จุดเริ่มต้นของเรื่อง
ช่วงต้นปี 2026 OpenAI ยุบแอป Codex Desktop เข้าไปรวมกับแอป ChatGPT กลายเป็นสวิตช์ตัวเดียวที่สลับระหว่างโหมดแชทกับโหมดเขียนโค้ด ผู้ใช้เลือกโปรเจกต์ได้ เลือกโมเดลได้ แต่ยังติดอยู่ในโมเดลของ OpenAI เท่านั้น [1]
opencodex แก้ข้อจำกัดตรงนั้น ด้วยวิธีที่ตรงไปตรงมา คือทำตัวเป็น OpenAI API ปลอมที่รันอยู่บนเครื่องคุณเอง [1]
ทำงานอย่างไร
แก้ค่า base URL จุดเดียว
Codex รองรับ OpenAI Responses API และค่า base URL ของมันตั้งผ่าน environment variable ได้ [1]
⇒ เมื่อติดตั้งและรัน opencodex ตัวโปรแกรมจะแก้ไฟล์ ~/.codex/config.toml เพื่อเพิ่มค่าสองตัวนี้ [1]
# Auto-injected by opencodex
openai_base_url = "http://127.0.0.1:10100/v1"
experimental_realtime_ws_base_url = "http://127.0.0.1:10100/v1"
ผลคือทุกคำขอจากแอป ทั้งการขอดูรายชื่อโมเดลและการส่งข้อความ จะวิ่งผ่าน proxy ก่อน [1]
ตอนขอดูรายชื่อโมเดล proxy จะไปถามผู้ให้บริการทุกเจ้าใน config แล้วรวบคำตอบกลับมาเป็นรายการเดียว โมเดลจะโผล่ในตัวเลือกของ Codex ตามปกติ ผู้เขียนเล่าว่า GLM-5.3-Flash ของเขาโผล่มาเป็น vllm/glm-5.3-flash อยู่ข้าง ๆ โมเดลจาก OpenCode [1]
และเมื่อเลือกโมเดลแล้วส่งข้อความ proxy จะเป็นตัวตัดสินว่าเส้นทางของคำขอนั้นจะไปที่ไหน [1]
ทำไมต้องเป็น proxy ไม่ใช่ fork
เหตุผลที่ผู้เขียนให้ไว้ และผมคิดว่าเป็นจุดที่ฉลาดที่สุดของเครื่องมือนี้ คือ การแปลรูปแบบคำขอจะรอดจากการอัปเดต Codex [1]
⇒ ถ้าเลือกทำเป็น fork ต้องตามแก้ทุกครั้งที่ Codex อัปเดต แต่การวางตัวเป็น proxy ทำให้ทั้ง CLI และแอปเดสก์ท็อปใช้ได้พร้อมกัน [1]
ผู้เขียนระบุว่าเขาติดตั้งอัปเดต Codex ไปหลายรอบแล้ว และมันยังทำงานได้ปกติ [1]
ภาพที่ 2: การติดตั้งใช้สองคำสั่ง
ติดตั้งง่ายกว่าที่คิด
npm install -g @bitkyc08/opencodex # ต้องมี Node 18 ขึ้นไป
ocx start # ได้ proxy + dashboard ที่ localhost:10100
แพ็กเกจนี้อยู่บน npm ในชื่อ @bitkyc08/opencodex และตัวติดตั้งจะพา Bun runtime มาด้วยเลย ไม่ต้องติดตั้งแยก [2][4]
ถ้าอยากให้ตัวช่วยตั้งค่าทีละขั้น ใช้คำสั่ง ocx init ตัวโปรแกรมจะถามว่าต้องการใช้ผู้ให้บริการเจ้าไหน แล้วเสนอแก้ไฟล์ config.toml ให้อัตโนมัติ [1][2]
และมี ocx service สำหรับรันเป็นเบื้องหลัง [2] ชุดคำสั่งทั้งหมดมีอธิบายในเอกสารทางการที่ opencodex.me [3]
รองรับอะไรมากกว่าที่คิด
สาม runtime ในเครื่อง บวกอีก 40 กว่าราย
ค่าเริ่มต้นรองรับโมเดลที่รันบนเครื่องเดียวกันผ่านสาม runtime บนพอร์ตมาตรฐาน ได้แก่ Ollama, vLLM และ LM Studio [1]
แต่ไม่ได้จำกัดแค่นั้น เพราะรองรับอะไรก็ได้ที่พูด OpenAI-compatible API หรือ Anthropic Messages API [1]
README ทางการระบุว่ามีผู้ให้บริการในตัวมากกว่า 40 ราย ทั้ง OpenAI (ทั้งผ่านล็อกอิน ChatGPT และ API key), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama และทุก endpoint ที่เข้ากับ OpenAI ได้ รวมถึง DeepSeek, Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax, Qwen Cloud และ SiliconFlow [2]
ผู้เขียนบทความใช้มันข้ามเครื่องด้วย เขารันโมเดลคนละตัวบนคนละเครื่องในเครือข่ายส่วนตัว แล้วให้ทั้งหมดทำงานผ่าน opencodex ตัวเดียว [1]
Dashboard ที่บอกได้ว่าใช้ไปเท่าไร
เปิด http://localhost:10100 จะเจอ web dashboard สำหรับตั้งค่าทุกอย่าง เพิ่มผู้ให้บริการ เลือกโมเดล จัดการบัญชี [2]
ใน dashboard เห็นสถิติโทเคน รวมถึง API call แต่ละครั้ง ค่าใช้จ่ายที่ประเมินได้ และการใช้งานแยกตามโมเดล [1]
และตัวเครื่องมือยังจัดการ ChatGPT account pool ได้ด้วย เพิ่มบัญชี ChatGPT หรือ Codex หลายบัญชี แล้วดูโควต้า 5 ชั่วโมง รายสัปดาห์ และ 30 วัน ใน dashboard ถ้าบัญชีไหนโควต้าใกล้หมด session ใหม่จะถูกส่งไปบัญชีที่ยังว่าง โดยที่ thread เดิมยังผูกกับบัญชีที่เริ่มไว้ [2]
กับดักที่ต้องรู้ ซึ่งผู้เขียนก็บอกเอง
สี่ข้อที่ควรรู้ก่อนติดตั้ง
สรุปสี่กับดักที่ผู้เขียนบทความและ README ทางการระบุไว้ [1][2]
| เรื่อง | สถานะ |
|---|---|
| tool call ของ Codex | บางโมเดลทำได้ บางโมเดลหลงทาง |
| การค้นเว็บ | ยังวิ่งผ่านเซิร์ฟเวอร์ OpenAI ถ้าไม่ตั้ง backend เอง |
| การอ่านภาพ | ส่งไป OpenAI ถ้าโมเดลที่เลือกเป็น text-only |
| ข้อกำหนดการใช้งาน | README เตือนให้ผู้ใช้ตรวจเองก่อนใช้ |
หนึ่ง · tool call ของ Codex ไม่เหมือนใคร Codex มีโครงสร้างการเรียก tool เฉพาะตัว ทั้ง apply_patch แบบ freeform, การเข้าถึง shell, MCP namespaces และ tool_search สำหรับค้นหา โมเดลที่เทรนมากับสไตล์อื่นจะทำไม่ถูก [1]
ผู้เขียนเล่าว่า MiniMax M3 หลงทางไปเลย แต่ GLM-5.3-Flash และ Qwen 3.8 27B ทำงานได้ปกติ เขาจึงสรุปว่าไม่ใช่ทุกโมเดลที่จะเจอปัญหา และให้วิธีวินิจฉัยว่า ถ้าโมเดลนั้นใช้ได้ใน Claude Code หรือ OpenCode แต่ใช้ไม่ได้ใน Codex ให้ตรวจก่อนว่ามันเรียก tool ถูกหรือเปล่า [1]
สอง · การค้นเว็บยังวิ่งผ่านเซิร์ฟเวอร์ OpenAI โมเดลจะได้ tool ชื่อ web_search(query) และเมื่อเรียก มันจะใช้ GPT-5.6-Luna จากล็อกอิน ChatGPT ของคุณเป็นตัวค้นจริง ๆ [1]
⇒ ถ้าไม่อยากให้เป็นแบบนั้น ตั้ง backend การค้นเป็น Anthropic, xAI, Gemini หรือ Exa ได้ [1]
สาม · การอ่านภาพก็เช่นกัน ถ้าโมเดลที่เลือกเป็น text-only คำขอที่มีรูปจะถูกส่งไปเซิร์ฟเวอร์ OpenAI เพื่อระบุเนื้อหา แล้วส่งกลับมาเป็นข้อความแทนรูปใน prompt ของโมเดลเดิม [1]
สี่ · เรื่องข้อกำหนดการใช้งาน README ทางการเขียนเตือนไว้ตรง ๆ ว่า ผู้ใช้ควรตรวจข้อกำหนดการให้บริการของผู้ให้บริการตนว่า การเข้าถึงผ่าน proxy ได้รับอนุญาตหรือไม่ และทีมผู้พัฒนาไม่รับผิดชอบต่อการดำเนินการกับบัญชีที่ผู้ให้บริการต้นทางอาจทำ [2]
ภาพที่ 3: สี่กับดักที่ผู้เขียนบทความและ README ระบุไว้
มุมที่ผมเห็น
จุดที่ทำให้เรื่องนี้น่าสนใจไม่ใช่ความสามารถทางเทคนิค แต่เป็น การเลือกจุดแทรก [1]
⇒ แทนที่จะไปดัดแปลงตัวแอป หรือสร้างไคลเอนต์ใหม่ opencodex เลือกแทรกที่ชั้นที่แอปคุยกับโลกภายนอก ซึ่งเป็นชั้นที่แอปเองก็เปิดให้แก้อยู่แล้ว ทำให้มันทำงานได้กับทั้งเวอร์ชัน CLI และเดสก์ท็อป โดยไม่ต้องรอให้ใครมาเปิดให้ [1][2]
และผมคิดว่ามันชี้ให้เห็นรูปแบบที่น่าจับตาคือ สัญญาอินเทอร์เฟซกลายเป็นจุดควบคุม มากกว่าตัวซอฟต์แวร์ เมื่อทุกเจ้ายอมพูดภาษาเดียวกัน คนที่อยู่ตรงกลางก็เลือกได้ว่าจะส่งต่อให้ใคร [2]
แต่ก็มีราคาที่ต้องจ่าย คือการพึ่งพาช่องทางที่ผู้ให้บริการต้นทางอาจไม่ยินดี และตัว README เองก็ยอมรับเรื่องนี้ไว้แล้ว [2]
ถ้าคุณมี local LLM รันอยู่ในเครื่องอยู่แล้ว และอยากลองใช้มันในแอปที่คุ้นเคย วิธีที่เร็วที่สุดคือติดตั้งด้วย npm แล้วเปิด http://localhost:10100 ตั้งค่าโมเดล จากนั้น restart แอป ChatGPT [1][2]
ส่วนตัวผมคิดว่าควรลองกับโมเดลที่ใช้ได้แน่ ๆ อย่าง GLM หรือ Qwen ก่อน แล้วค่อยลองตัวอื่น เพราะจากที่ผู้เขียนรายงาน ปัญหาไม่ได้อยู่ที่ proxy แต่อยู่ที่ว่าโมเดลนั้นคุ้นกับ tool call แบบ Codex หรือเปล่า [1]
แหล่งอ้างอิง
[1] XDA Developers — "I run my local LLMs inside the ChatGPT desktop app now, and it took one free open-source tool to do it" (Adam Conway), 18 กันยายน 2026 — https://www.xda-developers.com/run-local-llms-inside-chatgpt-desktop-app-one-free-open-source-tool/
[2] opencodex — README ทางการ (GitHub: lidge-jun/opencodex), กันยายน 2026 — https://github.com/lidge-jun/opencodex
[3] opencodex — เอกสารทางการ, กันยายน 2026 — https://opencodex.me/
[4] npm — แพ็กเกจ @bitkyc08/opencodex, กันยายน 2026 — https://www.npmjs.com/package/@bitkyc08/opencodex



Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.