claude-code/cc/ai: 安装/使用/bigmode/golang/python/glm/zhipu

一个AI命令行安装使用

🕐

安装

# 普通安装
curl -fsSL https://claude.ai/install.sh | bash

# mbp15 无法使用
brew install --cask claude-code
# mbp15使用这个方式
npm install -g @anthropic-ai/claude-code

$ claude
dyld: Symbol not found: _ubrk_clone
  Referenced from: /usr/local/bin/claude (which was built for Mac OS X 13.0)
  Expected in: /usr/lib/libicucore.A.dylib

Abort trap: 6

# 升级
claude update

# Windows下安装,可能遇到的问题,解决方案如下
- https://github.com/GJKen/demo/issues/10

Unable to connect to Anthropic services
Failed to connect to api.anthropic.com: ECONNREFUSED
Please check your internet connection and network settings.
Note: Claude Code might not be available in your country. Check supported countries at https://anthropic.com/supported-countries

自动模式

claude --enable-auto-mode

使用 bash

  ! for bash mode       double tap esc to clear input      ctrl + _ to undo
  / for commands        shift + tab to auto-accept edits   ctrl + z to suspend
  @ for file paths      ctrl + o for verbose output        ctrl + v to paste images
  # to memorize         ctrl + t to show todos
                        tab to toggle thinking
                        backslash (\) + return (⏎) for 
                        newline

快捷键

  • alt + 回车: 换行
  • 回车: 提交

常用的 commds/rules 归类

场景备注(示例项目)
go语言库https://github.com/afeiship/go-gitinfo
一个 command 命令的定义https://github.com/afeiship/url-literal

安装 mcp

安装 figma 的 MCP: https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/#claude-code

claude mcp add --transport http figma https://mcp.figma.com/mcp

完全交给AI

这个是一种有风险的模式,因为完全没有人干预 AI 开发了。

claude --dangerously-skip-permissions

proxy 配置

{
  "env": {
  	"HTTP_PROXY": "http://127.0.0.1:9090",
  	"HTTPS_PROXY": "http://127.0.0.1:9090"
  }
}

Golang SDK

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/option"
)

func main() {
	apiKey := os.Getenv("ANTHROPIC_AUTH_TOKEN")
	baseUrl := os.Getenv("ANTHROPIC_BASE_URL")
	client := anthropic.NewClient(
		option.WithAPIKey(apiKey),   // defaults to os.LookupEnv("ANTHROPIC_API_KEY")
		option.WithBaseURL(baseUrl), // defaults to "https://api.anthropic.ai"
	)
	message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
		MaxTokens: 1024,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("How are you today?")),
		},
		Model: "glm-4.5-air",
	})
	if err != nil {
		panic(err.Error())
	}
	fmt.Printf("%+v\n", message.Content)
}

Python http latest

import requests
import os
from dotenv import load_dotenv

load_dotenv()


def call_claude_api(prompt):
    base_url = os.getenv("ANTHROPIC_BASE_URL")
    if not base_url:
        raise ValueError("ANTHROPIC_BASE_URL environment variable is not set")

    claude_url = base_url + 'v1/messages'

    headers = {
        "Content-Type": "application/json",
        "x-api-key": os.getenv("ANTHROPIC_API_KEY"),
        "anthropic-version": "2023-06-01"
    }

    payload = {
        "model": os.getenv("ANTHROPIC_MODEL", "glm-5.2"),
        "max_tokens": 1024,
        "messages": [
            {
                "role": "user",
                "content": prompt
            }
        ]
    }

    response = requests.post(claude_url, headers=headers, json=payload)

    if response.status_code == 200:
        return response.json()
    else:
        print(f"Error: {response.status_code}, {response.text}")
        return None


if __name__ == "__main__":
    result = call_claude_api("Hello, how are you?")
    if result:
        print(result['content'][0]['text'])

Python Http

import requests
import os


def call_claude_api(prompt):
    claude_url = os.getenv("ANTHROPIC_BASE_URL") + '/v1/messages'  # 需要设置 API URL

    headers = {
        "Content-Type": "application/json",
        "x-api-key": os.getenv("ANTHROPIC_AUTH_TOKEN"),  # 需要设置 API key
        "anthropic-version": "2023-06-01"
    }

    payload = {
        "model": "glm-4.5-air",  # 或其他 Claude 模型
        "max_tokens": 1024,
        "messages": [
            {
                "role": "user",
                "content": prompt
            }
        ]
    }

    response = requests.post(claude_url, headers=headers, json=payload)

    if response.status_code == 200:
        return response.json()
    else:
        print(f"Error: {response.status_code}, {response.text}")
        return None


# 使用示例
result = call_claude_api("Hello, how are you?")
if result:
    print(result['content'][0]['text'])

经过封装

package main

import (
	"fmt"
	"log"

	"github.com/afeiship/go-claude"
)

func main() {
	// Method 1: Pass configuration completely (recommended for production)
	cfg := claude.Config{
		Model: "glm-4.5-air", // Can be dynamically specified
	}

	client, err := claude.NewClient(cfg)
	if err != nil {
		log.Fatal(err)
	}

	// Use default configuration
	reply, err := client.SimplePrompt("Hello, Claude!")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Reply 1:", reply)
}

最常用,zhipu bigmodel

package main

import (
	"fmt"
	"log"

	"github.com/afeiship/go-claude"
)

func main() {
	// Create Zhipu client
	client, err := claude.NewZhipuClient()
	if err != nil {
		log.Fatal(err)
	}

	// Single turn conversation
	response, err := client.SimplePrompt("Hello")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(response)
}

手机调试