หนึ่งเสียง สิบเลน: หนึ่งวันของการพิมพ์ด้วยเสียง
วันหนึ่งของการรันเลนสตาร์ตอัปขนานเป็นอย่างไร เมื่อคีย์บอร์ดเลิกเป็นช่องทางส่งออกเดียว บันทึกของผู้ก่อตั้ง ทีละชั่วโมง
สองลูก สามสตาร์ตอัป หนึ่งเสียง เล่าเรื่องจุดกำเนิดไว้แล้ว: เลนสตาร์ตอัปเดิมพันสูงที่เดินขนานกัน ลูกคนที่สองที่อายุยังไม่ถึงหกเดือน และคีย์บอร์ดที่เงียบ ๆ กลายเป็นจุดล้มเหลวจุดเดียวของทุกอย่าง บทความนั้นอธิบายว่าทำไม Keebye ถึงมีอยู่ แต่คนยังถามคำถามที่ปฏิบัติได้มากกว่านั้นเรื่อย ๆ: แล้วหนึ่งวันจริง ๆ หน้าตาเป็นอย่างไร
นี่คือวันนั้น ไม่ใช่วันปกติ เพราะไม่มีอะไรแบบนั้นอยู่ แต่เป็นรูปร่างจริงที่เกิดซ้ำ ผมจะเลี่ยงตัวเลขโดยตั้งใจ ผมไม่เคยวัดว่าดีขึ้นกี่เปอร์เซ็นต์ และถึงเคยวัด ผมก็คงไม่เชื่อมัน สิ่งที่ผมบรรยายได้คือช่องทางเสียงถูกใช้ตรงไหน ไม่ถูกใช้ตรงไหน และอะไรเปลี่ยนไปในเนื้อสัมผัสของงาน
หมายเหตุเรื่อง "สิบเลน" มันไม่ใช่การอวด เลนคืออะไรก็ตามที่ขยับต่อไปได้ด้วยประโยคจากผม: coding agent ที่ทำงานค้างอยู่ การรีวิวโค้ดที่มีคนรอ เธรดใน Slack อีเมลถึงทนายของนักลงทุน ร่างเอกสารหนึ่งฉบับ ในวันที่ยุ่ง มันเปิดอยู่ประมาณนั้นจริง ๆ ส่วนใหญ่นิ่งอยู่เฉย ๆ ในแต่ละขณะ ปัญหาคือเลนที่ตื่นขึ้นมาตื่นตามตารางของมันเอง ไม่ใช่ของผม
เช้าตรู่: หนึ่งแขน สาม agent
วันเริ่มก่อนที่บ้านจะเริ่ม ซึ่งแปลว่ามันเริ่มด้วยลูกอ่อนอยู่บนแขนข้างหนึ่ง นี่คือชั่วโมงที่เสียงเปลี่ยนจากความสะดวกเป็นความจำเป็น
เลน agent สามเลนรันมาตั้งแต่เมื่อคืน แต่ละเลนอยู่ในเทอร์มินัลของตัวเอง แต่ละเลนอยู่คนละ repository สิ่งแรกที่ผมทำคืออ่านว่าพวกมันทำอะไรไป การอ่านต้องใช้ตา ไม่ใช่มือ ลูกอ่อนจึงไม่มีปัญหา สิ่งที่สองคือปรับทิศทางเลนที่หลุดออกนอกทาง และนั่นคือจุดที่คีย์บอร์ดเคยแพ้
ตอนนี้: คลิกเข้าไปในเทอร์มินัล กด ⌘ ขวาค้าง พูดคำสั่งปรับทิศทาง ปล่อย "migration โอเคแล้ว แต่คุณเปลี่ยนชื่อตารางในโมเดลโดยไม่เปลี่ยนใน seed script แก้ seed แล้วรันเทสต์ใหม่" ข้อความไปลงใน prompt กด Enter เลนถัดไป
ผมมีนิสัยเล็ก ๆ อย่างหนึ่งที่ใช้เวลาสักพักกว่าจะเรียนรู้: พูดเป็นประโยคเต็ม agent ทำงานกับประโยคเต็มได้ดีกว่า และการพิมพ์ด้วยเสียงก็ผลิตประโยคเต็มออกมาเองโดยธรรมชาติ เพราะนั่นคือวิธีที่คนพูดกัน สไตล์โทรเลขที่ผมเคยพิมพ์ ("แก้ seed รันใหม่") เป็นผลพลอยได้ของคีย์บอร์ด ไม่ใช่ความชอบ
ชั่วโมงนี้ยังเผยจุดแปลกของการพิมพ์ด้วยเสียงครั้งแรกที่ควรรู้ ไมโครโฟนจะอุ่นเครื่องหลังการพิมพ์ด้วยเสียงครั้งแรกของเซสชัน แล้วเก็บ pre-roll ไว้ 500 มิลลิวินาทีจากนั้นไป การกดค้างครั้งแรกสุดของเช้าจึงยังต้องจ่ายต้นทุนการเริ่มสตรีม และอาจกินคำหนึ่งคำถ้าผมเริ่มพูดเร็วเกินไป ผมเลยเรียนรู้ที่จะหยุดจังหวะหนึ่ง ทำไมแอปพิมพ์ด้วยเสียงถึงกินคำแรกของคุณ อธิบายกลไกไว้ ฉบับสั้นคือมันเป็นปัญหาของทั้งหมวดหมู่ที่มีทางแก้บางส่วน ไม่ใช่ปัญหาที่แก้จบแล้ว
สาย ๆ: เลนรีวิว
สตาร์ตอัปสองแห่งที่ผมทำงานด้วยมีรีวิวโค้ดรอผมอยู่แทบทุกเช้า การรีวิวคือกรณีใช้งานที่ดีที่สุดเท่าที่จะเป็นไปได้สำหรับการพิมพ์ด้วยเสียง: มันคือการอ่านที่มีร้อยแก้วสั้น ๆ ออกมาเป็นครั้งคราว และร้อยแก้วนั้นพูดกับมนุษย์
ผมอ่าน diff ในแท็บเบราว์เซอร์ พออะไรต้องการความเห็น ผมคลิกเข้าไปในช่อง กดค้าง พูด ปล่อย พจนานุกรมส่วนตัวเก็บตัวระบุของโปรเจกต์ไว้ reconnectBackoff จึงออกมาเป็น reconnectBackoff ไม่ใช่คำภาษาอังกฤษสามคำ การเก็บกวาดใช้กฎเป็นค่าเริ่มต้น: คำฟุ่มเฟือยกับคำที่พูดซ้ำหายไป ถ้อยคำของผมยังอยู่ ผมปิดการขัดเกลาด้วย LLM ในเครื่องแบบเลือกใช้ไว้สำหรับความเห็นรีวิว เพราะตัวป้องกันความซื่อตรงที่อยู่เบื้องหลังมันเป็นฮิวริสติกไว้กันการสูญเสียโทเคนอย่างรุนแรง การขยายตัว หรือการซ้ำ ไม่ใช่การรับประกันว่าคำปฏิเสธรอดมา และในการรีวิว "ไม่" ที่พลิกไปเปลี่ยนคำตัดสินทั้งอัน
ทีมหนึ่งในนั้นรีวิวเป็นภาษาโรมาเนีย เอนจิน 25 ภาษาของ Keebye จัดการเรื่องนั้นได้บนเครื่อง ผมปักหมุดภาษาในถาด แล้วช่วงคำพูดถัดไปก็ถูกถอดรหัสเป็นภาษาโรมาเนีย รวมถึงตัวระบุภาษาอังกฤษด้วย พูดรีวิวโค้ดในภาษาของคุณเอง มีรายละเอียด รวมถึงรายการตามจริงว่าภาษาไหนครอบคลุมและภาษาไหนไม่
ใกล้เที่ยง: เลนที่เป็นมนุษย์
ไม่ใช่ทุกเลนที่เป็น agent ราวช่วงนี้ เธรด Slack และอีเมลที่ค้างข้ามคืนต้องการคำตอบ และนี่คือจุดที่วันหนึ่ง ๆ เคยเสียเวลาไปหลายชั่วโมงอย่างเงียบ ๆ ไม่ใช่เพราะการตอบมันยาก แต่เพราะการตอบแต่ละครั้งแปลว่าต้องออกจากเลนหนึ่ง และการออกจากเลนมีต้นทุนตอนกลับเข้าไป
เสียงเปลี่ยนเศรษฐศาสตร์ของการตอบ คำตอบสองประโยคใน Slack คือการกด hotkey ค้างครั้งเดียว พูดลงในช่องข้อความขณะที่สายตาผมยังอยู่ครึ่งหนึ่งกับเทอร์มินัลข้าง ๆ อีเมลที่เกี่ยวกับนักลงทุนยาวกว่านั้นและผมยังเขียนมันอย่างระมัดระวัง แต่ตอนนี้ร่างแรกมาจากการพูด แล้วค่อยมาแก้ การพูดร่างทำให้ได้รูปร่างเร็ว ส่วนการแก้แบบพิมพ์คือที่ที่ความแม่นยำเกิดขึ้น
ชั่วโมงนี้ยังเป็นชั่วโมงที่ข้อกำหนดเรื่องความเป็นส่วนตัวสำคัญที่สุด สิ่งที่ผมพูดตรงนี้คือเนื้อในของบริษัทคนอื่น: ผลิตภัณฑ์ที่ยังไม่ปล่อย การคุยเรื่องความปลอดภัย เรื่องเงิน Keebye ถอดเสียงบนเครื่อง ทำงานได้แม้ปิด Wi-Fi หลังดาวน์โหลดโมเดล เก็บประวัติที่เป็นข้อความอย่างเดียวไว้ในเครื่องซึ่งลบตัวเองหลัง 30 วัน และไม่ส่ง telemetry ใด ๆ เสียงของคุณไปไหน คือฉบับยาวของเหตุผลว่าทำไมเรื่องนั้นถึงต่อรองไม่ได้สำหรับผม
บ่าย: งานลึก และเลนที่ตื่นขึ้นมา
ช่วงบ่ายเป็นของเลนที่ต้องใช้ความคิดจริง ๆ: การออกแบบ บั๊กยาก เอกสารที่ต้องถูกต้อง อันนี้พิมพ์ เสียงเป็นช่องทางควบคุม ไม่ใช่ช่องทางคิด และปัญหายาก ๆ ก็ไม่ได้ง่ายขึ้นเพราะถูกพูดออกมา
แต่เลนอื่นไม่รู้ว่าเป็นเวลางานลึก agent ทำเสร็จแล้วถามคำถาม ผู้รีวิวตอบความเห็นของผมด้วยข้อโต้แย้ง เมื่อก่อน ทุกครั้งแบบนี้คือการตัดสินใจ: ตัดโฟกัสแล้วสลับหน้าต่าง หรือปล่อยให้มันค้างไว้ ตอนนี้ส่วนใหญ่เป็นแค่การเหลือบมองกับหนึ่งประโยค เหลือบดูคำถามของ agent คลิกเข้าไป พูดว่า "ได้ แต่ให้ endpoint เดิมยังทำงานอยู่จนกว่าไคลเอนต์จะปล่อย" แล้วคลิกกลับ หน้าต่างงานลึกยังเหลือรอดเกือบครบ เพราะการขัดจังหวะเป็นการพูดไม่กี่วินาที แทนที่จะเป็นการสลับบริบทเต็มรูปแบบเข้าไปในปัญหาของคนอื่น
ผมอยากพูดให้เป๊ะเรื่องข้ออ้างตรงนี้ เสียงไม่ได้ทำให้การขัดจังหวะไม่มีต้นทุน มันทำให้ต้นทุนเชิงกลของการตอบเล็กพอจนต้นทุนที่เหลืออยู่เป็นแค่ความคิด ซึ่งเป็นต้นทุนจริงมาตลอดอยู่แล้ว
เย็น: เลนที่หนักไปทางเทอร์มินัล
สตาร์ตอัปแห่งหนึ่งทำงานปฏิบัติการจำนวนมากผ่าน SSH ใน tmux บนเซิร์ฟเวอร์ที่การวางผ่านคลิปบอร์ดไม่มีอยู่ในฐานะแนวคิดด้วยซ้ำ นี่คือจุดที่เครื่องมือพิมพ์ด้วยเสียงมักล้ม เพราะส่วนใหญ่แทรกข้อความด้วยการวาง
Keebye ก็วางเป็นค่าเริ่มต้นเหมือนกัน พร้อมการแบ่งก้อนที่รู้จักเทอร์มินัลสำหรับเชลล์ สำหรับ SSH และ tmux ผมสลับไปใช้โหมดพิมพ์จำลองแบบเลือกใช้ ซึ่งฉีดข้อความเป็นการกดแป้น Unicode แทนที่จะพึ่งคลิปบอร์ด มันทำงานกับเลย์เอาต์ที่ไม่ใช่ QWERTY ด้วย ซึ่งสำคัญกับคีย์บอร์ดโรมาเนียบนเครื่องหนึ่ง การพิมพ์ด้วยเสียงที่รอดในเทอร์มินัล ครอบคลุมการตั้งค่า ส่วน คู่มือเทอร์มินัล ครอบคลุมข้อแลกเปลี่ยน
Keebye ยังปฏิเสธการแทรกข้อความลงในช่องอินพุตนิรภัย ดังนั้นเวลาเซิร์ฟเวอร์ถามหา passphrase hotkey จะไม่ทำอะไรเลย บางครั้งมันน่ารำคาญ และมันถูกต้องทั้งหมด
อะไรที่ไม่ได้เปลี่ยน
วันแบบนี้อาจอ่านเหมือนว่าเสียงแก้ปัญหาการมีเลนมากเกินไปได้ มันไม่ได้แก้ มันแก้คอขวดจำเพาะข้อเดียว: ต้นทุนทางกายภาพของการส่งประโยคหนึ่งไปยังเลนที่ต้องการมัน อย่างอื่นเหมือนเดิม
การคิดยังเป็นคอขวดของงานยาก การอ่านยังใช้เวลาเท่าที่มันใช้ agent ยังหลุดทางและยังต้องปรับทิศทาง และคำสั่งที่พูดพึมพำก็ให้ผลลัพธ์พึมพำ ไม่ว่าจะพูดหรือพิมพ์ เสียงเป็นส่วนเสริมของมือ ไม่ใช่ตัวแทน ผมยังพิมพ์เยอะ แค่ไม่ได้เป็นคอขวดจุดเดียวที่ทุกเลนต้องรออยู่ข้างหลังอีกแล้ว
และแอปก็มีความหยาบของซอฟต์แวร์ยุคแรก ตัวระบุถูกฟังผิด คำแรกของวันบางทีก็ขาดหาย ไม่มีคำศัพท์คำสั่งเสียง การย้ายไปมาระหว่างหน้าต่างจึงยังเป็นการคลิก มันรันบน macOS เท่านั้น
รูปร่างของสิ่งนี้
ภาพเก่าของนักพัฒนา 10x คือคนหนึ่งคนที่พิมพ์เร็วกว่า ภาพที่มาถึงจริง ๆ คือคนหนึ่งคนที่ทำหน้าที่วาทยกร: หลายเลน บางเลนเป็นอัตโนมัติ บางเลนเป็นมนุษย์ แต่ละเลนรอประโยคหนึ่งประโยค ในโลกแบบนั้น เลเวอเรจไม่ใช่ความเร็วในการพิมพ์ มันคือว่าคุณส่งเจตนาไปยังเลนที่ต้องการมันได้ถูกแค่ไหน ในสถานการณ์ทางกายภาพแบบไหนก็ตามที่คุณอยู่ รวมถึงตอนแขนข้างหนึ่งไม่ว่าง
ถ้าวันของคุณมีรูปร่างแบบนั้น คู่มือสำหรับนักพัฒนา คือจุดเริ่มต้นเชิงปฏิบัติ และถ้าคุณกำลังชั่งใจเลือกแอปพิมพ์ด้วยเสียงสำหรับมัน ทางเลือกแทน Keebye คือการเปรียบเทียบอย่างตรงไปตรงมาที่บอกว่าแต่ละตัวเหมาะกับตรงไหน การทดลองใช้มี 14 วันและเริ่มนับตอนที่คุณลงชื่อเข้าใช้บนเดสก์ท็อปครั้งแรก หนึ่งสัปดาห์จริงของการรันเลนจึงเป็นสิ่งที่มันมีไว้เพื่อสิ่งนั้นพอดี
เลนเยอะกว่ามือ? ลองอีกช่องทางหนึ่งดู
เริ่มทดลองใช้ฟรี แล้วลองใช้ชีวิตจริงหนึ่งวันโดยมีเสียงเป็นช่องทางส่งออกที่สอง — 14 วัน รันบนเครื่อง ไม่ต้องใช้บัตร
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
อ่านต่อ
สองลูก สามสตาร์ตอัป หนึ่งเสียง
เรื่องราวของผู้ก่อตั้งที่อยู่เบื้องหลัง Keebye: สายงานเดิมพันสูงหลายสายพร้อมกัน ลูกอายุไม่ถึงหกเดือน และผลงานที่ขยายไปตามจำนวนเลนที่เสียงของคุณขับได้
พูดรีวิวโค้ดในภาษาของคุณเอง
โค้ดเป็นภาษาอังกฤษ แต่ความเห็นรีวิวของคุณไม่จำเป็นต้องเป็น วิธีพูดรีวิวใน 25 ภาษาบนเครื่อง และทำไมการปักหมุดภาษาถึงสำคัญ
พูดป้อน prompt ให้ agent ขนาน ทีละเลน
การรัน coding agent พร้อมกันสองสามตัวทำให้การสั่ง prompt กลายเป็นคอขวด นี่คือเวิร์กโฟลว์เสียงสำหรับป้อนงานทุกเลนโดยไม่ต้องออกจากเลนที่คุณอยู่