สร้าง AI Agent จัดลำดับความสำคัญของงานรายวัน: เปลี่ยนโน้ตดิบเป็น Daily Agenda ด้วย Python + Ollama
เบื่อไหมกับการเปิดดู Todo List ที่ยาวเหยียดในแต่ละวันโดยไม่รู้จะเริ่มทำอะไรก่อน? มาสร้าง AI Agent ส่วนตัวเพื่อวิเคราะห์รายการงานและจัดลำดับความสำคัญให้พร้อมเสร็จสับแบบ Local 100% กัน
ในแต่ละวันที่มีภารกิจรุมเร้าเข้ามามากมาย ตั้งแต่การตอบข้อความของลูกค้า การซื้อของใช้เข้าบ้าน ไปจนถึงการประชุมทีมและการเรียนรู้ทักษะใหม่ๆ ปัญหาที่พวกเราส่วนใหญ่มักประสบไม่ได้เกิดจากการขาดแคลนงานที่จะทำ แต่เกิดจาก "ความเหนื่อยล้าในการเลือกว่าจะทำอะไรก่อนดี" (Decision Fatigue)
การจดโน้ตรายการสิ่งที่คุณต้องทำทั้งหมดไว้ในที่เดียวนั้นเป็นจุดเริ่มต้นของระบบจดบันทึกที่ดี แต่มันมักจะกลายเป็นความเครียดทางอ้อมเมื่อเห็นรายการเหล่านั้นพอกพูนขึ้นเรื่อยๆ โดยปราศจากการแบ่งโครงสร้างและลำดับความสำคัญที่ชัดเจน
นี่จึงเป็นบทบาทที่สำคัญของ Cognitive Automation หรือการเปลี่ยนกระบวนการคิดวิเคราะห์พื้นฐานให้ทำงานได้โดยอัตนัย ในบทความนี้ เราจะมาร่วมกันสร้าง AI Agent ส่วนตัวที่ประมวลผลภายในเครื่องแบบ Local 100% เพื่อทำหน้าที่อ่านงานดิบทั้งหมดของคุณ วิเคราะห์ลำดับความสำคัญตามโครงสร้าง Eisenhower Matrix และเปลี่ยนให้เป็น แผนงานรายวัน (Daily Agenda) ที่พร้อมสำหรับเช้าวันทำงานใหม่ทันที
ทำไมต้องเป็น Local AI ในการจัดการแผนงาน?
แม้จะมีเครื่องมือบริหารจัดการงานระดับ Cloud มากมาย แต่การพัฒนาขึ้นมาใช้งานเองภายในเครื่องแบบ Local-first มีความสำคัญอย่างยิ่งในแง่ของ:
- ความเป็นส่วนตัวขั้นสูงสุด (Absolute Privacy): รายการงานส่วนตัว แผนธุรกิจ หรือกำหนดการต่างๆ เป็นข้อมูลสำคัญที่คุณไม่ควรส่งมอบให้คลาวด์ภายนอก การใช้งาน Ollama ทำหน้าที่ประมวลผลออฟไลน์ช่วยป้องกันไม่ให้ข้อมูลรั่วไหลได้อย่างเด็ดขาด
- ปรับแต่งให้เข้ากับความต้องการเฉพาะตัว (Tailored System): คุณสามารถสั่งการให้ AI เขียนสรุป จัดหมวดหมู่ หรือกระจายตารางงานตามความชอบและจังหวะชีวิต (Circadian Rhythm) ของคุณเองได้อย่างอิสระ
- ประหยัดค่าใช้จ่ายและเข้าถึงได้ไม่จำกัด (No Monthly Fees): รันกี่ครั้ง คัดแยกงานบ่อยแค่ไหนก็ได้ โดยไม่มีค่าบริการ API มาเป็นข้อจำกัด
ขั้นตอนการไหลของข้อมูลในระบบ
แผนงานและการออกแบบของ AI Agent ตัวนี้ถูกวางโครงสร้างไว้ให้เรียบง่ายและเป็นระบบ: 1. การอ่านข้อมูล (Read): ดึงเนื้อหารายการงานทั้งหมดจากไฟล์ inbox-todo.md ใน Obsidian Vault 2. การวิเคราะห์ (Analyze): ส่งลิสต์ทั้งหมดไปยัง Ollama โดยแนบคำสั่ง (Prompt) ที่กำหนดแนวทางและความถูกต้องตามกรอบบริหารเวลา 3. การบันทึก (Write): นำแผนงานที่ประมวลผลเสร็จสิ้นมาอัปเดตเป็นไฟล์แผนรายวัน daily-agenda.md ที่เชื่อมโยงง่ายใน Second Brain ของคุณ
การเตรียมความพร้อมก่อนเริ่มต้น
โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งสิ่งต่อไปนี้ในคอมพิวเตอร์เรียบร้อยแล้ว: * Python 3: เพื่อเขียนสคริปต์ควบคุม * Ollama: ตัวขับเคลื่อนโมเดลออฟไลน์ (ดาวน์โหลดที่ ollama.com) * Obsidian: เพื่อเปิดใช้ระบบจดโน้ต Markdown หรือคุณอาจประยุกต์ใช้กับโฟลเดอร์ไฟล์ทั่วไปก็ได้
จากนั้น ดึงโมเดลภาษาที่จะมาเป็นหัวใจของ Agent ครั้งนี้ด้วยการพิมพ์คำสั่งใน Terminal:
ollama pull gemma2
เขียนสคริปต์ Python สำหรับ AI Task Agent
ให้สร้างไฟล์ชื่อ task_prioritizer.py และคัดลอกโค้ด Python ด้านล่างนี้ไปใส่ไว้ โดยตัวสคริปต์นี้จะอาศัยเพียงไลบรารีมาตรฐานของระบบเพื่อความสะดวกและรวดเร็วในการติดตั้ง:
import urllib.request
import json
import os
from datetime import datetime
# ตั้งค่าตำแหน่งพาร์ทของโฟลเดอร์ Obsidian หรือโฟลเดอร์ที่คุณต้องการใช้งาน
OBSIDIAN_VAULT_PATH = "/home/linn/notes"
INBOX_FILE = os.path.join(OBSIDIAN_VAULT_PATH, "inbox-todo.md")
AGENDA_FILE = os.path.join(OBSIDIAN_VAULT_PATH, "daily-agenda.md")
LLM_MODEL = "gemma2" # สามารถเปลี่ยนเป็น llama3 หรือโมเดลอื่นที่มีใน Ollama ได้
def check_and_read_inbox():
# สร้างไฟล์ตัวอย่างในครั้งแรกที่เปิดรันหากไม่พบไฟล์ในระบบ
if not os.path.exists(INBOX_FILE):
os.makedirs(OBSIDIAN_VAULT_PATH, exist_ok=True)
with open(INBOX_FILE, "w", encoding="utf-8") as f:
f.write("# Inbox Tasks\n")
f.write("- เตรียมสไลด์สรุปยอดขายโปรเจกต์ X สำหรับประชุมบ่ายนี้ (ด่วน)\n")
f.write("- ออกกำลังกายคาดิโอ 30 นาที\n")
f.write("- ซื้อของใช้วัตถุดิบทำอาหารเย็น\n")
f.write("- อ่านบทความวิชาการที่เซฟไว้เมื่อวาน\n")
f.write("- ตอบกลับอีเมลลูกค้าเรื่องขอใบเสนอราคาใหม่\n")
f.write("- คิดโครงร่างหัวข้อวิดีโอถัดไปสำหรับช่องคอนเทนต์\n")
print(f"สร้างไฟล์ตัวอย่างสำเร็จแล้วที่: {INBOX_FILE}")
print("โปรดเพิ่มรายการงานจริงของคุณลงในไฟล์นี้และรันสคริปต์อีกครั้ง")
return None
with open(INBOX_FILE, "r", encoding="utf-8") as f:
return f.read()
def process_with_ollama(raw_text):
prompt = f"""
คุณคือเลขาส่วนตัวและผู้เชี่ยวชาญด้าน Productivity ระดับสากล
จงอ่านรายการภารกิจและสิ่งที่จะต้องทำ (Todo Items) ต่อไปนี้ และทำการวิเคราะห์ตามขั้นตอนอย่างมีแบบแผน:
รายการงานดิบ:
{raw_text}
ขั้นตอนและสิ่งที่คุณต้องสร้างส่งคืน:
1. กำหนดเป้าหมายหลัก 3 อย่างประจำวัน (Top 3 Focus Areas) ที่สำคัญที่สุดของวัน
2. คัดแยกงานทั้งหมดลงในตาราง Eisenhower Matrix (4 กล่อง):
- ด่วนและสำคัญ (ต้องทำทันที)
- สำคัญแต่ไม่ด่วน (ต้องวางแผนทำ)
- ด่วนแต่ไม่สำคัญ (ควรมอบหมายหรือทำให้เร็วที่สุด)
- ไม่สำคัญและไม่ด่วน (สามารถรอหรือตัดออกได้)
3. ร่างแผนเวลากิจกรรมคร่าวๆ ของวัน (Daily Schedule) โดยคำนึงถึงระดับพลังงานสมอง (เช่น ช่วงเช้าสำหรับคิดงานสร้างสรรค์/งานยาก, ช่วงบ่ายสำหรับตอบเมล/ธุรการ)
4. เขียนเนื้อหาตอบกลับเป็นรูปแบบ Markdown ที่สะอาด สวยงาม เหมาะสำหรับการบันทึกลงในระบบ Second Brain อย่าง Obsidian
5. ใช้ภาษาไทยที่เข้าใจง่าย มีสไตล์ที่เป็นมิตรและเป็นมืออาชีพ
"""
url = "http://localhost:11434/api/generate"
payload = {
"model": LLM_MODEL,
"prompt": prompt,
"stream": False
}
req = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"}
)
try:
print("กำลังส่งข้อมูลให้ Ollama ประมวลผลและแบ่งลำดับความสำคัญ...")
with urllib.request.urlopen(req) as response:
res_data = json.loads(response.read().decode("utf-8"))
return res_data.get("response", "ไม่สามารถอ่านผลลัพธ์ได้")
except Exception as e:
return f"พบความขัดข้องในการเชื่อมต่อระบบ Ollama: {str(e)}"
def main():
raw_tasks = check_and_read_inbox()
if not raw_tasks:
return
# คัดกรองข้อมูลดิบว่ามีปริมาณงานเหมาะสมหรือไม่
clean_tasks = raw_tasks.strip()
if len(clean_tasks) < 15:
print("รายการภารกิจน้อยเกินไป โปรดกรอกข้อมูลเพิ่มเติม")
return
ai_analysis = process_with_ollama(clean_tasks)
date_today = datetime.now().strftime("%Y-%m-%d")
document_data = f"---\ntitle: Daily Agenda {date_today}\ndate: {date_today}\ntags: [productivity, daily-agenda, local-ai]\n---\n\n"
document_data += f"# 📅 Daily Plan & Priorities - ประจำวันที่ {date_today}\n\n"
document_data += f"{ai_analysis}\n\n"
document_data += "---\n*บันทึกแผนงานนี้สร้างขึ้นอัตโนมัติด้วย AI Agent ออฟไลน์ส่วนตัว*"
with open(AGENDA_FILE, "w", encoding="utf-8") as f:
f.write(document_data)
print(f"จัดหมวดหมู่งานสำเร็จ! แผนงานบันทึกอยู่ที่: {AGENDA_FILE}")
if __name__ == "__main__":
main()
วิธีการเรียกใช้อย่างต่อเนื่อง
เพื่อให้สคริปต์นี้สอดคล้องกับแนวคิด Cognitive Automation อย่างสมบูรณ์ การสั่งรันด้วยมือทุกวันอาจไม่สะดวกรวดเร็วพอ คุณสามารถเชื่อมระบบให้รันอัตโนมัติในตอนเช้า:
- บน Windows (Task Scheduler): สร้าง Task สั่งรันคำสั่ง
python task_prioritizer.pyทันทีหลังจากคุณ Log-in เข้าเครื่องคอมพิวเตอร์ในตอนเช้า - บน Linux และ macOS (Cron Job): เปิด Crontab และตั้งค่าให้เริ่มระบบจัดระเบียบตารางงานทุกวันเวลา 8:00 น. ก่อนที่คุณจะเริ่มเวลาทำงานหลัก
บทสรุป
การเปลี่ยนกระบวนการบริหารเวลาจากที่ต้องใช้พลังสมองเลือกและกังวล มาเป็นการมองเห็นภาพแผนงานที่ถูกวิเคราะห์ไว้ล่วงหน้า จะช่วยเพิ่มอัตราการเข้าสู่สภาวะ Deep Work หรือการทำงานที่มีประสิทธิภาพสูงได้รวดเร็วขึ้น
เมื่อนำระบบนี้ไปรวมเข้ากับ Obsidian คุณจะสามารถสร้างสรรค์ระบบงานและสร้างการเชื่อมโยงความรู้ที่สมบูรณ์ขึ้นได้ในทุกเช้าโดยปราศจากความกังวลว่าความเป็นส่วนตัวของบันทึกส่วนบุคคลจะถูกแบ่งปันออกไป ลองนำไปประยุกต์ปรับแต่งรูปแบบ Prompts ให้เหมาะเจาะกับตัวเองกันครับ!