หลังจากปล่อย Mole เวอร์ชัน Mac ผู้ใช้งานก็สอนผมว่าควรสร้างผลิตภัณฑ์อย่างไร

@HiTw93
จีน16 ส.ค. 2569
140K
494
42
39
519

TL;DR

Tw93 สะท้อนให้เห็นถึงวิวัฒนาการของ Mole จาก CLI ไปสู่แอป Mac โดยลงรายละเอียดว่าฟีดแบ็กจากผู้ใช้งานมีส่วนช่วยกำหนดฟีเจอร์ การตั้งราคา และแนวทางการจัดการไฟล์ขยะที่เกิดจาก AI โดยเน้นความปลอดภัยเป็นอันดับแรกได้อย่างไร

เมื่อเร็วๆ นี้ ผมเขียนเกี่ยวกับความคิดของผมเกี่ยวกับการพัฒนาซอฟต์แวร์อิสระไปพอสมควร ผมอยากสรุปมันโดยการเล่าถึงการเดินทางของ Mole จากเครื่องมือ CLI โอเพนซอร์ส สู่ซอฟต์แวร์ Mac แบบเสียเงิน—สิ่งที่ผมคิดในตอนนั้น สิ่งที่ได้ผลจริง และอาจเป็นข้อมูลให้เพื่อนๆ ที่กำลังทำโปรเจกต์ของตัวเอง

เว็บไซต์ทางการของ Mole คือ

mole.fit และ CLI เปิดเป็นโอเพนซอร์สบน

GitHub คุณสามารถลองใช้ก่อนได้

ปีที่แล้วในช่วงวันหยุดวันชาติ ผมเขียนโค้ดไม่กี่ร้อยบรรทัดข้างสระว่ายน้ำในซานย่า และสร้างเครื่องมือทำความสะอาด Mac แบบบรรทัดคำสั่งที่ชื่อว่า Mole CLI ซึ่งผมเปิดเป็นโอเพนซอร์สบน GitHub ตอนแรกผมตั้งใจให้ใช้แค่กับตัวเองและเพื่อนร่วมงานเท่านั้น แต่กลายเป็นว่า ในเวลาไม่ถึงปี มันได้รับดาว 60K ดาว ปล่อยออกมากว่า 50 เวอร์ชัน และมีนักพัฒนา 121 คนจากทั่วโลกส่งโค้ดเข้ามา แก้ไขข้อเสนอแนะฟีเจอร์และบั๊กเกือบ 800 รายการ

จริงๆ แล้วผมไม่ค่อยรู้ว่ามีคนใช้มันมากแค่ไหน จนกระทั่งครั้งหนึ่ง เพราะผมมีรูปสองรูปใน README ที่เร่งความเร็วโดย Vercel ทำให้ปริมาณการใช้งานเกินขีดจำกัดการเรียกเก็บเงิน และผมเป็นหนี้ Vercel 80 ดอลลาร์ ตอนนั้นแหละที่ผมรู้ว่าถึงเวลาต้องสร้างเวอร์ชันเดสก์ท็อปแล้ว

ก่อนหน้านี้ อีเมลที่ผมได้รับบ่อยที่สุดคือจากผู้ใช้ต่างประเทศ โดยมีใจความทั่วไปว่า "พ่อแม่ฉันใช้ Mac น้องสาวฉันก็ใช้ แต่พวกเขาไม่รู้วิธีเปิดเทอร์มินัล คุณช่วยสร้างเวอร์ชันที่ไม่ต้องพิมพ์คำสั่งได้ไหม" ผมเลื่อนเรื่องนี้ไปพักหนึ่ง สาเหตุหลักเพราะผมรู้สึกว่า CLI เองยังไม่สมบูรณ์พอ ต่อมาผมใช้เวลาสองวันหยุดสุดสัปดาห์สร้างเวอร์ชันเดสก์ท็อป Mac ผมปล่อยมันตอน 2 ทุ่มของคืนนั้น และเสียงแจ้งเตือนก็ดังไม่หยุดทั้งคืน—เป็นเงินฟรังก์ เยอรมัน สกุลเงินต่างๆ สุดท้ายผมต้องปิดการแจ้งเตือนทางอีเมลเพื่อจะได้นอน มองย้อนกลับไป เวอร์ชันแรกที่ปล่อยออกมาจริงๆ แล้วบางมาก; ของที่สร้างในสองวันหยุดจะสมบูรณ์ขนาดไหนกัน? หลายฟีเจอร์ถูกเพิ่มทีละน้อยในช่วงหลายเดือนต่อมา โดยพื้นฐานแล้วมันคือกลุ่มผู้ใช้ที่จ่ายเงินก่อน แล้วค่อยมากับผมเพื่อทำให้มันเสร็จสมบูรณ์ CLI ยังคงไม่เปลี่ยนแปลง ยังคงเป็นโอเพนซอร์สและฟรี และจะยังคงอัปเดตต่อไป; มีเฉพาะเวอร์ชันเดสก์ท็อปเท่านั้นที่เสียเงิน

Tw93 - inline image

ขยะสามประเภทที่ AI สร้างขึ้น

หลังจากสร้างเวอร์ชันเดสก์ท็อปเสร็จ ฟีเจอร์ที่ผมใช้เองมากที่สุดคือการทำความสะอาด เพราะ Mac ของผมถูก AI ผลักดันจนถึงขีดจำกัดจริงๆ ผมเปิด Claude Code และ Cursor ไว้ทั้งวันเพื่อเขียนอะไรต่างๆ ตอนแรกผมไม่ค่อยสนใจ แต่ต่อมาผมค้นพบว่าขยะที่ AI ทิ้งไว้นั้นแตกต่างจากซอฟต์แวร์แบบดั้งเดิมมาก โดยแบ่งได้ประมาณสามประเภท

ประเภทแรกคือสิ่งตกค้างจากการคอมไพล์ อันนี้ไม่ใช่เรื่องใหม่ แต่ AI ขยายขนาดให้ใหญ่ขึ้น ก่อนหน้านี้ผมอาจเขียนโค้ดด้วยตัวเองสองสามร้อยบรรทัดและคอมไพล์สามถึงห้าครั้งต่อวัน ตอนนี้ผมปล่อยให้เอเจนต์รันเป็นสิบรอบในช่วงบ่าย คอมไพล์ครั้งละรอบ Rust project targets, โฟลเดอร์ .next และ dist ของ frontend และ DerivedData ของ Xcode โตเร็วมาก ครั้งหนึ่งผมลบไป 86GB จากสิ่งเหล่านี้เท่านั้น ประเภทที่สองคือเวอร์ชันเก่าที่เครื่องมือ AI ทิ้งไว้ เครื่องมือบรรทัดคำสั่งอย่าง Claude Code, Cursor Agent และ GitHub Copilot อัปเดตอัตโนมัติทั้งหมด พวกมันอัปเดตโดยดาวน์โหลดเวอร์ชันใหม่ทั้งหมดลงในไดเรกทอรีใหม่—แต่ละเวอร์ชันประมาณ 250MB—และเวอร์ชันเก่าจะไม่ถูกลบ ภายในไม่กี่เดือน ก็สะสมเวอร์ชันที่ไร้ประโยชน์เป็นสิบๆ เวอร์ชันได้ ประเภทที่สามคือไฟล์โมเดล—โมเดลที่ Ollama และ LM Studio ดึงมา และแคชของ HuggingFace ซึ่งมักจะกินพื้นที่หลายสิบกิกะไบต์

Tw93 - inline image

Mole ทำความสะอาดสองประเภทแรก แต่ไม่แตะต้องประเภทที่สามแม้แต่ไบต์เดียว ต่อมาผมค่อยๆ คิดเรื่องนี้เป็นสามระดับ โดยจัดหมวดหมู่ทุกอย่างที่สแกนก่อนตัดสินใจว่าควรถูกเลือกให้ตรวจสอบโดยค่าเริ่มต้นหรือไม่ ระดับแรกคือสิ่งที่สร้างใหม่ได้: แคช HTTP, แคช GPU, สิ่งตกค้างจากการคอมไพล์ และ log ส่วนใหญ่ ถ้าแอปที่เกี่ยวข้องออกไปแล้วและเส้นทางชัดเจน ก็สามารถทำความสะอาดได้ ระดับที่สองมีต้นทุนในการสร้างใหม่สูง: แคช registry ของ package manager, น้ำหนักโมเดลในเครื่อง และ iOS DeviceSupport สามารถสร้างใหม่ได้ทั้งหมด แต่เสียแบนด์วิดท์และเวลา ดังนั้นผู้ใช้ควรดูด้วยตัวเอง ระดับที่สามคือสิ่งที่ไม่สามารถทดแทนได้: ประวัติการแชท, ฐานข้อมูลอีเมล, คลังรูปภาพ และสถานะของโปรเจกต์ปัจจุบัน ผมเชื่อว่าสิ่งเหล่านี้ไม่ควรถูกใส่ในรายการทำความสะอาดแบบคลิกเดียว

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

Tw93 - inline image

สิ่งต่างๆ เช่น target, build, dist, __pycache__ และ DerivedData สามารถนำกลับมาได้โดยการคอมไพล์ใหม่ โดยมีต้นทุนคือ CPU สองสามนาที node_modules, Pods, venv และ vendor ก็ดูเหมือนไดเรกทอรี dependencies แต่การลบพวกมันต้องดาวน์โหลดใหม่จากอินเทอร์เน็ต ถ้าคุณอยู่บนรถไฟความเร็วสูงหรือเครื่องบินและต้องการรันโปรเจกต์ คุณก็ต้องรอเฉยๆ สองหมวดหมู่นี้ดูคล้ายกันและมักถูกลบเป็นขยะพร้อมกัน Mole CLI ทำแบบนี้ในช่วงแรก แต่ต่อมาผมลบไดเรกทอรีประเภทที่ต้องดาวน์โหลดทั้งหมดออกจากรายการทำความสะอาดของเวอร์ชัน Mac โดยเฉพาะ

โมเดลเป็นหมวดหมู่ที่หนักที่สุดที่นี่ การดาวน์โหลดใหม่หลายสิบกิกะไบต์เป็นหายนะ และเครื่องมือทำความสะอาดทั่วไปจะไม่ลบมันอย่างถูกต้องด้วยซ้ำ Ollama แยกโมเดลออกเป็นกลุ่มบล็อกที่ตั้งชื่อตามแฮช; หลายโมเดลอาจแชร์บล็อกเดียวกัน ollama rm จะคำนวณว่ามีใครอื่นอ้างถึงบล็อกนั้นอยู่หรือไม่ก่อนที่จะปล่อยมัน ถ้าคุณลบบล็อกที่ดูใหญ่จากระบบไฟล์ด้วยตนเอง คุณอาจทำให้โมเดลอื่นเสียหายได้ มีเพียงตัวเครื่องมือเท่านั้นที่เข้าใจการอ้างอิงเหล่านี้

