Skip to content

fix(cursor-acp): enable parameterized model picker - #607

Merged
xintaofei merged 3 commits into
xintaofei:mainfrom
ZY-Dragon03:fix/cursor-parameterized-model-picker
Aug 31, 2026
Merged

fix(cursor-acp): enable parameterized model picker#607
xintaofei merged 3 commits into
xintaofei:mainfrom
ZY-Dragon03:fix/cursor-parameterized-model-picker

Conversation

@ZY-Dragon03

Copy link
Copy Markdown

Problem

Cursor ACP only exposes parameterized configuration such as the Fast selector when the client advertises _meta.parameterizedModelPicker=true.

Without this capability, Codeg falls back to the default Cursor model variant behavior and Composer 2.5 may remain on Fast.

Fix

Advertise parameterizedModelPicker for agents whose resolved ACP backend launches cursor-agent ... acp, covering both the built-in Cursor agent and custom Cursor-backed agents.

Detection uses the resolved launch command and arguments, not custom agent names.

Verification

  • built-in Cursor receives the capability
  • custom cursor-agent ... acp agents receive the capability
  • non-Cursor custom ACP agents do not
  • Cursor exposes mode, model, and fast
  • session/set_config_option successfully applies fast=false

This matches the compatibility approach used by other ACP clients that support Cursor's parameterized model picker.

YeMing210 and others added 3 commits August 30, 2026 19:46
Problem:
Cursor ACP only exposes parameterized configuration such as the Fast selector
when the client advertises _meta.parameterizedModelPicker=true. Without this
capability, Codeg falls back to the default Cursor model variant behavior and
Composer 2.5 may remain on Fast.

Fix:
Advertise parameterizedModelPicker for agents whose resolved ACP backend
launches cursor-agent ... acp, covering both the built-in Cursor agent and
custom Cursor-backed agents. Detection uses the resolved launch command and
arguments, not custom agent names.

Verification:
- built-in Cursor receives the capability
- custom cursor-agent ... acp agents receive the capability
- non-Cursor custom ACP agents do not
- Cursor exposes mode, model, and fast
- session/set_config_option successfully applies fast=false

Co-authored-by: Cursor <cursoragent@cursor.com>
…s parameters

Review fixes on top of the parameterized-model-picker change.

The custom-cursor-agent test declared only a `windows-x86_64` binary
entry. `build_binary_distribution` REJECTS a def with no entry for the
current platform, so off Windows `hydrate` skipped it, `get_agent_meta`
fell back to `unregistered_meta` (empty cmd/args) and the capability was
absent — the test asserted against a placeholder and failed everywhere
but one platform. Cover every platform (the shape `custom_registry`'s own
`binary_def` helper uses) and assert `hydrate` reported no errors, so a
skipped def can never again pass for a registered one. Same assert on the
negative test, which an unregistered id would otherwise satisfy for the
wrong reason.

`args.iter().any(|a| *a == "acp")` failed `clippy -D warnings`
(`manual_contains`).

Saved-preference replay now applies the model selector BEFORE the options
scoped to it. `apply_preferred_session_options` walked a BTreeMap, i.e.
alphabetically, which was moot while Cursor advertised a single option
and is not once `fast` joins `model`. cursor-agent answers
`set_config_option("model", …)` by reloading that model's own saved or
default parameter values, and rejects a parameter the model in effect
does not define — so replaying `fast` first either loses it to the switch
or fails against the outgoing model, and both outcomes are logged and
skipped, i.e. silent. `apply_grok_preferred_options` already hard-codes
this order for the same reason; `order_preferred_config_values` is the
generic half.

Also documents the new gate in `build_client_capabilities`'s doc comment,
which enumerates every per-agent capability gate as a product decision.
`rustc foo.rs` with no `-o` writes `rust_out` into the working directory.
Checking a borrow or lifetime question against a throwaway file is a
normal thing to do while working on the ACP code, but the leftover
executable then sits untracked in the repo root, and a work task's
delivery step refuses to push a worktree that is not clean.
@xintaofei

Copy link
Copy Markdown
Owner

codeg work task 51 is done — #607 (3 files, +198/-21).

@xintaofei
xintaofei merged commit ed3c127 into xintaofei:main Aug 31, 2026
7 checks passed
xintaofei added a commit that referenced this pull request Sep 1, 2026
Your conversations get an infinite board — lay them out in space and run several agents side by side on it.
Multi-agent collaboration gets sturdier too: an `@`-mentioned agent is delegated through codeg as a session you can open, and a sub-task cut off by a cancel or a crash can be picked up where it stopped.

## New

