5 ms·
> changing a commonly used fn to take a locale parameter I have to ask, is this the sort of thing people use agents/AI for? Because I'd probably reach for sed
by SoftTalker 7mo ago
> changing a commonly used fn to take a locale parameter
I have to ask, is this the sort of thing people use agents/AI for?
Because I'd probably reach for sed or awk.
- jxf 7mo agoIt's not always amenable to grepping. But this is a great use case for AST searches, and is part of the reason that LSP tools should really be better integrated with agents.
- philipwhiuk 7mo agoAh yes, don't fix the agents, fix the tools. What a ridiculously backwards approach. We were supposed to get agents who could use human tooling. Instead we are apparently told to write interfaces for this stumbling expensive mess to use. Maybe, just maybe, if the human can know to, and use, the AST tool fine, the problem is not the tool but the agent.
- jxf 6mo agoIt's much harder to search using an AST tool for a human. It's certainly harder than grepping, for example. I use AST tools myself, but it takes a while to represent a complex structure in a big codebase when I need to look for that.
- skydhash 7mo agoProgramming language are formal, so unless you’re doing magic stuff (eval and reflection), you can probably grep into a file, eliminate false positive cases, then do a bit of awk or shell scripting with sed. Or use Vim or Emacs tooling.
- esafak 7mo agoAgents do use LSPs.
- PaulDavisThe1st 7mo agoWorks fine in algol-like languages (C, C++ for a start) by just changing the function prototype and finding all instances from the compiler errors, using your compiler as the AST explorer ...
- scottlamb 7mo agoIn general, yes, I might use an LLM for a tedious refactor. In this case I might try <https://github.com/ast-grep/ast-grep https://github.com/ast-grep/ast-grep> though.
- pavel_lishin 7mo agoI think about half the IDEs I've ever used just had this as a feature. Right-click on function, click on "change signature", wait a few seconds, verify with `git diff`.
- ep103 7mo agoyeah, and this has the advantage of both being deterministic, and only updating things that are actually linked as opposed to also accidentally updating naming collisions
- mrbnprck 7mo agoArguably its only a matter of making lsp features available to the coding agent via tool calls (CLI, MCP) to prevent the model start doing such changes "manually" but rather use the deterministic tools.
- paradox460 7mo agoPart of why I'm not terribly fond of CLI harnesses, and prefer ones built into editors like zed. They can (but sadly rarely do) access structured information about your codebase, that's more sophisticated than looking for all strings that match
- unshavedyak 7mo agoI actually still like LLMs for this. I use rust LSP (rust analyzer) and it supports this, but LLMs will additionally go through and reword all of the documentation, doc links, comments, var names in other funcs in one go, etc. Are they perfect? Far from it. But it's more comprehensive. Additionally simple refactors like this are insanely fast to review and so it's really easy to spot a bad change or etc. Plus i'm in Rust so it's typed very heavily. In a lot of scenarios i'd prefer an AST grep over an LSP rename, but hat also doesn't cover the docs/comments/etc.
- mikestorrent 7mo ago
- Arch485 7mo agoOr the "find all references" feature almost every code editor has...
- nextaccountic 7mo agoThe proper tool for this is ast-grep (sg) https://ast-grep.github.io/ https://ast-grep.github.io/ And an agent can learn to use sg with a skill too. (Or they can use sed) The issue is, at every point you do a replace, you need to verify if it was the right thing to do or if it was a false positive. If you are doing this manually, there's the time to craft the sed or sg query, then for each replacement you need to check it. If there are dozens, that's probably okay. If there are hundreds, it's less appealing to check them manually. (Then there's the issue of updating docs, and other things like this) People use agents because not only they don't want to write the initial sed script, they also don't want to verify at each place if it was correctly applied, and much less update docs. The root of this is laziness, but for decades we have hailed laziness as a virtue in programming.
- deleted 7mo ago[deleted]