Remix.run Logo
michalsustr 2 hours ago

As someone said: Custom lints are super useful.

What we do at https://minfx.ai (a Neptune/Wandb replacement) is we use TONS of custom lints. Anytime we see some undesireable repeatable agent behavior, we add it as a prompt modification and a lint. This is relatively easy to do in Rust. The kinds of things I did are:

- Specify maximum number of lines / tabs, otherwise code must be refactored.

- Do not use unsafe or RefCells.

- Do custom formatting, where all code looks the same: order by mods, uses, constants, structs/enums, impls, etc. In particular, I added topological ordering (DAG-ordering) of structs, so when I review code, I build up understanding of what the LLM actually did, which is faster than to read the intermediate outputs.

- Make sure there are no "depedency cycles": internal code does not use public re-exports, so whenever you click on definitions, you only go DEEPER in the code base or same file, you can't loop back.

- And more :-)

Generally I find that focusing on the code structure is super helpful for dev and for the LLM as well, it can find the relevant code to modify much faster.

actionfromafar 2 hours ago | parent [-]

What is DAG ordering of structs?

michalsustr an hour ago | parent | next [-]

Each struct and its referenced fields can be thought of as a graph which can be sorted. Ideally, it is a DAG, but sometimes you can have recursive structures so it can be a cyclic graph. By DAG-ordering a I meant a topological sorting such that you do it by layers of the graph.

https://en.wikipedia.org/wiki/Topological_sorting

https://en.wikipedia.org/wiki/Directed_acyclic_graph

tablatom an hour ago | parent | prev [-]

DAG is directed acyclic graph. A bit like a tree where branches are allowed to merge but there are no cycles.

actionfromafar an hour ago | parent [-]

Yes, but I was wondering how organize your code in a DAG.