<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CLI on Blog</title><link>https://b0weny-qwq.github.io/Blog/tags/cli/</link><description>Recent content in CLI on Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://b0weny-qwq.github.io/Blog/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>项目开始搭建的初衷</title><link>https://b0weny-qwq.github.io/Blog/p/project-agent-cli-origin/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://b0weny-qwq.github.io/Blog/p/project-agent-cli-origin/</guid><description>&lt;h1 id="项目开始搭建的初衷"&gt;项目开始搭建的初衷
&lt;/h1&gt;&lt;p&gt;这个项目一开始就不是为了再造一个传统意义上的“开发环境”。如果只是把一堆功能塞进 &lt;code&gt;GUI&lt;/code&gt;，再让人用鼠标点来点去，那还是旧时代的工作流：人围着工具转，工具把复杂性包装成按钮，再把大量重复劳动丢回给人。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;agent&lt;/code&gt; 发展这么快的现在，还继续把核心开发流程绑死在传统 &lt;code&gt;IDE&lt;/code&gt; 和图形界面里，我真的觉得有点太傻逼了。不是说 &lt;code&gt;GUI&lt;/code&gt; 没有价值，调试、观察、配置、可视化这些场景当然需要图形界面；但高频、可组合、可自动化、可复现的工程动作，就应该下沉到 &lt;code&gt;CLI&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;因为 &lt;code&gt;CLI&lt;/code&gt; 才是能被脚本调用、能被日志记录、能被流水线复现、也能被 &lt;code&gt;agent&lt;/code&gt; 理解和执行的接口。一个按钮点下去发生了什么，人都未必记得清楚；但一条命令、一组参数、一次输出，却可以被保存、复盘、组合，甚至交给智能体继续扩展。&lt;/p&gt;
&lt;p&gt;这也是我开始搭这个项目的原因：我不想再做一个只能服务于人的工具，而是想做一个人和 &lt;code&gt;agent&lt;/code&gt; 都能调用的工程系统。&lt;/p&gt;
&lt;h2 id="为什么不是传统-ide-思路"&gt;为什么不是传统 IDE 思路
&lt;/h2&gt;&lt;p&gt;传统 &lt;code&gt;IDE&lt;/code&gt; 的问题不在于它弱，而在于它把太多能力锁在界面里。很多时候，配置藏在窗口深处，构建藏在菜单后面，调试流程依赖某个工程文件，换一台机器就开始各种玄学报错。人在这种体系里做久了，会误以为“开发”就是打开软件、配置路径、点按钮、等结果。&lt;/p&gt;
&lt;p&gt;现代工程不应该这样。它应该像一套可描述的协议：初始化怎么做，依赖怎么检查，项目怎么生成，固件怎么构建，产物在哪里，失败原因怎么定位，下一步怎么恢复。这些动作都应该可以被明确表达，而不是依赖某个人记住某个软件里第几个选项该怎么点。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent&lt;/code&gt; 出现之后，这个问题被放大了。一个只能靠人肉点按钮推进的工程，对 &lt;code&gt;agent&lt;/code&gt; 来说几乎就是黑箱；一个由 &lt;code&gt;CLI&lt;/code&gt; 暴露能力的工程，才有机会被智能体接管、协作和扩展。&lt;/p&gt;
&lt;h2 id="写成-skill让-agent-真正会用"&gt;写成 skill，让 agent 真正会用
&lt;/h2&gt;&lt;p&gt;所以这个项目从一开始就应该围绕 &lt;code&gt;CLI&lt;/code&gt; 搭，而不是围绕界面搭。&lt;code&gt;CLI&lt;/code&gt; 是底座，文档是说明书，&lt;code&gt;skill&lt;/code&gt; 负责把经验、约束和操作流程封装给 &lt;code&gt;agent&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;普通文档是写给人看的，&lt;code&gt;skill&lt;/code&gt; 更像是写给智能体看的工程手册。它不只是告诉 &lt;code&gt;agent&lt;/code&gt; “这个项目能干什么”，还要告诉它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么时候应该使用这个工具；&lt;/li&gt;
&lt;li&gt;先检查哪些环境和依赖；&lt;/li&gt;
&lt;li&gt;常用命令是什么；&lt;/li&gt;
&lt;li&gt;出错时应该看哪些日志；&lt;/li&gt;
&lt;li&gt;哪些操作不能乱做；&lt;/li&gt;
&lt;li&gt;什么结果才算真的成功。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样一来，&lt;code&gt;agent&lt;/code&gt; 就不是在项目里盲人摸象，而是能按流程做事。人负责判断方向、定义边界、审查结果；&lt;code&gt;agent&lt;/code&gt; 负责执行重复流程、补全文档、检查环境、跑构建、定位错误。这个分工才符合现在的生产力水平。&lt;/p&gt;
&lt;h2 id="人该做更高层的事"&gt;人该做更高层的事
&lt;/h2&gt;&lt;p&gt;我越来越不想把时间浪费在那些低级重复劳动上。路径错了、依赖缺了、命令忘了、工程模板又要重新配一遍，这些事情做一次是学习，做十次就是惩罚。它们不应该继续占用人的主要精力。&lt;/p&gt;
&lt;p&gt;值得人做的，是判断项目应该抽象成什么结构，哪些流程必须稳定，哪些接口要暴露给机器，哪些经验应该沉淀成 &lt;code&gt;skill&lt;/code&gt;。人不该只是代码搬运工，而是工作流设计者。&lt;/p&gt;
&lt;p&gt;这也是我对这个项目的期待：它不是某个单点工具，而是一套面向未来工程协作方式的底座。它应该先服务 &lt;code&gt;CLI&lt;/code&gt;，再服务 &lt;code&gt;agent&lt;/code&gt;，最后反过来让人从大量重复流程里解放出来。&lt;/p&gt;
&lt;p&gt;以后开发一个项目，不应该再是“打开某个 &lt;code&gt;IDE&lt;/code&gt;，然后靠记忆点一堆按钮”。更合理的方式应该是：给出目标，让 &lt;code&gt;agent&lt;/code&gt; 调用 &lt;code&gt;skill&lt;/code&gt;，由 &lt;code&gt;CLI&lt;/code&gt; 执行确定的工程动作，最后把结果、日志和问题反馈回来。&lt;/p&gt;
&lt;p&gt;这是我想要的开发方式。&lt;/p&gt;
&lt;p&gt;不是人被工具驯化，而是工具被组织成系统；不是让 &lt;code&gt;agent&lt;/code&gt; 假装全能，而是把工程流程写到它真的能调用的位置。&lt;/p&gt;</description></item></channel></rss>