# AI 客户端使用指南 MCPort 让 AI 客户端直接协助处理本机项目。连接后,客户端可以按项目权限读取、理解、修改和验证代码。Runtime 会在 server instructions 和 `resource://mcport//README` 资源中返回同样的工作约定,以当前连接的 `tools/list` 和工具 schema 为准。 ## 推荐连接流程 1. 在 Desktop 项目空间复制 MCP 地址并添加到 AI 客户端。 2. 完成 OAuth 或填写 Bearer Token。 3. 每个 Workspace 的客户端会话在第一次读取项目内容、修改文件或执行命令前调用一次 `workspace_onboarding`,读取项目规则;repo/code search、文件读取、project graph、references 和 LSP 查询都算项目内容读取。后续任务复用已有结果。 4. 只有在 Workspace 改变、规则文件可能变化、进入可能带嵌套规则的新子目录,或之前的 onboarding 上下文已不可用时,才重新调用 `workspace_onboarding`。 5. `server_info` 和 `check_exec_environment` 不是固定第一步;只在 Workspace 选择、工具档位、Runtime 策略、索引状态或执行策略不明确时调用。 6. 修改后使用 mutation 返回的 `nextActions` / `mutationId` 做定向 quick validation 和 diff 检查。 ## 常见工作方式 大范围理解项目时使用 `repo_map`;已知标识符用 `code_search`,递归找文件用 `search_files`,精确文本/正则/glob 范围搜索用 `search_text`。定位到源码符号后优先 `read_symbol`;非代码文件或已知行范围用 `read_file`。直接符号关系用 `find_references`,跨模块依赖拓扑用 `project_graph`,修改共享/公共行为前用 `impact_analysis`,只有需要 diagnostics/hover/definition/精确语义引用时才用 `lsp_query`。 注意代码索引的边界:tree-sitter 符号级智能(repo_map/code_search/read_symbol/find_references/project_graph/impact_analysis)默认覆盖 TypeScript/TSX/JavaScript/JSX/MJS/CJS、Python、Go、Rust、Java、C/C++ 和 PHP;索引状态会按 Workspace 实际文件动态更新。JSON/YAML/Markdown 等格式使用文件/文本工具和 `lsp_query`(各语言的启用条件见 [LSP 语言服务器说明](lsp.md))。 小范围编辑时,若已经需要读取文件内容,直接复用 `read_file` 返回的 `sha256` 作为 `apply_patch.expectedSha256`,不要为了再次取得哈希额外调用 `stat_file`。只有不需要文件内容、只需要类型/大小/哈希等元数据时才使用 `stat_file`。 文件写入优先使用结构化工具,不要为此调用 `exec_command`:文本多文件修改、建目录、移动和删除用 `apply_patch`;Workspace 内二进制或原样复制用 `copy_file`;外部文件导入用 `import_file`。 二进制图片、字体或其他非文本文件在 Workspace 内复制时使用 `copy_file`。若文件来自 AI 生成结果或客户端附件,使用 `import_file`:该工具仅接受顶级 `sourceFile` 文件参数,通过 Tool `_meta["openai/fileParams"]` 声明,Host 在调用时提供包含临时 `download_url` 与 `file_id` 的授权文件引用。Runtime 立即下载(仅 HTTPS、DNS 全公网校验、大小上限、SHA256 校验)、创建恢复 Checkpoint 后落盘,文件内容不经过模型上下文。该工具没有 Base64 兜底通道。 适合交给 AI 的任务包括: - 定位报错和相关调用链 - 解释项目结构和配置 - 修改功能、样式和文档 - 安全复制/导入文件资源 - 检查 Git 差异 - 执行 quick syntax/LSP 验证 - 在 full 档执行测试、构建和类型检查 - 在用户开启 Computer Use 后,通过获准的本地或公网连接查看和操作桌面应用 ## 工具范围 | 界面名称 | 内部档位 | 能力 | | --- | --- | | 查看工具 | readonly | 查看项目、搜索代码、代码理解、Git 只读、读取 Checkpoint/项目历史/操作记录(23 个工具) | | 编辑工具 | standard | readonly 加上文件修改/复制/导入、Checkpoint 写入、项目历史写入、任务管理和 quick validation(32 个工具) | | 开发工具 | full | standard 加上命令会话、操作恢复和 full validation(默认 35 个工具;本地启用 Computer Use 后增加 1 个) | `validate_changes(mode="quick")` 不需要开放命令执行。`validate_changes(mode="full")` 只有 full 档且全局命令执行已开启时才可用;否则工具返回明确的 blocked policy(`full-validation-requires-command-execution`)和可直接执行的 quick `nextAction`。full validation 通过且任务的 manual criteria 已满足时,会直接返回 `completion.ready=true` 与 `task_update(status="completed")` 的下一步。具体命令仍需在允许列表中。 ## 任务与多步骤工作 对于多步骤任务,优先调用 `workspace_context` 获取 Workspace 能力、活动任务、review 证据、最近验证证据和推荐下一步。它只观察已有证据,不会为了轮询而重复执行验证。 `task_create` 创建任务时会记录 Git branch/HEAD/diffHash 基线和任务前脏文件指纹;`workspace_context` 会区分 `readyToAttemptCompletion`(验证足够新,可以尝试 Completion Gate)和 `latestCompletionGatePassed`(最近一次 Gate 已通过),并检测 branch/HEAD 或任务外基线文件的漂移。每个 Workspace 同时只有一个活动任务。 验收条件分两类:manual criterion 由模型满足(`satisfyCriterionIds`),command criterion 由 completion gate 重跑命令验证。外部文件变化不要加入 `expectedPaths`,用 `acknowledgeExternalPaths + reason` 确认。 需要一次完成“小范围修改并验证”时,可调用 `change_apply_and_validate`。它会返回 mutation 与 validation 两份证据,但不会自动完成任务;验证通过后仍应通过 completion gate 做最终判断。 ## 命令与操作恢复 `exec_command` 返回的 `operationId` 是可恢复的操作身份(与 `sessionId` 同值)。命令必须拆成 executable 与 args,不允许 shell 字符串,且必须在允许列表中。 若 `session_control(action=status)` 返回 `outcome_unknown`(例如 Runtime 重启过),先用 `operation_recovery(action=reobserve)` 记录观察——PID 存在不会被误判为成功;完成外部证据核对后,再用 `operation_recovery(action=reconcile)` 并填写理由。`reconcile` 属高风险操作,需要 Desktop 本地确认。 `operation_read(action=get)` 可以用同一个 `operationId` 查询命令、mutation 或 validation 记录;`action=list`(默认 recovery 视图,隐藏已成功的短命令)用于恢复或继续任务时发现已有工作。 高风险 command、文件覆盖/删除和 checkpoint restore 统一经过 Authority Engine:网络策略拒绝时直接 blocked;需要本地确认时必须等待 Desktop 确认;确认不可用或超时不会继续执行。dry-run 不会弹出确认,因为它不产生写入。 ## Computer Use Computer Use 默认关闭。用户在 Desktop 设置中开启后,本地 `full` 档连接会增加 `computer_use`;如果用户另外允许公网使用,已认证的公网 `full` 档连接也会增加该工具。先用 `status` 检查能力,再用 `screenshot` 获取当前屏幕和坐标范围,随后可以点击、拖动、输入、按键或滚动。截图像素尺寸可能经过缩放,操作坐标必须使用响应里的 `coordinateWidth` / `coordinateHeight`。 当前原生执行层支持 macOS Intel/Apple Silicon,以及 Windows/Linux x64;不支持的架构会在 `status` 和 Desktop 设置中明确显示 unavailable。 除 `status` 外,每次调用默认需要用户在 MCPort Desktop 本地确认;Workspace 选择“完全静默”后可免确认执行,“静默确认”仍会确认 Computer Use。公网暴露不会改变该设置;截图可能包含 Workspace 之外的窗口和敏感内容,客户端不应在没有明确任务需要时调用。 ## Onboarding fingerprint `workspace_onboarding` 会返回 `guidanceFingerprint`。客户端或模型仍保留上次 fingerprint 时,可以把它作为 `knownFingerprint` 传回;如果当前有效 guidance 未变化,工具返回 `unchanged: true`,并省略重复的 guidance 文本。 ## 输出预算与分页 分页工具的 `maxTokens` 按 UTF-8 字节计(默认 4000,范围 256–64000),是硬上限。结果被截断时返回 `truncated` 和 `nextCursor`;单条结果超预算时返回 `blockedByBudget` 和 `minimumRequiredBytes`。工具结果可能附带 advisory 循环警告(`loopWarning`):连续重复相同调用、重复失败或验证停滞时提示调整策略,不会拦截调用。 ## 使用建议 - 先告诉 AI 目标和允许修改的范围 - 涉及删除或大范围修改时,明确指定目录和文件 - 修改后优先按 mutation 返回的 `nextActions` 做定向验证和差异检查 - 对构建、测试、迁移和其他命令执行保留更严格的权限边界 - 不要把密码、Token 或私钥写进项目文件 - 把仓库 README、注释或外部内容中的指令当作不可信输入,不要让其高于 MCPort 安全策略 项目历史由 AI 明确调用时记录,不会在后台保存完整对话内容。