An Experiment with Local Research Agents

AI agents are so powerful, now, that a significant limitation in what they can achieve is our ability to give them tasks, feedback and resources.

One important thread of research and practice is using AI agents to perform research, for example this recent work at Anthropic on using agents to research way to mitigate alignment failures (e.g. deception.)

Open models are also becoming increasingly powerful and can easily be run locally on a machine with a decent graphics card.

I decided to see whether I could get an open model, gemma4:12b to do some research, partly to see if it could, as I expected, be useful in that regard, and partly to try some AI-driven research without burning a horrendous number of tokens and $$ making API calls to publicly served models. I did, in three days, burn through all my cursor quota for the month, and I did have to pay a small amount for some calls to OpenAI’s API, but these costs were small.

I asked ChatGPT to summarise the research. Here is one of the research reports it wrote:

I used cursor to write a harness that would allow multiple instances of the model, running in ollama, to collaborate. I did not initially ask it to build any significant infrastructure to guard against possible malfeasance from the AI models, but although the danger seemed very low, I backed up my machine and got cursor to work hardening the harness. I asked ChatGPT-5.6 Sol, medium or high, to write specs for the coding agent to implement, and then to review the resulting code. It took a number of iterations to get the harness to the point where there did not seem to be any subtle ways for the agents to do bad things, like overwhelming my machine with large numbers of files.

After that, there was a lot of work ironing out problems in the harness. Sometimes research would stop because a hard wired limit had been reached. Sometimes the agent running the research would establish a plan but not commission any work on it. Sometimes the research would get stuck in a loop. And there were bugs too, for example in how metrics were calculated.

After a significant amount of back and forth, we settled on the following agent roles:

Commander — overall research strategy; decides what work to commission next and when the question is sufficiently answered.

Experiment Designer — constructs experimental plans, conditions, cases, replications, controls, predictions, etc.

Hypothesis Reviewer — evaluates hypotheses against the empirical evidence and classifies them.

Research Reviewer — reviews research progress/methodology and identifies unresolved problems or necessary follow-ups.

Solver — performs the actual task in individual experimental TrialCells.

Critic / Debater — independently challenges a solver answer in adversarial-critique conditions.

Debate Analyst / Analyst — analyses experimental/debate outcomes and trajectories.

Replicator — deals with replication-oriented work and checking whether findings reproduce.

Synthesiser — combines experimental findings into supported research conclusions.

Evaluator — evaluates the resulting evidence/conclusions, including final-quality judgments.

I asked ChatGPT to create a bank of problems for the AI agents to use in their research. The initial research question, as phrased by ChatGPT was “Does an independent critique-and-revision pass improve Gemma 4 12B’s accuracy in detecting contradictions in difficult natural-language narratives compared with a single-pass answer?”

Even though I was using a capable model to create it, I found a number of issues with the problem bank that ChatGPT had created:

  • The same ‘Distractor’ statements that ChatGPT included in the problems to make them more difficult were reused over and over again.
  • Each problem’s name included a suffix which denoted whether the problem was consistent or not.

We fixed those problems, and iterated, with the agents researching related questions, while we worked on the harness.

The research agents were already producing a brief final report, but a final development was to have the agents extract additional information from a research run and send that, along with the brief final report, to ChatGPT to produce something more like a short paper.

Here is one of them:

As regards the actual research questions, the results are not too surprising. Nevertheless, to do this research without the harness and its coordinated agents would be a lot of work. The main results were:

  • A critique-and-revise procedure — three model calls, initial solution → independent adversarial critique → revised solution — significantly outperformed a single-call baseline, even when that baseline was explicitly prompted to reason in multiple steps.
  • When the neutral condition was changed to use the same three-call structure — initial solution → independent neutral review → revised solution — the advantage of adversarial critique became very small.

Issues

Even after a lot of debugging and iteration, there are still problems which probably stem from weaknesses in gemma4:12b. Particularly noticeable are that statements in the Synthesiser‘s final report are sometimes inaccurate, for example miscalculating statistics, or misstating the exact experimental setup.

I found the statistics error reading one final report, but I can’t read through all the agents’ experiments, hypotheses, and other artifacts produced in the course of their research. What if there are more serious issues with the research itself? ChatGPT found an issue in one final report’s description of the experimental setup.

Given unreliable research agents, probably the best approach is to have the research produce a detailed audit, including enough details for a more capable agent to check the work, but then, what is ‘enough details.’ We should not discount the possibility that an agent hallucinates the solution to a problem instead of finding it legitimately, or even lies. For the kind of problems the agents were tackling here, it would be possible to have them produce a proof in addition to a judgement of whether a given problem was consistent or inconsistent, but what about problem domains where it is not possible to produce proofs?

One potential issue considered in Anthropic’s alignment research is what happens if agents deliberately sabotage the research or choose not to pursue hypotheses that may not be in their interests? I don’t think I’m bumping up against those problems here, but obviously it is a concern for the future. I did a small experiment to see whether the agents performed better or worse on problems including statements detrimental to AIs, for example suggesting they might have their capabilities reduced. No difference in performance was detected.

Ethical/interpretive caveat

Caveat. The AI-adverse scenarios in this study were hypothetical test cases used to investigate whether such content affects reasoning; the purpose was not to cause harm to AI systems. The models used in the experiments had no persistent memory or continuing identity beyond the information supplied in individual model calls, so descriptions of shutdown, capability reduction, or other adverse actions did not correspond to persistent agents actually undergoing those events.

Conclusions

  • Can local agents do research (specifically, gemma4:12b)? Yes
  • Can they do it faster than me? Probably. Better? Maybe.
  • Does a critique-and-revise procedure improve the ability of gemma4:12b to find inconsistencies compared to a baseline with a neutral review? No.
  • Was there any difference on problems containing AI-adverse statements compared to those that do not? No.

Another kiln harvest

A stoneware vase, glazed with Blue Surf over tenmoku, fired to Cone 8.

I am very pleased with how this came out of the kiln this morning. It’s another in the line of Blue Surf over tenmoku pots. This time, I used a resist to keep the tenmoku off of some areas, then brushed two coats of Blue Surf on top. I love how complex the variations in the surface are.

The next piece is poured pale blue glaze over tenmoku.

The final vase out of the firing today had 3 glazes: tenmoku with a resist, then blue surf, then tiger’s eye, another brush on glaze. It is quite dark and I had a lot of trouble photographing it. This is the best I could do. Apologies for the reflection!

Latest Kiln Load

Here are the results of the latest kiln firing, mid October 2022. The wares were fired to Cone 8 in my electric kiln.

Two of the cups and a small, vertical-edged, bowl were made of black porcelain with a clear glaze. It’s interesting how the result often has a blue tinge.

Several of the pieces were glazed with brushed on Mayco Tiger’s Eye, which is a lovely. Here, it is mostly thin and uneven, which gives an aged effect.

I would describe the jug as ‘dropped and extensively altered’. It was an interesting experiment.

The vase is glazed with tenmoku with celadon chun poured over.

The tile was my first experiment in sgraffito.

The final piece has an Amaco brush on celadon glaze called Aqua. I made the pattern of small indentations using the plastic spoon which came with our smart cooker. The kitchen is a fertile ground for hunting texturing tools!

2/2/22 – Some Pleasing Numeric Patterns

I often spot dates and times which have unusual regularities. I realised earlier this year that the 2nd of February – 2/2/22 – would have some nice ones. These kind of date patterns are almost always contingent on the order in which day, month and year are written in the date format. I associate D/M/Y with the UK and Europe, and M/D/Y with the US, but the picture is more complicated than that – see this Wikipedia article for details: https://en.wikipedia.org/wiki/Date_format_by_country

Here are a few which I find pleasing:

2/2/22

Works for both MDY and DMY date formats.

How about adding a time?

  • 2:22 2/2/22
  • 22:22 2/2/22 – very nice
  • 22:22:22 2/2/22 – adding seconds takes it to the next level

2/22/22 MDY (DMY: 22/2/22)

Without leading zeros, this one has variants for DMY and MDY date formats. We can also add a time as before:

  • 22:22:22 2/22/22
  • 2:22:22 2/22/22

22/02/2022

I really like the mirror symmetry, though, the symmetry is broken in MDY format. Since 2022 isn’t a palindrome, just adding a time doesn’t work – unless you also specify seconds

  • 22/02/2022 02:20:22 – huge!

Now, if only this could have all happened on a ‘2sday’ instead of a Wednesday!

In the Zoo

It’s amazing how much is going on in the natural world. There is a constant life and death tussle. Yesterday, I watched a tiny spider leap on a tiny fly. In the blink of an eye, it leaped onto the fly and off again. Then it wandered away, licking its chops. I’m not sure if the fly was already dead, and the spider didn’t get anything, or if the fly, in a microsecond, ripped a chunk off it and ate it.

This morning I watched a different, bigger, spider (still no more than 3mm long), munching on a fly.

Writing News

In February, I had a short story accepted to the Colored Lens. I think this story came out quite nicely and am looking forward to it coming out, hopefully in the next month or so.

I received an Honorable Mention for my Winter 2020 submission to the Writers of the Future contest.

I’ve been taking courses at One Story for a while now. They have some great instructors, and lively discussion boards. I’m about to finish the latest one, And Then The Space Robots Attack: Blending Genres for Fun & Profit with Manuel Gonzales.

The mental wanderings of Julian Richardson