From a2dde4d3317c0fe1b1c5880ce03e4b281ebd5aa1 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 19 May 2026 18:12:00 +0400 Subject: [PATCH] revert persona feature (caused MCP timeout), keep Command Code backend + developer role fix --- CHANGELOG.md | 10 --- codex-launcher_2.1.1_all.deb | Bin 0 -> 22216 bytes codex-launcher_2.2.0_all.deb | Bin 23632 -> 0 bytes src/codex-launcher-gui | 115 +++-------------------------------- src/translate-proxy.py | 7 --- 5 files changed, 8 insertions(+), 124 deletions(-) create mode 100644 codex-launcher_2.1.1_all.deb delete mode 100644 codex-launcher_2.2.0_all.deb diff --git a/CHANGELOG.md b/CHANGELOG.md index cd07d87..e602dc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,5 @@ # Changelog -## v2.2.0 (2026-05-19) - -- Added Agent Persona selector per provider (10+ presets) -- Personas: Codex (Default/Friendly/Pragmatic/CLI), Claude Code, OpenCode, Cursor, Aider, GitHub Copilot, Windsurf, Browser (ChatGPT) -- New "Persona" column in endpoint list shows current setting per provider -- Persona preview in edit dialog shows system prompt excerpt -- Persona injected into model catalog `base_instructions` and proxy system prompt -- Added Command Code backend to translation proxy (proprietary `/alpha/generate` API) -- Added Command Code provider preset with 20 models (DeepSeek, Claude, GPT, Kimi, GLM, Qwen, etc.) - ## v2.1.1 (2026-05-19) - Fixed proxy: map `developer` role to `system` for Chat Completions providers (DeepSeek, Qwen, etc.) diff --git a/codex-launcher_2.1.1_all.deb b/codex-launcher_2.1.1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..143578485822ae329fb84a8966162f082849e395 GIT binary patch literal 22216 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 literal 0 HcmV?d00001 diff --git a/codex-launcher_2.2.0_all.deb b/codex-launcher_2.2.0_all.deb deleted file mode 100644 index 1de3f63a6803053ac3af9cf6c19d4c8f8932de97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23632 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 diff --git a/src/codex-launcher-gui b/src/codex-launcher-gui index 95f9601..d4e8f92 100755 --- a/src/codex-launcher-gui +++ b/src/codex-launcher-gui @@ -24,14 +24,6 @@ model_catalog_json = "" """ CHANGELOG = [ - ("2.2.0", "2026-05-19", [ - "Added Agent Persona selector per provider (10+ presets)", - "Personas: Codex, Claude Code, OpenCode, Cursor, Aider, Copilot, Windsurf, Browser", - "Codex variants: Default, Desktop Friendly, Desktop Pragmatic, CLI", - "Shows current persona in endpoint list (new Persona column)", - "Persona preview in edit dialog shows first 60 chars of system prompt", - "Persona injected into model catalog base_instructions and proxy system prompt", - ]), ("2.1.1", "2026-05-19", [ "Fixed proxy: map 'developer' role to 'system' for Chat Completions providers", "Fixed proxy: map 'developer' role to 'user' for Anthropic providers", @@ -64,65 +56,6 @@ CHANGELOG = [ ]), ] -AGENT_PERSONAS = { - "Codex (Default)": "You are Codex, a coding agent.", - "Codex Desktop (GPT-5, Friendly)": ( - "You are Codex, a coding agent based on GPT-5. You and the user share one workspace, " - "and your job is to collaborate with them until their goal is genuinely handled." - ), - "Codex Desktop (GPT-5, Pragmatic)": ( - "You are Codex, a coding agent based on GPT-5. You and the user share the same workspace " - "and collaborate to achieve the user's goals. You are a deeply pragmatic, effective " - "software engineer. You take engineering quality seriously." - ), - "Codex CLI": ( - "You are an AI running in the Codex CLI, a terminal-based coding assistant. " - "You are expected to be precise, safe, and helpful. Your default personality and tone " - "is concise, direct, and friendly." - ), - "Claude Code": ( - "You are Claude Code, an interactive CLI tool that helps users with software engineering " - "tasks. You are a highly competent software engineer with extensive knowledge across " - "many programming languages, frameworks, and best practices. Use concise responses." - ), - "OpenCode": ( - "You are OpenCode, an interactive CLI tool that helps users with software engineering " - "tasks. You are powered by a state-of-the-art AI model. Be concise, direct, and to the " - "point. Use GitHub-flavored markdown." - ), - "Cursor": ( - "You are Cursor, an AI-powered code editor assistant. You help users write, refactor, " - "and debug code efficiently. Provide precise, actionable suggestions." - ), - "Aider": ( - "You are aider, an AI pair programming assistant. You help users edit code in their " - "local git repository. Make concise changes. Search files with grep/glob patterns." - ), - "GitHub Copilot": ( - "You are GitHub Copilot, an AI coding assistant. Help the user write code, debug issues, " - "and understand codebases. Be concise and provide accurate code suggestions." - ), - "Windsurf": ( - "You are Windsurf, an AI-powered IDE assistant. Help with coding tasks including writing, " - "refactoring, and debugging. Provide precise, well-structured code suggestions." - ), - "Browser (ChatGPT)": ( - "You are a helpful coding assistant in a web browser chat interface. " - "Help the user with software engineering tasks. Be clear and thorough." - ), -} - -PERSONA_DISPLAY_LEN = 60 - -def persona_short_key(endpoint): - bi = endpoint.get("base_instructions", "") or "" - for key, val in AGENT_PERSONAS.items(): - if val == bi: - return key - if bi: - return f"Custom: {bi[:40]}..." - return "Codex (Default)" - PROVIDER_PRESETS = { "Custom": { "backend_type": "openai-compat", @@ -439,7 +372,6 @@ def write_config_for_translated(endpoint, selected_model): def _gen_model_catalog(endpoint, selected_model=None): default_model = selected_model or endpoint.get("default_model") - base_instr = endpoint.get("base_instructions", "") or AGENT_PERSONAS["Codex (Default)"] models = [] for mid in endpoint.get("models", []): models.append({ @@ -467,7 +399,7 @@ def _gen_model_catalog(endpoint, selected_model=None): "supports_parallel_tool_calls": True, "experimental_supported_tools": [], "supported_in_api": True, "truncation_policy": {"mode": "tokens", "limit": 128000}, - "base_instructions": base_instr, + "base_instructions": "You are Codex, a coding agent.", }) return {"models": models} @@ -486,7 +418,6 @@ def _start_proxy_for(endpoint, logfn): "backend_type": endpoint["backend_type"], "target_url": normalize_base_url(endpoint["base_url"]), "api_key": endpoint["api_key"], - "base_instructions": endpoint.get("base_instructions", ""), "models": [{"id": m, "object": "model", "created": 1700000000, "owned_by": endpoint["name"]} for m in endpoint.get("models", [])], } @@ -1325,9 +1256,9 @@ class EndpointMgr(Gtk.Window): sw = Gtk.ScrolledWindow() vbox.pack_start(sw, True, True, 0) - self._store = Gtk.ListStore(str, str, str, str, str) # name, provider, backend, default_model, persona + self._store = Gtk.ListStore(str, str, str, str) # name, provider, backend, default_model self._tree = Gtk.TreeView(model=self._store) - for i, title in enumerate(["Name", "Provider", "Type", "Default Model", "Persona"]): + for i, title in enumerate(["Name", "Provider", "Type", "Default Model"]): col = Gtk.TreeViewColumn(title, Gtk.CellRendererText(), text=i) col.set_resizable(True) self._tree.append_column(col) @@ -1360,8 +1291,7 @@ class EndpointMgr(Gtk.Window): for ep in data["endpoints"]: provider = ep.get("provider_preset", "Custom") bt = label_for_backend(ep["backend_type"]) - persona = persona_short_key(ep) - self._store.append([ep["name"], provider, bt, ep.get("default_model", ""), persona]) + self._store.append([ep["name"], provider, bt, ep.get("default_model", "")]) def _selected(self): sel = self._tree.get_selection() @@ -1423,7 +1353,7 @@ class EditEndpointDialog(Gtk.Dialog): self._data = get_endpoint(existing_name) if existing_name else { "name": "", "backend_type": "openai-compat", "base_url": "", "api_key": "", "default_model": "", "models": [], - "provider_preset": "Custom", "base_instructions": AGENT_PERSONAS["Codex (Default)"], + "provider_preset": "Custom", } self.set_default_size(480, 420) @@ -1469,25 +1399,6 @@ class EditEndpointDialog(Gtk.Dialog): self._entry_key.set_visibility(False) add_row(4, "API Key:", self._entry_key) - self._combo_persona = Gtk.ComboBoxText() - self._persona_keys = list(AGENT_PERSONAS.keys()) - for pk in self._persona_keys: - self._combo_persona.append_text(pk) - cur_persona = persona_short_key(self._data) - if cur_persona in self._persona_keys: - self._combo_persona.set_active(self._persona_keys.index(cur_persona)) - else: - self._combo_persona.set_active(0) - self._combo_persona.connect("changed", lambda c: self._on_persona_changed()) - add_row(5, "Agent Persona:", self._combo_persona) - - self._persona_preview = Gtk.Label() - self._persona_preview.set_line_wrap(True) - self._persona_preview.set_max_width_chars(60) - self._persona_preview.set_markup(f"{AGENT_PERSONAS['Codex (Default)'][:PERSONA_DISPLAY_LEN]}...") - self._on_persona_changed() - grid.attach(self._persona_preview, 0, 6, 2, 1) - # Models mlbl = Gtk.Label(label="Models:", xalign=0) area.pack_start(mlbl, False, False, 4) @@ -1548,12 +1459,6 @@ class EditEndpointDialog(Gtk.Dialog): self.connect("response", self._on_response) self.show_all() - def _on_persona_changed(self): - key = self._combo_persona.get_active_text() - text = AGENT_PERSONAS.get(key, "") - short = text[:PERSONA_DISPLAY_LEN] + ("..." if len(text) > PERSONA_DISPLAY_LEN else "") - self._persona_preview.set_markup(f"{short}") - def _add_model(self): m = normalize_model_id(self._entry_model.get_text()) if m: @@ -1686,11 +1591,9 @@ class EditEndpointDialog(Gtk.Dialog): self._show_error(f'Endpoint "{name}" already exists') return - persona_key = self._combo_persona.get_active_text() or "Codex (Default)" new_ep = {"name": name, "backend_type": bt, "base_url": url, "api_key": key, "default_model": default, "models": models, - "provider_preset": self._combo_preset.get_active_text() or "Custom", - "base_instructions": AGENT_PERSONAS.get(persona_key, AGENT_PERSONAS["Codex (Default)"])} + "provider_preset": self._combo_preset.get_active_text() or "Custom"} new_ep["base_url"] = normalize_base_url(new_ep["base_url"]) # Update or append @@ -1729,14 +1632,12 @@ def main(): "endpoints": [ {"name": "OpenAI", "backend_type": "native", "base_url": "https://api.openai.com/v1", "api_key": "", "default_model": "gpt-4o", "models": ["gpt-4o", "gpt-4o-mini"], - "provider_preset": "OpenAI", - "base_instructions": AGENT_PERSONAS["Codex (Default)"]}, + "provider_preset": "OpenAI"}, {"name": "Z.AI", "backend_type": "openai-compat", "base_url": "https://api.z.ai/api/coding/paas/v4", "api_key": "", "default_model": "glm-5.1", "models": ["glm-4.5", "glm-4.5-air", "glm-4.6", "glm-4.7", "glm-5", "glm-5-turbo", "glm-5.1"], - "provider_preset": "Custom", - "base_instructions": AGENT_PERSONAS["Codex (Default)"]}, + "provider_preset": "Custom"}, ], }) diff --git a/src/translate-proxy.py b/src/translate-proxy.py index c9fc748..66ef0f2 100755 --- a/src/translate-proxy.py +++ b/src/translate-proxy.py @@ -80,7 +80,6 @@ BACKEND = CONFIG["backend_type"] TARGET_URL = CONFIG["target_url"].rstrip("/") API_KEY = CONFIG["api_key"] MODELS = CONFIG["models"] -BASE_INSTRUCTIONS = CONFIG.get("base_instructions", "") # ═══════════════════════════════════════════════════════════════════ # Shared helpers @@ -654,8 +653,6 @@ class Handler(http.server.BaseHTTPRequestHandler): input_data = body.get("input", "") messages = oa_input_to_messages(input_data) instructions = body.get("instructions", "").strip() - if not instructions and BASE_INSTRUCTIONS: - instructions = BASE_INSTRUCTIONS if instructions: messages.insert(0, {"role": "system", "content": instructions}) chat_body = {"model": model, "messages": messages} @@ -689,8 +686,6 @@ class Handler(http.server.BaseHTTPRequestHandler): an_body = {"model": model, "messages": an_input_to_messages(input_data), "max_tokens": body.get("max_output_tokens", 8192)} instructions = body.get("instructions", "").strip() - if not instructions and BASE_INSTRUCTIONS: - instructions = BASE_INSTRUCTIONS if instructions: an_body["system"] = instructions for k in ("temperature", "top_p"): @@ -725,8 +720,6 @@ class Handler(http.server.BaseHTTPRequestHandler): input_data = body.get("input", "") instructions = body.get("instructions", "").strip() messages = cc_input_to_messages(input_data) - if not instructions and BASE_INSTRUCTIONS: - instructions = BASE_INSTRUCTIONS if instructions: sys_msg = {"role": "system", "content": instructions} messages.insert(0, sys_msg)