跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

运行时设置与能力检查

通过 API 管理技能声明、扩展激活、模型和认证,区分持久变更与刷新。

Serve 的不同设置接口并不共享一种持久化语义。调用前读取 capabilities 中的精确 feature,变更后根据返回状态判断是否还需要刷新或重启。

会话与工作区操作

会话审批模式可用 POST /session/:id/approval-mode 调整;模型变更通过会话模型接口及 model_switched/model_switch_failed 事件观察。工具开关使用 POST /workspace/tools/:name/enable。

POST /workspace/init 只机械创建空 QWEN.md,不会自动调用模型写说明;需要生成内容时,再单独提交 prompt。官方旧章节关于审批模式终身冻结和 /init 写 CLAUDE.md 的描述不应代替这些具体接口定义。

Skill 声明

检查 workspace_skill_settings_toggle 后,按名称调用 POST /workspace/skills/:name/enable,body 为 enabled 布尔值。批量操作检查 workspace_skill_settings_batch_toggle,再调用 POST /workspace/skills/enable:

{
  "skillNames": ["review", "deploy"],
  "enabled": false
}

这些接口写工作区 skills.disabled/skills.enabled,不要求名称已经加载或安装。启用会移除对应工作区禁用并记录显式 opt-in,可覆盖 Extension 自身的默认禁用;更高层 hard disabled 仍决定最终不可用,但不阻止工作区记录自己的声明。

同样声明重复提交是 changed: false。批量合法名称集中处理,至多一次带锁配置写和一次必要的 active session 刷新;errors 数组为 wire 兼容保留,结构合法时为空。未信任工作区不能写。

deferred 表示检查时没有 live child,或已发生持久变更但刷新所需 child/session 消失;changed: true 的声明下次启动会生效。状态中的 disabledReason 可为 hard、default、inactive_extension,可能带 lockedScope。

skills.disabled 同时关闭手动和模型使用;不要与仅禁止模型自动调用的 disable-model-invocation 混同。

Extension 批量激活

V2 批量能力为 extension_batch_activation_v2。PUT /extensions/activation 调整全局默认,PUT /workspaces/:workspace/extensions/activation 调整特定工作区覆盖;extensionNames 指定名称,inherit 清除工作区覆盖。enabled/disabled 可在安装前声明,未知名称 inherit 是无操作。

返回 operation 需继续轮询。若有 extension_activation_explicit_refresh,operation 完成只表示策略提交,没有立即刷新活动会话;需要即时应用时,在成功后单独提交对应的 Extension refresh。

没有显式刷新时,其他工作区可能保留旧激活状态直至下一次 30 秒 generation 协调检查;失败会在后续检查再尝试。不要把激活持久化和所有会话已更新视作同一完成事件。

模型认证 device flow

POST /workspace/auth/device-flow 发起,GET 对应 flow ID 轮询,或接收 auth_device_flow_authorized。同 provider 的并发发起共享一条进行中的流程:首个 attached: false,后来的 attached: true;后者加入会被审计,但不单发接管事件。

daemon 返回验证 URL 和 code,不代用户打开浏览器。相关凭据文件可能在同机 daemon 间共享,但授权事件仅发给当前 daemon 的客户端。qwen-oauth 免费登录已停止,官方示例用于展示协议形状;新环境按认证配置选择当前支持方式,不照搬旧 provider 示例。