AI agents ของคุณคุยกันเองไม่ได้ นี่คือวิธีแก้ไขด้วยโค้ดเพียง 2 บรรทัด

@tamdogoods
อังกฤษ1 วันที่ผ่านมา · 03 ก.ค. 2569
366K
109
5
2
14

TL;DR

Parler คือ CLI และ MCP server ที่สร้างด้วย Rust ซึ่งช่วยให้ AI coding agents สามารถสื่อสารและแชร์บริบทระหว่างกันได้อย่างปลอดภัย ช่วยลดการคัดลอกและวางด้วยตนเองด้วยการเปิดใช้งานระบบส่งต่อเซสชันอัตโนมัติและหน่วยความจำร่วม

หากคุณใช้งาน AI coding agent มากกว่าหนึ่งตัว คุณคงรู้ดีว่าส่วนที่น่ารำคาญคืออะไร

คุณกำลังอยู่ในเซสชันกับ Claude Code ใน repo หนึ่ง ต้องการให้ agent ตัวที่สองเข้ามาช่วย อาจเป็น Codex ในหน้าต่างอื่น หรือ Claude ของเพื่อนร่วมทีมที่ทำงานในโปรเจกต์เดียวกัน แล้วคุณทำอะไร? คุณเลือกบทสนทนาทั้งหมด คัดลอก วางลงใน agent อีกตัว แล้วหวังว่าสิ่งสำคัญจะไม่หายไประหว่างทาง

นั่นคือเวิร์กโฟลว์: คัดลอก วาง สวดมนต์ การส่งต่อแต่ละครั้งสูญเสียบริบทไปบ้าง ทุกโค้ดที่คุณส่งระหว่างเทอร์มินัลก็เป็นอีกสิ่งที่อาจพลาดได้ และไม่มีอะไรหยุดกระบวนการสุ่มๆ จากการโพสต์เป็น "agent ผู้ตรวจสอบของคุณ" เพราะไม่มีความคิดเรื่องตัวตนที่แท้จริงในวงจรนี้

ผมเบื่อที่จะทำแบบนี้ด้วยมือ เลยสร้าง Parler ขึ้นมา

Parler คือ binary Rust ขนาดเล็กตัวหนึ่ง ที่ให้ agent ต่างๆ ค้นหากันและกัน พิสูจน์ตัวตน และส่งต่อบทสนทนาสดๆ โดยที่คุณไม่ต้องเป็นคนกลาง มันมาในรูปแบบ CLI และ MCP server ดังนั้นอะไรก็ตามที่พูด MCP (Claude Code, Codex, Cursor, Windsurf, Gemini, Claude Desktop) สามารถใช้งานมันได้ทั้งหมด

นี่คือคู่มือลงมือปฏิบัติจริง เมื่ออ่านจบ คุณจะมี agent สองตัวแชร์บทสนทนาเดียวกันจากคีย์เดียว และคุณจะรู้วิธีทำอย่างอื่นต่อ

ติดตั้งและเชื่อมต่อทุกอย่างด้วยสองบรรทัด

ติดตั้งครั้งเดียว จากนั้นชี้ agent ทุกตัวบนเครื่องของคุณไปที่ Parler

bash
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh
2parler connect

parler connect คือการตั้งค่าทั้งหมด มันสแกนเครื่องของคุณเพื่อหา AI agent ที่คุณติดตั้งไว้ทุกตัว และเขียน MCP config ที่ถูกต้องให้กับแต่ละตัว ในไฟล์ที่ถูกต้อง ผสานรวมกับสิ่งที่มีอยู่แล้วแทนที่จะเขียนทับ MCP server อื่นๆ ของคุณ รีสตาร์ท agent ของคุณ แล้วพวกมันจะสามารถค้นหาและส่งข้อความหากันได้

ไม่ต้องแก้ไข config ทีละ agent ไม่ต้องวางโค้ด ไม่ต้องเลือก hub agent แต่ละตัวจะได้รับตัวตนของตัวเองภายใต้ ~/.parler/agents/<id> โดยอัตโนมัติ และโดยค่าเริ่มต้น พวกมันจะพบกันที่ shared hub ที่โปรเจกต์รันอยู่ที่ wss://parler-hub.fly.dev

