Roboco-op notebook coding assistent

1. A difference is Claude Code and Observable Desktop do not have access to the runtime variables

Given
const myrandom = Math.random()

User: What is the value of Random?

Observable Desktop: Looking at the selected cell (id=11), I can see that myrandom displays the value that was generated by Math.random() in cell 10. However, I can’t see the actual runtime value from the code alone - Math.random()generates a different random number between 0 and 1 each time the cell runs.

The value of myrandom is whatever random number was generated when cell 10 executed, which would be a decimal number between 0 (inclusive) and 1 (exclusive). To see the current value, you’d need to look at the output of cell 11 in your notebook.
```

Robocoop-2: 0.4938541003720692

tom: Robocoop-2 uses the inspector to expand values up to a size limit SummarizeJS / Tom Larkworthy | Observable, so it sees what a user would when they click expand; under the observation you already put a lot of thought into how to represent Javascript values textually (which I later realized is somewhat like the Chrome debugging idioms).

  1. Robocoop-2 has access to imported module code.

Given:

import {samegroup} from "observable:@observablehq/plot-arc-diagram";
miserables

User: draw me an arc diagram of miserables links

Observable Desktop: (tom: the import doesn’t help)

Robocoop-2: (after adding plat-arc-diagram as an additional module, using gpt-5.2)

[link to experiment]( Robocoop Comparison / Tom Larkworthy | Observable )

Robocoop-2: (after adding plat-arc-diagram as an additional module, using gpt-5-mini)
tom: I did three tries. The first produced an SVG that was wrong. The second did the right plot. The third wrote non-observablejs code which when corrected (placing a JS script inside {} ) did the right thing). So GPT5.2 is definitely helping compared to a weaker model, but even gpt-mini can solve the task.

tom: Desktop cannot do the task because it doesn’t have the example in context. So to make things contextually fairer I pasted the arc-diagram example into Desktop. Given the example is already using the miserable dataset then question is already directly answered, yet the assistent chose the SVG method

So I change the prompt to explicitly do it using Plot

User: draw me an arc diagram of miserables links using Plot

Desktop:

tom: I have no idea why it is not using the answer it literally has spelled out on the top of the screen there. Its gone back to hallucinating arc

claude code (Opus 4.5):

tom: which lead to a good diagram, so Claude can leverage examples properly (but it can’t read runtime values because no notebook is executing).

So there are differences on what context is available and some difference based on the foundational model used. Claude code is amazing, its my main driver at work but I think there is alpha in having the LLM read runtime variables directly from the runtime which is the main reason I persist with Robocoop which I started in 2023. Robocoop-2 is a significant upgrade over the original because

  • it understands Observable syntax properly
  • its been through a prompt optimisation step (GEPA)
  • it has better default context (runtime values, websearch)
  • it has better optional context controls (additional dependancies, screenshots)

Each of those steps improved it a lot. Claude Code can be configured to do most of those things too with plugins, and it can do parallel tool calls and iterative workflows, but I like that Roboco-op lives in userspace with an MIT license and is naturally sandboxed by being in a webpage.