Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 52 additions & 52 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
@@ -1,66 +1,66 @@
name: PR Check

on:
pull_request:
branches: [main]
types: [opened, synchronize, reopened]
pull_request:
# branches:
types: [opened, synchronize, reopened]

jobs:
check:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
check:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.25.1"
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.25.1"

- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Download dependencies
run: make mod
- name: Download dependencies
run: make mod

- name: Run tests
run: make test
- name: Run tests
run: make test

- name: Run checks
run: make check
- name: Run checks
run: make check

- name: Check for breaking changes
run: |
# Check if there are changes to internal packages or cmd
if git diff --name-only origin/main...HEAD | grep -E "^(internal/|cmd/)"; then
echo "⚠️ Potential breaking changes detected in internal/ or cmd/ directories"
echo "Please review these changes carefully:"
git diff --name-only origin/main...HEAD | grep -E "^(internal/|cmd/)"
fi
- name: Check for breaking changes
run: |
# Check if there are changes to internal packages or cmd
if git diff --name-only origin/main...HEAD | grep -E "^(internal/|cmd/)"; then
echo "⚠️ Potential breaking changes detected in internal/ or cmd/ directories"
echo "Please review these changes carefully:"
git diff --name-only origin/main...HEAD | grep -E "^(internal/|cmd/)"
fi

- name: Check commit messages
run: |
# Get all commits in the PR
commits=$(git log --format=%s origin/main..HEAD)
- name: Check commit messages
run: |
# Get all commits in the PR
commits=$(git log --format=%s origin/main..HEAD)

# Check if commits follow conventional commit format
for commit in $commits; do
if [[ ! "$commit" =~ ^(feat|fix|docs|style|refactor|test|chore)(\(.+\))?: .+ ]]; then
echo "⚠️ Commit message does not follow conventional commit format: $commit"
echo "Expected format: <type>[optional scope]: <description>"
echo "Types: feat, fix, docs, style, refactor, test, chore"
fi
done
# Check if commits follow conventional commit format
for commit in $commits; do
if [[ ! "$commit" =~ ^(feat|fix|docs|style|refactor|test|chore)(\(.+\))?: .+ ]]; then
echo "⚠️ Commit message does not follow conventional commit format: $commit"
echo "Expected format: <type>[optional scope]: <description>"
echo "Types: feat, fix, docs, style, refactor, test, chore"
fi
done

- name: Build
run: make build
- name: Build
run: make build
35 changes: 5 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ English | [简体中文](README_CN.md)

</div>

---

## 📖 Overview

AIM (AI Model Manager) is a powerful command-line tool designed to simplify the management of multiple AI CLI tools (like Claude Code) and their model providers. It provides a unified interface for switching between AI models, managing API keys, and configuring your development environment.
Expand All @@ -38,20 +36,18 @@ This is a project almost entirely completed (99%) with AI assistance—I'm respo

Welcome to experience this tool completed through human "manual labor" and AI "mental labor" :)

---

## 🚀 Quick Start

### Installation

**One-line install:**
```bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1|curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1
```

**User installation (no sudo):**
```bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --user
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1|curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1 --user
```

### Basic Usage
Expand All @@ -71,8 +67,6 @@ aim run cc --key mykey
aim run codex --key another-key
```

---

## ✨ Features

### Implemented ✅
Expand All @@ -89,25 +83,19 @@ aim run codex --key another-key
- **🔧 Tool Management** - Tool installation and updates, version management
- **🎨 TUI Interface** - Interactive model selection, visual configuration editor

---

## 📚 Documentation

- **[CI/CD Complete Guide](docs/cicd/CI_CD_EN.md)** - Continuous integration and deployment reference
- **[Local Development Setup](docs/development-guide/LOCAL_DEV_EN.md)** - Local development environment configuration guide
- **[TUI Interface Design](docs/tui-interface/TUI_DESIGN_EN.md)** - Terminal user interface design documentation

---

## 🎯 Supported Providers

- **DeepSeek** - High-performance reasoning models
- **GLM (Zhipu AI)** - Chinese AI models
- **KIMI (Moonshot AI)** - Long-context AI models
- **Qwen (Alibaba Cloud)** - Qwen series models
- **Claude (Anthropic)** - Claude official API

---
- **Continuously expanding**

## 🧪 Compatibility Testing

Expand All @@ -127,14 +115,11 @@ aim run codex --key another-key
|----------|-------------|-------|
| DeepSeek | ✅ Tested | API connection and basic functionality working |
| GLM | ✅ Tested | API connection and basic functionality working |
| KIMI | ⏳ Pending | Planned for testing in future releases |
| Qwen | ⏳ Pending | Planned for testing in future releases |
| Claude | ⏳ Pending | Planned for testing in future releases |
| KIMI | ✅ Tested | API connection and basic functionality working |
| Qwen | ✅ Tested | API connection and basic functionality working |

> 💡 **Note**: If you encounter issues on other operating systems or with untested providers, please submit an [Issue](https://github.com/fakecore/aim/issues) to help us improve compatibility.

---

## 🏗️ Local Development

```bash
Expand All @@ -151,8 +136,6 @@ source test/local-dev-setup/dev-setup.sh # Bash/Zsh
source test/local-dev-setup/dev-setup.fish # Fish
```

---

## 🗺️ Roadmap

- [x] Project basic functionality development
Expand All @@ -165,8 +148,6 @@ source test/local-dev-setup/dev-setup.fish # Fish
- [ ] Local MCP support
- [ ] IDE plugin configuration support

---

## 🤝 Contributing

We welcome contributions! Please see our [Development Guide](docs/development-guide/LOCAL_DEV_EN.md) for details.
Expand All @@ -178,22 +159,16 @@ We welcome contributions! Please see our [Development Guide](docs/development-gu
5. **Push to your fork** (`git push origin feature/amazing-feature`)
6. **Create a Pull Request**

---

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

---

## 📞 Contact & Support

- **Issue Feedback**: [GitHub Issues](https://github.com/fakecore/aim/issues)
- **Discussions**: [GitHub Discussions](https://github.com/fakecore/aim/discussions)
- **Documentation**: [docs/](docs/)

---

<div align="center">

**[⬆ Back to Top](#aim---ai-model-manager)**
Expand Down
11 changes: 5 additions & 6 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ AIM (AI Model Manager) 是一个强大的命令行工具,旨在简化多个 AI

**一行命令安装:**
```bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1|curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1| bash
```


**用户目录安装(无需 sudo):**
```bash
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --user
curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1|curl -fsSL https://raw.githubusercontent.com/fakecore/aim/main/scripts/setup-tool.sh | bash -s -- --version v1.1.0-rc1| bash -s -- --user
```

### 基础用法
Expand Down Expand Up @@ -96,7 +96,7 @@ aim run codex --key another-key
- **GLM (智谱清言)** - 中文 AI 模型
- **KIMI (月之暗面)** - 长上下文 AI 模型
- **Qwen (通义千问)** - 通义千问系列模型
- **Claude (Anthropic)** - Claude 官方 API
- **持续增加**

## 🧪 兼容性测试

Expand All @@ -116,9 +116,8 @@ aim run codex --key another-key
|--------|----------|------|
| DeepSeek | ✅ 已测试 | API 连接和基本功能正常 |
| GLM | ✅ 已测试 | API 连接和基本功能正常 |
| KIMI | ⏳ 待测试 | 计划在后续版本中测试 |
| Qwen | ⏳ 待测试 | 计划在后续版本中测试 |
| Claude | ⏳ 待测试 | 计划在后续版本中测试 |
| KIMI | ✅ 已测试 | API 连接和基本功能正常 |
| Qwen | ✅ 已测试 | API 连接和基本功能正常 |

> 💡 **提示**:如果您在其他操作系统或使用未测试的提供商时遇到问题,欢迎提交 [Issue](https://github.com/fakecore/aim/issues) 帮助我们改进兼容性。

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0
1.1.0-rc1
40 changes: 19 additions & 21 deletions configs/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ version: "1.0"

# Global Settings
settings:
language: en # Language: en/zh
default_tool: claude-code # Default tool
default_provider: deepseek # Default provider
timeout: 60000 # Default timeout (milliseconds)
language: en # Language: en/zh
default_tool: claude-code # Default tool
default_provider: deepseek # Default provider
timeout: 60000 # Default timeout (milliseconds)

# Global Provider Configuration (OpenAI Compatible Endpoints)
providers:
Expand Down Expand Up @@ -82,59 +82,57 @@ tools:
profiles:
deepseek:
provider: deepseek
base_url: https://api.deepseek.com/anthropic # Claude Code specific endpoint
base_url: https://api.deepseek.com/anthropic # Claude Code specific endpoint

glm:
provider: glm
base_url: https://open.bigmodel.cn/api/anthropic # Claude Code specific endpoint
base_url: https://open.bigmodel.cn/api/anthropic # Claude Code specific endpoint
env:
ANTHROPIC_DEFAULT_HAIKU_MODEL: glm-4.5-air
ANTHROPIC_DEFAULT_SONNET_MODEL: glm-4.6
ANTHROPIC_DEFAULT_OPUS_MODEL: glm-4.6

glm-coding:
provider: glm-coding
base_url: https://open.bigmodel.cn/api/anthropic # Claude Code specific endpoint
base_url: https://open.bigmodel.cn/api/anthropic # Claude Code specific endpoint
env:
ANTHROPIC_DEFAULT_HAIKU_MODEL: glm-4.5-air
ANTHROPIC_DEFAULT_SONNET_MODEL: glm-4.6
ANTHROPIC_DEFAULT_OPUS_MODEL: glm-4.6

kimi:
provider: kimi
base_url: https://api.moonshot.cn/anthropic # Claude Code specific endpoint
base_url: https://api.moonshot.cn/anthropic # Claude Code specific endpoint

qwen:
provider: qwen
base_url: https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy # Claude Code specific endpoint
base_url: https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy # Claude Code specific endpoint

codex:
command: codex
enabled: true

field_mapping:
OPENAI_BASE_URL: profiles.{current_profile}.base_url
OPENAI_MODEL: profiles.{current_profile}.model
OPENAI_TIMEOUT: profiles.{current_profile}.timeout
# API key environment variable will be set dynamically based on provider

profiles:
deepseek:
provider: deepseek
# Inherit global deepseek configuration (OpenAI compatible endpoint)

field_mapping:
DEEPSEEK_API_KEY: keys.{current_key}.key
glm:
provider: glm
# Inherit global glm configuration (OpenAI compatible endpoint)

field_mapping:
GLM_API_KEY: keys.{current_key}.key
glm-coding:
provider: glm-coding
# Inherit global glm-coding configuration (OpenAI compatible endpoint)

field_mapping:
GLM_API_KEY: keys.{current_key}.key
kimi:
provider: kimi
# Inherit global kimi configuration (OpenAI compatible endpoint)

field_mapping:
KIMI_API_KEY: keys.{current_key}.key
qwen:
provider: qwen
# Inherit global qwen configuration (OpenAI compatible endpoint)
field_mapping:
QWEN_API_KEY: keys.{current_key}.key
Loading
Loading