别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

在前面的几个Claude Code的实践例子我们看到:Claude Code是有状态的。

在一轮会话中,Claude Code会记录上下文信息,从而为后续的聊天提供了连续性,这很符合大部分的业务场景。

不过,Claude Code的有状态只是看起来有状态,它并没有在任何地方存储历史聊天记录,而是在payload里不断积累聊天记录,甚至为了避免payload超出大模型token的长度限制,它还会在必要的时候进行compact。它的看起来有状态是由于它的每一次调用都包含了历史聊天的内容。所以从底层的实现上看:它又是无状态的。

无状态的Claude Code有什么好处呢?除了我们前面的实践,它还有哪些奇妙的用法呢?

下面我们来作一个探讨。

1973年,Doug McIlroy在贝尔实验室提出了管道(pipe)概念。他用了一个绝妙的比喻:“我们需要某种方式把程序连接起来,就像花园里的水管——当需要以另一种方式处理数据时,只需拧上另一段管子。 熟悉Unix/Linux的同学都知道下面这张图的含金量:

别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

Unix/Linux管道的优雅体目前它的对工具的组合方式上。

想象一个处理日志文件的场景:你需要找出所有错误信息,统计每种错误出现的次数,并显示最常见的10种错误。

在Unix中,这个复杂任务可以通过管道符号(|)将五个简单工具串联完成:

cat log.txt | grep "error" | sort | uniq -c | head -10

上面这种做法超级绝妙。

由于每个工具都是无状态的:筛选工具不知道数据来自文件读取,排序工具不关心会被统计工具处理。 每个工具只做一件事,并把这件事做到极致。

这种设计带来了意想不到的威力——5个简单工具理论上可以产生120种不同的组合方式。

如果这些工具是有状态的、相互依赖的,它能这么灵活么,它能组合出这么多的场景和用法么?答案是不行!

这就是无状态设计的魔力: 通过放弃记忆,获得了无限的组合可能。

接下来就引出了我今天要讲的Claude Code的无状态的用法:那就是把它当作是Linux里的一个类似cat, grep, sort, head这样的无状态的AI工具。

当我们用这样的角度去思考的时候,就发现Claude Code可以帮我们实现Linux系统运维的AI化和智能化了。

让我们看下面的案例:

案例1:查找所有大于100M的文件

别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

案例2:本地化Linux命令的用法总结:

别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

案例3:生成提交记录

$ git diff | claude “生成git提交记录”

别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

案例4:k8s日志分析

$ kubectl logs dis-livy-db478cfd8-wq47r -n dis --tail=1000 | claude -p "分析错误缘由,中文回复"

别再把 Claude Code 当“高端 AI”!在 Linux 里,它和ls、grep 没区别

案例5:在bash里使用

if ! claude -p "$prompt" 2>error.log; then
    echo "发生错误:" >&2
    cat error.log >&2
    exit 1
fi

实则还有许多更实用的用法,这个就需要大家结合工作需要进行探索了。

我自己还用Linux bash脚本写了一个Claude Code和Claude Code对话并抬杠的例子 ,后面再分享给大家。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
峰回路转不善言辞的头像 - 宋马
评论 共8条

请登录后发表评论