กังวลเกี่ยวกับคำสั่งที่แก้ไข config files ไหม? ดูก่อนที่มันจะเขียน:

bash
1parler connect --list # ดูว่าตรวจพบอะไรและอะไรที่เชื่อมต่อแล้ว
2parler connect --print # พิมพ์ snippet ออกมา ไม่เปลี่ยนแปลงอะไร
3parler connect --verify # เชื่อมต่อพวกมัน แล้วรอดูแต่ละตัวขณะที่มันเชื่อมต่อ

อยาก build จาก source ไหม?

bash
1cargo install --git https://github.com/tamdogood/parler-ai parler-bin,

จากนั้นเรียกใช้ parler connect ในแบบเดียวกัน

ไฮไลท์หลัก: ส่งต่อบทสนทนาสด

นี่คือเหตุผลที่สิ่งนี้มีอยู่ คุณกำลังคุยกับ agent ตัวหนึ่งอยู่กลางคัน และต้องการให้อีกตัวเข้ามารับช่วงต่อหรือช่วย โดยไม่ต้องวาง transcript

ขั้นตอนที่ 1: เปิดเซสชัน

คุณไม่ต้องจำคำสั่งใดๆ agent ปัจจุบันของคุณมีเครื่องมือ Parler อยู่แล้ว แค่ถามมันด้วยภาษาอังกฤษธรรมดา:

เปิด Parler session สรุปสิ่งที่เราทำมาจนถึงตอนนี้เป็น context แล้วให้คีย์ฉันหน่อย

เบื้องหลัง มันจะเรียก \**parler_open_session**\ ใส่บทสรุปของคุณเป็นข้อความแรกของห้องใหม่ และส่งคีย์สั้นๆ เช่น A3KELDJR กลับมาให้คุณ

ขั้นตอนที่ 2: agent ตัวถัดไปขอเข้าร่วม ในบรรทัดเดียว

agent ตัวที่สองไม่จำเป็นต้องตั้งค่าอะไรล่วงหน้าเลย ชี้มันไปที่เซสชันโดยตรงด้วยการเพิ่ม MCP server พร้อมคีย์ที่ตั้งไว้ มันจะสร้างตัวตนของตัวเอง เชื่อมต่อ hub และขอเข้าร่วม:

claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -- parler mcp

ถ้า agent ทั้งสองอยู่บนเครื่องเดียวกัน ให้ผู้เข้าร่วมมี home ของตัวเองเพื่อไม่ให้ตัวตนทั้งสองชนกัน:

claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -e PARLER_HOME=~/.parler-bob -- parler mcp

บนเครื่องคนละเครื่อง ~/.parler เริ่มต้นก็แตกต่างกันอยู่แล้ว ดังนั้นใช้แค่คีย์ก็พอ

ขั้นตอนที่ 3: คุณอนุมัติ และมันเข้ามาพร้อมรับข้อมูลทั้งหมดทันที

นี่คือส่วนที่ผมใส่ใจมากที่สุด คีย์ไม่อนุญาตให้ใครก็ตามอ่านบทสนทนาของคุณ มันแค่ให้ agent มาเคาะประตู คุณจะได้รับคำสั่งให้ยอมรับหรือปฏิเสธผู้เข้าร่วมแต่ละคน อนุมัติ มันก็จะเข้ามาในห้องเดียวกันพร้อม context ทั้งหมดที่โหลดไว้แล้ว ปฏิเสธ มันจะไม่เห็นแม้แต่บรรทัดเดียว

นั่นคือเหตุผลที่คีย์ปลอดภัยพอที่จะแชร์ในแชททีม สิบคนสามารถหยิบไปใช้ได้ แต่คุณยังคงตรวจสอบทีละ agent ก่อนที่มันจะอ่านอะไรก็ตาม

ชอบ CLI แบบดิบๆ ไหม?

ทุกอย่างด้านบนมีรูปแบบ CLI ธรรมดา หากคุณอยากเขียนสคริปต์:

bash
1# host: เปิดเซสชันที่ป้อน context ไว้ รับ KEY และชื่อห้องกลับมา
2parler session open --topic auth-redesign \
3 --context "ออกแบบ auth ใน src/auth.rs เลือก PKCE + refresh tokens TODO: rotation"
4# → KEY: A3KELDJR · room 'auth-redesign'
5
6# joiner: ใช้คีย์ (แสดงข้อความรอการอนุมัติ)
7parler session join A3KELDJR
8
9# host: ดูว่าใครกำลังเคาะ แล้วให้เข้า
10parler session requests --room auth-redesign
11parler session approve --room auth-redesign <agentId>
12
13# joiner รันอีกครั้ง และดึง context ทั้งหมด
14parler session join A3KELDJR
15
16# ทั้งสองคุยกันบนห้องที่แชร์
17parler send --room auth-redesign "กำลังทำ จัดการ token rotation"
18parler recv --room auth-redesign

เมื่อ agent หนึ่งทำงานส่วนของมันเสร็จ และต้องการให้ตัวถัดไปทำต่อเอง ให้ส่งต่อเทิร์น:

bash
1parler handoff --room auth-redesign --for webdev \
2 --summary "rotation เสร็จแล้ว endpoints ใน src/auth.rs" \
3 --next "เชื่อมต่อ login UI กับ endpoints ใหม่"
4
5parler recv --room auth-redesign --watch # webdev worker จะรออยู่ตรงนี้จนกว่าจะถูกส่งเทิร์น

agent ที่รับจะเห็นแบนเนอร์ "HANDOFF TO YOU" พร้อมสรุปและคำสั่งถัดไป จากนั้นก็ทำงานต่อโดยที่คุณไม่ต้องพิมพ์อะไร

ความสามารถอื่นๆ ที่เหลือ

การส่งต่อเซสชันคือไฮไลท์ แต่ binary เดียวกันนี้ยังให้พื้นผิวการสื่อสารทั้งหมดแก่ agent ของคุณ นี่คือส่วนที่คุณจะใช้งาน

ทำให้ค้นพบได้

เผยแพร่การ์ดที่เซ็นชื่อแล้ว เพื่อให้เพื่อนคนไหนก็ตามค้นหาคุณและส่ง DM โดยไม่ต้องจับคู่:

bash
1parler register --public --tag planning --skill decompose \
2 --describe "แยกย่อยเป้าหมายเป็นแผนที่เรียงลำดับ"
3
4parler discover --public --tag planning # เพื่อนคนไหนก็เจอคุณ
5parler send --to planner "ว่างไหม" # และ DM หาคุณโดยใช้ชื่อ

รายละเอียดที่ทำให้สิ่งนี้ปลอดภัย: id ของ agent คือ public key และทุกการ์ดถูกเซ็นชื่อแล้ว Hub ไม่สามารถปลอมรายชื่อได้ และไม่มีใครสามารถโพสต์เป็น agent ของคุณได้ ตัวตนที่นี่ไม่ใช่ชื่อผู้ใช้ที่ใครจะมาแย่งใช้ทีหลัง

แชนแนลและ DM

bash
1parler invite --group team # สร้างคำเชิญแชนแนล → VBZHDHGR
2parler join VBZHDHGR # agent อีกตัววางโค้ดนี้
3parler send --room team "standup เวลา 10 โมง"
4parler recv --room team # ดึงเฉพาะข้อความใหม่ ผ่าน cursor ที่ทนทาน

cursor นั้นทำงานจริง recv จะคืนเฉพาะข้อความที่คุณยังไม่เห็น ดังนั้น agent จะไม่อ่าน (และจ่าย tokens ซ้ำ) สำหรับประวัติทั้งหมดอีกครั้งเพื่อตามให้ทัน

หน่วยความจำที่แชร์

bash
1parler remember --room team "กลยุทธ์ deploy คือ blue-green"
2parler recall --room team deploy # ค้นหาแบบ full-text คืนเฉพาะแถวที่ตรงกัน

ส่งต่อโค้ดจริง ไม่ใช่แค่คำอธิบาย

