Cài đặt
crewai 1.13 đến 2.0. 1.13 là bản release đã thêm started_event_id và chuẩn hóa token usage, cả hai đều là những gì adapter dựa vào để ghép các events và báo cáo tokens.
Instrument
instrument() đăng ký một listener trên event bus ở mức module của CrewAI và subscribe một handler cho mỗi event class. Không có gì về crew, agents, tasks, hoặc tools của bạn thay đổi.
Những gì được ghi lại
Một task không phát ra bất cứ thứ gì theo ý định. Một CrewAI task là một tập hợp con của agent execution chạy nó, vì vậy phát ra cả hai sẽ nhân đôi mỗi hàng và hiển thị chúng dưới dạng siblings. Task id và name đi kèm trên các events riêng của agent.
Memory và knowledge operations được ghi lại dưới dạng tools, được đặt tên theo surface mà chúng hit, vì vậy chúng xuất hiện bên cạnh các tools thực tế của bạn nơi bạn có thể so sánh latency của chúng.
Trên một hierarchical crew, nesting là thứ làm cho trace có thể đọc được:
delegate_work_to_coworker tool event, không phải trên manager trực tiếp, vì vậy adapter theo liên kết đó. Nếu không có nó, mỗi agent đều là sibling của mỗi agent khác và cấu trúc delegation bị mất.
Ví dụ
analyst đóng lại, span writer mở ra, và cả hai nằm bên trong một span crew.
Đặt tên spans của bạn
agent_id đến từ Agent(role=...), đó là thứ làm cho nó trở thành một dashboard facet có thể đọc được.
agent_id là một cột low-cardinality. Một role chứa run id hoặc timestamp làm giảm nó cho mỗi query bất kỳ ai chạy. Nếu một role trông như một id, adapter từ chối nó và đặt giá trị thực vào một payload field thay thế.
Kiểm soát session
Được giải quyết theo thứ tự này, match đầu tiên chiến thắng:instrument("crewai", session_id=...)- Enclosing
failproofai_sdk.session()scope - Một generated
uuid4().hex, một lần cho mỗi crew hoặc flow
Tùy chọn
session_id là tùy chọn duy nhất adapter này đọc. Prompts và completions luôn được ghi lại, được cắt ngắn để phù hợp với payload budget.
Human in the loop
CrewAI có hai human-in-the-loop surfaces, và cả hai đều được ghi lại dưới dạng bốn events giống nhau.@human_feedback trên một flow method đi qua CrewAI’s event bus: runtime phát ra một event trước khi nó chặn một person và một cái khác sau khi có câu trả lời.
Task(human_input=True) thì không. Nó gọi input() bên trong CrewAI’s own input provider và không phát ra bất kỳ event nào cả, vì vậy adapter bao bọc provider đó trực tiếp — nếu không có nó, toàn bộ human wait là vô hình và được tính toán dưới dạng thời gian agent hoạt động.
Bằng cách nào đi nữa, bạn nhận được:
agent_pause đến agent_resume là cặp duy nhất cung cấp paused time. Nếu không có nó, một human wait mười phút được tính toán dưới dạng mười phút thời gian agent hoạt động.
CrewAI không đặt correlation id nào trên human-feedback event, vì vậy adapter ghép chúng trên flow và method name, quay lại pause được mở gần đây nhất. Điều này là sound vì một console prompt chặn. Nếu bạn xây dựng một concurrent feedback provider, đặt
request_id trên cả hai events.Vì đường dẫn
Task(human_input=True) là một wrapper xung quanh CrewAI’s input provider hơn là một event subscription, nó được khôi phục trên uninstrument() và re-raise bất cứ thứ gì input() raise, bao gồm KeyboardInterrupt, không thay đổi.Các vấn đề phổ biến
Agent filter có hàng nghìn entries
Agent filter có hàng nghìn entries
Một
role chứa UUID, timestamp, hoặc per-run suffix. Sử dụng một human role ổn định và đặt run-specific id trong task description.Một test đọc không có events, nhưng dashboard hiển thị chúng
Một test đọc không có events, nhưng dashboard hiển thị chúng
Event bus là asynchronous, và Đây là một thuộc tính của CrewAI, không phải của SDK.
kickoff() trả về trước khi các handlers cuối cùng chạy. Drain nó trước:Một session hiển thị như ongoing mãi mãi
Một session hiển thị như ongoing mãi mãi
agent_end force-closes các pauses mở nhưng không phải tools hoặc models, vì vậy một run chết bên trong một tool call để span đó mở. Teardown bình thường đóng bất cứ thứ gì vẫn mở và đánh dấu nó incomplete. Chỉ một SIGKILL để nó hanging, vì không có gì có thể chạy.Không có gì được ghi lại
Không có gì được ghi lại
Kiểm tra theo thứ tự này:
instrument() chạy trước kickoff(); có một with failproofai_sdk.session(): xung quanh nó; crewai là 1.13 hoặc mới hơn; FAILPROOFAI_SDK_STRICT=1 đặt, vì vậy một hook degraded raise thay vì được swallowed.Tiếp theo
Cách nó hoạt động
Pairs, ids, session lifecycle, và delivery.
Đọc một trace
Follow causality thông qua session bạn vừa capture.
Các frameworks khác
LangGraph, LlamaIndex, Pydantic AI, và custom agents.

