RFC-0029: Perfetto UI: Intelletto - AI Assistant (coordination) #6210
Replies: 7 comments
-
|
📝 RFC Document Updated View changes: Commit History |
Beta Was this translation helpful? Give feedback.
-
|
PTAL @LalitMaganti @primiano |
Beta Was this translation helpful? Give feedback.
-
|
Ok wow there is a lot. Thanks a lot for starting this.
My overall feedback UXUX wise I'm very aligned. Plugin ArchitectureShouldn't dev.perfetto.llm actually be part of core (app.agents or something similar)? In my mind there shoudl be some "bonding" logic to hold the registry of possible backends. I totally buy that "intelletto" itself is a plugin. BUt i feel some of the upper logic belongs more to core
Provider/Model/ProtocolOn Provider/Models i'm mostly there, but I feel i'm a bit off by few details when I look more closerly. The way I see it is like this:
Then I'm not sure I fully understand what a "protocol" is in your description. Maybe is just a naming thing, but in my mind the next abstraction is a Model (another TS interface). So a Provider gives a list of models, which concrete classes that implement the model. Context inectionI am very aligned on the spirit of this. But I feel I have some different (and still handwavy) view on the details.
I think this is where instead I feel core should have the responsibility of maintaining the abstraction of Not sure about
The way I'm thinking about this problem is that you have a UiContext wrapper element in mithril. So in the code you do something like and then as you render the whole page, it builds a shadow JSON dom like The only thing is that this feels liek a lot of code to maintain... I am still very torn and handwavy on this. Defo should discuss more Tools100% aligned. Again my only objection is that "registerTool" should be on core not on AssistantPlugin |
Beta Was this translation helpful? Give feedback.
-
|
FYI @dreveman |
Beta Was this translation helpful? Give feedback.
-
|
This all looks good to me. The only points of feedback I have at this time are:
|
Beta Was this translation helpful? Give feedback.
-
|
📝 RFC Document Updated View changes: Commit History |
Beta Was this translation helpful? Give feedback.
-
|
@dreveman thanks for taking a look.
Good question. In the doc I put this on the Intelletto plugin which means that other users of the LLM plugin will not have access to the tools. However I'm not convinced about this and I specifically mentioned it as open question:
What's changed since is we've decided to merge the LLM plugin into the core - effectively making the language model interface a first class citizen. So we either register the tools/skills with the core or we register them with the Intelletto plugin only. Since I'm leaning more towards making tools and commands the same thing I think it makes sense to register tools with the core, and make them available to all users of the language model API if they want them. What I'm sure about is that we don't want to push tools onto every user of the language model API - e.g. code completion probably has no business calling tools as this might just slow it down and/or leave side effects. We probably need some way of limiting the number of tools that are available depending on the use case like a tool tagging system and a filter defined when you create a new language model session. What did you have in mind for the GPU compute plugin? Is this the auto-generated summaries in the details panel?
What use case are you envisioning for this? If extension servers / the embedders file can define multiple configs then you can just configure two provider configs, e.g. one for anthropic and one for gemini, then the user can switch between providers/models on the fly. If you're planning on using a multi model router type backend (e.g. openrouter), then you can just choose the openai compatible protocol and let the router handle any tool conversion or streaming adapter for us. For example - the idea is you can configure as many providers as you like and switch between the models at will. In the screenshot(s) - I've configured Gemini and Chrome's on device model and the user can switch between them.
|
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
📄 RFC Doc: 0029-intelletto.md
Perfetto UI: Intelletto - AI Assistant (coordination)
Authors: @stevegolton
Status: Draft
Introduction
Reading a trace well takes deep, domain-specific knowledge of the system being
traces - plus a fair amount of Perfetto UI fluency to get at it - a barrier that
keeps most of Perfetto's power in the hands of a few experts. This doc proposes
an AI assistant, and the LLM framework behind it, that lets anyone investigate a
trace and drive the UI in natural language: ask why a frame was janky, turn a
question into SQL, build a Data Explorer graph, or jump to the right point in
the timeline.
It is the coordination doc for the work involved with integrating this new
tooling into the Perfetto UI: it owns the overall motivation, the component
breakdown, the cross-cutting risks, and the roadmap, and links out to a
dedicated RFC for each component. It does not specify any component itself -
each lives in its own doc (see "What we're actually building" below). For
concrete examples of what the assistant can do, and the case for embedding it in
the UI, see the embedded-assistant doc
(RFC-0032).
Framing
RFC-0025 establishes the
motivation and demand for AI tooling in Perfetto - who it serves, the problems
it addresses, and the evidence behind it. This doc and its children deliberately
take that case as given and cover the implementation in the UI. Review
comments about whether to build this belong on that doc; these are about how.
There is also prior art within the codebase:
com.google.PerfettoMcpalreadyoffers similar but simpler chatbot-style functionality, and will likely be
replaced by the tool described in these docs (see the migration subsection
under Roadmap, and RFC-0032).
Risks
Adding potentially controversial features to a well-established tool carries
risk:
one of Perfetto's strengths - so any integration risks undermining the trust
we've built there. To put minds at ease up front: Perfetto OSS will always
remain model-agnostic, with no model or provider baked in - the user is always
free to bring their own and decide where their data goes (see the last point
below).
software without clear value has repeatedly drawn criticism and, in many cases,
degraded the very experience it set out to improve.
confidently, and a plausible-but-wrong answer can erode confidence in the tool
as a whole - cutting against Perfetto's long-standing principle of only
showing what we know to be true. While hallucinations can't be eliminated
entirely, the goal is to make the value the assistant adds clearly outweigh
the harm done by the occasional falsehood.
can in theory strip out any feature they don't want, but a lot of users use
the hosted build at ui.perfetto.dev. Thus, every feature has to earn its place
on the value it genuinely adds, rather than simply being an attempt to
shoe-horn in the latest tech trends.
AI related tooling entirely. We still want to advertise these features - but
only to make users who'd benefit aware of them and drive adoption, not to push
AI on anyone.
feature isn't in the weights of the model used: it's the tools and the library
of domain-specific skills the model draws on. The model itself is largely
interchangeable, and Perfetto stays model-agnostic - users are always free to
bring whatever model they prefer.
Scope
These docs cover the implementation in the OSS codebase - the provider-agnostic
plumbing. They make no judgement about which backends are used or what data is
acceptable to send to them: trace contents are sent to whichever endpoint the
user configures, and any data-egress / privacy policy is a deployment concern
layered on top, out of scope here. Likewise, API key handling is up to the
user or specific deployment.
These docs also don't cover classic ML models for uses such as classifying
traces. While the assistant could certainly make use of ML-powered tools in
the future, this work is focused on the assistant, which will leverage LLMs.
What we're actually building
The proposal breaks down into four components, each with a different value
proposition and a different degree of novelty. This doc specifies none of them
directly; each has its own RFC, linked below. In brief:
click-to-context and the ability to act on the same view the user is looking
at. RFC-0032 (UX, agent loop, system prompt,
conversation management).
gateway in the UI core: a shared backend any plugin or core feature can
request a model from, with providers (and keys) pushable by extension servers
so managed deployments are plug-n-play. RFC-0033.
and the core, so the assistant's capability grows with the codebase instead of
a hand-maintained list. RFC-0034 (context
injection) and RFC-0035 (tools & skills).
CLI / Claude Code / Cursor-style agents over a bridge via trace processor.
RFC-0036.
Roadmap
Status: a working prototype exists. The screenshots in the child docs are
taken from it; it covers most of Phase 1 (the Provider/Config/Model stack with
Gemini and OpenAI-compatible providers, the sidebar with context chips and
tool use, the core tool surface). Phase 1 is therefore largely a landing
plan - review, hardening, and upstreaming existing code - rather than
speculative work, and the designs in the child docs are informed by it rather
than hypothetical.
See: #6209
config layers, Gemini provider, agent sidebar, basic context injection
(page + selection + viewport), core tool surface (SQL queries, selection,
timeline navigation, Data Explorer state). Embedded assistant only - no
bridge or external-harness support of any kind. Done when: a user with a
configured provider can run the intro's example prompts end-to-end in the
sidebar.
additional providers, tools from other plugins, skills integration,
external agent conduit via TP, merge with and deprecate PerfettoMcp. Done
when: a third-party plugin can register a tool, a skill, and a context
provider without core changes, and an external harness can drive the UI
through the TP conduit.
server integration, first-party extensions for external harnesses (if
warranted), richer tool surface as plugins add their own.
Migration from
com.google.PerfettoMcpPerfettoMcpis folded into this design and deprecated once the assistant'stool surface covers it (Phase 2, alongside the external-agent conduit). The
details live in RFC-0036.
Open questions
The open questions now live in the docs that own each area:
Build vs. library for the provider layer- decided (build); seeRFC-0033.
or commands grow optional schemas + an allowlist; see
RFC-0035.
RFC-0036 is the least settled part of the
proposal.
💬 Discussion Guidelines:
Beta Was this translation helpful? Give feedback.
All reactions