Repository navigation
Add the gecko-triage agent for Gecko bug triage - #7239
Open
alastor0325 wants to merge 3 commits into
Open
alastor0325 wants to merge 3 commits into
alastor0325 wants to merge 3 commits into
Conversation
alastor0325
force-pushed
the
gecko-triage/pr
branch
from
October 20, 2026 18:44
6e70c78 to
80c98ff
Compare
Member
There was a problem hiding this comment.
I had a quick, relatively to the PR size ;) and I have some generic comments.
@padenot will take a look as well.
alastor0325
force-pushed
the
gecko-triage/pr
branch
from
October 22, 2026 21:08
80c98ff to
606b41c
Compare
Member
Author
|
I submitted another PR to start intergrating some of my skills into |
An agent's hooks need COMMENT_FOOTER_SEPARATOR to tell the agent's prose from the runtime's trailer. A broker that wraps the agent-tools Bugzilla tools needs GET_BUGS_DEFAULT_FIELDS to request the same default fields.
alastor0325
force-pushed
the
gecko-triage/pr
branch
from
October 24, 2026 19:03
606b41c to
15e6da1
Compare
gecko-triage triages one Gecko bug per run, for one team or, with no team, with the shared rules only. Each run reads the whole bug, all comments included, and decides its status, what is missing and the next step. It reads the diagnostics reporters attach (profiles, logs, CI logs, crash reports, archives, memory reports and video frames, plus specs) through fx-bug-toolkit skills and its own tools, and it looks at the code before it asks a reporter for more. It records one comment and the field changes its rules allow. Record-time hooks limit every write, a post-run check reads the bugs a write names, and a broker sidecar serves only public Bugzilla content. An independent, read-only verifier must confirm every close before the hooks accept it. A run with no team never applies by itself. The media team is the first team.
The agent starts human-gated: auto_apply_actions is False and each run must vouch for itself. A run needs a bug id and a known team.
alastor0325
force-pushed
the
gecko-triage/pr
branch
from
October 26, 2026 18:06
15e6da1 to
b938e1b
Compare
Member
Author
|
I had a short discussion with Paul today. I’m thinking about which parts could become shared tools or move in-tree to benefit other tools, as I’m also working on another PR to let the |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
The Firefox media team triages its new bugs with the
/triageskill of fx-bug-toolkit. fx-bug-toolkit is a Claude Code plugin. The media team has used this skill for weekly triage for a while.For each bug, the skill does these steps:
This PR brings that workflow into Hackbot as the
gecko-triageagent. The agent does not call/triage. Its own rules (rules/andteams/<team>/rules/) and its code now hold the triage steps. The agent still uses four helper skills of fx-bug-toolkit, at version 0.7.0, in their Hackbot mode:analyze-profilereads Firefox Profiler links.check-logreads media logs.spec-checkchecks web spec behavior.bug-startinvestigates the cause in the code.The agent records its comment and its field changes as actions.
We've been runing the agent in this PR locally every day in the past week o media bugs, and a person reviewed each result before it was posted to refine the PR to current shape. The gecko-triage dashboard shows these results.
One agent can triage for each Gecko team. A team adds its components and its rules in
teams/<team>/. The media team is the first team. A run with no team uses only the shared rules, in the component of the bug.Architecture
Each box names its main file. The table below lists all the files for each box. The agent's files are in
agents/gecko-triage/hackbot_agents/gecko_triage/.flowchart LR ui[Hackbot UI or API<br/>bug_id, team] api[hackbot-api<br/>app/agents.py] subgraph job[Cloud Run job] direction TB pre[Preflight<br/>preflight.py] agent[gecko-triage agent<br/>agent.py] subs[Subagents<br/>agent.py, dupes.py, toolkit.py] hooks[Record-time hooks<br/>hooks.py, closing.py] post[Post-run checks<br/>targets.py] broker[Broker sidecar<br/>broker.py] pre --> agent agent --> subs agent -- comment and field changes --> hooks hooks --> post agent -. reads .-> broker subs -. reads .-> broker end bmo[(Bugzilla)] person{{A person approves<br/>in the Hackbot UI}} ui --> api --> job broker -. read-only key .-> bmo post -- recorded actions --> api api --> person -- apply --> bmoservices/hackbot-api/app/agents.py,app/schemas.pyauto_apply_actions=False, and checks the run inputsbug_idandteam.preflight.py,state.py__main__.py,agent.py,rules/,teams/<team>/,config.py,teamconfig.pyagent.py(themake_*functions),dupes.py,toolkit.py,attachments.pytoolkit.pyloads the pinned fx-bug-toolkit skills.hooks.py,closing.py,authors.pytargets.pybroker.py,visibility.pyauto_apply_actions=False.close_verifier. This subagent starts with a fresh context, uses only read tools, and tries to prove the close wrong.Workflow
Each run triages one bug.
rules/workflow.mdgives the steps.profile_analystreads Firefox Profiler links.log_analystreads media logs.spec_checkerchecks web spec behavior.bug_investigatorreads the code.issue_type).duplicate_huntersearches for duplicates. Code runs some of the searches, and the subagent runs a concept search. The agent then links the correct meta bug.close_verifiermust confirm the close.Decisions
needs_infoanalyzedduplicateclose_verifierconfirms it.invalidclose_verifierconfirms it. Never when the reported input can cause a failure.incompleteclose_verifierconfirms it. The reporter did not answer a needinfo for 14 days.wrong_componentstalledstalledkeyword. The a cause. The bug stays open.watchingskipped