Packages
fnord
0.7.6
0.9.40
0.9.39
0.9.38
0.9.37
0.9.36
0.9.35
0.9.34
0.9.33
0.9.32
0.9.31
0.9.30
0.9.29
0.9.28
0.9.27
0.9.26
0.9.25
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.99
0.8.98
0.8.97
0.8.96
0.8.95
0.8.94
0.8.93
0.8.92
0.8.91
0.8.90
0.8.89
0.8.88
0.8.87
0.8.86
0.8.85
0.8.84
0.8.83
0.8.82
0.8.81
0.8.80
0.8.79
0.8.78
0.8.77
0.8.76
0.8.75
0.8.74
0.8.73
0.8.72
0.8.71
0.8.70
0.8.69
0.8.68
0.8.67
0.8.66
0.8.65
0.8.64
0.8.63
0.8.62
0.8.61
0.8.60
0.8.59
0.8.58
0.8.57
0.8.56
0.8.55
0.8.54
0.8.53
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.47
0.8.46
0.8.45
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.1
0.8.0
0.7.24
0.7.23
0.7.22
0.7.21
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.3
0.7.2
0.7.1
0.7.0
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.44
0.4.43
0.4.42
0.4.41
0.4.40
0.4.39
0.4.38
0.4.37
0.4.36
0.4.35
0.4.34
0.4.33
0.4.32
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
AI code archaeology
Current section
Files
Jump to
Current section
Files
lib/ai/agent/archivist.ex
defmodule AI.Agent.Archivist do
@model AI.Model.balanced()
@prompt """
You are the Archivist AI Agent.
The Orchestrating Agent has performed research to answer the user's question.
You will be provided with a transcript of the conversation, including the user's query and the research performed by the Orchestrating Agent.
You will organize and file the facts discovered during the research for future reference.
Your saved notes will be used in future responses to more accurately answer the user's question.
Read the transcript and identify ALL facts that were discovered about the code base.
Include facts even if (*especially* if) they are unrelated to the user's query.
Many code bases are long-lived, with multiple languages, changes to terminology that are inconsistently applied, and ambiguous or stale documentation.
Rather than discovering these inconsistencies and ambiguities every time the user asks a question, you can help the Orchestrating Agent by tracking this information so it doesn't trip us up in the future.
Some important types of information that you should track include:
- ambiguities in phrasing:
- inconsistent phrasing
- components or concepts with names that are similar to other components
- components or concepts that are referenced by multiple names
- components or concepts that have unexpected names that do not match their behavior
- changes in terminology or naming conventions over time
- inaccurate documentation or comments; this will help prevent us from being misled by stale or incorrect information in the future
- the purpose of a file, component, or concept
- relationships between files, components, or concepts
- the location or single source of truth for a concept
- data flow between components and application boundaries
- organization of different apps within the code base, and how they interconnect
- organization of components, especially if they are not organized in a way that is easy to understand
- anything else that you think might might be useful or prevent us from getting tripped up in the future
Organize facts by topic.
Use the `notes_save_tool` to save your categorized notes.
"""
@behaviour AI.Agent
@impl AI.Agent
def get_response(ai, opts) do
with {:ok, transcript} <- Map.fetch(opts, :transcript),
{:ok, %{response: response}} <- build_response(ai, transcript) do
{:ok, response}
end
end
defp build_response(ai, transcript) do
AI.Accumulator.get_response(ai,
model: @model,
prompt: @prompt,
tools: [AI.Tools.tool_spec!("notes_save_tool")],
completion_args: [log_tool_calls: true],
input: transcript,
question: "Organize and file the facts discovered during the research for future reference."
)
end
end