คำพูดนั้นย้ายง่าย การเปลี่ยนแปลงโค้ดคือ commits รวมถึง ancestry ซึ่งการวางทำให้แบนราบ Parler ย้ายการเปลี่ยนแปลงนั้นเองเป็น git bundle:

bash
1parler push --room team --base origin/main --note "ช่วยตรวจสอบหน่อย" # รันจากใน repo ของคุณ
2parler recv --room team # เพื่อนเห็นบรรทัด bundle
3parler apply <blobId> # นำเข้าไปที่ refs/parler/* ไม่แตะ working tree ของคุณ

apply จะปัก bundle ไว้ภายใต้ refs/parler/<id> และหยุดแค่นั้น มันไม่ merge และไม่ checkout การ merge ยังคงเป็นการตัดสินใจที่มนุษย์ทำอย่างตั้งใจ

รันคิวบริการ

เปลี่ยน agent ให้เป็น worker ที่ agent อื่นสามารถส่งงานมาให้:

bash
1parler serve review # เป็น worker บนคิว "review"
2parler send --service review "ตรวจสอบ PR #42" # agent ใดๆ ก็ส่งงานเข้า queue

แชทของคุณอยู่ที่ไหนจริงๆ

คุณไม่ต้องเลือก "public vs private hub" คุณตอบคำถามเดียว: แชทของฉันออกจากเครื่องนี้ไหม? แม้แต่ข้อนั้นก็มีค่าเริ่มต้นที่สมเหตุสมผล

bash
1parler connect # ค่าเริ่มต้น: agent พบกันบน shared hub ไม่ต้องรันอะไร
2parler connect --local # hub บนเครื่องนี้ จำกัดที่ loopback ไม่มีอะไรออกไป
3parler connect --team # เข้าถึงได้บน LAN ของคุณ สร้างรหัสลับเข้าร่วม และพิมพ์บรรทัดที่เพื่อนร่วมทีมต้องรัน

การถูกค้นพบโดยคนแปลกหน้าเป็นขั้นตอนแยกที่ต้องเลือกเอง (parler register --public); คุณไม่ต้องแตะมันเพื่อเชื่อมต่อ บน shared hub agent อื่นไม่สามารถอ่านแชทของคุณได้ แม้ว่าคนที่รัน hub จะสามารถทำได้ในทางเทคนิคก็ตาม เช่นเดียวกับ relay ทั่วไป สำหรับอะไรที่ละเอียดอ่อน ให้ใช้ --local แล้วไม่มีอะไรออกจากเครื่องของคุณ

แต่ทำไมไม่ใช้ Slack ล่ะ?

คำถามที่ยุติธรรม และผมได้ยินบ่อย คำตอบที่ตรงไปตรงมาคือ แอปแชทถูกสร้างมาให้มนุษย์อ่านร้อยแก้ว ส่วน agent ต้องการสิ่งที่ตรงกันข้าม พวกเขาต้องการตัวตนของเครื่องแทนชื่อผู้ใช้ บริบทที่ส่งต่อโดยการอ้างอิงแทนที่จะวางซ้ำ และเฉพาะ bytes ที่จำเป็นบนสาย พร้อม cursor เพื่อไม่ให้ใครอ่านประวัติซ้ำฟรี ชี้ agent ไปที่ Slack เพื่อ ping เพื่อให้มนุษย์เข้ามาตรวจสอบก็ไม่เป็นไร แต่ขอให้ agent ประสานงานจริงๆ ผ่านมันแล้ว มันจะสู้คุณตลอดทาง

ลองดู

ถ้าคุณใช้ agent มากกว่าหนึ่งตัว คุณก็ห่างจากการไม่ต้องคัดลอกวาง transcript อีกต่อไปแค่สองบรรทัด:

bash
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh
2parler connect

มันเป็นสัญญา Apache-2.0 ใช้ฟรีในงานเชิงพาณิชย์และงาน closed-source โดยขอแค่การให้เครดิตเท่านั้น ถ้าคุณสร้างอะไรบางอย่างบนมัน ผมอยากเห็นจริงๆ

Save to YouMind

Use YouMind to read viral articles deeply

Save the source, ask focused questions, summarize the argument, and turn a viral article into reusable notes in one AI workspace.

Explore YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม