Every prompt is a flag in disguise
这句话精准地概括了 CLI 工具现代化的核心原则。交互式提示虽然对人类友好,但对自动化脚本和 AI Agent 构成了不可逾越的障碍。将其转化为 flag,不仅是为 Agent 开门,更是强迫开发者理清“必需信息”的边界,从而设计出更健壮的接口。
Every prompt is a flag in disguise
这句话精准地概括了 CLI 工具现代化的核心原则。交互式提示虽然对人类友好,但对自动化脚本和 AI Agent 构成了不可逾越的障碍。将其转化为 flag,不仅是为 Agent 开门,更是强迫开发者理清“必需信息”的边界,从而设计出更健壮的接口。
Every prompt is a flag in disguise
大多数开发者认为交互式提示是CLI工具的良好用户体验设计,但作者提出反直觉的观点:每个交互式提示都应该有对应的标志(flag)替代方案。这是因为AI代理无法处理交互式输入,而将所有提示转换为标志不仅支持代理,还使工具更加可编程和可测试。
Implicit state is the Enemy
大多数人认为CLI工具应该利用隐式状态(如当前工作目录)来简化用户操作。但作者认为,所有隐式假设都是AI代理的绊脚石,明确指定所有参数和路径不仅有利于代理,也让人类用户的脚本更加健壮和可预测。
Every prompt is a flag in disguise
大多数人认为交互式提示是CLI工具的最佳实践,因为它能引导用户完成复杂任务。但作者认为,每个交互式提示都应该有对应的命令行标志,因为这种设计让工具既能服务于人类用户,也能被AI代理自动化使用,而不需要额外的API层。
Example of person working with Obsidian and Claude Code. Note that it does not use the Obsidian CLI access, but its API.
Same author some months back mentioned running Claude Code on a small Hetzner VPS (but just Claude Code, no models) so he could access it from anywhere (except offline obviously).
Obsidian CLI documentation. This is useful in local agents. It can interact with Obsidian directly, meaning you don't have to go through the file system for things that are specific to Obsidian. Stored it locally for reference too.
The reason I think MCP may be a one-year wonder is the stratospheric growth of coding agents. It appears that the best possible tool for any situation is Bash—if your agent can run arbitrary shell commands, it can do anything that can be done by typing commands into a terminal. Since leaning heavily into Claude Code and friends myself I’ve hardly used MCP at all—I’ve found CLI tools like gh and libraries like Playwright to be better alternatives to the GitHub and Playwright MCPs.
Author thinks MCP may be a temporary phenomenon as a protocol, mostly bc cli tools like Claude code don't need it. The last sentence, that cli tools already exist that are better than the corresponding MCP servers for those tools, goes back to why vibecode/AI-the-things if there's perfectly good automation already around? I think that MCP may still be useful locally for personal tools though. It helps structure what you want your AI to do.
They also shipped Gemini CLI (their open source command-line coding agent, since forked by Qwen for Qwen Code), Jules (their asynchronous coding agent),
Gemini has a CLI version, that is open source Chinese Qwen forked it for Qwen Code Jules is a Google coding agent.
the trade-off: using an agent without the safety wheels feels like a completely different product. A big benefit of asynchronous coding agents like Claude Code for web and Codex Cloud is that they can run in YOLO mode by default, since there’s no personal computer to damage. I run in YOLO mode all the time, despite being deeply aware of the risks involved. It hasn’t burned me yet... ... and that’s the problem.
yolo mode, lol. If you do it, it feels like a very diff tool, and that is the lure / siren song.
As-of December 2nd Anthropic credit Claude Code with $1bn in run-rate revenue!
wow, $1bn revenue ClaudeCode, a CLI tool!
It helps that terminal commands with obscure syntax like sed and ffmpeg and bash itself are no longer a barrier to entry when an LLM can spit out the right command for you.
bc Claudecode abstracts away the usual commands needed on the CLI. Vgl [[In the BeginningWas the Command Line by Neal Stephenson]]
Claude Code and friends have conclusively demonstrated that developers will embrace LLMs on the command line, given powerful enough models and the right harness.
Claude Code is what led devs to embrace CLI more.
Maybe the terminal was just too weird and niche to ever become a mainstream tool for accessing LLMs?
Well yes, it is. I know many how think the cli is scary or using it is for hackers.
all the time thinking that it was weird that so few people were taking CLI access to models seriously—they felt like such a natural fit for Unix mechanisms like pipes.
unix pipes, where output of one process is input of another, and you can bring them together in one statement. natural fit for model use Akin to promptchaining combined w tasks etc.
Claude Code, cli tool
"ts-node": "dist/bin.js", 9+ "ts-script": "dist/script.js"
.allowUnknownOptions()
In order to fix #2554, I added a --script option to vite-node so it can be used in shebang! 🎊
As I understand it, vite-node would need two changes when running scripts this way: The -- separator shouldn't be required, and all args should be considered args of the calling script. The tsconfig.json for the script should be used.
Using vite-node with a shebang enables no-build workflows for utilities in monorepos, which can reduce complexity and improves DX.
#!/usr/bin/env vite-node --script
diskutil list
Server Control Utility (SRVCTL)
SRVCTL is a command-line interface that you can use to manage an Oracle RAC database from a single point. You can use SRVCTL to start and stop the database and instances and to delete or move instances and services. You can also use SRVCTL to manage configuration information, Oracle Real Application Clusters One Node (Oracle RAC One Node), Oracle Clusterware, and Oracle ASM.
Oracle DBCA
Oracle DBCA: The recommended utility for creating and initially configuring Oracle RAC, Oracle RAC One Node, and Oracle noncluster databases.
It looks like we are all in agreement that command line flags should be stateless
This seems a beautiful way to take advantage of the qualities of the different approaches.
It also acknowledges the heuristics of visual manipulation, which “hard-core” command-line enthusiasts sometimes dismiss or forget. Visual manipulation can be powerful in ways that CLIs just can’t allow. And vice-versa: the versatility, fine-grain control of lower-level / text-based interfaces make them easier to manipulate programmatically, or just literally (tweaking a numerical value directly or adding a custom attribute which would require more fastidious work in the GUI).
About tmux
Octavia Butler’s 1993 Parable of the Sower. The story follows a teenage girl seeking freedom from her deteriorating community in a future destabilized by climate change. Part of the reason it’s held up so well is that so many of Butler’s predictions have come true. But she wasn’t a fortune teller, she just did her homework.
.
运行CLI不需要任何特殊操作-无需任何参数即可启动它,即可处于交互模式下: $ redis-cli 127.0.0.1:6379> ping PONG
redis-cli
$ redis-cli -a myUnguessablePazzzzzword123 PING
redis-cli -a password PING
Ghost CLI
A command line interface for Ghost
From the command line, you can navigate through files and folders on your computer:
You can use helper commands to make navigation easier:
Second, that you see more and more laptops running things like i3 and dwm than back in 2010 -- and these tools haven't gotten any better in these ten years.
vim tools/plugins on the other hand have gotten supremely powerful & weird & awesome.
i actually really love this point. there's some semi-interesting things happening with Wayland desktops, some changes, but overall i think most Linux users have kind of subsisted in semi-stasis. and we don't need top down change, from our WMs, but we should be "growing-in" to our environments, getting better, and we i think the collaboration & exploration is still very sparse, few charts or maps or guides come out. the "here be dragons" edge has a lot of healthy exploration deep into it, but it's very lone territory, the charts rare & hard to understand, hard to follow. there's some radical elements of success & exploration, but there are so few enduring wayfinding systems, so little communalizing of exploration or growth.
as a more experienced user I know one can navigate much more quickly using a terminal than using the hunt and peck style of most file system GUIs
As an experienced user, this claim strikes me as false.
I often start in a graphical file manager (nothing special, Nautilus on my system, or any conventional file explorer elsewhere), then use "Open in Terminal" from the context menu, precisely because of how much more efficient desktop file browsers are for navigating directory hierarchies in comparison.
NB: use of a graphical file browser doesn't automatically preclude keyboard-based navigation.
Operating systems implement a command-line interface in a shell for interactive access to operating system functions or services.
Macvim is the only vim supported out of the box? What about the many of us who want to just use standard CLI vim?
It does this by creating links to specially crafted URLs using custom schemes (ie. "txmt", "subl", "mvim"). I prefer to use standard CLI vim in iTerm.
I have similar problem: want to use regular vim in tilix terminal
tabset makes life easier for iTerm2 users, enabling easy setting of tab and window titles, badges, and colors. If you have a lot of tabs/windows in operation simultaneously, tabset helps to visually distinguish them.
Beautiful and smart cheatsheets, for lots of tools and programming languages.
Very good guidelines, with several of them useful for any programming languages. Links to interesting node.js packages.
Setup and configure Manjaro in every detail using the CLI.
az disk revoke-access Revoke a resource's read access to a managed disk.
Here's why it's important to revoke access (rom Upload a VHD to Azure or copy a managed disk to another region - Azure PowerShell):
After the upload is complete, and you no longer need to write any more data to the disk, revoke the SAS. Revoking the SAS will change the state of the managed disk and allow you to attach the disk to a VM.
The best way to find branches I've recently used is to use the following command: git for-each-ref --sort=-committerdate refs/heads/
git for-each-ref --sort='-committerdate' --format='%(refname)%09%(committerdate)' refs/heads | sed -e 's-refs/heads/--'
Run nm-tool | grep \*. That should show just the line with the SSID you are connected to.