Add a Tracy Assist achievement.

This commit is contained in:
Bartosz Taudul
2026-11-02 01:05:43 +01:00
parent 2e9dfb8fdf
commit 3430cd8db8
5 changed files with 31 additions and 2 deletions
+1
View File
@@ -5373,6 +5373,7 @@ The models will be automatically downloaded when trying to access them for the f
If you have the resources available you may try replacing \texttt{bartowski/Qwen\_Qwen3.6-35B-A3B-GGUF:Q4\_K\_M} with \texttt{unsloth/Qwen3.6-27B-MTP-GGUF:Q4\_K\_M} in the configuration file to get a more capable model.
\subsection{Service provider}
\label{serviceprovider}
To get started, you will need to install an LLM\footnote{Large Language Model.} provider on your system. Any service that's compatible with the standard API should work, but some may work better than others. The LLM field is advancing quickly, with new models frequently being released that often require specific support from provider services to deliver the best experience.
+1
View File
@@ -211,6 +211,7 @@ Embed(PROFILER_FILES TextAllocStacks src/achievements/AllocStacks.md TEXT)
Embed(PROFILER_FILES TextAnnotateZones src/achievements/AnnotateZones.md TEXT)
Embed(PROFILER_FILES TextAnnotations src/achievements/Annotations.md TEXT)
Embed(PROFILER_FILES TextAppInfo src/achievements/AppInfo.md TEXT)
Embed(PROFILER_FILES TextAskAssist src/achievements/AskAssist.md TEXT)
Embed(PROFILER_FILES TextConnectToClient src/achievements/ConnectToClient.md TEXT)
Embed(PROFILER_FILES TextContention src/achievements/Contention.md TEXT)
Embed(PROFILER_FILES TextContextSwitches src/achievements/ContextSwitches.md TEXT)
+14
View File
@@ -0,0 +1,14 @@
# Ask Tracy Assist
[Tracy Assist](#tracyassist) is a chat window that answers questions about a capture by reading the user manual, the source cached in the capture, and the profile data itself. Ask it why a hot function is slow, and let it read the assembly and the source behind it.
Click the * Tracy Assist* button in the toolbar. The assistant talks only to a local model server (llama.cpp, LM Studio, anything OpenAI compatible), so your data stays on your machine. The [Tracy Assist setup](#serviceprovider) explains how to get one running. Expand *Settings* at the top of the chat, enter the server address, and pick a chat model and an embedding model for the user manual search. Press * Learn manual* once to build the index.
The * robot* button inside the call stack or symbol window puts whatever you are looking at into the chat, so "what does this code do?" is a complete question.
> [!TIP]
> **Tip**
>
> The assistant sees your real data, but the answers come from a language model, and models invent confident nonsense. Check its claims against the windows you already trust before acting on them.
Try asking it to explain the hottest function in your capture.
+10 -1
View File
@@ -1,4 +1,5 @@
#include "TracyAchievements.hpp"
#include "TracyConfig.hpp"
#include "TracyEmbed.hpp"
#include "data/Text100Million.hpp"
@@ -7,6 +8,7 @@
#include "data/TextAnnotateZones.hpp"
#include "data/TextAnnotations.hpp"
#include "data/TextAppInfo.hpp"
#include "data/TextAskAssist.hpp"
#include "data/TextCompareTraces.hpp"
#include "data/TextConnectToClient.hpp"
#include "data/TextContention.hpp"
@@ -242,7 +244,14 @@ AchievementItem ai_surviveCrash = {
.text = Unpack( TextSurviveCrash )
};
AchievementItem* ac_inspectZoneItems[] = { &ai_findZone, &ai_readSource, &ai_lightFlame, &ai_frameStats, &ai_surviveCrash, nullptr };
AchievementItem ai_askAssist = {
.id = "askAssist",
.name = "Ask Tracy Assist",
.text = Unpack( TextAskAssist ),
.visible = [] { return s_config.llm; }
};
AchievementItem* ac_inspectZoneItems[] = { &ai_findZone, &ai_readSource, &ai_lightFlame, &ai_frameStats, &ai_surviveCrash, &ai_askAssist, nullptr };
AchievementItem ai_inspectZone = {
.id = "inspectZone",
+5 -1
View File
@@ -1238,7 +1238,11 @@ bool View::DrawImpl()
if( GetManualWindow().Show() ) GetManualWindow().Draw( m_markdown );
if( m_showFrameStatistics ) DrawFrameStatistics();
#ifndef __EMSCRIPTEN__
if( m_llm.m_show ) m_llm.Draw( m_llmConstraint );
if( m_llm.m_show )
{
if( s_config.achievements ) Achieve( "askAssist" );
m_llm.Draw( m_llmConstraint );
}
#endif
if( m_setRangePopup.active )