@piceofpentogramm/alterclaude 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -98
- package/dist/cli.mjs +22 -22
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,155 +1,93 @@
|
|
|
1
1
|
# AlterClaude
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Используй Claude Code с **любой моделью** — GPT, DeepSeek, Gemini, Llama, OpenRouter, локальные через Ollama — не только Claude.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Все инструменты Claude Code работают — bash, file read/write/edit, grep, glob, agents, tasks, MCP — просто вместо Claude ими управляет любая модель, которую вы выбрали.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Быстрый старт (рекомендуемый)
|
|
12
|
-
|
|
13
|
-
Установите пакет и запустите **встроенный мастер настройки** — `/provider`:
|
|
5
|
+
Просто установи и запусти `/provider` внутри программы.
|
|
14
6
|
|
|
15
7
|
```bash
|
|
16
8
|
npm install -g @piceofpentogramm/alterclaude
|
|
17
9
|
alterclaude
|
|
18
10
|
```
|
|
19
11
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
/provider
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Мастер проведёт вас через настройку: выберите провайдера (OpenAI, OpenRouter, Gemini, Ollama, Codex), введите API-ключ, укажите endpoint и модель. Профиль сохранится автоматически.
|
|
12
|
+
Когда увидишь экран приветствия, напиши `/provider` и выбери провайдера. Мастер сам попросит ключ, endpoint, модель — и сохранит настройки. При следующем запуске всё будет готово.
|
|
27
13
|
|
|
28
14
|
---
|
|
29
15
|
|
|
30
|
-
## Быстрый старт
|
|
31
|
-
|
|
32
|
-
### OpenRouter
|
|
16
|
+
## Быстрый старт
|
|
33
17
|
|
|
34
18
|
```bash
|
|
35
19
|
npm install -g @piceofpentogramm/alterclaude
|
|
36
|
-
|
|
37
|
-
export CLAUDE_CODE_USE_OPENROUTER=1
|
|
38
|
-
export OPENROUTER_API_KEY=sk-or-your-key-here
|
|
39
|
-
|
|
40
20
|
alterclaude
|
|
21
|
+
# внутри напиши: /provider
|
|
22
|
+
# выбери OpenRouter / OpenAI / Gemini / Ollama и следуй шагам
|
|
41
23
|
```
|
|
42
24
|
|
|
43
|
-
|
|
25
|
+
После настройки просто запускай `alterclaude` — профиль подхватится автоматически.
|
|
44
26
|
|
|
45
|
-
###
|
|
27
|
+
### Вручную (без /provider)
|
|
46
28
|
|
|
29
|
+
**OpenRouter:**
|
|
47
30
|
```bash
|
|
48
|
-
|
|
31
|
+
export CLAUDE_CODE_USE_OPENROUTER=1
|
|
32
|
+
export OPENROUTER_API_KEY=sk-or-v1-ваш-ключ
|
|
33
|
+
alterclaude
|
|
34
|
+
```
|
|
49
35
|
|
|
36
|
+
**OpenAI:**
|
|
37
|
+
```bash
|
|
50
38
|
export CLAUDE_CODE_USE_OPENAI=1
|
|
51
|
-
export OPENAI_API_KEY=sk
|
|
52
|
-
export OPENAI_MODEL=gpt-4o
|
|
53
|
-
|
|
39
|
+
export OPENAI_API_KEY=sk-ваш-ключ
|
|
54
40
|
alterclaude
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
**Windows PowerShell:**
|
|
59
44
|
```powershell
|
|
60
|
-
npm install -g @piceofpentogramm/alterclaude
|
|
61
|
-
|
|
62
45
|
$env:CLAUDE_CODE_USE_OPENAI="1"
|
|
63
|
-
$env:OPENAI_API_KEY="sk
|
|
64
|
-
$env:OPENAI_MODEL="gpt-4o"
|
|
65
|
-
|
|
46
|
+
$env:OPENAI_API_KEY="sk-ваш-ключ"
|
|
66
47
|
alterclaude
|
|
67
48
|
```
|
|
68
49
|
|
|
69
50
|
---
|
|
70
51
|
|
|
71
|
-
##
|
|
52
|
+
## Зависимости
|
|
72
53
|
|
|
73
|
-
- **
|
|
74
|
-
- **
|
|
75
|
-
- **
|
|
76
|
-
- **[Advanced Setup](docs/advanced-setup.md)** — сборка из исходников, Bun, профили, runtime checks
|
|
54
|
+
- **Node.js 20+**
|
|
55
|
+
- **Docker** (требуется для веб-поиска через SearXNG; если Docker не установлен, поиск будет недоступен, но всё остальное работает)
|
|
56
|
+
- **ripgrep** (нужен для поиска по файлам; если не установлен, AlterClaude предупредит при запуске)
|
|
77
57
|
|
|
78
58
|
---
|
|
79
59
|
|
|
80
60
|
## Что работает
|
|
81
61
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
62
|
+
Все инструменты Claude Code — Bash, файловые операции, поиск, агенты, MCP, LSP — работают с любой моделью.
|
|
63
|
+
|
|
64
|
+
- Стриминг токенов в реальном времени
|
|
65
|
+
- Многошаговые вызовы инструментов
|
|
66
|
+
- Изображения (base64/URL) для vision-моделей
|
|
67
|
+
- Slash-команды: `/commit`, `/review`, `/compact`, `/diff`, `/doctor`, `/provider` и другие
|
|
68
|
+
- Sub-агенты и система памяти
|
|
89
69
|
|
|
90
|
-
##
|
|
70
|
+
## Чего нет
|
|
91
71
|
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
- **Token limits** — по умолчанию 32K max output, некоторые модели могут снижать
|
|
72
|
+
- Anthropic thinking mode (не нужен для OpenAI-совместимых моделей)
|
|
73
|
+
- Prompt caching (Anthropic-специфичная фича)
|
|
74
|
+
- Beta-фичи Anthropic
|
|
96
75
|
|
|
97
76
|
---
|
|
98
77
|
|
|
99
78
|
## Как это работает
|
|
100
79
|
|
|
101
|
-
Прослойка
|
|
80
|
+
Прослойка перехватывает запросы Claude Code и переводит их в OpenAI-формат. Остальной код не знает, что говорит с другой моделью.
|
|
102
81
|
|
|
103
82
|
```
|
|
104
|
-
Claude Code
|
|
105
|
-
|
|
|
106
|
-
v
|
|
107
|
-
Anthropic SDK interface (duck-typed)
|
|
108
|
-
|
|
|
109
|
-
v
|
|
110
|
-
openaiShim.ts <-- переводит форматы
|
|
111
|
-
|
|
|
112
|
-
v
|
|
113
|
-
OpenAI Chat Completions API
|
|
114
|
-
|
|
|
115
|
-
v
|
|
116
|
-
Любая совместимая модель
|
|
83
|
+
Claude Code → openaiShim.ts → OpenAI API → любая модель
|
|
117
84
|
```
|
|
118
85
|
|
|
119
|
-
Конвертация:
|
|
120
|
-
- Anthropic message blocks → OpenAI messages
|
|
121
|
-
- Anthropic tool_use/tool_result → OpenAI function calls
|
|
122
|
-
- OpenAI SSE streaming → Anthropic stream events
|
|
123
|
-
- Anthropic system prompt arrays → OpenAI system messages
|
|
124
|
-
|
|
125
|
-
Остальной Claude Code не знает, что говорит с другой моделью.
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Модели и качество
|
|
130
|
-
|
|
131
|
-
| Модель | Tool Calling | Качество кода | Скорость |
|
|
132
|
-
|--------|-------------|---------------|----------|
|
|
133
|
-
| GPT-4o | Отлично | Отлично | Быстро |
|
|
134
|
-
| DeepSeek-V3 | Отлично | Отлично | Быстро |
|
|
135
|
-
| Gemini 2.0 Flash | Отлично | Хорошо | Очень быстро |
|
|
136
|
-
| Llama 3.3 70B | Хорошо | Хорошо | Средне |
|
|
137
|
-
| Mistral Large | Хорошо | Хорошо | Быстро |
|
|
138
|
-
| GPT-4o-mini | Хорошо | Хорошо | Очень быстро |
|
|
139
|
-
| Qwen 2.5 72B | Хорошо | Хорошо | Средне |
|
|
140
|
-
| Маленькие модели (<7B) | Ограниченно | Ограниченно | Очень быстро |
|
|
141
|
-
|
|
142
|
-
Для лучших результатов используйте модели с сильной поддержкой function/tool calling.
|
|
143
|
-
|
|
144
86
|
---
|
|
145
87
|
|
|
146
88
|
## Origin
|
|
147
89
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Оригинальный Claude Code — собственность Anthropic. Этот репозиторий не аффилирован с Anthropic и не одобрен ими.
|
|
151
|
-
|
|
152
|
-
---
|
|
90
|
+
Форк [OpenClaude](https://github.com/Gitlawb/openclaude). Оригинальный Claude Code — собственность Anthropic. Не аффилирован и не одобрен Anthropic.
|
|
153
91
|
|
|
154
92
|
## License
|
|
155
93
|
|
package/dist/cli.mjs
CHANGED
|
@@ -53334,21 +53334,21 @@ async function buildLaunchEnv(options) {
|
|
|
53334
53334
|
}
|
|
53335
53335
|
async function buildStartupEnvFromProfile(options) {
|
|
53336
53336
|
const processEnv = options?.processEnv ?? process.env;
|
|
53337
|
-
if (hasExplicitProviderSelection(processEnv)) {
|
|
53338
|
-
return processEnv;
|
|
53339
|
-
}
|
|
53340
53337
|
const persisted = options?.persisted ?? loadProfileFile();
|
|
53341
|
-
if (
|
|
53338
|
+
if (persisted) {
|
|
53339
|
+
return buildLaunchEnv({
|
|
53340
|
+
profile: persisted.profile,
|
|
53341
|
+
persisted,
|
|
53342
|
+
goal: options?.goal ?? normalizeRecommendationGoal(processEnv.ALTERCLAUDE_PROFILE_GOAL),
|
|
53343
|
+
processEnv,
|
|
53344
|
+
getOllamaChatBaseUrl: options?.getOllamaChatBaseUrl ?? getOllamaChatBaseUrl2,
|
|
53345
|
+
resolveOllamaDefaultModel: options?.resolveOllamaDefaultModel
|
|
53346
|
+
});
|
|
53347
|
+
}
|
|
53348
|
+
if (hasExplicitProviderSelection(processEnv)) {
|
|
53342
53349
|
return processEnv;
|
|
53343
53350
|
}
|
|
53344
|
-
return
|
|
53345
|
-
profile: persisted.profile,
|
|
53346
|
-
persisted,
|
|
53347
|
-
goal: options?.goal ?? normalizeRecommendationGoal(processEnv.ALTERCLAUDE_PROFILE_GOAL),
|
|
53348
|
-
processEnv,
|
|
53349
|
-
getOllamaChatBaseUrl: options?.getOllamaChatBaseUrl ?? getOllamaChatBaseUrl2,
|
|
53350
|
-
resolveOllamaDefaultModel: options?.resolveOllamaDefaultModel
|
|
53351
|
-
});
|
|
53351
|
+
return processEnv;
|
|
53352
53352
|
}
|
|
53353
53353
|
async function resolveProviderApiKeyHelpers(targetEnv) {
|
|
53354
53354
|
const settings = getSettingsForSource("userSettings");
|
|
@@ -120201,7 +120201,7 @@ function printStartupScreen() {
|
|
|
120201
120201
|
const sLen = ` ● ${sL} Ready — type /help to begin`.length;
|
|
120202
120202
|
out.push(boxRow(sRow, W2, sLen));
|
|
120203
120203
|
out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
|
|
120204
|
-
out.push(` ${DIM}${rgb(...DIMCOL)}alterclaude ${RESET}${rgb(...ACCENT)}v${"0.1.
|
|
120204
|
+
out.push(` ${DIM}${rgb(...DIMCOL)}alterclaude ${RESET}${rgb(...ACCENT)}v${"0.1.9"}${RESET}`);
|
|
120205
120205
|
out.push("");
|
|
120206
120206
|
process.stdout.write(out.join(`
|
|
120207
120207
|
`) + `
|
|
@@ -358955,7 +358955,7 @@ function getAnthropicEnvMetadata() {
|
|
|
358955
358955
|
function getBuildAgeMinutes() {
|
|
358956
358956
|
if (false)
|
|
358957
358957
|
;
|
|
358958
|
-
const buildTime = new Date("2026-05-
|
|
358958
|
+
const buildTime = new Date("2026-05-29T17:07:30.588Z").getTime();
|
|
358959
358959
|
if (isNaN(buildTime))
|
|
358960
358960
|
return;
|
|
358961
358961
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -451547,7 +451547,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
451547
451547
|
var call58 = async () => {
|
|
451548
451548
|
return {
|
|
451549
451549
|
type: "text",
|
|
451550
|
-
value: `${"99.0.0"} (built ${"2026-05-
|
|
451550
|
+
value: `${"99.0.0"} (built ${"2026-05-29T17:07:30.588Z"})`
|
|
451551
451551
|
};
|
|
451552
451552
|
}, version2, version_default;
|
|
451553
451553
|
var init_version = __esm(() => {
|
|
@@ -524688,7 +524688,7 @@ function WelcomeV2() {
|
|
|
524688
524688
|
dimColor: true,
|
|
524689
524689
|
children: [
|
|
524690
524690
|
"v",
|
|
524691
|
-
"0.1.
|
|
524691
|
+
"0.1.9",
|
|
524692
524692
|
" "
|
|
524693
524693
|
]
|
|
524694
524694
|
}, undefined, true, undefined, this)
|
|
@@ -524888,7 +524888,7 @@ function WelcomeV2() {
|
|
|
524888
524888
|
dimColor: true,
|
|
524889
524889
|
children: [
|
|
524890
524890
|
"v",
|
|
524891
|
-
"0.1.
|
|
524891
|
+
"0.1.9",
|
|
524892
524892
|
" "
|
|
524893
524893
|
]
|
|
524894
524894
|
}, undefined, true, undefined, this)
|
|
@@ -525114,7 +525114,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
525114
525114
|
dimColor: true,
|
|
525115
525115
|
children: [
|
|
525116
525116
|
"v",
|
|
525117
|
-
"0.1.
|
|
525117
|
+
"0.1.9",
|
|
525118
525118
|
" "
|
|
525119
525119
|
]
|
|
525120
525120
|
}, undefined, true, undefined, this);
|
|
@@ -525368,7 +525368,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
525368
525368
|
dimColor: true,
|
|
525369
525369
|
children: [
|
|
525370
525370
|
"v",
|
|
525371
|
-
"0.1.
|
|
525371
|
+
"0.1.9",
|
|
525372
525372
|
" "
|
|
525373
525373
|
]
|
|
525374
525374
|
}, undefined, true, undefined, this);
|
|
@@ -545916,7 +545916,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
545916
545916
|
pendingHookMessages
|
|
545917
545917
|
}, renderAndRun);
|
|
545918
545918
|
}
|
|
545919
|
-
}).version("0.1.
|
|
545919
|
+
}).version("0.1.9 (Alter Claude)", "-v, --version", "Output the version number");
|
|
545920
545920
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
545921
545921
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
545922
545922
|
if (canUserConfigureAdvisor()) {
|
|
@@ -546496,7 +546496,7 @@ function validateProviderEnvOrExit() {
|
|
|
546496
546496
|
async function main2() {
|
|
546497
546497
|
const args = process.argv.slice(2);
|
|
546498
546498
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
546499
|
-
console.log(`${"0.1.
|
|
546499
|
+
console.log(`${"0.1.9"} (Alter Claude)`);
|
|
546500
546500
|
return;
|
|
546501
546501
|
}
|
|
546502
546502
|
{
|
|
@@ -546608,4 +546608,4 @@ async function main2() {
|
|
|
546608
546608
|
}
|
|
546609
546609
|
main2();
|
|
546610
546610
|
|
|
546611
|
-
//# debugId=
|
|
546611
|
+
//# debugId=155EC10619E03D9564756E2164756E21
|