ดังนั้น เส้นทางเช่น ~/.ollama/models และ ~/.cache/huggingface จึงถูกเขียนเป็นรหัสตายตัวในรายการป้องกันในโค้ด พวกมันจะไม่ปรากฏแม้แต่ในขั้นตอนการสแกน; พวกมันจะแสดงขนาดที่ใช้ไปในส่วนการวิเคราะห์ดิสก์เท่านั้น ปล่อยให้โมเดลถูกจัดการโดย Ollama หรือ LM Studio เอง

Tw93 - inline image

ยังมีอีกหมวดหมู่หนึ่งที่แตะต้องไม่ได้ยิ่งกว่าโมเดล: บันทึกเซสชัน AI ~/.codex/sessions, ~/.claude/projects และ ~/.grok/sessions เก็บบทสนทนาทั้งหมดของคุณกับ AI ตลอดหลายเดือนหรือหนึ่งปี พวกมันมีความคิดของคุณในตอนนั้น, วิธีแก้ปัญหาที่ถูกปฏิเสธ, และเหตุผลสำหรับการเปลี่ยนแปลงทุกครั้ง ถ้าลบไปแล้ว มันก็หายไปจริงๆ และในแง่หนึ่ง มันมีค่ามากกว่าโค้ดเสียอีก ดังนั้นเส้นทางเหล่านี้จะไม่มีวันถูกทำความสะอาดใน Mole ไม่ว่ามันจะนั่งอยู่ที่นั่นนานแค่ไหนก็ตาม นอกจากนี้ยังมีการป้องกันความทรงจำ, แผน, ทักษะ และรูปภาพที่สร้างขึ้นด้วย

Tw93 - inline image

รายการป้องกันเหล่านี้ไม่ได้คิดไว้ทั้งหมดตั้งแต่แรก; ส่วนใหญ่เรียนรู้ผ่านการลองผิดลองถูก ความผิดพลาดที่โง่ที่สุดคือ com.apple.e5rt.e5bundlecache มันมีคำว่า "Caches" อยู่ในชื่อและอยู่ในไดเรกทอรีแคช ดังนั้นมันดูเหมือนแคช แต่มันคือโมเดลที่ Neural Engine ของ Apple คอมไพล์ไว้ ในช่วงแรก CLI ถือว่ามันเป็นแคชและลบมัน ทำให้แอปทั้งหมดที่ใช้ฟีเจอร์การรู้จำล่มจนกว่าจะรีบูต ตั้งแต่นั้นมา ผมก็มีนิสัย: เมื่อเห็นไดเรกทอรีที่มีคำว่า "cache" อยู่ในชื่อ ผมจะถามตัวเองสามคำถาม: ใครเป็นคนเขียนมัน? ใครจะอ่านมันหลังจากรีบูต? ฉันจะเอามันกลับมาได้ยังไงถ้าลบผิด? ถ้าตอบไม่ได้สักข้อ ผมก็ไม่แตะมัน

ดูก่อนลบ

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

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

Tw93 - inline image

การถอนการติดตั้งก็ใช้ตรรกะเดียวกัน เมื่อคุณเลือกแอป Mole จะค้นหาทุกอย่างที่กระจายอยู่ทั่วระบบ โดยติดป้ายกำกับแต่ละรายการด้วยเส้นทางและขนาด ในภาพด้านบน ตัวแอป Claude เองมีขนาดเพียง 781MB แต่ ~/Library/Application Support/claude มีขนาด 7.67 GB ไม่ใช่ตัวแพ็คเกจแอปพลิเคชันที่กินพื้นที่จริงๆ รายการเข้าสู่ระบบและบริการพื้นหลังก็อยู่ในหน้าเดียวกัน ดังนั้นคุณไม่ต้องไปหามันในการตั้งค่าระบบ

ตัวอย่างเช่น ตัวติดตั้งอัปเดตระบบ macOS—ไดเรกทอรี /macOS Install Data—มักจะใหญ่กว่า 10GB และดูเหมือนเป้าหมายการทำความสะอาดที่สมบูรณ์แบบ แต่ระบบอาจยังต้องการมันเพื่อทำให้การอัปเดตเสร็จสมบูรณ์; การลบมันเร็วเกินไปอาจทำให้เครื่องไม่บูต ดังนั้นใน Mole มันคือรายการตรวจสอบที่ไม่ได้เลือก โดยมีการป้องกันสามชั้น: ถ้ามีการอัปเดตรอการติดตั้งอยู่ ทั้งแถวจะถูกซ่อน; ถ้าตัวติดตั้งถูกแตะต้องในช่วง 14 วันที่ผ่านมา มันจะถูกซ่อน; ถ้าโปรเซสที่เกี่ยวข้องกับการติดตั้งยังทำงานอยู่ มันจะถูกซ่อน ถ้าสัญญาณใดอ่านไม่ได้ มันจะถือว่าเป็นความเสี่ยงและไม่แสดงเลย

ในขณะที่ดำเนินการ สคริปต์ที่มีสิทธิ์ระดับรูทจะรันการตรวจสอบเหล่านี้อีกครั้ง ถ้ามันล้มเหลว มันจะออกด้วยโค้ดที่ไม่ใช่ศูนย์ คุณจะไม่เห็นสถานการณ์ที่ "รายงานบอกว่าลบไป 12GB แต่ไม่มีไบต์เดียวถูกย้าย"

ผมมีวิธีตัดสินว่าเครื่องมือทำความสะอาดดีหรือไม่ที่ง่ายมาก ติดตั้งผลิตภัณฑ์สองตัวจากผู้ขายรายเดียวกัน ถอนการติดตั้งเพียงตัวเดียว และดูว่ามันรวมไดเรกทอรีหลัก Application Support ที่ใช้ร่วมกันหรือ group container หรือไม่ ถ้ามันรวม แสดงว่ามันจับคู่ตามชื่อ ไม่ใช่ตามความเป็นเจ้าของ ผมไม่กล้าให้เครื่องมือที่แยกแยะความเป็นเจ้าของไม่ได้ลบสิ่งต่างๆ เป็นกลุ่ม

Tw93 - inline image

มันจะไม่รบกวนคุณตามปกติ

การลบ 86GB ในครั้งเดียวไม่ได้ทำได้โดยการลบ log สองสามอัน; เมื่อถอนการติดตั้ง Claude คุณสามารถหาสิ่งที่ใหญ่กว่าตัวแอป十倍ที่กระจายอยู่ทั่วระบบ มันจะหาสิ่งที่ต้องหา แต่จะไม่รบกวนคุณอย่างแข็งขัน

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

อินเทอร์เฟซก็ใช้ปรัชญาเดียวกัน ถ้าการสแกนยังไม่เสร็จ มันจะไม่เข้าสู่หน้าผลลัพธ์ สำหรับสิ่งที่พร้อมในอีกสักครู่ มันไม่แสดงพรอมต์โหลดด้วยซ้ำ; หลังจากนั้นสักพักถึงจะแสดงอนิเมชัน "กำลังยุ่ง" หน้าสำเร็จก็มีพื้นที่ว่างไว้ล่วงหน้าเพื่อให้หน้าต่างไม่กระโดดเมื่อผลลัพธ์ปรากฏ กฎเหล่านี้ทั้งหมดเล็กน้อยมาก แต่เมื่อรวมกันแล้ว มันคือสาเหตุที่ทำให้รู้สึกมั่นคงในการใช้งาน

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

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

Tw93 - inline image

ทำให้มันใช้งานได้แม้กระทั่งสำหรับคนอายุ 70 ปี

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

ผู้ใช้ชาวอังกฤษอายุเกือบ 70 ปีบอกว่าเขามี "ช่วงเวลาหลงลืมของผู้สูงอายุ" และซื้อ Mole อีกครั้ง "ถือว่าการจ่ายครั้งที่สองเป็นของขวัญให้คุณ; ขอบคุณสำหรับเครื่องมือที่ยอดเยี่ยมนี้ มันช่วยฉันประหยัดเงินได้มากกว่า CleanMyMac หลายปอนด์" ผมแนะนำให้เขาขอเงินคืนหรือมอบใบอนุญาตส่วนเกินให้คนอื่น เขาตรวจสอบรอบๆ และตอบกลับในวันถัดมา "ไม่มีเพื่อนบ้านคนไหนใช้ Mac และผู้ติดตามของฉันบน Bluesky ก็ไม่มีเช่นกัน รอบนี้ฉันเลี้ยงเอง" การได้รับจดหมายแบบนี้ทำให้ผมรู้สึกว่าผมต้องทำให้ผลิตภัณฑ์ดียิ่งขึ้นเพื่อให้คู่ควรกับความไว้วางใจนั้น

ผู้ใช้ชาวอเมริกันคนหนึ่งแก้ไขความเข้าใจผิดของผมเกี่ยวกับนิสัยประจำภูมิภาค ผมคิดมาตลอดว่าคนอเมริกันต้องใช้ฟาเรนไฮต์สำหรับอุณหภูมิ ดังนั้นผมจึงตั้งค่าเริ่มต้นเป็นฟาเรนไฮต์สำหรับภูมิภาคสหรัฐอเมริกา เขาบอกว่า "คนอเมริกันใช้เซลเซียสในบริบททางเทคนิคทั้งหมด; มีเพียงสภาพอากาศและอุณหภูมิร่างกายเท่านั้นที่เป็นข้อยกเว้น ผมตกใจที่เห็น 110 เมื่อติดตั้ง Mole สเปกที่ Apple แสดงให้คนอเมริกันก็เป็นเซลเซียส และ fastfetch/neofetch ก็ตั้งค่าเริ่มต้นเป็นเซลเซียสในระบบสหรัฐอเมริกา ผมแนะนำให้เก็บตัวสลับฟาเรนไฮต์ไว้ แต่ตั้งค่าเริ่มต้นเป็นเซลเซียสสำหรับทุกภูมิภาค" ต่อมาผมเปลี่ยนเป็นเซลเซียสเป็นค่าเริ่มต้นโดยมีตัวสลับฟาเรนไฮต์ เขายังส่งข้อความติดตามเกี่ยวกับราคา โดยบอกว่าตัวเลขที่ผมให้ดูไม่เหมือนราคาที่ตั้งใจตั้ง แต่เหมือนการแปลงจากสกุลเงินอื่น เขาเสริมว่า "โดย 'ต่างประเทศ' ผมไม่ได้หมายถึงต่อต้านจีน แต่คนอยากรู้สึกว่าผู้เขียนเข้าใจพวกเขา" พูดตามตรง ผมแค่เดาราคานั้นออกมาจากหัว; ผมไม่เคยคิดเรื่องราคาอย่างจริงจังก่อนที่จะทำผลิตภัณฑ์ การถูกคนแปลกหน้าตำหนิค่อนข้างน่าอาย—ปรากฎว่าตัวเลขราคาก็มีผลต่อการตัดสินใจของผู้ใช้เช่นกัน

ผู้ใช้ที่มีความบกพร่องทางการมองเห็นเล็กน้อยบอกว่า "มันดูเหมือนแอปที่ดีมาก แต่น่าเสียดายที่ฉันใช้ไม่ได้; ดูเหมือนมันมีโหมดมืดแบบตายตัว ระบบของฉันตั้งค่าเป็นโหมดสว่าง และฉันใช้เฉพาะแอปที่มีโหมดสว่าง" การทำให้ Mole เป็นโหมดมืดเท่านั้นเป็นการตัดสินใจโดยเจตนา; แผงแถบเมนูลอยอยู่บนวอลเปเปอร์เหมือน HUD และกระจกสีเข้มมีแสงสะท้อนน้อยกว่า ทำให้ไม่ต้องสลับธีม แต่เหตุผลนี้ใช้ไม่ได้กับเขา ผมคิดเสมอว่าผมจริงจังกับการช่วยการเข้าถึง แต่ผมล้มเหลวอย่างสิ้นเชิงที่จะตระหนักว่าโหมดสว่างนั้นเป็นข้อกำหนดด้านการช่วยการเข้าถึง ผ่านไปสักพักแล้วตั้งแต่ผมได้รับอีเมลนั้น และ Mole ก็ยังคงเป็นโหมดมืดเท่านั้น; โหมดสว่างยังคงอยู่ในรายการ ยังไม่เสร็จ ผมรู้สึกผิดเล็กน้อยที่ผลิตภัณฑ์ที่อ้างว่าใส่ใจการช่วยการเข้าถึงทำให้ผู้ใช้ที่บอกอย่างชัดเจนว่าใช้ไม่ได้ต้องรอนานขนาดนี้

อาจารย์จากมหาวิทยาลัยในเยอรมันคนหนึ่งสมัครใบอนุญาตเพื่อการศึกษา โดยบอกว่ามัน "ไม่ใช่แค่การสนับสนุนสำหรับฉันเป็นการส่วนตัว แต่ยังเป็นการสนับสนุนที่มีความหมายในระดับการศึกษาด้วย" ปรากฎว่ามีครูต่างชาติใช้ผลิตภัณฑ์ของผมในสภาพแวดล้อมในห้องเรียน ซึ่งเป็นกรณีการใช้งานที่ผมไม่ได้คาดคิดไว้ แพทย์ชาวฮังการีคนหนึ่งให้รีวิวเชิงลบที่จริงใจที่สุด: "พูดตามตรง ราคาค่อนข้างสูงสำหรับสิ่งที่แอปฟรีก็ทำได้" ผมไม่เห็นว่ามันรุนแรงเลย; กำลังซื้อแตกต่างกันมากในแต่ละประเทศ เขาไม่ได้บ่น; เขากำลังช่วยผมระบุปัญหา

ฟีเจอร์ที่ผมชอบที่สุดใน Mole จริงๆ แล้วไม่ใช่ความคิดของผม การแจ้งเตือนเมื่อแบตเตอรี่ AirPods ใกล้หมดถูกเพิ่มในขณะที่ผมทำงานเกี่ยวกับสุขภาพแบตเตอรี่; ผมไม่เคยเจอสถานการณ์นั้นจนกระทั่งบ่ายวันหนึ่งที่ผมได้รับมันจริงๆ—มันรอบคอบมากและไม่รบกวน ผมเพิ่มพฤติกรรมสามแบบที่แตกต่างกันสำหรับการเปิดหน้าจอไว้หลังจากคำเตือนจากผู้ใช้; เมื่อผมออกไปข้างนอกกะทันหันในวันหยุดสุดสัปดาห์ การเขียนโค้ดด้วย AI ก็สามารถทำงานต่อไปได้ ช่วยประหยัดเวลาแบบอะซิงโครนัสให้ผมมาก การเห็นระดับแบตเตอรี่ของ iPhone ในแถบสถานะนั้นยากที่จะ implement ในตอนแรก แต่สุดท้ายผมก็หาทางได้ สิ่งเหล่านี้ทั้งหมดเป็นสิ่งที่ผู้ใช้บอกให้ผมเพิ่ม และสุดท้ายผมก็ได้ประโยชน์จากมันมากที่สุด

จริงๆ แล้วผมตอบอีเมลด้วยตนเอง

