Alur Kerja Berbasis Tugas
Gunakan tugas Synapse untuk mendorong alur kerja LLM multi-langkah yang bertahan lintas sesi.
Alur Kerja Berbasis Tugas
Tugas bukan hanya todo — mereka adalah tulang punggung alur kerja LLM persisten. Dengan membuat tugas untuk pekerjaan multi-langkah, Anda memastikan kontinuitas lintas sesi dan menyediakan jejak audit untuk apa yang telah dilakukan.
Mengapa Berbasis Tugas?
Tanpa tugas:
- LLM memulai setiap sesi tidak yakin apa yang harus dilakukan
- Pekerjaan multi-langkah terlupakan di tengah eksekusi
- Tidak ada catatan apa yang telah dilakukan
Dengan tugas:
- LLM melanjutkan tugas yang sedang berjalan segera
- Pekerjaan multi-langkah bertahan lintas sesi
- Jejak audit bawaan dari semua pekerjaan
Pola
1. At session start: check in_progress tasks
2. If tasks exist: resume them
3. If no tasks: create new tasks for current work
4. Update task status as you progress
5. Mark done when completeImplementasi
Langkah 1: Buat tugas untuk pekerjaan multi-langkah
def start_workflow(title, steps):
"""Create a task for multi-step work."""
task_id = create_task(
title=title,
description=f"Steps:\n" + "\n".join(f" {i+1}. {s}" for i, s in enumerate(steps)),
priority="high"
)
return task_id
# Example
task_id = start_workflow("Deploy Synapse v1.6.0", [
"Bump version in package.json",
"Update CHANGELOG.md",
"Commit and push",
"Wait for CI green",
"Verify deployment"
])Langkah 2: Lacak kemajuan dalam deskripsi tugas
def update_progress(task_id, current_step, total_steps, status_note):
"""Update task with current progress."""
description = f"Progress: {current_step}/{total_steps}\nStatus: {status_note}"
update_task(task_id, status="in_progress", description=description)
# Example
update_progress(task_id, 2, 5, "CHANGELOG updated, committing now")Langkah 3: Lanjutkan lintas sesi
def resume_work():
"""At session start, find and resume in-progress tasks."""
tasks = list_tasks(status="in_progress")
for task in tasks:
print(f"Resuming: {task['title']}")
print(f"Last status: {task['description']}")
# Parse progress from description
progress = parse_progress(task['description'])
next_step = progress['current_step'] + 1
# Continue from next step
continue_from_step(task['id'], next_step)Langkah 4: Selesaikan dan arsipkan
def complete_task(task_id, summary):
"""Mark task done with completion summary."""
update_task(task_id,
status="done",
description=f"COMPLETED. Summary: {summary}"
)
# Also store as memory for long-term reference
remember(
category="project",
key=f"completed_{task_id}",
content=f"Task: {task_id}\nSummary: {summary}",
tags=["completed", "task"],
priority="normal"
)Contoh Lengkap: Alur Kerja Deploy
class DeployWorkflow:
def __init__(self, version):
self.version = version
self.task_id = None
self.steps = [
("Bump version", self.bump_version),
("Update changelog", self.update_changelog),
("Commit and push", self.commit_push),
("Wait for CI", self.wait_for_ci),
("Verify deployment", self.verify_deployment),
]
def run(self):
# Check if already in progress
existing = self.find_existing()
if existing:
self.task_id = existing['id']
start_step = self.parse_progress(existing['description'])
else:
self.task_id = create_task(
title=f"Deploy Synapse v{self.version}",
description=self.build_description(0),
priority="high"
)
start_step = 0
# Execute remaining steps
for i in range(start_step, len(self.steps)):
step_name, step_fn = self.steps[i]
self.update_progress(i, f"Running: {step_name}")
try:
step_fn()
except Exception as e:
self.update_progress(i, f"FAILED at {step_name}: {e}")
raise
self.complete()
def update_progress(self, step_idx, status):
update_task(self.task_id,
status="in_progress",
description=f"Step {step_idx+1}/{len(self.steps)}: {status}"
)
def complete(self):
complete_task(self.task_id, f"Deployed v{self.version} successfully")Hierarki Tugas
Untuk pekerjaan kompleks, gunakan hubungan tugas parent-child:
# Parent task
parent_id = create_task("v1.6.0 Release", priority="high")
# Sub-tasks (linked via tags)
create_task("Bump version",
description=f"Parent: {parent_id}",
tags=["v1.6.0", f"parent-{parent_id}"],
priority="high")
create_task("Update docs",
description=f"Parent: {parent_id}",
tags=["v1.6.0", f"parent-{parent_id}"],
priority="normal")Cari sub-tugas:
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=parent-{parent_id}&tag=v1.6.0"Alur Kerja Status
pending → in_progress → done
↘ cancelledPending
Tugas dibuat tetapi belum dimulai. Gunakan untuk pekerjaan yang direncanakan.
In Progress
Sedang dikerjakan. Perbarui deskripsi dengan kemajuan.
Done
Selesai dengan sukses. Deskripsi harus menyertakan ringkasan.
Cancelled
Ditinggalkan. Deskripsi harus menyertakan alasan.
Praktik Terbaik
Pola Umum
Pola: Alur Kerja Perbaikan Bug
def fix_bug(bug_id, description):
task_id = create_task(
title=f"Fix bug {bug_id}",
description=description,
priority="high"
)
# Investigate
update_progress(task_id, "Investigating root cause")
root_cause = investigate()
# Fix
update_progress(task_id, f"Applying fix: {root_cause}")
apply_fix(root_cause)
# Test
update_progress(task_id, "Testing fix")
run_tests()
# Deploy
update_progress(task_id, "Deploying fix")
deploy()
complete_task(task_id, f"Fixed: {root_cause}")Pola: Alur Kerja Riset
def research_topic(topic):
task_id = create_task(
title=f"Research: {topic}",
priority="normal"
)
update_progress(task_id, "Gathering sources")
sources = gather_sources(topic)
update_progress(task_id, "Analyzing")
analysis = analyze(sources)
update_progress(task_id, "Storing findings")
remember("fact", f"research_{topic}", analysis,
tags=["research", topic], priority="normal")
complete_task(task_id, f"Research complete: {len(sources)} sources")