ฉันกำลังสร้างแอปบันทึกและถอดเสียง会议的เฉพาะ Mac ชื่อ Kanary โดยใช้ Claude Code (Opus 4.8) และ Codex (GPT-5.5) บางคนอาจจะนึกภาพไม่ออกว่า "vibe coding" ทำงานยังไงในการพัฒนาจริงๆ
ครั้งนี้ ฉันอยากเขียนเกี่ยวกับความยอดเยี่ยมของ Opus ที่ทำงานเฉพาะเป็นดีไซเนอร์และที่ปรึกษาด้านสเปกในระดับสูง
ความท้าทายในครั้งนี้คือปัญหาการลืมหยุดบันทึก นี่คือปัญหาที่มีผู้ใช้รายงานมากที่สุดในตอนนี้
ด้านล่างคือบทสนทนา: ฉัน > Claude > Codex > Claude
ฉัน
เกี่ยวกับการหยุดบันทึก: เนื่องจาก Kanary แสดงแค่จุดสีแดงจุดเดียวบนแถบเมนูเมื่อปิดหน้าต่าง และมันสังเคราะห์เสียงไมโครโฟน/ลำโพงทั่วโลกโดยไม่ผูกกับแอปใดแอปหนึ่ง ในทางทฤษฎีแล้วมันเป็นไปไม่ได้ที่จะตรวจจับว่าการประชุมสิ้นสุดลง ส่งผลให้ผู้ใช้หลายคนมีชั่วโมงแห่งความเงียบที่ถูกบันทึกไว้หลังการประชุม ฉันเพิ่งเพิ่มฟีเจอร์ตัดช่วงต้นและท้ายเพื่อหยุดปัญหา แต่ฉันคิดว่าเป้าหมายที่แท้จริงคือการทำให้ผู้ใช้รู้ว่าการประชุมจบลงแล้ว
ฉันมีสองไอเดียจนถึงตอนนี้:
- แจ้งเตือนหากระดับเสียงจากไมโครโฟน/ลำโพงเงียบเกือบ 5 นาที
- แสดงมินิเพลเยอร์เมื่อเริ่มบันทึกเพื่อป้องกันสถานะที่ปล่อยให้มันทำงานโดยไม่รู้ตัว
ทั้งสองมีข้อดีและข้อเสีย คุณคิดว่ายังไง?
Claude
พูดตรงๆ สองข้อนี้จัดการกับปัญหาคนละชั้น และข้อที่เจาะแกนกลาง (= ทำให้พวกเขารู้ว่าจบ) คือแนวทางแบบที่ 1 อย่างไรก็ตาม ทั้งข้อ 1 และ 2 มีจุดอ่อนในตัวมันเอง จุดชนะอยู่ที่วิธีการรวมมันเข้าด้วยกัน มาวิเคราะห์กัน
อย่างแรก มาตกลงกันเรื่องนิยามของโหมดที่ล้มเหลว
สถานะ "ชั่วโมงแห่งการบันทึกที่ว่างเปล่า" เกิดขึ้น เพราะ ผู้ใช้ไม่ได้อยู่หน้าจอหรือไม่ได้มองหน้าจอ นี่คือแกนหลักของแกนการประเมิน
- ข้อ 2 (มินิเพลเยอร์) เป็นการแสดง visual affordance → มันเข้าถึงเฉพาะคนที่กำลังมองหน้าจอเท่านั้น ใช้ได้กับกรณีที่ใครบางคน "อยู่ที่โต๊ะแต่หมกมุ่นกับงานอื่น" แต่มัน ล้มเหลวในทางทฤษฎีในการเข้าถึงปัญหาหลัก: "ออกจากโต๊ะ / ย้ายออกจากคอมพิวเตอร์" มันใช้ไม่ได้ในสถานการณ์ที่ต้องการมากที่สุด
- ข้อ 1 (การแจ้งเตือน) เข้าถึงนอกจอ → มันไปที่ศูนย์การแจ้งเตือน หน้าจอล็อค และ (ถ้ามิเรอร์) iPhone ความเข้ากันได้กับโหมดที่ล้มเหลวนั้นดีกว่าแบบ 1 อย่างท่วมท้น
ดังนั้น ถ้าเราเล็งไปที่แกนกลาง เราจะใช้ข้อ 1 เป็นฐาน
จุดอ่อนของแต่ละข้อเสนอ
จุดอ่อนของข้อ 1 คือ false positives ความเงียบ ≠ จุดสิ้นสุดการประชุม ความเงียบเกิดขึ้นตามปกติในการประชุมจริง (อ่านเอกสาร คิด พักเบรก ดูวิดีโอที่ไม่มีเสียงผ่านการแชร์หน้าจอ ฯลฯ) ขีดจำกัด 5 นาทีเป็นการแลกเปลี่ยนระหว่าง "สั้น = น่ารำคาญ / ยาว = ที่ว่างเปล่ายังคงอยู่" ซึ่งกลายเป็นนรกแห่งการปรับแต่งได้ง่าย หาก false triggers เกิดขึ้นสองสามครั้ง ความไว้วางใจในระบบแจ้งเตือนก็จะตาย ซึ่งน่ากลัวที่สุด
จุดอ่อนของข้อ 2 คือการชินชาและการรั่วไหลทางหน้าจอที่แชร์ การแสดงผลแบบคงที่กลายเป็นวอลเปเปอร์ภายในหนึ่งสัปดาห์และหายไปจากการรับรู้ นอกจากนี้ ด้วยธรรมชาติของเครื่องมือการประชุม การมีตัวบ่งชี้การบันทึกปรากฏบนหน้าจอที่แชร์ เป็นอุบัติเหตุทั้งในแง่ของการรั่วไหลของข้อมูลและความสวยงาม
จุดชนะ: อย่าตัดสินแค่ความเงียบ "ความเงียบ AND ผู้ใช้ไม่ใช้งาน"
ปัญหา false positive ของข้อ 1 แทบจะหายไปถ้าเพิ่มสัญญาณอีกตัว
- RMS เสียงต่ำกว่าเกณฑ์ (ทั้งไมค์และลำโพง) PLUS
- เวลาไม่มีการทำงานของ HID (CGEventSourceSecondsSinceLastEventType / IOKit, ไม่มีการทำงานของคีย์บอร์ด/เมาส์) และที่ดีที่สุดคือ การปิดหน้าจอ / ล็อคหน้าจอ
การใช้ตรรกะ AND นี้เปลี่ยนการตัดสินจาก "ความเงียบ" เป็น "การประชุมจบลง AND คนออกไป" แทบจะไม่ทำให้เกิด false triggers เลย ความเงียบระหว่างการประชุมจะไม่ทำให้เกิดการแจ้งเตือนเพราะผู้ใช้อยู่ที่โต๊ะและใช้งานคอมพิวเตอร์ ดังนั้นพวกเขาจึงไม่ได้ "ไม่ใช้งาน"
และถ้าเงื่อนไขนี้เป็นจริง ความจริงที่ว่าเราสามารถ หยุดอัตโนมัติได้อย่างปลอดภัย นั้นยิ่งใหญ่:
- ผู้ใช้กำลังทำงาน (อยู่) → ไม่ต้องหยุดอัตโนมัติหรือแจ้งเตือนไม่ว่าจะเกิดอะไรขึ้น คนกำลังดูอยู่ และมีจุดสีแดงบนแถบเมนู ไว้ใจพวกเขา (นี่คือจุดที่มินิเพลเยอร์ในข้อ 2 ทำงาน)
- ไม่ใช้งาน แต่มีเสียง → ความเป็นไปได้ของการบันทึกระยะไกลที่ถูกต้อง เช่น เว็บินาร์ อย่าหยุด
- ไม่ใช้งาน AND เงียบ → นี่คือสถานะเดียวที่ยืนยันแล้วว่า "การประชุมจบ + ออกไป" → แจ้งเตือน → ถ้าไม่ตอบสนอง ให้หยุดอัตโนมัติ
เนื่องจากพวกเขาออกจากโต๊ะไปแล้ว ความเสี่ยงที่จะพลาดส่วนที่เหลือของการประชุมด้วยการหยุดอัตโนมัติจึงเป็นศูนย์ในเชิงโครงสร้าง เนื่องจากฟีเจอร์ตัดแต่งทำความสะอาดท้ายเสียงที่เงียบ เนื้อหา ณ จุดที่หยุดก็สะอาดด้วยเช่นกัน โดยการสร้าง บันไดของการแจ้งเตือน (ทางหนีสำหรับการทำงานระยะยาว) → หยุดอัตโนมัติหลังจาก M นาที (การรักษาตัวเองสำหรับผู้ใช้ที่ออกไป) มันจะแก้ไขตัวเองแม้ว่าผู้ใช้จะไม่สังเกตเห็นการแจ็ตเตือน
ทำไมเราควรหยุด ไม่ใช่แค่ "ทำให้พวกเขารู้ตัว"
เหตุผลที่ยึดแกนกลางแทนที่จะตัดแต่งอย่างเดียวคือ ความเป็นส่วนตัว การรับเสียงในห้องเป็นเวลาหลายชั่วโมงหลังการประชุมเป็นอุบัติเหตุที่เกี่ยวข้องกับการบันทึกการสนทนาส่วนตัวที่ไม่เกี่ยวข้องกับการประชุม นั่นเป็นเหตุผลที่ฉันผลักดัน ทิศทางเชิงรุกในการหยุดเมื่อไม่อยู่ มากกว่าแค่ "ทำให้พวกเขารู้ตัว (เชิงรับ)"
สรุป
- แกนหลัก = เวอร์ชันปรับปรุงของข้อ 1: ความเงียบ AND ไม่ใช้งาน → แจ้งเตือน → หยุดอัตโนมัติแบบบันได ตรงไปที่โหมดที่ล้มเหลว บดขยี้ false positives และปกป้องความเป็นส่วนตัว
- ข้อ 2 = เสริม: มีคุณค่าในฐานะการแสดงสภาพแวดล้อมสำหรับผู้ใช้ที่อยู่ที่โต๊ะ แต่มีความสำคัญต่ำกว่า ถ้ารวม การซ่อน/ย่ออัตโนมัติระหว่างการแชร์หน้าจอ เป็นสิ่งที่ต้องมี
- การเพิ่ม การแสดงเวลาที่ผ่านไป ไปยังจุดสีแดงบนแถบเมนูนั้นถูก แต่ช่วยเพิ่มการรับรู้ว่า "ยังบันทึกอยู่" ดังนั้นมันคุ้มค่าที่จะทำทันทีไม่ว่าจะเลือกทางไหน
ในฐานะข้อโต้แย้ง บางคนอาจไม่ชอบการหยุดอัตโนมัติว่า "ตัดเนื้อหาผู้ใช้ตามอำเภอใจ" ในกรณีนั้น การประนีประนอมคือหยุดที่การแจ้งเตือน ทำให้การแจ็ตเตือนน่าเชื่อถือโดยกำจัด false positives ด้วยเงื่อนไขการไม่ใช้งาน เมื่อคุณตัดสินใจว่าจะไปจนถึงการหยุดอัตโนมัติหรือหยุดที่การแจ้งเตือน นโยบายการดำเนินการก็ถูกกำหนดแล้ว
Codex
ฉันคิดว่าความคิดเห็นของ Claude สมเหตุสมผลมาก โดยเฉพาะการจัดระเบียบว่า "ข้อ 1 และ 2 เป็นคนละชั้น" และตรรกะ "ความเงียบ AND ไม่ใช้งาน" นั้นแข็งแกร่ง
นี่คือวิธีที่ฉันจะจัดลำดับความสำคัญ:
- แจ้งเตือนเมื่อเงียบ AND ไม่ใช้งาน
- ทั้งไมค์/ลำโพงเงียบเกือบ
- ไม่มีการทำงานของคีย์บอร์ด/เมาส์
- ควรพิจารณาการล็อคหน้าจอ/ปิดหน้าจอ
- หลังจาก 5 นาที ให้แจ้งเตือน: "กำลังบันทึกอยู่ หยุด?"
- หยุดอัตโนมัติถ้าไม่มีการตอบสนองในช่วงเวลาหนึ่งหลังการแจ้งเตือน
- ขึ้นอยู่กับปรัชญาผลิตภัณฑ์ แต่ฉันคิดว่าโอเคที่จะรวม
- เหตุผลคือดังที่ Claude กล่าว: นี่ไม่ใช่ปัญหาพื้นที่จัดเก็บ มันเป็นปัญหาความเป็นส่วนตัว
- อย่างไรก็ตาม ในตอนแรก ควรให้เปิด/ปิดได้ในการตั้งค่า หรืออย่างน้อย "แนะนำให้เปิด"
- แสดงเวลาบันทึกบนจุดสีแดงในแถบเมนู
- ถูกและมีประสิทธิภาพ
- เช่น ● 1:24:03 เพื่อให้พวกเขารู้ว่า "ยังบันทึกอยู่" แม้หน้าต่างจะปิด
- สิ่งนี้คุ้มค่าที่จะทำตอนนี้
สำหรับมินิเพลเยอร์ ฉันจะลดลำดับความสำคัญเป็นโซลูชันหลัก เหตุผลก็คือ กรณีที่ใหญ่ที่สุดของ "ลืมแล้วปล่อยไว้" คือเมื่อพวกเขาไม่ได้มองหน้าจอหรือลุกจากที่นั่ง มินิเพลเยอร์ไม่ถึงพวกเขาที่นั่น บวกกับความเสี่ยงที่จะปรากฏในการแชร์หน้าจอก็น่ารำคาญนิดหน่อย
ไม่ใช่ว่ามินิเพลเยอร์ไม่มีค่า แต่มันมีบทบาทที่แตกต่าง มันมีประสิทธิภาพสำหรับ "การเตือนตามธรรมชาติระหว่างทำงานว่ากำลังบันทึกอยู่" แต่สำหรับ "การหยุดอุบัติเหตุการบันทึกเป็นชั่วโมงหลังการประชุม" การแจ้งเตือน/หยุดอัตโนมัติตรงเป้ามากกว่า
สเปกที่ฉันแนะนำคือ:
ถ้าไมค์/ลำโพงเงียบเกือบ AND ผู้ใช้ไม่ทำงานต่อเนื่อง 5 นาทีระหว่างการบันทึก ให้แจ้งเตือน ถ้าไม่มีการตอบสนองอีก 5 นาทีหลังการแจ้งเตือน ให้หยุดอัตโนมัติ หลังจากหยุด ให้ตัดท้ายเสียงที่เงียบและบันทึก
ด้วยการตั้งค่านี้ มันยากที่จะหยุดระหว่างความเงียบในการประชุม และมันจะไม่หยุดสำหรับกรณีที่มีการเล่นเสียง เช่น การดูเว็บินาร์ นอกจากนี้ มันสามารถรักษาตัวเองได้ในสถานะที่มีปัญหามากที่สุด: "ออกจากโต๊ะและไม่สามารถสังเกตเห็นการแจ้งเตือน"
สิ่งหนึ่งที่ควรทราบ: เกณฑ์สำหรับ "เงียบเกือบ" แตกต่างกันอย่างมากตามสภาพแวดล้อมของผู้ใช้ ดังนั้นค่าคงที่อาจยุ่งเหยิง ควรเรียนรู้เสียงรบกวนรอบข้างหลังจากเริ่มบันทึกและมองหาสถานะที่ "คล้ายความเงียบ" โดยสัมพัทธ์ มันอาจหยาบในตอนแรก แต่นี่จะเป็นตัวกำหนดคุณภาพของประสบการณ์ในอนาคต
สรุปแล้ว ฉันเห็นด้วยอย่างยิ่งกับข้อเสนอของ Claude อย่างไรก็ตาม ฉันอยากไปอีกขั้นจาก "แกนกลางคือการทำให้พวกเขารู้ตัว" เป็น การหยุดจริงเมื่อพวกเขาออกไป ความรู้สึกไว้วางใจที่ Kanary จะปกป้องคุณโดยอัตโนมัติเหมาะกับปัญหานี้มากกว่า
Claude
เห็นด้วย ฉันสนับสนุนให้ไปไกลถึงการหยุดเมื่อพวกเขาออกไป รูปแบบบันได (เงียบ + ไม่ใช้งาน 5 นาที → แจ้งเตือน → อีก 5 นาที → หยุดอัตโนมัติ → ตัดท้าย) แข็งแกร่ง นอกจากนั้น ฉันจะเพิ่ม 4 ประเด็นที่จะสร้างความแตกต่างในการดำเนินการ
1. การพูดถึงเกณฑ์เป็นดังที่ Codex กล่าว และสิ่งนี้กำหนดคุณภาพของประสบการณ์ มาออกแบบให้เฉพาะเจาะจงมากขึ้น
เกณฑ์ dB คงที่จะยุ่งเหยิงแน่นอนเนื่องจากความแตกต่างของสภาพแวดล้อม ดังนั้นคำตอบที่ถูกต้องคือดูที่ ค่าสัมพัทธ์ภายในเซสชันการบันทึก เรียนรู้แบบหมุนเวียน "ช่วงระดับเสียงที่ใช้งาน (ค่ามัธยฐาน) ระหว่างการพูด" ในไม่กี่สิบวินาทีถึงนาทีแรกของการบันทึก และพิจารณา RMS ปัจจุบันเป็นสถานะ "คล้ายความเงียบ" ถ้ามันลดลงอย่างมากจากที่นั่น ใช้ค่าสัมบูรณ์เป็นตัวป้องกันขอบเขตล่างเสริมเท่านั้น
อีกอย่าง: มันมีประสิทธิภาพที่ไมค์และลำโพงสามารถปฏิบัติแตกต่างกันได้ สำหรับด้านลำโพง แทนที่จะวัด RMS คุณสามารถรับได้ว่า "มีแอปใดกำลังส่งเสียงออกมาหรือไม่" จาก OS (CoreAudio process audio / tap) ซึ่งช่วยให้การตัดสินเกือบแน่นอน ใช้ RMS สัมพัทธ์เฉพาะด้านไมค์เท่านั้น ใช้ AND ของทั้งสองที่เงียบ เนื่องจากลำโพงกลายเป็นสัญญาณที่ยืนยันได้ false positives จึงลดลงอีก
ข้อควรทราบ: เนื่องจากมี กรณีที่การประชุมเริ่มต้นอย่างเงียบๆ (ซึ่งเส้นฐาน "คล้ายความเงียบ" ที่เรียนรู้ตอนเริ่มต้นจริงๆ แล้วเป็นการสนทนาปกติ) ให้เก็บเส้นฐานแบบหมุนเวียนแทนที่จะคงที่
2. เพิ่มการ์ดเรลสองอันให้กับการหยุดอัตโนมัติ
- อย่าหยุดอัตโนมัติในช่วง N นาทีแรก (เช่น 5-10 นาที) ของการบันทึก เพื่อหลีกเลี่ยงการฆ่าความเงียบระหว่างการตั้งค่าหรือสถานะ "เริ่มบันทึกเร็วและรอ"
- ทางหนีสำหรับ "อย่าหยุดเซสชันนี้ / อย่าถามอีก" เพื่อให้ผู้ใช้ระดับพาวเวอร์ในกรณีที่ถูกต้อง เช่น การบันทึกแบบโฟกัสเดี่ยวระยะยาว หรือการบรรยายที่เงียบเกือบ ไม่ถูกรบกวนทุกครั้ง เมื่อกด "เก็บไว้" ให้ปิดการทำงานสำหรับเซสชันนั้น
3. คำนึงถึงลำดับของคุณค่าเพื่อไม่ให้จัดสรรการลงทุนผิด จริงๆ แล้ว การหยุดอัตโนมัติคือตัวหนักจริงสำหรับ "ผู้ใช้ที่ไม่อยู่" และการแจ้งเตือนส่วนใหญ่เป็นเพียงมารยาท + การตรวจสอบความยินยอมสำหรับ "คนที่อยู่ที่โต๊ะแต่หมกมุ่น" ถ้าพวกเขาออกจากโต๊ะ พวกเขาจะไม่สังเกตเห็นการแจ้งเตือน (การทำงานบนการแจ้งเตือนหน้าจอล็อคก็มีจำกัด) ดังนั้นอย่าออกแบบ UX การแจ้งเตือนมากเกินไป การตระหนักว่า การรักษาตัวเองเกิดขึ้นที่ด้านการหยุดอัตโนมัติ ช่วยให้คุณเก็บการใช้งานเริ่มต้นให้เรียบง่าย
4. สร้างวงจรป้อนกลับสำหรับการปรับแต่งเกณฑ์ตั้งแต่เริ่มต้น สัญญาณที่ดีที่สุดว่าการหยุดอัตโนมัติเป็น false trigger หรือไม่คือ ว่าผู้ใช้เริ่มบันทึกอีกครั้งด้วยตนเองทันที (ภายใน X นาที) หลังจากหยุดหรือไม่ การบันทึกสิ่งนี้จะสะสมหลักฐานของ "การหยุดมากเกินไป" โดยอัตโนมัติ ช่วยให้คุณปรับเกณฑ์ให้แน่นขึ้นด้วยข้อมูล มันถูก ดังนั้นควรใส่ตั้งแต่เริ่มต้น
ฉันผลักดันให้เปิดเป็นค่าเริ่มต้น (เห็นด้วยกับ "แนะนำให้เปิด" ของ Codex หรือมากกว่านั้น ผลักดันให้เปิดด้วยเกณฑ์อนุรักษ์นิยม) เหตุผลง่ายๆ: คนที่ถูกเผาด้วยอุบัติเหตุนี้คือคนที่ไม่เปิดหน้าจอการตั้งค่า การตั้งค่าช่วยเฉพาะคนที่ไม่ลำบากตั้งแต่แรก
เวลาที่ผ่านไปบนแถบเมนู (● 1:24:03) ไม่มีการพึ่งพาใดๆ และสามารถทำได้ทันที มินิเพลเยอร์ถูกเลื่อนออกไปเป็นส่วนเสริมที่มีบทบาทต่าง + ซ่อนระหว่างการแชร์หน้าจอ
ฉันคิดว่าสเปกแข็งแกร่งแล้ว การตัดสินใจเดียวที่เหลือคือ "ว่าจะไปจนถึงการหยุดอัตโนมัติในรุ่นแรก หรือดูไปก่อนด้วยการแจ้งเตือนหนึ่งรอบ" ถ้าเราใช้กรอบปัญหาความเป็นส่วนตัว ฉันจะเดิมพันการปล่อยพร้อมการหยุดอัตโนมัติตั้งแต่เริ่มต้น
คุณไม่คิดอย่างนั้นเหรอ? มันเจ๋งมากใช่ไหม?
มีดีไซเนอร์ผลิตภัณฑ์ไม่กี่คนที่สามารถคิดสเปกที่แสดงการพิจารณาอย่างพิถีพิถันได้ทันที ฉันเคยทำงานกับคนที่ได้รับการยกย่องว่าเป็นสุดยอดดีไซเนอร์ในซิลิคอนแวลลีย์ แต่มันเป็นไปไม่ได้ที่มนุษย์จะให้คำตอบหลังจากอ่านซอร์สโค้ดด้วยความเร็วขนาดนี้
ข้อมูลเชิงลึกของ Claude ลึกซึ้งเป็นพิเศษ ด้วย Opus 4.8 มันเริ่มคิดผ่านส่วนที่ลึกมากของประสบการณ์ผู้ใช้
อย่างไรก็ตาม แม้ว่ามันจะคิดได้ลึกซึ้งขนาดนี้และให้คำแนะนำจนถึงเนื้อหาโค้ดที่เฉพาะเจาะจง ถ้าคุณปล่อยให้มันแตะโค้ดในโฟลว์นี้ มันจะเป็นคนซุ่มซ่ามสิ้นดีและจะทำอะไรพังแน่นอน มันเหมือนคนที่ฉลาดแต่มือซุ่มซ่าม นั่นเป็นเหตุผลที่ฉันให้ Codex จัดการโค้ดเสมอ และสุดท้าย ฉันให้ Claude ตรวจสอบเพื่อชี้ให้เห็นโค้ดที่ซ้ำซากของ Codex (แต่ Codex ก็เป็นคนแก้ไขเช่นกัน)
ดังนั้น ฉันใช้เวลาพัฒนารายล้อมไปด้วยมนุษย์เหนือมนุษย์สองคนนี้
ฉันหวังว่าคุณจะสัมผัสบรรยากาศของการประชุมสเปกนี้จากชีวิตประจำวันของการพัฒนาในเดือนมิถุนายน 2026