คำถาม-คำตอบ, การขอเงินคืน และการรีเซ็ตรหัสเปิดใช้งานคิดเป็นน้อยกว่า 1% ของฐานผู้ใช้ ผมสามารถเขียนสคริปต์ในครึ่งชั่วโมงเพื่อทำให้ทั้งหมดเป็นอัตโนมัติ แต่ผมไม่ได้ทำ มีเพียงการจัดการทีละรายการเท่านั้นที่ทำให้ผมรู้สึกได้ว่าผู้ใช้ต้องการอะไรจริงๆ ทำไมพวกเขาถึงขอเงินคืน และอะไรทำให้พวกเขารู้สึกไม่สบายใจ—และนั่นมักจะไม่ใช่สิ่งแรกที่พวกเขาถาม เกณฑ์ของผมสำหรับระบบอัตโนมัติคือเมื่อสามสิ่งเป็นจริง: ปัญหาเกิดขึ้นซ้ำ, คำตอบคงที่ และข้อยกเว้นทั้งหมดเข้าใจแล้ว จนกว่าจะถึงตอนนั้น ผมยอมตอบทีละรายการ วิธีนี้ยังคงได้ผล; ผมไม่ได้ใช้เงินกับการตลาด และการเติบโตส่วนใหญ่มาจากการบอกต่อ อัตราการขอเงินคืนต่ำกว่า 0.8% ผู้ซื้อจำนวนมากเป็นผู้ใช้ CLI ระยะยาว

ก่อนการเปิดตัว ผมไม่ได้ตั้งค่าระบบตั๋ว, แพลตฟอร์มบริการลูกค้า หรือฐานความรู้ วิศวกรชอบสร้างระบบสนับสนุนเหล่านี้ก่อนเพราะมันเป็นงานที่คุ้นเคย และ AI ก็บีบอัดมันเหลือครึ่งวัน ทำให้ง่ายต่อการเริ่มต้นเร็วเกินไป แต่ถึงแม้จะใช้เวลาสร้างเพียงครึ่งวัน การบำรุงรักษาเป็นภาระระยะยาว และมันก็ยังไม่จำเป็นเลย วันที ่กล่องจดหมายเริ่มสูญเสียคำขอ, เวลาตอบสนองไม่ชัดเจน หรือคำถามเดียวกันได้คำตอบต่างกัน—นั่นคือเมื่อต้องการระบบใหม่จริงๆ AI ทำให้หลายส่วนของผลิตภัณฑ์นี้เป็นไปได้ แต่การสื่อสารกับคนไม่สามารถถูกแทนที่ด้วย AI; มิฉะนั้นมันจะไม่น่าสนใจ มันสามารถปรับปรุงประสิทธิภาพได้ แต่ยากที่จะปรับปรุงความรู้สึกและความไว้วางใจซึ่งกันและกัน นี่อาจเป็นวิธีที่ผลิตภัณฑ์ที่เกิดจากการเขียนโค้ดด้วย AI รักษาความเป็นมนุษย์ไว้

สิ่งที่ผมพบว่ามีประโยชน์ในการทำ

ในการสร้างผลิตภัณฑ์ ผมรู้สึกว่าความสามารถในการเขียนโค้ดมีสัดส่วนเพียงประมาณ 30% ความพยายามมากขึ้นอยู่ที่การเชื่อมต่อจุดเจ็บปวดของคุณเองกับของผู้ใช้ส่วนใหญ่, การสร้างสิ่งที่ใช้งานง่ายโดยไม่ต้องมีคู่มือ และการผลักดันมันไปต่อหน้าคนที่ใช่เพื่อให้พวกเขารู้สึกว่ามันแก้ปัญหาใหญ่ได้ วิศวกรผลิตภัณฑ์คือการรวมกันของนักวิจัย, ผู้จัดการผลิตภัณฑ์, วิศวกร, ผู้ปฏิบัติการ, นักวิเคราะห์ข้อมูล และนักวางแผนกลยุทธ์ทางธุรกิจโดยประมาณ

สิ่งที่คุณไม่ทำนั้นสำคัญกว่าสิ่งที่คุณทำมาก สำหรับเครื่องมือที่ลบไฟล์ของคุณ สิ่งนี้กลายเป็นสิ่งที่คุณไม่ลบ รายการป้องกันที่เขียนเป็นรหัสตายตัวเหล่านั้นทั้งหมดมาจากกฎนี้ ผมโชคดีที่ได้อ่านหนังสือเกี่ยวกับการฝึกฝนวิศวกรรมหลายเล่มเมื่อเริ่มเป็นน้องใหม่; วลีเช่น "entities should not be multiplied without necessity" และ "simplicity is the ultimate sophistication" ค่อยๆ ซึมซาบเข้าสู่ชีวิต, การทำงาน และโค้ดของผม ผมรู้สึกถึงสิ่งนี้更深ขึ้นหลังจากทำผลิตภัณฑ์ ความแตกต่างระหว่างผลิตภัณฑ์ที่ดีและผลิตภัณฑ์ทั่วไปส่วนใหญ่อยู่ที่ความสามารถในการตัดสินใจว่าจะไม่ทำอะไร ฟีเจอร์บางอย่างดีในตัวเอง แต่ถ้ามันไม่อยู่ในเส้นทางหลัก ผมก็ไม่รวมมัน; มิฉะนั้นมันจะกลายเป็นกองฟีเจอร์ที่ดูแลรักษายากได้ง่าย

