Coding Agent của tôi chỉ nhớ các phiên làm việc, chứ không nhớ công việc
Một coding agent có thể duy trì một luồng hội thoại liên tục nhưng vẫn có cảm giác hay quên.
Tôi đã gặp vấn đề này khi xây dựng CliGate. Tôi đã khắc phục được tính liên tục của phiên làm việc, nhưng các tác vụ lặp lại vẫn còn quá chậm.
Agent nhớ cuộc hội thoại, nhưng nó không nhớ công việc.
Tính liên tục của phiên làm việc giải quyết được một vấn đề. Nó giúp ích cho các câu lệnh tiếp nối như:
- continue
- do the same for this file
- retry that
Điều đó hữu ích. Nhưng nó không giúp ích khi bạn lặp lại một quy trình làm việc (workflow) sau vài ngày.
Một agent cần nhớ lại điều gì đã giúp lần chạy trước thành công. Nó cần biết:
- nút nào hoạt động
- bước nào là ngõ cụt
- trường nào cần xử lý đặc biệt
- quy tắc nào bạn luôn muốn áp dụng
Lần chạy đầu tiên là tốn kém nhất. Đó là lúc agent khám phá và tìm ra những chi tiết không có trong prompt của bạn.
Trước khi tôi khắc phục, những chi tiết này chỉ tồn tại trong các bản ghi (logs) thô. Agent có lịch sử, nhưng nó không có bộ nhớ có thể tái sử dụng. Nó phải khám phá lại mọi thứ mỗi lần thực hiện.
Đó không phải là trí tuệ. Đó là việc phải trả cùng một chi phí gỡ lỗi (debugging) hai lần.
Cách tiếp cận sai lầm là lưu trữ nhiều lịch sử hơn và hy vọng mô hình sẽ sử dụng chúng. Điều đó tạo ra nhiễu.
Thay vào đó, tôi đã xây dựng một lớp bộ nhớ (memory layer) nhỏ hơn và có thể tái sử dụng. Tôi tập trung vào:
- quy trình (procedures)
- sự thật (facts)
- chỉ thị (directives)
- tham chiếu (references)
Tôi ngừng cố gắng lưu lại mọi thứ đã xảy ra. Tôi bắt đầu lưu lại những gì cần phải nhớ.
Giờ đây, trợ lý sử dụng một lớp bộ nhớ dựa trên tệp để nhớ lại:
- một quy trình: các bước tốt nhất và các ngõ cụt đã biết
- một sự thật: một URL hoặc một cài đặt cụ thể
- một chỉ thị: cách bạn muốn mọi thứ được thực hiện
- một tham chiếu: nơi lưu trữ tài liệu
Đây chính là cách con người làm việc.
Tôi không muốn một bản tái hiện hoàn hảo quá khứ vì giao diện thay đổi và các nút bấm sẽ di chuyển. Tôi muốn agent:
- Nhớ lại quy trình tốt nhất đã biết
- Thử nó trước
- Xác minh từng bước
- Quay lại việc khám phá nếu thất bại
- Cập nhật bộ nhớ sau khi thành công
Điều này biến sự tự động hóa mong manh thành bộ nhớ vận hành hữu ích.
Tôi cũng tách biệt các quy tắc cố định khỏi lịch sử hội thoại. Các quy tắc như "luôn trả lời bằng tiếng Trung" hoặc "không chạm vào dữ liệu production" không phải là ngữ cảnh của phiên làm việc. Chúng là các quy tắc vận hành.
Sau khi tách biệt chúng, trợ lý trở nên dễ dự đoán hơn. Nó không còn phải khám phá lại các sở thích của bạn khi đang thực hiện một tác vụ.
Các tác vụ lặp lại giờ đây ngắn hơn. Trợ lý hoạt động nhanh hơn vì nó không phải bắt đầu với một mô hình trống rỗng mỗi lần.
Đừng nhầm lẫn một luồng hội thoại liên tục với một hệ thống có khả năng học hỏi.
Một phiên làm việc giữ cho cuộc hội thoại tiếp diễn. Bộ nhớ giữ cho những bài học hữu ích tồn tại.
Nếu bạn đang xây dựng các coding agent, hãy tự hỏi: Hệ thống của bạn đang nhớ luồng hội thoại, hay đang nhớ quy trình thành công?
Nguồn: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig
