9 ms·
It's interesting how much this makes you want to write Unix-style tools that do one thing and only one thing really well. Not just because it makes coding an a
by riskable 11mo ago
It's interesting how much this makes you want to write Unix-style tools that do one thing and only one thing really well. Not just because it makes coding an agent simpler, but because it's much more secure!
- chemotaxis 11mo agoYou could even imagine a world in which we create an entire suite of deterministic, limited-purpose tools and then expose it directly to humans!
- layer8 11mo agoI wonder if we could develop a language with well-defined semantics to interact with and wire up those tools.
- chubot 11mo ago> language with well-defined semantics That would certainly be nice! That's why we have been overhauling shell with https://oils.pub https://oils.pub , because shell can't be described as that right now It's in extremely poor shape e.g. some things found from building several thousand packages with OSH recently (decades of accumulated shell scripts) - bugs caused by the differing behavior of 'echo hi | read x; echo x=$x' in shells, i.e. shopt -s lastpipe in bash. - 'set -' is an archaic shortcut for 'set +v +x' - Almquist shell is technically a separate dialact of shell -- namely it supports 'chdir /tmp' as well as cd /tmp. So bash and other shells can't run any Alpine builds. I used to maintain this page, but there are so many problems with shell that I haven't kept up ... https://github.com/oils-for-unix/oils/wiki/Shell-WTFs https://github.com/oils-for-unix/oils/wiki/Shell-WTFs OSH is the most bash-compatible shell, and it's also now Almquist shell compatible: https://pages.oils.pub/spec-compat/2025-11-02/renamed-tmp/spec/compat/TOP.html https://pages.oils.pub/spec-compat/2025-11-02/renamed-tmp/sp... It's more POSIX-compatible than the default /bin/sh on Debian, which is dash The bigger issue is not just bugs, but lack of understanding among people who write foundational shell programs. e.g. the lastpipe issue, using () as grouping instead of {}, etc. --- It is often treated like an "unknowable" language Any reasonable person would use LLMs to write shell/bash, and I think that is a problem. You should be able to know the language, and read shell programs that others have written
- jacquesm 11mo agoI love it how you went from 'Shell-WTFs' to 'let's fix this'. Kudos, most people get stuck at the first stage.
- chubot 11mo agoThanks! We are down to 14 disagreements between OSH and busybox ash/bash on Alpine Linux main https://op.oils.pub/aports-build/published.html https://op.oils.pub/aports-build/published.html We also don't appear to be unreasonably far away from running ~~ "all shell scripts" Now the problem after that will be motivating authors of foundational shell programs to maintain compatibility ... if that's even possible. (Often the authors are gone, and the nominal maintainers don't know shell.) As I said, the state of affairs is pretty sorry and sad. Some of it I attribute to this phenomenon: https://news.ycombinator.com/item?id=17083976 https://news.ycombinator.com/item?id=17083976 Either way, YSH benefits from all this work
- zahlman 11mo agoAs it happens, I have a prototype for this, but the syntax is honestly rather unwieldy. Maybe there's a way to make it more like natural human language....
- imiric 11mo agoI can't tell whether any comment in this thread is a parody or not.
- zahlman 11mo ago(Mine was intended as ironic, suggesting that a circle of development ideas would eventually complete. I interpreted the previous comments as satirically pointing at the fact that the notion of "UNIX-like tools" owes to the fact that there is actually such a thing as UNIX.)
- AdieuToLogic 11mo agoWhen in doubt, there's always the option of rewriting an existing interactive shell in Rust.
- SatvikBeri 11mo agoHalf my use of LLM tools is just to remember the options for command line tools, including ones I wrote but only use every few months.
- utopiah 11mo agoHmmm but how would you name that? Agent skills? Meta cognition agentic tooling? Intelligence driven self improving partial building blocks? Oh... oh I know how about... UNIX Philosophy? No... no that'd never work. /s
- tptacek 11mo agoOne thing that radicalized me was building an agent that tested network connectivity for our fleet. Early on, in like 2021, I deployed a little mini-fleet of off-network DNS probes on, like, Vultr to check on our DNS routing, and actually devising metrics for them and making the data that stuff generated legible/operationalizable was annoying and error prone. But you can give basic Unix network tools --- ping, dig, traceroute --- to an agent and ask it for a clean, usable signal, and they'll do a reasonable job! They know all the flags and are generally better at interpreting tool output than I am. I'm not saying that the agent would do a better job than a good "hardcoded" human telemetry system, and we don't use agents for this stuff right now. But I do know that getting an agent across the 90% threshold of utility for a problem like this is much, much easier than building the good telemetry system is.
- foobarian 11mo agoHonestly the top AI use case for me right now is personal throwaway dev tools. Where I used to write shell oneliners with dozen pipes including greps and seds and jq and other stuff, now I get an AI to write me a node script and throw in a nice Web UI to boot. Edit: reflecting on what the lesson is here, in either case I suppose we're avoiding the pain of dealing with Unix CLI tools :-D
- jacquesm 11mo agoInteresting. You have to wonder if all the tools that is based on would have been written in the first place if that kind of thing had been possible all along. Who needs 'grep' when you can write a prompt?
- tptacek 11mo agoMy long running joke is that the actual good `jq` is just the LLM interface that generates `jq` queries; 'simonw actually went and built that.
- dannyobrien 11mo ago
- danpalmer 11mo agoDoing one thing well means you need a lot more tools to achieve outcomes, and more tools means more context and potentially more understanding of how to string them together. I suspect the sweet spot for LLMs is somewhere in the middle, not quite as small as some traditional unix tools.
- tinodb 11mo agoIndeed. I have a tiny wrapper around the llm cli that gives it 3 tools: read these docs for program X, read its config and search-replace in said config. I use it for adopting Ghostty for example. I can now ask it: “how do I switch between window panes?” Then: “change that shortcut to …”