อีกความรู้สึกหนึ่งคือคุณต้องมีแผนงานสำหรับหกเดือนข้างหน้าอยู่ในหัว รู้อย่างชัดเจนว่าจะเพิ่มอะไรในแต่ละเวอร์ชัน, อะไรคือความต้องการปลอม และฟีเจอร์ใดควรวางไว้ในที่ที่ผู้ใช้สะดวก สำหรับผู้ใช้ทั่วไป อันที่คุณใช้ได้โดยไม่ต้องอ่านคู่มือคืออันที่ดี ตำแหน่งของ Mole คือผู้พิทักษ์เงียบของการบำรุงรักษาระบบ Mac เพื่อนหลายคนแนะนำฟีเจอร์ที่ยอดเยี่ยมซึ่งผมปฏิเสธอย่างสุภาพ เป้าหมายของผมง่ายมาก: ถ้าหนึ่งในทุกๆ ร้อยผู้ใช้ Mac เต็มใจที่จะเก็บ Mole ไว้ มันก็มีประโยชน์เพียงพอแล้ว

ตอนนี้ ก่อนที่ฟีเจอร์จะเข้าสู่แผนงาน มันต้องผ่านสามด่าน: จะต้องไม่มีตัวจับเวลา, ตัวฟัง หรือค่าใช้จ่ายในการสุ่มตัวอย่างแบบถาวรหากผู้ใช้ยังไม่ได้คลิกเข้าไปในฟีเจอร์; คุณไม่สามารถขยาย privileged helpers หรือเพิ่มสิทธิ์ระบบใหม่เพื่อความสะดวกเล็กน้อย; และคุณไม่สามารถเพิ่มการตั้งค่าเมื่อมีค่าเริ่มต้นที่สมเหตุสมผล สิ่งเหล่านี้ไม่ใช่หลักการสากลสำหรับซอฟต์แวร์ทั้งหมด แต่เป็นกฎที่ Mole ตั้งไว้สำหรับตัวเอง ทุกงานถาวร, สิทธิพิเศษ และการกำหนดค่าเพิ่มเติมที่ผู้ใช้ต้องไว้วางใจคุณมากขึ้นอีกเล็กน้อย

Tw93 - inline image

โดยพื้นฐานแล้วผมไม่เก็บสะสมไว้สำหรับ "การเคลื่อนไหวครั้งใหญ่"; ผมพยายามปล่อยเวอร์ชันทุกสัปดาห์เพื่อให้ปัญหาของผู้ใช้ได้รับการแก้ไขอย่างทันท่วงที และผมสามารถมีบทสนทนาโต้ตอบกลับไปกลับมาได้ ทุกการปล่อย, อัปเดต และโปรโมชันเป็นโอกาสในการสื่อสารที่ยอดเยี่ยม และทำให้คนที่ยังไม่เห็นข่าวรู้ว่าคุณกำลังทำอะไรอยู่

ในยุค AI อุปสรรคด้านโค้ดเริ่มเล็กลง สิ่งที่ต้องควบคุมมากขึ้นคือ如何使用 Tokens อย่างแม่นยำในการแก้ปัญหาของผู้ใช้ ผมไม่รังเกียจที่จะใช้จ่ายมากขึ้น แต่มันต้องใช้จ่ายอย่างมีประสิทธิภาพ—เช่น การหารือเกี่ยวกับข้อกำหนดอย่างละเอียด, การเจาะลึกข้อมูลเพื่อค้นหาปัญหาที่แท้จริง และการเขียนสำเนาที่คนอ่านแล้วเข้าใจได้ทันที พื้นที่เหล่านี้คุ้มค่าที่จะใช้จ่าย ผมมอง Tokens เป็นการลงทุน และการลงทุนต้องให้ผลตอบแทน

Mole เป็นระดับโลกตั้งแต่วันแรก และผมโพสต์เนื้อหาภาษาอังกฤษมากกว่าภาษาจีน ความรู้สึกของผมในช่วงนี้คือโลกนี้ใหญ่โต, ฐานผู้ใช้กว้าง และพวกเขาเต็มใจที่จะไว้วางใจคุณตั้งแต่เริ่มต้น คนที่คุณช่วยเหลือผ่านทางมักจะกลายเป็นผู้ใช้ของคุณในภายหลังเพราะมีการโต้ตอบจริง ผมไม่ได้ใช้เงินกับการโปรโมท; จุดสูงสุดบน X นั้นสูงแต่สั้น ในขณะที่สิ่งที่โพสต์บน YouTube เสื่อมลงช้ามาก ตราบใดที่เนื้อหาดีและมีคนแนะนำ มันก็สามารถอยู่ที่นั่นได้นาน

ผมใช้เวลากับข้อมูลมากกว่าที่คิด การดูยอดขายตามมิติและเวลา รวมกับข้อมูลการเข้าชม, ความคิดเห็นของผู้ใช้, บันทึกทั้งหมดของการโต้ตอบกับผู้ใช้, สาเหตุของการขอเงินคืน และปัญหาทั้งหมดในฝั่งโอเพนซอร์ส—สิ่งเหล่านี้ล้วนเป็นทรัพยากรอันมีค่า พวกมันช่วยให้ผมค้นพบปัญหามากมายที่ผมไม่รู้ และเห็นอย่างชัดเจนว่าช่องทางการขายขาดตรงไหน