- **Infinite Conversations: a board that lays your workspace out in space** — folder and agent regions, curated collections, sticky notes, and pinned cards that open into real working conversations, so several agents run side by side on one board instead of one tab at a time.
- **Curate the board by dragging**: pull a card out to pin it, drop it into a region to collect it, colour anything, auto-arrange, export a PNG, or fill the whole board from your open workspace in one click.
- **Folders group in the sidebar** — named, optionally coloured bands that share one order with loose folders so the two interleave, each heading carrying a running-session badge summed across everything inside it.
- **The branch popup under the composer lists the branches your other worktrees are on**, main working tree first and the rest folded under shared prefixes like `task/`.
- **Cursor's model picker is families plus knobs instead of two hundred ids**, with Thinking, Effort and Fast beside the family name, each shown only where that family varies on it. (#607, @ZY-Dragon03)
- **A delegated sub-task cut off by a cancel or a crash resumes where it stopped**, under its original id and in the same conversation, with status and cancel still working on the id you already hold.
- **An agent you `@`-mention in a prompt is delegated through codeg**, so the child becomes a session you can open instead of one the agent quietly spawns outside the app.
- **Tasks can compact their context before a resumed round**, at a threshold you set, with the before/after occupancy recorded on the task timeline.
- **Cancelling a task can take its worktree with it**, and skipping that checkbox no longer strands the checkout — the drawer offers the removal on its own afterwards.
- **A repository on a host that is neither GitHub nor GitLab says so up front**, instead of spending the request and reporting whatever the wrong API answered.
- **Ctrl+Shift+C copies in the terminal**, Git Bash on Windows included, and the terminal keeps focus afterwards. (#536, @OpenX123)

## Improved

- **Updated bundled agents:** OpenClaw 2026.8.1, Hermes 0.21.0, CodeBuddy 2.143.0, Grok 1.0.13, Qoder 1.1.40.
- **The chips above the composer explain themselves on hover** with a themed hint that names what the chip is and carries the setting's own blurb.
- **Issues and pull requests with hundreds of comments open quickly**, rendering what's on screen and loading the rest as you scroll.
- **The Reasoning Effort dropdowns are gone from the Claude Code and Codex settings pages**, since the composer's per-session picker is what actually decides how hard a turn thinks — and the Codex one additionally wrote a `model_reasoning_effort = "high"` you never asked for whenever you saved any other setting.
- **With "Show worktree branches" on, a repository's own row names its branch** — `main [ root ]`, lined up with its worktree siblings, instead of a bare "root".
- **The status-bar launcher drops its "Sessions" group**, whose two rows act on a single folder the launcher doesn't have and already live in the folder's context menu and on the Folders header.
- **The repository panel remembers the Issues / Pull requests switcher** across sessions, and drops its Beta mark.

## Fixed

- **A self-hosted GitLab no longer fails with `410`** — an instance whose hostname doesn't announce it was treated as GitHub Enterprise, so codeg asks the instance what it is now. (#611)
- **An issue you file from the repository panel appears in the list right away**, without a manual refresh.
- **The macOS icon is no longer a size bigger than everything else in the Dock.** (#610)
- **Finished replies stop growing stray `*` and `_`** after patterns like `foo/*` and `_meta`. (#487, @Adam-Dalloul)
- **A message that `@`-mentions an agent reopens clean**, with no blank band under the text and no internal routing text spilling into the bubble or the sidebar title.
- **The thread re-pins to the bottom when the panel around it resizes**, so the live stats bar, a card opening in the composer or the terminal returning no longer leaves the end of a turn below the fold.
- **The rule under a reply's header is visible in both themes.**
- **A long stretch of thinking no longer slows the conversation as it streams** — measured 5.9s down to 2.1s over 120 updates.
- **Merging a task stops claiming another task of the project is already merging**, when the one it counted was the task you had just accepted.
- **Deleting a task's worktree is refused while it still holds uncommitted changes**, instead of forcing the removal and taking that work with it.
- **A resumed delegation draws as one sub-agent card** that survives reopening the conversation from history.
- **Cursor's permission switch shows the mode the session actually runs in.**
- **A folder's colour tints its own title** instead of repainting the hover, selection and muted text of every row beneath it.

Thanks to @Adam-Dalloul, @OpenX123 and @ZY-Dragon03 for contributing to this release.

-----------------------------

# 发布版本 0.30.0

会话有了一块无限画布:把它们摊开在同一块板上,几个智能体并排开工。
多智能体协作也更稳了:`@` 到的智能体会走 codeg 的委托通道、成为一个你能打开的会话,被取消或异常中断的子任务也能从断点接着做。

## 新增

- **「无限会话」:一整块把工作区摊开的画布**——文件夹区域、智能体区域、自己收拢的收藏区、便签,以及能直接展开成真正在跑的会话的卡片,几个智能体可以在同一块板上并排干活,不用一个标签页一个标签页地切。
- **板上的整理全靠拖**:把卡片拖出来就钉住,拖进区域就收进去,什么都能上色,还能自动排布、导出 PNG,或者一键按当前工作区铺满整块板。
- **侧边栏的文件夹可以分组**——有名字、可上色的一条带子,和没分组的文件夹共用同一个排序、可以互相穿插,标题上的进行中徽章是把组里所有文件夹(含工作树)的运行会话数加起来的。
- **输入框下方的分支弹层多了一段「工作树分支」**,主工作树排在最前,其余按 `task/` 这样的前缀折起来。
- **Cursor 的模型选择器从两百来个 id 变成「系列 + 旋钮」**,思考档位、Effort 和 Fast 摆在系列名旁边,只在这个系列真的分这个档时才出现。(#607@ZY-Dragon03)
- **被取消或异常中断的委托子任务可以从断点接着做**,用的还是原来的任务 id 和同一个会话,查询状态和取消都照常可用。
- **提示词里 `@` 到的智能体会走 codeg 的委托通道**,子任务成为一个你能打开的会话,而不是智能体自己在 codeg 之外偷偷起一个。
- **任务可以在续跑前先压缩上下文**,阈值自己定,压缩前后的占用都记在任务时间线上。
- **取消任务时可以顺手删掉它的工作树**,当时没勾也不会把这个 checkout 撂下——任务抽屉里之后还能单独删。
- **仓库面板遇到既不是 GitHub 也不是 GitLab 的地址会直接说明**,不再拿错的 API 去试、然后回一句看不懂的报错。
- **终端支持 Ctrl+Shift+C 复制**,Windows 下用 Git Bash 也可以,复制完焦点还留在终端里。(#536@OpenX123)

## 改进

- **内置智能体版本更新:** OpenClaw 2026.8.1、Hermes 0.21.0、CodeBuddy 2.143.0、Grok 1.0.13、Qoder 1.1.40。
- **输入框上那排选择器悬停时给的是带样式的提示条**,写明这颗按钮管的是什么,智能体自带说明时一并显示。
- **上百条评论的议题和 PR 打开变快了**,评论按可视范围渲染,往下滚就接着加载。
- **Claude Code 和 Codex 设置页里的「推理强度」下拉去掉了**,真正决定一轮想多久的是输入框上的档位选择器——Codex 那个还会在你保存任何别的设置时,顺手写一行你从没要求过的 `model_reasoning_effort = "high"`。
- **打开「显示工作树分支」时,仓库自身那一行会写出它在哪个分支上**,显示成 `main [ root ]`,和下面几个工作树对齐,不再是光秃秃一个「root」。
- **状态栏快捷入口去掉了「会话」那一组**,那两项针对的是某一个文件夹、而快捷入口没有文件夹概念,它们在文件夹右键菜单和「文件夹」区域标题上都有。
- **仓库面板会记住「议题 / 合并请求」的切换**,Beta 标记也去掉了。

## 修复

- **自建 GitLab 不再报 `410`**——域名看不出身份的实例以前会被当成 GitHub 企业版走错 API,现在直接问实例本身是什么。(#611)
- **在仓库面板里新建的议题会立刻出现在列表中**,不用手动刷新。
- **macOS 程序坞里的图标不再比旁边的应用大一圈。**(#610)
- **回复末尾不再多出零散的 `*` 和 `_`**,`foo/*`、`_meta` 这类写法不会被补上多余的收尾符号。(#487@Adam-Dalloul)
- **`@` 智能体的消息重新打开后是干净的**,正文下不再多出一条空白带,也不会把内部路由信息显示在气泡和侧边栏标题里。
- **面板尺寸变化时对话会重新贴回底部**,实时统计条出现、输入框展开卡片、终端面板回来,都不会再把当轮末尾留在屏幕外。
- **回复标题栏下面那条分隔线,深浅两种主题下都看得见了。**
- **模型长时间思考时不再越写越卡**,实测 120 次增量下从 5.9 秒降到 2.1 秒。
- **点合并不会再误报「本项目另有任务正在合并」**,它数进去的正是你刚刚点下的这一个。
- **工作树里还有未提交的改动时,删除会被拒绝**,不再直接强删、把那些改动一并带走。
- **恢复一个被取消的委托任务只画一张子智能体卡片**,重新打开历史时这张卡也不会消失。
- **Cursor 的授权开关显示的模式,就是会话真正在跑的模式。**
- **文件夹的颜色只染它自己的标题**,不再把底下每一行的悬停、选中和次要文字全部重刷一遍。

感谢 @Adam-Dalloul@OpenX123@ZY-Dragon03 为本次发布做出的贡献。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants