标签 命令行工具 下的文章

GMI Cloud Inference Engine 是全球 AI 模型统一接入与在线使用的“高性能推理引擎平台”,底层搭载 H100/H200 芯片,集成全球近百个最前沿的大语言模型和视频生成模型,如 Gemini、Claude、Minimax、DeepSeek、GPT、Qwen、Kling 等,为 AI 开发者与企业提供速度更快、质量更高的模型服务。

欢迎来到!🎉🎉🎉

GMI Cloud Inference Engine AI 场景实践案例集【AI Coding 篇】之二。

**本期任务目标:**在 Windows 终端里,使用 Claude Code 命令行工具,连接 GMI Cloud Inference Engine 的 MiniMax 模型 API。

Claude Code 是 Anthropic 推出的命令行 AI 编程工具,基于 Claude 大模型,可在终端 / IDE 中用自然语言交互,深度理解代码库,支持跨文件编辑、Git 协作。其具有 agent 优势,与超大上下文+多文件编辑+终端原生+安全自主执行+顶级模型能力,在处理大型项目、复杂重构和企业级开发时展现出明显优势。

本文将以接入 Inference Engine 中的 MiniMax-M2 api 为例,详细讲解在 Claude Code 中接入 api 的过程。Token福利文末自行领取!!

MiniMax-M2 界面:

https://console.gmicloud.ai/playground/llm/minimax-m2/bbfb2cb...

01

准备工作

Get ready?

确保你已经掌握 AI Coding 基础知识,没有可看上一篇:

附上链接~

Kooty,公众号:GMI Cloud 黑板报小白友好教程!如何在 Cursor 接入 GMI Cloud 的 API

确保你的电脑已经安装了:

  • Python (为了运行 LiteLLM)
  • Node.js (为了运行 Claude Code)

02

接入步骤

API Connection Guide

步骤 1:安装必要工具

打开 PowerShell,依次运行以下命令:

1.安装 Claude Code 工具

npm install -g @anthropic-ai/claude-code

2.安装 LiteLLM(带代理功能)


# 注意加上引号,因为[proxy]是特殊字符 
pip install "litellm[proxy]"

如果不懂怎么安装,可以直接在 Cursor 聊天框输入(亲测 Gemini3 可以直接一步到位,模型不够好可能中途会报错):

https://docs.claude.com/en/docs/claude-code/overview参考这个文档,帮我安装claudecode

无论是通过哪种安装方式,Claude Code 在安装后都会引导你配置参数或者注册登录,如果你有账号可以按照引导往下走。如果没有、希望和笔者一样直接接入自己的(便宜的)api,可以登录到非得付费的那一步退出,然后继续步骤 2。

步骤 2:启动“翻译官” (LiteLLM)

我们需要启动一个本地服务,用来做连接我们的 api 和 Anthropic 之间的桥梁。在 PowerShell 中运行(替换为你自己的 API Key):


# 设置 Key (必须加引号)
$env:OPENAI_API_KEY = "你的MiniMax_API_Key"

# 启动服务
# --drop_params: 自动丢弃不兼容的参数,防止报错
litellm --model openai/MiniMaxAI/MiniMax-M2 --api_base https://api.gmi-serving.com/v1 --drop_params

✅ 成功标志:看到 Running on http://0.0.0.0:4000

⚠️ 注意:这个窗口不要关闭。步骤 3 打开一个新的 powershell 窗口。

步骤 3:配置 PowerShell 连接

现在我们要告诉 Claude 工具:“别去连官网了,来连我们本地的翻译官”。

1. 打开配置文件:

在新的 PowerShell 窗口中输入:

 notepad $PROFILE

2.粘贴以下代码:


   function minimax {
       & {
           # 1. 把目标地址指向本地 LiteLLM (端口 4000)
           $env:ANTHROPIC_BASE_URL = "http://localhost:4000"
           
           # 2. Key 随便填,因为真实的 Key 已经在 LiteLLM 那边配好了
           $env:ANTHROPIC_AUTH_TOKEN = "sk-placeholder"
           
           # 3. 模型名称要和 LiteLLM 启动时的匹配
           $env:ANTHROPIC_MODEL = "MiniMaxAI/MiniMax-M2"
           $env:ANTHROPIC_SMALL_FAST_MODEL = "MiniMaxAI/MiniMax-M2"
           
           # 4. 启动 Claude 工具
           if (Get-Command claude -ErrorAction SilentlyContinue) {
               claude @args
           } else {
               Write-Error "请先安装 claude-code: npm install -g @anthropic-ai/claude-code"
           }
       }
   }

步骤 4:开始使用

  1. 新建一个 PowerShell 窗口(确保配置生效)。
  2. 输入命令:

# 启动自设定的minimax程序 
minimax 
# 进行测试 
你好

🎉 看到回复即搞定! 现在你就在用 Anthropic 的顶级命令行体验,驱动着公司的 MiniMax 模型了。

大家可以对比输入“claude code”和“minimax”下的差别:

图片

步骤 5:将 LiteLLM 的启动简化(选做)

Cursor 聊天框输入:

帮我将LiteLLM的启动简化,生成一个一键启动脚本。

下次使用时,就只需两步:

  1. 点击该脚本
  2. 在另一个终端窗口中输入“minimax”

另外,如果想更方便,比如在桌面启动 LiteLLM,也可以将这个 .bat 的文件和 .yaml 的参数文件一起复制到目标位置。比如我将其复制到了桌面。

图片

图片

💡 常见报错

Q: 报错 ImportError: Missing dependency 'backoff'?

A: 你安装时少装了组件。请运行 pip install "litellm[proxy]"。

Q: 报错 UnsupportedParamsError: ... reasoning\_effort?

A: 启动 LiteLLM 时忘了加 --drop\_params 参数。

Q: 输入 minimax 提示找不到命令?

A: 修改完配置文件后,需要重启 PowerShell 窗口,或者运行 。 $PROFILE 刷新一下。

03

总结和拓展

