วิธีควบคุม Claude Code จากโทรศัพท์ผ่าน Telegram ในปี 2026
Markdownทำตามทีละขั้นตอน: สร้างบอต Telegram ติดตั้งปลั๊กอิน Claude Code Channels รักษาความปลอดภัยด้วย allowlist และเปิดใช้งานบน VPS ตลอด 24/7 คู่มือพร้อมทำตามและมีคำสั่งให้
อ่านบทความฉบับเต็ม
ประเด็นสำคัญ
Claude Code Channels เป็นปลั๊กอินอย่างเป็นทางการของ Anthropic ณ วันที่ 20 มีนาคม 2026 สร้างบอตผ่าน BotFather ติดตั้งปลั๊กอินด้วยคำสั่งเดียว เริ่ม Claude ใหม่ด้วยแฟล็ก --channels แล้วส่งข้อความหาบอตจากโทรศัพท์ Claude จะอ่านข้อความเหล่านั้นโดยตรงในเซสชันภายในเครื่อง เขียนโค้ดลงในไฟล์ของคุณ และตอบกลับใน Telegram หากต้องการให้ทำงานตลอด 24/7 ให้ย้ายเซสชันไปยัง VPS ของคุณเองโดยใช้ systemd
มีเนื้อหาเพิ่มเติมเกี่ยวกับการกำหนดค่าเครื่องมือในเอกสาร Ailoot
Claude Code Channels คืออะไร และทำไมจึงต้องใช้
ประเด็นสำคัญ
Channels เป็นปลั๊กอิน MCP ที่ส่งต่อข้อความจาก Telegram, Discord หรือ iMessage ไปยังเซสชัน Claude Code ที่กำลังทำงานอยู่ เซสชันจะเห็นข้อความนั้นเป็นคำขอจากผู้ใช้ทั่วไป ทำงานกับไฟล์ในเครื่องของคุณ และตอบกลับในแชตเดิม แล็ปท็อปของคุณยังคงเปิดอยู่ ขณะที่คุณทำธุระต่าง ๆ ด้วยโทรศัพท์
เมื่อวันที่ 20 มีนาคม 2026 Anthropic เปิดตัว Claude Code Channels ซึ่งเป็นปลั๊กอินอย่างเป็นทางการสำหรับเชื่อมเซสชัน Claude กับแอปส่งข้อความ รองรับ Telegram, Discord และ iMessage ฟีเจอร์นี้อยู่ในช่วงตัวอย่างเพื่อการวิจัย: อ่านเอกสารได้ที่ code.claude.com/docs/en/channels และดูซอร์สโค้ดของปลั๊กอินได้ในรีโพซิทอรีเปิด anthropics/claude-plugins-official
พูดง่าย ๆ คือมันเป็น “สะพานแชต” ระหว่างโทรศัพท์กับเซสชัน Claude Code ของคุณ ฉันส่งข้อความหาบอตว่า “เขียนตารางราคาใหม่ต่อไป; อัปเดตวันที่สำหรับกลุ่มรุ่นถัดไปใน business/products/practicum/README.md” แล้วบอตส่งข้อความนั้นต่อไปยังเซสชันบน VPS ของฉัน Claude ดึงบริบทมา แก้ไขไฟล์ commit การเปลี่ยนแปลง แล้วตอบกลับใน Telegram ว่า “เรียบร้อยแล้ว ตรวจดู commit ได้เลย” แล็ปท็อปยังคงปิดอยู่ที่บ้าน
⚠️ ข้อจำกัดหลักของช่วงตัวอย่างเพื่อการวิจัย: Channels เป็นสะพาน MCP เซสชันต้องทำงานอยู่บนเครื่องหรือ VPS ของคุณ เมื่อปิดเซสชันก็จะไม่มีใครได้รับข้อความ จึงต้องตั้งค่าการทำงานตลอด 24/7 แยกต่างหาก (ดูหัวข้อ VPS ด้านล่าง)
Channels แตกต่างจากวิธีทำงานระยะไกลแบบอื่นอย่างไร
ในเอกสารอย่างเป็นทางการ Anthropic แสดงตารางเปรียบเทียบโดยตรง นี่คือฉบับเรียบเรียง:
| ฟีเจอร์ | ทำอะไร | เลือกใช้เมื่อใด |
|---|---|---|
| Claude Code บนเว็บ | ทำงานในแซนด์บ็อกซ์คลาวด์ใหม่ โดยโคลนรีโพซิทอรีจาก GitHub | มอบหมายงานเบื้องหลังที่เป็นอิสระ แล้วกลับมาตรวจภายหลัง |
| การเชื่อมต่อ Slack | เริ่มเซสชันบนเว็บในเธรดเมื่อมีการกล่าวถึง @Claude | เริ่มงานจากบทสนทนาของทีมโดยตรง |
| MCP server (ทั่วไป) | Claude เรียกใช้ระหว่างทำงาน แต่ไม่ได้ส่งอะไรเข้ามาในเซสชัน | ให้ Claude เข้าถึงระบบภายนอกเมื่อต้องการ |
| Remote Control | คุณควบคุมเซสชันในเครื่องผ่าน claude.ai หรือแอปมือถือ | ใช้งานเซสชันที่มีอยู่จากหน้าจอโทรศัพท์ |
| Channels ⭐ | ส่งเหตุการณ์จากแหล่งที่ไม่ใช่ Claude เข้าสู่เซสชันในเครื่องที่กำลังทำงานอยู่ | ถามจากโทรศัพท์แล้วรับคำตอบในแชต หรือรับ webhook จาก CI |
ความแตกต่างหลักระหว่าง Channels กับ Remote Control คือ Remote Control เป็น “หน้าต่างจากโทรศัพท์สู่เทอร์มินัล”—คุณเห็นเคอร์เซอร์และกดปุ่มได้จริง ส่วน Channels เป็นแชตบอตที่มีเซสชัน Claude ในเครื่องของคุณเป็นสมอง เมื่อใช้ Remote Control ฉันมองดูเทอร์มินัล แต่เมื่อใช้ Channels ฉันส่งข้อความหาใครสักคนที่อ่านไฟล์ของฉันได้
หากต้องการควบคุมทุกอย่างจากหน้าจอ ให้ใช้ Remote Control หากต้องการ “ส่งคำถามแล้วไปทำธุระต่อเพื่อรอคำตอบ” ให้ใช้ Channels ฉันใช้ทั้งสองแบบ: ใช้ Remote Control เมื่อต้องอนุมัติการเปลี่ยนแปลงสำคัญ และใช้ Channels เมื่อมั่นใจในงานและอยากได้เวลาช่วงเย็นกลับคืนมา
สิ่งที่ต้องมี ก่อนเริ่มต้น
ประเด็นสำคัญ
Claude Code v2.1.80 ขึ้นไป การยืนยัน claude.ai ที่รองรับหรือ Anthropic Console API key ติดตั้ง Bun และเข้าถึง Telegram หากต้องการใช้งานตลอด 24/7 ต้องมี VPS ที่ใช้ Ubuntu หรือ Debian ทุกอย่างทำงานเหมือนกันบน macOS, Linux และ WSL
ก่อนเริ่มใช้คำสั่ง ให้ตรวจรายการนี้ก่อน:
- บัญชี Anthropic คุณต้องมี Pro, Max, Team หรือ Enterprise โดย Channels ใช้กับแพ็กเกจฟรีไม่ได้ ใช้ Anthropic Console API key ได้ด้วย หากองค์กร Console ใช้ managed settings ให้ตรวจว่าเปิด channels ที่นั่นแล้ว
- Claude Code v2.1.80 ขึ้นไป ตรวจสอบด้วย
claude --versionหากเก่ากว่านี้ ให้อัปเดตด้วยclaude updateหรือnpm install -g @anthropic-ai/claude-code@latest - Bun ปลั๊กอิน Channels เป็นสคริปต์ Bun ไม่ใช่ Node ตรวจสอบด้วย
bun --versionหากยังไม่ได้ติดตั้ง ให้เรียกใช้curl -fsSL https://bun.sh/install | bashแล้วตามด้วยsource ~/.bashrc - บัญชี Telegram ใช้บัญชีใดก็ได้ สิ่งสำคัญคือคุณเข้าสู่ระบบในโทรศัพท์แล้ว
- หากใช้แพ็กเกจ Team/Enterprise ขอให้ผู้ดูแลระบบเปิดใช้
channelsEnabledในการตั้งค่าที่จัดการ หรือผ่าน admin-settings/claude-code องค์กรต่าง ๆ ปิดตัวเลือกนี้ไว้โดยค่าเริ่มต้น
ไม่ต้องกังวลเรื่อง Bun หากเพิ่งเคยเห็นชื่อนี้ Bun เป็นสภาพแวดล้อมรัน JavaScript อีกแบบหนึ่ง คล้ายกับ Node Anthropic เลือกใช้กับปลั๊กอิน Channels เพราะเริ่มทำงานได้เร็วกว่าและแพ็กเป็นไบนารีเดียวได้ง่ายกว่า ติดตั้งครั้งเดียวแล้วก็ไม่ต้องสนใจอีก
⚠️ Channels ยังใช้กับ Bedrock / Google Vertex / Azure Foundry สำหรับองค์กรไม่ได้ ใช้ได้เฉพาะการยืนยันตัวตนผ่าน claude.ai หรือ Anthropic Console
ขั้นตอนที่ 1 สร้างบอต Telegram ผ่าน BotFather
ประเด็นสำคัญ
เปิด @BotFather ใน Telegram ส่งคำสั่ง /newbot เลือกชื่อและชื่อผู้ใช้ (ชื่อผู้ใช้ต้องลงท้ายด้วย bot) แล้วรับโทเค็นรูปแบบ 12345678:AAH... เก็บโทเค็นให้ปลอดภัย เพราะเป็นรหัสผ่านของบอต ใครก็ตามที่เห็นโทเค็นจะเขียนข้อความในนามบอตและอาจดักอ่านข้อความที่คุณส่งให้ Claude ได้
BotFather จัดการทุกอย่างให้คุณ—แค่กดห้าครั้ง ทำตามนี้:
- เปิด @BotFather ใน Telegram (ใช้โทรศัพท์ได้ และการตั้งค่าส่วนที่เหลือก็ทำผ่านโทรศัพท์ได้เช่นกัน)
- กด “Start” หากเป็นครั้งแรกที่ใช้งาน
- ส่งคำสั่ง
/newbot - BotFather จะถามว่า “ได้เลย บอตตัวใหม่ เราจะตั้งชื่อว่าอะไรดี?” ป้อนชื่อที่จะแสดง เช่น
ผู้ช่วยของฉัน - Claude Code - จากนั้นระบบจะขอชื่อผู้ใช้ ชื่อนี้ต้องไม่ซ้ำกับใครใน Telegram และต้องลงท้ายด้วย
botตัวอย่างเช่นmy_claude_botหรือmy_dev_bot - BotFather จะตอบกลับมาประมาณนี้:
Done! Congratulations on your new bot. You will find it at
'<OFFICIAL_URL>'.
Use this token to access the HTTP API:
1234567890:AAHzlAU...
Keep your token secure and store it safely, it can be used by anyone to control your bot.
คัดลอกโทเค็นไว้ คุณจะต้องใช้ในอีกสองนาที
⚠️ การรักษาความปลอดภัยของโทเค็น โทเค็นบอตให้สิทธิ์ควบคุมบอตได้เต็มรูปแบบ หากรั่วไหล ใครก็เขียนข้อความในนามบอตและอาจดักอ่านข้อความที่คุณส่งให้ Claude ได้ อย่าเผยแพร่ในรีโพซิทอรี วางลงในโค้ด หรือส่งในแชต ฉันเก็บโทเค็นไว้ที่ ~/.claude/channels/telegram/.env; ปลั๊กอินจะบันทึกไว้ที่นั่นในขั้นตอนถัดไป
ขั้นตอนที่ 2 ติดตั้งปลั๊กอิน Telegram ใน Claude Code
ประเด็นสำคัญ
เริ่ม Claude Code ตามปกติ แล้วป้อน /plugin install telegram@claude-plugins-official ในเซสชัน หากไม่พบปลั๊กอิน ให้เพิ่ม marketplace อย่างเป็นทางการก่อนด้วย /plugin marketplace add anthropics/claude-plugins-official หลังติดตั้งแล้ว เรียกใช้ /reload-plugins เพื่อเปิดใช้งานคำสั่งของปลั๊กอินในเซสชันปัจจุบัน
เปิดเทอร์มินัลในโฟลเดอร์ใดก็ได้ที่คุณใช้ Claude เป็นประจำ แล้วเรียกใช้:
claude
ป้อนคำสั่ง slash ในเซสชัน:
/plugin install telegram@claude-plugins-official
หาก Claude ตอบว่า “Plugin not found in any marketplace” แสดงว่าไคลเอนต์ของคุณยังไม่รู้จัก marketplace อย่างเป็นทางการ ให้เพิ่ม marketplace ดังนี้:
/plugin marketplace add anthropics/claude-plugins-official
หรืออัปเดตหากเคยเพิ่มไว้ก่อนแล้ว:
/plugin marketplace update claude-plugins-official
หลังติดตั้งสำเร็จ ให้โหลดปลั๊กอินใหม่เพื่อเปิดใช้คำสั่ง:
/reload-plugins
ตอนนี้คุณควรเห็นคำสั่ง slash เช่น /telegram:configure และ /telegram:access หากต้องการตรวจสอบ ให้ป้อน /help; รายการควรมีส่วนของ telegram
ขั้นตอนที่ 3 เชื่อมโทเค็นกับปลั๊กอิน
ประเด็นสำคัญ
ในเซสชัน Claude ให้ป้อน /telegram:configure <token> โดยใช้โทเค็นจากขั้นตอนที่ 1 คำสั่งจะบันทึกโทเค็นไว้ที่ ~/.claude/channels/telegram/.env (เข้าถึงได้เฉพาะผู้ใช้ของคุณ) อีกทางเลือกหนึ่งคือตั้งค่าตัวแปรสภาพแวดล้อม TELEGRAM_BOT_TOKEN ใน shell ก่อนเริ่ม Claude ในระบบจริง ฉันใช้วิธีที่สอง เพราะจัดการผ่าน systemd ได้ง่ายกว่า และไม่ต้องดึง ~/.claude/ เข้าไปในรีโพซิทอรี
ในเซสชัน Claude:
/telegram:configure 1234567890:AAHzlAU...
คำสั่งจะบันทึกโทเค็นไว้ใน ~/.claude/channels/telegram/.env ไฟล์นี้เข้าถึงได้เฉพาะผู้ใช้ของคุณ (chmod 600) จึงไม่ต้องกังวล
อีกทางเลือกหนึ่งคือตั้งโทเค็นผ่านตัวแปรสภาพแวดล้อม วิธีนี้มีประโยชน์หากคุณปรับใช้ Claude ด้วย systemd หรือ Docker และไม่ต้องการใช้คำสั่งแบบโต้ตอบ:
export TELEGRAM_BOT_TOKEN="1234567890:AAHzlAU..."
claude --channels plugin:telegram@claude-plugins-official
⚠️ ในระบบจริง ฉันใช้ตัวแปรสภาพแวดล้อมแทนไฟล์ .env ในโฟลเดอร์บ้าน ~/ เสมอ วิธีนี้ทำให้จัดการข้อมูลลับผ่าน systemd ได้ง่ายขึ้น (Environment=TELEGRAM_BOT_TOKEN=...) และหลีกเลี่ยงการดึง ~/.claude/ เข้าไปในรีโพซิทอรีโดยไม่ตั้งใจ
ขั้นตอนที่ 4 เริ่ม Claude ใหม่ด้วยแฟล็ก --channels
ประเด็นสำคัญ
ออกจากเซสชัน (exit หรือ Ctrl+D) แล้วเริ่มใหม่ด้วยแฟล็ก --channels plugin:telegram@claude-plugins-official แฟล็กนี้เปิดใช้ปลั๊กอินและสั่งให้ Claude ตรวจสอบ Telegram API เพื่อหาข้อความใหม่ หากไม่มีแฟล็ก บอตจะมีอยู่แต่เงียบ—ปลั๊กอินยังไม่ทำงานและยังไม่ได้เริ่มตรวจสอบข้อความ
นี่คือจุดสำคัญที่สุด และเป็นจุดที่ทำให้ทุกคนสะดุดในการเรียกใช้ครั้งแรก ติดตั้งปลั๊กอินอย่างเดียวยังไม่พอ หากต้องการให้บอตเริ่มรับข้อความจริง ๆ ต้องเริ่ม Claude ด้วยแฟล็กอย่างชัดเจน:
claude --channels plugin:telegram@claude-plugins-official
หากไม่มีแฟล็ก เซสชันจะทำงานตามปกติ แต่ปลั๊กอิน Telegram จะยังไม่ทำงาน เมื่อใช้แฟล็ก Claude จะเริ่ม MCP server ของปลั๊กอิน เริ่มตรวจสอบ Telegram API และตอบข้อความที่ส่งให้บอต
หลังเริ่มทำงาน คุณควรเห็นข้อความประมาณนี้ในเทอร์มินัล:
✻ Welcome to Claude Code 2.1.80
Channels: telegram@claude-plugins-official (active)
Polling for messages...
หากไม่มีบรรทัดที่ระบุ channels แสดงว่าแฟล็กไม่ได้ถูกนำไปใช้ ตรวจสอบว่า Claude Code เป็นเวอร์ชัน 2.1.80+ และติดตั้งปลั๊กอินแล้ว (/plugin list ภายในเซสชัน)
⚠️ เคล็ดลับที่มีประโยชน์ ฉันเพิ่ม alias ไว้ใน ~/.zshrc:
alias claude-tg="claude --channels plugin:telegram@claude-plugins-official"
จากนั้นก็เรียกใช้ claude-tg ได้เลย คุณระบุปลั๊กอินหลายตัวโดยคั่นด้วยช่องว่างได้: --channels plugin:telegram@... plugin:discord@...
ขั้นตอนที่ 5 จับคู่บัญชีและบล็อกทุกคนที่เหลือ
ประเด็นสำคัญ
เปิดบอตของคุณใน Telegram แล้วส่งข้อความใดก็ได้ บอตจะตอบกลับด้วยรหัสจับคู่หกหลัก กลับไปที่เทอร์มินัลแล้วป้อน /telegram:access pair <code> จากนั้นจำกัดการเข้าถึงด้วย allowlist: /telegram:access policy allowlist อนุมัติเฉพาะรหัส pairing จากคนที่ตั้งใจให้สิทธิ์ sender allowlist ควบคุมว่าใครเข้าถึงเซสชันได้
ขั้นนี้เกี่ยวกับความปลอดภัย ผู้ส่งที่อนุมัติแล้วขอให้ Claude จัดการไฟล์และเครื่องมือที่เซสชันเข้าถึงได้ จับคู่เฉพาะบัญชีที่ต้องการและจำกัดนโยบายผู้ส่งให้พร้อมก่อนพึ่งบอต
ขั้นตอน:
- เปิดบอตของคุณใน Telegram ค้นหาด้วยชื่อผู้ใช้
@my_claude_botหรือลิงก์ในคำตอบจาก BotFather กด “Start” - ส่งข้อความใดก็ได้ให้บอต เช่น
hi - บอตจะตอบกลับด้วยรหัสจับคู่ หน้าตาจะประมาณนี้:
Hi! To pair this account, run in your Claude Code session:
/telegram:access pair 847291
This code is valid for 5 minutes.
- กลับไปที่เทอร์มินัล ในเซสชัน Claude ให้ป้อนคำสั่งจากคำตอบ:
/telegram:access pair 847291
Claude จะตอบว่า “จับคู่บัญชีแล้ว” ตอนนี้บัญชี Telegram ของคุณส่งคำสั่งได้แล้ว
- เปิดใช้นโยบาย allowlist วิธีนี้จะบล็อกทุกบัญชียกเว้นบัญชีที่จับคู่ไว้แล้ว:
/telegram:access policy allowlist
หลังจากนี้ ข้อความจากบัญชีอื่นจะถูก เพิกเฉยโดยไม่แจ้งให้ทราบ ข้อความจะไม่ปรากฏในเทอร์มินัล และบอตจะไม่ตอบกลับ—ราวกับว่าไม่เคยมีข้อความนั้น
⚠️ การเปิดใช้ allowlist ทันทีหลังจับคู่เป็นเรื่องสำคัญมาก อย่าทิ้งไว้ทีหลัง อย่าอนุมัติ pairing ที่ไม่รู้จักระหว่างตั้ง หรือสมมติว่ามีคำตอบสำเร็จแล้วพิสูจน์นโยบายผู้ส่งถูกต้อง ครั้งแรกบอตของฉันทำงานโดยไม่มี allowlist อยู่สิบนาที และมีผู้ใช้ Telegram สุ่มสองคนส่ง “hi” มาในช่วงนั้น โชคดีที่ตอนนั้นฉันยังไม่ได้อนุญาตให้คำสั่งเขียนไฟล์
หากต้องการเพิ่มคนอื่น (เช่น เพื่อนร่วมโครงการ):
/telegram:access pair <code from their account>
พวกเขาต้องส่งข้อความหาบอตก่อน รับรหัส แล้วส่งรหัสให้คุณ จึงจะเพิ่มได้ด้วยวิธีนี้เท่านั้น
มีคู่มือเพิ่มเติมในเอกสาร Ailoot
วิธีเปิด Claude ตลอด 24/7 บน VPS ของคุณเอง
ประเด็นสำคัญ
เซสชันในเครื่องทำงานขณะที่แล็ปท็อปเปิดอยู่เท่านั้น ปิดฝาแล้วบอตจะเงียบ หากต้องการให้ Claude ตอบได้ทุกเมื่อ ให้ย้ายเซสชันไปยัง VPS ของคุณเอง: ติดตั้ง Claude Code และ Bun ยืนยันตัวตนและติดตั้ง/จับคู่ plugin ด้วย Unix user เฉพาะคนเดียวกัน แล้วครอบด้วย systemd เพื่อให้เริ่มใหม่โดยอัตโนมัติ เซิร์ฟเวอร์ Coolify รองรับได้ไม่มีปัญหา
หากต้องการให้บอต “ทำงานตลอดเวลา” แทนที่จะ “เปิดแล็ปท็อปหนึ่งชั่วโมงแล้วค่อยใช้งาน” เซสชันต้องทำงานต่อเนื่อง คุณทำได้ด้วย tmux ในเครื่อง แต่ VPS ง่ายและเชื่อถือได้กว่า
ตัวอย่างการตั้งค่าหนึ่งใช้ VPS ของ Coolify ที่โฮสต์เว็บไซต์ไว้ด้วย (รายละเอียดในคู่มือการเผยแพร่ผ่าน Coolify) คุณใช้เซิร์ฟเวอร์เดียวกันได้—Claude ใช้หน่วยความจำน้อย หากยังไม่มี VPS ให้เลือกแพ็กเกจราคาถูกที่สุดในราคา 4–5 ยูโรต่อเดือน เช่น Hetzner CX11 / Yandex Cloud / Selectel
ขั้นตอนที่ 1: ติดตั้งระบบบน VPS
เริ่มสร้าง Unix account กับ workspace เฉพาะโดยผู้ดูแล ใช้บัญชีเดิมซ้ำได้หลังตรวจ home กับเจ้าของแล้วเท่านั้น:
sudo useradd --create-home --shell /bin/bash claude
sudo install -d -o claude -g claude /home/claude/workspace
sudo -iu claude
ทำต่อใน login shell ของ claude ไม่ใช่ home ของ root ติดตั้ง Bun ด้วยตัวติดตั้งทางการและ Claude Code ด้วยขั้น native ทางการ:
curl -fsSL https://bun.sh/install | bash
curl -fsSL https://claude.ai/install.sh | bash
เปิด login shell ใหม่ของผู้ใช้เดิมให้ PATH จากการติดตั้งมีผล ตรวจบัญชีกับ executable paths:
whoami
printf '%s\n' "$HOME"
command -v bun
command -v claude
bun --version
claude --version
cd /home/claude/workspace
claude
whoami ต้องแสดง claude และ HOME เป็น /home/claude บันทึก absolute paths จาก command -v ใช้ path Claude จริงใน ExecStart และรวมโฟลเดอร์ Bun ใน PATH ของบริการ หยุดหากไม่พบ executable ตัวใด
ขั้นตอนที่ 2: ยืนยันตัวตน ติดตั้ง และจับคู่ในฐานะผู้ใช้บริการ
ในเซสชัน claude แบบโต้ตอบเดียวกัน ทำ sign-in แล้วทำขั้น 2–5 ด้านบนภายใต้ Unix user นี้: ติดตั้ง Telegram plugin แบบ user scope ตั้งโทเค็น เริ่มใหม่ด้วย --channels จับคู่บัญชี Telegram และตั้ง policy allowlist ทดสอบข้อความกับคำตอบก่อนตั้งบริการ ห้ามคัด config หรือ credentials ของ root มาที่ home นี้
รองรับทั้งการยืนยันสมาชิก claude.ai และ Anthropic Console API key Team/Enterprise ต้องให้องค์กรเปิด และ Console organization ที่ใช้ managed settings ต้องตรงค่าช่องทางด้วย Console คิดบิล API ไม่อยู่ในสมาชิก claude.ai คงบัญชีกับวิธียืนยันที่เลือกให้ตรงเมื่อย้ายจาก shell โต้ตอบไปบริการ
ขั้นตอนที่ 3: ครอบเซสชันด้วย systemd
ออกจาก shell ผู้ใช้บริการแล้วสร้าง unit ในฐานะผู้ดูแล unit ด้านล่างสมมติผลตรวจ path เป็น /home/claude/.local/bin/claude กับ /home/claude/.bun/bin/bun หากต่างให้ใช้ผลจริง ส่ง environment ยืนยันตัวตนเดิมกับ bot token ที่เลือก ให้เฉพาะผู้ดูแลอ่าน unit และห้าม commit ข้อมูลลับ สร้าง service สำหรับเริ่มอัตโนมัติและเริ่มใหม่หลังล้ม:
cat > /etc/systemd/system/claude-code.service <<'EOF'
[Unit]
Description=Claude Code with Telegram channel
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=claude
WorkingDirectory=/home/claude/workspace
Environment="HOME=/home/claude"
Environment="TELEGRAM_BOT_TOKEN=1234567890:AAH..."
Environment="PATH=/home/claude/.local/bin:/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/claude/.local/bin/claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable claude-code
systemctl start claude-code
สิ่งที่ฉันตั้งค่าไว้มีดังนี้:
Type=simple— โหมดง่าย ๆ; systemd ถือว่ากระบวนการเริ่มทำงานทันทีที่เปิดขึ้นUser=claude— ทำงานภายใต้ผู้ใช้แยกต่างหาก ไม่ใช่ root ปลอดภัยกว่าWorkingDirectory=/home/claude/workspace— workspace ที่เตรียมและผู้ใช้บริการเป็นเจ้าของ ใส่ repository ที่ต้องการก่อนเริ่ม อย่าทิ้ง clone ของ root หรือรันจาก home rootEnvironment=TELEGRAM_BOT_TOKEN=...— ส่งโทเค็นให้กระบวนการโดยตรง ไม่ต้องใช้ไฟล์.env--dangerously-skip-permissions— ปิดการยืนยันตามโหมดนั้น แต่ allowlist ระบุผู้ส่ง ไม่ทำให้คำสั่งที่ขอปลอดภัย ใช้ bypass นี้เฉพาะสภาพแวดล้อมแยกที่จงใจจำกัดไฟล์ credentials และเครือข่ายRestart=on-failure— หากกระบวนการล้มเหลว (Claude ล่มหรือเครือข่ายขัดข้อง) systemd จะเริ่มใหม่ภายใน 10 วินาที
ดูบันทึกได้ด้วย:
journalctl -u claude-code -f
หากมีปัญหา journalctl -u claude-code -n 100 จะแสดง 100 บรรทัดล่าสุด
ขั้นตอนที่ 4: ตรวจสอบว่าบอตยังทำงานอยู่
เริ่มบริการหลัง setup แบบโต้ตอบให้คำตอบ Telegram จริงแล้วเท่านั้น ส่งข้อความไม่สำคัญหาบอตเดิมจากบัญชีที่จับคู่ ยืนยันทั้งคำตอบกับ service logs หากโต้ตอบทำงานแต่ systemd ไม่ ให้เทียบ Unix user, HOME, workspace, executable path, PATH และ environment ยืนยันตัวตนก่อน
หากต้องแก้ pairing ภายหลัง ให้หยุดบริการ รัน sudo -iu claude เข้า /home/claude/workspace แล้วเปิด channel เดียวแบบโต้ตอบ จับคู่และเปิด allowlist ที่นั่น ออกแล้วเริ่มบริการใหม่ ห้ามเปิด poller สองตัวให้บอตเดียวพร้อมกัน journalctl อ่าน logs ไม่ได้ให้ Claude prompt แบบโต้ตอบ
5 กับดักบนเซิร์ฟเวอร์ใช้งานจริงและวิธีหลีกเลี่ยง
ประเด็นสำคัญ
ฉันรวบรวมกับดักเหล่านี้จากการตั้งค่าระบบจริงตลอดหนึ่งสัปดาห์: systemd มองไม่เห็น Bun, การตรวจสอบข้อความหยุดทำงานหลังปล่อยไว้นาน, โควตาแพ็กเกจ Max หมดกลางวัน, --dangerously-skip-permissions อาจทำให้ข้อมูลรั่ว และอาจลืม allowlist หลังติดตั้งใหม่ แต่ละปัญหาแก้ได้ด้วยการตั้งค่าเพียงบรรทัดเดียว หากไม่รู้เรื่องเหล่านี้ คุณจะเจอปัญหาภายในไม่กี่วัน
1. Bun ไม่อยู่ใน PATH ของ systemd
systemd เริ่มกระบวนการด้วยสภาพแวดล้อมขั้นต่ำ จึงมองไม่เห็นตัวแปรจาก ~/.bashrc หากติดตั้ง Bun เฉพาะใน home root แต่ service ใช้ User=claude บริการจะไม่สืบทอดการติดตั้งนั้นหรือ shell PATH ของ root
วิธีแก้ ติดตั้ง Bun ให้ใช้ได้ทั้งระบบ (/usr/local/bin/bun) หรือระบุ PATH โดยตรง:
Environment="PATH=/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
2. เซสชันขาดการเชื่อมต่อ TCP กับ Telegram API หลังไม่มีการใช้งานเป็นเวลานาน
หลังไม่มีการใช้งาน 6–12 ชั่วโมง บอตอาจ “เงียบไป”—ข้อความถูกส่งไปยัง Telegram แต่ปลั๊กอินไม่ได้รับ นี่เป็นข้อขัดข้องของการดึงข้อความแบบ long polling
วิธีแก้ เพิ่มการเริ่มใหม่ตามกำหนดให้ systemd (ทุก 24 ชั่วโมง):
Restart=always
RuntimeMaxSec=86400
หรือกำหนดงาน cron: 0 5 * * * systemctl restart claude-code (เริ่มใหม่ตอนตี 5)
3. โควตา Claude Max หมดกลางวัน
หากใช้งาน Claude ผ่าน Telegram อย่างหนัก แพ็กเกจ Max 5x (~$100 ต่อเดือน) อาจใช้โควตาจนหมดภายใน 4–6 ชั่วโมง คำขอจาก Telegram ไม่ต่างจากคำขอในเทอร์มินัลทั่วไป ทั้งหมดใช้โควตาเดียวกัน
วิธีแก้ ตั้งการเตือนว่า “บอตไม่ตอบกลับ—ตรวจสอบ /stats” หากใช้โควตาหมด ให้รอจนรีเซ็ตหรืออัปเกรดเป็น Max 20x ($200 ต่อเดือน) คู่มือประหยัดโทเค็น และคู่มือเปรียบเทียบโมเดล Sonnet กับ Opus อาจช่วยได้
4. --dangerously-skip-permissions เป็นอันตรายแม้ใช้ allowlist
แฟล็กนี้ปิดการยืนยันทั้งหมด ทุกคำสั่งจากคุณใน Telegram จะทำงานโดยไม่มีคำถาม ไม่ว่าจะลบไฟล์ ส่งคำขอภายนอก หรือทำอย่างอื่น ครั้งหนึ่งฉันขอให้ Claude “ลบคำสั่ง console.log ที่ไม่จำเป็น” แล้ว Claude กระตือรือร้นจัดระเบียบจนลบ log สำหรับดีบักในสคริปต์ใช้งานจริงไปครึ่งหนึ่ง ฉันกู้คืนผ่าน git ได้ แต่ความเสียหายเกิดขึ้นแล้ว
วิธีแก้ อย่าเปิดใช้ --dangerously-skip-permissions หากทำงานกับโครงการสำคัญ ให้ใช้ Remote Control เพื่อเริ่มเซสชันแทน—การขออนุญาตจะส่งมาที่โทรศัพท์และคุณอนุมัติเอง ใช้ Channels พร้อม --dangerously-skip-permissions กับร่างคร่าว ๆ งานปรับโครงสร้างโค้ด และการทดสอบ
5. allowlist “ใช้ไม่ได้” หลังติดตั้งใหม่
allowlist เก็บอยู่ใน ~/.claude/channels/telegram/ หากย้ายไป VPS ใหม่ ติดตั้ง Claude ใหม่ หรือเปลี่ยนผู้ใช้ ข้อมูลการจับคู่เดิมจะไม่ถูกนำมาใช้ allowlist ผู้ส่งเดิมไม่อยู่ อย่าสมมติว่า instance ใหม่มีนโยบายเข้าถึงเดิม
วิธีแก้ ก่อนย้าย ให้สำรอง ~/.claude/channels/telegram/ หลังย้ายแล้วนำกลับไปไว้ที่เดิม หรือจับคู่ใหม่ทันทีหลังติดตั้ง และ อย่าปล่อยให้เวลาผ่านไปแม้แต่นาทีเดียวระหว่างเริ่มบอตกับการตั้งค่า policy allowlist
ควรเลือก Channels หรือ Remote Control?
ประเด็นสำคัญ
Channels ตอบกลับในแชตจากเซสชัน Claude ของคุณ และคุณส่งพรอมป์ต์จากโทรศัพท์ ส่วน Remote Control แสดงหน้าจอเทอร์มินัลบนโทรศัพท์ และคุณควบคุมเซสชันด้วยปุ่ม Channels สะดวกกว่าสำหรับ “ถามแล้วไปทำอย่างอื่นต่อ” ส่วน Remote Control เหมาะกับขั้นตอนสำคัญที่คุณต้องเห็นว่า Claude กำลังทำอะไรและอนุมัติทุกการกระทำที่เสี่ยง
Anthropic เปิดตัวทั้งสองฟีเจอร์ในเวลาไล่เลี่ยกัน: Remote Control เมื่อวันที่ 25 กุมภาพันธ์ 2026 และ Channels เมื่อวันที่ 20 มีนาคม 2026 ทั้งสอง ไม่ได้ทำหน้าที่ซ้ำกัน แต่แก้ปัญหาคนละอย่าง
| สถานการณ์ | Channels | Remote Control |
|---|---|---|
| ถามว่า “เมื่อวานมี commit อะไรบ้าง?” ขณะอยู่นอกบ้าน | ✅ เหมาะอย่างยิ่ง | เกินความจำเป็น—ต้องใช้หน้าจอเต็ม |
| อนุมัติการเปลี่ยนแปลงไฟล์ | ⚠️ อนุมัติแบบไม่เห็นรายละเอียดผ่าน --dangerously-skip-permissions | ✅ คุณเห็นสิ่งที่ Claude ต้องการทำ |
| ใช้ Claude ตลอด 24/7 | ✅ ตั้งค่า VPS + systemd | ⚠️ ต้องเปิดแล็ปท็อปไว้ |
| แค่ส่งพรอมป์ต์สองสามข้อความจากโทรศัพท์ | ⚠️ เกินความจำเป็น—ต้องมีบอต โทเค็น และปลั๊กอิน | ✅ ใช้ QR code เดียว |
| รับ webhook จาก CI / Sentry | ✅ เป็นกรณีใช้งานโดยตรง | ❌ ไม่เหมาะกับงานนี้ |
| ทีมที่มีหลายคน | ✅ ใช้ allowlist สำหรับหลายบัญชี | ⚠️ เจ้าของเซสชันเท่านั้น |
| เก็บไฟล์ไว้นอกคลาวด์ของ Anthropic | ✅ ส่งผ่าน MCP เฉพาะข้อความ | ✅ เป็นข้อความเท่านั้นเช่นกัน |
ฉันแบ่งการใช้งานแบบนี้: ใช้ Channels กับงานแบบไม่พร้อมกันเมื่ออยู่ห่างจากแล็ปท็อป การแจ้งเตือน CI และการเชื่อมต่อระบบต่าง ๆ ใช้ Remote Control เมื่อต้องเห็นว่า Claude กำลังทำอะไรหรืออนุมัติขั้นตอนที่เสี่ยง
ใช้ทั้งสองอย่างพร้อมกันได้ บอต Telegram เป็นช่องทางด่วนสำหรับ “ถามแล้วได้คำตอบ” ส่วน Remote Control เป็นช่องทางสำหรับ “ควบคุมเรื่องสำคัญ” ทั้งสองใช้โควตา Claude ร่วมกัน
คำถามที่พบบ่อย
ประเด็นสำคัญ
คำถามที่พบบ่อยเกี่ยวกับ Channels เจ็ดข้อ ได้แก่ การเชื่อมต่อบอตหลายตัว สิ่งที่เกิดขึ้นเมื่อปิดเทอร์มินัล webhook จาก CI, Telegram เทียบกับ Discord, ข้อจำกัดของแพ็กเกจ Team, Claude มองเห็นอะไรจากโทรศัพท์ได้บ้าง และแพ็กเกจฟรี มีเนื้อหาเพิ่มเติมในเอกสาร Ailoot
เชื่อมต่อบอตหลายตัวพร้อมกันได้ไหม?
ได้ แฟล็ก --channels รับรายการที่คั่นด้วยช่องว่าง: --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official เซสชัน Claude หนึ่งเซสชันตอบได้ในทั้งสองแชต
ถ้าปิดเทอร์มินัลจะเกิดอะไรขึ้น?
เซสชันจะปิด ปลั๊กอินหยุดทำงาน และบอตเงียบไป บน VPS เซสชันจะทำงานต่อใน systemd บนเครื่องในบ้าน หากปิดแล็ปท็อป claude จะตัดการเชื่อมต่อด้วย SIGHUP ภายในไม่กี่วินาที
รับการแจ้งเตือนจาก CI หรือ Sentry ได้ไหม?
ได้ Channels เป็น ช่องทางสองทาง คุณเขียนปลั๊กอินของตัวเองเพื่อส่ง webhook เข้าสู่เซสชันได้โดยใช้ Channels Reference Claude จะเห็นเหตุการณ์แบบเรียลไทม์และตอบกลับ
Telegram มีข้อจำกัดกว่า Discord ในด้านใดหรือไม่?
ความสามารถพื้นฐานเหมือนกัน Discord ต้องเปิด Message Content Intent ในการตั้งค่าบอต ส่วน iMessage ใช้ได้เฉพาะบน macOS และอ่านฐานข้อมูล ~/Library/Messages/chat.db โดยตรง Telegram ใช้ได้ทั่วไป
ถ้าใช้แพ็กเกจ Team ต้องทำอะไรบ้าง?
ผู้ดูแลระบบขององค์กรต้องเปิดใช้ channelsEnabled: true ในการตั้งค่าที่จัดการ หรือผ่าน admin-settings/claude-code หากไม่เปิดใช้ ปลั๊กอินจะเชื่อมต่อได้ แต่ข้อความจะไม่ผ่าน และมีคำเตือนตอนเริ่มทำงานในเทอร์มินัล
Claude มองเห็นอะไรจากโทรศัพท์ของฉัน—ตัวแชต Telegram เองหรือเปล่า?
ไม่ Claude เห็น เฉพาะข้อความที่คุณส่งให้บอต เท่านั้น ประวัติการสนทนา รายการแชต และรายชื่อติดต่อใน Telegram ของคุณจะเข้าถึงไม่ได้ ปลั๊กอิน MCP อ่านเฉพาะข้อความที่ส่งถึงบอตผ่าน Telegram Bot API
ใช้ Claude ผ่าน Channels โดยไม่มีแพ็กเกจ Pro/Max ได้ไหม?
ได้ รองรับ Anthropic Console API key ด้วยและบิล API คิดกับ Console organization นั้น free tier claude.ai ไม่ใช่เส้นทางสมาชิกในเรื่องนี้ Team/Enterprise และ managed Console ต้องตรงค่าการเปิด channels ที่เกี่ยวข้อง
ขั้นต่อไป
ประเด็นสำคัญ
ตั้งค่าบอตแล้ว เปิดใช้ allowlist แล้ว และย้ายเซสชันไปยัง VPS แล้ว ขั้นต่อไปคือผนวก Channels เข้ากับกิจวัตรประจำวัน: เชื่อม webhook จาก GitHub Actions และ Sentry ใช้ร่วมกับ Routines สำหรับงานประจำ และตั้งระบบตรวจสอบสถานะบอต แต่ละขั้นใช้เวลา 15–30 นาทีและช่วยปิดช่องว่างด้านการสังเกตการณ์หนึ่งจุด
เมื่อบอตทำงานได้อย่างเชื่อถือแล้ว ยังมีขั้นตอนอีกเล็กน้อยเพื่อใช้ Channels ให้เกิดประโยชน์สูงสุด:
- เชื่อม webhook จาก CI หากใช้ GitHub Actions / GitLab CI คุณกำหนดค่าปลั๊กอิน Channels ให้ส่งผลการ build เข้าสู่เซสชันโดยตรงได้ Claude จะเห็น “การทดสอบล้มเหลว” ทันทีหลัง push และเสนอวิธีแก้ ดูเอกสาร channels-reference
- ใช้ร่วมกับ Routines คุณเรียกใช้ Routines ในเซสชันเดียวกันเพื่อทำงานประจำได้ ตอนเช้าบอตส่ง “สวัสดีตอนเช้า นี่คือสรุปโครงการ” มาเอง แล้วคุณตอบจากโทรศัพท์ว่า “ทำรายงานรายได้”
- ตั้งค่าตัวตรวจสอบบอต หากบอตเงียบไป ฉันอยากรู้ สคริปต์ cron ขนาดเล็กบน VPS จะ ping บอต Telegram ทุกชั่วโมง หากบอตไม่ตอบ สคริปต์จะส่งการแจ้งเตือนไปยังช่องทางแยก หากไม่มีระบบนี้ บอตอาจหยุดทำงานตอนตี 4 และคุณจะไม่รู้จนถึงเที่ยง
- พิจารณา hooks Hooks ตอบสนองต่อเหตุการณ์ของ Claude (เริ่มใช้เครื่องมือ จบข้อความ) เมื่อใช้ Hooks ร่วมกับ Channels ก็ส่งการแจ้งเตือน Telegram อัตโนมัติได้ เช่น “Claude ทำงาน N เสร็จแล้ว”
อย่านำ Channels ไปใช้กับทุกอย่าง เป็นวิธีสะดวกในการติดตามงานขณะอยู่นอกบ้านหรือที่ร้านกาแฟ เมื่ออยากคิดอย่างจริงจัง ให้เปิดแล็ปท็อปแล้วนั่งทำงาน Channels ช่วยให้คุณไม่ต้องคอยคิดว่า “อ้อ ยังต้องถามเรื่องนี้ ต้องเปิดแล็ปท็อปก่อน” ตอนออกไปข้างนอกหรือเดินทาง
แหล่งข้อมูล
- ส่งเหตุการณ์เข้าสู่เซสชันที่กำลังทำงานด้วย channels - เอกสาร Claude Code
- anthropics/claude-plugins-official บน GitHub - ซอร์สโค้ดสำหรับปลั๊กอิน Telegram, Discord, iMessage และ fakechat
- ทำงานต่อจากเซสชันในเครื่องได้ทุกอุปกรณ์ด้วย Remote Control - เอกสาร Claude Code
หากต้องการเนื้อหาเพิ่มเติมเกี่ยวกับการทำงานกับเครื่องมือ โปรดดูเอกสาร Ailoot
รายละเอียดเพิ่มเติม
คำถามที่พบบ่อย
ทำไมบอต Telegram ใช้เองได้แต่ล้มเมื่อเป็นบริการ?
เทียบ Unix user, HOME, workspace, executable path Claude, Bun PATH และ environment ยืนยันตัวตนของบริการกับรันโต้ตอบที่สำเร็จ ติดตั้ง ตั้ง และจับคู่ในผู้ใช้บริการเดียวกัน สถานะ plugin กับ pairing ของ root เป็นอีกชุดตั้งค่า
Console API key แทน sign-in Pro หรือ Max สำหรับ Channels ได้หรือไม่?
ได้ รองรับการยืนยัน Anthropic Console API key และคิด Console API billing ตรวจค่าช่องทางองค์กรเมื่อจำเป็น และทำ token configuration pairing กับ sender allowlist ภายใต้บัญชีที่รันเซสชัน