Wave 3: 补齐九个适配器(Qwen/CodeBuddy/Cline/Copilot/Crush/Goose/Aider/Cursor/Warp)

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
leefer
2026-08-25 19:13:37 +08:00
co-authored by multica-agent
parent 4a2be5899d
commit b0d7124170
13 changed files with 1345 additions and 193 deletions
+32 -1
View File
@@ -214,7 +214,24 @@
"type": { "type": "string", "enum": ["string", "url", "enum", "bool"] },
"storage": { "type": "string", "enum": ["file", "env", "keyring"], "description": "keyring 永不进普通备份" },
"platforms": { "type": "array", "items": { "type": "string", "enum": ["windows", "linux"] } },
"docs_url": { "type": "string", "format": "uri" }
"docs_url": { "type": "string", "format": "uri" },
"options": {
"type": "array",
"description": "enum 类型的可选值(value + 中文名)",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["value", "label_zh"],
"properties": {
"value": { "type": "string" },
"label_zh": { "type": "string" }
}
}
},
"group": {
"type": "string",
"description": "表单分组:auth(授权/登录)| common(常用配置)| advanced(高级配置,默认折叠)"
}
}
}
}
@@ -236,6 +253,8 @@
"additionalProperties": false,
"properties": {
"quickstart_zh": { "type": "string" },
"install_zh": { "type": "string", "description": "安装说明(中文)" },
"auth_zh": { "type": "string", "description": "授权说明(中文)" },
"commands": {
"type": "array",
"items": {
@@ -247,6 +266,18 @@
}
}
},
"params": {
"type": "array",
"description": "常用参数(中文)",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"param": { "type": "string" },
"desc_zh": { "type": "string" }
}
}
},
"updated_at": { "type": "string", "format": "date" },
"risks_zh": { "type": "array", "items": { "type": "string" } }
}
+139 -21
View File
@@ -1,28 +1,146 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · Aideraider.chat)(Wave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# 注意:官方独立安装器 aider-install / PyPI aider-chat;不走 brew;独立 Python 3.12 环境
# ============================================================
id: aider
name: Aider
name_zh: Aider
vendor: aider.chat
status: available
adapter_version: 1.1.0
license: Apache-2.0
platforms:
windows:
architectures: [x64]
notes: 官方 PS 脚本 / PyPI;独立 Python 3.12 环境
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://aider.chat
docs: https://aider.chat/docs/
allowed_hosts: [aider.chat, pypi.org, github.com]
runtime_deps:
- id: uv
semver_range: ">=0"
required_for: [install]
- id: python
semver_range: ">=3.12"
required_for: [run]
install:
preferred: official_script
channels:
- id: official_script
platforms: [windows]
script:
url: https://aider.chat/install.ps1
kind: powershell_irm
elevate: never
post_checks: [detect]
- id: official_script
platforms: [linux]
script:
url: https://aider.chat/install.sh
kind: bash_pipe
elevate: never
post_checks: [detect]
- id: pypi_uv
platforms: [windows, linux]
command: [uv, tool, install, aider-chat]
package: aider-chat
elevate: never
post_checks: [detect]
detect:
executable: aider
version_args: ["--version"]
update:
method: pypi_upgrade
command: [uv, tool, upgrade, aider-chat]
uninstall:
method: package_manager
command: [uv, tool, uninstall, aider-chat]
keep_config_default: true
authorization:
modes:
- mode: api_key
env_keys: [ANTHROPIC_API_KEY, OPENAI_API_KEY]
notes_zh: 仅 API Key:各家模型 KeyAnthropic / OpenAI 等)
# 配置机制(调研底稿 Aider 章节):YAML。用户级 ~/.aider.conf.yml(项目级 .aider.conf.yml)。
configuration:
files:
- path: "~/.aider.conf.yml"
format: yaml
scope: user
environment:
- key: ANTHROPIC_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: model
label_zh: 主模型
group: common
help_zh: 官方键 modelAider 主模型(如 anthropic/claude-sonnet-4
required: false
sensitive: false
type: string
storage: file
docs_url: https://aider.chat/docs/configuration/aider_conf.html
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应 ANTHROPIC_API_KEY / OPENAI_API_KEY 等环境变量)
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://aider.chat/docs/configuration/api-keys.html
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: dependency.uv
- rule_id: dependency.python_below_min
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后配置 API Key,在项目目录运行 `aider`,或用 `aider --message "提示词"` 无头执行。
install_zh: 推荐官方独立安装器 aider-installWindows 用 install.ps1 / Linux 用 install.sh,自动装独立 Python 3.12 环境);也可用 PyPI `uv tool install aider-chat`。不走 brew。
auth_zh: 仅 API Key:各家模型 KeyANTHROPIC_API_KEY / OPENAI_API_KEY 等),保存后经环境变量注入。
commands:
- cmd: aider
desc_zh: 启动交互式会话
- cmd: aider --message "提示词"
desc_zh: 无头单次执行
- cmd: aider --model <模型>
desc_zh: 指定模型
- cmd: aider --version
desc_zh: 显示版本号
- cmd: aider --yes
desc_zh: 自动接受所有建议
params:
- param: --message / --msg
desc_zh: 无头单次执行
- param: --model
desc_zh: 指定模型
- param: --yes
desc_zh: 自动接受所有建议
- param: --edit-format
desc_zh: 编辑格式
- param: --chat-mode
desc_zh: 会话模式
updated_at: "2026-08-25"
risks_zh:
- 不走 brew(官方不推荐,安装路径与依赖易出问题)
- 官方独立安装器自动装独立 Python 3.12 环境,本适配器声明 uv/python 依赖仅针对 PyPI 渠道
- 项目级 .aider.conf.yml 与多 provider 高级配置本表单不覆盖,以官方文档为准
+116 -21
View File
@@ -1,28 +1,123 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造。
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · ClineWave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# ============================================================
id: cline
name: Cline
name_zh: Cline
vendor: Cline
status: available
adapter_version: 1.1.0
license: Apache-2.0
platforms:
windows:
architectures: [x64]
notes: 原生支持(npm,非 WSL
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://github.com/cline/cline
docs: https://docs.cline.bot/
allowed_hosts: [registry.npmjs.org, github.com, docs.cline.bot]
runtime_deps:
- id: node
semver_range: ">=22"
required_for: [install, run]
install:
preferred: npm
channels:
- id: npm
platforms: [windows, linux]
command: [npm, install, -g, "cline"]
package: cline
elevate: never
post_checks: [detect]
- id: npm
platforms: [windows, linux]
command: [npm, install, -g, "cline@nightly"]
package: cline
elevate: never
post_checks: [detect]
detect:
executable: cline
version_args: ["--version"]
update:
method: npm_update
command: [npm, update, -g, "cline"]
uninstall:
method: npm_uninstall
command: [npm, uninstall, -g, "cline"]
keep_config_default: true
authorization:
modes:
- mode: browser_oauth
command: [cline]
notes_zh: 运行 cline 后按提示浏览器登录(各家模型账号)
- mode: api_key
env_keys: [ANTHROPIC_API_KEY, OPENAI_API_KEY]
notes_zh: 各家 API Key(存入系统钥匙串;Cline 密钥本就进系统 keychain
# 配置机制(调研底稿 Cline 章节):用户级 ~/.cline/data/settings/providers.jsonJSON)。
# 密钥已用系统 keychain(与 AgentDock 密钥库策略一致)。
configuration:
files:
- path: "~/.cline/data/settings/providers.json"
format: json
scope: user
environment:
- key: ANTHROPIC_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应 ANTHROPIC_API_KEY 等环境变量)
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://docs.cline.bot/
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: dependency.node_below_min
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后运行 `cline` 登录,或用 `cline -p "提示词"` 无头执行。
install_zh: 推荐 `npm install -g cline`(本适配器默认渠道,需 Node 22+);另有 nightly 通道 `npm install -g cline@nightly`。
auth_zh: ① 浏览器登录(运行 `cline` 后按提示);② API Key(各家模型,存入系统钥匙串);③ 本地模型(Ollama/LM Studio 等)。密钥本就进系统 keychain。
commands:
- cmd: cline
desc_zh: 启动交互式会话
- cmd: cline -p "提示词"
desc_zh: 无头单次执行
- cmd: cline --model <模型>
desc_zh: 指定模型
- cmd: cline --version
desc_zh: 显示版本号
params:
- param: -p / --print
desc_zh: 无头模式执行后退出
- param: --model
desc_zh: 指定模型
- param: --allowedTools
desc_zh: 预授权工具
- param: --continue
desc_zh: 续接最近会话
updated_at: "2026-08-25"
risks_zh:
- 密钥存入系统 keychain(与 AgentDock 密钥库策略一致,不额外落明文)
- providers.json 多 provider 高级配置本表单不覆盖,以官方文档为准
+151 -21
View File
@@ -1,28 +1,158 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造。
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · CodeBuddy Code(腾讯)(Wave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3 + 真机实测
# 真机:codebuddy --version → 2.132.0;配置 ~/.codebuddy/settings.jsonJSON,实测补齐)
# 双升级路径:npm@tencent-ai/codebuddy-code/ 原生(codebuddy install stable
# ============================================================
id: codebuddy
name: CodeBuddy Code
name_zh: CodeBuddy Code
vendor: 腾讯
status: available
adapter_version: 1.1.0
license: 专有(仅官方渠道安装、不重打包)
platforms:
windows:
architectures: [x64]
notes: 原生支持(npm / 原生线,非 WSL)
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://codebuddy.ai
docs: https://codebuddy.ai/docs
allowed_hosts: [registry.npmjs.org, codebuddy.ai, github.com]
runtime_deps:
- id: node
semver_range: ">=22"
required_for: [install, run]
install:
preferred: npm
channels:
- id: npm
platforms: [windows, linux]
command: [npm, install, -g, "@tencent-ai/codebuddy-code"]
package: "@tencent-ai/codebuddy-code"
elevate: never
post_checks: [detect]
- id: official_script
platforms: [windows, linux]
command: [codebuddy, install, stable]
package: codebuddy-native
elevate: never
post_checks: [detect]
detect:
executable: codebuddy
version_args: ["--version"]
version_regex: "^v?(\\d+\\.\\d+\\.\\d+)"
update:
method: npm_update
command: [npm, update, -g, "@tencent-ai/codebuddy-code"]
uninstall:
method: npm_uninstall
command: [npm, uninstall, -g, "@tencent-ai/codebuddy-code"]
keep_config_default: true
authorization:
modes:
- mode: browser_oauth
command: [codebuddy]
notes_zh: 运行 codebuddy 后按提示用微信扫码登录(也可在会话中输入 /login)
- mode: local_tui
command: [codebuddy]
notes_zh: 在一次性终端窗口内完成微信扫码登录
# 配置机制(真机实测补齐):~/.codebuddy/settings.jsonJSON)。
# 官方未披露配置文件位置,本波真机定位到 ~/.codebuddy/settings.json
# 主要配置经 `codebuddy config set [-g] <key> <value>` 管理,API Key 未确认(以微信登录为主)。
configuration:
files:
- path: "~/.codebuddy/settings.json"
format: json
scope: user
environment: []
fields:
- id: model
label_zh: 默认模型
group: common
help_zh: 默认模型 ID(对应 --model 参数,如 deepseek-v4-pro / glm-5.3 等);可用 `codebuddy config set -g model <id>` 设置
required: false
sensitive: false
type: string
storage: file
docs_url: https://codebuddy.ai/docs
- id: theme
label_zh: 主题
group: common
help_zh: 界面主题(对应 `codebuddy config set -g theme <dark|light>`
required: false
sensitive: false
type: enum
storage: file
docs_url: https://codebuddy.ai/docs
options:
- value: dark
label_zh: 深色
- value: light
label_zh: 浅色
- id: sandbox.enabled
label_zh: 沙箱模式
group: advanced
help_zh: 官方键 sandbox.enabled,是否启用沙箱(默认关闭)
required: false
sensitive: false
type: bool
storage: file
docs_url: https://codebuddy.ai/docs
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: dependency.node_below_min
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后运行 `codebuddy` 微信扫码登录,或用 `codebuddy -p "提示词"` 无头执行。
install_zh: 双升级路径:① npm `@tencent-ai/codebuddy-code`(本适配器默认渠道,需 Node 22+);② 原生线 `codebuddy install stable`。两线均走官方渠道,不重打包。
auth_zh: 微信扫码登录(运行 `codebuddy` 后按提示,或在会话中输入 /login)。API Key 官方未确认,本适配器不提供。
commands:
- cmd: codebuddy
desc_zh: 启动交互式会话
- cmd: codebuddy -p "提示词"
desc_zh: 无头单次执行(--print
- cmd: codebuddy --output-format json -p "提示词"
desc_zh: 以 JSON 输出
- cmd: codebuddy --model <模型>
desc_zh: 指定模型
- cmd: codebuddy config set -g theme dark
desc_zh: 修改全局配置项
- cmd: codebuddy install stable
desc_zh: 安装原生线稳定版
- cmd: codebuddy update
desc_zh: 检查并安装更新
- cmd: codebuddy doctor
desc_zh: 自更新健康检查
params:
- param: -p / --print
desc_zh: 无头模式,执行后退出
- param: --output-format
desc_zh: 输出格式(text / json / stream-json
- param: --model
desc_zh: 指定模型 ID
- param: -c / --continue
desc_zh: 续接最近会话
- param: -y / --dangerously-skip-permissions
desc_zh: 跳过权限检查(仅限无外网沙箱)
updated_at: "2026-08-25"
risks_zh:
- 配置路径官方未披露,本波真机实测定位到 ~/.codebuddy/settings.json
- API Key 官方未确认,本适配器仅提供微信登录,不提供 API Key 配置
- 专有许可:只引导官方渠道安装,不重打包、不修改二进制
+110 -21
View File
@@ -1,28 +1,117 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · GitHub Copilot CLIWave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# 备注:登录方式以本机终端 /login 为主;无头用 PAT 环境变量授权;需 Copilot 订阅
# ============================================================
id: copilot
name: Copilot CLI
name_zh: Copilot CLI
vendor: GitHub
status: available
adapter_version: 1.1.0
license: 专有(仅官方渠道安装、不重打包)
platforms:
windows:
architectures: [x64]
notes: winget 渠道需 PowerShell 6+winget 安装 GitHub.Copilot
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://github.com/features/copilot
docs: https://docs.github.com/copilot
allowed_hosts: [github.com, docs.github.com, registry.npmjs.org]
runtime_deps: []
install:
preferred: winget
channels:
- id: winget
platforms: [windows]
command: [winget, install, GitHub.Copilot]
package: GitHub.Copilot
elevate: never
post_checks: [detect]
- id: npm
platforms: [windows, linux]
command: [npm, install, -g, "@github/copilot"]
package: "@github/copilot"
elevate: never
post_checks: [detect]
detect:
executable: copilot
version_args: ["--version"]
version_regex: "(\\d+\\.\\d+\\.\\d+)"
update:
method: winget_upgrade
command: [winget, upgrade, GitHub.Copilot]
uninstall:
method: package_manager
command: [winget, uninstall, GitHub.Copilot]
keep_config_default: true
authorization:
modes:
- mode: local_tui
command: [copilot]
notes_zh: 运行 copilot 后输入 /login 在终端内登录 GitHub 账号
- mode: api_key
env_keys: [GH_TOKEN]
notes_zh: 无头授权:设置 GitHub PAT(GH_TOKEN)环境变量后无需交互登录
# 配置机制(调研底稿 Copilot 章节):JSON + 环境变量(COPILOT_*)。
# 无头授权用 PAT 环境变量;交互登录经 /login 写回本机会话。
configuration:
files: []
environment:
- key: GH_TOKEN
sensitive: true
maps_to_field: api_key
- key: COPILOT_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: api_key
label_zh: 访问令牌(PAT
group: auth
help_zh: 存入系统密钥库(对应 GH_TOKEN / COPILOT_API_KEY),用于无头授权;需 Copilot 订阅
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://docs.github.com/copilot
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: version_conflict.multiple_copies
documentation:
quickstart_zh: 安装后运行 `copilot`,在终端输入 `/login` 登录 GitHub 账号;或用 `copilot -p "提示词"` 无头执行。
install_zh: Windows 推荐 winget `GitHub.Copilot`(需 PowerShell 6+);双端可用 npm `@github/copilot`。Ubuntu 另有官方脚本 / brew 渠道。
auth_zh: ① 本机终端登录:运行 `copilot` 输入 /login(交互);② 无头 PAT:设置 GH_TOKEN(或 COPILOT_API_KEY)环境变量。需要有效 Copilot 订阅(个人/商业/企业)。
commands:
- cmd: copilot
desc_zh: 启动交互式会话
- cmd: copilot -p "提示词"
desc_zh: 无头单次执行
- cmd: copilot --help
desc_zh: 查看帮助
params:
- param: -p / --print
desc_zh: 无头模式执行后退出
- param: --output-format
desc_zh: 输出格式
- param: --model
desc_zh: 指定模型
updated_at: "2026-08-25"
risks_zh:
- 需要有效 Copilot 订阅(免费 GitHub 账号不提供 Copilot CLI 完整能力)
- 真机 `copilot --version` 返回「GitHub Copilot CLI 1.0.80.」,版本检测已据此确认
- winget 渠道需 PowerShell 6+(见 platforms.notes
+128 -21
View File
@@ -1,28 +1,135 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · CrushCharm)(Wave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# 注意:crushrc 是 Bash 语法配置,走 Wave 1 专用解析器(只识别内建赋值,不执行任意脚本)
# ============================================================
id: crush
name: Crush
name_zh: Crush
vendor: Charm
status: available
adapter_version: 1.1.0
license: FSLFunctional Source License,仅引导官方安装、不重分发源码)
platforms:
windows:
architectures: [x64]
notes: winget / scoop / Releases 渠道
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://github.com/charmbracelet/crush
docs: https://github.com/charmbracelet/crush
allowed_hosts: [github.com, charm.sh]
runtime_deps: []
install:
preferred: winget
channels:
- id: winget
platforms: [windows]
command: [winget, install, charmbracelet.crush]
package: charmbracelet.crush
elevate: never
post_checks: [detect]
- id: apt
platforms: [linux]
command: [sudo, apt-get, install, -y, crush]
package: crush
elevate: required
elevate_reason_zh: 官方 apt 仓库(GPG)安装需要管理员权限
post_checks: [detect]
- id: github_release
platforms: [windows, linux]
package: crush
elevate: never
post_checks: [detect]
detect:
executable: crush
version_args: ["--version"]
version_unconfirmed: true
update:
method: winget_upgrade
command: [winget, upgrade, charmbracelet.crush]
uninstall:
method: package_manager
command: [winget, uninstall, charmbracelet.crush]
keep_config_default: true
authorization:
modes:
- mode: api_key
env_keys: [OPENAI_API_KEY, ANTHROPIC_API_KEY]
notes_zh: 各家模型 API Key(环境变量注入);crushrc 内亦可用 export 语句
# 配置机制:crushrc 是 Bash 语法配置(~/.config/crush/crushrc)。
# 走 Wave 1 专用解析器:只识别内建赋值(export KEY=value 等),不执行任意脚本,未知行原样保留。
configuration:
files:
- path: "~/.config/crush/crushrc"
format: crushrc
scope: user
environment:
- key: OPENAI_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应 OPENAI_API_KEY 等环境变量);crushrc 内也可用 export 注入
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://github.com/charmbracelet/crush
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后配置 API Key,运行 `crush` 进入会话,或用 `crush -p "提示词"` 无头执行。
install_zh: Windows 推荐 winget `charmbracelet.crush`Ubuntu 用官方 apt 仓库(GPG)。备选 scoop / GitHub Releases(本适配器 npm 渠道按调研底稿标记为备选,非默认)。
auth_zh: 仅 API Key(环境变量注入):OPENAI_API_KEY / ANTHROPIC_API_KEY 等各家模型 Key。crushrc 内也可用 export 语句。
commands:
- cmd: crush
desc_zh: 启动交互式会话
- cmd: crush "提示词"
desc_zh: 直接以提示词启动
- cmd: crush -p "提示词"
desc_zh: 无头单次执行
- cmd: crush --session <名称>
desc_zh: 指定会话名
- cmd: crush --continue
desc_zh: 续接最近会话
- cmd: crush --list-sessions
desc_zh: 列出会话
- cmd: crush --model <模型>
desc_zh: 指定模型
- cmd: crush --version
desc_zh: 显示版本号
params:
- param: -p / --print
desc_zh: 无头模式单次执行
- param: --session
desc_zh: 指定会话名
- param: --continue
desc_zh: 续接最近会话
- param: --model
desc_zh: 指定模型
- param: --list-sessions
desc_zh: 列出会话
updated_at: "2026-08-25"
risks_zh:
- crushrc 是 Bash 语法配置,AgentDock 走专用解析器,只识别内建赋值、不执行任意脚本
- --version 官方未确认,适配器已标 version_unconfirmed(命令细节以 `crush --help` 实测为准)
- FSL 许可:仅引导官方安装,不重分发源码、不修改二进制
+149 -21
View File
@@ -1,28 +1,156 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · Cursor CLIWave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3 + 真机实测
# 真机:agent --version → 2026.08.11-e8db854;配置 ~/.cursor/cli-config.jsonJSON
# 铁律:命令名是 `agent`(不是 cursor-agent);只有官方脚本渠道,无 npm。
# ============================================================
id: cursor
name: Cursor CLI
name_zh: Cursor CLI
vendor: Cursor
status: available
adapter_version: 1.1.0
license: 专有(仅官方渠道安装、不重打包)
platforms:
windows:
architectures: [x64]
notes: 仅官方脚本渠道;命令名为 agent
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://cursor.com
docs: https://cursor.com/docs/cli
allowed_hosts: [cursor.com, api2.cursor.sh]
runtime_deps: []
install:
preferred: official_script
channels:
- id: official_script
platforms: [windows]
script:
url: https://cursor.com/install.ps1
kind: powershell_irm
elevate: never
post_checks: [detect]
- id: official_script
platforms: [linux]
script:
url: https://cursor.com/install.sh
kind: bash_pipe
elevate: never
post_checks: [detect]
detect:
executable: agent
version_args: ["--version"]
version_regex: "^(\\d{4}\\.\\d{2}\\.\\d{2})"
path_hints:
- "%LOCALAPPDATA%\\cursor-agent\\agent.cmd"
update:
method: self_update_cmd
command: [agent, update]
uninstall:
method: manual_delete
command: []
keep_config_default: true
authorization:
modes:
- mode: browser_oauth
command: [agent, login]
status_command: [agent, status]
notes_zh: 浏览器登录 Cursor 账号(NO_OPEN_BROWSER 可禁用自动打开浏览器)
- mode: api_key
env_keys: [CURSOR_API_KEY]
notes_zh: API KeyCURSOR_API_KEY 环境变量或 --api-key 参数)
# 配置机制(真机实测):~/.cursor/cli-config.jsonJSON)。
# 账户体系为主(authInfo 存 OAuth 登录态);model.modelId / approvalMode 可经文件或 agent 命令调整。
configuration:
files:
- path: "~/.cursor/cli-config.json"
format: json
scope: user
environment:
- key: CURSOR_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: model.modelId
label_zh: 默认模型
group: common
help_zh: 官方键 model.modelId,默认模型(真机为 default,即 auto
required: false
sensitive: false
type: string
storage: file
docs_url: https://cursor.com/docs/cli
- id: approvalMode
label_zh: 审批模式
group: advanced
help_zh: 官方键 approvalModeallowlist / yolo / default 等)
required: false
sensitive: false
type: string
storage: file
docs_url: https://cursor.com/docs/cli
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应 CURSOR_API_KEY 环境变量;一般用账号登录即可,无需 API Key)
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://cursor.com/docs/cli
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后运行 `agent login` 登录 Cursor 账号,或用 `agent -p "提示词"` 无头执行。
install_zh: 仅官方脚本渠道(Windows install.ps1 / Linux install.sh),无 npm。`agent` 命令随 Cursor 安装(也可在 Cursor 内「Install agent command」)。
auth_zh: ① 浏览器登录:`agent login``agent status` 查看状态);② API KeyCURSOR_API_KEY 环境变量或 --api-key。
commands:
- cmd: agent
desc_zh: 启动交互式会话
- cmd: agent -p "提示词"
desc_zh: 无头单次执行
- cmd: agent login
desc_zh: 浏览器登录 Cursor 账号
- cmd: agent status
desc_zh: 查看认证状态
- cmd: agent --model <模型>
desc_zh: 指定模型
- cmd: agent update
desc_zh: 更新到最新版
- cmd: agent --list-models
desc_zh: 列出可用模型
- cmd: agent --version
desc_zh: 显示版本号
params:
- param: -p / --print
desc_zh: 无头模式执行后退出
- param: --model
desc_zh: 指定模型
- param: --output-format
desc_zh: 输出格式(text / json / stream-json
- param: --sandbox
desc_zh: 沙箱模式(enabled / disabled
- param: --list-models
desc_zh: 列出可用模型
updated_at: "2026-08-25"
risks_zh:
- 命令名是 `agent`(不是 cursor-agent),detect 以 agent 为准
- 真机 `agent --version` 返回日期式版本 2026.08.11-e8db854version_regex 已据此填写)
- 账户体系为主,cli-config.json 高级键本表单只覆盖常用项,以官方文档为准
+136 -21
View File
@@ -1,28 +1,143 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · GooseLinux 基金会 AAIF / Block)(Wave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# 注意:配置 YAMLWindows 路径差异 %APPDATA%\Block\goose\;密钥默认进系统钥匙串
# ============================================================
id: goose
name: Goose
name_zh: Goose
vendor: Linux 基金会(AAIF
status: available
adapter_version: 1.1.0
license: Apache-2.0
platforms:
windows:
architectures: [x64]
notes: 官方 download_cli.ps1;配置位于 %APPDATA%\Block\goose\
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://block.github.io/goose/
docs: https://block.github.io/goose/docs/
allowed_hosts: [github.com, block.github.io]
runtime_deps: []
install:
preferred: official_script
channels:
- id: official_script
platforms: [windows]
script:
url: https://github.com/block/goose/releases/download/stable/download_cli.ps1
kind: powershell_irm
elevate: never
post_checks: [detect]
- id: official_script
platforms: [linux]
script:
url: https://github.com/block/goose/releases/download/stable/download_cli.sh
kind: bash_pipe
elevate: never
post_checks: [detect]
- id: github_release
platforms: [windows, linux]
package: goose
elevate: never
post_checks: [detect]
detect:
executable: goose
version_args: ["--version"]
update:
method: self_update_cmd
command: [goose, update]
uninstall:
method: manual_delete
command: []
keep_config_default: true
authorization:
modes:
- mode: api_key
env_keys: [ANTHROPIC_API_KEY, OPENAI_API_KEY]
notes_zh: 各家模型 API Key(密钥默认进系统钥匙串);另有订阅 ACP 接入
# 配置机制(调研底稿 Goose 章节):YAML。Windows 路径为 %APPDATA%\Block\goose\config.yaml
# Linux 为 ~/.config/goose/config.yaml。密钥默认进系统钥匙串,不写入 config.yaml。
configuration:
files:
- path: "%APPDATA%\\Block\\goose\\config.yaml"
format: yaml
scope: user
environment:
- key: ANTHROPIC_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: GOOSE_PROVIDER
label_zh: 默认 Provider
group: common
help_zh: 官方键 GOOSE_PROVIDER(如 anthropic / openai / databricks / ollama 等)
required: false
sensitive: false
type: string
storage: file
docs_url: https://block.github.io/goose/docs/
- id: GOOSE_MODEL
label_zh: 默认模型
group: common
help_zh: 官方键 GOOSE_MODEL,默认模型
required: false
sensitive: false
type: string
storage: file
docs_url: https://block.github.io/goose/docs/
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统钥匙串(Goose 密钥本就默认进系统钥匙串,不写入 config.yaml
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://block.github.io/goose/docs/
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后配置 provider 与 API Key,运行 `goose` 进入会话,或用 `goose -p "提示词"` 无头执行。
install_zh: Windows 用官方 download_cli.ps1Ubuntu 用官方 download_cli.sh。备选 GitHub Releases 二进制 / brew / deb。
auth_zh: ① API Key:各家模型 KeyAnthropic/OpenAI 等),密钥默认进系统钥匙串;② 订阅 ACPAgent Client Protocol)接入。
commands:
- cmd: goose
desc_zh: 启动交互式会话
- cmd: goose -p "提示词"
desc_zh: 无头单次执行
- cmd: goose configure
desc_zh: 交互式配置 provider/模型
- cmd: goose --version
desc_zh: 显示版本号
params:
- param: -p / --print
desc_zh: 无头模式执行后退出
- param: --provider
desc_zh: 指定 provider
- param: --model
desc_zh: 指定模型
- param: --version
desc_zh: 显示版本号
updated_at: "2026-08-25"
risks_zh:
- Windows 配置路径为 %APPDATA%\Block\goose\Linux 为 ~/.config/goose/),本适配器以 Windows 路径为准
- 密钥默认进系统钥匙串,AgentDock 与之对齐,不把 Key 写入 config.yaml
- extensions / profiles 等高级配置本表单不覆盖,以官方文档为准
+140 -21
View File
@@ -1,28 +1,147 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造。
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · Qwen Code(阿里巴巴)(Wave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3 + 真机实测
# 真机:qwen --version → 0.21.15;配置 ~/.qwen/settings.jsonJSONenv/modelProviders/model
# ============================================================
id: qwen
name: Qwen Code
name_zh: Qwen Code
vendor: 阿里巴巴
status: available
adapter_version: 1.1.0
license: Apache-2.0
platforms:
windows:
architectures: [x64]
notes: 原生支持(npm / 阿里 OSS 独立脚本,非 WSL)
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://github.com/QwenLM/qwen-code
docs: https://qwen.ai/
allowed_hosts: [registry.npmjs.org, github.com, qwen.ai, dashscope.aliyuncs.com]
runtime_deps:
- id: node
semver_range: ">=22"
required_for: [install, run]
install:
preferred: npm
channels:
- id: npm
platforms: [windows, linux]
command: [npm, install, -g, "@qwen-code/qwen-code"]
package: "@qwen-code/qwen-code"
elevate: never
post_checks: [detect]
detect:
executable: qwen
version_args: ["--version"]
version_regex: "^v?(\\d+\\.\\d+\\.\\d+)"
update:
method: npm_update
command: [npm, update, -g, "@qwen-code/qwen-code"]
uninstall:
method: npm_uninstall
command: [npm, uninstall, -g, "@qwen-code/qwen-code"]
keep_config_default: true
authorization:
modes:
- mode: api_key
env_keys: [DASHSCOPE_API_KEY]
notes_zh: 免费 OAuth 已停用(qwen auth 命令已移除),仅支持 API Key(阿里云百炼 DashScope;也可在 settings.json 接 OpenAI 兼容端点)
# 配置机制(真机 ~/.qwen/settings.jsonJSON):model.name / model.baseUrl 设默认模型;
# env 块注入环境变量(API Key);modelProviders 接多 provider(含 OpenAI 兼容端点)。
configuration:
files:
- path: "~/.qwen/settings.json"
format: json
scope: user
environment:
- key: DASHSCOPE_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: model.name
label_zh: 默认模型
group: common
help_zh: 官方键 model.namesettings.json 中的默认模型
required: false
sensitive: false
type: string
storage: file
docs_url: https://qwen.ai/
- id: model.baseUrl
label_zh: Base URL
group: advanced
help_zh: 官方键 model.baseUrl,默认模型服务端点(OpenAI 兼容网关/代理场景)
required: false
sensitive: false
type: url
storage: file
docs_url: https://qwen.ai/
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应环境变量 DASHSCOPE_API_KEY,阿里云百炼申请)
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://qwen.ai/
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: dependency.node_below_min
- rule_id: version_conflict.multiple_copies
- rule_id: config.corrupt
documentation:
quickstart_zh: 安装后配置 API Key,用 `qwen -p "提示词"` 无头执行,或 `qwen` 进入交互会话。
install_zh: 推荐 `npm install -g @qwen-code/qwen-code`(需 Node 22+);也可用 `npx @qwen-code/qwen-code` 临时试用。阿里 OSS 独立脚本见官方文档。
auth_zh: 仅支持 API Key:免费 OAuth 已停用(`qwen auth` 命令已移除)。请在阿里云百炼(DashScope)申请 API Key 后粘贴保存(经 DASHSCOPE_API_KEY 注入);也可在 settings.json 的 modelProviders 接 OpenAI 兼容端点(自定义 envKey)。
commands:
- cmd: qwen
desc_zh: 启动交互式会话
- cmd: qwen -p "提示词"
desc_zh: 无头单次执行
- cmd: qwen -m <模型>
desc_zh: 指定模型
- cmd: qwen -o json -p "提示词"
desc_zh: 以 JSON 输出
- cmd: qwen --version
desc_zh: 显示版本号
- cmd: qwen update
desc_zh: 检查并安装更新
- cmd: qwen sessions
desc_zh: 管理会话
- cmd: npx @qwen-code/qwen-code
desc_zh: 免安装临时运行
params:
- param: -p / --prompt
desc_zh: 无头模式单次执行
- param: -m / --model
desc_zh: 指定模型
- param: -o / --output-format
desc_zh: 输出格式(text / json / stream-json
- param: -s / --sandbox
desc_zh: 沙箱执行
- param: -c / --continue
desc_zh: 续接最近会话
- param: -v / --version
desc_zh: 显示版本号
updated_at: "2026-08-25"
risks_zh:
- 免费 OAuth 已停用,仅支持 API Key(真机 `qwen auth` 命令显示 removed
- 真机 `qwen --version` 返回 0.21.15,版本检测已据此确认
- modelProviders 多 provider / env 块自定义 envKey 等高级配置本表单不覆盖,以官方文档为准
+115 -21
View File
@@ -1,28 +1,122 @@
# ============================================================
# AgentDock 适配器占位(Wave 1,对齐架构 §3.1 完整 schema
# 本波仅填五字段(id/name/name_zh/vendor/status);其余字段留空,
# Wave 2 起按调研底稿 agent-cli-survey-2026-08-24.md 逐项填充,禁止编造
#
# 完整字段(全部留空占位,Wave 2 填写):
# adapter_version # semver,如 1.2.0
# license # 展示用;专有许可注明「仅官方渠道安装、不重打包」
# platforms # windows/linuxarchitectures、notes、min_ubuntu
# official # homepage / docs / allowed_hosts(网络白名单)
# runtime_deps # [ { id, semver_range, required_for: [install|run] } ]
# install # preferred + channels[ {id, platforms, command[], script, package, elevate, elevate_reason_zh, post_checks} ]
# detect # executable / version_args / version_regex / version_unconfirmed / path_hints
# update # method + command[]
# uninstall # method + command[] + keep_config_default
# authorization # modes[ {mode, command[], env_keys[], status_command[], notes_zh} ]
# configuration # files[] / environment[] / fields[]
# diagnostics # [ { rule_id } ]
# documentation # quickstart_zh / commands[] / updated_at / risks_zh[]
#
# 铁律:所有 command 一律 argv 数组,禁止 shell 元字符(| & ; $ \ > < (`);
# 本波不实现任何真实安装/检测/配置/授权命令(那是 Wave 2 的事)。
# AgentDock 适配器 · Warp Agent CLIWave 3
# 数据依据:调研底稿 agent-cli-survey-2026-08-24.md + 架构 §3.3
# 注意:只管 Agent CLI(命令 warp),不管 Warp 终端本体;设备码+浏览器+API Key 三授权
# ============================================================
id: warp
name: Warp Agent CLI
name_zh: Warp Agent CLI
vendor: Warp
status: available
adapter_version: 1.1.0
license: 专有(仅官方渠道安装、不重打包)
platforms:
windows:
architectures: [x64]
notes: 官方 agent-cli.ps1 脚本渠道
linux:
distributions: [ubuntu]
architectures: [x64]
official:
homepage: https://www.warp.dev
docs: https://docs.warp.dev/agent-mode
allowed_hosts: [warp.dev, app.warp.dev, www.warp.dev]
runtime_deps: []
install:
preferred: official_script
channels:
- id: official_script
platforms: [windows]
script:
url: https://app.warp.dev/download/agent-cli.ps1
kind: powershell_irm
elevate: never
post_checks: [detect]
- id: official_script
platforms: [linux]
script:
url: https://app.warp.dev/download/agent-cli
kind: bash_pipe
elevate: never
post_checks: [detect]
detect:
executable: warp
version_args: ["--version"]
update:
method: self_update_cmd
command: [warp, update]
uninstall:
method: manual_delete
command: []
keep_config_default: true
authorization:
modes:
- mode: browser_oauth
command: [warp, login]
notes_zh: 浏览器登录 Warp 账号
- mode: device_code
command: [warp, login]
notes_zh: 设备码登录(不弹浏览器)
- mode: api_key
env_keys: [WARP_API_KEY]
notes_zh: WARP_API_KEY 环境变量(API Key 授权)
# 配置机制(调研底稿 Warp 章节):Warp 账户体系为主,API Key 经 WARP_API_KEY 环境变量。
configuration:
files: []
environment:
- key: WARP_API_KEY
sensitive: true
maps_to_field: api_key
fields:
- id: api_key
label_zh: API Key
group: auth
help_zh: 存入系统密钥库(对应 WARP_API_KEY 环境变量);一般用账号登录即可
required: false
sensitive: true
type: string
storage: keyring
docs_url: https://docs.warp.dev/agent-mode
diagnostics:
- rule_id: path.not_installed
- rule_id: path.not_in_path
- rule_id: version_conflict.multiple_copies
documentation:
quickstart_zh: 安装后运行 `warp login` 登录 Warp 账号,或用 `warp -p "提示词"` 无头执行。
install_zh: 仅官方脚本渠道:Windows agent-cli.ps1 / Linux curl 脚本。只管 Agent CLI,不管 Warp 终端本体。
auth_zh: 三授权:① 浏览器登录(`warp login`);② 设备码(`warp login`,不弹浏览器);③ API KeyWARP_API_KEY 环境变量)。
commands:
- cmd: warp
desc_zh: 启动交互式会话
- cmd: warp -p "提示词"
desc_zh: 无头单次执行
- cmd: warp login
desc_zh: 登录 Warp 账号
- cmd: warp logout
desc_zh: 退出登录
- cmd: warp --version
desc_zh: 显示版本号
params:
- param: -p / --print
desc_zh: 无头模式执行后退出
- param: --model
desc_zh: 指定模型
- param: --output-format
desc_zh: 输出格式
- param: --version
desc_zh: 显示版本号
updated_at: "2026-08-25"
risks_zh:
- 只管 Agent CLI(命令 warp),不管 Warp 终端本体
- 官方脚本 URL 以 docs.warp.dev/agent-mode 为准,安装前请核对
+77 -1
View File
@@ -14,9 +14,10 @@ pub use error::ConfigError;
use std::path::PathBuf;
/// 解析适配器声明的配置文件路径:展开 `~`(用户主目录),
/// 以及平台变量(Windows `%VAR%` / `${VAR}`,如 `%APPDATA%`)。
/// 并把 Windows 路径分隔符统一处理(YAML 里写的是 `~/.codex/...`)。
pub fn resolve_path(raw: &str) -> PathBuf {
let expanded = expand_home(raw);
let expanded = expand_env_vars(&expand_home(raw));
PathBuf::from(expanded)
}
@@ -34,6 +35,65 @@ pub fn expand_home(raw: &str) -> String {
raw.to_string()
}
/// 展开平台环境变量:`%VAR%`Windows)与 `${VAR}`。
/// 未定义或非法变量名保持原样,不做静默吞并。
pub fn expand_env_vars(raw: &str) -> String {
// 先用 ${VAR} 处理(避免与 %VAR% 互相干扰)
let mut out = String::with_capacity(raw.len());
let bytes: Vec<char> = raw.chars().collect();
let mut i = 0;
while i < bytes.len() {
if bytes[i] == '%' {
if let Some((name, end)) = take_until(&bytes, i + 1, '%') {
if is_valid_var_name(&name) {
if let Ok(v) = std::env::var(&name) {
out.push_str(&v);
i = end + 1;
continue;
}
}
}
}
if bytes[i] == '$' && i + 1 < bytes.len() && bytes[i + 1] == '{' {
if let Some((name, end)) = take_until(&bytes, i + 2, '}') {
if is_valid_var_name(&name) {
if let Ok(v) = std::env::var(&name) {
out.push_str(&v);
i = end + 1;
continue;
}
}
}
}
out.push(bytes[i]);
i += 1;
}
out
}
/// 从 `from` 开始找 `close`,返回 (变量名, close 下标)。找不到返回 None。
fn take_until(chars: &[char], from: usize, close: char) -> Option<(String, usize)> {
let mut end = from;
while end < chars.len() {
if chars[end] == close {
let name: String = chars[from..end].iter().collect();
return Some((name, end));
}
end += 1;
}
None
}
/// 环境变量名合法性:`[A-Za-z_][A-Za-z0-9_]*`(与常见 shell/OS 约定一致)。
fn is_valid_var_name(name: &str) -> bool {
let mut chars = name.chars();
match chars.next() {
Some(c) if c.is_ascii_alphabetic() || c == '_' => {}
_ => return false,
}
chars.all(|c| c.is_ascii_alphanumeric() || c == '_')
}
/// 用户主目录(含路径分隔符兜底)。
pub fn home_dir() -> String {
#[cfg(windows)]
@@ -63,4 +123,20 @@ mod tests {
fn plain_path_unchanged() {
assert_eq!(expand_home("/etc/codex/config.toml"), "/etc/codex/config.toml");
}
#[test]
fn expand_env_vars_windows_and_braces() {
std::env::set_var("AGENTDOCK_TEST_VAR", "C:\\Users\\Test");
assert_eq!(
expand_env_vars("%AGENTDOCK_TEST_VAR%\\block\\goose"),
"C:\\Users\\Test\\block\\goose"
);
assert_eq!(
expand_env_vars("${AGENTDOCK_TEST_VAR}/x"),
"C:\\Users\\Test/x"
);
// 未定义变量保持原样
assert_eq!(expand_env_vars("%AGENTDOCK_NOT_SET_VAR%\\x"), "%AGENTDOCK_NOT_SET_VAR%\\x");
std::env::remove_var("AGENTDOCK_TEST_VAR");
}
}
+25
View File
@@ -1534,6 +1534,31 @@ configuration:
}
}
/// 真机检测记录:对 Wave 3 九个新工具逐项 detect 并打印结果(自测记录用)。
/// 运行:cargo test -p agentdock-core real_machine_detect_wave3 -- --ignored --nocapture
#[test]
#[ignore]
fn real_machine_detect_wave3() {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../../adapters");
let adapters = load_adapters(&dir).expect("适配器目录应可加载");
let nine = ["qwen", "codebuddy", "cline", "copilot", "crush", "goose", "aider", "cursor", "warp"];
for id in nine {
let Some(adapter) = adapters.iter().find(|a| a.id == id) else {
panic!("缺少 {id}");
};
let r = detect_one(adapter);
println!(
"{} ({}): status={} version={:?} exe={:?}",
id, adapter.name_zh, r.status, r.version, r.executable
);
assert!([
"installed", "not_installed", "not_in_path", "permission_denied",
"exec_failed", "version_unparseable",
]
.contains(&r.status.as_str()));
}
}
/// 真机安装/卸载往返:gemini(npm 渠道,用户目录、可逆)。
/// 运行:cargo test -p agentdock-core real_machine_install_uninstall_gemini -- --ignored --nocapture
#[test]
+27 -2
View File
@@ -22,6 +22,21 @@ pub fn runtime_for_prog(prog: &str) -> Option<&'static str> {
}
}
/// 运行时 id → 中文显示名(与前端 RuntimeInstallModal 的 RUNTIME_LABELS 对齐)。
/// 「node」统一显示为「Node.js」,避免人话提示里出现 id 与按钮文案不一致。
pub fn runtime_label_zh(id: &str) -> &'static str {
match id {
"node" => "Node.js",
"python" => "Python",
"git" => "Git",
"winget" => "winget",
"uv" => "uv",
"choco" => "choco",
"scoop" => "scoop",
_ => "运行时",
}
}
/// 主入口:结合 spawn 错误与 stderr 尾部文本,产出结构化错误提示。
/// `spawn_err` 为 `Command::spawn` 的 io::ErrorNone 表示进程已启动但退出非 0)。
pub fn map_exec_error(prog: &str, spawn_err: Option<&std::io::Error>, stderr_tail: &str) -> ErrorHint {
@@ -33,7 +48,7 @@ pub fn map_exec_error(prog: &str, spawn_err: Option<&std::io::Error>, stderr_tai
ErrorKind::NotFound => {
let missing = runtime_for_prog(prog);
let friendly = match missing {
Some(r) => format!("未找到 {prog} 命令:需要先安装 {r}(可在下方「本机环境」区一键安装)"),
Some(r) => format!("未找到 {prog} 命令:需要先安装 {}(可在下方「本机环境」区一键安装)", runtime_label_zh(r)),
None => format!("未找到 {prog} 命令:请确认 {prog} 已安装并加入 PATH"),
};
return ErrorHint {
@@ -102,7 +117,17 @@ mod tests {
let h = map_exec_error("npm", Some(&not_found()), "");
assert_eq!(h.code, "program_not_found");
assert_eq!(h.missing_runtime.as_deref(), Some("node"));
assert!(h.friendly_zh.contains("Node") || h.friendly_zh.contains("node"));
// 文案统一为「Node.js」(与按钮/运行时中文名一致,而非裸 id「node」)
assert!(h.friendly_zh.contains("Node.js"), "人话提示应显示 Node.js{}", h.friendly_zh);
assert!(!h.friendly_zh.contains("安装 node"), "不应出现裸 id「node」:{}", h.friendly_zh);
}
#[test]
fn runtime_label_zh_maps_node() {
assert_eq!(runtime_label_zh("node"), "Node.js");
assert_eq!(runtime_label_zh("python"), "Python");
assert_eq!(runtime_label_zh("git"), "Git");
assert_eq!(runtime_label_zh("winget"), "winget");
}
#[test]