fix: rewrite OpenCode identity sentence to Claude Code

This commit is contained in:
cyhhao
2026-01-29 03:03:40 +08:00
parent c37fe91672
commit d98648f03b
2 changed files with 28 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
package service
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestSanitizeOpenCodeText_RewritesCanonicalSentence(t *testing.T) {
in := "You are OpenCode, the best coding agent on the planet."
got := sanitizeOpenCodeText(in)
require.Equal(t, strings.TrimSpace(claudeCodeSystemPrompt), got)
}
func TestSanitizeOpenCodeText_RewritesOpenCodeKeywords(t *testing.T) {
in := "OpenCode and opencode are mentioned."
got := sanitizeOpenCodeText(in)
require.Equal(t, "Claude Code and Claude are mentioned.", got)
}

View File

@@ -559,6 +559,14 @@ func sanitizeOpenCodeText(text string) string {
if text == "" {
return text
}
// Some clients include a fixed OpenCode identity sentence. Anthropic may treat
// this as a non-Claude-Code fingerprint, so rewrite it to the canonical
// Claude Code banner before generic "OpenCode"/"opencode" replacements.
text = strings.ReplaceAll(
text,
"You are OpenCode, the best coding agent on the planet.",
strings.TrimSpace(claudeCodeSystemPrompt),
)
text = strings.ReplaceAll(text, "OpenCode", "Claude Code")
text = opencodeTextRe.ReplaceAllString(text, "Claude")
return text