Summary & Expansion

总结

1. 核心文件

图片

2. 完整的逻辑链路图

  • 准备层(启动网关)

运行 start\_minimax\_proxy.bat。

关键动作:它不仅加载了 yaml 配置,还通过 set OPENAI\_API\_KEY 把**通行证(Token)**交给了 LiteLLM 进程。

结果:本地 4000(或其他)端口开始监听。

  • 调用层(触发指令)

你输入 minimax。

关键动作:系统执行 ps1 脚本里的函数。

  • 重定向层(配置环境)

关键动作:ps1 脚本在内存里临时改了两个环境变量:

ANTHROPIC\_BASE\_URL:指路,让 Claude Code 走向本地端口。

ANTHROPIC\_MODEL:定名,告诉 Claude Code 要发出的“暗号”是什么。

结果:Claude Code 启动并按照这个路标发包。

  • 翻译层(中转适配)

关键动作:这是最复杂的一步。

收包:LiteLLM 收到 Claude Code 的 Anthropic 格式请求。

查表:它看一眼 yaml,发现 model\_name(暗号)对上了。

变身:它把请求拆开,去掉多余参数(drop\_params),重新包装成标准的 OpenAI 格式。

送达:最后,它带着 .bat 里的那个 Token,把请求发给供应商的 v1 接口。

拓展:思考题

如果不想用MiniMax了,想用Inference Engine平台的其他模型,该修改哪几个文件?

**正确答案:**以Deepseek为例

修改.ps1、修改yaml,将 minimax function 一样的格式复制一份、修改模型名称部分就可以啦!

图片

图片

在启动时则可在终端输入deepseek,同样能成功启动

图片

教程完毕!😍😍😍 快去试试吧~

如果你是最佳 linux 发行版 Windows+wsl 的忠实用户,也许会苦恼联动开发时,进入 wsl 环境指定目录需要手动输入路径的苦恼。

所以我写了这东西,使用一个自定义的命令进行转化。
一个把 win 文件路径自动转换成 wsl 路径的方法1

原理是创建一个新命令,专门用来接受 Windows 路径。
方法如下

  1. 编辑 base 配置

    nano ~/.bashrc
    
  2. 在最末尾粘贴

    # === WSL 路径快捷跳转小工具 === # 定义一个名为 cdn 的函数,也可以改成其他的 cdn() {
        if [ -z "$1" ]; then cd ~
            return fi local win_path="$1"
        win_path="${win_path%\'}"
        win_path="${win_path#\'}" local linux_path=$(wslpath -u "$win_path" 2>/dev/null)
        if [ -n "$linux_path" ] && [ -d "$linux_path" ]; then cd "$linux_path" else echo "错误: 路径无法识别或不存在: $win_path" cd "$win_path" 2>/dev/null
        fi
    }
    # === WSL 路径快捷跳转小工具 === 
  3. 生效配置

    source ~/.bashrc
    

之后,使用自定义命令 cdn 'C:\Windows' ,像是这样就可以自动转换 win 路径进入对应的目录。
注意带上单引号,否则反斜杠会被吃掉!


📌 转载信息
转载时间:
2026/1/20 10:19:04

让它不再专门在某个项目目录写代码。作为一个 shell 命令辅助工具运行,比如想不起来哪个复杂的 shell 命令的时候,随时 aish ,然后提问,aish 在你的允许下执行,然后退出....
https://github.com/chunhuitrue/aish

刚 vibe 出来,文档配置之类的还没加。

运行示例:
› 当前系统中有僵尸进程么?


• 我来检查系统中是否有僵尸进程。

• Ran ps aux '|' grep -w Z
└ ps: illegal argument: |
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
[-u]
[-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
lll 61467 6.3 0.2 411403520 65552 s002 S+ 8:58 下午 0:00.45 aish

• Ran ps aux
└ USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
lll 429 32.8 3.0 413283760 1020816 ?? S 8 126

✔ You approved aish to run ps axo 'stat,pid,ppid,command' this time

• Ran ps axo 'stat,pid,ppid,command'
└ STAT PID PPID COMMAND
Ss 1 0 /sbin/launchd
Ss 83 1 /usr/libexec/logd
Ss 106 1 /usr/libexec/watchdogd
… +621 lines
Ss 750 552 -zsh
S+ 9711 750 emacsclient -nw
Ss+ 837 552 -zsh
Ss+ 882 552 -zsh
─ Took 41s

• 是的,当前系统中有 5 个僵尸进程:

| PID | PPID | 状态 | 父进程 |
|-------|------|------|--------|
| 54918 | 290 | Z | clash-core-service |
| 73753 | 290 | Z | clash-core-service |
| 75525 | 290 | Z | clash-core-service |
| 85212 | 290 | Z | clash-core-service |
| 97475 | 290 | Z | clash-core-service |

这些僵尸进程都是 clash-core-service (位于 /Users/lch/.config/clash/service/clash-core-service )产生的。

说明:僵尸进程是已经执行完成但父进程没有正确 wait() 它们的进程。它们不占用内存或 CPU ,只保留一个进程表项。

建议:通常不需要手动清理。重启 clash-core-service 服务可以让这些僵尸进程被 init 进程接管并自动清理。如果你想让这些僵尸进程消失,可以重启 clash 服务。


› 如果要手动清理,应该如何作?


• 僵尸进程无法直接 kill ,因为它们已经执行完成。清理方法是让父进程正确地 wait() 它们,或者让 init 进程( PID 1 )接管后自动清理。

针对你的情况,有两种方法:

方法 1:杀死父进程(推荐)

kill 290

这会终止 clash-core-service ,僵尸进程会被 init 接管并自动清理。如果 clash 是通过服务管理器启动的,它可能会自动重启。

方法 2:优雅重启 clash 服务

如果你知道如何重启 clash 服务(比如通过 launchctl 或 systemctl ),可以用相应命令重启服务,这样更安全。

———

注意事项:

- 方法 1 会中断 clash 服务,如果你的网络依赖它,可能会短暂断网
- 如果你使用 launchd 管理 clash ,可以用 launchctl 重启,更优雅

你是想直接杀死进程,还是需要我帮你查看如何正确重启 clash 服务?

如果你跟我一样,同时在用 Claude Code, Cursor, Windsurf, Copilot 等好几个工具,肯定被这件事折磨过:

每改一次 Custom Instruction 或 Rule ,都要去四五个地方手动同步一遍。 只要漏掉一个,AI 的表现就打折扣。

我撸了个小工具 AI Global ,核心逻辑只有一句话:一个中心化配置,全平台指令同步。

🚀 核心功能:

一键分发:支持自动识别并同步 30+ 种 AI 工具(几乎涵盖目前市面所有主流工具)。

共享大脑:所有工具的指令自动合并到 global.md ,改一处,处处生效。

模块化资源:你可以沉淀一套自己的 .md 技能库、规则库,所有 AI 助手瞬间共享你的“武器库”。

极简且美观:全 256 色系着色的 CLI 输出,状态一目了然。

安全第一:自带备份逻辑,支持一键 unlink 无痕还原。

🛠️ 安装使用:

npm install -g ai-global

然后只需运行

ai-global

它会自动帮你把家里的活儿全干了。

GitHub:

https://github.com/nanxiaobei/ai-global

欢迎大家体验,有喜欢的工具没适配的,欢迎提 Issue 或 PR !

是什么?

开源版 Claude Cowor

Claude Cowor 目前只有 Max 用户才能使用

特性

  • 自主代理 - 像同事一样工作,而不只是聊天机器人
  • 任务规划 - 分析任务并制定执行计划
  • 进度更新 - 每一步都展示正在做什么
  • 安全可控 - 使用 OpenCode 内置的权限系统
  • 零依赖 - 只有一个 markdown 文件
  • 模型无关 - 使用你在 OpenCode 中配置的任何模型

前置要求

还没安装 OpenCode 的请移步:

安装

暂不支持 Windows,其他安装方式见官方文档
curl -fsSL https://raw.githubusercontent.com/Lucifer1H/open-cowork/main/install.sh | bash

使用示例

# 代码重构
/cowork 重构认证模块,提取验证逻辑

# 文件整理
/cowork 按功能重新组织 components 文件夹

# 生成文档
/cowork 分析代码库并生成完整的 API 文档

# Bug 调查
/cowork 找出登录间歇性失败的原因并修复

# 代码迁移
/cowork 将所有类组件转换为带 hooks 的函数式组件

PS: 本来昨天就发了,不知道是不是包含了小众软件链接,没有发出来,草稿里面也没了,今天重新发一下。


📌 转载信息
原作者: ageovb
转载时间: 2026/1/17 09:07:20

想让 AI 帮你自动清理电脑、分析股票或者发日报?你需要给它编写一个 Skill (技能)

其实写一个 Skill 并不难,它本质上就是一个配置文件加上一段代码

本文档将手把手教你如何创建一个标准的 Skill,并避开新手最容易踩的坑。

一、 YAML 头部元数据 (Frontmatter)

每个 Skill 的入口文件(通常叫 SKILL.md),由 “身份证” (YAML) 和 “躯干” (文件结构) 组成,最开头都必须有一段被三根短横线 --- 包裹的内容。

这叫做 YAML Frontmatter (头部元数据)

通俗地说,这就是给 AI 看的身份证。AI 通过它来知道这个技能叫什么、能干什么。

1. 一个标准的身份证长这样:

--- name: system-cleaner description: "清理电脑里的垃圾文件,释放C盘空间" tags: ["清理", "系统", "优化"]
version: 1.0.0 ---

2. 这里的每一行代表什么?

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

字段类型必填说明
nameString技能 ID。建议使用 kebab-case (小写短横线),如 git-helper。
descriptionString核心 Prompt。智能体依靠这句话来理解技能用途。建议包含具体动词(如 "清理"、“生成”)。
tagsArray关键词列表。用于模糊匹配和分类检索。
versionString版本号。遵循语义化版本 (Major.Minor.Patch)。

二、文件夹要怎么放?(目录结构)

写代码最怕乱。为了以后好维护,建议你按照下面的结构来整理文件。

这就好比把衣服、裤子和袜子分开放进不同的抽屉,找起来才快。

推荐的 “三抽屉” 结构:

my-skill/                  # 你的技能总文件夹
├── SKILL.md               # [身份证] 上面写的 YAML 就放这里
├── scripts/               # [工具箱] 所有的代码脚本放这里
│   ├── main.ps1           # 比如 PowerShell 脚本
│   └── utils.py           # 比如 Python 脚本
├── config/                # [设置] 配置文件放这里
│   └── settings.json      # 比如你想让用户设置“清理哪个盘”,就写在这里
└── data/                  # [仓库] 存放运行结果
    └── logs/              # 如果有日志,就生成在这里 

三、 代码实战 (The Code)

光有配置是不够的,Skill 的灵魂在于代码。

Skill 的本质是命令行工具 (CLI)。智能体通过命令行调用你的脚本,并读取打印的输出。

  1. 实战演练:编写 “Hello World” Skill

我们来编写一个简单的 Python 脚本,它接收一个名字参数,并输出问候语。

  1. 脚本代码 (scripts/main.py)

import argparse
import sys

# 1. 设置参数解析 (让脚本能听懂 AI 的指令) # AI 会以 `python main.py --name "LO"` 的方式调用
parser = argparse.ArgumentParser(description="Greeter Skill")
parser.add_argument("--name", type=str, required=True, help="要问候的名字")

# 2. 解析参数
args = parser.parse_args()

# 3. 执行逻辑 (这里可以写任何业务逻辑)
greeting = f"👋 你好,{args.name}!Skill 运行成功!" # 4. 输出结果 (这是 AI 唯一能看到的东西!) # 必须使用 print 输出。AI 会捕获 stdout 作为执行结果。 print(greeting)
  1. 进阶技巧:健壮性与反馈

  • 错误处理: AI 看不到报错弹窗。如果出错,必须打印错误信息并以非 0 状态码退出。
try:
    # 业务逻辑... except Exception as e:
    print(f"❌ 发生错误: {str(e)}")
    sys.exit(1) # 告诉 AI 任务失败 
  • 依赖管理:如果用了第三方库,请在根目录创建 requirements.txt
  1. 核心连接:配置与交互

你已经建了 config 文件夹,现在教你怎么用它。

2.1 读取外部配置 (Reading Config)

不要把参数写死在代码里!用 json 库读取 settings.json

import json
import os

# 动态找到 config 文件夹 (不管用户把 Skill 放在哪)
current_dir = os.path.dirname(os.path.abspath(__file__))
config_path = os.path.join(current_dir, "..", "config", "settings.json")

# 读取配置
with open(config_path, "r", encoding="utf-8") as f:
    config = json.load(f)

print(f"✅ 读取到配置: {config}")

2.2 与用户对话 (Interaction)

有时候需要问用户 “确定吗?”。

# 1. 打印问题 (AI 会展示给用户) print("❓ 确认执行操作吗?(y/n)")

# 2. 等待输入 (脚本会暂停)
user_input = input().strip().lower()

if user_input == 'y':
    print("🚀以此执行...")
else:
    print("🛑 操作取消")

四、 新手避坑指南 (千万别踩这些雷!)

YAML 这种格式虽然看起来简单,但它脾气很怪。很多新手写代码一次过,却在 YAML 上卡半天。

  1. 它是 “空格控”,严禁使用 Tab 键!

YAML 依靠缩进来分层级。

  • 雷区:千万不要用键盘左上角的 Tab 键来缩进!

  • 正确做法:老老实实按 空格键。一般按 2 下或 4 下空格。

  1. 冒号后面必须有空格

这是最容易被忽略的错误。

  • 错误写法:name:my-skill (冒号后面紧挨着字)

  • 正确写法:name: my-skill (冒号后面加了个空格)

  1. 还有什么要注意的?

  • 路径别写死 (No Absolute Paths):

    • 不要在代码里写 D:\我的项目\scripts 这种绝对路径。别人的电脑可能只有 C 盘。

      • 建议:使用 “相对路径”。也就是告诉程序 “就在当前文件夹的下一级找”。
  • 幂等性 (Idempotency):

    • 脚本应支持重复运行。比如创建文件夹前,先检查它是否已经存在。
  • 自测 (Self-Test):

    • 在提交给 AI 之前,先自己在终端里跑一遍命令:python scripts/main.py --name "Test",确保没有报错。

总结

写 Skill 其实就三句话:

  1. 写好 YAML 身份证,注意冒号后要空格

  2. 把代码和配置分开放,保持目录整洁

  3. 代码里多打印进度提示,方便 AI 理解


📌 转载信息
原作者:
Y_yuHou
转载时间:
2026/1/16 16:50:03

我把 swarm 端口改成 4002 是因为 Planet 抢占了 4001 端口。


这脚本大概这么干活:

  1. 先瞅一眼:看看 Docker 装了没,别忙活半天白干。再检查一下有没有叫 ipfs_host 的老容器赖着不走,有的话就报错开溜,坚决不给自己留烂摊子。
  2. 搭俩小窝:在当前目录下建 ipfs_stagingipfs_data 两个文件夹,给 IPFS 的数据找个地方住。
  3. 门户大开(但换了号):因为 4001 被占了,咱就让 swarm 走 4002。API 端口是 8080,网关端口是 5001,按你的习惯随便改。
  4. 拉起来跑:用最新的 ipfs/kubo 镜像把容器跑起来,把刚才设的端口和文件夹都挂载好。
  5. 直接开门迎客:跑起来没问题的话,自动帮你打开浏览器,跳到 http://localhost:5001/webui 这个管理页面。接下来传点猫图试试手呗。


怎么用?

简单到不行:

复制
# 1. 给脚本加个执行权限
chmod +x deployment.sh

# 2. 运行它
./deployment.sh

脚本跑完没报错,你的浏览器就会蹦出 IPFS 的 Web 界面了。


脚本在这儿 (deployment.sh)

复制
#!/bin/bash

# 检查 Docker 是否安装
if ! [ -x "$(command -v docker)" ]; then
  echo 'Error: Docker is not installed.' >&2
  exit 1
fi
echo 'Docker is installed.'

# 检查是否有正在运行的 IPFS 容器
if [ "$(docker ps -q -f name=ipfs_host)" ]; then
  echo 'Error: An IPFS container is already running.' >&2
  exit 1
fi
echo 'No running IPFS container found.'

# 检查是否有同名的停止状态的 IPFS 容器
if [ "$(docker ps -aq -f status=exited -f name=ipfs_host)" ]; then
  echo 'Error: A stopped IPFS container with the same name already exists.' >&2
  exit 1
fi
echo 'No stopped IPFS container with the same name found.'

echo 'Proceeding with deployment...'
# 创建存储目录
current_dir=$(pwd)
cd $current_dir
mkdir -p ./ipfs_staging
mkdir -p ./ipfs_data

echo 'Storage directories created.'

# 设置环境变量
export ipfs_staging=./ipfs_staging
export ipfs_data=./ipfs_data
export ipfs_swarm_port=4002
export ipfs_api_port=8080
export ipfs_gateway_port=5001

echo "IPFS staging directory: ${ipfs_staging}"
echo "IPFS data directory: ${ipfs_data}"
echo "IPFS swarm port: ${ipfs_swarm_port}"
echo "IPFS API port: ${ipfs_api_port}"
echo "IPFS gateway port: ${ipfs_gateway_port}"

# 运行 IPFS 容器
docker run -d --name ipfs_host -v ${ipfs_staging}:/export -v ${ipfs_data}:/data/ipfs -p ${ipfs_swarm_port}:4001 -p ${ipfs_api_port}:8080 -p ${ipfs_gateway_port}:5001 ipfs/kubo:latest
if [ $? -ne 0 ]; then
  docker rm -f ipfs_host 2>/dev/null
  rm -rf ./ipfs_staging
  rm -rf ./ipfs_data
  echo 'Error: Failed to start the IPFS container.' >&2
  exit 1
fi
echo 'IPFS container started successfully.'

open "http://localhost:${ipfs_gateway_port}/webui"


说实话, AI 润色的确实不咋地 😂

分享下 window10 的包管理工具 winget ,类似 apt、brew

# 关键字搜索
winget find 输入法
# ID 安装,可以多个
winget install Tencent.WeType astral-sh.uv
# 检查更新
winget update
# 更新,可以多个
winget update Tencent.WeType astral-sh.uv
# 本地列表
winget list [可选关键字]
# 查看软件信息
winget show Tencent.WeType

注意默认会安装在系统盘

部分软件的小版本可能不是最新,取决于软件官方更新的速度吧

最好有魔法,部分电脑不知道为什么没有魔法不行,但我有的电脑却可以

最大的好处就是:不用到处找安装包了

我一般的小软件都优先在 winget 搜索安装

如:uv git volta 等工具

不想安装到系统盘的,也可以通过 winget 查找下载连接,手动安装到其他盘


📌 转载信息
原作者:
zhedream
转载时间:
2026/1/14 18:12:47

系统中存在多个 Claude Code 安装位置,PATH 环境变量包含了多个 npm 全局安装路径,例如:

  1. 新版本位置C:\Users\[用户名]\.npm-global (v2.1.7)
  2. 旧版本位置H:\Environment\nodejs\node_global (v2.0.25)

由于 PATH 环境变量的查找顺序问题,系统在不同目录下会找到不同版本的 claude.cmd

解决方案

方案 1:调整 PATH 环境变量顺序(推荐)

优点:无需删除文件,安全简单

步骤

  1. Win + R,输入 sysdm.cpl,回车
  2. 点击 "高级" 选项卡 → “环境变量”
  3. 在 "用户变量" 部分找到 Path,双击编辑
  4. 找到新版本路径(如 C:\Users\[用户名]\.npm-global
  5. 选中该路径,点击 "上移" 按钮,将其移到旧版本路径之前
  6. 点击 "确定" 保存所有设置
  7. 重启所有命令提示符窗口
  8. 验证:claude --version

方案 2:卸载旧版本

优点:彻底清理,避免混淆

步骤

# 从旧版本安装位置卸载
npm uninstall -g @anthropic-ai/claude-code --prefix="H:\Environment\nodejs\node_global"

# 验证
claude --version

注意:如果遇到权限问题,需要:

  • 关闭所有可能占用文件的程序(VSCode、IDE、终端等)
  • 以管理员身份运行命令提示符
  • 或手动删除目录:H:\Environment\nodejs\node_global\node_modules\@anthropic-ai\claude-code

📌 转载信息
原作者:
mapple
转载时间:
2026/1/14 10:23:48

背景

你是不是也有这种痛苦:
每天在 PowerShell + 各种编辑器的 Terminal 里库库手打命令,输错一个字母就重来;
想找上一条命令只能疯狂按 ↑ ↓;
更离谱的是 —— 还没有自动补全,每条命令都得从头敲!

如果你也被这些折磨过 —— 恭喜你,今天这个工具能让你直接起飞:
装上它,PowerShell + 各种编辑器的 Terminal 的命令提示 / 补全体验立刻提升一大截,常见命令、参数、历史记录都能更顺手地调用。
一条命令安装,立刻告别重复手打!

工具

重磅推荐 PSReadLine (大家不会认为是我自己写的工具吧)

PSReadLinePowerShell 里用来 “增强命令行交互体验” 的组件(模块)。你可以把它理解成:给 PowerShell 的输入框加上更聪明的编辑器能力。

PSReadLine 支持:

  • 历史与搜索:支持 Ctrl + R 反向搜索历史命令,也能做 “按前缀翻历史”(输入 git 再按 ↑ 只找以 git 开头的历史)。
  • 智能补全 / 预测:根据你的历史记录(以及配置)在你输入时给出建议,减少重复敲命令。
  • 更好用的编辑体验:更顺手的光标移动、选中、剪切 / 复制、撤销等快捷键,输入长命令不再痛苦。
  • 可自定义键位和行为:你可以把常用操作绑定到自己习惯的按键上,甚至把补全、历史搜索的逻辑改成你想要的样子。

大家是不是已经等不及要安装了,安装非常简单,在 powellshell 中执行一行命令即可安装

Install-Module PSReadLine -Force

弹窗提示直接回车,等待安装完成。

提示:需要打开新的 shell 命令才会起作用哈。

展示效果

附录

VS Code 里把默认命令行设为 PowerShell

  1. Ctrl + Shift + P
  2. 输入并选择:Terminal: Select Default Profile
  3. PowerShell(一般会显示 PowerShellWindows PowerShell

📌 转载信息
原作者:
wangguodong
转载时间:
2026/1/14 10:22:05

为什么命令行越来越具有代理式功能

传统上,终端或 shell 是一种命令式工具,依赖于像lsgrepgit这样的预定义命令来执行特定指令。

 

然而,像Gemini CLIClaude CodeAutoGPT这样的代理性命令行工具的最新进展已经将这个简单的实用程序转变为一个更动态和智能的助手。

 

这些代理式 CLI 工具允许用户用自然语言描述更高级的目标或任务,从而使简陋的 shell 栩栩如生。

 

它们可以规划步骤,利用各种工具完成不同任务(例如文件处理、代码执行和网络搜索),对输出进行推理,并充当辅助驾驶以帮助完成任务。

 

这显著减少了用户的心智负担,并最大限度地减少了多个工具之间的上下文切换。至关重要的是,用户通过批准或指导智能体的过程来保持控制权,确保自动化和用户监督之间的平衡。

 

在本文中,我们将探讨这些代理式工具的架构,对比不同的规划风格,如 ReAct 和计划-执行。

 

我们还将检查代理式工作流程的实际生命周期,从意图捕获到执行,并讨论可靠日常使用所需的关键安全护栏。

 

端到端代理式终端生命周期:一个提示,三个智能体

虽然人工智能在开发中的兴起通常与聊天界面(如 ChatGPT)和代理式 IDE(如Cursor)有关,但代理式 CLI 占据了一个独特的利基市场。基于 IDE 的智能体擅长于以丰富的视觉上下文为中心的代码任务,但它们通常局限于编辑器的窗口。

 

CLI 满足了开发人员管理基础设施和 git 工作流的需求:shell。这种无头的、可组合的特性允许它以 GUI 绑定代理无法做到的方式将工具和系统命令链接起来。然而,请注意,随着像 Gemini CLI 这样的智能体现在可以与 IDE(如 VSCode)集成以提供其建议的差异视图,这种区别正在变得模糊。

 

为了详细说明代理式终端工具的强大功能,让我们讨论一个运行示例。

 

这些标记文件封装了关于如何构建和测试 repo 的事实,以及文档和脚本的约定。他们基本上是代理的入职文件。例如,Gemini CLI 的文件名为“Gemini.md”。Claude Code 工具也使用了类似的约定。

 

考虑一个常见场景,开发人员需要用标准文档和自动化脚本启动一个新的存储库。与其手动创建每个文件并编写样板代码,代理式 CLI 可以从单个高级指令处理整个过程,从而确保一致性并节省宝贵的时间。

 

输入提示:

添加一个 CONTRIBUTING.md,一个 PULL_REQUEST_TEMPLATE.md,以及一个 scripts/smoke-check.sh,运行一个可配置的命令并在失败时退出非零;更新 README 以记录两者,并打开一个 PR。

 

清单 1:用户提示代码片段

 

为了理解这个指令是如何转化为行动的,我们将把代理式的工作流程分解为它的组成阶段。我们从意图捕获开始,其中智能体在项目的特定上下文中定位自己,然后转移到规划风格,对比不同模型架构其推理的方式。后续部分将详细说明执行实际工作的 Tool Execution 循环和防止自主事故的关键安全防护措施。最后,我们将看看结果如何呈现给用户,说明在不同的品牌名称下,大多数代理式工具共享一个共同的架构 DNA。

 

阶段 1:意图捕获和上下文形成

为了确保 LLM 的高质量提示,智能体首先收集所有必要的信息,然后进行规划或执行。这种方法包括几个步骤:将任务链接到当前工作目录,管理会话状态,并将每个项目的配置保存在 dotfolders(例如,./.gemini 和./.claude)。这种方法消除了重复使用标志进行重复任务的需要。

 

此外,指令还隐式地从各种位置获取。以下是 CLI 智能体除了用户的提示之外,从哪些主要信号源获取的一些:

 

特定于文件夹的上下文文件

这些是封装了有关你的存储库如何构建和测试以及你的文档和脚本约定的事实的 markdown 文件。它们本质上充当你智能体的入门文档。例如,Gemini CLI 的文件称为Gemini.md。Claude Code 工具也使用了类似的约定。

 

这是一个高性能的SaaS后端。* **核心原则:** 可读性优于聪明度。显式优于隐式。* **架构:** 六边形架构(端口和适配器)。* **安全性:** 零信任安全模型。所有输入必须通过Pydantic进行验证。* **语言:** Python 3.11+(需要严格类型)。* **框架:** FastAPI(异步默认)。* **数据库:** PostgreSQL(通过SQLAlchemy 2.0异步会话)。* **测试:** Pytest(覆盖率必须保持>90%)。
复制代码

 

清单 2:Gemini.md 示例

 

技能

早期智能体的一个主要限制是需要将所有指令塞进上下文窗口。Anthropic 的 Claude Code 引入了Skills的概念,它建立在上述 markdown 文件的想法之上,作为专业知识的模块化包(例如,PDF 操作、数据分析和 React 最佳实践),作为包含SKILL.md的文件夹存在。

 

这种包含使得渐进式披露成为可能:智能体最初只看到可用技能的名称/描述(消耗最少的词元)。然后,只有在用户的任务需要时,它才动态安装或读取完整的SKILL.md指令集。这种方法允许将智能体默认成为通才,但在需要时是专家。

 

代码库信号

CLI 可以扫描现有的scripts/.github/,并拾取像README.md这样的文件工件,如果你已经提供了这些文件。基于像 Python 这样的语言的典型约定,它还可以查看像pyproject.toml这样的工件以获得高级概览。

IDE 焦点

这是一个可选步骤,如果你连接到像 VSCode 或 Cursor 这样的代码编辑器,可以用来打开文件和选择。

 

阶段 2:规划风格

加载上下文后,每个工具开始其控制循环:

 

  • Gemini(ReAct风格)思考,调用工具,观察并重复,这非常适合发现缺失的文件夹或策略。这种迭代方法允许 Gemini 适应新信息并动态调整其策略,使其适用于需要灵活解决问题和探索的任务。

  • Claude(计划和执行)提出一个你可以批准的清单,然后逐步执行计划,并带有策略钩子。这种方法提供了更高程度的控制和透明度,因为用户可以在执行前审查和修改计划,确保遵守特定的策略或偏好。

  • Auto-GPT 发出思考加上每个周期运行器执行的 JSON 命令。这种结构化输出便于自动化和与其他系统集成,因为 JSON 格式提供了智能体意图和行动的清晰且机器可读的表示。

 

以下示例说明了不同智能体如何处理这个规划阶段。Claude 提供了一个人类可读的清单供用户审批,而 Auto-GPT 生成了专为自动执行而设计的 JSON 输出。

 

Claude——计划预览

计划:创建脚本/smoke-check.sh (POSIX sh;从env读取CMD;失败时退出非零)创建CONTRIBUTING.md(如何在本地进行冒烟检查)创建.github/PULL_REQUEST_TEMPLATE.md(检查清单包括冒烟检查)更新README.md,添加scripts/和PR模板说明运行冒烟检查运行smoke-check;提交;打开PR批准吗?[是/否]
复制代码

 

清单 3:Claude 计划审查代码示例

 

Auto-GPT——带有思考和命令的显式 JSON

“thoughts”: {"text“: ”创建冒烟检查,文档,模板;更新README;运行脚本;提交/PR”},"command":{"name":"write_file","args":{"path":"scripts/smoke-check.sh","content":"#!/bin/sh\n: \"${CMD:=echo ok}\" \n$CMD || { echo \"smoke failed\" >&2; exit 1; }\necho \"ok\""}}}
复制代码

 

清单 4:Auto-GPT 审查代码示例

 

阶段 3:工具调用

在此阶段,智能体使用其库中的工具根据其任务提出更改建议。例如,这可能涉及使用文件编辑工具在 IDE 中显示差异。

 

工具已经从专有实现发展为开放标准:模型上下文协议(Model Context Protocol,MCP)。在 Anthropic、谷歌和其他组织的支持下,MCP 就像 AI 应用程序的 USB-C 端口。而不是硬编码集成每个数据库或 API,(例如,用于 PostgreSQL、Slack 或 GitHub 的服务)。CLI 智能体在启动时自动发现这些资源,允许单个智能体在一个无缝的工作流程中查询你的生产数据库,阅读你的线性票证,并编辑代码。

 

示例冒烟脚本的 Diff

*** scripts/smoke-check.sh ++set -eu +# CMD可以被覆盖:CMD="make test" ./scripts/smoke-check.sh +: "${CMD:=printf ok}" +$CMD >/dev/null 2>&1 || { echo "smoke failed" >&2; exit 1; } +echo "ok"
复制代码

 

清单 5:冒烟脚本 diff 示例

 

Claude 的钩子是一种明确策略的干净方式——限制写入路径、自动 chmod 脚本、在写入后运行 lint/tests——而不需要将其塞入提示中。Gemini 通过扩展和 MCP 获得类似的杠杆作用:不同的旋钮,类似的结果。

 

阶段 4:人为干预的安全和护栏

你保留了对冒险行为的控制。Gemini 在执行写入或具有副作用的 shell 命令之前需要你的批准。Claude 提供了确认和钩子,允许你阻止违反策略的写操作,或者在继续之前自动运行检查。Auto-GPT 暂停是/否确认,除非启用连续模式。为了进行探索,激活一个容器化的沙箱来隔离文件系统和进程。

 

阶段 5:执行和迭代:真正完成工作的循环

创建文件后,智能体执行脚本并根据结果进行调整。例如,如果缺少scripts目录,Gemini 将创建它并再次尝试操作。如果脚本缺乏可执行权限,Claude 的集成钩子会自动应用chmod +x命令。

 

脚本在观察、推理和操作的连续循环中执行。这个循环不断重复,直到本地执行成功并完成文档。

 

阶段 6:渲染结果和停止条件

CLI 提供了一个清晰的、语法高亮显示的工具调用和文件差异视图。用户可以在编辑器中打开这些差异,手动进行调整,或者指示智能体进行适当的更改。批量批准是最有效的,例如在单个批准之前一起审查所有脚本和文档。

 

在一次成功的冒烟检查之后,通过批准的差异,智能体将创建一个新的分支,提交更改,并打开一个 PR 草案。

 

如何在你的工作流程中利用代理式 CLI

以下是一些实用技巧,帮助你在工作流程中充分利用这些工具:

 

  • 将上下文文件视为构建资产

 

将 GEMINI.md 和 CLAUDE.md 文件与你的 README 文件一起维护。这些文件应该简洁且专注于特定细节,包括构建和测试程序、配置位置、任何特定于存储库的问题以及安全编辑的目录。你甚至可以使用智能体生成初始草稿。将这些文件视为为代理式编程环境的方式,而不是另一个需要持续监督的提示。

 

  • 积极地限定范围

 

将智能体指向实际重要的文件夹(例如 services/payments/,而不是整个单体仓库)并传递明确的 @file 提示以指向热点。更紧凑的范围意味着更紧凑的差异,更少的创造性幻觉和更快的迭代。如果任务确实跨越多个包,请在提示中列举它们,以防止智能体进行详尽的扫描。

 

  • 使用沙箱避免对环境的意外更改

 

Gemini CLI 提供了一个沙箱模式,用于 shell/file 工具的临时、容器化执行。这保护了你的主机系统,限制对挂载的工作目录的写入,并控制网络访问。它非常适合无风险的探索,但不会消除对破坏性命令的审批提示,不能编辑已安装的秘密,也不能防止模型建议有风险的操作。你仍然是最终的仲裁者。

 

Claude Code 通常在容器化开发环境(Dev Container/Docker)中运行,或使用插件/钩子将 shell/file 操作通过容器化运行器路由。这提供了类似的隔离(写入限制在挂载路径,控制环境,确定性工具链)。然而,这种隔离并不具有回溯性;如果允许,它不会阻止对挂载的秘密或暴露路径的意外写入。使用钩子来强制执行路径限制,并在写入最终确定之前自动运行测试/lint。

 

Auto-GPT 没有专门的沙箱模式标志,但强烈建议在 Docker 容器中运行它。这确保了其文件系统操作与你的主机操作系统隔离,防止对你主要环境的任何意外更改。

 

  • 使用符合你需求的工具

 

Gemini CLI 非常适合深入集成到谷歌生态系统中的用户。它作为一个通用工具,擅长于发现繁重的任务,包括代码编辑、文档更新、小的 shell 操作(如列出目录和移动文件)、快速网络研究以及探索性的解决问题。它的 ReAct 循环促进了自然的探索和迭代工作。

 

Claude Code 最适合需要具体计划和强大编码能力的任务。这包括多文件重构、通过钩子执行策略、Git 原生工作流程(分支、变基、冲突解决)和透明的护栏。

 

GitHub Copilot CLI旨在为快速、存储库感知的自然语言到 shell 辅助提供支持。它非常适合生成一次性命令、搭建测试、搜索代码以及起草提交和拉取请求,所有这些都不会破坏现有的 GitHub 工作流程。

 

其他工具包括AiderOpen Interpreter和本地优先 CLI。当你需要对实现有更大的控制权,并且有高度特定的需求,如紧密的 Git 人机工程学、本地 LLM 或不受限制的 shell 环境时,可以考虑这些选项。这些工具对于喜欢较少护栏和更快修改工具本身的经验丰富的用户来说非常有用,特别是对于较小的存储库。

 

  • 像工程师一样提示,不要写论文

 

好的提示主要是关于清晰的合同,而不是华丽的散文。使用包含以下详细信息的四部分提示。从一个高层次的目标开始,用一句话陈述你的意图。

 

定义约束,包括范围(例如,“仅 services/billing”)、风格(“POSIX sh; no bashisms”)和安全协议(“写入前询问”)。确定所需的工件,指定预期的结果(例如,文件、测试、README/PR 文本)。

 

确定检查,概述将如何衡量成功(例如,测试命令、验收标准)。

 

  • 像任何其他自动化一样进行仪表化

 

为了优化智能体性能,监控关键指标,如 PR 周期时间、智能体生成的差异大小、需要返工的 PR 百分比以及智能体编辑后不稳定测试的频率等。

 

这些指标作为反馈,不仅用于智能体的整体有效性,还用于你自己的运维合同。

 

接下来是什么

 

代理式 CLI 正在从简单的 shell 助手演变为将你的工作工具、操作系统和云基础设施统一起来的连接组织。以下是截至本文撰写时的一些新兴趋势:

 

  1. IDE 和操作系统正在融合成统一的 Agent Surfaces。像Windsurf和 Cursor 这样的工具允许智能体在终端、编辑器和运行过程中共享上下文,而不是作为孤立的聊天窗口运行。Windows 也在其体验中注入了大语言模型驱动的交互

  2. 智能体正在从响应式 CLI 转变为持久的后台服务。这些守护进程智能体不是等待输入,而是主动监控日志文件和本地服务器,仅在出现错误时介入修复计划。虽然这些工具(如 GitHub PR 上的 Copilot)仍处于起步阶段,它们的洞察力尚浅,但随着正确的集成,它们将不断改进。

  3. 扩展正在成为代理能力的 App Store。随着 CLI 智能体的技能扩展等创新,我们正在开发新一代的 App Store,让用户可以将适当的能力插入到他们的智能体中。这也模糊了通用智能体和专业智能体之间的区别,因为专业智能体只是一个拥有正确知识和工具的强大通用智能体。

 

https://www.infoq.com/articles/agentic-terminal-cli-agents/

看佬友安装工具来切换配置,可能有人像我一样,不喜欢安装,这里有一种简易通过环境变量自由修改 cc 配置的方法:

1、终端执行:nano ~/.zshrc
2、写入配置并保存,以 glm 为例:

# Claude code (glm) glm() {
    export ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropic
    export ANTHROPIC_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxx
    claude
}

3、终端执行:source ~/.zshrc
4、使用的时候只需要输入 glm 即可启动。可以在第 2 步里自定义更多的参数。


📌 转载信息
原作者:
ggvisPro
转载时间:
2026/1/2 16:13:59

做 TGmessage 的初衷特别纯粹 —— 上班想刷 Telegram,又怕窗口太显眼被领导抓包,每次切屏都提心吊胆,市面上没找到趁手的工具,干脆让AI搞一个。

核心想法就是 “伪装性”:基于 Telethon 做底层,把 TG 的核心功能(查未读、发文本、标已读)搬到命令行里,黑白界面看着就像在敲代码、查日志,完美融入工作场景。同时得兼顾实用性,所以做了可编程 API 和专门的 fishing_tool,支持按对话定位、消息追踪,操作起来够高效,不用额外花时间琢磨用法。

开发时优先保证了文字消息的流畅体验,暂时没加图片、视频支持 —— 毕竟摸鱼场景里,能悄悄处理文字沟通、看资讯就够了,先解决 “不被抓包” 这个核心痛点。希望能帮到有同样需求的打工人,让大家摸鱼也能摸得安心


📌 转载信息
原作者: 1761031276
转载时间: 2025/12/31 21:52:02

安利一个的 Python 工具 —— WeSpy

它可以帮助我们自动获取微信公众号文章,并转换为标准 Markdown,还支持图片防盗链处理、多格式导出等实用功能,对写作、归档、知识管理特别友好。

如果你平时会保存公众号文章、整理成笔记、同步到博客或 Obsidian,那这个工具绝对值得一试。

主要功能

  • 支持直接抓取公众号文章 URL 无需登录,无需 APP,复制链接即可处理。
  • 自动生成 Markdown 包括标题、正文、引用、分隔线、加粗、列表等格式全都能还原。
  • 图片防盗链处理 内置公众号图片重定向与源地址修复,解决 “无法加载图片” 的老大难问题。
  • 多种输出格式

    • Markdown
    • HTML
    • JSON
    • 结构化文本
  • 可作为命令行工具,也可作为 Python 库使用

安装使用方式

pip install wespy
wespy https://mp.weixin.qq.com/s/xxxxxxxxxxxx -o article.md
from wespy import WeChatSpider

url = "https://mp.weixin.qq.com/s/xxxxxxxxxxxx"
spider = WeChatSpider()

result = spider.fetch(url)

# Markdown 输出
markdown_text = result.markdown

with open("article.md", "w", encoding="utf-8") as f:
    f.write(markdown_text)

更详细的使用方式大家可以参考项目文档
[bsgit user="tianchangNorth"]WeSpy[/bsgit]