ทำไมการตัดสินใจในแชต AI ถึงหายไป และควรเก็บไว้ที่ไหน
การตัดสินใจที่ทำใน ChatGPT หรือ Claude หายไปเมื่อแชตเลื่อนผ่าน ให้บันทึกไว้บนบอร์ดโดยผูกกับ task เพื่อให้ AI session ถัดไปอ่านก่อนเสมอ
Weft คือเครื่องมือจัดการงานด้วย AI สำหรับผู้ก่อตั้งเดี่ยวและทีมเล็ก
โดย Andrei Finogeev ·
การตัดสินใจที่เกิดในบทสนทนากับ ChatGPT หรือ Claude หายไป เพราะแชตไม่มี state ไม่มีอะไรระบุว่าบรรทัดไหนคือ "สิ่งที่เราตัดสินใจแล้ว" ไม่มีอะไรผูกบรรทัดนั้นกับงานที่ได้รับผลกระทบ และแชตใหม่ก็เริ่มต้นจากศูนย์ ทางแก้คือให้ AI จดการตัดสินใจไว้ในที่ที่งานอยู่ เป็นบันทึกสั้น ๆ พร้อมเหตุผล และให้ session ถัดไปอ่านบันทึกเหล่านั้นก่อนลงมือ
เราเป็นผู้สร้าง Weft ข้อมูลเกี่ยวกับผลิตภัณฑ์อื่นมาจากหน้าทางการของผลิตภัณฑ์นั้น ตรวจสอบเมื่อวันที่ 27 ตุลาคม 2026 แนวคิดที่ว่า thread "ไม่มี state" มาจากบทความของ Hypertask เรื่อง Slack thread คู่มือนี้นำแนวคิดนั้นมาใช้กับแชต AI
ทำไมการตัดสินใจที่ทำกับ ChatGPT หรือ Claude ถึงหายไป?
คุณใช้เวลาสี่สิบนาทีกับผู้ช่วย AI ชั่งน้ำหนักระหว่างผู้ให้บริการฐานข้อมูลสองเจ้า โมเดลราคาสองแบบ หรือวิธีออกแบบ API สองแนวทาง แล้วเลือกได้หนึ่งทาง เหตุผลฟังขึ้น ผู้ช่วยก็เห็นด้วย แล้วคุณก็ไปทำเรื่องถัดไป
หนึ่งสัปดาห์ต่อมา ข้อสรุปยังอยู่ในแชตนั้น จมอยู่ใต้ข้อความอีกสองร้อยข้อความ แชตใหม่ไม่รู้เรื่องนี้เลย เพื่อนร่วมทีมไม่เคยเห็น และถ้าวันรุ่งขึ้นคุณเปิด AI client ตัวอื่น เช่น coding agent ใน terminal client นั้นก็เริ่มจากศูนย์ และอาจเสนอตัวเลือกที่คุณปัดตกไปแล้วอย่างมั่นใจ
นี่ไม่ใช่ปัญหาเรื่องวินัย บทสนทนาคือลำดับของข้อความ ไม่มีช่องสำหรับ "ตัดสินใจแล้ว" ไม่มีเจ้าของ ไม่มีลิงก์ไปยัง task และไม่มีทางบอกว่า "อันนี้มาแทนสิ่งที่เราพูดไว้เมื่อวันอังคาร" คำถามที่ตัดสินแล้วกับคำถามที่ถูกทิ้งไว้ดูเหมือนกันทันทีที่เลื่อนผ่านไป
ระบบ memory ของแชตแก้ปัญหานี้ไม่ได้หรือ?
สำหรับงานนี้ ไม่ได้ ผู้ช่วย AI หลายตัวจำเรื่องของคุณข้ามแชตได้แล้ว ซึ่งมีประโยชน์กับความชอบและข้อมูลพื้นหลัง แต่ memory นั้นเป็นของผลิตภัณฑ์เดียวและบัญชีเดียว เขียนไว้ให้ผู้ช่วยตัวนั้นใช้ ไม่ใช่บันทึกที่คนตรวจทีละบรรทัดได้ และ AI client ตัวอื่นก็อ่านไม่ได้ อีกทั้งไม่ได้บอกว่าตัวเลือกนั้นเกี่ยวกับ task ไหน หรือมาแทนตัวเลือกก่อนหน้าอันไหน
decision log มีข้อกำหนดต่างออกไป คนและ agent ที่ทำโปรเจกต์ต้องค้นเจอได้ AI client ตัวไหนก็ตามที่รับงานต่อต้องอ่านได้ ต้องผูกกับงานนั้น และต้องซื่อตรงกับประวัติ: เมื่อการตัดสินใจเปลี่ยน อันเก่าควรยังมองเห็นได้พร้อมเหตุผลที่ถูกแทนที่
การตัดสินใจแบบไหนที่ควรบันทึก?
บันทึกตัวเลือกเมื่อมีคนเลือกต่างออกไปได้อย่างสมเหตุสมผล และตัวเลือกนั้นจะกำหนดงานในภายหลัง ตัวอย่างที่ดี:
- เลือก tool, vendor หรือ library ตัวหนึ่งแทนอีกตัว
- ตั้งใจตัดบางอย่างออก ("ไตรมาสนี้ไม่ทำ referral program")
- ตั้งกฎที่งานต้องทำตาม ("ในสหภาพยุโรปแสดงราคารวม VAT เสมอ")
- เปลี่ยนตัวเลือกก่อนหน้า พร้อมเหตุผล
- บทเรียนที่ได้มาอย่างเจ็บปวด ("อย่ารัน migration ในเวลาทำการ")
ไม่ต้องบันทึก:
- ไอเดียที่โยนออกมาแต่ไม่ได้นำไปใช้
- ขั้นตอนของงานเอง (สิ่งนั้นควรอยู่ใน task และผลลัพธ์ของมัน)
- อะไรก็ตามที่เจ้าของงานยังไม่ได้ตกลง เว้นแต่จะระบุชัดว่าเป็นข้อเสนอ
- ข้อเท็จจริงที่ใครก็หาใหม่ได้ภายในนาทีเดียว
บททดสอบที่ใช้ได้: ถ้า AI session ใหม่กำลังจะย้อนตัวเลือกนี้ คุณอยากให้มันหยุดอ่านเหตุผลก่อนไหม? ถ้าใช่ ให้บันทึก
บันทึกการตัดสินใจที่ดีหน้าตาเป็นอย่างไร?
เขียนให้สั้นแต่เก็บเหตุผลไว้ รูปแบบด้านล่างคือ MADR (Markdown Architectural Decision Records) ฉบับย่อ ซึ่งเป็นรูปแบบที่ tool record_decision ของ Weft ใช้:
Title: File uploads: object storage, not the database
Outcome: Uploaded files go to object storage; the database keeps
only the file key and metadata.
Status: accepted
Context: Users attach files up to 50 MB. Keeping them in the
database would make backups slow and large.
Options: 1. Object storage + cheap, backups stay small
- one more service to configure
2. Database column + one place for everything
- backups grow with every upload
Consequences: We need signed URLs for downloads.
Deleting a task must also delete its files.
Revisit when: We need to search inside file contents.
Task: File uploads- Title ตั้งชื่อการตัดสินใจ เพื่อให้กวาดตาหาเจอได้
- Outcome คือประโยคเดียวที่คนใหม่อ่านแล้วลงมือได้
- Context คือสิ่งที่เป็นจริงในตอนนั้น ส่วนนี้หายไปจากความจำก่อนส่วนอื่น
- Options ระบุเฉพาะสิ่งที่ชั่งน้ำหนักจริง ไม่ใช่ทางเลือกที่คิดขึ้นทีหลัง
- Consequences รวมข้อเสียที่ยอมรับไว้ เพื่อไม่ให้ใคร "ค้นพบ" มันทีหลังในรูปของ bug
- Revisit when บอกว่าอะไรจะทำให้ตัวเลือกนี้ผิด
Weft เก็บบันทึกการตัดสินใจอย่างไร?
Weft คือบอร์ด task ที่ AI client ของคุณเข้าถึงผ่าน MCP ที่ https://letsweft.com/api/mcp โดย 3 จาก 32 tool ใช้จัดการการตัดสินใจ:
- record_decision รับ title และ outcome พร้อม context, ตัวเลือกได้สูงสุดห้าตัวพร้อมข้อดีข้อเสีย, consequences และเงื่อนไขที่ควรทบทวน ผูกกับ task (taskId) หรือ project ได้ บันทึกแก้ไขไม่ได้ (immutable): ถ้าจะเปลี่ยน AI จะบันทึกการตัดสินใจใหม่โดยใส่ supersedesId ชี้ไปที่อันเก่า และอันเก่ายังอยู่ โดยถูกทำเครื่องหมายว่า superseded
- get_context คืนการตัดสินใจและบทเรียนที่ยังมีผลใน workspace เรียงจากใหม่ไปเก่า บีบให้อยู่ในงบ token (ค่าเริ่มต้น 800 token) จำกัดให้แคบลงเฉพาะ project หรือ task ได้ แต่ละบรรทัดมีวันที่ การตัดสินใจที่ถูก supersede จะไม่แสดง และบรรทัดที่ใส่ไม่พอจะถูกนับจำนวนแทนการซ่อน
- get_task_history ในโหมด decisions แสดงทุกการตัดสินใจที่บันทึกเกี่ยวกับ task หนึ่ง รวมถึงผลการ review และเหตุผล
record_decision มีอีกหน้าที่หนึ่ง: ส่งต่อคำตัดสินที่เจ้าของงานให้ไว้ในบทสนทนาเกี่ยวกับงานที่รอ review (accepted, rework, dropped หรือ deferred) คำอธิบายของ tool บอก AI ว่าในกรณีนี้มันเป็นผู้ส่งสาร ไม่ใช่ผู้ตัดสิน จึงไม่ควรใช้เพื่อยอมรับงานของตัวเอง
เพราะบันทึกไม่เคยถูกแก้ไขในที่เดิม ประวัติจึงซื่อตรงเสมอ ถ้าคุณเปลี่ยนผู้ให้บริการในเดือนมีนาคม การตัดสินใจเดือนมกราคมยังอยู่ โดยถูกทำเครื่องหมายว่า superseded และบันทึกเดือนมีนาคมบอกเหตุผลไว้
จะสั่งให้ AI บันทึกการตัดสินใจได้อย่างไร?
เชื่อมต่อ Weft กับ AI client ของคุณ แล้ววางคำสั่งประมาณนี้ตอนเริ่มแชต หรือใส่ใน custom instructions หรือไฟล์โปรเจกต์ของ client ถ้ามี:
เมื่อเราตัดสินใจเลือกอะไรจริง ๆ ในแชตนี้ (เลือกตัวเลือกหนึ่งแทนอีกตัว
ตัดบางอย่างออก หรือเปลี่ยนการตัดสินใจก่อนหน้า) ให้บันทึกลงใน Weft ด้วย
record_decision ก่อนไปเรื่องถัดไป:
- title: ชื่อการตัดสินใจ ไม่กี่คำ
- outcome: สิ่งที่เลือก เป็นประโยคเดียว
- context: สิ่งที่เป็นจริงซึ่งบังคับให้ต้องเลือก
- options: เฉพาะตัวเลือกที่เราชั่งน้ำหนักจริง พร้อมข้อดีข้อเสีย
- consequences: ผลที่ตามมา ทั้งดีและไม่ดี
- confirmation: เมื่อไหร่ที่ควรทบทวน
- taskId หรือ project: task หรือ project ที่เรื่องนี้เกี่ยวข้อง
ถ้ามันเปลี่ยนการตัดสินใจก่อนหน้า ให้ใส่ supersedesId แทนการแก้ไข
อย่าบันทึกเรื่องคุยเล่น การเดา หรือสิ่งที่ฉันยังไม่ได้ตกลง
ถ้าฉันยังไม่ได้ตัดสินใจแน่นอน ให้ใช้ status "proposed"
ก่อนเริ่มงานที่ไม่ใช่เรื่องเล็ก ให้เรียก get_context ก่อน แล้วบอกฉัน
ว่าการตัดสินใจไหนในอดีตที่เกี่ยวข้องการเชื่อมต่อใช้เวลาไม่ถึงนาที ใน ChatGPT นั้น Weft เป็นแอปที่เผยแพร่แล้วใน plugin directory ใช้ได้ทุกแพ็กเกจรวมถึง Free (วิธีตั้งค่า) ใน Claude Code ใช้คำสั่งเดียว (วิธีตั้งค่า) ส่วน Claude.ai และ Claude Desktop เพิ่มเป็น custom connector การ sign-in เป็น OAuth ผ่านเบราว์เซอร์ จึงไม่มี key ให้คัดลอก และ Weft ออก refresh token ให้ client ต่ออายุการ sign-in เองได้ หน้าตั้งค่าของ client อื่น รวมถึง Cursor และ Codex อยู่ในเอกสาร
ถ้าวันรุ่งขึ้นเปลี่ยนจาก ChatGPT ไปใช้ Claude Code จะเกิดอะไรขึ้น?
นี่คือกรณีที่คำสั่งข้างต้นออกแบบมารองรับ
- วันจันทร์ คุณวางแผนฟีเจอร์ใน ChatGPT ตัดสินใจเก็บไฟล์อัปโหลดไว้ใน object storage แทนฐานข้อมูล แล้ว ChatGPT เรียก record_decision พร้อม context ตัวเลือกทั้งสอง และ consequences โดยผูกกับ task "File uploads"
- วันอังคาร คุณเปิด Claude Code ใน repository ถ้ายังไม่ได้เชื่อมต่อ:
claude mcp add --transport http weft https://letsweft.com/api/mcp - คุณสั่งให้มันรับ task อัปโหลดไปทำ ก่อนเขียนโค้ด มันเรียก get_context สำหรับ task นั้น หรือ get_task_history ในโหมด decisions แล้วได้บันทึกของวันจันทร์กลับมา
- มันพัฒนาโดยใช้ object storage แทนที่จะรื้อคำถามขึ้นมาใหม่ ถ้าพบเหตุผลจริงว่าตัวเลือกนั้นผิด มันเสนอการตัดสินใจใหม่ที่ supersede ของวันจันทร์ได้ แล้วคุณเป็นคนตัดสิน
ทั้งสอง client อ่านบอร์ดเดียวกันและการตัดสินใจชุดเดียวกัน เพราะบันทึกอยู่ใน Weft ไม่ใช่ในแชตใดแชตหนึ่ง การเชื่อมต่อ OAuth แต่ละครั้งเป็น actor ของตัวเอง และบอร์ดแสดงชื่อที่ client แต่ละตัวลงทะเบียนไว้ คุณจึงเห็นได้ว่าการเชื่อมต่อไหนสร้าง task ไหน ถ้าจะรันหลาย agent บนบอร์ดเดียวโดยไม่ชนกัน ดูAI agent หลายตัว บอร์ดเดียว
การตัดสินใจจาก ChatGPT ควรไปอยู่ที่ไหน?
เทียบ 4 ที่ที่พบบ่อย ตามสิ่งที่ decision log ต้องมี:
| ที่ที่การตัดสินใจไปอยู่ | ค้นเจอได้ภายหลัง | AI ตัวอื่นอ่านได้ | ผูกกับงาน | supersede พร้อมเหตุผลได้ |
|---|---|---|---|---|
| ประวัติแชต | เฉพาะเมื่อคุณจำได้ว่าแชตไหน และการค้นหาเจอ | ไม่ได้ client อื่นเปิดไม่ได้ | ไม่ | ไม่ได้ ข้อความถัดมาขัดแย้งกับมันโดยไม่มีการทำเครื่องหมาย |
| เอกสารหรือหน้าโน้ต | ได้ ถ้ามีคนเขียนไว้ | เฉพาะเมื่อ AI ตัวนั้นเชื่อมต่อกับเอกสาร | หลวม ๆ ผ่านลิงก์ | มักทำด้วยการแก้ไข ซึ่งมักลบเหตุผลเดิมทิ้ง |
| คอมเมนต์ใน task | ได้ ใน task นั้น | ถ้า AI อ่านคอมเมนต์ของ tracker ได้ | ใช่ | ไม่ชัดเจน คอมเมนต์ใหม่ไม่ได้ทำเครื่องหมายว่าอันเก่าถูกแทนที่ |
| บันทึกการตัดสินใจบนบอร์ด Weft | ได้ ผ่าน get_context และ get_task_history | ได้ ทุก client ที่เชื่อมต่อกับ workspace ผ่าน MCP | ใช่ ตาม task หรือ project | ได้ supersedesId เก็บบันทึกเก่าไว้ โดยทำเครื่องหมายว่า superseded |
ประเด็นไม่ใช่ว่าแชตหรือเอกสารไม่ดี แชตคือที่ที่คุณคิด แต่การตัดสินใจต้องถูกคัดลอกออกจากแชตไปไว้ในที่ที่มี state ทันทีที่ตัดสินใจ โดยฝ่ายที่อยู่ในบทสนทนาอยู่แล้ว นั่นคือ AI
สิ่งนี้มาแทนเอกสารหรือ wiki ของเราหรือเปล่า?
ไม่ Weft ไม่มีเอกสารหรือ wiki และไม่ได้พยายามจะเป็น คำอธิบายยาว ๆ คู่มือ onboarding และเอกสารออกแบบควรอยู่ในเครื่องมือเอกสารของคุณ บันทึกการตัดสินใจตั้งใจให้เล็ก: ตัวเลือกเดียว เหตุผล และสิ่งที่มาแทน ถ้าทีมของคุณเก็บบันทึกการตัดสินใจไว้ใน wiki อยู่แล้ว และ AI client ทุกตัวที่ใช้อ่านได้ แค่นั้นอาจพอแล้ว Weft มีประโยชน์เมื่อการตัดสินใจเกิดในแชต AI และผู้อ่านคนถัดไปมักเป็น AI อีกตัว ถ้าคุณกำลังพิจารณา Notion สำหรับเรื่องนี้ ดูทางเลือกแทน Notion สำหรับงาน AI
ข้อจำกัดที่ต้องบอกตรง ๆ อีกสองข้อ Weft ไม่ได้อ่านแชตของคุณ: การตัดสินใจจะถูกบันทึกก็ต่อเมื่อ AI เรียก record_decision เท่านั้น คำสั่งข้างต้นจึงสำคัญ และ AI อาจตัดสินผิดว่าอะไรนับเป็นการตัดสินใจ ดังนั้นควรอ่าน get_context เป็นระยะ และ supersede สิ่งที่มันบันทึกผิด
ค่าใช้จ่ายเท่าไหร่?
การบันทึกและอ่านการตัดสินใจใช้ได้บนแพ็กเกจ Free ซึ่งมี active task 50 รายการ และ AI tool call 200 ครั้งต่อเดือน ทุกการเรียก record_decision หรือ get_context นับเป็นหนึ่งครั้ง Pro ราคา $7 ต่อที่นั่งต่อเดือน หรือ $60 ต่อที่นั่งต่อปี ไม่จำกัด task และจำนวนการเรียก (ราคา) Weft ไม่มี AI credit: การคิดเกิดขึ้นใน AI client ของคุณเอง Weft แค่เก็บบอร์ดและบันทึกต่าง ๆ
- ให้ ChatGPT สรุปการตัดสินใจตอนจบแชตไม่ได้หรือ?
- ได้ และก็ช่วยได้ แต่สรุปนั้นยังอยู่ในแชตนั้น หรือที่ที่คุณวางไว้ ไม่ได้ผูกกับ task, AI client ตัวอื่นอ่านไม่ได้ และเมื่อการตัดสินใจเปลี่ยน ก็ไม่มีบันทึกว่าแทนที่อะไร การบันทึกทุกการตัดสินใจทันทีที่เกิดขึ้นช่วยเลี่ยงทั้งสามข้อนี้
- AI จะบันทึกการตัดสินใจเองโดยไม่ต้องสั่งไหม?
- คำอธิบายของ tool record_decision บอก AI ให้ใช้ทุกครั้งที่ผู้ใช้เลือกอะไรจริง ๆ ในบทสนทนา บาง client จึงทำเอง แต่อย่าพึ่งสิ่งนั้น คำสั่งที่วางไว้ทำให้ชัดเจน และคุณพูดว่า "บันทึกการตัดสินใจนั้น" ได้เสมอ
- ถ้าบันทึกผิด แก้ไขการตัดสินใจได้ไหม?
- แก้ในที่เดิมไม่ได้ บันทึกเป็น immutable ให้บันทึกการตัดสินใจที่ถูกต้องโดยใส่ supersedesId ชี้ไปที่อันที่ผิด บันทึกเก่ายังอยู่ ถูกทำเครื่องหมายว่า superseded และ get_context จะเลิกแสดงมัน
- การตัดสินใจต้องผูกกับ task ไหม?
- ไม่ต้อง การตัดสินใจผูกกับ task, project หรือไม่ผูกกับอะไรเลยก็ได้ ถ้าผูกกับ task, get_task_history จะแสดงมันข้างงานนั้น และ get_context จำกัดขอบเขตให้แคบลงถึงมันได้
- สิ่งนี้เหมือน work memory ของ Weft ไหม?
- ไม่เหมือน work memory (โน้ตสั้น ๆ ที่เรียนรู้มา) เป็นฟีเจอร์ Pro แยกต่างหาก บันทึกการตัดสินใจมาจาก record_decision และโค้ดไม่ได้จำกัดไว้เฉพาะ Pro
- ถ้าใช้ AI client มากกว่าหนึ่งตัวล่ะ?
- นั่นคือเหตุผลหลักที่ควรทำแบบนี้ ChatGPT, Claude Code, Cursor หรือ Codex ที่เชื่อมต่อกับ Weft workspace เดียวกัน อ่านการตัดสินใจชุดเดียวกันผ่าน get_context ทั้งหมด client ตัวที่สองจึงไม่รื้อคำถามที่ตัวแรกตัดสินไปแล้ว