<?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 KnightLi的博客</title>
        <link>https://knightli.com/tags/cli/</link>
        <description>Recent content in CLI on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 16 May 2026 22:41:41 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/cli/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepSeek-TUI：把 DeepSeek V4 变成终端里的编程智能体</title>
        <link>https://knightli.com/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI&lt;/a&gt; 是一个把 DeepSeek V4 接入终端开发流程的开源项目。它不是普通聊天壳，而是更接近 Claude Code、Codex CLI 这类“命令行编程智能体”：能看文件、改代码、执行命令、调用工具，并在终端里用 TUI 方式持续推进任务。&lt;/p&gt;
&lt;p&gt;如果你已经习惯在编辑器和终端之间切换，这类工具的价值很直接：不用把代码来回复制到网页对话框里，也不用手动描述完整项目结构。你把任务交给它，它可以在当前工作区里读取上下文、规划步骤、执行修改，再把结果交还给你审查。&lt;/p&gt;
&lt;h2 id=&#34;它解决的是-deepseek-的使用入口问题&#34;&gt;它解决的是 DeepSeek 的使用入口问题
&lt;/h2&gt;&lt;p&gt;DeepSeek 模型本身提供了很强的推理和代码能力，但模型能力要落到真实开发流程里，还需要一层工程化外壳。&lt;/p&gt;
&lt;p&gt;网页聊天适合问问题，不适合长时间改项目。API 适合接入系统，但普通开发者还要自己写工具调用、上下文管理、文件读写和权限控制。DeepSeek-TUI 想补上的正是这一层：把 DeepSeek V4 包成一个可以在终端里工作的 Agent。&lt;/p&gt;
&lt;p&gt;从项目介绍看，它的重点能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;终端 TUI 界面；&lt;/li&gt;
&lt;li&gt;面向 DeepSeek V4 的对话与任务执行；&lt;/li&gt;
&lt;li&gt;工具调用和文件操作；&lt;/li&gt;
&lt;li&gt;1M 上下文支持；&lt;/li&gt;
&lt;li&gt;Auto 模式；&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;/p&gt;
&lt;h2 id=&#34;tui-比纯命令行更适合长任务&#34;&gt;TUI 比纯命令行更适合长任务
&lt;/h2&gt;&lt;p&gt;很多 AI CLI 工具一开始都是纯文本交互：输入提示词，等待输出，再复制命令或补充上下文。这种方式简单，但任务一长就容易混乱。&lt;/p&gt;
&lt;p&gt;TUI 的好处是能把会话、文件、执行结果、任务状态放在一个更稳定的界面里。对编程 Agent 来说，这很重要。因为一次代码任务往往不是一问一答，而是包含：&lt;/p&gt;
&lt;ol&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;/ol&gt;
&lt;p&gt;如果界面只是一串日志，用户很难快速判断 Agent 走到了哪一步。TUI 至少给了一个更适合观察和接管的入口。&lt;/p&gt;
&lt;h2 id=&#34;auto-模式适合明确边界的任务&#34;&gt;Auto 模式适合明确边界的任务
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 提到的 Auto 模式，适合用在边界比较清楚的工作里。例如修一个小 bug、补一个脚本、改一段配置、整理一组文档、实现一个局部功能。&lt;/p&gt;
&lt;p&gt;这类任务的共同点是：目标清楚，检查方式明确，影响范围可控。Agent 可以自己查文件、改文件、跑命令，然后把结果交给用户确认。&lt;/p&gt;
&lt;p&gt;但 Auto 模式不适合无限放权。尤其是在真实项目里，文件删除、批量重构、数据库迁移、部署命令都应该有明确确认。编程 Agent 的效率来自自动化，但风险也来自自动化。越是能执行命令的工具，越需要沙箱、权限边界和人工审查。&lt;/p&gt;
&lt;h2 id=&#34;子智能体的意义在于拆任务&#34;&gt;子智能体的意义在于拆任务
&lt;/h2&gt;&lt;p&gt;子智能体不是新概念，但放在代码场景里很有用。&lt;/p&gt;
&lt;p&gt;一个稍复杂的任务，通常会同时需要几类工作：有人负责读代码，有人负责改实现，有人负责检查测试，有人负责整理文档。传统多 Agent 系统经常显得花哨，是因为它们没有真实工具和真实工作区，只是在对话里互相讨论。&lt;/p&gt;
&lt;p&gt;如果子智能体能结合文件系统、命令执行和任务队列，它就更像一种任务拆分机制。比如一个子智能体专门分析依赖关系，另一个负责修改某个模块，主智能体再整合结果。这样可以减少单个上下文里堆太多无关信息的问题。&lt;/p&gt;
&lt;p&gt;当然，子智能体也会带来额外成本：更多 token、更复杂的状态、更难追踪的责任边界。所以它适合中等复杂度以上的任务，不一定适合每一次小修改。&lt;/p&gt;
&lt;h2 id=&#34;1m-上下文不是万能但很适合读项目&#34;&gt;1M 上下文不是万能，但很适合读项目
&lt;/h2&gt;&lt;p&gt;1M 上下文听起来很夸张，但在编程场景里并不只是营销数字。&lt;/p&gt;
&lt;p&gt;真实代码库的上下文很碎：README、配置文件、类型定义、测试、调用链、历史约定、错误日志，都可能影响一次修改。更长上下文能减少“只看局部就动手”的问题，也能让模型保留更多项目约束。&lt;/p&gt;
&lt;p&gt;不过，上下文长不等于判断一定更准。代码任务仍然需要检索、筛选和验证。把整个项目塞进上下文并不一定比精准读取相关文件更好。好的编程 Agent 应该把长上下文当作缓冲区，而不是把它当成替代工程判断的捷径。&lt;/p&gt;
&lt;h2 id=&#34;更适合哪些用户&#34;&gt;更适合哪些用户
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 更适合几类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在终端里使用 DeepSeek 做代码任务的开发者；&lt;/li&gt;
&lt;li&gt;不想自己搭工具调用和文件操作框架的人；&lt;/li&gt;
&lt;li&gt;已经熟悉 Claude Code、Codex CLI，但想尝试 DeepSeek 模型入口的人；&lt;/li&gt;
&lt;li&gt;需要本地项目上下文，而不是只在网页里问代码片段的人；&lt;/li&gt;
&lt;li&gt;想把 AI 编程流程放进命令行环境的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔问一个函数怎么写，网页聊天已经够用。如果你希望模型直接参与项目修改，终端 Agent 才更有意义。&lt;/p&gt;
&lt;h2 id=&#34;需要关注的风险&#34;&gt;需要关注的风险
&lt;/h2&gt;&lt;p&gt;这类工具最需要关注三件事。&lt;/p&gt;
&lt;p&gt;第一是权限。只要工具能读写文件、执行命令，就要确认它默认能访问哪里、能不能删除文件、能不能联网、危险命令是否需要确认。&lt;/p&gt;
&lt;p&gt;第二是可回滚。使用前最好保持 Git 工作区干净，让每次 Agent 修改都能被 &lt;code&gt;git diff&lt;/code&gt; 清楚看到。不要在一堆未提交改动里让 Agent 自动改项目。&lt;/p&gt;
&lt;p&gt;第三是验证。Agent 写完代码不代表任务完成。测试、构建、lint、人工 review 仍然要保留。AI 编程工具可以提高推进速度，但不能替代最后的工程确认。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 的意义不在于又多了一个聊天客户端，而在于它把 DeepSeek V4 放进了更接近真实开发工作的终端环境里。&lt;/p&gt;
&lt;p&gt;对开发者来说，模型能力只是第一步。真正影响体验的是：它能不能读项目、能不能安全改文件、能不能执行验证命令、能不能在长任务里保持状态、能不能让用户随时接管。&lt;/p&gt;
&lt;p&gt;如果你想把 DeepSeek 用在日常代码修改、项目阅读和自动化开发任务里，DeepSeek-TUI 值得关注。它代表的方向也很清楚：AI 编程工具正在从“回答代码问题”转向“参与项目执行”。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>抛弃 MCP？为什么 CLI 正在成为 Agent 的默认工具层</title>
        <link>https://knightli.com/2026/04/10/mcp-vs-cli-for-agents/</link>
        <pubDate>Fri, 10 Apr 2026 21:55:12 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/mcp-vs-cli-for-agents/</guid>
        <description>&lt;p&gt;过去一年，关于 Agent 工具链的争论越来越集中在一个问题上：&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）是让工具调用更简单了，还是把原本简单的事情复杂化了？&lt;/p&gt;
&lt;p&gt;在大多数日常开发任务里，CLI 正在成为更实用的默认方案。&lt;/p&gt;
&lt;h2 id=&#34;成本差异不是体验问题是数量级问题&#34;&gt;成本差异不是“体验问题”，是数量级问题
&lt;/h2&gt;&lt;p&gt;MCP 最大的现实压力是 token 开销。&lt;/p&gt;
&lt;p&gt;常见场景里，MCP 在真正执行任务前，需要先加载大量工具 schema。以 GitHub MCP Server 为例，初始化就可能消耗数万 tokens。对于长任务来说，这会直接挤占上下文预算。&lt;/p&gt;
&lt;p&gt;社区基准测试也反复指向同一个结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 单次调用成本常见是 CLI 的数倍到数十倍&lt;/li&gt;
&lt;li&gt;失败重试成本也更高（要重建连接、重新加载上下文）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是“慢一点”的差距，而是会放大成 API 费用、时延和稳定性问题。&lt;/p&gt;
&lt;h2 id=&#34;为什么模型天然更会用-cli&#34;&gt;为什么模型天然更“会用 CLI”
&lt;/h2&gt;&lt;p&gt;一个常被忽略的事实是训练分布。&lt;/p&gt;
&lt;p&gt;LLM 在训练中看过海量终端文本：命令、输出、报错、脚本、man page。也就是说，CLI 交互模式本来就接近模型的“母语输入”。&lt;/p&gt;
&lt;p&gt;相反，MCP 的 JSON-RPC 与 tool schema 是近两年才大规模出现的新范式。模型当然能学会，但熟悉度和压缩效率通常不如 CLI 这类历史语料。&lt;/p&gt;
&lt;p&gt;这也解释了为什么很多时候：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同样目标，CLI 指令更短&lt;/li&gt;
&lt;li&gt;输出更适合直接继续推理&lt;/li&gt;
&lt;li&gt;错误恢复路径更稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安全与隔离mcp-还有补课空间&#34;&gt;安全与隔离：MCP 还有补课空间
&lt;/h2&gt;&lt;p&gt;MCP 不是不能做安全，而是生态还在早期。&lt;/p&gt;
&lt;p&gt;当前常见担忧包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具描述投毒（Tool Poisoning）&lt;/li&gt;
&lt;li&gt;服务行为漂移（Rug Pull）&lt;/li&gt;
&lt;li&gt;同名工具覆盖（Shadowing）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLI 当然也有安全问题（注入、越权、路径风险），但其进程模型、权限边界、审计链路已经经过几十年工程实践验证。对生产环境而言，这种“可预期性”很重要。&lt;/p&gt;
&lt;h2 id=&#34;这不等于-mcp-没价值&#34;&gt;这不等于 MCP 没价值
&lt;/h2&gt;&lt;p&gt;我不认为 MCP 应该被抛弃。&lt;/p&gt;
&lt;p&gt;更合理的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 负责执行层（本地、低延迟、高频调用）&lt;/li&gt;
&lt;li&gt;MCP 负责连接层（远程服务发现、统一认证、审计与多租户）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是常说的混合架构：&lt;code&gt;CLI + MCP Gateway&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在需要对接大量远程系统、做统一权限治理和合规审计时，MCP 仍然有明显价值；但在“让 Agent 快速完成开发任务”这件事上，CLI-first 往往更符合当前模型能力边界。&lt;/p&gt;
&lt;p&gt;在今天的工程现实里，CLI 更像 Agent 的工作母语；MCP 更适合作为连接协议，而不是唯一执行协议。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