ประเด็นสุดท้ายเป็นเรื่องเกี่ยวกับแนวทางของผมเองมากกว่า การสร้างบัญชีที่มีประโยชน์ใช้สอยอย่างลึกซึ้งทำให้เกิดความวิตกกังวล; ผมชอบสร้างมันเป็นแบรนด์ โดยมีตัวผมเองเป็นแบรนด์ ความคิด, แนวคิด, การอัปเดตผลิตภัณฑ์, ข้อมูลเชิงลึก, การโต้ตอบ และความคิดเห็นของผม ล้วนเพิ่มความไว้วางใจให้กับแบรนด์นี้ ความไว้วางใจสำคัญเป็นพิเศษในโลก AI ที่ปลอมแต่รุ่งเรืองในปัจจุบัน สิ่งที่ฟังดูดีแต่พอคลิกเข้าไปแล้วรู้สึกธรรมดาได้ลดความคาดหวังของผู้ใช้จำนวนมากลงแล้ว ถึงแม้คุณจะมีผลิตภัณฑ์ที่ดีจริงๆ คุณก็จะไม่ได้รับความสนใจหากไม่มีความไว้วางใจ สิ่งนี้สามารถทำได้ในระยะยาวมาก; ตราบใดที่คุณอยู่บนอินเทอร์เน็ต แบรนด์นี้ก็จะมีชีวิต—มันคือผลิตภัณฑ์ที่มีวงจรชีวิตยาวนานที่สุดในชีวิตของคุณ

ทำไมถึงเป็นดาวเคราะห์ห้าดวง

ปัจจุบัน Mole เดสก์ท็อปมีห้าโมดูล: ทำความสะอาด, ถอนการติดตั้ง, เพิ่มประสิทธิภาพ, วิเคราะห์ดิสก์ และสถานะฮาร์ดแวร์ แต่ละโมดูลสอดคล้องกับดาวเคราะห์ในอินเทอร์เฟซ: ทำความสะอาดคือโลก, ถอนการติดตั้งคือดาวอังคาร, เพิ่มประสิทธิภาพคือดาวพุธ, วิเคราะห์คือดาวพฤหัสบดี และสถานะคือดวงอาทิตย์ สิ่งนี้เกี่ยวข้องกับความรักในวัยเด็กของผมในการดูวงโคจรของดาวเคราะห์ บวกกับความจริงที่ว่าสิ่งแรกที่ผมอยากเรียนรู้จริงๆ หลังจากเรียนรู้ frontend เมื่อสิบปีก่อนคือ WebGL พื้นผิวของดาวเคราะห์ถูกเปลี่ยนไม่ต่ำกว่า 10 ครั้ง; ผมดาวน์โหลดหลายอันจากเว็บไซต์ทางการของ NASA ก่อนจะตัดสินใจ ทิศทางการหมุน, ความเร็ว และเอฟเฟกต์การบินหลังจากเสร็จสมบูรณ์เป็นไปตามเทห์ฟากฟ้าจริง

Tw93 - inline image

ส่วนนี้สามารถละเว้นได้; เครื่องมือเล็กๆ ในแถบเมนูที่ทำความสะอาดด้วยคลิกเดียวก็ใช้ได้เช่นกัน แต่ขยะไซเบอร์ที่ AI สร้างขึ้นนั้นมากพอแล้ว แทนที่จะใช้ Tokens สร้างอินเทอร์เฟซอีกอันที่แทบจะทำงานได้ ผมอยากทำอะไรที่สบายตาขึ้นหน่อย—ไม่ใช่การสิ้นเปลือง Tokens ของผม และไม่ทำให้ไทม์ไลน์ของคุณสกปรก

ผมชอบให้สิ่งต่างๆ เกิดขึ้นโดยธรรมชาติ มากกว่าที่จะไล่ตามผลลัพธ์อย่างเร่งรีบในเวลาอันสั้น; สามเดือนนี้ได้ตอกย้ำสิ่งนั้น เมื่อไม่นานมานี้ ผมนึกถึงประโยคหนึ่ง: งานที่ดีที่สุดในโลกน่าจะเป็นสำหรับผู้เรียนรู้ต่อเนื่องในตลาดเสรี ที่ใช้วิจารณญาณ, ความสามารถ และสุนทรียศาสตร์ของตนเพื่อสร้างมูลค่าที่ผู้อื่นยินดีจ่ายอย่างต่อเนื่อง

CLI เป็นโอเพนซอร์สและฟรีบน GitHub และเวอร์ชันเดสก์ท็อป Mac อยู่บนเว็บไซต์ทางการ mole.fit

เนื่องจากนี่เป็นครั้งแรกที่ฉันสร้างผลิตภัณฑ์แบบเสียเงิน อาจจะมีบางจุดที่ฉันยังคิดไม่ถึง ฉันยินดีรับคำแนะนำและคำปรึกษาจากเพื่อนที่มีประสบการณ์ การเปลี่ยนแปลงที่กล่าวมาข้างต้นไม่ใช่ความคิดของฉัน แต่ทั้งหมดเกิดจากอีเมลหรือ Issue ของผู้ใช้ ดังนั้น อย่าละทิ้งโอกาสในการสื่อสารกับผู้ใช้ จงรับฟังข้อร้องเรียนและคำแนะนำของพวกเขาอย่างเต็มที่—พวกเขาสามารถช่วยคุณได้มาก และทำให้คุณเข้าใจผู้ใช้ของคุณดียิ่งขึ้น

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

บันทึกแหล่งที่มา ถามคำถามที่ตรงประเด็น สรุปข้อโต้แย้ง และเปลี่ยนบทความไวรัลให้เป็นโน้ตที่นำกลับมาใช้ได้ใน AI เวิร์กสเปซเดียว

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

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

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

ลอง Markdown เป็น 𝕏

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

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

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