เริ่มต้นใช้งาน Endeavor Hands

Endeavor Hands คือ MCP server ฝั่งเครื่อง Mac ที่ทำให้ ChatGPT Web เรียกใช้ไฟล์, Terminal, Git, Python และแอปบนเครื่องของคุณได้จริง ตัวนี้ไม่มี LLM และไม่มี agent loop อยู่ข้างหลัง — ChatGPT เป็นฝ่ายคิด วางแผน เลือก tool และตีความผลลัพธ์ ส่วน Hands เป็น “มือ” ที่ทำงานตามขอบเขตความปลอดภัยของแต่ละ tool
โควตาแยกจาก Codex — การแชทกับ ChatGPT Web มีการใช้งานและ rate limit ของตัวเอง ไม่ใช่โควตาเดียวกับ OpenAI Codex (coding agent) เมื่อ Codex ติด rate limit กลางงาน คุณอาจสลับมาให้ ChatGPT Web ทำงานต่อผ่าน Hands ได้ แต่สิ่งนี้ ไม่ได้เพิ่มหรือ bypass โควตาของบริการใด และยังขึ้นกับสิทธิ์/นโยบายของบัญชี ChatGPT ที่ใช้งานอยู่
เหมาะกับใคร
เหมาะกับคนที่ต้องการให้ ChatGPT Web อ่านหรือแก้ไฟล์ รัน test/build ตรวจ repository หรือควบคุมแอปบน Mac ของตัวเอง โดยไม่ต้องเปิด MCP server เป็น public endpoint ให้คนภายนอกเข้ามาโดยตรง ต้องใช้ ChatGPT Web ใน workspace ที่เปิด Developer mode และสร้างแอป/connector แบบ Tunnel ไว้แล้ว (ไม่ใช่แอป ChatGPT desktop หรือมือถือ)
มีอะไรให้ใช้บ้าง: 12 MCP tool names
| Tool | ใช้ทำอะไร | ขอบเขตสำคัญ |
|---|---|---|
bash |
ค้นไฟล์ ตรวจระบบ รันคำสั่งสั้นๆ test และ build | ใช้ sandbox ของ macOS; คำสั่งลบไฟล์ถูกปฏิเสธ และ GUI scripting ผ่าน osascript ใช้ไม่ได้ |
git |
status, diff, add แบบระบุ path, commit และ push |
repo ต้องอยู่ใน approved workspace, ไม่รับการ stage ทั้ง repo แบบ implicit และไม่ force-push |
bash_bg |
เริ่ม/ตรวจ/หยุด shell job ที่รันนาน | สูงสุด 5 งาน; log และ registry อยู่ใต้ Endeavor_Hands/work/ |
python_exec |
วิเคราะห์ข้อมูล สถิติ regression และ machine learning | ใช้ interpreter เดียวกับ server และ library ที่ติดตั้งไว้; อยู่ใต้ sandbox เดียวกับ bash |
read_file |
อ่าน text, source code, PDF, Word, Excel, รูปภาพ, เสียง และวิดีโอ | อ่านได้ทั่วเครื่องยกเว้น protected paths; เอกสารใหญ่มีการ sample แบบ local และไฟล์ภาพส่งกลับเป็น PNG |
write_file |
สร้างไฟล์ใหม่หรือแทนที่ทั้งไฟล์ด้วย overwrite=true |
การแทนที่ไฟล์เดิมใช้ permission gate เดียวกับ edit; นอก workspace จะ redirect ไป working copy |
edit |
แก้ไฟล์เดิมแบบ string, line หรือ atomic batch | ครั้งแรกของแต่ละ top-level folder ใน session ต้องถามผู้ใช้และส่ง nonce กลับมา |
computer |
ดูหน้าจอ คลิก พิมพ์ scroll ลาก เปิดแอป และเปิด URL | ใช้ Accessibility/OCR, บังคับ observe → act → verify, ไม่พิมพ์ password/OTP/payment และปฏิเสธ action ที่ดูเหมือนลบ |
mcp_list_tools |
สำรวจ tool ของ MCP server อื่น | ต้องเรียกก่อน mcp_call_tool เพื่อรู้ชื่อและ arguments ที่ถูกต้อง |
mcp_call_tool |
เรียก tool ของ MCP server อื่น | รองรับทั้ง Streamable HTTP และ local stdio; output ถูก cap และมี timeout |
mcp_add_server |
ลงทะเบียน MCP server เพิ่มระหว่างสนทนา | HTTP ใช้ URL/headers; stdio ใช้ executable path แบบ absolute, args และ cwd ใน workspace |
mcp_remove_server |
เอา server ที่ลงทะเบียนเองออก | จัดการได้เฉพาะ dynamic registry ไม่แตะ server ที่ developer กำหนดใน config.py |
สี่รายการ mcp_* ไม่ได้ทำให้ Hands กลายเป็นโมเดลอีกตัว แต่เป็น bridge สำหรับต่อ capability เฉพาะทางเพิ่ม โดย local stdio child จะถูกเปิดตรงโดยไม่ผ่าน shell และอยู่ใต้ sandbox ของ Hands
สิ่งที่เปลี่ยนในรุ่นปัจจุบัน
- มี
gitแยกจากbashสำหรับงาน repository ที่ต้องเปลี่ยน Git metadata โดยยังบล็อกการลบ source file, force-push และ transport ที่ไม่ปลอดภัย - MCP bridge รองรับทั้ง Streamable HTTP และ local stdio พร้อม registry แบบ dynamic ที่เก็บใน
Endeavor_Hands/work/tool_mcp/ - output recovery, background-job log และ dynamic MCP registry รวมอยู่ใต้
work/ไม่กระจายปะปนกับ workspace ของผู้ใช้ - ทุก tool call มี diagnostic metadata; activity แสดงสดทาง stderr และบันทึกใน
logs/agent_activity.jsonlโดย stdout สงวนไว้ให้ MCP protocol computerส่งภาพหน้าจอพร้อม[OBS]element list, ตรวจ semantic/visual change หลัง action และมีexpect=สำหรับตรวจผลแบบมีหลักฐาน แทนการเดาว่าคลิกสำเร็จ
สถาปัตยกรรมโดยย่อ
ChatGPT Web (Developer-mode app)
│ HTTPS ขาออก
▼
OpenAI Secure MCP Tunnel
│
▼
tunnel-client (รันบน Mac ของคุณ)
│ stdio
▼
server.py (FastMCP)
├─ bash / git / bash_bg / python_exec
├─ read_file / write_file / edit
├─ computer
└─ mcp_* bridge
server.py คุยกับ tunnel-client ผ่าน stdio และไม่มี public MCP port ให้เปิดรอจากอินเทอร์เน็ต เมื่อใช้ launcher อาจมี health/control endpoint แบบ loopback ที่พอร์ตซึ่ง launcher กำหนด (เช่น 127.0.0.1:8765 หรือ deployment ที่ SERVER_MONITOR ดูแลใช้ 127.0.0.1:8768) สำหรับตรวจ readiness และดูแล process — endpoint นี้เข้าถึงได้จากเครื่องเดียวกันและไม่ใช่ MCP endpoint สาธารณะ
ChatGPT เป็นผู้วางแผนทั้งหมด ไม่มีโมเดลซ่อนอยู่ในเครื่อง Hands จึงทำงานกับ MCP client อื่นได้ด้วย เช่น Claude Desktop, mcp dev หรือ Codex CLI หาก client นั้น spawn server.py ได้โดยตรง
ความต้องการของเครื่อง
- macOS บน Apple Silicon
- Python 3.11
- พื้นที่สำหรับ virtual environment และ dependency ของ
read_file/computer - สิทธิ์ Accessibility และอาจต้องใช้ Screen Recording สำหรับ
computer - ChatGPT Web workspace ที่เปิด Developer mode สำหรับการเชื่อมต่อแบบ Tunnel
ไม่มี GPU หรือ RAM ขั้นต่ำแบบโมเดล Local AI เพราะไม่มีโมเดล AI รันอยู่ในเครื่อง
ติดตั้ง
คำสั่งติดตั้งจาก public repository คือ:
git clone https://github.com/halochamp/Endeavor_Hands.git
cd Endeavor_Hands
bash install_library/install.sh
ตัวติดตั้งสร้าง .venv เฉพาะโปรเจกต์และติดตั้ง dependency ที่ lock hash ไว้ เช่น mcp, langchain-core, opencv-python, Pillow, markitdown, PyMuPDF และ pyobjc ที่ computer ต้องใช้ หากมี Xcode Command Line Tools จะ build Swift helper สำหรับ screen accessibility, Vision OCR และ speech transcription เพิ่มให้ด้วย ถ้าไม่มี toolchain นี้ เฉพาะฟีเจอร์เสริมจะถูกปิด แต่ server หลักยังทำงานได้
เชื่อมต่อกับ ChatGPT Web
ตั้งค่า tunnel ครั้งแรก
-
สร้าง tunnel ใน OpenAI Platform และ associate กับ ChatGPT workspace ที่จะใช้
-
สร้าง runtime API key ที่จำกัดสิทธิ์เฉพาะ Tunnels: Read + Use อย่าวาง key ใน source, profile หรือแชท
-
ดาวน์โหลด
tunnel-clientสำหรับ Darwin arm64 จาก OpenAI Platform แล้ววางไว้ที่bin/tunnel-client -
รันตัวช่วยครั้งแรก ซึ่งถาม Tunnel ID และ runtime key แบบไม่ echo และไม่บันทึก credential ลงไฟล์:
cd Endeavor_Hands ./start_tunnel.sh -
รอ
tunnel-client doctor --explainและให้ profileendeavor-chatgptเริ่มทำงาน จากนั้นเปิด Terminal นี้ค้างไว้ -
ตรวจ
/readyzและ/uiที่ loopback port ตามที่ launcher กำหนด (ตัวอย่าง public launcher ใช้http://127.0.0.1:8765/readyz; deployment ที่ SERVER_MONITOR ดูแลอาจใช้http://127.0.0.1:8768/readyz) ให้ตอบreadyและเปิดหน้า UI เพื่อดูสถานะ local tunnel
สำหรับการเปิดครั้งถัดไป ใช้ scripts/start_tunnel.command ซึ่งอ่าน runtime key จาก macOS Keychain แล้วส่งต่อให้ process เท่านั้น ไม่เก็บ key ไว้ใน launcher หรือ tunnel profile
เพิ่มแอปใน ChatGPT
- เปิด ChatGPT บนเว็บ ใน workspace เดียวกับที่ associate tunnel และเปิด Developer mode
- ไปที่ Settings → Apps & Connectors (ชื่อเมนูอาจแสดงเป็น Plugins ตาม rollout) แล้วสร้าง Developer-mode app/connector
- ใน Connection เลือก Tunnel ไม่ใช่ URL แล้วเลือก tunnel ที่สร้างไว้
- กด Scan Tools ควรเห็นครบ 12 tool names ตามตารางด้านบน
- บันทึก app แล้วเปิดแชตใหม่ เลือก Endeavor Hands จาก tools/apps picker หรือเรียกด้วย
@ชื่อแอป - เริ่มด้วยคำสั่ง read-only ที่ไม่เสี่ยง เช่น “อ่านรายชื่อโฟลเดอร์โปรเจกต์ใต้
~/Desktopแล้วสรุปให้ฉัน ห้ามแก้ไขไฟล์”
หากเพิ่งแก้ schema หรือ docstring ของ tool ให้ restart tunnel และกด Refresh/Scan Tools หรือสร้างแชตใหม่ เพราะแชตเดิมอาจถือ tool schema ชุดก่อนหน้าไว้
Workspace และขอบเขตไฟล์
ถ้ารัน server.py ตรงๆ โดยไม่ตั้งค่าอะไร V2_WORKSPACE จะชี้ไปที่ workspace/ ใน repo แต่ launcher สำหรับใช้งานบน Mac จะตั้ง V2_WORKSPACE=~/Desktop เพื่อให้ทำงานกับโปรเจกต์บน Desktop ได้จริง ตรวจค่า workspace ก่อนสั่งงานทุกครั้ง โดยเฉพาะเมื่อใช้ client อื่นหรือเปลี่ยน launcher
การอ่านกับการเขียนมีขอบเขตต่างกัน: read_file อ่านได้กว้างกว่ายกเว้น protected paths ส่วน edit/write_file ใช้ permission gate และนโยบาย create-only นอก workspace ถ้าไฟล์เดิมอยู่นอก workspace จะถูกเขียนไปยัง sibling working copy เช่น report.edited.md แทนการแตะต้นฉบับ
ความปลอดภัยที่ต้องรู้
- Tunnel เป็น connection ขาออกจาก Mac ไป OpenAI; ไม่ต้องเปิด MCP server เป็น public port
- การลบไฟล์ถูกปิดไว้ใน code: shell/Python ปฏิเสธ
remove/unlink,computerปฏิเสธ action ที่ดูเหมือนลบ และ Git ยังบล็อก source-file deletion editและwrite_file(overwrite=true)ต้องได้รับ “ใช่” จากผู้ใช้ก่อนครั้งแรกของแต่ละ top-level folder ต่อ session; nonce เป็น friction และ audit trail ไม่ใช่การรับรอง cryptographic ว่าเป็นมนุษย์- shell, background shell และ Python ใช้ macOS
sandbox-execแบบ deny-list: protected/system paths ถูก deny อย่างชัดเจน ขณะที่ workspace และ/private/tmpถูก allow เพิ่มท้าย profile ไม่ควรตีความว่าเป็น allow-list ที่ครอบคลุมทุก path computerไม่พิมพ์ password, OTP, payment information หรือ credential และต้องมี Accessibility ก่อนจึงจะเห็น/ควบคุมจอได้- Git จำกัด repo ให้อยู่ใน approved workspace, รับ
addเฉพาะ path ที่ระบุ, commit เฉพาะสิ่งที่ stage ไว้ และ push ไปยัง remote ที่มีอยู่แล้วแบบไม่ force - activity log มีการ redact ค่า sensitive; อย่าใส่ runtime key, password, OTP หรือข้อมูลบัตรลงใน prompt
รายละเอียดเชิงลึกของแต่ละชั้นอยู่ในบทความ Endeavor Hands ทำงานอย่างไร และบทความ tool ที่เกี่ยวข้อง
ตัวอย่างคำสั่งที่ควรใช้
ใช้ Endeavor Hands อ่าน ~/Desktop/my-project/src/app.py
หาจุดที่ทำให้ login validation ผิดพลาด แก้เฉพาะไฟล์นี้
รัน test ที่เกี่ยวข้อง แล้วแสดง git diff ก่อนสรุป
ห้ามลบไฟล์ และถ้าต้องแก้ไฟล์เดิมให้ถาม permission ก่อน
ถ้าต้องทำงานนานเกิน timeout ของ bash ให้ใช้ bash_bg(action="start", ...) แล้วติดตามด้วย status โดยอ่าน log tail ล่าสุดทุกครั้ง อย่าเริ่มงานซ้ำเพียงเพราะยังไม่ได้ผลลัพธ์ทันที
ความคิดเห็น
กำลังโหลดความคิดเห็น...