mirror of
https://github.com/ollama/ollama.git
synced 2026-10-20 18:41:17 +00:00
launch: default Claude Code to client-side auto checks (#18596)
This commit is contained in:
parent
b9cd4b1efb
commit
01c0fbfd35
2 changed files with 58 additions and 0 deletions
|
|
@ -76,6 +76,12 @@ func (c *Claude) envVars(model string) []string {
|
|||
"CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1",
|
||||
}
|
||||
|
||||
// Ollama does not provide Anthropic's server-side auto-mode checks.
|
||||
// Use Claude Code's client classifier by default, preserving explicit settings.
|
||||
if _, ok := os.LookupEnv("CLAUDE_CODE_AUTO_MODE_SERVER"); !ok {
|
||||
env = append(env, "CLAUDE_CODE_AUTO_MODE_SERVER=0")
|
||||
}
|
||||
|
||||
env = append(env, c.modelEnvVars(model)...)
|
||||
return env
|
||||
}
|
||||
|
|
|
|||
|
|
@ -375,6 +375,58 @@ func TestClaudeEnvVars(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestClaudeRunAutoModeServer(t *testing.T) {
|
||||
if runtime.GOOS == "windows" {
|
||||
t.Skip("uses a POSIX shell fake binary")
|
||||
}
|
||||
|
||||
for _, model := range []string{"llama3.2", "glm-5:cloud"} {
|
||||
for _, tt := range []struct {
|
||||
name string
|
||||
value string
|
||||
unset bool
|
||||
want string
|
||||
}{
|
||||
{name: "default", unset: true, want: "0"},
|
||||
{name: "disabled", value: "0", want: "0"},
|
||||
{name: "enabled", value: "1", want: "1"},
|
||||
{name: "empty", value: "", want: ""},
|
||||
} {
|
||||
t.Run(model+"/"+tt.name, func(t *testing.T) {
|
||||
t.Setenv("CLAUDE_CODE_AUTO_MODE_SERVER", tt.value)
|
||||
if tt.unset {
|
||||
if err := os.Unsetenv("CLAUDE_CODE_AUTO_MODE_SERVER"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
dir := t.TempDir()
|
||||
output := filepath.Join(dir, "env-and-args")
|
||||
t.Setenv("PATH", dir)
|
||||
t.Setenv("CLAUDE_LAUNCH_TEST_OUTPUT", output)
|
||||
script := `#!/bin/sh
|
||||
printf '%s\n' "${CLAUDE_CODE_AUTO_MODE_SERVER-unset}" "$ANTHROPIC_DEFAULT_SONNET_MODEL" "$@" > "$CLAUDE_LAUNCH_TEST_OUTPUT"
|
||||
`
|
||||
if err := os.WriteFile(filepath.Join(dir, "claude"), []byte(script), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := (&Claude{}).Run(model, nil, []string{"--permission-mode", "auto"}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := os.ReadFile(output)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
want := strings.Join([]string{tt.want, model, "--model", model, "--permission-mode", "auto", ""}, "\n")
|
||||
if string(got) != want {
|
||||
t.Fatalf("child environment and arguments = %q, want %q", got, want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestClaudeModelEnvVars(t *testing.T) {
|
||||
c := &Claude{}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue