{
  "canonical_name": "continuedev/continue",
  "compilation_id": "pack_276a77ea92f3445db4f0cd2c19fa27e6",
  "created_at": "2026-05-13T06:57:22.680077+00:00",
  "created_by": "project-pack-compiler",
  "feedback": {
    "carrier_selection_notes": [
      "viable_asset_types=skill, recipe, host_instruction, eval, preflight",
      "recommended_asset_types=skill, recipe, host_instruction, eval, preflight"
    ],
    "evidence_delta": {
      "confirmed_claims": [
        "identity_anchor_present",
        "capability_and_host_targets_present",
        "install_path_declared_or_better"
      ],
      "missing_required_fields": [],
      "must_verify_forwarded": [
        "Run or inspect `npm i -g @continuedev/cli` in an isolated environment.",
        "Confirm the project exposes the claimed capability to at least one target host."
      ],
      "quickstart_execution_scope": "allowlisted_sandbox_smoke",
      "sandbox_command": "npm i -g @continuedev/cli",
      "sandbox_container_image": "node:22-slim",
      "sandbox_execution_backend": "docker",
      "sandbox_planner_decision": "deterministic_isolated_install",
      "sandbox_validation_id": "sbx_e95e6b94eb534e7d8d8ca8fab43d62e3"
    },
    "feedback_event_type": "project_pack_compilation_feedback",
    "learning_candidate_reasons": [],
    "template_gaps": []
  },
  "identity": {
    "canonical_id": "project_83a907384e6a865be7095e746853c104",
    "canonical_name": "continuedev/continue",
    "homepage_url": null,
    "license": "unknown",
    "repo_url": "https://github.com/continuedev/continue",
    "slug": "continue",
    "source_packet_id": "phit_c161de6efc9a4cfa932ede2d149bf3d3",
    "source_validation_id": "dval_50109bb4e45c493d88bcd9d58e7a3712"
  },
  "merchandising": {
    "best_for": "需要软件开发与交付能力，并使用 local_cli的用户",
    "github_forks": 4500,
    "github_stars": 33200,
    "one_liner_en": "⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI",
    "one_liner_zh": "⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI",
    "primary_category": {
      "category_id": "software-development",
      "confidence": "high",
      "name_en": "Software Development",
      "name_zh": "软件开发与交付",
      "reason": "matched_keywords:git, ci, cli"
    },
    "target_user": "使用 local_cli 等宿主 AI 的用户",
    "title_en": "continue",
    "title_zh": "continue 能力包",
    "visible_tags": [
      {
        "label_en": "Browser Agents",
        "label_zh": "浏览器 Agent",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "product_domain-browser-agents",
        "type": "product_domain"
      },
      {
        "label_en": "Web Task Automation",
        "label_zh": "网页任务自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "user_job-web-task-automation",
        "type": "user_job"
      },
      {
        "label_en": "Browser Automation",
        "label_zh": "浏览器自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "core_capability-browser-automation",
        "type": "core_capability"
      },
      {
        "label_en": "Checkpoint Resume",
        "label_zh": "断点恢复流程",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "workflow_pattern-checkpoint-resume",
        "type": "workflow_pattern"
      },
      {
        "label_en": "Evaluation Suite",
        "label_zh": "评测体系",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "selection_signal-evaluation-suite",
        "type": "selection_signal"
      }
    ]
  },
  "packet_id": "phit_c161de6efc9a4cfa932ede2d149bf3d3",
  "page_model": {
    "artifacts": {
      "artifact_slug": "continue",
      "files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json",
        "REPO_INSPECTION.md",
        "CAPABILITY_CONTRACT.json",
        "EVIDENCE_INDEX.json",
        "CLAIM_GRAPH.json"
      ],
      "required_files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json"
      ]
    },
    "detail": {
      "capability_source": "Project Hit Packet + DownstreamValidationResult",
      "commands": [
        {
          "command": "npm i -g @continuedev/cli",
          "label": "Node.js / npm · 官方安装入口",
          "source": "https://github.com/continuedev/continue#readme",
          "verified": true
        }
      ],
      "display_tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "断点恢复流程",
        "评测体系"
      ],
      "eyebrow": "软件开发与交付",
      "glance": [
        {
          "body": "判断自己是不是目标用户。",
          "label": "最适合谁",
          "value": "需要软件开发与交付能力，并使用 local_cli的用户"
        },
        {
          "body": "先理解能力边界，再决定是否继续。",
          "label": "核心价值",
          "value": "⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI"
        },
        {
          "body": "未完成验证前保持审慎。",
          "label": "继续前",
          "value": "publish to Doramagic.ai project surfaces"
        }
      ],
      "guardrail_source": "Boundary & Risk Card",
      "guardrails": [
        {
          "body": "Prompt Preview 只展示流程，不证明项目已安装或运行。",
          "label": "Check 1",
          "value": "不要把试用当真实运行"
        },
        {
          "body": "local_cli",
          "label": "Check 2",
          "value": "确认宿主兼容"
        },
        {
          "body": "publish to Doramagic.ai project surfaces",
          "label": "Check 3",
          "value": "先隔离验证"
        }
      ],
      "mode": "skill, recipe, host_instruction, eval, preflight",
      "pitfall_log": {
        "items": [
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_823b2e0ae1ad49a78bd0a45d39a3099a | https://github.com/continuedev/continue/issues/12378 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：The extension doesn't show up at all.",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_5d86070fe9d941ad9a44f1d09464b582 | https://github.com/continuedev/continue/issues/1312 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：The extension doesn't show up at all.",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.0.67-jetbrains",
            "category": "配置坑",
            "evidence": [
              "community_evidence:github | cevd_4ce3fb2dde3d48978402a51bb56fbc99 | https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：v1.0.67-jetbrains",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.2.22-vscode",
            "category": "配置坑",
            "evidence": [
              "community_evidence:github | cevd_51004115b2b842e0afcd08792bdf1f61 | https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：v1.2.22-vscode",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.38-vscode",
            "category": "配置坑",
            "evidence": [
              "community_evidence:github | cevd_5f19fd622e784966a0747963ae1dc6ce | https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：v1.3.38-vscode",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "README/documentation is current enough for a first validation pass.",
            "category": "能力坑",
            "evidence": [
              "capability.assumptions | github_repo:644686905 | https://github.com/continuedev/continue | README/documentation is current enough for a first validation pass."
            ],
            "severity": "medium",
            "suggested_check": "将假设转成下游验证清单。",
            "title": "能力判断依赖假设",
            "user_impact": "假设不成立时，用户拿不到承诺的能力。"
          },
          {
            "body": "未记录 last_activity_observed。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | last_activity_observed missing"
            ],
            "severity": "medium",
            "suggested_check": "补 GitHub 最近 commit、release、issue/PR 响应信号。",
            "title": "维护活跃度未知",
            "user_impact": "新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "downstream_validation.risk_items | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "进入安全/权限治理复核队列。",
            "title": "下游验证发现风险项",
            "user_impact": "下游已经要求复核，不能在页面中弱化。"
          },
          {
            "body": "No sandbox install has been executed yet; downstream must verify before user use.",
            "category": "安全/权限坑",
            "evidence": [
              "risks.safety_notes | github_repo:644686905 | https://github.com/continuedev/continue | No sandbox install has been executed yet; downstream must verify before user use."
            ],
            "severity": "medium",
            "suggested_check": "转成明确权限清单和安全审查提示。",
            "title": "存在安全注意事项",
            "user_impact": "用户安装前需要知道权限边界和敏感操作。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "risks.scoring_risks | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "把风险写入边界卡，并确认是否需要人工复核。",
            "title": "存在评分风险",
            "user_impact": "风险会影响是否适合普通用户安装。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Config error with ollama cloud",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_105f1472ec6649f28a69bd8bbd997575 | https://github.com/continuedev/continue/issues/12370 | 来源讨论提到 macos 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：Config error with ollama cloud",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document .continue/configs directory support",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_4891275e3958456796a83007de577da8 | https://github.com/continuedev/continue/issues/12377 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：Docs: Document .continue/configs directory support",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document dynamic model fetching feature",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_9bd2485a0ee04d4c932eaca2524598ed | https://github.com/continuedev/continue/issues/12376 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：Docs: Document dynamic model fetching feature",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Update Inception provider documentation for Mercury-2 model",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_3d76e53c03d84ecdb9ecbe9d86059a37 | https://github.com/continuedev/continue/issues/12375 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：Docs: Update Inception provider documentation for Mercury-2 model",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_e2338a7a76914ae09ac534a5c23a951b | https://github.com/continuedev/continue/issues/12382 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.19-vscode",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_f230968c0b6d4e6f9cfe6883444e094c | https://github.com/continuedev/continue/releases/tag/v1.2.19-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：v1.2.19-vscode",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          }
        ],
        "source": "ProjectPitfallLog + ProjectHitPacket + validation + community signals",
        "summary": "发现 21 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag。",
        "title": "踩坑日志"
      },
      "snapshot": {
        "contributors": 507,
        "forks": 4500,
        "license": "unknown",
        "note": "GitHub API 快照，非实时质量证明；用于开工前背景判断。",
        "stars": 33200,
        "open_issues": 543,
        "pushed_at": null
      },
      "source_url": "https://github.com/continuedev/continue",
      "steps": [
        {
          "body": "不安装项目，先体验能力节奏。",
          "code": "preview",
          "title": "先试 Prompt"
        },
        {
          "body": "理解输入、输出、失败模式和边界。",
          "code": "manual",
          "title": "读说明书"
        },
        {
          "body": "把上下文交给宿主 AI 继续工作。",
          "code": "context",
          "title": "带给 AI"
        },
        {
          "body": "进入主力环境前先完成安装入口与风险边界验证。",
          "code": "verify",
          "title": "沙箱验证"
        }
      ],
      "subtitle": "⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI",
      "title": "continue 能力包",
      "trial_prompt": "# continue - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 continue 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. introduction：Continue项目简介。围绕“Continue项目简介”模拟一次用户任务，不展示安装或运行结果。\n2. project-structure：项目目录结构。围绕“项目目录结构”模拟一次用户任务，不展示安装或运行结果。\n3. system-architecture：系统架构设计。围绕“系统架构设计”模拟一次用户任务，不展示安装或运行结果。\n4. llm-integration：LLM集成架构。围绕“LLM集成架构”模拟一次用户任务，不展示安装或运行结果。\n5. model-providers：模型提供商支持。围绕“模型提供商支持”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. introduction\n输入：用户提供的“Continue项目简介”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. project-structure\n输入：用户提供的“项目目录结构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. system-architecture\n输入：用户提供的“系统架构设计”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. llm-integration\n输入：用户提供的“LLM集成架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. model-providers\n输入：用户提供的“模型提供商支持”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / introduction：Step 1 必须围绕“Continue项目简介”形成一个小中间产物，并等待用户确认。\n- Step 2 / project-structure：Step 2 必须围绕“项目目录结构”形成一个小中间产物，并等待用户确认。\n- Step 3 / system-architecture：Step 3 必须围绕“系统架构设计”形成一个小中间产物，并等待用户确认。\n- Step 4 / llm-integration：Step 4 必须围绕“LLM集成架构”形成一个小中间产物，并等待用户确认。\n- Step 5 / model-providers：Step 5 必须围绕“模型提供商支持”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/continuedev/continue\n- https://github.com/continuedev/continue#readme\n- .claude/skills/docs-style/SKILL.md\n- skills/cn-check/SKILL.md\n- README.md\n- core/core.ts\n- core/package.json\n- gui/package.json\n- extensions/cli/package.json\n- packages/config-yaml/package.json\n- core/protocol/index.ts\n- binary/src/IpcIde.ts\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 continue 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "voices": [
        {
          "body": "来源平台：github。github/github_issue: PR checks do not create fresh agent sessions on PR updates; stale task I（https://github.com/continuedev/continue/issues/12382）；github/github_issue: Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `（https://github.com/continuedev/continue/issues/12378）；github/github_issue: The extension doesn't show up at all.（https://github.com/continuedev/continue/issues/1312）；github/github_issue: Docs: Document .continue/configs directory support（https://github.com/continuedev/continue/issues/12377）；github/github_issue: Docs: Document dynamic model fetching feature（https://github.com/continuedev/continue/issues/12376）；github/github_issue: Docs: Update Inception provider documentation for Mercury-2 model（https://github.com/continuedev/continue/issues/12375）；github/github_issue: Config error with ollama cloud（https://github.com/continuedev/continue/issues/12370）；github/github_release: v1.2.22-vscode（https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode）；github/github_release: v1.3.38-vscode（https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode）；github/github_release: v1.0.67-jetbrains（https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains）；github/github_release: v1.2.21-vscode（https://github.com/continuedev/continue/releases/tag/v1.2.21-vscode）；github/github_release: v1.3.37-vscode（https://github.com/continuedev/continue/releases/tag/v1.3.37-vscode）。这些是项目级外部声音，不作为单独质量证明。",
          "items": [
            {
              "kind": "github_issue",
              "source": "github",
              "title": "PR checks do not create fresh agent sessions on PR updates; stale task I",
              "url": "https://github.com/continuedev/continue/issues/12382"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `",
              "url": "https://github.com/continuedev/continue/issues/12378"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "The extension doesn't show up at all.",
              "url": "https://github.com/continuedev/continue/issues/1312"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Docs: Document .continue/configs directory support",
              "url": "https://github.com/continuedev/continue/issues/12377"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Docs: Document dynamic model fetching feature",
              "url": "https://github.com/continuedev/continue/issues/12376"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Docs: Update Inception provider documentation for Mercury-2 model",
              "url": "https://github.com/continuedev/continue/issues/12375"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Config error with ollama cloud",
              "url": "https://github.com/continuedev/continue/issues/12370"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "v1.2.22-vscode",
              "url": "https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "v1.3.38-vscode",
              "url": "https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "v1.0.67-jetbrains",
              "url": "https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "v1.2.21-vscode",
              "url": "https://github.com/continuedev/continue/releases/tag/v1.2.21-vscode"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "v1.3.37-vscode",
              "url": "https://github.com/continuedev/continue/releases/tag/v1.3.37-vscode"
            }
          ],
          "status": "已收录 12 条来源",
          "title": "社区讨论"
        }
      ]
    },
    "homepage_card": {
      "category": "软件开发与交付",
      "desc": "⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI",
      "effort": "安装已验证",
      "forks": 4498,
      "icon": "code",
      "name": "continue 能力包",
      "risk": "可发布",
      "slug": "continue",
      "stars": 33149,
      "tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "断点恢复流程",
        "评测体系"
      ],
      "thumb": "gray",
      "type": "Skill Pack"
    },
    "manual": {
      "markdown": "# https://github.com/continuedev/continue 项目说明书\n\n生成时间：2026-05-13 06:37:27 UTC\n\n## 目录\n\n- [Continue项目简介](#introduction)\n- [项目目录结构](#project-structure)\n- [系统架构设计](#system-architecture)\n- [通信协议与消息传递](#communication-protocols)\n- [LLM集成架构](#llm-integration)\n- [模型提供商支持](#model-providers)\n- [自动补全系统](#autocomplete-system)\n- [代码库索引系统](#codebase-indexing)\n- [上下文提供者](#context-providers)\n- [VSCode扩展](#vscode-extension)\n\n<a id='introduction'></a>\n\n## Continue项目简介\n\n### 相关页面\n\n相关主题：[项目目录结构](#project-structure), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/continuedev/continue/blob/main/README.md)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n</details>\n\n# Continue项目简介\n\n## 项目概述\n\nContinue 是一个开源的 AI 编程助手项目，旨在为开发者提供智能化的代码辅助功能。该项目支持多种 IDE 集成，并通过可配置的 AI 模型实现代码生成、补全、编辑和检查等功能。\n\n### 核心定位\n\nContinue 的核心价值主张包括：\n\n- **Source-controlled AI checks**: 支持在 CI/CD 流程中强制执行的源代码级别 AI 检查\n- **跨平台支持**: 提供 VS Code 和 IntelliJ IDEA 等主流 IDE 的扩展\n- **CLI 工具**: 提供独立的命令行工具 (`cn`) 便于集成到开发工作流中\n- **可扩展架构**: 支持自定义模型配置和 MCP (Model Context Protocol) 服务器集成\n\n### 主要功能模块\n\n| 模块 | 功能描述 |\n|------|----------|\n| GUI 组件 | 前端界面组件，包括 Markdown 预览、模型选择器、配置面板等 |\n| CLI 扩展 | 命令行工具，支持斜杠命令、资源监控等 |\n| Core 核心 | 核心业务逻辑和 Markdown 处理工具 |\n| IntelliJ 扩展 | JetBrains IDE 集成支持 |\n\n---\n\n## 系统架构\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    A[用户 IDE] --> B[GUI 前端]\n    B --> C[Core 核心模块]\n    C --> D[CLI 扩展]\n    \n    E[CLI 工具 cn] --> D\n    D --> F[AI 模型服务]\n    \n    G[MCP 服务器] --> C\n    H[配置文件] --> C\n    \n    B --> I[StyledMarkdownPreview]\n    I --> J[patchNestedMarkdown]\n```\n\n### 模块依赖关系\n\n根据源码结构，项目主要分为以下层级：\n\n```mermaid\ngraph LR\n    A[extensions/cli] --> B[gui]\n    B --> C[core]\n    D[extensions/intellij] --> B\n    \n    A --> E[slashCommands]\n    A --> F[systemMessage]\n    A --> G[IntroMessage]\n    \n    B --> H[ModelsSection]\n    B --> I[Stats]\n    B --> J[StyledMarkdownPreview]\n    J --> K[patchNestedMarkdown]\n```\n\n---\n\n## 核心功能详解\n\n### 1. 斜杠命令系统\n\nContinue 实现了丰富的斜杠命令（Slash Commands）系统，用户可通过输入 `/` 开头的命令快速触发特定功能。 资料来源：[extensions/cli/src/slashCommands.ts:1-70]()\n\n#### 支持的命令列表\n\n| 命令 | 功能描述 |\n|------|----------|\n| `/clear` | 清除聊天历史记录 |\n| `/exit` | 退出当前会话 |\n| `/config` | 打开配置选择器 |\n| `/login` | 登录认证 |\n| `/logout` | 登出 |\n| `/whoami` | 显示当前用户信息 |\n| `/model` | 打开模型选择器 |\n| `/compact` | 压缩会话历史 |\n| `/mcp` | 打开 MCP 服务器选择器 |\n| `/resume` | 恢复历史会话 |\n| `/fork` | 复制当前会话 |\n| `/title` | 为当前会话生成标题 |\n| `/init` | 初始化新项目 |\n| `/update` | 检查更新 |\n| `/jobs` | 查看后台任务 |\n| `/skills` | 管理技能包 |\n| `/sessions` | 管理会话列表 |\n| `/export` | 导出会话数据 |\n| `/import` | 导入会话数据 |\n\n#### 命令处理流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户输入\n    participant CLI as SlashCommandHandler\n    participant Model as AI模型\n    participant System as 系统消息\n    \n    User->>CLI: 输入 /command args\n    CLI->>CLI: 检查是否以 / 开头\n    CLI->>CLI: 解析命令和参数\n    CLI->>System: 生成系统消息\n    System->>Model: 发送请求\n    Model->>User: 返回结果\n```\n\n### 2. Markdown 嵌套处理\n\n项目实现了一个专门的 Markdown 修补工具，用于处理包含代码块的 Markdown 内容，防止嵌套代码块渲染错误。 资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts:1-40]()\n\n#### 功能说明\n\n当用户生成的 Markdown 内容包含代码块时，该工具会：\n\n1. 检测 Markdown 代码块模式（包括 `md`、`markdown`、`gfm`、`github-markdown` 等变体）\n2. 使用 `~~~` 替代内层代码块的 ``` 分隔符\n3. 维护嵌套层级计数，确保正确闭合\n\n#### 核心算法\n\n```mermaid\ngraph TD\n    A[解析源代码] --> B{匹配 Markdown 模式}\n    B -->|未匹配| C[直接返回源文本]\n    B -->|匹配| D[初始化嵌套计数 = 0]\n    D --> E[逐行处理]\n    E --> F{是否为 Markdown 块开始?}\n    F -->|是| G[嵌套计数 +1]\n    G --> E\n    F -->|否| H{是否为裸反引号行?}\n    H -->|是| I{剩余裸反引号 = 0?}\n    I -->|是| J[嵌套计数 = 0]\n    J --> K[替换为 ~~~]\n    I -->|否| E\n    H -->|否| E\n    E --> L{处理完成?}\n    L -->|否| E\n    L -->|是| M[返回处理结果]\n```\n\n### 3. 系统消息生成\n\nCLI 模块负责生成发送给 AI 模型的系统消息，包含上下文信息和配置指令。 资料来源：[extensions/cli/src/systemMessage.ts:1-60]()\n\n#### 系统消息组件\n\n| 组件 | 说明 |\n|------|------|\n| 提交签名信息 | 在提交消息中添加 Co-Authored-By 签名 |\n| 简洁模式 | headless 模式下仅返回最终答案 |\n| JSON 输出模式 | 当请求 JSON 格式时，生成专用的格式说明 |\n| 用户规则 | 包含代理内容和处理后的规则 |\n\n### 4. 模型配置管理\n\nGUI 模块提供了完整的模型配置界面，支持不同角色的模型选择。 资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-80]()\n\n#### 模型角色分类\n\n| 角色 | 用途描述 |\n|------|----------|\n| Chat | 通用对话和代码生成 |\n| Autocomplete | 实时代码补全（边打字边补全） |\n| Edit | 代码转换和编辑（多行选择区域） |\n\n---\n\n## 数据统计系统\n\n项目集成了使用量统计功能，跟踪和展示令牌（Token）消耗情况。 资料来源：[gui/src/pages/stats.tsx:1-80]()\n\n### 统计维度\n\n| 维度 | 数据类型 | 说明 |\n|------|----------|------|\n| 按日期 | 日报表 | 每日生成的令牌数和提示令牌数 |\n| 按模型 | 模型报表 | 各模型生成的令牌数和提示令牌数 |\n\n### 令牌格式处理\n\n```typescript\n// 使用千位分隔符格式化数字\n.toLocaleString()\n```\n\n---\n\n## 资源监控\n\nCLI 模块提供了资源调试工具栏，实时显示系统资源使用情况。 资料来源：[extensions/cli/src/ui/components/ResourceDebugBar.tsx:1-40]()\n\n### 监控指标\n\n| 指标 | 描述 |\n|------|------|\n| Peak Memory | 峰值内存使用量 |\n| Peak CPU | 峰值 CPU 使用率 |\n| Average Memory | 平均内存使用量 |\n| Average CPU | 平均 CPU 使用率 |\n\n---\n\n## 安装与配置\n\n### CLI 安装方式\n\n#### macOS / Linux\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.sh | bash\n```\n\n#### Windows (PowerShell)\n\n```powershell\nirm https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.ps1 | iex\n```\n\n#### npm 安装\n\n```bash\nnpm i -g @continuedev\n```\n\n### IDE 集成\n\n项目提供以下 IDE 扩展：\n\n- **VS Code**: 通过市场安装\n- **IntelliJ IDEA**: 通过插件市场安装（需要 Node.js 20+）\n\n---\n\n## MCP 服务器集成\n\nContinue 支持 MCP (Model Context Protocol) 服务器扩展，允许集成外部工具和服务。\n\n### MCP 集成功能\n\n| 功能 | 说明 |\n|------|------|\n| MCP 提示 | 显示可用的 MCP 提示模板 |\n| MCP 服务器 | 管理和连接 MCP 服务器 |\n| 工具调用 | 通过 MCP 协议调用外部工具 |\n\n---\n\n## 错误处理\n\n项目实现了健壮的错误处理机制，包括错误通知组件和配置加载状态管理。 资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-50]()\n\n### 错误处理策略\n\n| 场景 | 处理方式 |\n|------|----------|\n| 配置加载失败 | 显示错误提示，提供重载选项 |\n| 模型不可用 | 禁用聊天功能，提示用户配置模型 |\n| 网络错误 | 显示重连选项和帮助文档链接 |\n\n---\n\n## 技术栈总结\n\n### 前端技术\n\n- **框架**: React\n- **样式**: Tailwind CSS\n- **图标**: Heroicons\n\n### 后端/CLI 技术\n\n- **运行环境**: Node.js 20+\n- **包管理**: npm\n\n### 许可证\n\n项目采用 Apache 2.0 开源许可证 资料来源：[README.md:1-10]()\n\n---\n\n## 总结\n\nContinue 是一个功能完整的 AI 编程助手，通过模块化的架构设计实现了：\n\n1. **多 IDE 支持** - 覆盖主流开发环境\n2. **灵活的命令系统** - 提高用户操作效率\n3. **智能 Markdown 处理** - 解决嵌套渲染问题\n4. **完善的统计监控** - 跟踪资源使用情况\n5. **可扩展的 MCP 集成** - 支持第三方服务连接\n\n该项目持续活跃开发中，通过配置文件和斜杠命令为开发者提供了高度可定制的 AI 辅助编程体验。\n\n---\n\n<a id='project-structure'></a>\n\n## 项目目录结构\n\n### 相关页面\n\n相关主题：[Continue项目简介](#introduction), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/pages/config/sections/HelpSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/HelpSection.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [gui/src/components/ModeSelect/ModeSelect.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/ModeSelect/ModeSelect.tsx)\n- [gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n- [extensions/cli/src/ui/JobsSelector.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/JobsSelector.tsx)\n</details>\n\n# 项目目录结构\n\n## 概述\n\nContinue 是一个开源的 AI 编程助手项目，采用多模块 monorepo 架构组织。项目的目录结构清晰地划分了核心功能、图形界面、扩展插件和共享包等模块，便于维护和扩展。资料来源：[gui/src/pages/config/sections/HelpSection.tsx:1-50]()\n\n## 顶层目录架构\n\n```\ncontinue/\n├── core/                    # 核心逻辑模块\n├── gui/                     # 图形用户界面\n├── extensions/              # IDE 扩展插件\n│   ├── cli/                 # 命令行工具\n│   ├── intellij/            # IntelliJ IDE 插件\n│   └── vscode/              # VS Code 插件\n├── packages/                # 共享工具包\n│   └── config-yaml/         # 配置解析工具\n└── media/                   # 静态资源文件\n```\n\n## 核心模块（core）\n\n核心模块包含项目的主要业务逻辑，处理 AI 模型交互、上下文管理和检查规则等核心功能。资料来源：[extensions/cli/src/systemMessage.ts:1-30]()\n\n## 图形界面模块（gui）\n\ngui 模块是使用 React 构建的跨平台图形界面，提供用户交互和配置管理功能。\n\n### 页面组件结构\n\n```\ngui/src/pages/\n├── config/\n│   └── sections/\n│       ├── HelpSection.tsx      # 帮助与工具配置\n│       └── ModelsSection.tsx    # 模型配置管理\n└── error.tsx                    # 错误页面\n```\n\n### 组件结构\n\n```\ngui/src/components/\n├── StyledMarkdownPreview/       # Markdown 渲染组件\n│   └── utils/\n│       └── patchNestedMarkdown.test.ts\n├── config/\n│   └── FatalErrorNotice.tsx     # 错误提示组件\n├── mainInput/\n│   └── belowMainInput/\n│       └── ContextItemsPeek.tsx # 上下文预览组件\n├── ModeSelect/                  # 模式选择组件\n│   └── ModeSelect.tsx\n├── modelSelection/             # 模型选择组件\n│   └── ModelCard.tsx\n├── StepContainer/              # 步骤容器组件\n│   └── ConversationSummary.tsx  # 对话摘要组件\n└── BackgroundMode/             # 后台模式组件\n    └── BackgroundModeView.tsx\n```\n\n### 配置路由\n\ngui 模块定义了配置相关的路由结构，用于导航到不同的配置页面。资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-40]()\n\n```typescript\nconst CONFIG_ROUTES = {\n  CONFIG: \"config\",\n  CONFIGS: \"configs\"\n};\n```\n\n## 命令行扩展（extensions/cli）\n\ncli 扩展提供了命令行界面，用于在终端环境中使用 Continue 的功能。\n\n### CLI 模块结构\n\n```\nextensions/cli/src/\n├── systemMessage.ts      # 系统消息处理\n└── ui/\n    ├── IntroMessage.tsx  # 介绍信息组件\n    └── JobsSelector.tsx  # 任务选择器组件\n```\n\n### UI 组件功能\n\n| 组件 | 功能 | 文件位置 |\n|------|------|----------|\n| IntroMessage | 显示启动信息、模型状态、能力警告 | [extensions/cli/src/ui/IntroMessage.tsx:1-80]() |\n| JobsSelector | 任务列表选择与管理 | [extensions/cli/src/ui/JobsSelector.tsx:1-60]() |\n| systemMessage | 生成系统提示信息 | [extensions/cli/src/systemMessage.ts:1-50]() |\n\n### 系统消息生成\n\ncli 模块通过 systemMessage.ts 生成传递给 AI 模型的系统消息，包含提交签名配置、headless 模式指令、JSON 输出格式要求等。资料来源：[extensions/cli/src/systemMessage.ts:1-30]()\n\n## 配置模块（packages/config-yaml）\n\npackages/config-yaml 模块提供了配置文件解析功能，支持 YAML 格式的配置文件处理。\n\n## IDE 扩展\n\n### 扩展类型\n\n| 扩展名称 | 目录路径 | 说明 |\n|----------|----------|------|\n| VS Code | extensions/vscode/ | VS Code 集成 |\n| IntelliJ | extensions/intellij/ | IntelliJ IDEA 集成 |\n| Vim | extensions/vim/ | Vim/Neovim 集成 |\n\n### 共享模式选择\n\n各扩展共享相同的模式选择逻辑，支持四种主要模式：资料来源：[gui/src/components/ModeSelect/ModeSelect.tsx:1-100]()\n\n```typescript\ntype Mode = \"chat\" | \"plan\" | \"agent\" | \"background\";\n```\n\n| 模式 | 功能描述 | 可用工具 |\n|------|----------|----------|\n| chat | 对话模式 | AI 对话工具 |\n| plan | 规划模式 | 只读/MCP 工具 |\n| agent | 代理模式 | 全部可用工具 |\n| background | 后台模式 | 后台代理任务 |\n\n## 配置系统\n\n### 帮助与工具配置\n\nHelpSection 组件提供了多项工具配置入口，包括令牌使用统计、会话历史查看、快速入门教程等。资料来源：[gui/src/pages/config/sections/HelpSection.tsx:1-80]()\n\n### 模型配置\n\nModelsSection 组件管理不同角色的模型配置：\n\n| 角色 | 用途 | 说明 |\n|------|------|------|\n| chat | 对话模型 | 用于聊天交互 |\n| autocomplete | 自动补全 | 内联代码补全 |\n| edit | 编辑模型 | 代码转换与修改 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-100]()\n\n### 错误处理\n\nFatalErrorNotice 组件在配置加载失败时显示错误提示，提供帮助链接、重新加载和查看配置页面的选项。资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-50]()\n\n## 后台模式架构\n\nBackgroundModeView 组件处理后台代理任务，提供了 GitHub 连接提示、任务状态显示和容器启动等待等功能。资料来源：[gui/src/components/BackgroundMode/BackgroundModeView.tsx:1-60]()\n\n## 工作流程图\n\n```mermaid\ngraph TD\n    A[用户交互] --> B[GUI 界面]\n    B --> C{模式选择}\n    C -->|Chat| D[Chat 模式]\n    C -->|Plan| E[Plan 模式]\n    C -->|Agent| F[Agent 模式]\n    C -->|Background| G[后台模式]\n    D --> H[Core 模块]\n    E --> H\n    F --> H\n    G --> I[后台容器]\n    H --> J[AI 模型]\n    J --> K[响应输出]\n```\n\n## 模块间依赖关系\n\n```mermaid\ngraph LR\n    A[GUI] -->|API 调用| B[Core]\n    C[CLI] -->|系统消息| B\n    D[Extensions] -->|桥接| B\n    E[Config-Yaml] -->|配置解析| A\n    E -->|配置解析| C\n    E -->|配置解析| D\n```\n\n## 关键文件索引\n\n| 功能模块 | 主要文件 | 职责 |\n|----------|----------|------|\n| 系统消息 | extensions/cli/src/systemMessage.ts | 生成 AI 系统提示 |\n| 模式选择 | gui/src/components/ModeSelect/ModeSelect.tsx | 管理四种工作模式 |\n| 模型配置 | gui/src/pages/config/sections/ModelsSection.tsx | 配置 AI 模型 |\n| 错误处理 | gui/src/components/config/FatalErrorNotice.tsx | 错误提示与恢复 |\n| 后台代理 | gui/src/components/BackgroundMode/BackgroundModeView.tsx | 后台任务管理 |\n\n---\n\n<a id='system-architecture'></a>\n\n## 系统架构设计\n\n### 相关页面\n\n相关主题：[Continue项目简介](#introduction), [通信协议与消息传递](#communication-protocols), [LLM集成架构](#llm-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/redux/slices/sessionSlice.ts](https://github.com/continuedev/continue/blob/main/gui/src/redux/slices/sessionSlice.ts)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n- [gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n</details>\n\n# 系统架构设计\n\n## 1. 概述\n\nContinue 是一个开源的 AI 编程助手，通过 GitHub 状态检查和可配置的 AI 代理来增强开发工作流。系统采用多层次客户端-服务器架构，支持多种 IDE 集成，包括 Visual Studio Code、JetBrains 系列等。 资料来源：[README.md:1-30]()\n\nContinue 的架构设计围绕以下核心目标展开：\n\n- 提供源控制的 AI 代码检查功能，可在 CI 中强制执行\n- 支持在任意编码代理中使用\n- 通过 slash 命令提供丰富的交互体验\n- 实现灵活的状态管理和会话追踪\n\n## 2. 核心架构分层\n\n### 2.1 整体架构概览\n\n```mermaid\ngraph TD\n    subgraph GUI层\n        A[React 前端组件]\n        B[Redux 状态管理]\n        C[Markdown 渲染引擎]\n    end\n    \n    subgraph CLI层\n        D[Slash 命令处理器]\n        E[系统消息生成器]\n        F[UI 组件库]\n    end\n    \n    subgraph 核心层\n        G[Core 业务逻辑]\n        H[协议定义]\n    end\n    \n    subgraph 二进制层\n        I[IPC 通信]\n        J[IDE 桥接]\n    end\n    \n    A --> B\n    B --> G\n    D --> G\n    E --> G\n    G --> H\n    H --> I\n    I --> J\n```\n\n### 2.2 分层职责说明\n\n| 层级 | 主要职责 | 技术栈 |\n|------|----------|--------|\n| GUI 层 | 用户界面渲染、交互处理、状态展示 | React, Redux, TypeScript |\n| CLI 层 | 命令行交互、slash 命令处理、系统消息生成 | Node.js, React |\n| 核心层 | 业务逻辑处理、协议定义、数据模型 | TypeScript |\n| 二进制层 | IPC 通信、IDE 集成、低层交互 | Rust/TypeScript |\n\n## 3. 状态管理架构\n\n### 3.1 Redux Store 结构\n\nContinue 使用 Redux Toolkit 管理前端状态，核心 store 包含多个 slice，其中 `sessionSlice` 是最重要的状态管理模块。 资料来源：[gui/src/redux/slices/sessionSlice.ts:1-100]()\n\n```mermaid\ngraph TD\n    A[RootState] --> B[session]\n    A --> C[config]\n    A --> D[ui]\n    \n    B --> B1[history]\n    B --> B2[allSessionMetadata]\n    B --> B3[codeBlockApplyStates]\n    B --> B4[title]\n    B --> B5[isSessionMetadataLoading]\n    \n    B1 --> B1a[ContextItems]\n    B1 --> B1b[isGatheringContext]\n```\n\n### 3.2 Session State 核心功能\n\nSession State 负责管理聊天会话的完整生命周期，包括以下关键功能：\n\n**会话元数据管理**\n\n```typescript\n// 添加新会话元数据\naddSessionMetadata: (\n  state,\n  { payload }: PayloadAction<BaseSessionMetadata>,\n) => {\n  state.allSessionMetadata = [...state.allSessionMetadata, payload];\n}\n\n// 更新会话元数据\nupdateSessionMetadata: (\n  state,\n  {\n    payload,\n  }: PayloadAction<{\n    sessionId: string;\n  } & Partial<BaseSessionMetadata>>,\n) => {\n  state.allSessionMetadata = state.allSessionMetadata.map((session) =>\n    session.sessionId === payload.sessionId\n      ? { ...session, ...payload }\n      : session,\n  );\n};\n```\n\n**选择器模式**\n\n系统使用 `createSelector` 实现高效的派生状态计算：\n\n```typescript\nexport const selectApplyStateByStreamId = createSelector(\n  [\n    (state: RootState) => state.session.codeBlockApplyStates.states,\n    (_state: RootState, streamId?: string) => streamId,\n  ],\n  (states, streamId) => {\n    return states.find((state) => state.streamId === streamId);\n  },\n);\n```\n\n### 3.3 异步操作处理\n\n系统通过 AsyncThunk 和 `addPassthroughCases` 模式处理异步操作，确保流式响应的状态一致性。 资料来源：[gui/src/redux/slices/sessionSlice.ts:180-200]()\n\n```typescript\nfunction addPassthroughCases(\n  builder: ActionReducerMapBuilder<SessionState>,\n  thunks: AsyncThunk<any, any, any>[],\n) {\n  thunks.forEach((thunk) => {\n    builder\n      .addCase(thunk.fulfilled, (_state, _action) => {})\n      .addCase(thunk.rejected, (_state, _action) => {})\n      .addCase(thunk.pending, (_state, _action) => {});\n  });\n}\n```\n\n## 4. Slash 命令系统\n\n### 4.1 命令处理架构\n\nSlash 命令是 CLI 层的核心交互方式，支持多种系统操作。命令处理器采用映射表模式，便于扩展和维护。 资料来源：[extensions/cli/src/slashCommands.ts:1-80]()\n\n```mermaid\ngraph LR\n    A[用户输入 /command] --> B[handleSlashCommands]\n    B --> C{命令匹配}\n    C -->|clear| D[清空聊天历史]\n    C -->|config| E[打开配置选择器]\n    C -->|model| F[打开模型选择器]\n    C -->|login| G[处理登录流程]\n    C -->|exit| H[退出应用]\n```\n\n### 4.2 支持的命令列表\n\n| 命令 | 功能描述 | 返回类型 |\n|------|----------|----------|\n| `/clear` | 清空聊天历史 | `{ clear: true, output: string }` |\n| `/exit` | 退出 CLI | `{ exit: true, output: string }` |\n| `/config` | 打开配置选择器 | `{ openConfigSelector: true }` |\n| `/model` | 打开模型选择器 | `{ openModelSelector: true }` |\n| `/compact` | 压缩会话历史 | `{ compact: true }` |\n| `/mcp` | 打开 MCP 选择器 | `{ openMcpSelector: true }` |\n| `/resume` | 恢复历史会话 | `{ openSessionSelector: true }` |\n| `/title` | 生成会话标题 | 异步处理 |\n| `/init` | 初始化新项目 | 异步处理 |\n| `/update` | 打开更新选择器 | `{ openUpdateSelector: true }` |\n| `/jobs` | 管理后台任务 | 异步处理 |\n| `/skills` | 管理技能 | 异步处理 |\n\n### 4.3 命令执行流程\n\n```typescript\nexport async function handleSlashCommands(\n  input: string,\n  assistant: AssistantConfig,\n  options?: { remoteUrl?: string; isRemoteMode?: boolean },\n): Promise<SlashCommandResult | null> {\n  // 仅在 slash 是第一个字符时触发\n  if (!input.startsWith(\"/\") || !input.trim().startsWith(\"/\")) {\n    return null;\n  }\n\n  const [command, ...args] = input.slice(1).split(\" \");\n  \n  // 路由到对应处理器\n  const handler = slashCommandMap[command];\n  if (handler) {\n    return await handler(args, assistant);\n  }\n  \n  return null;\n}\n```\n\n## 5. 系统消息生成\n\n### 5.1 消息构建策略\n\n系统消息生成器 (`systemMessage.ts`) 负责构建发送给 AI 模型的全上下文提示，包含多种可选的上下文模块。 资料来源：[extensions/cli/src/systemMessage.ts:1-60]()\n\n```mermaid\ngraph TD\n    A[开始构建系统消息] --> B{headless 模式?}\n    B -->|是| C[添加简洁响应指令]\n    B -->|否| D{format = json?}\n    D -->|是| E[添加 JSON 输出格式说明]\n    D -->|否| F{有规则或代理内容?}\n    F -->|是| G[添加 userRules 上下文]\n    F -->|否| H[返回基础消息]\n    \n    C --> H\n    E --> H\n    G --> H\n```\n\n### 5.2 上下文模块\n\n| 模块名称 | 触发条件 | 内容描述 |\n|----------|----------|----------|\n| `commitSignature` | `CONTINUE_CLI_DISABLE_COMMIT_SIGNATURE` 未设置 | Git 提交签名信息 |\n| userRules | `agentContent` 或 `processedRules` 存在 | 用户定义的规则和代理内容 |\n| 简洁响应指令 | `headless` 模式 | 要求直接返回最终答案 |\n| JSON 格式说明 | `format === \"json\"` | JSON 输出格式规范 |\n\n### 5.3 JSON 模式输出格式\n\n当启用 JSON 输出模式时，系统会注入特定的格式化指令：\n\n```typescript\nif (format === \"json\") {\n  systemMessage += `\nIMPORTANT: You are operating in JSON output mode. \nYour final response MUST be valid JSON that can be parsed by JSON.parse().\nThe JSON should contain properties relevant to answer the user's question.\n`;\n}\n```\n\n## 6. 用户界面组件架构\n\n### 6.1 组件层次结构\n\n```mermaid\ngraph TD\n    subgraph 配置页面\n        A[HelpSection] --> B[ConfigRow]\n        A --> C[ModelsSection]\n        C --> D[ModelRoleRow]\n        D --> E[ModelCard]\n    end\n    \n    subgraph 会话界面\n        F[IntroMessage] --> G[ModelCapabilityWarning]\n        F --> H[渲染 MCP 提示]\n        F --> I[渲染规则]\n    end\n    \n    subgraph 状态展示\n        J[Stats] --> K[Token 使用统计]\n        J --> L[每日使用报表]\n    end\n    \n    subgraph 错误处理\n        M[FatalErrorNotice] --> N[Alert]\n        M --> O[重载机制]\n    end\n```\n\n### 6.2 IntroMessage 组件\n\n`IntroMessage` 是 CLI 界面的主要信息展示组件，负责显示配置状态和模型信息。 资料来源：[extensions/cli/src/ui/IntroMessage.tsx:1-60]()\n\n**核心渲染逻辑**\n\n```typescript\nconst IntroMessage: React.FunctionComponent<IntroMessageProps> = ({\n  config,\n  model,\n  modelCapable,\n  mcpServers,\n  mcpPrompts,\n  rules,\n}) => {\n  return (\n    <Box>\n      {/* 配置信息 */}\n      {config && (\n        <Text color=\"blue\">\n          <Text bold>Config:</Text> <Text color=\"white\">{config.name}</Text>\n        </Text>\n      )}\n\n      {/* 模型信息 */}\n      {model ? (\n        <Text color=\"blue\">\n          <Text bold>Model:</Text>{\" \"}\n          <Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n        </Text>\n      ) : (\n        <Text color=\"blue\">\n          <Text bold>Model:</Text> <Text color=\"dim\">Loading...</Text>\n        </Text>\n      )}\n\n      {/* 能力警告 */}\n      {model && !modelCapable && (\n        <ModelCapabilityWarning modelName={model.name} />\n      )}\n    </Box>\n  );\n};\n```\n\n### 6.3 模型选择组件\n\n`ModelsSection` 负责管理不同角色的模型配置，包括聊天、补全和编辑模型。 资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-50]()\n\n| 角色 | 用途描述 | 快捷键 |\n|------|----------|--------|\n| chat | 对话和代码生成 | 默认 |\n| autocomplete | 内联代码补全 | 默认 |\n| edit | 代码转换和重构 | Cmd+I |\n\n### 6.4 Stats 页面统计功能\n\n`Stats` 组件展示令牌使用统计信息，支持按日和按模型两个维度的数据展示。 资料来源：[gui/src/pages/stats.tsx:1-80]()\n\n```typescript\n// 数据展示表格结构\n<table className=\"w-full border-collapse\">\n  <thead>\n    <Tr>\n      <Th>Day/Model</Th>\n      <Th>Generated Tokens</Th>\n      <Th>Prompt Tokens</Th>\n    </Tr>\n  </thead>\n  <tbody>\n    {models.map((model) => (\n      <Tr key={model.model}>\n        <Td>{model.model}</Td>\n        <Td>{model.generatedTokens.toLocaleString()}</Td>\n        <Td>{model.promptTokens.toLocaleString()}</Td>\n      </Tr>\n    ))}\n  </tbody>\n</table>\n```\n\n## 7. Markdown 处理系统\n\n### 7.1 嵌套代码块处理\n\n系统实现了 `patchNestedMarkdown` 功能来处理 Markdown 中嵌套的代码块，确保正确渲染。 资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts:1-40]()\n\n```mermaid\ngraph TD\n    A[输入 Markdown 源码] --> B{匹配 markdown 代码块?}\n    B -->|否| C[直接返回原内容]\n    B -->|是| D[初始化状态追踪器]\n    D --> E[遍历每一行]\n    E --> F{是否在 markdown 块内?}\n    F -->|否| G{是 markdown 开始标记?}\n    G -->|是| H[nestCount++]\n    G -->|否| E\n    F -->|是| I{遇到裸反引号?}\n    I -->|是| J{是最后一行?}\n    J -->|是| K[nestCount--]\n    J -->|否| L[转换为 ~~~]\n    K --> E\n    H --> E\n```\n\n### 7.2 支持的 Markdown 标识符\n\n| 标识符 | 说明 | 示例 |\n|--------|------|------|\n| `md` | 标准 Markdown | ````md` |\n| `markdown` | 完整写法 | ````markdown` |\n| `gfm` | GitHub Flavored Markdown | ````gfm` |\n| `github-markdown` | GitHub 特定标识 | ````github-markdown` |\n\n### 7.3 状态追踪器优化\n\n系统使用 `MarkdownBlockStateTracker` 优化嵌套代码块的检测性能：\n\n```typescript\nexport const patchNestedMarkdown = (source: string): string => {\n  // 早期返回优化\n  if (!source.match(/```(\\w*|.*)(md|markdown|gfm|github-markdown)/))\n    return source;\n\n  let nestCount = 0;\n  const lines = source.split(\"\\n\");\n\n  // 使用优化的状态追踪器\n  const stateTracker = new MarkdownBlockStateTracker(lines);\n  const trimmedLines = stateTracker.getTrimmedLines();\n\n  for (let i = 0; i < trimmedLines.length; i++) {\n    const line = trimmedLines[i];\n\n    if (nestCount > 0) {\n      if (stateTracker.isBareBacktickLine(i)) {\n        // 处理裸反引号行\n        const remainingBareBackticks =\n          stateTracker.getRemainingBareBackticksAfter(i);\n\n        if (remainingBareBackticks === 0) {\n          nestCount = 0;\n          lines[i] = \"~~~\";\n        }\n      }\n    }\n  }\n};\n```\n\n## 8. 错误处理与恢复\n\n### 8.1 FatalErrorNotice 组件\n\n`FatalErrorNotice` 组件负责展示致命错误状态，提供用户恢复选项。 资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-60]()\n\n```mermaid\ngraph TD\n    A[检测到错误状态] --> B[显示错误提示]\n    B --> C{配置加载中?}\n    C -->|是| D[显示 \"Reloading...\"]\n    C -->|否| E[显示操作选项]\n    E --> F[帮助文档链接]\n    E --> G[重新加载按钮]\n    E --> H{当前路径非配置页?} \n    H -->|是| I[显示查看按钮]\n```\n\n### 8.2 恢复机制\n\n| 操作 | 触发方式 | 功能 |\n|------|----------|------|\n| 帮助 | 点击\"Help\"链接 | 打开故障排除文档 |\n| 重新加载 | 点击\"Reload\" | 刷新配置和模型 |\n| 查看 | 点击\"View\" | 导航到配置页面 |\n\n## 9. 插件集成架构\n\n### 9.1 IDE 特定配置\n\n系统通过环境检测支持不同的 IDE 集成。以 JetBrains 为例，通过 `localStorage` 设置 IDE 标识。 资料来源：[extensions/intellij/src/main/resources/webview/index.html:1-20]()\n\n```html\n<!doctype html>\n<html lang=\"en\">\n  <head>\n    <script>\n      localStorage.setItem('ide', '\"jetbrains\"');\n    </script>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n  </body>\n</html>\n```\n\n### 9.2 跨平台支持矩阵\n\n| IDE | 集成方式 | 特定功能 |\n|-----|----------|----------|\n| VS Code | 官方扩展 | 内置模型选择器 |\n| JetBrains | Webview 集成 | IDE 标识注入 |\n| CLI | 终端 UI | React Ink 组件 |\n\n## 10. 总结\n\nContinue 的系统架构体现了现代 AI 编程助手的典型设计模式：\n\n1. **分层解耦**：通过 GUI、CLI、核心层和二进制层的清晰分离，实现业务逻辑与界面渲染的解耦\n2. **状态驱动**：Redux 统一管理应用状态，支持复杂的会话管理和实时更新\n3. **命令模式**：Slash 命令系统提供了直观的命令行交互接口\n4. **组件化设计**：React 组件库支持灵活的功能组合和扩展\n5. **性能优化**：通过早期返回、选择器缓存等策略确保响应性能\n\n该架构为 Continue 的跨平台支持和持续迭代奠定了坚实基础。\n\n---\n\n<a id='communication-protocols'></a>\n\n## 通信协议与消息传递\n\n### 相关页面\n\n相关主题：[系统架构设计](#system-architecture), [VSCode扩展](#vscode-extension)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/protocol/index.ts](https://github.com/continuedev/continue/blob/main/core/protocol/index.ts)\n- [core/protocol/webview.ts](https://github.com/continuedev/continue/blob/main/core/protocol/webview.ts)\n- [core/protocol/ide.ts](https://github.com/continuedev/continue/blob/main/core/protocol/ide.ts)\n- [core/protocol/messenger/index.ts](https://github.com/continuedev/continue/blob/main/core/protocol/messenger/index.ts)\n- [binary/src/IpcMessenger.ts](https://github.com/continuedev/continue/blob/main/binary/src/IpcMessenger.ts)\n</details>\n\n# 通信协议与消息传递\n\n## 概述\n\nContinue 项目采用分层消息传递架构，通过标准化的协议定义和 IPC（进程间通信）机制实现 GUI、CLI、IDE 扩展与核心逻辑模块之间的通信。核心协议定义位于 `core/protocol` 目录，消息路由由 `IdeMessenger` 类统一管理，二进制层通过 `IpcMessenger` 实现底层数据传输。\n\n该架构的设计目标包括：\n\n- **解耦通信**：各模块通过消息接口而非直接依赖进行交互\n- **跨进程支持**：支持在多个进程中运行并保持消息同步\n- **类型安全**：通过 TypeScript 类型定义确保消息载荷的结构正确性\n\n## 核心协议定义\n\n### 协议入口文件\n\n`core/protocol/index.ts` 是协议的统一导出入口，集中管理所有消息类型的定义和传输层配置。该文件定义了基础的消息接口、协议常量以及各子模块的类型聚合。\n\n资料来源：[core/protocol/index.ts:1-50]()\n\n### WebView 协议\n\nWebView 协议定义了前端 GUI 组件与后端核心之间的通信消息。WebView 作为浏览器内运行的 UI 层，需要通过 `postMessage` API 与扩展宿主环境交互。\n\n| 消息类型 | 方向 | 用途 |\n|---------|------|------|\n| `toWebview` | 后端 → GUI | 向前端推送状态更新、工具执行结果 |\n| `fromWebview` | GUI → 后端 | 从前端接收用户操作、上下文请求 |\n\n资料来源：[core/protocol/webview.ts:1-80]()\n\n### IDE 协议\n\nIDE 协议封装了与集成开发环境相关的所有交互操作，包括文件读写、终端命令执行、诊断信息获取等。\n\n```typescript\n// IDE 消息定义示例结构\ninterface IdeProtocol {\n  // 文件操作\n  readFile: (path: string) => Promise<string>;\n  writeFile: (path: string, content: string) => Promise<void>;\n  \n  // 终端操作\n  runTerminalCommand: (cmd: string) => Promise<string>;\n  \n  // UI 操作\n  showNotification: (msg: string) => void;\n  openUrl: (url: string) => void;\n}\n```\n\n资料来源：[core/protocol/ide.ts:1-120]()\n\n## 消息传递机制\n\n### IdeMessenger 类\n\n`IdeMessenger` 是 Continue 项目中的核心消息路由器，负责协调不同协议层之间的消息流转。该类封装了消息的发送、接收和路由逻辑，提供了统一的事件分发接口。\n\n```mermaid\ngraph TD\n    A[GUI 组件] -->|fromWebview 消息| B[IdeMessenger]\n    C[CLI 扩展] -->|IDE 协议| B\n    D[IDE 扩展] -->|WebView 协议| B\n    B -->|路由| E{消息类型判断}\n    E -->|工具调用| F[工具执行器]\n    E -->|配置更新| G[配置管理器]\n    E -->|状态查询| H[状态缓存]\n    F -->|结果| B\n    G -->|反馈| B\n```\n\nIdeMessenger 的核心职责：\n\n1. **消息序列化与反序列化**：将 TypeScript 对象转换为可传输的协议格式\n2. **路由分发**：根据消息类型将请求分发到对应的处理器\n3. **响应管理**：维护请求-响应映射，支持异步消息回调\n4. **错误处理**：统一处理通信过程中的异常情况\n\n资料来源：[core/protocol/messenger/index.ts:1-150]()\n\n### IPC 通信层\n\n`IpcMessenger` 运行在二进制层，负责底层进程间通信的实现。该类封装了操作系统级别的 IPC 机制，提供了可靠的消息传输通道。\n\n```mermaid\ngraph LR\n    A[主进程] -->|序列化| B[IpcMessenger]\n    B -->|管道/套接字| C[传输通道]\n    C -->|反序列化| D[子进程]\n    D -->|响应| C\n    C -->|响应| B\n    B -->|回调| A\n```\n\nIpcMessenger 支持的传输机制：\n\n| 传输方式 | 适用场景 | 特性 |\n|---------|---------|------|\n| 标准输入/输出 | 父子进程通信 | 简单可靠，适合单向流 |\n| 命名管道 | 跨进程实时通信 | 低延迟，支持双向流 |\n| Unix 套接字 | 高并发场景 | 性能最优，支持多客户端 |\n\n资料来源：[binary/src/IpcMessenger.ts:1-100]()\n\n## 消息类型系统\n\n### 工具调用消息\n\n工具调用是消息传递系统最重要的应用场景之一。当用户触发代码编辑、文件操作等请求时，消息系统负责将这些请求传递到对应的处理模块。\n\n```typescript\n// 工具调用消息结构\ninterface ToolCallMessage {\n  id: string;\n  tool: \"Read\" | \"Edit\" | \"Write\" | \"Bash\" | ...;\n  params: Record<string, unknown>;\n  context?: ContextItem[];\n}\n```\n\n消息流程：\n\n1. GUI 层通过 `ideMessenger.post(\"toolCall\", toolCallMessage)` 发送请求\n2. 核心层接收消息并分发到工具执行器\n3. 执行器调用相应 IDE 协议方法\n4. 执行结果通过 `toWebview` 消息返回前端\n\n### 配置管理消息\n\n配置变更需要实时同步到所有相关模块。消息系统处理配置文件的读取、验证和热更新。\n\n```mermaid\nsequenceDiagram\n    participant GUI as GUI 组件\n    participant IM as IdeMessenger\n    participant CM as 配置管理器\n    participant Cache as 状态缓存\n\n    GUI->>IM: 请求配置更新\n    IM->>CM: 验证新配置\n    CM-->>IM: 验证结果\n    IM->>Cache: 同步状态\n    IM-->>GUI: 配置已更新\n```\n\n### 上下文传递消息\n\n在代码补全和分析场景中，需要将当前编辑器状态、选中代码等上下文信息传递给模型。上下文消息的序列化采用高效二进制格式以减少传输开销。\n\n## 错误处理与重试\n\n消息传递系统实现了完整的错误处理机制：\n\n| 错误类型 | 处理策略 | 重试机制 |\n|---------|---------|---------|\n| 传输超时 | 返回错误响应 | 自动重试 3 次 |\n| 序列化失败 | 记录日志并丢弃 | 不重试 |\n| 目标不可达 | 缓存消息等待重连 | 后台队列重试 |\n| 权限拒绝 | 返回权限错误 | 提示用户授权 |\n\n## 性能优化\n\n消息传递系统采用以下优化策略：\n\n1. **批量处理**：合并高频小消息为批量请求\n2. **流式传输**：大文件内容使用流式 API\n3. **懒加载**：按需加载非关键协议模块\n4. **缓存复用**：热点消息结果缓存避免重复处理\n\n资料来源：[core/protocol/messenger/index.ts:80-150]()\n\n## 扩展机制\n\n第三方开发者可以通过以下方式扩展消息系统：\n\n1. **自定义工具协议**：在 `core/protocol` 下添加新的协议定义文件\n2. **消息中间件**：注册预处理/后处理钩子\n3. **传输层适配器**：实现 `IpcAdapter` 接口支持新的传输方式\n\n## 总结\n\nContinue 的通信协议与消息传递系统采用分层架构设计，通过标准化的协议定义和统一的 `IdeMessenger` 路由层，实现了 GUI、CLI、IDE 扩展与核心逻辑之间的高效通信。IPC 层确保了跨进程场景下的可靠传输，而丰富的错误处理和性能优化机制保证了系统的稳定性与响应速度。\n\n---\n\n<a id='llm-integration'></a>\n\n## LLM集成架构\n\n### 相关页面\n\n相关主题：[模型提供商支持](#model-providers), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/components/console/Details.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/console/Details.tsx)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n</details>\n\n# LLM集成架构\n\nContinue 是一个开源的 AI 编程助手，其核心功能之一是通过模块化的 LLM 集成架构实现与多种大语言模型的无缝对接。本页面详细说明 Continue 项目中 LLM 集成的整体架构、核心组件、配置管理以及运行时交互机制。\n\n## 1. 架构概述\n\nContinue 的 LLM 集成架构采用分层设计，将模型调用、消息处理、流式输出和工具支持解耦为独立模块。这种设计使得系统能够支持多种 LLM 提供商（如 OpenAI、Anthropic、Local 模型等），同时保持核心逻辑的一致性。\n\n### 1.1 核心设计原则\n\n| 设计原则 | 说明 |\n|---------|------|\n| **抽象层隔离** | 通过统一的接口抽象不同 LLM 提供商的差异 |\n| **配置驱动** | 模型选择和参数通过配置文件动态管理 |\n| **流式优先** | 支持流式输出以提供实时响应体验 |\n| **工具集成** | 原生支持 Function Calling 和 Tool Use |\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n### 1.2 架构分层图\n\n```mermaid\ngraph TD\n    subgraph \"表现层 (GUI/CLI)\"\n        A[模型选择界面] --> B[模型配置卡片]\n        C[对话控制台] --> D[输出展示组件]\n    end\n    \n    subgraph \"业务逻辑层\"\n        E[System Message 生成器] --> F[消息模板引擎]\n        G[Token 统计服务] --> H[会话管理]\n    end\n    \n    subgraph \"LLM 集成层\"\n        I[LLM 抽象接口] --> J[模型实现]\n        K[流式处理器] --> L[响应解析器]\n    end\n    \n    subgraph \"基础设施层\"\n        M[配置文件加载器] --> N[环境变量管理]\n        O[密钥存储] --> P[网络请求]\n    end\n    \n    A --> E\n    C --> G\n    F --> I\n    H --> K\n    M --> I\n```\n\n## 2. 模型配置与选择\n\n### 2.1 模型角色体系\n\nContinue 将 LLM 按照功能角色进行分类，每种角色承担特定的 AI 任务：\n\n| 角色 | 功能描述 | 使用场景 |\n|------|---------|---------|\n| **chat** | 对话模型 | 聊天交互、问题回答 |\n| **autocomplete** | 代码补全 | 实时代码补全建议 |\n| **edit** | 代码编辑 | 代码转换和修改 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n\n### 2.2 模型卡片组件\n\n`ModelCard` 组件负责渲染单个模型的配置卡片，包含以下关键信息：\n\n```typescript\ninterface ModelCardProps {\n  title: string;           // 模型显示名称\n  description: string;     // 模型描述\n  icon?: string;           // 模型图标路径\n  tags?: string[];         // 模型特性标签\n  dimensions?: Dimension[];  // 可配置参数维度\n  providerOptions?: Option[]; // 提供商选项\n  refUrl?: string;         // 文档链接\n}\n```\n\n资料来源：[gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n\n### 2.3 模型选择流程图\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant GUI as 模型选择界面\n    participant Config as 配置管理器\n    participant LLM as LLM 集成层\n    \n    User->>GUI: 选择模型角色\n    GUI->>Config: 获取该角色可用模型列表\n    Config-->>GUI: 返回 modelsByRole\n    User->>GUI: 选择具体模型\n    GUI->>Config: 更新 selectedModelByRole\n    Config->>LLM: 初始化模型实例\n    LLM-->>GUI: 模型就绪确认\n```\n\n## 3. System Message 生成机制\n\n### 3.1 概述\n\n`systemMessage.ts` 是 LLM 集成架构中的核心模块，负责为每次 LLM 请求生成系统提示词（System Prompt）。它根据运行模式、用户配置和规则动态组装系统消息内容。\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n### 3.2 系统消息组装逻辑\n\n```mermaid\ngraph LR\n    A[基础配置] --> B{headless 模式?}\n    B -->|是| C[添加简洁响应指令]\n    B -->|否| D{format = json?}\n    D -->|是| E[添加 JSON 输出指令]\n    D -->|否| F{有规则内容?}\n    F -->|是| G[添加 userRules 上下文]\n    F -->|否| H[基础系统消息]\n    C --> I[最终系统消息]\n    E --> I\n    G --> I\n    H --> I\n```\n\n### 3.3 运行模式差异\n\n| 模式 | 说明 | 系统消息特点 |\n|------|------|-------------|\n| **GUI 模式** | 图形界面交互 | 包含完整上下文和规则 |\n| **Headless 模式** | 命令行无界面 | 仅返回最终答案，无解释 |\n| **JSON 模式** | 结构化输出 | 强制返回有效 JSON |\n\n## 4. 对话与输出管理\n\n### 4.1 IntroMessage 组件\n\n`IntroMessage` 组件负责在 CLI 界面中展示当前会话的基本信息，包括：\n\n- **配置名称**：当前使用的配置集名称\n- **模型信息**：选定的模型名称（显示为不带前缀的简称）\n- **模型能力**：检查模型是否支持必要功能\n\n```typescript\n// 模型名称提取逻辑\n<Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n```\n\n资料来源：[extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n\n### 4.2 会话详情组件\n\n`Details` 组件展示对话交互的统计信息和结果内容：\n\n```typescript\ninterface InteractionDetails {\n  summary: {\n    tokensPerSecond: number;  // Token 处理速度\n    totalTime: number;        // 总耗时\n    costBreakdown?: {         // 成本明细\n      breakdown: string;\n    };\n  };\n  interaction: {\n    start?: StartItem;        // 起始标记\n    results: ResultGroup[];   // 结果组\n    end?: EndItem;            // 结束标记\n  };\n}\n```\n\n资料来源：[gui/src/components/console/Details.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/console/Details.tsx)\n\n### 4.3 输出展示流程\n\n```mermaid\ngraph TD\n    A[LLM 响应流] --> B{解析响应类型}\n    B -->|Start| C[渲染开始标记]\n    B -->|Result| D[渲染结果组]\n    B -->|End| E[渲染结束标记]\n    B -->|Streaming| F[实时更新内容]\n    \n    C --> G[更新 UI]\n    D --> G\n    E --> G\n    F --> G\n    \n    G --> H[计算统计信息]\n    H --> I[显示 Tokens/s]\n    H --> J[显示总耗时]\n```\n\n## 5. Token 统计与监控\n\n### 5.1 统计页面架构\n\n`stats.tsx` 提供每日和按模型的 Token 使用统计：\n\n| 统计维度 | 数据字段 |\n|---------|---------|\n| **每日统计** | day, generatedTokens, promptTokens |\n| **按模型统计** | model, generatedTokens, promptTokens |\n\n资料来源：[gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n\n### 5.2 资源监控数据模型\n\n```typescript\ninterface ResourceSummary {\n  peak: {\n    memory: number;  // 峰值内存使用\n    cpu: number;     // 峰值 CPU 使用率\n  };\n  average: {\n    memory: number;  // 平均内存使用\n    cpu: number;     // 平均 CPU 使用率\n  };\n}\n```\n\n资料来源：[extensions/cli/src/ui/components/ResourceDebugBar.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/components/ResourceDebugBar.tsx)\n\n## 6. 配置管理与错误处理\n\n### 6.1 致命错误通知\n\n当 LLM 配置加载失败时，系统通过 `FatalErrorNotice` 组件展示错误信息：\n\n```typescript\ninterface FatalErrorProps {\n  error: Error | undefined;\n  configLoading: boolean;\n  currentPath: CONFIG_ROUTES;\n}\n```\n\n错误处理流程：\n1. 检测配置加载状态\n2. 识别错误类型（模型不可用/配置格式错误）\n3. 显示用户友好的错误提示\n4. 提供\"重新加载\"和\"查看配置\"操作\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n\n### 6.2 配置加载状态图\n\n```mermaid\nstateDiagram-v2\n    [*] --> Loading: 初始化\n    Loading --> Success: 配置加载完成\n    Loading --> Error: 加载失败\n    Success --> Reloading: 用户点击重新加载\n    Reloading --> Success: 重新加载成功\n    Reloading --> Error: 重新加载失败\n    Error --> Loading: 用户点击重新加载\n```\n\n## 7. 关键技术特性\n\n### 7.1 多提供商支持\n\nContinue 通过统一的抽象接口支持多种 LLM 提供商：\n\n- **云端模型**：OpenAI GPT 系列、Anthropic Claude 系列\n- **本地模型**：Ollama、LM Studio 等本地部署方案\n- **自定义端点**：支持 OpenAI 兼容 API\n\n### 7.2 工具调用集成\n\n系统支持 Function Calling 功能，使 LLM 能够调用预定义的工具函数：\n\n```typescript\n// 工具调用上下文格式\n<context name=\"tools\">\n[{\"name\": \"toolName\", \"description\": \"...\", \"parameters\": {...}}]\n</context>\n```\n\n### 7.3 提交签名集成\n\n在 Git 操作中自动添加提交签名信息：\n\n```typescript\n<context name=\"commitSignature\">\nGenerated with [Continue](https://continue.dev)\nCo-Authored-By: Continue <noreply@continue.dev>\n</context>\n```\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n## 8. 总结\n\nContinue 的 LLM 集成架构通过分层设计实现了高度的灵活性和可扩展性。核心设计包括：\n\n| 层面 | 职责 | 关键文件 |\n|------|------|---------|\n| 表现层 | 用户交互与展示 | ModelCard, Details, IntroMessage |\n| 配置层 | 模型配置管理 | ModelsSection, FatalErrorNotice |\n| 消息层 | System Prompt 生成 | systemMessage.ts |\n| 统计层 | 使用量与性能监控 | stats.tsx, ResourceDebugBar |\n\n该架构使得 Continue 能够无缝集成多种 LLM 提供商，同时保持一致的用户体验和开发接口。\n\n---\n\n<a id='model-providers'></a>\n\n## 模型提供商支持\n\n### 相关页面\n\n相关主题：[LLM集成架构](#llm-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/llm/llms/index.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/index.ts)\n- [core/llm/llms/OpenAI.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/OpenAI.ts)\n- [core/llm/llms/Anthropic.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/Anthropic.ts)\n- [core/llm/llms/Ollama.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/Ollama.ts)\n- [packages/openai-adapters/src/apis/OpenAI.ts](https://github.com/continuedev/continue/blob/main/packages/openai-adapters/src/apis/OpenAI.ts)\n- [gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n</details>\n\n# 模型提供商支持\n\n## 概述\n\nContinue 是一款开源的 AI 编程助手，支持多种大语言模型（LLM）提供商。通过统一的抽象层，Continue 能够集成 OpenAI、Anthropic、Ollama 等主流模型服务，同时保持配置的一致性和扩展性。模型提供商支持是 Continue 的核心功能之一，使用户能够灵活选择最适合其工作流程的 AI 模型。\n\n模型配置系统采用角色分离架构，将模型按用途分为**聊天（Chat）**、**自动补全（Autocomplete）** 和**编辑（Edit）** 三种角色，每种角色可以独立配置不同的提供商和模型实例。这种设计允许开发者在不同场景下使用最合适的模型，例如使用高性能模型进行复杂代码审查，使用轻量级模型进行代码补全以降低延迟和成本。\n\n## 架构设计\n\n### 核心模块结构\n\nContinue 的模型支持系统采用分层架构，从底层到上层依次为：\n\n1. **适配器层（Adapter Layer）**：处理不同 API 提供商的协议差异，将请求标准化\n2. **模型实现层（Model Implementation Layer）**：封装各提供商的 SDK 和 API 调用逻辑\n3. **模型工厂层（Model Factory Layer）**：根据配置动态创建模型实例\n4. **配置管理层（Configuration Layer）**：管理模型配置、凭证和环境变量\n\n```mermaid\ngraph TD\n    A[用户配置] --> B[Config Models]\n    B --> C[Model Factory]\n    C --> D{Provider Type}\n    D -->|OpenAI| E[OpenAI Adapter]\n    D -->|Anthropic| F[Anthropic Adapter]\n    D -->|Ollama| G[Ollama Adapter]\n    E --> H[统一 LLM 接口]\n    F --> H\n    G --> H\n    H --> I[Continue Core]\n```\n\n### 适配器模式\n\nContinue 大量使用适配器模式来处理不同 API 提供商之间的差异。核心适配器接口定义了统一的请求和响应格式，各提供商适配器负责将标准化请求转换为特定 API 的格式。这种设计使得添加新的模型提供商变得简单，只需实现相应的适配器接口即可，无需修改上层业务逻辑。\n\n```mermaid\nclassDiagram\n    class LLMAdapter {\n        <<interface>>\n        +complete(): Promise~Completion~\n        +chat(): Promise~ChatResponse~\n        +stream(): AsyncIterator~StreamChunk~\n    }\n    \n    class OpenAIAdapter {\n        +apiKey: string\n        +baseUrl: string\n        +complete()\n        +chat()\n    }\n    \n    class AnthropicAdapter {\n        +apiKey: string\n        +complete()\n        +chat()\n    }\n    \n    class OllamaAdapter {\n        +baseUrl: string\n        +complete()\n        +chat()\n    }\n    \n    LLMAdapter <|.. OpenAIAdapter\n    LLMAdapter <|.. AnthropicAdapter\n    LLMAdapter <|.. OllamaAdapter\n```\n\n## 支持的模型提供商\n\n### 提供商类型对比\n\n| 提供商 | API 类型 | 本地部署 | 流式响应 | 多模态支持 | 配置复杂度 |\n|--------|----------|----------|----------|------------|------------|\n| OpenAI | REST | ❌ | ✅ | ✅ | 低 |\n| Anthropic | REST | ❌ | ✅ | ✅ | 低 |\n| Ollama | REST | ✅ | ✅ | ✅ | 中 |\n| Azure OpenAI | REST | ❌ | ✅ | ✅ | 高 |\n| 本地模型 | 多种 | ✅ | 视实现 | 视模型 | 高 |\n\n### OpenAI 支持\n\nOpenAI 是 Continue 默认且最广泛支持的模型提供商。通过 `packages/openai-adapters/src/apis/OpenAI.ts` 中的适配器实现，Continue 支持 OpenAI 全系列模型，包括 GPT-4、GPT-4 Turbo、GPT-3.5 Turbo 等。\n\nOpenAI 适配器的核心功能包括：\n\n- **基础 URL 配置**：支持标准 OpenAI API 端点和自定义代理\n- **API 密钥管理**：通过环境变量或配置文件安全存储\n- **组织标识**：支持多组织账户的计费归属\n- **请求超时控制**：可配置的请求超时和重试机制\n- **Token 计数**：内置 token 用量统计和成本估算\n\n配置 OpenAI 模型需要提供以下参数：\n\n```yaml\nmodels:\n  - name: gpt-4\n    provider: openai\n    api_key: ${OPENAI_API_KEY}\n    api_base: https://api.openai.com/v1\n```\n\n### Anthropic 支持\n\nAnthropic 提供的 Claude 系列模型以其长上下文窗口和强大的推理能力著称。Continue 通过专门的适配器模块 `core/llm/llms/Anthropic.ts` 实现对 Claude 模型的支持。\n\nAnthropic 模型的主要特点：\n\n- **超长上下文**：支持高达 200K token 的上下文窗口\n- **工具使用**：原生支持函数调用和工具使用能力\n- **系统提示优化**：针对系统消息有专门的优化处理\n- **安全过滤**：内置内容安全过滤机制\n\nAnthropic 适配器实现的核心接口与 OpenAI 类似，但针对 Claude 的 API 规范进行了适配。关键差异包括消息格式的转换、停止序列的处理方式，以及流式响应的解析逻辑。\n\n### Ollama 本地部署支持\n\nOllama 是一个开源的本地模型运行框架，Continue 通过 `core/llm/llms/Ollama.ts` 提供完整支持。Ollama 支持使用户能够在本地机器上运行各种开源模型，如 Llama 2、Mistral、Codellama 等，无需依赖云端 API。\n\nOllama 配置的优势：\n\n- **隐私保护**：所有数据均在本地处理，不外传\n- **成本降低**：无需支付 API 调用费用\n- **离线可用**：无网络连接时仍可使用\n- **自定义模型**：支持导入和微调自定义模型\n- **低延迟**：本地推理通常具有更低的响应延迟\n\nOllama 适配器需要配置本地服务地址，默认情况下指向 `http://localhost:11434`。首次使用前需确保 Ollama 服务已在后台运行。\n\n## 模型角色配置\n\n### 角色定义\n\nContinue 将模型使用场景分为三种角色，每种角色针对特定任务进行了优化：\n\n| 角色 | 用途 | 延迟要求 | 成本考虑 | 推荐模型 |\n|------|------|----------|----------|----------|\n| Chat | 对话交互、代码解释、问答 | 中等 | 高 | GPT-4、Claude |\n| Autocomplete | 实时代码补全 | 极低 | 低 | GPT-3.5 Turbo、Code Llama |\n| Edit | 代码转换、重构、生成 | 低 | 中 | GPT-4、Claude |\n\n### 角色配置界面\n\n模型角色配置通过 `gui/src/pages/config/sections/ModelsSection.tsx` 组件实现用户界面。该组件提供直观的配置选项，允许用户：\n\n1. **选择活跃模型**：为每个角色选择当前使用的模型\n2. **查看模型信息**：显示模型名称、提供商、描述和标签\n3. **配置模型参数**：调整温度、最大 token 等生成参数\n4. **访问文档链接**：提供模型配置文档的快速访问\n\n```typescript\n// 角色配置数据结构\ninterface ModelRoleConfig {\n  chat: ModelConfig[];\n  autocomplete: ModelConfig[];\n  edit: ModelConfig[];\n}\n\n// 模型配置项\ninterface ModelConfig {\n  name: string;\n  provider: ProviderType;\n  apiKey?: string;\n  apiBase?: string;\n  model: string;\n  temperature?: number;\n  maxTokens?: number;\n  contextLength?: number;\n}\n```\n\n### 角色特定配置项\n\n不同角色支持不同的配置参数，这些参数影响模型的生成行为：\n\n**聊天角色（Chat）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| temperature | number | 0.7 | 生成随机性控制 |\n| maxTokens | number | 4096 | 最大输出 token 数 |\n| contextLength | number | 16384 | 上下文窗口大小 |\n| presencePenalty | number | 0 | 话题新鲜度惩罚 |\n| frequencyPenalty | number | 0 | 重复 token 惩罚 |\n\n**自动补全角色（Autocomplete）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| temperature | number | 0.5 | 较低以保持一致性 |\n| maxTokens | number | 256 | 补全长度限制 |\n| n | number | 1 | 候选补全数量 |\n| stop | string[] | [] | 停止序列 |\n\n**编辑角色（Edit）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|------|------|\n| temperature | number | 0.3 | 低温度保持精确 |\n| maxTokens | number | 2048 | 编辑建议长度 |\n| diffFormat | boolean | true | 是否返回 diff 格式 |\n\n## 模型选择交互\n\n### 斜杠命令\n\n用户可以通过斜杠命令快速切换模型。`extensions/cli/src/slashCommands.ts` 文件中定义了 `/model` 命令，该命令打开模型选择器界面。\n\n```typescript\n// slashCommands.ts 中的模型命令定义\nconst slashCommandHandlers = {\n  model: () => ({ openModelSelector: true }),\n  // ... 其他命令\n};\n```\n\n支持的相关命令：\n\n| 命令 | 功能 | 快捷键 |\n|------|------|--------|\n| `/model` | 打开模型选择器 | - |\n| `/config` | 打开配置选择器 | - |\n| `/whoami` | 显示当前配置和模型信息 | - |\n| `/info` | 显示详细模型和系统信息 | - |\n\n### 模型选择器界面\n\n模型选择器由 `gui/src/components/modelSelection/ModelCard.tsx` 组件实现。该组件展示可用模型的详细信息，包括：\n\n- **模型图标**：根据提供商显示对应的品牌图标\n- **模型名称**：包含提供商前缀，如 `openai/gpt-4`\n- **模型描述**：简要说明模型的适用场景\n- **评估维度**：可选的能力评估指标，如代码生成、数学推理等\n- **文档链接**：指向官方文档的链接\n- **配置标签**：如免费、API 密钥要求等\n\n```mermaid\ngraph LR\n    A[用户输入 /model] --> B[打开模型选择器]\n    B --> C[显示所有可用模型]\n    C --> D{用户选择}\n    D -->|标准模型| E[验证 API 密钥]\n    D -->|本地模型| F[验证 Ollama 连接]\n    E --> G[更新配置]\n    F --> G\n    G --> H[刷新界面显示]\n```\n\n## 模型信息展示\n\n### 启动消息\n\n`gui/src/components/StyledMarkdownPreview/IntroMessage.tsx` 组件在会话启动时显示当前模型配置信息。该组件展示：\n\n- **配置名称**：当前使用的配置集名称\n- **模型名称**：显示当前活跃模型的简称\n- **加载状态**：模型信息未加载时显示加载指示器\n\n```tsx\n// 模型信息展示逻辑\n{model ? (\n  <Text color=\"blue\">\n    <Text bold>Model:</Text>{\" \"}\n    <Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n  </Text>\n) : (\n  <Text color=\"blue\">\n    <Text bold>Model:</Text> <Text color=\"dim\">Loading...</Text>\n  </Text>\n)}\n```\n\n### 模型能力警告\n\n当选定的模型可能不具备特定任务所需的能力时，系统会显示警告信息。这通过 `ModelCapabilityWarning` 组件实现，提示用户可能需要切换到更强大的模型。\n\n### 使用统计\n\n`gui/src/pages/stats.tsx` 页面提供 Token 使用统计，帮助用户了解不同模型的使用情况：\n\n- **按日期统计**：每日 Prompt Token 和 Generated Token 数量\n- **按模型统计**：各模型的使用量和占比\n- **成本估算**：基于提供商定价的费用估算\n\n| 统计维度 | 显示内容 | 数据来源 |\n|----------|----------|----------|\n| 日 Token 使用 | 当日生成和消费的 token 总数 | 本地存储 |\n| 模型 Token 使用 | 各模型的独立使用统计 | 本地存储 |\n| 成本估算 | 基于配置价格的预估费用 | 配置信息 |\n\n## 配置管理\n\n### 配置文件结构\n\n模型提供商配置通常在 `config.json` 或 `~/.continue/config.json` 中定义：\n\n```json\n{\n  \"models\": [\n    {\n      \"title\": \"GPT-4\",\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4\",\n      \"apiKey\": \"${OPENAI_API_KEY}\"\n    },\n    {\n      \"title\": \"Claude\",\n      \"provider\": \"anthropic\",\n      \"model\": \"claude-3-opus-20240229\",\n      \"apiKey\": \"${ANTHROPIC_API_KEY}\"\n    },\n    {\n      \"title\": \"Local Llama\",\n      \"provider\": \"ollama\",\n      \"model\": \"llama2\",\n      \"apiBase\": \"http://localhost:11434\"\n    }\n  ],\n  \"modelRoles\": {\n    \"chat\": \"GPT-4\",\n    \"autocomplete\": \"Local Llama\",\n    \"edit\": \"Claude\"\n  }\n}\n```\n\n### 环境变量支持\n\n敏感信息如 API 密钥通过环境变量引用，避免硬编码在配置文件中：\n\n| 变量名 | 用途 | 示例值 |\n|--------|------|--------|\n| OPENAI_API_KEY | OpenAI API 密钥 | sk-... |\n| ANTHROPIC_API_KEY | Anthropic API 密钥 | sk-ant-... |\n| OLLAMA_BASE_URL | Ollama 服务地址 | http://localhost:11434 |\n\n### 配置验证\n\n系统启动时执行配置验证，包括：\n\n1. **API 连接测试**：验证模型提供商的可达性\n2. **凭证有效性**：检查 API 密钥是否有效\n3. **模型可用性**：确认指定模型是否在账户中可用\n4. **参数合法性**：验证配置参数是否在有效范围内\n\n验证失败时，`gui/src/components/config/FatalErrorNotice.tsx` 组件显示错误通知：\n\n```tsx\n// 错误通知逻辑\n<Alert type=\"error\" className=\"mx-2 my-1 px-2\">\n  <span>{`Error loading`}</span>{\" \"}\n  <span className=\"italic\">{displayName}</span>\n  {\". \"}\n  <span>{`Chat is disabled until a model is available.`}</span>\n</Alert>\n```\n\n## 系统消息集成\n\n`extensions/cli/src/systemMessage.ts` 文件负责生成发送给模型的系统消息，其中包含与模型相关的配置信息：\n\n### 凭证注入\n\n当检测到特定环境变量时，系统会在系统消息中注入上下文信息：\n\n```typescript\n// 凭证上下文注入逻辑\nif (!process.env.CONTINUE_DISABLE_COMMIT_SIGNATURE) {\n  systemMessage += `\\n<context name=\"commitSignature\">\nGenerated with [Continue](https://continue.dev)\n\nCo-Authored-By: Continue <noreply@continue.dev>\n</context>\\n`;\n}\n```\n\n### 角色规则传递\n\n模型角色相关的规则通过系统消息传递给 AI：\n\n```typescript\n// 规则上下文添加\nif (agentContent || processedRules.length > 0) {\n  systemMessage += '\\n\\n<context name=\"userRules\">';\n  \n  if (agentContent) {\n    systemMessage += `\\n${agentContent}`;\n  }\n  \n  if (processedRules.length > 0) {\n    const separator = agentContent ? \"\\n\" : \"\";\n    systemMessage += `${separator}${processedRules.join(\"\\n\")}`;\n  }\n  \n  systemMessage += '</context>';\n}\n```\n\n## 错误处理与恢复\n\n### 模型不可用处理\n\n当配置加载失败或模型不可用时，系统采取以下策略：\n\n1. **显示错误通知**：通过 `FatalErrorNotice` 组件显示问题描述\n2. **提供操作选项**：重试加载、查看配置或访问帮助文档\n3. **禁用聊天功能**：防止用户尝试使用未初始化的模型\n4. **记录错误日志**：便于问题诊断和调试\n\n### 连接重试机制\n\n对于网络相关错误，系统实现指数退避重试策略：\n\n```mermaid\ngraph TD\n    A[请求发送] --> B{响应状态}\n    B -->|成功| C[返回结果]\n    B -->|网络错误| D[重试计数 < 3]\n    B -->|认证错误| E[终止并报错]\n    D -->|是| F[等待 2^n 秒]\n    F --> A\n    D -->|否| G[终止并报错]\n```\n\n### 模型能力降级\n\n当首选模型不可用时，系统支持配置备用模型实现能力降级：\n\n```yaml\nmodels:\n  - name: primary-gpt4\n    provider: openai\n    model: gpt-4\n  - name: fallback-gpt35\n    provider: openai\n    model: gpt-3.5-turbo\n\nmodelRoles:\n  chat: primary-gpt4\n  # 当 primary 不可用时自动切换到 fallback\n```\n\n## 扩展开发指南\n\n### 添加新提供商\n\n要添加新的模型提供商，需要实现以下步骤：\n\n1. **创建适配器**：在 `core/llm/llms/` 目录下创建新的适配器文件\n2. **实现接口**：遵循 `LLMAdapter` 接口定义实现必要方法\n3. **注册工厂**：在模型工厂中注册新提供商的创建逻辑\n4. **配置支持**：在配置解析器中添加新提供商的配置验证\n\n```typescript\n// 新提供商适配器模板\nexport class CustomProviderAdapter implements LLMAdapter {\n  constructor(config: CustomProviderConfig) {\n    this.config = config;\n  }\n  \n  async complete(prompt: string): Promise<Completion> {\n    // 实现完成接口\n  }\n  \n  async chat(messages: Message[]): Promise<ChatResponse> {\n    // 实现聊天接口\n  }\n  \n  async *stream(prompt: string): AsyncIterator<StreamChunk> {\n    // 实现流式接口\n  }\n}\n```\n\n### 提供商配置验证\n\n新增提供商时需要在配置验证模块中添加对应的验证逻辑：\n\n| 验证项 | 检查内容 | 错误消息 |\n|--------|----------|----------|\n| API 端点 | URL 格式和可达性 | Invalid API base URL |\n| API 密钥 | 格式和必需性 | API key is required |\n| 模型名称 | 在提供商处的可用性 | Model not found |\n| 参数范围 | 温度、最大 token 等 | Parameter out of range |\n\n## 最佳实践\n\n### 模型选择建议\n\n根据不同场景推荐使用不同的模型配置：\n\n**复杂代码审查和重构**\n\n- 角色：Chat、Edit\n- 推荐模型：GPT-4、Claude 3 Opus\n- 理由：强大推理能力和上下文理解\n\n**日常代码补全**\n\n- 角色：Autocomplete\n- 推荐模型：Code Llama、GPT-3.5 Turbo\n- 理由：低延迟、低成本\n\n**隐私敏感场景**\n\n- 角色：全部\n- 推荐模型：Ollama + Llama 2\n- 理由：数据本地处理\n\n### 性能优化\n\n1. **使用流式响应**：提升用户体验 Perception\n2. **合理设置上下文**：避免加载不必要的上下文\n3. **配置合适的温度**：不同任务使用不同温度\n4. **启用本地模型**：降低 API 依赖和网络延迟\n\n### 安全建议\n\n1. **使用环境变量**：避免在配置文件中硬编码密钥\n2. **限制 API 权限**：使用最小必要范围的 API 密钥\n3. **定期轮换密钥**：周期性更换 API 密钥\n4. **监控使用量**：定期检查 Token 使用统计\n\n## 总结\n\nContinue 的模型提供商支持系统通过模块化架构和适配器模式，实现了多提供商的无缝集成。从 OpenAI、Anthropic 到本地部署的 Ollama，用户可以根据需求灵活选择最合适的 AI 模型。角色分离的配置设计使得不同场景下可以使用不同的模型优化，而完善的错误处理和恢复机制保证了系统的稳定性和可用性。\n\n---\n\n<a id='autocomplete-system'></a>\n\n## 自动补全系统\n\n### 相关页面\n\n相关主题：[上下文提供者](#context-providers), [代码库索引系统](#codebase-indexing)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/UserSettingsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/UserSettingsSection.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [packages/config-yaml/src/validation.ts](https://github.com/continuedev/continue/blob/main/packages/config-yaml/src/validation.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx)\n</details>\n\n# 自动补全系统\n\n## 概述\n\n自动补全系统（Autocomplete System）是 Continue 插件的核心功能之一，为用户在编写代码时提供实时的内联代码补全建议。该系统通过专用的补全模型（Completion Model）实现，能够在用户输入时智能预测并生成代码片段。\n\n自动补全系统的主要特点包括：\n\n- **实时流式输出**：支持逐 token 流式返回补全结果，提供即时反馈\n- **多行补全支持**：可配置是否启用多行代码补全功能\n- **上下文感知**：基于当前文件内容和检索到的相关上下文进行补全\n- **灵活配置**：支持超时时间、防抖延迟等参数的自定义配置\n- **模型验证**：自动检测并警告不适合补全任务的模型\n\n## 系统架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                        自动补全系统架构                           │\n├─────────────────────────────────────────────────────────────────┤\n│                                                                 │\n│  ┌─────────────┐    ┌──────────────┐    ┌─────────────────────┐ │\n│  │   前端 UI   │───▶│ 用户设置面板 │───▶│ 补全模型配置        │ │\n│  └─────────────┘    └──────────────┘    └─────────────────────┘ │\n│                                                │                 │\n│                                                ▼                 │\n│  ┌─────────────────────────────────────────────────────────────┐│\n│  │                    核心补全引擎                              ││\n│  │  ┌─────────────┐  ┌──────────────┐  ┌────────────────────┐  ││\n│  │  │ 模板处理    │─▶│ 上下文检索   │─▶│ 流式转换管道       │  ││\n│  │  └─────────────┘  └──────────────┘  └────────────────────┘  ││\n│  └─────────────────────────────────────────────────────────────┘│\n│                                                │                 │\n│                                                ▼                 │\n│  ┌─────────────┐    ┌──────────────┐    ┌─────────────────────┐ │\n│  │   模型验证  │◀───│ 配置验证     │◀───│ YAML 配置解析       │ │\n│  └─────────────┘    └──────────────┘    └─────────────────────┘ │\n│                                                                 │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n## 核心组件\n\n### 补全模型配置\n\n自动补全功能使用专用的补全模型。与聊天模型不同，补全模型需要特别优化以支持代码补全任务。\n\n#### 模型角色配置\n\n| 角色 | 用途 | 说明 |\n|------|------|------|\n| `chat` | 对话交互 | 用于用户与 AI 的对话交流 |\n| `autocomplete` | 代码补全 | 专门用于内联代码补全 |\n| `edit` | 代码转换 | 用于转换和编辑选定的代码片段 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:25-40]()\n\n#### 模型选择限制\n\n系统在配置验证阶段会对补全模型进行特殊检查，以下模型类型**不适合**用于代码补全：\n\n- `claude`\n- `mistral`\n- `instruct`\n\n除非模型名称包含 `deepseek`、`codestral` 或 `coder` 等关键字。\n\n资料来源：[packages/config-yaml/src/validation.ts:40-55]()\n\n```typescript\nconst nonAutocompleteModels = [\n  \"claude\",\n  \"mistral\",\n  \"instruct\",\n];\n\nif (\n  nonAutocompleteModels.some((m) => modelName.includes(m)) &&\n  !modelName.includes(\"deepseek\") &&\n  !modelName.includes(\"codestral\") &&\n  !modelName.toLowerCase().includes(\"coder\")\n) {\n  errors.push({\n    fatal: false,\n    message: `${model.model} is not trained for tab-autocomplete, and will result in low-quality suggestions.`,\n  });\n}\n```\n\n### 用户设置面板\n\n自动补全系统提供丰富的用户配置选项，位于设置界面的 \"Autocomplete\" 配置区段。\n\n#### 配置参数表\n\n| 参数 | 类型 | 默认值 | 取值范围 | 说明 |\n|------|------|--------|----------|------|\n| `useAutocompleteMultilineCompletions` | select | `auto` | `auto` \\| `always` \\| `never` | 控制多行补全行为 |\n| `modelTimeout` | number | - | 100-5000ms | 补全请求最大超时时间 |\n| `debounceDelay` | number | - | 0-2500ms | 触发补全请求的防抖延迟 |\n| `disableAutocompleteInFiles` | string | - | Glob 模式 | 禁用补全的文件匹配模式 |\n\n资料来源：[gui/src/pages/config/sections/UserSettingsSection.tsx:1-70]()\n\n#### 多行补全配置\n\n多行补全支持三种模式：\n\n1. **Auto（自动）**：系统根据上下文自动决定是否启用多行补全\n2. **Always（始终）**：始终启用多行补全\n3. **Never（从不）**：禁用多行补全，只生成单行建议\n\n```tsx\n<UserSetting\n  type=\"select\"\n  title=\"Multiline Autocompletions\"\n  description=\"Controls multiline completions for autocomplete.\"\n  value={useAutocompleteMultilineCompletions}\n  onChange={(value) =>\n    handleUpdate({\n      useAutocompleteMultilineCompletions: value as \"auto\" | \"always\" | \"never\",\n    })\n  }\n  options={[\n    { label: \"Auto\", value: \"auto\" },\n    { label: \"Always\", value: \"always\" },\n    { label: \"Never\", value: \"never\" },\n  ]}\n/>\n```\n\n#### 文件禁用配置\n\n用户可以通过 glob 模式指定禁用自动补全的文件：\n\n- 多个模式之间用逗号分隔\n- 示例：`**/*.(txt,md)` 禁用在所有 `.txt` 和 `.md` 文件中的补全\n- 空字符串视为未配置，所有文件启用补全\n\n```tsx\n<UserSetting\n  type=\"input\"\n  title=\"Disable autocomplete in files\"\n  description=\"List of comma-separated glob pattern to disable autocomplete in matching files.\"\n  placeholder=\"**/*.(txt,md)\"\n  value={formDisableAutocomplete}\n  onChange={setFormDisableAutocomplete}\n  onSubmit={handleDisableAutocompleteSubmit}\n  onCancel={cancelChangeDisableAutocomplete}\n  isDirty={formDisableAutocomplete !== disableAutocompleteInFiles}\n  isValid={formDisableAutocomplete.trim() !== \"\"}\n/>\n```\n\n### 本地部署配置\n\n对于使用本地模型的用户，设置界面提供了模型下载和配置功能。\n\n#### 本地补全模型\n\n| 模型用途 | 模型标识 | 说明 |\n|----------|----------|------|\n| Chat 对话 | `LOCAL_ONBOARDING_CHAT_MODEL` | 用于对话交互的本地模型 |\n| 代码补全 | `LOCAL_ONBOARDING_FIM_MODEL` | 用于代码补全的 FIM（Fill-in-the-Middle）模型 |\n| 向量嵌入 | `LOCAL_ONBOARDING_EMBEDDINGS_MODEL` | 用于语义检索的嵌入模型 |\n\n资料来源：[gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx:15-35]()\n\n```tsx\n<OllamaModelDownload\n  title=\"Download Autocomplete model\"\n  modelName={LOCAL_ONBOARDING_FIM_MODEL}\n  hasDownloaded={hasDownloadedAutocompleteModel}\n/>\n```\n\n## 配置验证\n\n### 模型兼容性检查\n\n系统通过 `packages/config-yaml/src/validation.ts` 中的验证逻辑确保用户配置的补全模型适合代码补全任务。\n\n#### 验证流程\n\n```mermaid\ngraph TD\n    A[加载模型配置] --> B{检查模型名称}\n    B -->|包含 claude/mistral/instruct| C{检查特殊关键字}\n    C -->|包含 deepseek/codestral/coder| D[验证通过]\n    C -->|不包含特殊关键字| E[生成警告信息]\n    D --> F[完成验证]\n    E --> F\n    B -->|其他模型| D\n```\n\n#### 警告信息\n\n当检测到不推荐的模型时，系统会生成以下格式的警告：\n\n```json\n{\n  \"fatal\": false,\n  \"message\": \"{model} is not trained for tab-autocomplete, and will result in low-quality suggestions. See the docs to learn more about why: https://docs.continue.dev/features/tab-autocomplete#i-want-better-completions-should-i-use-gpt-4\"\n}\n```\n\n资料来源：[packages/config-yaml/src/validation.ts:47-54]()\n\n## CLI 集成\n\n### 系统消息生成\n\n在 CLI 模式下运行的 Continue 会根据配置生成相应的系统消息，告知模型当前的功能状态。\n\n#### 模型能力警告\n\n当检测到模型可能不具备最佳补全能力时，CLI 会显示相应的警告信息：\n\n```tsx\n{model && !modelCapable && (\n  <>\n    <ModelCapabilityWarning\n      modelName={model.name.split(\"/\").pop() || model.name}\n    />\n    <Text> </Text>\n  </>\n)}\n```\n\n资料来源：[extensions/cli/src/ui/IntroMessage.tsx:30-40]()\n\n#### 精简模式指令\n\n在无头模式（headless mode）下运行 CLI 时，系统会添加特定指令要求模型只提供最终答案：\n\n```typescript\nif (headless) {\n  systemMessage += `\nIMPORTANT: You are running in headless mode. Provide ONLY your final answer to the user's question. Do not include explanations, reasoning, or additional commentary unless specifically requested. Be direct and concise.`;\n}\n```\n\n资料来源：[extensions/cli/src/systemMessage.ts:50-55]()\n\n## 技术实现细节\n\n### 补全流程\n\n```\n用户输入 ──▶ 防抖计时器 ──▶ 上下文检索 ──▶ 模板填充 ──▶ 模型推理 ──▶ 流式输出 ──▶ UI 展示\n     │                         │              │              │\n     │                         ▼              ▼              ▼\n     │                   [ContextRetrieval] [Template] [CompletionStreamer]\n     │                         │              │              │\n     ▼                         ▼              ▼              ▼\n  防抖延迟              检索相关代码片段   构建提示词    实时流式返回\n  (debounceDelay)\n```\n\n### 防抖机制\n\n自动补全使用防抖机制来避免过于频繁的请求：\n\n- **最小延迟**：`0ms`（立即触发）\n- **最大延迟**：`2500ms`\n- **默认行为**：用户停止输入后等待指定时间再触发补全请求\n\n### 超时控制\n\n每个补全请求都有独立的超时控制：\n\n| 参数 | 值 | 说明 |\n|------|-----|------|\n| 最小超时 | 100ms | 最短等待时间 |\n| 最大超时 | 5000ms | 最长等待时间 |\n| 默认超时 | 未设置 | 由模型配置决定 |\n\n## 错误处理\n\n### 配置加载失败\n\n当配置加载失败时，界面会显示错误提示，并提供以下操作：\n\n| 操作 | 说明 |\n|------|------|\n| Help | 打开故障排除文档 |\n| Reload | 重新加载配置 |\n| View | 查看配置详情 |\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx:10-40]()\n\n### 模型能力不足\n\n系统会持续监测当前模型的补全能力，当模型不适合代码补全任务时：\n\n1. 在设置界面显示警告图标\n2. 在 CLI 界面显示 `ModelCapabilityWarning` 组件\n3. 仍允许用户使用，但建议更换模型\n\n## 配置示例\n\n### 基础配置（config.yaml）\n\n```yaml\nmodels:\n  - name: codellama\n    provider: openai\n    model: codellama-7b-instruct\n    role: autocomplete  # 指定为补全模型\n```\n\n### 完整配置示例\n\n```yaml\nmodels:\n  - name: codellama-13b\n    provider: llama\n    model: codellama-13b-instruct\n    role: autocomplete\n\n  - name: gpt-4\n    provider: openai\n    model: gpt-4\n    role: chat\n\n  - name: gpt-4\n    provider: openai\n    model: gpt-4\n    role: edit\n\nautocomplete:\n  useMultilineCompletions: auto\n  timeout: 3000\n  debounceDelay: 500\n  disableInFiles: \"**/*.txt,**/test/**\"\n```\n\n## 最佳实践\n\n### 选择合适的补全模型\n\n1. **优先选择专门的代码补全模型**，如：\n   - CodeLLama\n   - StarCoder\n   - Deepseek Coder\n   - Codestral\n\n2. **避免使用通用对话模型**进行代码补全\n\n3. **本地部署建议使用 FIM 模型**，以获得最佳的补全效果\n\n### 性能优化\n\n| 场景 | 建议配置 |\n|------|----------|\n| 低配置设备 | 增加 `debounceDelay` 至 1000-1500ms |\n| 高延迟网络 | 增加 `modelTimeout` 至 3000-5000ms |\n| 需要快速响应 | 减少 `debounceDelay` 至 200-500ms |\n\n### 文件排除策略\n\n使用 glob 模式排除不需要补全的文件：\n\n- 纯文本文件：`**/*.txt`\n- 文档文件：`**/*.md`\n- 测试文件：`**/test/**`\n- 生成文件：`**/*.generated.*`\n\n## 相关文档\n\n- [Tab Autocomplete 官方文档](https://docs.continue.dev/features/tab-autocomplete)\n- [模型配置指南](https://docs.continue.dev/reference/config)\n- [故障排除](https://docs.continue.dev/troubleshooting)\n\n---\n\n<a id='codebase-indexing'></a>\n\n## 代码库索引系统\n\n### 相关页面\n\n相关主题：[上下文提供者](#context-providers), [自动补全系统](#autocomplete-system)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/IndexingSettingsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/IndexingSettingsSection.tsx)\n- [gui/src/pages/config/features/indexing/IndexingProgress.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/features/indexing/IndexingProgress.tsx)\n- [gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx)\n- [gui/src/components/dialogs/AddDocsDialog.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/dialogs/AddDocsDialog.tsx)\n- [sync/src/README.md](https://github.com/continuedev/continue/blob/main/sync/src/README.md)\n</details>\n\n# 代码库索引系统\n\n## 概述\n\nContinue 的代码库索引系统（Codebase Indexing System）是用于构建和维护代码库知识索引的核心组件。该系统已被标记为**已弃用（deprecated）**，官方推荐使用[代码库文档感知功能](https://docs.continue.dev/guides/codebase-documentation-awareness)替代。\n\n索引系统的核心职责包括：\n\n- 对代码库中的文件进行扫描和解析\n- 构建代码片段的索引数据库\n- 支持语义搜索和代码补全\n- 管理索引的刷新和增量更新\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n## 系统架构\n\n### 主要组件\n\n索引系统由以下几个核心模块组成：\n\n| 组件 | 文件路径 | 功能描述 |\n|------|----------|----------|\n| CodebaseIndexer | `core/indexing/CodebaseIndexer.ts` | 主索引器，协调整个索引流程 |\n| CodeSnippetsIndex | `core/indexing/CodeSnippetsIndex.ts` | 代码片段索引管理 |\n| LanceDbIndex | `core/indexing/LanceDbIndex.ts` | 基于 LanceDB 的向量索引实现 |\n| ChunkCodebaseIndex | `core/indexing/chunk/ChunkCodebaseIndex.ts` | 分块处理的索引实现 |\n| refreshIndex | `core/indexing/refreshIndex.ts` | 索引刷新逻辑 |\n\n### 架构流程图\n\n```mermaid\ngraph TD\n    A[代码库文件] --> B[CodebaseIndexer]\n    B --> C{文件类型判断}\n    C -->|代码文件| D[ChunkCodebaseIndex]\n    C -->|文档文件| E[CodeSnippetsIndex]\n    D --> F[分块处理]\n    F --> G[LanceDbIndex]\n    E --> H[向量嵌入]\n    H --> G\n    G --> I[索引数据库]\n```\n\n## 用户界面组件\n\n### 索引设置页面\n\n`IndexingSettingsSection` 组件负责展示索引相关的配置选项。该组件从 Redux store 中读取配置状态，并提供启用/禁用索引的开关功能。\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n**核心配置项：**\n\n| 配置项 | 类型 | 默认值 | 说明 |\n|--------|------|--------|------|\n| disableIndexing | boolean | false | 是否禁用索引功能 |\n\n### 索引进度展示\n\n索引进度通过以下组件进行展示：\n\n- **IndexingProgress**：主进度条组件，显示当前索引任务的状态\n- **IndexingProgressTitleText**：进度标题文本\n- **IndexingProgressIndicator**：进度指示器\n- **IndexingProgressSubtext**：进度说明文本\n- **IndexingProgressErrorText**：错误信息展示\n\n资料来源：[gui/src/pages/config/features/indexing/IndexingProgress.tsx:1-40]()\n资料来源：[gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx:1-35]()\n\n**支持的状态类型：**\n\n```typescript\ntype IndexStatus = \"loading\" | \"waiting\" | \"success\" | \"failed\";\n```\n\n### 文档添加对话框\n\n`AddDocsDialog` 组件用于添加外部文档到索引系统。用户可以指定文档标题和起始 URL。\n\n资料来源：[gui/src/components/dialogs/AddDocsDialog.tsx:1-80]()\n\n**表单字段：**\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| Title | string | 是 | 文档标题，用于在 `@docs` 子菜单中显示 |\n| Start URL | string | 是 | 文档起始 URL |\n\n## 数据同步机制\n\n### Merkle 树同步\n\n索引缓存在本地文件系统中维护，使用 Merkle 树结构来跟踪已计算的哈希值：\n\n```mermaid\ngraph TD\n    A[索引缓存] --> B[全局缓存]\n    A --> C[标签特定缓存]\n    B --> D[~/.continue/index/.index_cache]\n    C --> E[~/.continue/index/tags/&lt;dir&gt;/&lt;branch&gt;/&lt;provider_id&gt;/.index_cache]\n    A --> F[反向标签映射]\n    F --> G[~/.continue/index/rev_tags]\n```\n\n资料来源：[sync/src/README.md:1-35]()\n\n**缓存文件结构：**\n\n- `~/.continue/index/.index_cache`：包含所有已计算哈希的全局缓存\n- `~/.continue/index/tags/<dir>/<branch>/<provider_id>/.index_cache`：标签特定的缓存\n- `~/.continue/index/rev_tags`：从哈希到标签的映射，文件以哈希前两位字符为前缀\n\n### sync 模块文件说明\n\n| 文件 | 功能 |\n|------|------|\n| `lib.rs` | Python 绑定的顶层调用函数 |\n| `sync/merkle.rs` | Merkle 树实现，用于构建和比较树结构 |\n| `sync/mod.rs` | 主同步逻辑，处理标签的磁盘数据库维护 |\n\n资料来源：[sync/src/README.md:35-50]()\n\n## 配置状态管理\n\n### Redux Store 结构\n\n索引状态通过 Redux 进行管理，配置存储在 `state.config.config` 中：\n\n```typescript\ninterface IndexingConfig {\n  disableIndexing?: boolean;\n  // ... 其他配置项\n}\n```\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n### 错误处理\n\n错误信息通过 `FatalErrorNotice` 组件展示，该组件：\n\n- 显示加载错误的具体描述\n- 提供帮助文档链接（https://docs.continue.dev/troubleshooting）\n- 支持重新加载配置\n- 支持跳转到配置页面\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-60]()\n\n## 当前限制\n\n根据 sync 模块的 README 文档，索引系统存在以下已知限制：\n\n1. **仅支持本地文件**：目前无法处理 Continue 服务器与 IDE 或工作空间不在同一台机器上的情况（Remote SSH、WSL 或团队 Continue 服务器）\n\n2. **全量重新计算**：目前不使用 stat 检查文件的最近更改，而是在每次 IDE 重新加载时重新计算整个 Merkle 树。这在 Continue 代码库上耗时约 0.2 秒，性能可接受但有优化空间\n\n资料来源：[sync/src/README.md:50-60]()\n\n## 替代方案\n\n索引功能已被弃用，官方推荐的替代方案是**使代理感知代码库和文档**。相关文档请访问：\n\n- [代码库文档感知指南](https://docs.continue.dev/guides/codebase-documentation-awareness)\n\n## 相关文件索引\n\n| 类别 | 文件路径 |\n|------|----------|\n| 配置组件 | `gui/src/pages/config/sections/IndexingSettingsSection.tsx` |\n| 进度展示 | `gui/src/pages/config/features/indexing/IndexingProgress.tsx` |\n| 错误展示 | `gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx` |\n| 文档添加 | `gui/src/components/dialogs/AddDocsDialog.tsx` |\n| 错误通知 | `gui/src/components/config/FatalErrorNotice.tsx` |\n| 同步模块 | `sync/src/README.md` |\n\n---\n\n<a id='context-providers'></a>\n\n## 上下文提供者\n\n### 相关页面\n\n相关主题：[代码库索引系统](#codebase-indexing), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/context/providers/index.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/index.ts)\n- [core/context/providers/CodeContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/CodeContextProvider.ts)\n- [core/context/providers/RepoMapContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/RepoMapContextProvider.ts)\n- [core/context/providers/SearchContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/SearchContextProvider.ts)\n- [core/context/mcp/MCPContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/mcp/MCPContextProvider.ts)\n</details>\n\n# 上下文提供者\n\n## 概述\n\n上下文提供者（Context Provider）是 Continue 智能编程助手中的核心组件，负责为 AI 模型提供各类代码上下文信息。这些提供者使 AI 能够理解当前编辑的代码文件、项目结构、搜索结果等关键信息，从而提供更准确和相关的代码补全、建议和问题解答。\n\n## 架构设计\n\n### 核心接口\n\nContinue 中的上下文提供者都遵循统一的设计模式，每个提供者需要实现以下核心方法：\n\n| 方法 | 描述 |\n|------|------|\n| `getContextItems` | 获取该提供者管理的上下文项列表 |\n| `load` | 加载或初始化提供者所需的数据 |\n| `resolve` | 解析特定的上下文项 |\n\n### 组件层次结构\n\n```mermaid\ngraph TD\n    A[上下文提供者系统] --> B[CodeContextProvider]\n    A --> C[RepoMapContextProvider]\n    A --> D[SearchContextProvider]\n    A --> E[MCPContextProvider]\n    \n    B --> F[获取当前代码上下文]\n    C --> G[获取代码库结构]\n    D --> H[获取搜索结果]\n    E --> I[获取MCP工具结果]\n```\n\n## 内置上下文提供者\n\n### CodeContextProvider\n\n**职责**：提供当前编辑文件的代码上下文信息。\n\n`CodeContextProvider` 负责追踪用户当前正在编辑的文件，并提取相关的代码上下文。这包括：\n\n- 当前光标位置的代码片段\n- 打开文件的语法树信息\n- 相关的函数和类定义\n\n### RepoMapContextProvider\n\n**职责**：提供整个代码仓库的结构信息。\n\n该提供者通过构建代码仓库的映射图，使 AI 能够：\n\n- 理解项目目录结构\n- 识别模块之间的依赖关系\n- 获取相关文件的位置信息\n\n### SearchContextProvider\n\n**职责**：提供代码搜索结果作为上下文。\n\n当用户在项目中进行代码搜索时，`SearchContextProvider` 会：\n\n- 捕获搜索查询和结果\n- 提供匹配项的代码片段\n- 支持正则表达式和普通文本搜索\n\n### MCPContextProvider\n\n**职责**：集成 MCP（Model Context Protocol）协议的上下文提供者。\n\nMCP 是一种标准化的上下文协议，允许扩展额外的上下文来源。该提供者：\n\n- 连接 MCP 服务器\n- 获取 MCP 工具返回的结果\n- 将外部工具输出转换为标准上下文格式\n\n## 工作流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant GUI as GUI组件\n    participant Provider as 上下文提供者\n    participant Core as 核心引擎\n    \n    User->>GUI: 编辑代码\n    GUI->>Provider: 请求上下文\n    Provider->>Provider: 加载/筛选数据\n    Provider-->>GUI: 返回ContextItems\n    GUI->>Core: 发送上下文\n    Core-->>User: AI响应\n```\n\n## 上下文项数据结构\n\n每个上下文提供者返回的上下文项（ContextItem）包含以下核心字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `id` | string | 唯一标识符 |\n| `name` | string | 上下文项名称 |\n| `description` | string | 简要描述 |\n| `content` | string | 实际内容 |\n| `uri` | URI | 资源定位符 |\n\n## UI 集成\n\n上下文提供者在 GUI 中通过 `ContextItemsPeek` 组件展示。该组件负责：\n\n- 渲染上下文项的图标和名称\n- 处理上下文项的点击事件\n- 显示文件类型的相关标识\n\n### 图标显示逻辑\n\n```typescript\n// 根据上下文项类型选择合适的图标\nconst shouldShowFileIcon =\n  contextItem.content.includes(\"```\") || \n  contextItem.uri?.type === \"file\";\n```\n\n## 配置与扩展\n\n### 注册新的上下文提供者\n\n开发者可以通过扩展 `core/context/providers/` 目录来添加自定义的上下文提供者：\n\n1. 创建新的提供者类\n2. 实现核心接口方法\n3. 在 `index.ts` 中注册该提供者\n\n### MCP 扩展\n\nMCP 上下文提供者支持通过 MCP 服务器进行扩展，允许：\n\n- 连接远程代码分析服务\n- 集成第三方代码库文档\n- 添加自定义的上下文来源\n\n## 最佳实践\n\n1. **按需加载**：上下文提供者应实现延迟加载，只在需要时才加载数据\n2. **缓存机制**：对于频繁访问的上下文数据，实施适当的缓存策略\n3. **错误处理**：提供优雅的错误处理和降级方案\n4. **性能优化**：避免返回过大的上下文内容，优先返回最相关的信息\n\n## 相关文件\n\n| 文件路径 | 功能 |\n|----------|------|\n| `core/context/providers/index.ts` | 提供者注册与导出 |\n| `core/context/providers/CodeContextProvider.ts` | 代码上下文实现 |\n| `core/context/providers/RepoMapContextProvider.ts` | 仓库映射实现 |\n| `core/context/providers/SearchContextProvider.ts` | 搜索上下文实现 |\n| `core/context/mcp/MCPContextProvider.ts` | MCP 协议集成 |\n\n## 总结\n\n上下文提供者是 Continue 实现智能编程辅助的基础设施。通过模块化的设计，系统能够灵活地集成各种代码上下文来源，同时保持良好的可扩展性和维护性。开发者可以根据需要添加自定义的上下文提供者，以满足特定的代码分析或辅助需求。\n\n---\n\n<a id='vscode-extension'></a>\n\n## VSCode扩展\n\n### 相关页面\n\n相关主题：[通信协议与消息传递](#communication-protocols)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [extensions/vscode/src/activation/activate.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/activation/activate.ts)\n- [extensions/vscode/src/ContinueGUIWebviewViewProvider.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/ContinueGUIWebviewViewProvider.ts)\n- [extensions/vscode/src/autocomplete/completionProvider.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/autocomplete/completionProvider.ts)\n- [extensions/vscode/src/diff/vertical/handler.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/diff/vertical/handler.ts)\n- [extensions/vscode/package.json](https://github.com/continuedev/continue/blob/main/extensions/vscode/package.json)\n</details>\n\n# VSCode扩展\n\n## 概述\n\nContinue 的 VSCode 扩展是该项目的核心前端组件，为开发者提供了一个集成化的 AI 辅助编程环境。该扩展通过 VSCode 的 Webview API 与核心后端逻辑通信，实现了代码补全、智能编辑、对话式交互等核心功能。\n\n## 架构设计\n\n### 整体架构\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                      VSCode 主机进程                          │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │              ContinueGUIWebviewViewProvider          │   │\n│  │                   (Webview 容器)                      │   │\n│  │  ┌───────────────────────────────────────────────┐   │   │\n│  │  │              React GUI 应用                    │   │   │\n│  │  │  ┌─────────┐  ┌──────────┐  ┌─────────────┐   │   │   │\n│  │  │  │ TipTap  │  │ Markdown │  │ StepContainer│   │   │   │\n│  │  │  │ Editor  │  │ Preview  │  │              │   │   │   │\n│  │  │  └─────────┘  └──────────┘  └─────────────┘   │   │   │\n│  │  └───────────────────────────────────────────────┘   │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                              │                               │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │           Autocomplete CompletionProvider           │   │\n│  │                 (内联代码补全)                         │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                              │                               │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │            Vertical Diff Handler                    │   │\n│  │                 (代码差异处理)                         │   │\n│  └─────────────────────────────────────────────────────┘   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### 核心组件职责\n\n| 组件名称 | 职责范围 | 主要功能 |\n|---------|---------|---------|\n| `activate.ts` | 扩展激活 | 初始化注册、事件监听设置 |\n| `ContinueGUIWebviewViewProvider` | Webview 管理 | 面板视图、消息通信 |\n| `completionProvider.ts` | 代码补全 | 内联补全、触发逻辑 |\n| `vertical/handler.ts` | 差异处理 | 代码修改应用/撤销 |\n\n## 激活机制\n\n### 扩展激活流程\n\n```mermaid\ngraph TD\n    A[VSCode 加载扩展] --> B[调用 activate 函数]\n    B --> C[注册 WebviewViewProvider]\n    C --> D[注册命令处理器]\n    D --> E[注册自动补全 Provider]\n    E --> F[注册差异视图 Provider]\n    F --> G[初始化完成,扩展就绪]\n```\n\n`activate.ts` 是扩展的入口点，负责协调所有子系统的初始化工作。扩展使用 `vscode.extensions.getExtension` 获取自身引用，并通过 `extendMarkdownIt` 注册自定义的 Markdown 处理扩展。\n\n扩展支持多种激活事件，包括：\n\n- `onLanguage:javascript` - JavaScript 文件打开时激活\n- `onLanguage:typescript` - TypeScript 文件打开时激活\n- `workspaceContains:**/*` - 工作区包含任意文件时激活\n\n## Webview 视图提供者\n\n### ContinueGUIWebviewViewProvider\n\n`ContinueGUIWebviewViewProvider` 负责管理 Continue 主面板的 Webview 实例。该组件继承自 VSCode 的 `WebviewViewProvider` 接口，提供以下核心能力：\n\n| 功能 | 描述 |\n|------|------|\n| HTML 注入 | 通过 `asWebviewUri` 转换资源路径 |\n| 消息通信 | 双向消息通道用于前端与扩展通信 |\n| 状态持久化 | 通过 `StatefulWebviewView` 保存视图状态 |\n| 命令注册 | 绑定快捷键到具体操作函数 |\n\n### 消息通信协议\n\nWebview 与扩展之间通过 `postMessage` 和 `onDidReceiveMessages` 进行通信。常见消息类型包括：\n\n```typescript\n// 客户端到扩展\ntype ClientMessage = \n  | { type: \"invokeCommand\"; command: string; args?: any[] }\n  | { type: \"showTutorial\"; }\n  | { type: \"focusEditor\"; }\n  | { type: \"closeSidebar\"; };\n\n// 扩展到客户端\ntype ServerMessage =\n  | { type: \"onOpenUrl\"; url: string }\n  | { type: \"updateAfterLoad\"; state: any }\n  | { type: \"onNewSession\"; };\n```\n\n资料来源：[extensions/vscode/src/ContinueGUIWebviewViewProvider.ts]()\n\n## 代码自动补全\n\n### CompletionProvider 实现\n\n`completionProvider.ts` 实现了 VSCode 的 `InlineCompletionItemProvider` 接口，为编辑器提供 AI 驱动的内联代码补全功能。\n\n```mermaid\ngraph LR\n    A[用户输入] --> B{触发条件检查}\n    B -->|延迟检测| C[等待无操作时间]\n    C --> D[获取文档上下文]\n    D --> E[调用补全 API]\n    E --> F[返回 InlineCompletionList]\n    F --> G[VSCode 渲染补全项]\n```\n\n### 补全配置参数\n\n| 参数名 | 类型 | 默认值 | 说明 |\n|--------|------|--------|------|\n| `delayInMs` | `number` | 150 | 触发补全前的等待时间 |\n| `maxPrefixLines` | `number` | 20 | 用于上下文的代码前缀行数 |\n| `maxSuffixLines` | `number` | 20 | 用于上下文的代码后缀行数 |\n| `multiline` | `boolean` | `true` | 是否启用多行补全 |\n\n资料来源：[extensions/vscode/src/autocomplete/completionProvider.ts]()\n\n## 差异视图处理\n\n### Vertical Diff Handler\n\n`vertical/handler.ts` 负责管理和展示代码修改的差异视图。当 AI 生成代码修改建议时，该处理器创建可交互的差异视图，支持用户接受或拒绝变更。\n\n```mermaid\ngraph TD\n    A[AI 生成代码修改] --> B[创建 Diff View]\n    B --> C{用户操作}\n    C -->|Accept| D[应用修改到文档]\n    C -->|Reject| E[撤销差异视图]\n    C -->|Partial| F[应用部分修改]\n    D --> G[清理 Diff 状态]\n    E --> G\n    F --> G\n```\n\n### 差异操作类型\n\n| 操作 | 快捷键 | 行为描述 |\n|------|--------|----------|\n| Accept Diff | `Cmd+Shift+Enter` | 接受所有待处理修改 |\n| Reject Diff | `Cmd+Shift+Backspace` | 拒绝所有待处理修改 |\n| Accept Top | `Alt+Cmd+Y` | 仅接受最顶层修改 |\n| Reject Top | `Alt+Cmd+N` | 仅拒绝最顶层修改 |\n\n资料来源：[extensions/vscode/src/diff/vertical/handler.ts]()\n\n## 快捷键绑定\n\n### 核心快捷键配置\n\n在 `HelpSection.tsx` 中定义了完整的快捷键映射表，这些快捷键通过 VSCode 的 `keybindings.json` 或扩展包配置进行注册。\n\n| 快捷键 | 功能 |\n|--------|------|\n| `Cmd '` | 切换选中的模型 |\n| `Cmd I` | 编辑高亮代码 |\n| `Cmd L` | 新建对话 / 新建对话并附带选中代码 |\n| `Cmd Backspace` | 取消响应 |\n| `Cmd Shift I` | 切换内联编辑焦点 |\n| `Cmd Shift L` | 聚焦当前对话 |\n| `Cmd Shift R` | 调试终端 |\n| `Cmd Shift Enter` | 接受差异 |\n| `Cmd Shift Backspace` | 拒绝差异 |\n\n资料来源：[gui/src/pages/config/sections/HelpSection.tsx]()\n\n## Markdown 渲染增强\n\n### patchNestedMarkdown 机制\n\n扩展对 Markdown 渲染进行了增强处理，特别是针对代码块嵌套场景。当 AI 输出包含代码块的 Markdown 时，`patchNestedMarkdown` 函数会将外层分隔符转换为波浪号 (`~~~`)，以避免解析冲突。\n\n```typescript\n// 转换示例\n// 输入:\n```markdown\n# 示例\n```javascript\nconsole.log(\"test\")\n```\n```\n\n// 输出:\n~~~markdown\n# 示例\n```javascript\nconsole.log(\"test\")\n```\n~~~\n```\n\n资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts]()\n\n### Mermaid 图表支持\n\n内置的 `MermaidBlock` 组件支持在 Markdown 中直接渲染 Mermaid 图表，并提供缩放控制功能：\n\n```mermaid\ngraph TD\n    A[解析 Mermaid 代码] --> B{语法正确?}\n    B -->|是| C[渲染 SVG]\n    B -->|否| D[显示错误信息]\n```\n\n组件支持的操作：\n\n- 放大 (Zoom In)\n- 缩小 (Zoom Out)\n- 重置缩放 (Reset Zoom)\n\n资料来源：[gui/src/components/StyledMarkdownPreview/MermaidBlock.tsx]()\n\n## 配置管理\n\n### 模型角色配置\n\n扩展支持为不同任务场景配置专门的 AI 模型：\n\n| 角色 | 用途 |\n|------|------|\n| `chat` | 对话交互 |\n| `autocomplete` | 内联代码补全 |\n| `edit` | 代码转换和编辑 |\n\n配置通过 VSCode 的设置界面进行管理，模型列表存储在用户工作区的 `.continue` 配置文件或全局设置中。\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx]()\n\n## 技术栈\n\n### 依赖技术\n\n| 技术 | 版本要求 | 用途 |\n|------|----------|------|\n| VSCode API | 1.75+ | 扩展框架 |\n| React | 18+ | UI 组件 |\n| TipTap | 2.x | 富文本编辑器 |\n| Mermaid | 最新版 | 图表渲染 |\n| Tailwind CSS | 3.x | 样式系统 |\n\n### 包结构\n\n```json\n{\n  \"name\": \"continue\",\n  \"main\": \"./out/extension.js\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\",\n    \"@tiptap/react\": \"^2.0.0\",\n    \"mermaid\": \"^10.0.0\"\n  },\n  \"activationEvents\": [\n    \"onLanguage:javascript\",\n    \"onLanguage:typescript\",\n    \"onLanguage:python\"\n  ]\n}\n```\n\n资料来源：[extensions/vscode/package.json]()\n\n## 扩展状态管理\n\n### 会话状态持久化\n\n扩展通过 `StatefulWebviewView` 接口维护会话状态，包括：\n\n- 当前对话历史\n- 上下文项缓存\n- UI 偏好设置\n- 模型配置\n\n```mermaid\ngraph TD\n    A[用户操作] --> B[更新本地状态]\n    B --> C[序列化到 VSCode 存储]\n    C --> D[持久化到工作区]\n    D --> E[下次激活时恢复]\n```\n\n## 开发与调试\n\n### 本地开发配置\n\n在开发环境下，扩展提供以下调试功能：\n\n1. **主题测试页面** - 用于测试不同 VSCode 主题下的 UI 表现\n2. **会话数据查看** - 直接查看当前对话的原始 JSON 数据\n3. **令牌使用统计** - 展示各模型的每日用量\n\n开发模式下通过 `process.env.NODE_ENV === \"development\"` 条件渲染调试入口。\n\n资料来源：[gui/src/pages/config/sections/HelpSection.tsx]()\n\n## 总结\n\nContinue 的 VSCode 扩展采用模块化架构设计，通过 Webview 容器承载 React 应用，同时利用原生 VSCode API 提供深度的编辑器集成。扩展的核心优势包括：\n\n- **无缝集成** - 与 VSCode 深度整合，支持所有主流编程语言\n- **灵活配置** - 支持为不同任务配置专用模型\n- **实时交互** - 内联补全和差异视图提供流畅的编辑体验\n- **持久化状态** - 会话数据和配置自动保存跨会话可用\n\n该扩展是 Continue 项目面向终端用户的主要入口，与 CLI 工具和其他 IDE 扩展共同构成了完整的 AI 辅助编程解决方案。\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：continuedev/continue\n\n摘要：发现 21 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag。\n\n## 1. 安装坑 · 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_823b2e0ae1ad49a78bd0a45d39a3099a | https://github.com/continuedev/continue/issues/12378 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 2. 安装坑 · 来源证据：The extension doesn't show up at all.\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：The extension doesn't show up at all.\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5d86070fe9d941ad9a44f1d09464b582 | https://github.com/continuedev/continue/issues/1312 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 3. 配置坑 · 来源证据：v1.0.67-jetbrains\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.0.67-jetbrains\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4ce3fb2dde3d48978402a51bb56fbc99 | https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains | 来源类型 github_release 暴露的待验证使用条件。\n\n## 4. 配置坑 · 来源证据：v1.2.22-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.2.22-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_51004115b2b842e0afcd08792bdf1f61 | https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 5. 配置坑 · 来源证据：v1.3.38-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.38-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5f19fd622e784966a0747963ae1dc6ce | https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:644686905 | https://github.com/continuedev/continue | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | last_activity_observed missing\n\n## 8. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 9. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:644686905 | https://github.com/continuedev/continue | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：Config error with ollama cloud\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Config error with ollama cloud\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_105f1472ec6649f28a69bd8bbd997575 | https://github.com/continuedev/continue/issues/12370 | 来源讨论提到 macos 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：Docs: Document .continue/configs directory support\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document .continue/configs directory support\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4891275e3958456796a83007de577da8 | https://github.com/continuedev/continue/issues/12377 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 13. 安全/权限坑 · 来源证据：Docs: Document dynamic model fetching feature\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document dynamic model fetching feature\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9bd2485a0ee04d4c932eaca2524598ed | https://github.com/continuedev/continue/issues/12376 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：Docs: Update Inception provider documentation for Mercury-2 model\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Update Inception provider documentation for Mercury-2 model\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_3d76e53c03d84ecdb9ecbe9d86059a37 | https://github.com/continuedev/continue/issues/12375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 15. 安全/权限坑 · 来源证据：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e2338a7a76914ae09ac534a5c23a951b | https://github.com/continuedev/continue/issues/12382 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：v1.2.19-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.19-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_f230968c0b6d4e6f9cfe6883444e094c | https://github.com/continuedev/continue/releases/tag/v1.2.19-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 17. 安全/权限坑 · 来源证据：v1.2.20-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.20-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_02ca773cf6c94b679e0167c5b5ab8155 | https://github.com/continuedev/continue/releases/tag/v1.2.20-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 18. 安全/权限坑 · 来源证据：v1.3.35-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.35-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_96fe1be3173b4eec9a748b4f053c2535 | https://github.com/continuedev/continue/releases/tag/v1.3.35-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：v1.3.36-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.36-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6b160d55daba40a3b8c23940097ff59f | https://github.com/continuedev/continue/releases/tag/v1.3.36-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 20. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | issue_or_pr_quality=unknown\n\n## 21. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | release_recency=unknown\n\n<!-- canonical_name: continuedev/continue; human_manual_source: deepwiki_human_wiki -->\n",
      "markdown_key": "continue",
      "pages": "draft",
      "source_refs": [
        {
          "evidence_id": "github_repo:644686905",
          "kind": "repo",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/continuedev/continue"
        },
        {
          "evidence_id": "art_07409a2fd74147eaa230bb9282ed0ed9",
          "kind": "docs",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/continuedev/continue#readme"
        }
      ],
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "continue 说明书",
      "toc": [
        "https://github.com/continuedev/continue 项目说明书",
        "目录",
        "Continue项目简介",
        "项目概述",
        "系统架构",
        "核心功能详解",
        "数据统计系统",
        "资源监控",
        "Doramagic 踩坑日志"
      ]
    }
  },
  "quality_gate": {
    "blocking_gaps": [],
    "category_confidence": "medium",
    "compile_status": "ready_for_review",
    "five_assets_present": true,
    "install_sandbox_verified": true,
    "missing_evidence": [],
    "next_action": "publish to Doramagic.ai project surfaces",
    "prompt_preview_boundary_ok": true,
    "publish_status": "publishable",
    "quick_start_verified": true,
    "repo_clone_verified": true,
    "repo_commit": "cb273098d968906d25ee737b454f0b5f13ea2482",
    "repo_inspection_error": null,
    "repo_inspection_files": [
      "package.json",
      "README.md",
      "docs/package-lock.json",
      "docs/troubleshooting.mdx",
      "docs/reo-tracking.js",
      "docs/faqs.mdx",
      "docs/CONTRIBUTING.mdx",
      "docs/c15t-cookie-banner.js",
      "docs/index.mdx",
      "docs/home.mdx",
      "docs/package.json",
      "docs/README.md",
      "docs/reference.mdx",
      "docs/docs.json",
      "docs/overview.mdx",
      "docs/cli/configuration.mdx",
      "docs/cli/tool-permissions.mdx",
      "docs/cli/headless-mode.mdx",
      "docs/cli/tui-mode.mdx",
      "docs/cli/quickstart.mdx",
      "docs/mission-control/beyond-checks.mdx",
      "docs/mission-control/index.mdx",
      "docs/mission-control/tasks.mdx",
      "docs/mission-control/sharing.mdx",
      "docs/mission-control/metrics.mdx",
      "docs/mission-control/workflows.mdx",
      "docs/reference/continue-mcp.mdx",
      "docs/reference/deprecated-context-providers.mdx",
      "docs/reference/yaml-migration.mdx",
      "docs/reference/deprecated-codebase.mdx",
      "docs/reference/deprecated-docs.mdx",
      "docs/reference/json-reference.mdx",
      "docs/autocomplete/how-to-use-it.mdx",
      "docs/guides/atlassian-mcp-continue-cookbook.mdx",
      "docs/guides/klavis-mcp-continue-cookbook.mdx",
      "docs/guides/github-pr-review-bot.mdx",
      "docs/guides/github-mcp-continue-cookbook.mdx",
      "docs/guides/running-continue-without-internet.mdx",
      "docs/guides/understanding-configs.mdx",
      "docs/guides/plan-mode-guide.mdx"
    ],
    "repo_inspection_verified": true,
    "review_reasons": [],
    "tag_count_ok": true,
    "unsupported_claims": []
  },
  "schema_version": "0.1",
  "user_assets": {
    "ai_context_pack": {
      "asset_id": "ai_context_pack",
      "filename": "AI_CONTEXT_PACK.md",
      "markdown": "# continue - Doramagic AI Context Pack\n\n> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。\n\n## 充分原则\n\n- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。\n- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。\n\n## 给宿主 AI 的使用方式\n\n你正在读取 Doramagic 为 continue 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。\n\n## Claim 消费规则\n\n- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。\n- **事实最低状态**：`supported`\n- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。\n- `weak`：只能作为低置信度线索，必须要求用户继续核实。\n- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。\n- `unverified`：不得作为事实使用，应明确说证据不足。\n- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。\n\n## 它最适合谁\n\n- **希望把专业流程带进宿主 AI 的用户**：仓库包含 Skill 文档。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md` Claim：`clm_0003` supported 0.86\n\n## 它能做什么\n\n- **AI Skill / Agent 指令资产库**（可做安装前预览）：项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md` Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md` Claim：`clm_0002` supported 0.86\n\n## 怎么开始\n\n- `curl -fsSL https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.sh | bash` 证据：`README.md` Claim：`clm_0004` supported 0.86\n- `npm i -g @continuedev/cli` 证据：`README.md` Claim：`clm_0005` supported 0.86\n- `pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git` 证据：`packages/continue-sdk/python/api/README.md` Claim：`clm_0006` supported 0.86\n- `npm install @continuedev/hub-api@0.0.1 --save` 证据：`packages/continue-sdk/typescript/api/README.md` Claim：`clm_0007` supported 0.86\n- `npm install PATH_TO_GENERATED_PACKAGE --save` 证据：`packages/continue-sdk/typescript/api/README.md` Claim：`clm_0008` supported 0.86\n- `npm install @continuedev/sdk` 证据：`packages/continue-sdk/typescript/README.md` Claim：`clm_0009` supported 0.86\n\n## 继续前判断卡\n\n- **当前建议**：需要管理员/安全审批\n- **为什么**：继续前可能涉及密钥、账号、外部服务或敏感上下文，建议先经过管理员或安全审批。\n\n### 30 秒判断\n\n- **现在怎么做**：需要管理员/安全审批\n- **最小安全下一步**：先跑 Prompt Preview；若涉及凭证或企业环境，先审批再试装\n- **先别相信**：真实输出质量不能在安装前相信。\n- **继续会触碰**：命令执行、宿主 AI 配置、本地环境或项目文件\n\n### 现在可以相信\n\n- **适合人群线索：希望把专业流程带进宿主 AI 的用户**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md` Claim：`clm_0003` supported 0.86\n- **能力存在：AI Skill / Agent 指令资产库**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md` Claim：`clm_0001` supported 0.86\n- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md` Claim：`clm_0002` supported 0.86\n- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`README.md` Claim：`clm_0004` supported 0.86\n\n### 现在还不能相信\n\n- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。\n- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。\n- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md`\n- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。\n- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。\n- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。\n- **安装命令是否需要网络、权限或全局写入？**（unverified）：这影响企业环境和个人环境的安装风险。 证据：`README.md`\n\n### 继续会触碰什么\n\n- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md`\n- **宿主 AI 配置**：Claude/Codex/Cursor/Gemini/OpenCode 等宿主的 plugin、Skill 或规则加载配置。 原因：宿主配置会改变 AI 后续工作方式，可能和用户已有规则冲突。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md`\n- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md`\n- **环境变量 / API Key**：项目入口文档明确出现 API key、token、secret 或账号凭证配置。 原因：如果真实安装需要凭证，应先使用测试凭证并经过权限/合规判断。 证据：`packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/python/api/docs/DefaultApi.md`\n- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。\n\n### 最小安全下一步\n\n- **先跑 Prompt Preview**：用安装前交互式试用判断工作方式是否匹配，不需要授权或改环境。（适用：任何项目都适用，尤其是输出质量未知时。）\n- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）\n- **先备份宿主 AI 配置**：Skill、plugin、规则文件可能改变 Claude/Cursor/Codex 的默认行为。（适用：存在插件 manifest、Skill 或宿主规则入口时。）\n- **不要使用真实生产凭证**：环境变量/API key 一旦进入宿主或工具链，可能产生账号和合规风险。（适用：出现 API、TOKEN、KEY、SECRET 等环境线索时。）\n- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）\n\n### 退出方式\n\n- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。\n- **准备移除宿主 plugin / Skill / 规则入口**：如果试装后行为异常，可以把宿主 AI 恢复到试装前状态。\n- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。\n- **准备撤销测试 API key 或 token**：测试凭证泄露或误用时，可以快速止损。\n- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。\n\n## 哪些只能预览\n\n- 解释项目适合谁和能做什么\n- 基于项目文档演示典型对话流程\n- 帮助用户判断是否值得安装或继续研究\n\n## 哪些必须安装后验证\n\n- 真实安装 Skill、插件或 CLI\n- 执行脚本、修改本地文件或访问外部服务\n- 验证真实输出质量、性能和兼容性\n\n## 边界与风险判断卡\n\n- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0010` inferred 0.45\n- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md` Claim：`clm_0011` supported 0.86\n- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。\n- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。\n- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。\n\n## 开工前工作上下文\n\n### 加载顺序\n\n- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。\n- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。\n- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。\n- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。\n- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。\n\n### 任务路由\n\n- **AI Skill / Agent 指令资产库**：先基于 role_skill_index / evidence_index 帮用户挑选可用角色、Skill 或工作流。 边界：可做安装前 Prompt 体验。 证据：`.claude/skills/docs-style/SKILL.md`, `skills/cn-check/SKILL.md` Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`README.md`, `packages/continue-sdk/python/api/README.md`, `packages/continue-sdk/typescript/README.md`, `packages/continue-sdk/typescript/api/README.md` Claim：`clm_0002` supported 0.86\n\n### 上下文规模\n\n- 文件总数：2801\n- 重要文件覆盖：40/2801\n- 证据索引条目：80\n- 角色 / Skill 条目：2\n\n### 证据不足时的处理\n\n- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。\n- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。\n- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。\n- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。\n\n## Prompt Recipes\n\n### 适配判断\n\n- 目标：判断这个项目是否适合用户当前任务。\n- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。\n\n```text\n请基于 continue 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。\n```\n\n### 安装前体验\n\n- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。\n- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。\n\n```text\n请把 continue 当作安装前体验资产，而不是已安装工具或真实运行环境。\n\n请严格输出四段：\n1. 先问我 3 个必要问题。\n2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。\n3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。\n4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。\n\n硬性边界：\n- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。\n- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。\n- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。\n- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。\n- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。\n- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。\n\n```\n\n### 角色 / Skill 选择\n\n- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。\n- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。\n\n```text\n请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。\n```\n\n### 风险预检\n\n- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。\n- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。\n\n```text\n请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。\n```\n\n### 宿主 AI 开工指令\n\n- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。\n- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。\n\n```text\n请基于 continue 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。\n```\n\n\n## 角色 / Skill 索引\n\n- 共索引 2 个角色 / Skill / 项目文档条目。\n\n- **docs-style**（skill）：Style guidelines for writing and updating documentation. Use when writing new docs, updating existing docs, or reviewing docs for quality. 激活提示：当用户任务与“docs-style”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/docs-style/SKILL.md`\n- **cn-check**（skill）：Install and run the Continue CLI cn to execute AI agent checks on local code changes. Use when asked to \"run checks\", \"lint with AI\", \"review my changes with cn\", or set up Continue CI locally. 激活提示：当用户任务与“cn-check”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`skills/cn-check/SKILL.md`\n\n## 证据索引\n\n- 共索引 80 条证据。\n\n- **Mintlify Starter Kit**（documentation）：Click on Use this template to copy the Mintlify starter kit. The starter kit contains examples including 证据：`docs/README.md`\n- **Getting started**（documentation）：Source-controlled AI checks, enforceable in CI 证据：`README.md`\n- **Continue PR Review Actions**（documentation）：GitHub Actions that provide automated code reviews for pull requests using Continue CLI. 证据：`actions/README.md`\n- **Continue Core Binary**（documentation）：The purpose of this folder is to package Typescript code in a way that can be run from any IDE or platform. We first bundle with esbuild and then package into binaries with pkg . 证据：`binary/README.md`\n- **Continue React App**（documentation）：The Continue React app is a notebook-like interface to the Continue server. It allows the user to submit arbitrary text input, then communicates with the server to takes steps, which are displayed as a sequence of editable cells. The React app should sit beside an IDE, as in the VS Code extension. 证据：`gui/README.md`\n- **Readme**（documentation）：The sole purpose of this folder is to open it when debugging the extension. It is not used by the extension itself. You can add more files that can be useful when manually testing the extension. 证据：`manual-testing-sandbox/readme.md`\n- **Indexing**（documentation）：Continue uses a tagging system along with content addressing to ensure that nothing needs to be indexed twice. When you change branches, Continue will only re-index the files that are newly modified and that we don't already have a copy of. This system can be used across many different \"artifacts\" just by implementing the CodebaseIndex class. 证据：`core/indexing/README.md`\n- **Next Edit Prediction**（documentation）：How is it different from autocomplete? 证据：`core/nextEdit/README.md`\n- **Vendored node modules**（documentation）：- transformers.js: to avoid the sharp dependency, which isn't used and has native dependencies 证据：`core/vendor/README.md`\n- **Quick tour**（documentation）：State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 证据：`core/vendor/modules/@xenova/transformers/README.md`\n- **AGENTS.md**（documentation）：This file provides guidance to AI coding agents when working with code in this repository. 证据：`extensions/cli/AGENTS.md`\n- **Continue CLI**（documentation）：The Continue CLI cn is a customizable command line coding agent. 证据：`extensions/cli/README.md`\n- **Tool Permissions System**（documentation）：The tool permissions system allows you to control which tools the AI can use and how it can use them. There are three permission levels: 证据：`extensions/cli/src/permissions/README.md`\n- **TUI Testing Framework**（documentation）：This directory contains a comprehensive testing framework for the Continue CLI's Terminal User Interface TUI that supports running tests in both normal local and remote modes. 证据：`extensions/cli/src/ui/__tests__/README.md`\n- **JetBrains Agent**（documentation）：Source-controlled AI checks, enforceable in CI https://docs.continue.dev 证据：`extensions/intellij/README.md`\n- **VS Code Agent**（documentation）：Source-controlled AI checks, enforceable in CI https://docs.continue.dev 证据：`extensions/vscode/README.md`\n- **E2E Tests**（documentation）：When running e2e tests for the first time 证据：`extensions/vscode/e2e/README.md`\n- **Readme**（documentation）：all-MiniLM-L6-v2 is the sentence transformers model used with transformers.js to locally generate codebase embeddings. 证据：`extensions/vscode/models/README.md`\n- **Usage Transformers.js**（documentation）：https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2 with ONNX weights to be compatible with Transformers.js. 证据：`extensions/vscode/models/all-MiniLM-L6-v2/README.md`\n- **config.yaml specification**（documentation）：This specification is a work in progress and subject to change. 证据：`packages/config-yaml/src/README.md`\n- **@continuedev/sdk**（documentation）：⚠️ EXPERIMENTAL: This package is in early development and subject to frequent breaking changes without notice. 证据：`packages/continue-sdk/README.md`\n- **@continuedev/sdk**（documentation）：⚠️ EXPERIMENTAL: This package is in early development and subject to frequent breaking changes without notice. 证据：`packages/continue-sdk/python/README.md`\n- **openapi-client**（documentation）：API for Continue IDE to fetch assistants and other related information. These endpoints are primarily used by the Continue IDE extensions for VS Code and JetBrains. 证据：`packages/continue-sdk/python/api/README.md`\n- **@continuedev/sdk**（documentation）：⚠️ EXPERIMENTAL: This package is in early development and subject to frequent breaking changes without notice. 证据：`packages/continue-sdk/typescript/README.md`\n- **@continuedev/hub-api@0.0.1**（documentation）：This generator creates TypeScript/JavaScript client that utilizes Fetch API https://fetch.spec.whatwg.org/ . The generated Node module can be used in the following environments: 证据：`packages/continue-sdk/typescript/api/README.md`\n- **@continuedev/llm-info**（documentation）：A lightweight package providing information about various Large Language Models LLMs , including embedding, reranking, and other models. 证据：`packages/llm-info/README.md`\n- **OpenAI Adapters**（documentation）：OpenAI adapters convert an OpenAI-compatible request to a request for another API and back. 证据：`packages/openai-adapters/README.md`\n- **Codebase Indexing**（documentation）：This is a small Rust library for efficiently keeping a codebase index up to date. 证据：`sync/src/README.md`\n- **Package**（package_manifest）：{ \"name\": \"binary\", \"version\": \"1.0.0\", \"author\": \"Continue Dev, Inc\", \"description\": \"\", \"main\": \"out/index.js\", \"bin\": \"out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../core/node modules/sqlite3/ / \", \"node modules/@lancedb/ / \", \"out/tree-sitter.wasm\", \"out/tree-sitter-wasms/ \" , \"targets\": \"node18-darwin-arm64\" , \"outputPath\": \"bin\" }, \"scripts\": { \"test\": \"jest\", \"build\": \"node build.js\", \"rebuild\": \"node build.js --esbuild-only\", \"build:darwin-x64\": \"node build.js --os darwin-x64\" }, \"license\": \"Apache-2.0\", \"devDependencies\": { \"@biomejs/biome\": \"1.6.4\", \"@types/follow-redirects\": \"^1.14.4\", \"@types/jest\": \"^29.5.12\", \"@types/uuid\": \"^9.0.8\", \"@vercel/ncc\":… 证据：`binary/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/core\", \"version\": \"1.1.0\", \"description\": \"The Continue Core contains functionality that can be shared across web, VS Code, or Node.js\", \"scripts\": { \"test\": \"cross-env NODE OPTIONS=--experimental-vm-modules jest\", \"vitest\": \"vitest run\", \"test:coverage\": \"cross-env NODE OPTIONS=--experimental-vm-modules jest --coverage && open ./coverage/lcov-report/index.html\", \"tsc:check\": \"tsc -p ./ --noEmit\", \"build\": \"tsc -p ./tsconfig.npm.json\", \"build:npm\": \"npm run build && npm run sentry:sourcemaps\", \"lint\": \"eslint . --ext ts\", \"lint:fix\": \"eslint . --ext ts --fix\", \"sentry:sourcemaps\": \"sentry-cli sourcemaps inject --org continue-xd --project continue ./dist && sentry-cli… 证据：`core/package.json`\n- **Package**（package_manifest）：{ \"name\": \"docs2\", \"version\": \"1.0.0\", \"description\": \"Click on Use this template to copy the Mintlify starter kit. The starter kit contains examples including\", \"main\": \"index.js\", \"scripts\": { \"dev\": \"mintlify dev\", \"build\": \"mintlify build\", \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"keywords\": , \"author\": \"\", \"license\": \"ISC\", \"type\": \"commonjs\", \"devDependencies\": { \"mintlify\": \"^4.2.454\" }, \"dependencies\": { \"@c15t/react\": \"^1.8.5\", \"axios\": \"^1.13.6\", \"tar-fs\": \"^3.1.2\" }, \"overrides\": { \"express\": \"^4.21.2\", \"qs\": \"^6.14.2\", \"tar\": \"^7.5.13\", \"js-yaml\": \"^4.1.1\", \"lodash\": \"^4.17.23\", \"zod\": \"^3.24.0\", \"axios\": \"^1.13.6\", \"@orpc/openapi\": \"^1.13.11\", \"kysely\": \"^0.28.… 证据：`docs/package.json`\n- **Package**（package_manifest）：{ \"name\": \"gui\", \"private\": true, \"type\": \"module\", \"author\": \"Continue Dev, Inc\", \"license\": \"Apache-2.0\", \"scripts\": { \"dev\": \"vite\", \"tsc:check\": \"tsc -p ./ --noEmit\", \"build\": \"tsc && vite build\", \"preview\": \"vite preview\", \"test\": \"vitest run\", \"test:coverage\": \"vitest run --coverage\", \"test:ui\": \"vitest --ui\", \"test:watch\": \"vitest\", \"lint\": \"eslint --ext ts\" }, \"dependencies\": { \"@continuedev/config-yaml\": \"file:../packages/config-yaml\", \"@continuedev/terminal-security\": \"file:../packages/terminal-security\", \"@headlessui/react\": \"^2.2.0\", \"@heroicons/react\": \"^2.0.18\", \"@modelcontextprotocol/ext-apps\": \"^1.0.1\", \"@panzoom/panzoom\": \"^4.6.0\", \"@reduxjs/toolkit\": \"^2.11.2\", \"@sentry/re… 证据：`gui/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue\", \"scripts\": { \"tsc:watch\": \"concurrently -n gui,vscode,core,binary -c cyan,magenta,yellow,green \\\"npm run tsc:watch:gui\\\" \\\"npm run tsc:watch:vscode\\\" \\\"npm run tsc:watch:core\\\" \\\"npm run tsc:watch:binary\\\"\", \"tsc:watch:gui\": \"tsc --project gui/tsconfig.json --watch --noEmit --pretty\", \"tsc:watch:vscode\": \"tsc --project extensions/vscode/tsconfig.json --watch --noEmit --pretty\", \"tsc:watch:core\": \"tsc --project core/tsconfig.json --watch --noEmit --pretty\", \"tsc:watch:binary\": \"tsc --project binary/tsconfig.json --watch --noEmit --pretty\", \"format\": \"prettier --write \\\" / .{js,jsx,ts,tsx,json,css,md}\\\" --ignore-path .gitignore --ignore-path .prettierignore\", \"format:che… 证据：`package.json`\n- **Contributing to Continue**（documentation）：- Contributing to Continue contributing-to-continue - Table of Contents table-of-contents - ❤️ Ways to Contribute ️-ways-to-contribute - 👋 Continue Contribution Ideas -continue-contribution-ideas - 🐛 Report Bugs -report-bugs - ✨ Suggest Enhancements -suggest-enhancements - 📖 Updating / Improving Documentation -updating--improving-documentation - Running the Documentation Server Locally running-the-documentation-server-locally - Method 1: NPM Script method-1-npm-script - Method 2: VS Code Task method-2-vs-code-task - 🧑‍💻 Contributing Code -contributing-code - Environment Setup environment-setup - Pre-requisites pre-requisites - Fork the Continue Repository fork-the-continue-repository - VS C… 证据：`CONTRIBUTING.md`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-macos-arm64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/darwin-arm64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-macos-x64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/darwin-x64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-linux-arm64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/linux-arm64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-linux-x64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/linux-x64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../node modules/win-ca/lib/crypt32-ia32.node\", \"../../node modules/win-ca/lib/crypt32-x64.node\", \"../../node modules/win-ca/lib/roots.exe\", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-win-arm64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/win32-arm64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue-binary\", \"version\": \"1.0.0\", \"description\": \"\", \"bin\": \"../../out/index.js\", \"pkg\": { \"scripts\": \"node modules/axios/ / \" , \"assets\": \"../../../core/node modules/sqlite3/ / \", \"../../out/tree-sitter.wasm\", \"../../out/tree-sitter-wasms/ \", \"../../tree-sitter/ / \", \"../../node modules/win-ca/lib/crypt32-ia32.node\", \"../../node modules/win-ca/lib/crypt32-x64.node\", \"../../node modules/win-ca/lib/roots.exe\", \"../../out/llamaTokenizer.mjs\", \"../../out/llamaTokenizerWorkerPool.mjs\", \"../../out/tiktokenWorkerPool.mjs\", \"../../out/package.json\" , \"targets\": \"node18-win-x64\" , \"outputPath\": \"bin\" }, \"author\": \"\", \"license\": \"Apache-2.0\" } 证据：`binary/pkgJson/win32-x64/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@xenova/transformers\", \"version\": \"2.14.0\", \"description\": \"State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server!\", \"main\": \"./src/transformers.js\", \"types\": \"./types/transformers.d.ts\", \"type\": \"module\", \"scripts\": { \"typegen\": \"tsc ./src/transformers.js --allowJs --declaration --emitDeclarationOnly --declarationMap --outDir types\", \"dev\": \"webpack serve --no-client-overlay\", \"build\": \"webpack && npm run typegen\", \"generate-tests\": \"python -m tests.generate tests\", \"test\": \"node --experimental-vm-modules node modules/jest/bin/jest.js --verbose --maxConcurrency 1\", \"readme\": \"python ./docs/scripts/build readme.py\",… 证据：`core/vendor/modules/@xenova/transformers/package.json`\n- **Package**（package_manifest）：{ \"name\": \"vendor\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"index.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"Apache-2.0\", \"dependencies\": { \"@xenova/transformers\": \"^2.14.0\" }, \"engine-strict\": true, \"engines\": { \"node\": \" =20.20.1\" } } 证据：`core/vendor/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/cli\", \"version\": \"0.0.0-dev\", \"description\": \"Continue CLI\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"bin\": { \"cn\": \"dist/cn.js\" }, \"scripts\": { \"test\": \"vitest run\", \"test:watch\": \"vitest watch\", \"test:ui\": \"vitest --ui\", \"test:e2e\": \"vitest run --config vitest.e2e.config.ts\", \"test:smoke\": \"node smoke-test.mjs\", \"test:smoke-api\": \"vitest run --config vitest.smoke-api.config.ts\", \"build:tsc\": \"tsc -p tsconfig.build.json\", \"build:local-deps\": \"cd ../../packages/config-types && npm i && npm run build && cd ../fetch && npm i && npm run build && cd ../llm-info && npm i && npm run build && cd ../terminal-security && npm i && npm run build &… 证据：`extensions/cli/package.json`\n- **Package**（package_manifest）：{ \"name\": \"continue\", \"icon\": \"media/icon.png\", \"author\": \"Continue Dev, Inc\", \"version\": \"1.3.39\", \"repository\": { \"type\": \"git\", \"url\": \"https://github.com/continuedev/continue\" }, \"extensionKind\": \"ui\", \"workspace\" , \"bugs\": { \"url\": \"https://github.com/continuedev/continue/issues\", \"email\": \"nate@continue.dev\" }, \"homepage\": \"https://continue.dev\", \"qna\": \"https://github.com/continuedev/continue/issues/new/choose\", \"license\": \"Apache-2.0\", \"displayName\": \"Continue - open-source AI code agent\", \"pricing\": \"Free\", \"description\": \"The leading open-source AI code agent\", \"publisher\": \"Continue\", \"engines\": { \"vscode\": \"^1.70.0\", \"node\": \" =20.20.1\" }, \"engine-strict\": true, \"galleryBanner\":… 证据：`extensions/vscode/package.json`\n- **Package**（package_manifest）：{ \"name\": \"my-react-project\", \"version\": \"1.0.0\", \"description\": \"A React project using Radix UI for accessible components\", \"main\": \"index.js\", \"scripts\": { \"start\": \"react-scripts start\", \"build\": \"react-scripts build\", \"test\": \"react-scripts test\", \"eject\": \"react-scripts eject\" }, \"keywords\": \"react\", \"radix-ui\", \"accessibility\", \"frontend\" , \"author\": \"Your Name\", \"license\": \"MIT\", \"dependencies\": { \"@radix-ui/react-accordion\": \"^1.0.0\", \"@radix-ui/react-alert-dialog\": \"^1.0.0\", \"@radix-ui/react-checkbox\": \"^1.0.0\", \"react\": \"^18.0.0\", \"react-dom\": \"^18.0.0\", \"react-scripts\": \"^5.0.0\" }, \"devDependencies\": { \"@types/react\": \"^18.0.0\", \"@types/react-dom\": \"^18.0.0\", \"typescript\": \"^4.5.… 证据：`manual-testing-sandbox/nested-folder/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/config-types\", \"version\": \"1.0.14\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"echo 'No tests to run'\", \"build\": \"tsc\" }, \"author\": \"Nate Sesti and Ty Dunn\", \"license\": \"Apache-2.0\", \"devDependencies\": { \"@types/node\": \"^20.11.19\", \"typescript\": \"^5.5.2\" }, \"dependencies\": { \"zod\": \"^3.25.76\" } } 证据：`packages/config-types/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/config-yaml\", \"version\": \"1.23.0\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"exports\": { \".\": { \"browser\": \"./dist/browser.js\", \"node\": \"./dist/index.js\", \"default\": \"./dist/index.js\" } }, \"bin\": { \"config-yaml\": \"./dist/cli.js\" }, \"scripts\": { \"test\": \"cross-env NODE OPTIONS=--experimental-vm-modules jest\", \"build\": \"tsc\", \"generate-schema\": \"tsc && node dist/scripts/generateJsonSchema.js\" }, \"author\": \"Continue Dev, Inc.\", \"license\": \"Apache-2.0\", \"dependencies\": { \"@continuedev/config-types\": \"^1.0.14\", \"yaml\": \"^2.8.2\", \"zod\": \"^3.25.76\" }, \"devDependencies\": { \"@types/jest\": \"^29.5.14\", \"@types/node\": \"^20.0.0\", \"… 证据：`packages/config-yaml/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/sdk-generator\", \"version\": \"0.0.1\", \"description\": \"SDK Generator for Continue.dev\", \"type\": \"module\", \"scripts\": { \"build\": \"echo 'No build step needed'\", \"test\": \"echo 'No tests to run'\", \"generate-client:typescript\": \"openapi-generator-cli generate -i ./openapi.yaml -g typescript-fetch -o ./typescript/api -c ./openapi-generator-config.json\", \"generate-client:python\": \"openapi-generator-cli generate -i ./openapi.yaml -g python -o ./python/api -c ./openapi-generator-config.json\", \"generate-client:ALL\": \"npm run generate-client:typescript && npm run generate-client:python\", \"swagger-ui\": \"node swagger-ui-server.js\" }, \"author\": \"Continue Dev, Inc.\", \"license\": \"Apach… 证据：`packages/continue-sdk/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/hub-api\", \"version\": \"0.0.1\", \"description\": \"OpenAPI client for @continuedev/hub-api\", \"author\": \"OpenAPI-Generator\", \"repository\": { \"type\": \"git\", \"url\": \"https://github.com/GIT USER ID/GIT REPO ID.git\" }, \"main\": \"./dist/index.js\", \"typings\": \"./dist/index.d.ts\", \"module\": \"./dist/esm/index.js\", \"sideEffects\": false, \"scripts\": { \"build\": \"tsc && tsc -p tsconfig.esm.json\", \"prepare\": \"npm run build\" }, \"devDependencies\": { \"typescript\": \"^4.0 ^5.0\" } } 证据：`packages/continue-sdk/typescript/api/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/sdk\", \"version\": \"0.0.13\", \"description\": \"SDK for Continue.dev\", \"main\": \"dist/src/index.js\", \"types\": \"dist/src/index.d.ts\", \"type\": \"module\", \"scripts\": { \"build\": \"bash ./build.sh\", \"test\": \"node --experimental-vm-modules node modules/jest/bin/jest.js\", \"test:watch\": \"node --experimental-vm-modules node modules/jest/bin/jest.js --watch\" }, \"author\": \"Continue Dev, Inc.\", \"license\": \"Apache-2.0\", \"dependencies\": { \"openai\": \"^4.104.0\" }, \"devDependencies\": { \"@types/jest\": \"^29.5.14\", \"dotenv\": \"^16.5.0\", \"jest\": \"^29.7.0\", \"ts-jest\": \"^29.1.2\", \"typescript\": \"^5.0.0\" }, \"files\": \"dist\" } 证据：`packages/continue-sdk/typescript/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/fetch\", \"version\": \"1.1.0\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"vitest run\", \"build\": \"tsc\" }, \"author\": \"Nate Sesti and Ty Dunn\", \"license\": \"Apache-2.0\", \"dependencies\": { \"@continuedev/config-types\": \"^1.0.14\", \"follow-redirects\": \"^1.15.6\", \"http-proxy-agent\": \"^7.0.2\", \"https-proxy-agent\": \"^7.0.5\", \"node-fetch\": \"^3.3.2\" }, \"devDependencies\": { \"@types/follow-redirects\": \"^1.14.4\", \"typescript\": \"^5.0.0\", \"vitest\": \"^3.2.0\", \"@semantic-release/changelog\": \"^6.0.3\", \"@semantic-release/git\": \"^10.0.1\", \"@semantic-release/github\": \"^9.2.6\", \"@semantic-release/npm\": \"^13.1.5\", \"semantic-rel… 证据：`packages/fetch/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/hub\", \"version\": \"0.0.7\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"cross-env NODE OPTIONS=--experimental-vm-modules jest --passWithNoTests\", \"build\": \"tsc\" }, \"author\": \"Continue Dev, Inc.\", \"license\": \"Apache-2.0\", \"dependencies\": { \"@continuedev/config-yaml\": \"^1.38.0\", \"js-yaml\": \"^4.1.1\" }, \"devDependencies\": { \"@types/jest\": \"^29.5.14\", \"cross-env\": \"^7.0.3\", \"jest\": \"^29.7.0\", \"ts-jest\": \"^29.2.3\", \"ts-node\": \"^10.9.2\" } } 证据：`packages/hub/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/llm-info\", \"version\": \"1.0.10\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"echo 'No tests to run'\", \"build\": \"tsc\" }, \"author\": \"Nate Sesti and Ty Dunn\", \"license\": \"Apache-2.0\", \"devDependencies\": { \"@types/node\": \"^22.15.29\", \"typescript\": \"^5.5.2\", \"@semantic-release/changelog\": \"^6.0.3\", \"@semantic-release/git\": \"^10.0.1\", \"@semantic-release/github\": \"^9.2.6\", \"@semantic-release/npm\": \"^13.1.5\", \"semantic-release\": \"^24.2.7\" }, \"overrides\": { \"picomatch\": \"^4.0.4\" } } 证据：`packages/llm-info/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/openai-adapters\", \"version\": \"1.32.0\", \"description\": \"\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"vitest\", \"build\": \"tsc\" }, \"author\": \"Nate Sesti and Ty Dunn\", \"license\": \"Apache-2.0\", \"dependencies\": { \"@ai-sdk/anthropic\": \"^3.0.44\", \"@ai-sdk/google\": \"^3.0.30\", \"@ai-sdk/deepseek\": \"^2.0.20\", \"@ai-sdk/openai\": \"^3.0.29\", \"@ai-sdk/xai\": \"^3.0.57\", \"@anthropic-ai/sdk\": \"^0.67.0\", \"@aws-sdk/client-bedrock-runtime\": \"^3.931.0\", \"@aws-sdk/credential-providers\": \"^3.974.0\", \"@continuedev/config-types\": \"^1.0.14\", \"@continuedev/config-yaml\": \"^1.38.0\", \"@continuedev/fetch\": \"^1.6.0\", \"@google/genai\": \"^1.30.0\", \"ai\": \"^… 证据：`packages/openai-adapters/package.json`\n- **Package**（package_manifest）：{ \"name\": \"@continuedev/terminal-security\", \"version\": \"1.0.0\", \"description\": \"Terminal command security evaluation for Continue\", \"main\": \"dist/index.js\", \"types\": \"dist/index.d.ts\", \"type\": \"module\", \"scripts\": { \"test\": \"vitest run\", \"test:watch\": \"vitest watch\", \"build\": \"tsc\", \"clean\": \"rm -rf dist\" }, \"author\": \"Continue Dev, Inc\", \"license\": \"Apache-2.0\", \"devDependencies\": { \"@types/node\": \"^20.11.19\", \"@types/shell-quote\": \"^1.7.5\", \"typescript\": \"^5.5.2\", \"vitest\": \"^3.2.4\" }, \"dependencies\": { \"shell-quote\": \"^1.8.1\" } } 证据：`packages/terminal-security/package.json`\n- **Docs Style Guide**（skill_instruction）：- Be concise — no filler. Make it easy to find what you're looking for - Task-oriented — frame around what the user is trying to do, not what the product can do - Progressive disclosure — guide from introduction to advanced use-cases. Don't throw users into the deep end - Real examples over abstract explanations — show, don't describe - Code snippets must be copy-pasteable — no placeholder values that silently break, no missing imports - Prerequisites up front — don't surprise the user halfway through - One topic per page — if you're covering two things, split it - Link, don't repeat — reference other docs instead of duplicating content - Scannable headings — skimming the TOC should reveal… 证据：`.claude/skills/docs-style/SKILL.md`\n- **Contributing to Continue JetBrains extension**（documentation）：Contributing to Continue JetBrains extension 证据：`extensions/intellij/CONTRIBUTING.md`\n- **Continue VS Code Extension**（documentation）：This is the Continue VS Code Extension. Its primary jobs are 证据：`extensions/vscode/CONTRIBUTING.md`\n- **cn check — Local AI Agent Checks**（skill_instruction）：Run AI-powered code checks locally against your working tree changes using the Continue CLI. Each check is an agent defined in markdown that reviews your diff, identifies issues, and optionally suggests fixes as a patch. 证据：`skills/cn-check/SKILL.md`\n- **Diff algorithm tests**（documentation）：--- is the delimeter, and surrounding whitespace will be trimmed. 证据：`core/diff/test-examples/README.md`\n- 其余 20 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。\n\n## 宿主 AI 必须遵守的规则\n\n- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`docs/README.md`, `README.md`, `actions/README.md`\n- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`docs/README.md`, `README.md`, `actions/README.md`\n\n## 用户开工前应该回答的问题\n\n- 你准备在哪个宿主 AI 或本地环境中使用它？\n- 你只是想先体验工作流，还是准备真实安装？\n- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？\n\n## 验收标准\n\n- 所有能力声明都能回指到 evidence_refs 中的文件路径。\n- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。\n- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。\n\n---\n\n## Doramagic Context Augmentation\n\n下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。\n\n## Human Manual 骨架\n\n使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。\n\n宿主 AI 硬性规则：\n- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。\n- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。\n- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。\n\n- **Continue项目简介**：importance `high`\n  - source_paths: README.md, core/core.ts, core/package.json\n- **项目目录结构**：importance `high`\n  - source_paths: core/package.json, gui/package.json, extensions/cli/package.json, packages/config-yaml/package.json\n- **系统架构设计**：importance `high`\n  - source_paths: core/core.ts, core/protocol/index.ts, binary/src/IpcIde.ts, binary/src/index.ts\n- **通信协议与消息传递**：importance `medium`\n  - source_paths: core/protocol/index.ts, core/protocol/webview.ts, core/protocol/ide.ts, core/protocol/messenger/index.ts, binary/src/IpcMessenger.ts\n- **LLM集成架构**：importance `high`\n  - source_paths: core/llm/index.ts, core/llm/llms/llm.ts, core/llm/templates/chat.ts, core/llm/streamChat.ts, core/llm/toolSupport.ts\n- **模型提供商支持**：importance `high`\n  - source_paths: core/llm/llms/index.ts, core/llm/llms/OpenAI.ts, core/llm/llms/Anthropic.ts, core/llm/llms/Ollama.ts, packages/openai-adapters/src/apis/OpenAI.ts\n- **自动补全系统**：importance `high`\n  - source_paths: core/autocomplete/CompletionProvider.ts, core/autocomplete/generation/CompletionStreamer.ts, core/autocomplete/templating/AutocompleteTemplate.ts, core/autocomplete/filtering/streamTransforms/StreamTransformPipeline.ts, core/autocomplete/context/ContextRetrievalService.ts\n- **代码库索引系统**：importance `high`\n  - source_paths: core/indexing/CodebaseIndexer.ts, core/indexing/CodeSnippetsIndex.ts, core/indexing/LanceDbIndex.ts, core/indexing/chunk/ChunkCodebaseIndex.ts, core/indexing/refreshIndex.ts\n\n## Repo Inspection Evidence / 源码检查证据\n\n- repo_clone_verified: true\n- repo_inspection_verified: true\n- repo_commit: `cb273098d968906d25ee737b454f0b5f13ea2482`\n- inspected_files: `package.json`, `README.md`, `docs/package-lock.json`, `docs/troubleshooting.mdx`, `docs/reo-tracking.js`, `docs/faqs.mdx`, `docs/CONTRIBUTING.mdx`, `docs/c15t-cookie-banner.js`, `docs/index.mdx`, `docs/home.mdx`, `docs/package.json`, `docs/README.md`, `docs/reference.mdx`, `docs/docs.json`, `docs/overview.mdx`, `docs/cli/configuration.mdx`, `docs/cli/tool-permissions.mdx`, `docs/cli/headless-mode.mdx`, `docs/cli/tui-mode.mdx`, `docs/cli/quickstart.mdx`\n\n宿主 AI 硬性规则：\n- 没有 repo_clone_verified=true 时，不得声称已经读过源码。\n- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。\n- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。\n\n## Doramagic Pitfall Constraints / 踩坑约束\n\n这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。\n\n### Constraint 1: 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_823b2e0ae1ad49a78bd0a45d39a3099a | https://github.com/continuedev/continue/issues/12378 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 2: 来源证据：The extension doesn't show up at all.\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：The extension doesn't show up at all.\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_5d86070fe9d941ad9a44f1d09464b582 | https://github.com/continuedev/continue/issues/1312 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 3: 来源证据：v1.0.67-jetbrains\n\n- Trigger: GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.0.67-jetbrains\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_4ce3fb2dde3d48978402a51bb56fbc99 | https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 4: 来源证据：v1.2.22-vscode\n\n- Trigger: GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.2.22-vscode\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_51004115b2b842e0afcd08792bdf1f61 | https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 5: 来源证据：v1.3.38-vscode\n\n- Trigger: GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.38-vscode\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_5f19fd622e784966a0747963ae1dc6ce | https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 6: 能力判断依赖假设\n\n- Trigger: README/documentation is current enough for a first validation pass.\n- Host AI rule: 将假设转成下游验证清单。\n- Why it matters: 假设不成立时，用户拿不到承诺的能力。\n- Evidence: capability.assumptions | github_repo:644686905 | https://github.com/continuedev/continue | README/documentation is current enough for a first validation pass.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 7: 维护活跃度未知\n\n- Trigger: 未记录 last_activity_observed。\n- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。\n- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- Evidence: evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | last_activity_observed missing\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 8: 下游验证发现风险项\n\n- Trigger: no_demo\n- Host AI rule: 进入安全/权限治理复核队列。\n- Why it matters: 下游已经要求复核，不能在页面中弱化。\n- Evidence: downstream_validation.risk_items | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 9: 存在安全注意事项\n\n- Trigger: No sandbox install has been executed yet; downstream must verify before user use.\n- Host AI rule: 转成明确权限清单和安全审查提示。\n- Why it matters: 用户安装前需要知道权限边界和敏感操作。\n- Evidence: risks.safety_notes | github_repo:644686905 | https://github.com/continuedev/continue | No sandbox install has been executed yet; downstream must verify before user use.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 10: 存在评分风险\n\n- Trigger: no_demo\n- Host AI rule: 把风险写入边界卡，并确认是否需要人工复核。\n- Why it matters: 风险会影响是否适合普通用户安装。\n- Evidence: risks.scoring_risks | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n",
      "summary": "给宿主 AI 的上下文和工作边界。",
      "title": "AI Context Pack / 带给我的 AI"
    },
    "boundary_risk_card": {
      "asset_id": "boundary_risk_card",
      "filename": "BOUNDARY_RISK_CARD.md",
      "markdown": "# Boundary & Risk Card / 安装前决策卡\n\n项目：continuedev/continue\n\n## Doramagic 试用结论\n\n当前结论：可以进入发布前推荐检查；首次使用仍应从最小权限、临时目录和可回滚配置开始。\n\n## 用户现在可以做\n\n- 可以先阅读 Human Manual，理解项目目的和主要工作流。\n- 可以复制 Prompt Preview 做安装前体验；这只验证交互感，不代表真实运行。\n- 可以把官方 Quick Start 命令放到隔离环境中验证，不要直接进主力环境。\n\n## 现在不要做\n\n- 不要把 Prompt Preview 当成项目实际运行结果。\n- 不要把 metadata-only validation 当成沙箱安装验证。\n- 不要把未验证能力写成“已支持、已跑通、可放心安装”。\n- 不要在首次试用时交出生产数据、私人文件、真实密钥或主力配置目录。\n\n## 安装前检查\n\n- 宿主 AI 是否匹配：local_cli\n- 官方安装入口状态：已发现官方入口\n- 是否在临时目录、临时宿主或容器中验证：必须是\n- 是否能回滚配置改动：必须能\n- 是否需要 API Key、网络访问、读写文件或修改宿主配置：未确认前按高风险处理\n- 是否记录了安装命令、实际输出和失败日志：必须记录\n\n## 当前阻塞项\n\n- 无阻塞项。\n\n## 项目专属踩坑\n\n- 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 来源证据：The extension doesn't show up at all.（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：v1.0.67-jetbrains（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：v1.2.22-vscode（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：v1.3.38-vscode（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n\n## 风险与权限提示\n\n- no_demo: medium\n\n## 证据缺口\n\n- 暂未发现结构化证据缺口。\n",
      "summary": "安装、权限、验证和推荐前风险。",
      "title": "Boundary & Risk Card / 边界与风险卡"
    },
    "human_manual": {
      "asset_id": "human_manual",
      "filename": "HUMAN_MANUAL.md",
      "markdown": "# https://github.com/continuedev/continue 项目说明书\n\n生成时间：2026-05-13 06:37:27 UTC\n\n## 目录\n\n- [Continue项目简介](#introduction)\n- [项目目录结构](#project-structure)\n- [系统架构设计](#system-architecture)\n- [通信协议与消息传递](#communication-protocols)\n- [LLM集成架构](#llm-integration)\n- [模型提供商支持](#model-providers)\n- [自动补全系统](#autocomplete-system)\n- [代码库索引系统](#codebase-indexing)\n- [上下文提供者](#context-providers)\n- [VSCode扩展](#vscode-extension)\n\n<a id='introduction'></a>\n\n## Continue项目简介\n\n### 相关页面\n\n相关主题：[项目目录结构](#project-structure), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/continuedev/continue/blob/main/README.md)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n</details>\n\n# Continue项目简介\n\n## 项目概述\n\nContinue 是一个开源的 AI 编程助手项目，旨在为开发者提供智能化的代码辅助功能。该项目支持多种 IDE 集成，并通过可配置的 AI 模型实现代码生成、补全、编辑和检查等功能。\n\n### 核心定位\n\nContinue 的核心价值主张包括：\n\n- **Source-controlled AI checks**: 支持在 CI/CD 流程中强制执行的源代码级别 AI 检查\n- **跨平台支持**: 提供 VS Code 和 IntelliJ IDEA 等主流 IDE 的扩展\n- **CLI 工具**: 提供独立的命令行工具 (`cn`) 便于集成到开发工作流中\n- **可扩展架构**: 支持自定义模型配置和 MCP (Model Context Protocol) 服务器集成\n\n### 主要功能模块\n\n| 模块 | 功能描述 |\n|------|----------|\n| GUI 组件 | 前端界面组件，包括 Markdown 预览、模型选择器、配置面板等 |\n| CLI 扩展 | 命令行工具，支持斜杠命令、资源监控等 |\n| Core 核心 | 核心业务逻辑和 Markdown 处理工具 |\n| IntelliJ 扩展 | JetBrains IDE 集成支持 |\n\n---\n\n## 系统架构\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    A[用户 IDE] --> B[GUI 前端]\n    B --> C[Core 核心模块]\n    C --> D[CLI 扩展]\n    \n    E[CLI 工具 cn] --> D\n    D --> F[AI 模型服务]\n    \n    G[MCP 服务器] --> C\n    H[配置文件] --> C\n    \n    B --> I[StyledMarkdownPreview]\n    I --> J[patchNestedMarkdown]\n```\n\n### 模块依赖关系\n\n根据源码结构，项目主要分为以下层级：\n\n```mermaid\ngraph LR\n    A[extensions/cli] --> B[gui]\n    B --> C[core]\n    D[extensions/intellij] --> B\n    \n    A --> E[slashCommands]\n    A --> F[systemMessage]\n    A --> G[IntroMessage]\n    \n    B --> H[ModelsSection]\n    B --> I[Stats]\n    B --> J[StyledMarkdownPreview]\n    J --> K[patchNestedMarkdown]\n```\n\n---\n\n## 核心功能详解\n\n### 1. 斜杠命令系统\n\nContinue 实现了丰富的斜杠命令（Slash Commands）系统，用户可通过输入 `/` 开头的命令快速触发特定功能。 资料来源：[extensions/cli/src/slashCommands.ts:1-70]()\n\n#### 支持的命令列表\n\n| 命令 | 功能描述 |\n|------|----------|\n| `/clear` | 清除聊天历史记录 |\n| `/exit` | 退出当前会话 |\n| `/config` | 打开配置选择器 |\n| `/login` | 登录认证 |\n| `/logout` | 登出 |\n| `/whoami` | 显示当前用户信息 |\n| `/model` | 打开模型选择器 |\n| `/compact` | 压缩会话历史 |\n| `/mcp` | 打开 MCP 服务器选择器 |\n| `/resume` | 恢复历史会话 |\n| `/fork` | 复制当前会话 |\n| `/title` | 为当前会话生成标题 |\n| `/init` | 初始化新项目 |\n| `/update` | 检查更新 |\n| `/jobs` | 查看后台任务 |\n| `/skills` | 管理技能包 |\n| `/sessions` | 管理会话列表 |\n| `/export` | 导出会话数据 |\n| `/import` | 导入会话数据 |\n\n#### 命令处理流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户输入\n    participant CLI as SlashCommandHandler\n    participant Model as AI模型\n    participant System as 系统消息\n    \n    User->>CLI: 输入 /command args\n    CLI->>CLI: 检查是否以 / 开头\n    CLI->>CLI: 解析命令和参数\n    CLI->>System: 生成系统消息\n    System->>Model: 发送请求\n    Model->>User: 返回结果\n```\n\n### 2. Markdown 嵌套处理\n\n项目实现了一个专门的 Markdown 修补工具，用于处理包含代码块的 Markdown 内容，防止嵌套代码块渲染错误。 资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts:1-40]()\n\n#### 功能说明\n\n当用户生成的 Markdown 内容包含代码块时，该工具会：\n\n1. 检测 Markdown 代码块模式（包括 `md`、`markdown`、`gfm`、`github-markdown` 等变体）\n2. 使用 `~~~` 替代内层代码块的 ``` 分隔符\n3. 维护嵌套层级计数，确保正确闭合\n\n#### 核心算法\n\n```mermaid\ngraph TD\n    A[解析源代码] --> B{匹配 Markdown 模式}\n    B -->|未匹配| C[直接返回源文本]\n    B -->|匹配| D[初始化嵌套计数 = 0]\n    D --> E[逐行处理]\n    E --> F{是否为 Markdown 块开始?}\n    F -->|是| G[嵌套计数 +1]\n    G --> E\n    F -->|否| H{是否为裸反引号行?}\n    H -->|是| I{剩余裸反引号 = 0?}\n    I -->|是| J[嵌套计数 = 0]\n    J --> K[替换为 ~~~]\n    I -->|否| E\n    H -->|否| E\n    E --> L{处理完成?}\n    L -->|否| E\n    L -->|是| M[返回处理结果]\n```\n\n### 3. 系统消息生成\n\nCLI 模块负责生成发送给 AI 模型的系统消息，包含上下文信息和配置指令。 资料来源：[extensions/cli/src/systemMessage.ts:1-60]()\n\n#### 系统消息组件\n\n| 组件 | 说明 |\n|------|------|\n| 提交签名信息 | 在提交消息中添加 Co-Authored-By 签名 |\n| 简洁模式 | headless 模式下仅返回最终答案 |\n| JSON 输出模式 | 当请求 JSON 格式时，生成专用的格式说明 |\n| 用户规则 | 包含代理内容和处理后的规则 |\n\n### 4. 模型配置管理\n\nGUI 模块提供了完整的模型配置界面，支持不同角色的模型选择。 资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-80]()\n\n#### 模型角色分类\n\n| 角色 | 用途描述 |\n|------|----------|\n| Chat | 通用对话和代码生成 |\n| Autocomplete | 实时代码补全（边打字边补全） |\n| Edit | 代码转换和编辑（多行选择区域） |\n\n---\n\n## 数据统计系统\n\n项目集成了使用量统计功能，跟踪和展示令牌（Token）消耗情况。 资料来源：[gui/src/pages/stats.tsx:1-80]()\n\n### 统计维度\n\n| 维度 | 数据类型 | 说明 |\n|------|----------|------|\n| 按日期 | 日报表 | 每日生成的令牌数和提示令牌数 |\n| 按模型 | 模型报表 | 各模型生成的令牌数和提示令牌数 |\n\n### 令牌格式处理\n\n```typescript\n// 使用千位分隔符格式化数字\n.toLocaleString()\n```\n\n---\n\n## 资源监控\n\nCLI 模块提供了资源调试工具栏，实时显示系统资源使用情况。 资料来源：[extensions/cli/src/ui/components/ResourceDebugBar.tsx:1-40]()\n\n### 监控指标\n\n| 指标 | 描述 |\n|------|------|\n| Peak Memory | 峰值内存使用量 |\n| Peak CPU | 峰值 CPU 使用率 |\n| Average Memory | 平均内存使用量 |\n| Average CPU | 平均 CPU 使用率 |\n\n---\n\n## 安装与配置\n\n### CLI 安装方式\n\n#### macOS / Linux\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.sh | bash\n```\n\n#### Windows (PowerShell)\n\n```powershell\nirm https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.ps1 | iex\n```\n\n#### npm 安装\n\n```bash\nnpm i -g @continuedev\n```\n\n### IDE 集成\n\n项目提供以下 IDE 扩展：\n\n- **VS Code**: 通过市场安装\n- **IntelliJ IDEA**: 通过插件市场安装（需要 Node.js 20+）\n\n---\n\n## MCP 服务器集成\n\nContinue 支持 MCP (Model Context Protocol) 服务器扩展，允许集成外部工具和服务。\n\n### MCP 集成功能\n\n| 功能 | 说明 |\n|------|------|\n| MCP 提示 | 显示可用的 MCP 提示模板 |\n| MCP 服务器 | 管理和连接 MCP 服务器 |\n| 工具调用 | 通过 MCP 协议调用外部工具 |\n\n---\n\n## 错误处理\n\n项目实现了健壮的错误处理机制，包括错误通知组件和配置加载状态管理。 资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-50]()\n\n### 错误处理策略\n\n| 场景 | 处理方式 |\n|------|----------|\n| 配置加载失败 | 显示错误提示，提供重载选项 |\n| 模型不可用 | 禁用聊天功能，提示用户配置模型 |\n| 网络错误 | 显示重连选项和帮助文档链接 |\n\n---\n\n## 技术栈总结\n\n### 前端技术\n\n- **框架**: React\n- **样式**: Tailwind CSS\n- **图标**: Heroicons\n\n### 后端/CLI 技术\n\n- **运行环境**: Node.js 20+\n- **包管理**: npm\n\n### 许可证\n\n项目采用 Apache 2.0 开源许可证 资料来源：[README.md:1-10]()\n\n---\n\n## 总结\n\nContinue 是一个功能完整的 AI 编程助手，通过模块化的架构设计实现了：\n\n1. **多 IDE 支持** - 覆盖主流开发环境\n2. **灵活的命令系统** - 提高用户操作效率\n3. **智能 Markdown 处理** - 解决嵌套渲染问题\n4. **完善的统计监控** - 跟踪资源使用情况\n5. **可扩展的 MCP 集成** - 支持第三方服务连接\n\n该项目持续活跃开发中，通过配置文件和斜杠命令为开发者提供了高度可定制的 AI 辅助编程体验。\n\n---\n\n<a id='project-structure'></a>\n\n## 项目目录结构\n\n### 相关页面\n\n相关主题：[Continue项目简介](#introduction), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/pages/config/sections/HelpSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/HelpSection.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [gui/src/components/ModeSelect/ModeSelect.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/ModeSelect/ModeSelect.tsx)\n- [gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n- [extensions/cli/src/ui/JobsSelector.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/JobsSelector.tsx)\n</details>\n\n# 项目目录结构\n\n## 概述\n\nContinue 是一个开源的 AI 编程助手项目，采用多模块 monorepo 架构组织。项目的目录结构清晰地划分了核心功能、图形界面、扩展插件和共享包等模块，便于维护和扩展。资料来源：[gui/src/pages/config/sections/HelpSection.tsx:1-50]()\n\n## 顶层目录架构\n\n```\ncontinue/\n├── core/                    # 核心逻辑模块\n├── gui/                     # 图形用户界面\n├── extensions/              # IDE 扩展插件\n│   ├── cli/                 # 命令行工具\n│   ├── intellij/            # IntelliJ IDE 插件\n│   └── vscode/              # VS Code 插件\n├── packages/                # 共享工具包\n│   └── config-yaml/         # 配置解析工具\n└── media/                   # 静态资源文件\n```\n\n## 核心模块（core）\n\n核心模块包含项目的主要业务逻辑，处理 AI 模型交互、上下文管理和检查规则等核心功能。资料来源：[extensions/cli/src/systemMessage.ts:1-30]()\n\n## 图形界面模块（gui）\n\ngui 模块是使用 React 构建的跨平台图形界面，提供用户交互和配置管理功能。\n\n### 页面组件结构\n\n```\ngui/src/pages/\n├── config/\n│   └── sections/\n│       ├── HelpSection.tsx      # 帮助与工具配置\n│       └── ModelsSection.tsx    # 模型配置管理\n└── error.tsx                    # 错误页面\n```\n\n### 组件结构\n\n```\ngui/src/components/\n├── StyledMarkdownPreview/       # Markdown 渲染组件\n│   └── utils/\n│       └── patchNestedMarkdown.test.ts\n├── config/\n│   └── FatalErrorNotice.tsx     # 错误提示组件\n├── mainInput/\n│   └── belowMainInput/\n│       └── ContextItemsPeek.tsx # 上下文预览组件\n├── ModeSelect/                  # 模式选择组件\n│   └── ModeSelect.tsx\n├── modelSelection/             # 模型选择组件\n│   └── ModelCard.tsx\n├── StepContainer/              # 步骤容器组件\n│   └── ConversationSummary.tsx  # 对话摘要组件\n└── BackgroundMode/             # 后台模式组件\n    └── BackgroundModeView.tsx\n```\n\n### 配置路由\n\ngui 模块定义了配置相关的路由结构，用于导航到不同的配置页面。资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-40]()\n\n```typescript\nconst CONFIG_ROUTES = {\n  CONFIG: \"config\",\n  CONFIGS: \"configs\"\n};\n```\n\n## 命令行扩展（extensions/cli）\n\ncli 扩展提供了命令行界面，用于在终端环境中使用 Continue 的功能。\n\n### CLI 模块结构\n\n```\nextensions/cli/src/\n├── systemMessage.ts      # 系统消息处理\n└── ui/\n    ├── IntroMessage.tsx  # 介绍信息组件\n    └── JobsSelector.tsx  # 任务选择器组件\n```\n\n### UI 组件功能\n\n| 组件 | 功能 | 文件位置 |\n|------|------|----------|\n| IntroMessage | 显示启动信息、模型状态、能力警告 | [extensions/cli/src/ui/IntroMessage.tsx:1-80]() |\n| JobsSelector | 任务列表选择与管理 | [extensions/cli/src/ui/JobsSelector.tsx:1-60]() |\n| systemMessage | 生成系统提示信息 | [extensions/cli/src/systemMessage.ts:1-50]() |\n\n### 系统消息生成\n\ncli 模块通过 systemMessage.ts 生成传递给 AI 模型的系统消息，包含提交签名配置、headless 模式指令、JSON 输出格式要求等。资料来源：[extensions/cli/src/systemMessage.ts:1-30]()\n\n## 配置模块（packages/config-yaml）\n\npackages/config-yaml 模块提供了配置文件解析功能，支持 YAML 格式的配置文件处理。\n\n## IDE 扩展\n\n### 扩展类型\n\n| 扩展名称 | 目录路径 | 说明 |\n|----------|----------|------|\n| VS Code | extensions/vscode/ | VS Code 集成 |\n| IntelliJ | extensions/intellij/ | IntelliJ IDEA 集成 |\n| Vim | extensions/vim/ | Vim/Neovim 集成 |\n\n### 共享模式选择\n\n各扩展共享相同的模式选择逻辑，支持四种主要模式：资料来源：[gui/src/components/ModeSelect/ModeSelect.tsx:1-100]()\n\n```typescript\ntype Mode = \"chat\" | \"plan\" | \"agent\" | \"background\";\n```\n\n| 模式 | 功能描述 | 可用工具 |\n|------|----------|----------|\n| chat | 对话模式 | AI 对话工具 |\n| plan | 规划模式 | 只读/MCP 工具 |\n| agent | 代理模式 | 全部可用工具 |\n| background | 后台模式 | 后台代理任务 |\n\n## 配置系统\n\n### 帮助与工具配置\n\nHelpSection 组件提供了多项工具配置入口，包括令牌使用统计、会话历史查看、快速入门教程等。资料来源：[gui/src/pages/config/sections/HelpSection.tsx:1-80]()\n\n### 模型配置\n\nModelsSection 组件管理不同角色的模型配置：\n\n| 角色 | 用途 | 说明 |\n|------|------|------|\n| chat | 对话模型 | 用于聊天交互 |\n| autocomplete | 自动补全 | 内联代码补全 |\n| edit | 编辑模型 | 代码转换与修改 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-100]()\n\n### 错误处理\n\nFatalErrorNotice 组件在配置加载失败时显示错误提示，提供帮助链接、重新加载和查看配置页面的选项。资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-50]()\n\n## 后台模式架构\n\nBackgroundModeView 组件处理后台代理任务，提供了 GitHub 连接提示、任务状态显示和容器启动等待等功能。资料来源：[gui/src/components/BackgroundMode/BackgroundModeView.tsx:1-60]()\n\n## 工作流程图\n\n```mermaid\ngraph TD\n    A[用户交互] --> B[GUI 界面]\n    B --> C{模式选择}\n    C -->|Chat| D[Chat 模式]\n    C -->|Plan| E[Plan 模式]\n    C -->|Agent| F[Agent 模式]\n    C -->|Background| G[后台模式]\n    D --> H[Core 模块]\n    E --> H\n    F --> H\n    G --> I[后台容器]\n    H --> J[AI 模型]\n    J --> K[响应输出]\n```\n\n## 模块间依赖关系\n\n```mermaid\ngraph LR\n    A[GUI] -->|API 调用| B[Core]\n    C[CLI] -->|系统消息| B\n    D[Extensions] -->|桥接| B\n    E[Config-Yaml] -->|配置解析| A\n    E -->|配置解析| C\n    E -->|配置解析| D\n```\n\n## 关键文件索引\n\n| 功能模块 | 主要文件 | 职责 |\n|----------|----------|------|\n| 系统消息 | extensions/cli/src/systemMessage.ts | 生成 AI 系统提示 |\n| 模式选择 | gui/src/components/ModeSelect/ModeSelect.tsx | 管理四种工作模式 |\n| 模型配置 | gui/src/pages/config/sections/ModelsSection.tsx | 配置 AI 模型 |\n| 错误处理 | gui/src/components/config/FatalErrorNotice.tsx | 错误提示与恢复 |\n| 后台代理 | gui/src/components/BackgroundMode/BackgroundModeView.tsx | 后台任务管理 |\n\n---\n\n<a id='system-architecture'></a>\n\n## 系统架构设计\n\n### 相关页面\n\n相关主题：[Continue项目简介](#introduction), [通信协议与消息传递](#communication-protocols), [LLM集成架构](#llm-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts](https://github.com/continuedev/continue/blob/main/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/redux/slices/sessionSlice.ts](https://github.com/continuedev/continue/blob/main/gui/src/redux/slices/sessionSlice.ts)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n- [gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n</details>\n\n# 系统架构设计\n\n## 1. 概述\n\nContinue 是一个开源的 AI 编程助手，通过 GitHub 状态检查和可配置的 AI 代理来增强开发工作流。系统采用多层次客户端-服务器架构，支持多种 IDE 集成，包括 Visual Studio Code、JetBrains 系列等。 资料来源：[README.md:1-30]()\n\nContinue 的架构设计围绕以下核心目标展开：\n\n- 提供源控制的 AI 代码检查功能，可在 CI 中强制执行\n- 支持在任意编码代理中使用\n- 通过 slash 命令提供丰富的交互体验\n- 实现灵活的状态管理和会话追踪\n\n## 2. 核心架构分层\n\n### 2.1 整体架构概览\n\n```mermaid\ngraph TD\n    subgraph GUI层\n        A[React 前端组件]\n        B[Redux 状态管理]\n        C[Markdown 渲染引擎]\n    end\n    \n    subgraph CLI层\n        D[Slash 命令处理器]\n        E[系统消息生成器]\n        F[UI 组件库]\n    end\n    \n    subgraph 核心层\n        G[Core 业务逻辑]\n        H[协议定义]\n    end\n    \n    subgraph 二进制层\n        I[IPC 通信]\n        J[IDE 桥接]\n    end\n    \n    A --> B\n    B --> G\n    D --> G\n    E --> G\n    G --> H\n    H --> I\n    I --> J\n```\n\n### 2.2 分层职责说明\n\n| 层级 | 主要职责 | 技术栈 |\n|------|----------|--------|\n| GUI 层 | 用户界面渲染、交互处理、状态展示 | React, Redux, TypeScript |\n| CLI 层 | 命令行交互、slash 命令处理、系统消息生成 | Node.js, React |\n| 核心层 | 业务逻辑处理、协议定义、数据模型 | TypeScript |\n| 二进制层 | IPC 通信、IDE 集成、低层交互 | Rust/TypeScript |\n\n## 3. 状态管理架构\n\n### 3.1 Redux Store 结构\n\nContinue 使用 Redux Toolkit 管理前端状态，核心 store 包含多个 slice，其中 `sessionSlice` 是最重要的状态管理模块。 资料来源：[gui/src/redux/slices/sessionSlice.ts:1-100]()\n\n```mermaid\ngraph TD\n    A[RootState] --> B[session]\n    A --> C[config]\n    A --> D[ui]\n    \n    B --> B1[history]\n    B --> B2[allSessionMetadata]\n    B --> B3[codeBlockApplyStates]\n    B --> B4[title]\n    B --> B5[isSessionMetadataLoading]\n    \n    B1 --> B1a[ContextItems]\n    B1 --> B1b[isGatheringContext]\n```\n\n### 3.2 Session State 核心功能\n\nSession State 负责管理聊天会话的完整生命周期，包括以下关键功能：\n\n**会话元数据管理**\n\n```typescript\n// 添加新会话元数据\naddSessionMetadata: (\n  state,\n  { payload }: PayloadAction<BaseSessionMetadata>,\n) => {\n  state.allSessionMetadata = [...state.allSessionMetadata, payload];\n}\n\n// 更新会话元数据\nupdateSessionMetadata: (\n  state,\n  {\n    payload,\n  }: PayloadAction<{\n    sessionId: string;\n  } & Partial<BaseSessionMetadata>>,\n) => {\n  state.allSessionMetadata = state.allSessionMetadata.map((session) =>\n    session.sessionId === payload.sessionId\n      ? { ...session, ...payload }\n      : session,\n  );\n};\n```\n\n**选择器模式**\n\n系统使用 `createSelector` 实现高效的派生状态计算：\n\n```typescript\nexport const selectApplyStateByStreamId = createSelector(\n  [\n    (state: RootState) => state.session.codeBlockApplyStates.states,\n    (_state: RootState, streamId?: string) => streamId,\n  ],\n  (states, streamId) => {\n    return states.find((state) => state.streamId === streamId);\n  },\n);\n```\n\n### 3.3 异步操作处理\n\n系统通过 AsyncThunk 和 `addPassthroughCases` 模式处理异步操作，确保流式响应的状态一致性。 资料来源：[gui/src/redux/slices/sessionSlice.ts:180-200]()\n\n```typescript\nfunction addPassthroughCases(\n  builder: ActionReducerMapBuilder<SessionState>,\n  thunks: AsyncThunk<any, any, any>[],\n) {\n  thunks.forEach((thunk) => {\n    builder\n      .addCase(thunk.fulfilled, (_state, _action) => {})\n      .addCase(thunk.rejected, (_state, _action) => {})\n      .addCase(thunk.pending, (_state, _action) => {});\n  });\n}\n```\n\n## 4. Slash 命令系统\n\n### 4.1 命令处理架构\n\nSlash 命令是 CLI 层的核心交互方式，支持多种系统操作。命令处理器采用映射表模式，便于扩展和维护。 资料来源：[extensions/cli/src/slashCommands.ts:1-80]()\n\n```mermaid\ngraph LR\n    A[用户输入 /command] --> B[handleSlashCommands]\n    B --> C{命令匹配}\n    C -->|clear| D[清空聊天历史]\n    C -->|config| E[打开配置选择器]\n    C -->|model| F[打开模型选择器]\n    C -->|login| G[处理登录流程]\n    C -->|exit| H[退出应用]\n```\n\n### 4.2 支持的命令列表\n\n| 命令 | 功能描述 | 返回类型 |\n|------|----------|----------|\n| `/clear` | 清空聊天历史 | `{ clear: true, output: string }` |\n| `/exit` | 退出 CLI | `{ exit: true, output: string }` |\n| `/config` | 打开配置选择器 | `{ openConfigSelector: true }` |\n| `/model` | 打开模型选择器 | `{ openModelSelector: true }` |\n| `/compact` | 压缩会话历史 | `{ compact: true }` |\n| `/mcp` | 打开 MCP 选择器 | `{ openMcpSelector: true }` |\n| `/resume` | 恢复历史会话 | `{ openSessionSelector: true }` |\n| `/title` | 生成会话标题 | 异步处理 |\n| `/init` | 初始化新项目 | 异步处理 |\n| `/update` | 打开更新选择器 | `{ openUpdateSelector: true }` |\n| `/jobs` | 管理后台任务 | 异步处理 |\n| `/skills` | 管理技能 | 异步处理 |\n\n### 4.3 命令执行流程\n\n```typescript\nexport async function handleSlashCommands(\n  input: string,\n  assistant: AssistantConfig,\n  options?: { remoteUrl?: string; isRemoteMode?: boolean },\n): Promise<SlashCommandResult | null> {\n  // 仅在 slash 是第一个字符时触发\n  if (!input.startsWith(\"/\") || !input.trim().startsWith(\"/\")) {\n    return null;\n  }\n\n  const [command, ...args] = input.slice(1).split(\" \");\n  \n  // 路由到对应处理器\n  const handler = slashCommandMap[command];\n  if (handler) {\n    return await handler(args, assistant);\n  }\n  \n  return null;\n}\n```\n\n## 5. 系统消息生成\n\n### 5.1 消息构建策略\n\n系统消息生成器 (`systemMessage.ts`) 负责构建发送给 AI 模型的全上下文提示，包含多种可选的上下文模块。 资料来源：[extensions/cli/src/systemMessage.ts:1-60]()\n\n```mermaid\ngraph TD\n    A[开始构建系统消息] --> B{headless 模式?}\n    B -->|是| C[添加简洁响应指令]\n    B -->|否| D{format = json?}\n    D -->|是| E[添加 JSON 输出格式说明]\n    D -->|否| F{有规则或代理内容?}\n    F -->|是| G[添加 userRules 上下文]\n    F -->|否| H[返回基础消息]\n    \n    C --> H\n    E --> H\n    G --> H\n```\n\n### 5.2 上下文模块\n\n| 模块名称 | 触发条件 | 内容描述 |\n|----------|----------|----------|\n| `commitSignature` | `CONTINUE_CLI_DISABLE_COMMIT_SIGNATURE` 未设置 | Git 提交签名信息 |\n| userRules | `agentContent` 或 `processedRules` 存在 | 用户定义的规则和代理内容 |\n| 简洁响应指令 | `headless` 模式 | 要求直接返回最终答案 |\n| JSON 格式说明 | `format === \"json\"` | JSON 输出格式规范 |\n\n### 5.3 JSON 模式输出格式\n\n当启用 JSON 输出模式时，系统会注入特定的格式化指令：\n\n```typescript\nif (format === \"json\") {\n  systemMessage += `\nIMPORTANT: You are operating in JSON output mode. \nYour final response MUST be valid JSON that can be parsed by JSON.parse().\nThe JSON should contain properties relevant to answer the user's question.\n`;\n}\n```\n\n## 6. 用户界面组件架构\n\n### 6.1 组件层次结构\n\n```mermaid\ngraph TD\n    subgraph 配置页面\n        A[HelpSection] --> B[ConfigRow]\n        A --> C[ModelsSection]\n        C --> D[ModelRoleRow]\n        D --> E[ModelCard]\n    end\n    \n    subgraph 会话界面\n        F[IntroMessage] --> G[ModelCapabilityWarning]\n        F --> H[渲染 MCP 提示]\n        F --> I[渲染规则]\n    end\n    \n    subgraph 状态展示\n        J[Stats] --> K[Token 使用统计]\n        J --> L[每日使用报表]\n    end\n    \n    subgraph 错误处理\n        M[FatalErrorNotice] --> N[Alert]\n        M --> O[重载机制]\n    end\n```\n\n### 6.2 IntroMessage 组件\n\n`IntroMessage` 是 CLI 界面的主要信息展示组件，负责显示配置状态和模型信息。 资料来源：[extensions/cli/src/ui/IntroMessage.tsx:1-60]()\n\n**核心渲染逻辑**\n\n```typescript\nconst IntroMessage: React.FunctionComponent<IntroMessageProps> = ({\n  config,\n  model,\n  modelCapable,\n  mcpServers,\n  mcpPrompts,\n  rules,\n}) => {\n  return (\n    <Box>\n      {/* 配置信息 */}\n      {config && (\n        <Text color=\"blue\">\n          <Text bold>Config:</Text> <Text color=\"white\">{config.name}</Text>\n        </Text>\n      )}\n\n      {/* 模型信息 */}\n      {model ? (\n        <Text color=\"blue\">\n          <Text bold>Model:</Text>{\" \"}\n          <Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n        </Text>\n      ) : (\n        <Text color=\"blue\">\n          <Text bold>Model:</Text> <Text color=\"dim\">Loading...</Text>\n        </Text>\n      )}\n\n      {/* 能力警告 */}\n      {model && !modelCapable && (\n        <ModelCapabilityWarning modelName={model.name} />\n      )}\n    </Box>\n  );\n};\n```\n\n### 6.3 模型选择组件\n\n`ModelsSection` 负责管理不同角色的模型配置，包括聊天、补全和编辑模型。 资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:1-50]()\n\n| 角色 | 用途描述 | 快捷键 |\n|------|----------|--------|\n| chat | 对话和代码生成 | 默认 |\n| autocomplete | 内联代码补全 | 默认 |\n| edit | 代码转换和重构 | Cmd+I |\n\n### 6.4 Stats 页面统计功能\n\n`Stats` 组件展示令牌使用统计信息，支持按日和按模型两个维度的数据展示。 资料来源：[gui/src/pages/stats.tsx:1-80]()\n\n```typescript\n// 数据展示表格结构\n<table className=\"w-full border-collapse\">\n  <thead>\n    <Tr>\n      <Th>Day/Model</Th>\n      <Th>Generated Tokens</Th>\n      <Th>Prompt Tokens</Th>\n    </Tr>\n  </thead>\n  <tbody>\n    {models.map((model) => (\n      <Tr key={model.model}>\n        <Td>{model.model}</Td>\n        <Td>{model.generatedTokens.toLocaleString()}</Td>\n        <Td>{model.promptTokens.toLocaleString()}</Td>\n      </Tr>\n    ))}\n  </tbody>\n</table>\n```\n\n## 7. Markdown 处理系统\n\n### 7.1 嵌套代码块处理\n\n系统实现了 `patchNestedMarkdown` 功能来处理 Markdown 中嵌套的代码块，确保正确渲染。 资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts:1-40]()\n\n```mermaid\ngraph TD\n    A[输入 Markdown 源码] --> B{匹配 markdown 代码块?}\n    B -->|否| C[直接返回原内容]\n    B -->|是| D[初始化状态追踪器]\n    D --> E[遍历每一行]\n    E --> F{是否在 markdown 块内?}\n    F -->|否| G{是 markdown 开始标记?}\n    G -->|是| H[nestCount++]\n    G -->|否| E\n    F -->|是| I{遇到裸反引号?}\n    I -->|是| J{是最后一行?}\n    J -->|是| K[nestCount--]\n    J -->|否| L[转换为 ~~~]\n    K --> E\n    H --> E\n```\n\n### 7.2 支持的 Markdown 标识符\n\n| 标识符 | 说明 | 示例 |\n|--------|------|------|\n| `md` | 标准 Markdown | ````md` |\n| `markdown` | 完整写法 | ````markdown` |\n| `gfm` | GitHub Flavored Markdown | ````gfm` |\n| `github-markdown` | GitHub 特定标识 | ````github-markdown` |\n\n### 7.3 状态追踪器优化\n\n系统使用 `MarkdownBlockStateTracker` 优化嵌套代码块的检测性能：\n\n```typescript\nexport const patchNestedMarkdown = (source: string): string => {\n  // 早期返回优化\n  if (!source.match(/```(\\w*|.*)(md|markdown|gfm|github-markdown)/))\n    return source;\n\n  let nestCount = 0;\n  const lines = source.split(\"\\n\");\n\n  // 使用优化的状态追踪器\n  const stateTracker = new MarkdownBlockStateTracker(lines);\n  const trimmedLines = stateTracker.getTrimmedLines();\n\n  for (let i = 0; i < trimmedLines.length; i++) {\n    const line = trimmedLines[i];\n\n    if (nestCount > 0) {\n      if (stateTracker.isBareBacktickLine(i)) {\n        // 处理裸反引号行\n        const remainingBareBackticks =\n          stateTracker.getRemainingBareBackticksAfter(i);\n\n        if (remainingBareBackticks === 0) {\n          nestCount = 0;\n          lines[i] = \"~~~\";\n        }\n      }\n    }\n  }\n};\n```\n\n## 8. 错误处理与恢复\n\n### 8.1 FatalErrorNotice 组件\n\n`FatalErrorNotice` 组件负责展示致命错误状态，提供用户恢复选项。 资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-60]()\n\n```mermaid\ngraph TD\n    A[检测到错误状态] --> B[显示错误提示]\n    B --> C{配置加载中?}\n    C -->|是| D[显示 \"Reloading...\"]\n    C -->|否| E[显示操作选项]\n    E --> F[帮助文档链接]\n    E --> G[重新加载按钮]\n    E --> H{当前路径非配置页?} \n    H -->|是| I[显示查看按钮]\n```\n\n### 8.2 恢复机制\n\n| 操作 | 触发方式 | 功能 |\n|------|----------|------|\n| 帮助 | 点击\"Help\"链接 | 打开故障排除文档 |\n| 重新加载 | 点击\"Reload\" | 刷新配置和模型 |\n| 查看 | 点击\"View\" | 导航到配置页面 |\n\n## 9. 插件集成架构\n\n### 9.1 IDE 特定配置\n\n系统通过环境检测支持不同的 IDE 集成。以 JetBrains 为例，通过 `localStorage` 设置 IDE 标识。 资料来源：[extensions/intellij/src/main/resources/webview/index.html:1-20]()\n\n```html\n<!doctype html>\n<html lang=\"en\">\n  <head>\n    <script>\n      localStorage.setItem('ide', '\"jetbrains\"');\n    </script>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n  </body>\n</html>\n```\n\n### 9.2 跨平台支持矩阵\n\n| IDE | 集成方式 | 特定功能 |\n|-----|----------|----------|\n| VS Code | 官方扩展 | 内置模型选择器 |\n| JetBrains | Webview 集成 | IDE 标识注入 |\n| CLI | 终端 UI | React Ink 组件 |\n\n## 10. 总结\n\nContinue 的系统架构体现了现代 AI 编程助手的典型设计模式：\n\n1. **分层解耦**：通过 GUI、CLI、核心层和二进制层的清晰分离，实现业务逻辑与界面渲染的解耦\n2. **状态驱动**：Redux 统一管理应用状态，支持复杂的会话管理和实时更新\n3. **命令模式**：Slash 命令系统提供了直观的命令行交互接口\n4. **组件化设计**：React 组件库支持灵活的功能组合和扩展\n5. **性能优化**：通过早期返回、选择器缓存等策略确保响应性能\n\n该架构为 Continue 的跨平台支持和持续迭代奠定了坚实基础。\n\n---\n\n<a id='communication-protocols'></a>\n\n## 通信协议与消息传递\n\n### 相关页面\n\n相关主题：[系统架构设计](#system-architecture), [VSCode扩展](#vscode-extension)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/protocol/index.ts](https://github.com/continuedev/continue/blob/main/core/protocol/index.ts)\n- [core/protocol/webview.ts](https://github.com/continuedev/continue/blob/main/core/protocol/webview.ts)\n- [core/protocol/ide.ts](https://github.com/continuedev/continue/blob/main/core/protocol/ide.ts)\n- [core/protocol/messenger/index.ts](https://github.com/continuedev/continue/blob/main/core/protocol/messenger/index.ts)\n- [binary/src/IpcMessenger.ts](https://github.com/continuedev/continue/blob/main/binary/src/IpcMessenger.ts)\n</details>\n\n# 通信协议与消息传递\n\n## 概述\n\nContinue 项目采用分层消息传递架构，通过标准化的协议定义和 IPC（进程间通信）机制实现 GUI、CLI、IDE 扩展与核心逻辑模块之间的通信。核心协议定义位于 `core/protocol` 目录，消息路由由 `IdeMessenger` 类统一管理，二进制层通过 `IpcMessenger` 实现底层数据传输。\n\n该架构的设计目标包括：\n\n- **解耦通信**：各模块通过消息接口而非直接依赖进行交互\n- **跨进程支持**：支持在多个进程中运行并保持消息同步\n- **类型安全**：通过 TypeScript 类型定义确保消息载荷的结构正确性\n\n## 核心协议定义\n\n### 协议入口文件\n\n`core/protocol/index.ts` 是协议的统一导出入口，集中管理所有消息类型的定义和传输层配置。该文件定义了基础的消息接口、协议常量以及各子模块的类型聚合。\n\n资料来源：[core/protocol/index.ts:1-50]()\n\n### WebView 协议\n\nWebView 协议定义了前端 GUI 组件与后端核心之间的通信消息。WebView 作为浏览器内运行的 UI 层，需要通过 `postMessage` API 与扩展宿主环境交互。\n\n| 消息类型 | 方向 | 用途 |\n|---------|------|------|\n| `toWebview` | 后端 → GUI | 向前端推送状态更新、工具执行结果 |\n| `fromWebview` | GUI → 后端 | 从前端接收用户操作、上下文请求 |\n\n资料来源：[core/protocol/webview.ts:1-80]()\n\n### IDE 协议\n\nIDE 协议封装了与集成开发环境相关的所有交互操作，包括文件读写、终端命令执行、诊断信息获取等。\n\n```typescript\n// IDE 消息定义示例结构\ninterface IdeProtocol {\n  // 文件操作\n  readFile: (path: string) => Promise<string>;\n  writeFile: (path: string, content: string) => Promise<void>;\n  \n  // 终端操作\n  runTerminalCommand: (cmd: string) => Promise<string>;\n  \n  // UI 操作\n  showNotification: (msg: string) => void;\n  openUrl: (url: string) => void;\n}\n```\n\n资料来源：[core/protocol/ide.ts:1-120]()\n\n## 消息传递机制\n\n### IdeMessenger 类\n\n`IdeMessenger` 是 Continue 项目中的核心消息路由器，负责协调不同协议层之间的消息流转。该类封装了消息的发送、接收和路由逻辑，提供了统一的事件分发接口。\n\n```mermaid\ngraph TD\n    A[GUI 组件] -->|fromWebview 消息| B[IdeMessenger]\n    C[CLI 扩展] -->|IDE 协议| B\n    D[IDE 扩展] -->|WebView 协议| B\n    B -->|路由| E{消息类型判断}\n    E -->|工具调用| F[工具执行器]\n    E -->|配置更新| G[配置管理器]\n    E -->|状态查询| H[状态缓存]\n    F -->|结果| B\n    G -->|反馈| B\n```\n\nIdeMessenger 的核心职责：\n\n1. **消息序列化与反序列化**：将 TypeScript 对象转换为可传输的协议格式\n2. **路由分发**：根据消息类型将请求分发到对应的处理器\n3. **响应管理**：维护请求-响应映射，支持异步消息回调\n4. **错误处理**：统一处理通信过程中的异常情况\n\n资料来源：[core/protocol/messenger/index.ts:1-150]()\n\n### IPC 通信层\n\n`IpcMessenger` 运行在二进制层，负责底层进程间通信的实现。该类封装了操作系统级别的 IPC 机制，提供了可靠的消息传输通道。\n\n```mermaid\ngraph LR\n    A[主进程] -->|序列化| B[IpcMessenger]\n    B -->|管道/套接字| C[传输通道]\n    C -->|反序列化| D[子进程]\n    D -->|响应| C\n    C -->|响应| B\n    B -->|回调| A\n```\n\nIpcMessenger 支持的传输机制：\n\n| 传输方式 | 适用场景 | 特性 |\n|---------|---------|------|\n| 标准输入/输出 | 父子进程通信 | 简单可靠，适合单向流 |\n| 命名管道 | 跨进程实时通信 | 低延迟，支持双向流 |\n| Unix 套接字 | 高并发场景 | 性能最优，支持多客户端 |\n\n资料来源：[binary/src/IpcMessenger.ts:1-100]()\n\n## 消息类型系统\n\n### 工具调用消息\n\n工具调用是消息传递系统最重要的应用场景之一。当用户触发代码编辑、文件操作等请求时，消息系统负责将这些请求传递到对应的处理模块。\n\n```typescript\n// 工具调用消息结构\ninterface ToolCallMessage {\n  id: string;\n  tool: \"Read\" | \"Edit\" | \"Write\" | \"Bash\" | ...;\n  params: Record<string, unknown>;\n  context?: ContextItem[];\n}\n```\n\n消息流程：\n\n1. GUI 层通过 `ideMessenger.post(\"toolCall\", toolCallMessage)` 发送请求\n2. 核心层接收消息并分发到工具执行器\n3. 执行器调用相应 IDE 协议方法\n4. 执行结果通过 `toWebview` 消息返回前端\n\n### 配置管理消息\n\n配置变更需要实时同步到所有相关模块。消息系统处理配置文件的读取、验证和热更新。\n\n```mermaid\nsequenceDiagram\n    participant GUI as GUI 组件\n    participant IM as IdeMessenger\n    participant CM as 配置管理器\n    participant Cache as 状态缓存\n\n    GUI->>IM: 请求配置更新\n    IM->>CM: 验证新配置\n    CM-->>IM: 验证结果\n    IM->>Cache: 同步状态\n    IM-->>GUI: 配置已更新\n```\n\n### 上下文传递消息\n\n在代码补全和分析场景中，需要将当前编辑器状态、选中代码等上下文信息传递给模型。上下文消息的序列化采用高效二进制格式以减少传输开销。\n\n## 错误处理与重试\n\n消息传递系统实现了完整的错误处理机制：\n\n| 错误类型 | 处理策略 | 重试机制 |\n|---------|---------|---------|\n| 传输超时 | 返回错误响应 | 自动重试 3 次 |\n| 序列化失败 | 记录日志并丢弃 | 不重试 |\n| 目标不可达 | 缓存消息等待重连 | 后台队列重试 |\n| 权限拒绝 | 返回权限错误 | 提示用户授权 |\n\n## 性能优化\n\n消息传递系统采用以下优化策略：\n\n1. **批量处理**：合并高频小消息为批量请求\n2. **流式传输**：大文件内容使用流式 API\n3. **懒加载**：按需加载非关键协议模块\n4. **缓存复用**：热点消息结果缓存避免重复处理\n\n资料来源：[core/protocol/messenger/index.ts:80-150]()\n\n## 扩展机制\n\n第三方开发者可以通过以下方式扩展消息系统：\n\n1. **自定义工具协议**：在 `core/protocol` 下添加新的协议定义文件\n2. **消息中间件**：注册预处理/后处理钩子\n3. **传输层适配器**：实现 `IpcAdapter` 接口支持新的传输方式\n\n## 总结\n\nContinue 的通信协议与消息传递系统采用分层架构设计，通过标准化的协议定义和统一的 `IdeMessenger` 路由层，实现了 GUI、CLI、IDE 扩展与核心逻辑之间的高效通信。IPC 层确保了跨进程场景下的可靠传输，而丰富的错误处理和性能优化机制保证了系统的稳定性与响应速度。\n\n---\n\n<a id='llm-integration'></a>\n\n## LLM集成架构\n\n### 相关页面\n\n相关主题：[模型提供商支持](#model-providers), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n- [gui/src/components/console/Details.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/console/Details.tsx)\n- [gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n</details>\n\n# LLM集成架构\n\nContinue 是一个开源的 AI 编程助手，其核心功能之一是通过模块化的 LLM 集成架构实现与多种大语言模型的无缝对接。本页面详细说明 Continue 项目中 LLM 集成的整体架构、核心组件、配置管理以及运行时交互机制。\n\n## 1. 架构概述\n\nContinue 的 LLM 集成架构采用分层设计，将模型调用、消息处理、流式输出和工具支持解耦为独立模块。这种设计使得系统能够支持多种 LLM 提供商（如 OpenAI、Anthropic、Local 模型等），同时保持核心逻辑的一致性。\n\n### 1.1 核心设计原则\n\n| 设计原则 | 说明 |\n|---------|------|\n| **抽象层隔离** | 通过统一的接口抽象不同 LLM 提供商的差异 |\n| **配置驱动** | 模型选择和参数通过配置文件动态管理 |\n| **流式优先** | 支持流式输出以提供实时响应体验 |\n| **工具集成** | 原生支持 Function Calling 和 Tool Use |\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n### 1.2 架构分层图\n\n```mermaid\ngraph TD\n    subgraph \"表现层 (GUI/CLI)\"\n        A[模型选择界面] --> B[模型配置卡片]\n        C[对话控制台] --> D[输出展示组件]\n    end\n    \n    subgraph \"业务逻辑层\"\n        E[System Message 生成器] --> F[消息模板引擎]\n        G[Token 统计服务] --> H[会话管理]\n    end\n    \n    subgraph \"LLM 集成层\"\n        I[LLM 抽象接口] --> J[模型实现]\n        K[流式处理器] --> L[响应解析器]\n    end\n    \n    subgraph \"基础设施层\"\n        M[配置文件加载器] --> N[环境变量管理]\n        O[密钥存储] --> P[网络请求]\n    end\n    \n    A --> E\n    C --> G\n    F --> I\n    H --> K\n    M --> I\n```\n\n## 2. 模型配置与选择\n\n### 2.1 模型角色体系\n\nContinue 将 LLM 按照功能角色进行分类，每种角色承担特定的 AI 任务：\n\n| 角色 | 功能描述 | 使用场景 |\n|------|---------|---------|\n| **chat** | 对话模型 | 聊天交互、问题回答 |\n| **autocomplete** | 代码补全 | 实时代码补全建议 |\n| **edit** | 代码编辑 | 代码转换和修改 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n\n### 2.2 模型卡片组件\n\n`ModelCard` 组件负责渲染单个模型的配置卡片，包含以下关键信息：\n\n```typescript\ninterface ModelCardProps {\n  title: string;           // 模型显示名称\n  description: string;     // 模型描述\n  icon?: string;           // 模型图标路径\n  tags?: string[];         // 模型特性标签\n  dimensions?: Dimension[];  // 可配置参数维度\n  providerOptions?: Option[]; // 提供商选项\n  refUrl?: string;         // 文档链接\n}\n```\n\n资料来源：[gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n\n### 2.3 模型选择流程图\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant GUI as 模型选择界面\n    participant Config as 配置管理器\n    participant LLM as LLM 集成层\n    \n    User->>GUI: 选择模型角色\n    GUI->>Config: 获取该角色可用模型列表\n    Config-->>GUI: 返回 modelsByRole\n    User->>GUI: 选择具体模型\n    GUI->>Config: 更新 selectedModelByRole\n    Config->>LLM: 初始化模型实例\n    LLM-->>GUI: 模型就绪确认\n```\n\n## 3. System Message 生成机制\n\n### 3.1 概述\n\n`systemMessage.ts` 是 LLM 集成架构中的核心模块，负责为每次 LLM 请求生成系统提示词（System Prompt）。它根据运行模式、用户配置和规则动态组装系统消息内容。\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n### 3.2 系统消息组装逻辑\n\n```mermaid\ngraph LR\n    A[基础配置] --> B{headless 模式?}\n    B -->|是| C[添加简洁响应指令]\n    B -->|否| D{format = json?}\n    D -->|是| E[添加 JSON 输出指令]\n    D -->|否| F{有规则内容?}\n    F -->|是| G[添加 userRules 上下文]\n    F -->|否| H[基础系统消息]\n    C --> I[最终系统消息]\n    E --> I\n    G --> I\n    H --> I\n```\n\n### 3.3 运行模式差异\n\n| 模式 | 说明 | 系统消息特点 |\n|------|------|-------------|\n| **GUI 模式** | 图形界面交互 | 包含完整上下文和规则 |\n| **Headless 模式** | 命令行无界面 | 仅返回最终答案，无解释 |\n| **JSON 模式** | 结构化输出 | 强制返回有效 JSON |\n\n## 4. 对话与输出管理\n\n### 4.1 IntroMessage 组件\n\n`IntroMessage` 组件负责在 CLI 界面中展示当前会话的基本信息，包括：\n\n- **配置名称**：当前使用的配置集名称\n- **模型信息**：选定的模型名称（显示为不带前缀的简称）\n- **模型能力**：检查模型是否支持必要功能\n\n```typescript\n// 模型名称提取逻辑\n<Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n```\n\n资料来源：[extensions/cli/src/ui/IntroMessage.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/IntroMessage.tsx)\n\n### 4.2 会话详情组件\n\n`Details` 组件展示对话交互的统计信息和结果内容：\n\n```typescript\ninterface InteractionDetails {\n  summary: {\n    tokensPerSecond: number;  // Token 处理速度\n    totalTime: number;        // 总耗时\n    costBreakdown?: {         // 成本明细\n      breakdown: string;\n    };\n  };\n  interaction: {\n    start?: StartItem;        // 起始标记\n    results: ResultGroup[];   // 结果组\n    end?: EndItem;            // 结束标记\n  };\n}\n```\n\n资料来源：[gui/src/components/console/Details.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/console/Details.tsx)\n\n### 4.3 输出展示流程\n\n```mermaid\ngraph TD\n    A[LLM 响应流] --> B{解析响应类型}\n    B -->|Start| C[渲染开始标记]\n    B -->|Result| D[渲染结果组]\n    B -->|End| E[渲染结束标记]\n    B -->|Streaming| F[实时更新内容]\n    \n    C --> G[更新 UI]\n    D --> G\n    E --> G\n    F --> G\n    \n    G --> H[计算统计信息]\n    H --> I[显示 Tokens/s]\n    H --> J[显示总耗时]\n```\n\n## 5. Token 统计与监控\n\n### 5.1 统计页面架构\n\n`stats.tsx` 提供每日和按模型的 Token 使用统计：\n\n| 统计维度 | 数据字段 |\n|---------|---------|\n| **每日统计** | day, generatedTokens, promptTokens |\n| **按模型统计** | model, generatedTokens, promptTokens |\n\n资料来源：[gui/src/pages/stats.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/stats.tsx)\n\n### 5.2 资源监控数据模型\n\n```typescript\ninterface ResourceSummary {\n  peak: {\n    memory: number;  // 峰值内存使用\n    cpu: number;     // 峰值 CPU 使用率\n  };\n  average: {\n    memory: number;  // 平均内存使用\n    cpu: number;     // 平均 CPU 使用率\n  };\n}\n```\n\n资料来源：[extensions/cli/src/ui/components/ResourceDebugBar.tsx](https://github.com/continuedev/continue/blob/main/extensions/cli/src/ui/components/ResourceDebugBar.tsx)\n\n## 6. 配置管理与错误处理\n\n### 6.1 致命错误通知\n\n当 LLM 配置加载失败时，系统通过 `FatalErrorNotice` 组件展示错误信息：\n\n```typescript\ninterface FatalErrorProps {\n  error: Error | undefined;\n  configLoading: boolean;\n  currentPath: CONFIG_ROUTES;\n}\n```\n\n错误处理流程：\n1. 检测配置加载状态\n2. 识别错误类型（模型不可用/配置格式错误）\n3. 显示用户友好的错误提示\n4. 提供\"重新加载\"和\"查看配置\"操作\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/config/FatalErrorNotice.tsx)\n\n### 6.2 配置加载状态图\n\n```mermaid\nstateDiagram-v2\n    [*] --> Loading: 初始化\n    Loading --> Success: 配置加载完成\n    Loading --> Error: 加载失败\n    Success --> Reloading: 用户点击重新加载\n    Reloading --> Success: 重新加载成功\n    Reloading --> Error: 重新加载失败\n    Error --> Loading: 用户点击重新加载\n```\n\n## 7. 关键技术特性\n\n### 7.1 多提供商支持\n\nContinue 通过统一的抽象接口支持多种 LLM 提供商：\n\n- **云端模型**：OpenAI GPT 系列、Anthropic Claude 系列\n- **本地模型**：Ollama、LM Studio 等本地部署方案\n- **自定义端点**：支持 OpenAI 兼容 API\n\n### 7.2 工具调用集成\n\n系统支持 Function Calling 功能，使 LLM 能够调用预定义的工具函数：\n\n```typescript\n// 工具调用上下文格式\n<context name=\"tools\">\n[{\"name\": \"toolName\", \"description\": \"...\", \"parameters\": {...}}]\n</context>\n```\n\n### 7.3 提交签名集成\n\n在 Git 操作中自动添加提交签名信息：\n\n```typescript\n<context name=\"commitSignature\">\nGenerated with [Continue](https://continue.dev)\nCo-Authored-By: Continue <noreply@continue.dev>\n</context>\n```\n\n资料来源：[extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n\n## 8. 总结\n\nContinue 的 LLM 集成架构通过分层设计实现了高度的灵活性和可扩展性。核心设计包括：\n\n| 层面 | 职责 | 关键文件 |\n|------|------|---------|\n| 表现层 | 用户交互与展示 | ModelCard, Details, IntroMessage |\n| 配置层 | 模型配置管理 | ModelsSection, FatalErrorNotice |\n| 消息层 | System Prompt 生成 | systemMessage.ts |\n| 统计层 | 使用量与性能监控 | stats.tsx, ResourceDebugBar |\n\n该架构使得 Continue 能够无缝集成多种 LLM 提供商，同时保持一致的用户体验和开发接口。\n\n---\n\n<a id='model-providers'></a>\n\n## 模型提供商支持\n\n### 相关页面\n\n相关主题：[LLM集成架构](#llm-integration)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/llm/llms/index.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/index.ts)\n- [core/llm/llms/OpenAI.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/OpenAI.ts)\n- [core/llm/llms/Anthropic.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/Anthropic.ts)\n- [core/llm/llms/Ollama.ts](https://github.com/continuedev/continue/blob/main/core/llm/llms/Ollama.ts)\n- [packages/openai-adapters/src/apis/OpenAI.ts](https://github.com/continuedev/continue/blob/main/packages/openai-adapters/src/apis/OpenAI.ts)\n- [gui/src/components/modelSelection/ModelCard.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/modelSelection/ModelCard.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [extensions/cli/src/slashCommands.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/slashCommands.ts)\n</details>\n\n# 模型提供商支持\n\n## 概述\n\nContinue 是一款开源的 AI 编程助手，支持多种大语言模型（LLM）提供商。通过统一的抽象层，Continue 能够集成 OpenAI、Anthropic、Ollama 等主流模型服务，同时保持配置的一致性和扩展性。模型提供商支持是 Continue 的核心功能之一，使用户能够灵活选择最适合其工作流程的 AI 模型。\n\n模型配置系统采用角色分离架构，将模型按用途分为**聊天（Chat）**、**自动补全（Autocomplete）** 和**编辑（Edit）** 三种角色，每种角色可以独立配置不同的提供商和模型实例。这种设计允许开发者在不同场景下使用最合适的模型，例如使用高性能模型进行复杂代码审查，使用轻量级模型进行代码补全以降低延迟和成本。\n\n## 架构设计\n\n### 核心模块结构\n\nContinue 的模型支持系统采用分层架构，从底层到上层依次为：\n\n1. **适配器层（Adapter Layer）**：处理不同 API 提供商的协议差异，将请求标准化\n2. **模型实现层（Model Implementation Layer）**：封装各提供商的 SDK 和 API 调用逻辑\n3. **模型工厂层（Model Factory Layer）**：根据配置动态创建模型实例\n4. **配置管理层（Configuration Layer）**：管理模型配置、凭证和环境变量\n\n```mermaid\ngraph TD\n    A[用户配置] --> B[Config Models]\n    B --> C[Model Factory]\n    C --> D{Provider Type}\n    D -->|OpenAI| E[OpenAI Adapter]\n    D -->|Anthropic| F[Anthropic Adapter]\n    D -->|Ollama| G[Ollama Adapter]\n    E --> H[统一 LLM 接口]\n    F --> H\n    G --> H\n    H --> I[Continue Core]\n```\n\n### 适配器模式\n\nContinue 大量使用适配器模式来处理不同 API 提供商之间的差异。核心适配器接口定义了统一的请求和响应格式，各提供商适配器负责将标准化请求转换为特定 API 的格式。这种设计使得添加新的模型提供商变得简单，只需实现相应的适配器接口即可，无需修改上层业务逻辑。\n\n```mermaid\nclassDiagram\n    class LLMAdapter {\n        <<interface>>\n        +complete(): Promise~Completion~\n        +chat(): Promise~ChatResponse~\n        +stream(): AsyncIterator~StreamChunk~\n    }\n    \n    class OpenAIAdapter {\n        +apiKey: string\n        +baseUrl: string\n        +complete()\n        +chat()\n    }\n    \n    class AnthropicAdapter {\n        +apiKey: string\n        +complete()\n        +chat()\n    }\n    \n    class OllamaAdapter {\n        +baseUrl: string\n        +complete()\n        +chat()\n    }\n    \n    LLMAdapter <|.. OpenAIAdapter\n    LLMAdapter <|.. AnthropicAdapter\n    LLMAdapter <|.. OllamaAdapter\n```\n\n## 支持的模型提供商\n\n### 提供商类型对比\n\n| 提供商 | API 类型 | 本地部署 | 流式响应 | 多模态支持 | 配置复杂度 |\n|--------|----------|----------|----------|------------|------------|\n| OpenAI | REST | ❌ | ✅ | ✅ | 低 |\n| Anthropic | REST | ❌ | ✅ | ✅ | 低 |\n| Ollama | REST | ✅ | ✅ | ✅ | 中 |\n| Azure OpenAI | REST | ❌ | ✅ | ✅ | 高 |\n| 本地模型 | 多种 | ✅ | 视实现 | 视模型 | 高 |\n\n### OpenAI 支持\n\nOpenAI 是 Continue 默认且最广泛支持的模型提供商。通过 `packages/openai-adapters/src/apis/OpenAI.ts` 中的适配器实现，Continue 支持 OpenAI 全系列模型，包括 GPT-4、GPT-4 Turbo、GPT-3.5 Turbo 等。\n\nOpenAI 适配器的核心功能包括：\n\n- **基础 URL 配置**：支持标准 OpenAI API 端点和自定义代理\n- **API 密钥管理**：通过环境变量或配置文件安全存储\n- **组织标识**：支持多组织账户的计费归属\n- **请求超时控制**：可配置的请求超时和重试机制\n- **Token 计数**：内置 token 用量统计和成本估算\n\n配置 OpenAI 模型需要提供以下参数：\n\n```yaml\nmodels:\n  - name: gpt-4\n    provider: openai\n    api_key: ${OPENAI_API_KEY}\n    api_base: https://api.openai.com/v1\n```\n\n### Anthropic 支持\n\nAnthropic 提供的 Claude 系列模型以其长上下文窗口和强大的推理能力著称。Continue 通过专门的适配器模块 `core/llm/llms/Anthropic.ts` 实现对 Claude 模型的支持。\n\nAnthropic 模型的主要特点：\n\n- **超长上下文**：支持高达 200K token 的上下文窗口\n- **工具使用**：原生支持函数调用和工具使用能力\n- **系统提示优化**：针对系统消息有专门的优化处理\n- **安全过滤**：内置内容安全过滤机制\n\nAnthropic 适配器实现的核心接口与 OpenAI 类似，但针对 Claude 的 API 规范进行了适配。关键差异包括消息格式的转换、停止序列的处理方式，以及流式响应的解析逻辑。\n\n### Ollama 本地部署支持\n\nOllama 是一个开源的本地模型运行框架，Continue 通过 `core/llm/llms/Ollama.ts` 提供完整支持。Ollama 支持使用户能够在本地机器上运行各种开源模型，如 Llama 2、Mistral、Codellama 等，无需依赖云端 API。\n\nOllama 配置的优势：\n\n- **隐私保护**：所有数据均在本地处理，不外传\n- **成本降低**：无需支付 API 调用费用\n- **离线可用**：无网络连接时仍可使用\n- **自定义模型**：支持导入和微调自定义模型\n- **低延迟**：本地推理通常具有更低的响应延迟\n\nOllama 适配器需要配置本地服务地址，默认情况下指向 `http://localhost:11434`。首次使用前需确保 Ollama 服务已在后台运行。\n\n## 模型角色配置\n\n### 角色定义\n\nContinue 将模型使用场景分为三种角色，每种角色针对特定任务进行了优化：\n\n| 角色 | 用途 | 延迟要求 | 成本考虑 | 推荐模型 |\n|------|------|----------|----------|----------|\n| Chat | 对话交互、代码解释、问答 | 中等 | 高 | GPT-4、Claude |\n| Autocomplete | 实时代码补全 | 极低 | 低 | GPT-3.5 Turbo、Code Llama |\n| Edit | 代码转换、重构、生成 | 低 | 中 | GPT-4、Claude |\n\n### 角色配置界面\n\n模型角色配置通过 `gui/src/pages/config/sections/ModelsSection.tsx` 组件实现用户界面。该组件提供直观的配置选项，允许用户：\n\n1. **选择活跃模型**：为每个角色选择当前使用的模型\n2. **查看模型信息**：显示模型名称、提供商、描述和标签\n3. **配置模型参数**：调整温度、最大 token 等生成参数\n4. **访问文档链接**：提供模型配置文档的快速访问\n\n```typescript\n// 角色配置数据结构\ninterface ModelRoleConfig {\n  chat: ModelConfig[];\n  autocomplete: ModelConfig[];\n  edit: ModelConfig[];\n}\n\n// 模型配置项\ninterface ModelConfig {\n  name: string;\n  provider: ProviderType;\n  apiKey?: string;\n  apiBase?: string;\n  model: string;\n  temperature?: number;\n  maxTokens?: number;\n  contextLength?: number;\n}\n```\n\n### 角色特定配置项\n\n不同角色支持不同的配置参数，这些参数影响模型的生成行为：\n\n**聊天角色（Chat）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| temperature | number | 0.7 | 生成随机性控制 |\n| maxTokens | number | 4096 | 最大输出 token 数 |\n| contextLength | number | 16384 | 上下文窗口大小 |\n| presencePenalty | number | 0 | 话题新鲜度惩罚 |\n| frequencyPenalty | number | 0 | 重复 token 惩罚 |\n\n**自动补全角色（Autocomplete）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| temperature | number | 0.5 | 较低以保持一致性 |\n| maxTokens | number | 256 | 补全长度限制 |\n| n | number | 1 | 候选补全数量 |\n| stop | string[] | [] | 停止序列 |\n\n**编辑角色（Edit）**\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|------|------|\n| temperature | number | 0.3 | 低温度保持精确 |\n| maxTokens | number | 2048 | 编辑建议长度 |\n| diffFormat | boolean | true | 是否返回 diff 格式 |\n\n## 模型选择交互\n\n### 斜杠命令\n\n用户可以通过斜杠命令快速切换模型。`extensions/cli/src/slashCommands.ts` 文件中定义了 `/model` 命令，该命令打开模型选择器界面。\n\n```typescript\n// slashCommands.ts 中的模型命令定义\nconst slashCommandHandlers = {\n  model: () => ({ openModelSelector: true }),\n  // ... 其他命令\n};\n```\n\n支持的相关命令：\n\n| 命令 | 功能 | 快捷键 |\n|------|------|--------|\n| `/model` | 打开模型选择器 | - |\n| `/config` | 打开配置选择器 | - |\n| `/whoami` | 显示当前配置和模型信息 | - |\n| `/info` | 显示详细模型和系统信息 | - |\n\n### 模型选择器界面\n\n模型选择器由 `gui/src/components/modelSelection/ModelCard.tsx` 组件实现。该组件展示可用模型的详细信息，包括：\n\n- **模型图标**：根据提供商显示对应的品牌图标\n- **模型名称**：包含提供商前缀，如 `openai/gpt-4`\n- **模型描述**：简要说明模型的适用场景\n- **评估维度**：可选的能力评估指标，如代码生成、数学推理等\n- **文档链接**：指向官方文档的链接\n- **配置标签**：如免费、API 密钥要求等\n\n```mermaid\ngraph LR\n    A[用户输入 /model] --> B[打开模型选择器]\n    B --> C[显示所有可用模型]\n    C --> D{用户选择}\n    D -->|标准模型| E[验证 API 密钥]\n    D -->|本地模型| F[验证 Ollama 连接]\n    E --> G[更新配置]\n    F --> G\n    G --> H[刷新界面显示]\n```\n\n## 模型信息展示\n\n### 启动消息\n\n`gui/src/components/StyledMarkdownPreview/IntroMessage.tsx` 组件在会话启动时显示当前模型配置信息。该组件展示：\n\n- **配置名称**：当前使用的配置集名称\n- **模型名称**：显示当前活跃模型的简称\n- **加载状态**：模型信息未加载时显示加载指示器\n\n```tsx\n// 模型信息展示逻辑\n{model ? (\n  <Text color=\"blue\">\n    <Text bold>Model:</Text>{\" \"}\n    <Text color=\"white\">{model.name.split(\"/\").pop()}</Text>\n  </Text>\n) : (\n  <Text color=\"blue\">\n    <Text bold>Model:</Text> <Text color=\"dim\">Loading...</Text>\n  </Text>\n)}\n```\n\n### 模型能力警告\n\n当选定的模型可能不具备特定任务所需的能力时，系统会显示警告信息。这通过 `ModelCapabilityWarning` 组件实现，提示用户可能需要切换到更强大的模型。\n\n### 使用统计\n\n`gui/src/pages/stats.tsx` 页面提供 Token 使用统计，帮助用户了解不同模型的使用情况：\n\n- **按日期统计**：每日 Prompt Token 和 Generated Token 数量\n- **按模型统计**：各模型的使用量和占比\n- **成本估算**：基于提供商定价的费用估算\n\n| 统计维度 | 显示内容 | 数据来源 |\n|----------|----------|----------|\n| 日 Token 使用 | 当日生成和消费的 token 总数 | 本地存储 |\n| 模型 Token 使用 | 各模型的独立使用统计 | 本地存储 |\n| 成本估算 | 基于配置价格的预估费用 | 配置信息 |\n\n## 配置管理\n\n### 配置文件结构\n\n模型提供商配置通常在 `config.json` 或 `~/.continue/config.json` 中定义：\n\n```json\n{\n  \"models\": [\n    {\n      \"title\": \"GPT-4\",\n      \"provider\": \"openai\",\n      \"model\": \"gpt-4\",\n      \"apiKey\": \"${OPENAI_API_KEY}\"\n    },\n    {\n      \"title\": \"Claude\",\n      \"provider\": \"anthropic\",\n      \"model\": \"claude-3-opus-20240229\",\n      \"apiKey\": \"${ANTHROPIC_API_KEY}\"\n    },\n    {\n      \"title\": \"Local Llama\",\n      \"provider\": \"ollama\",\n      \"model\": \"llama2\",\n      \"apiBase\": \"http://localhost:11434\"\n    }\n  ],\n  \"modelRoles\": {\n    \"chat\": \"GPT-4\",\n    \"autocomplete\": \"Local Llama\",\n    \"edit\": \"Claude\"\n  }\n}\n```\n\n### 环境变量支持\n\n敏感信息如 API 密钥通过环境变量引用，避免硬编码在配置文件中：\n\n| 变量名 | 用途 | 示例值 |\n|--------|------|--------|\n| OPENAI_API_KEY | OpenAI API 密钥 | sk-... |\n| ANTHROPIC_API_KEY | Anthropic API 密钥 | sk-ant-... |\n| OLLAMA_BASE_URL | Ollama 服务地址 | http://localhost:11434 |\n\n### 配置验证\n\n系统启动时执行配置验证，包括：\n\n1. **API 连接测试**：验证模型提供商的可达性\n2. **凭证有效性**：检查 API 密钥是否有效\n3. **模型可用性**：确认指定模型是否在账户中可用\n4. **参数合法性**：验证配置参数是否在有效范围内\n\n验证失败时，`gui/src/components/config/FatalErrorNotice.tsx` 组件显示错误通知：\n\n```tsx\n// 错误通知逻辑\n<Alert type=\"error\" className=\"mx-2 my-1 px-2\">\n  <span>{`Error loading`}</span>{\" \"}\n  <span className=\"italic\">{displayName}</span>\n  {\". \"}\n  <span>{`Chat is disabled until a model is available.`}</span>\n</Alert>\n```\n\n## 系统消息集成\n\n`extensions/cli/src/systemMessage.ts` 文件负责生成发送给模型的系统消息，其中包含与模型相关的配置信息：\n\n### 凭证注入\n\n当检测到特定环境变量时，系统会在系统消息中注入上下文信息：\n\n```typescript\n// 凭证上下文注入逻辑\nif (!process.env.CONTINUE_DISABLE_COMMIT_SIGNATURE) {\n  systemMessage += `\\n<context name=\"commitSignature\">\nGenerated with [Continue](https://continue.dev)\n\nCo-Authored-By: Continue <noreply@continue.dev>\n</context>\\n`;\n}\n```\n\n### 角色规则传递\n\n模型角色相关的规则通过系统消息传递给 AI：\n\n```typescript\n// 规则上下文添加\nif (agentContent || processedRules.length > 0) {\n  systemMessage += '\\n\\n<context name=\"userRules\">';\n  \n  if (agentContent) {\n    systemMessage += `\\n${agentContent}`;\n  }\n  \n  if (processedRules.length > 0) {\n    const separator = agentContent ? \"\\n\" : \"\";\n    systemMessage += `${separator}${processedRules.join(\"\\n\")}`;\n  }\n  \n  systemMessage += '</context>';\n}\n```\n\n## 错误处理与恢复\n\n### 模型不可用处理\n\n当配置加载失败或模型不可用时，系统采取以下策略：\n\n1. **显示错误通知**：通过 `FatalErrorNotice` 组件显示问题描述\n2. **提供操作选项**：重试加载、查看配置或访问帮助文档\n3. **禁用聊天功能**：防止用户尝试使用未初始化的模型\n4. **记录错误日志**：便于问题诊断和调试\n\n### 连接重试机制\n\n对于网络相关错误，系统实现指数退避重试策略：\n\n```mermaid\ngraph TD\n    A[请求发送] --> B{响应状态}\n    B -->|成功| C[返回结果]\n    B -->|网络错误| D[重试计数 < 3]\n    B -->|认证错误| E[终止并报错]\n    D -->|是| F[等待 2^n 秒]\n    F --> A\n    D -->|否| G[终止并报错]\n```\n\n### 模型能力降级\n\n当首选模型不可用时，系统支持配置备用模型实现能力降级：\n\n```yaml\nmodels:\n  - name: primary-gpt4\n    provider: openai\n    model: gpt-4\n  - name: fallback-gpt35\n    provider: openai\n    model: gpt-3.5-turbo\n\nmodelRoles:\n  chat: primary-gpt4\n  # 当 primary 不可用时自动切换到 fallback\n```\n\n## 扩展开发指南\n\n### 添加新提供商\n\n要添加新的模型提供商，需要实现以下步骤：\n\n1. **创建适配器**：在 `core/llm/llms/` 目录下创建新的适配器文件\n2. **实现接口**：遵循 `LLMAdapter` 接口定义实现必要方法\n3. **注册工厂**：在模型工厂中注册新提供商的创建逻辑\n4. **配置支持**：在配置解析器中添加新提供商的配置验证\n\n```typescript\n// 新提供商适配器模板\nexport class CustomProviderAdapter implements LLMAdapter {\n  constructor(config: CustomProviderConfig) {\n    this.config = config;\n  }\n  \n  async complete(prompt: string): Promise<Completion> {\n    // 实现完成接口\n  }\n  \n  async chat(messages: Message[]): Promise<ChatResponse> {\n    // 实现聊天接口\n  }\n  \n  async *stream(prompt: string): AsyncIterator<StreamChunk> {\n    // 实现流式接口\n  }\n}\n```\n\n### 提供商配置验证\n\n新增提供商时需要在配置验证模块中添加对应的验证逻辑：\n\n| 验证项 | 检查内容 | 错误消息 |\n|--------|----------|----------|\n| API 端点 | URL 格式和可达性 | Invalid API base URL |\n| API 密钥 | 格式和必需性 | API key is required |\n| 模型名称 | 在提供商处的可用性 | Model not found |\n| 参数范围 | 温度、最大 token 等 | Parameter out of range |\n\n## 最佳实践\n\n### 模型选择建议\n\n根据不同场景推荐使用不同的模型配置：\n\n**复杂代码审查和重构**\n\n- 角色：Chat、Edit\n- 推荐模型：GPT-4、Claude 3 Opus\n- 理由：强大推理能力和上下文理解\n\n**日常代码补全**\n\n- 角色：Autocomplete\n- 推荐模型：Code Llama、GPT-3.5 Turbo\n- 理由：低延迟、低成本\n\n**隐私敏感场景**\n\n- 角色：全部\n- 推荐模型：Ollama + Llama 2\n- 理由：数据本地处理\n\n### 性能优化\n\n1. **使用流式响应**：提升用户体验 Perception\n2. **合理设置上下文**：避免加载不必要的上下文\n3. **配置合适的温度**：不同任务使用不同温度\n4. **启用本地模型**：降低 API 依赖和网络延迟\n\n### 安全建议\n\n1. **使用环境变量**：避免在配置文件中硬编码密钥\n2. **限制 API 权限**：使用最小必要范围的 API 密钥\n3. **定期轮换密钥**：周期性更换 API 密钥\n4. **监控使用量**：定期检查 Token 使用统计\n\n## 总结\n\nContinue 的模型提供商支持系统通过模块化架构和适配器模式，实现了多提供商的无缝集成。从 OpenAI、Anthropic 到本地部署的 Ollama，用户可以根据需求灵活选择最合适的 AI 模型。角色分离的配置设计使得不同场景下可以使用不同的模型优化，而完善的错误处理和恢复机制保证了系统的稳定性和可用性。\n\n---\n\n<a id='autocomplete-system'></a>\n\n## 自动补全系统\n\n### 相关页面\n\n相关主题：[上下文提供者](#context-providers), [代码库索引系统](#codebase-indexing)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/UserSettingsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/UserSettingsSection.tsx)\n- [gui/src/pages/config/sections/ModelsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/ModelsSection.tsx)\n- [packages/config-yaml/src/validation.ts](https://github.com/continuedev/continue/blob/main/packages/config-yaml/src/validation.ts)\n- [extensions/cli/src/systemMessage.ts](https://github.com/continuedev/continue/blob/main/extensions/cli/src/systemMessage.ts)\n- [gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx)\n</details>\n\n# 自动补全系统\n\n## 概述\n\n自动补全系统（Autocomplete System）是 Continue 插件的核心功能之一，为用户在编写代码时提供实时的内联代码补全建议。该系统通过专用的补全模型（Completion Model）实现，能够在用户输入时智能预测并生成代码片段。\n\n自动补全系统的主要特点包括：\n\n- **实时流式输出**：支持逐 token 流式返回补全结果，提供即时反馈\n- **多行补全支持**：可配置是否启用多行代码补全功能\n- **上下文感知**：基于当前文件内容和检索到的相关上下文进行补全\n- **灵活配置**：支持超时时间、防抖延迟等参数的自定义配置\n- **模型验证**：自动检测并警告不适合补全任务的模型\n\n## 系统架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                        自动补全系统架构                           │\n├─────────────────────────────────────────────────────────────────┤\n│                                                                 │\n│  ┌─────────────┐    ┌──────────────┐    ┌─────────────────────┐ │\n│  │   前端 UI   │───▶│ 用户设置面板 │───▶│ 补全模型配置        │ │\n│  └─────────────┘    └──────────────┘    └─────────────────────┘ │\n│                                                │                 │\n│                                                ▼                 │\n│  ┌─────────────────────────────────────────────────────────────┐│\n│  │                    核心补全引擎                              ││\n│  │  ┌─────────────┐  ┌──────────────┐  ┌────────────────────┐  ││\n│  │  │ 模板处理    │─▶│ 上下文检索   │─▶│ 流式转换管道       │  ││\n│  │  └─────────────┘  └──────────────┘  └────────────────────┘  ││\n│  └─────────────────────────────────────────────────────────────┘│\n│                                                │                 │\n│                                                ▼                 │\n│  ┌─────────────┐    ┌──────────────┐    ┌─────────────────────┐ │\n│  │   模型验证  │◀───│ 配置验证     │◀───│ YAML 配置解析       │ │\n│  └─────────────┘    └──────────────┘    └─────────────────────┘ │\n│                                                                 │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n## 核心组件\n\n### 补全模型配置\n\n自动补全功能使用专用的补全模型。与聊天模型不同，补全模型需要特别优化以支持代码补全任务。\n\n#### 模型角色配置\n\n| 角色 | 用途 | 说明 |\n|------|------|------|\n| `chat` | 对话交互 | 用于用户与 AI 的对话交流 |\n| `autocomplete` | 代码补全 | 专门用于内联代码补全 |\n| `edit` | 代码转换 | 用于转换和编辑选定的代码片段 |\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx:25-40]()\n\n#### 模型选择限制\n\n系统在配置验证阶段会对补全模型进行特殊检查，以下模型类型**不适合**用于代码补全：\n\n- `claude`\n- `mistral`\n- `instruct`\n\n除非模型名称包含 `deepseek`、`codestral` 或 `coder` 等关键字。\n\n资料来源：[packages/config-yaml/src/validation.ts:40-55]()\n\n```typescript\nconst nonAutocompleteModels = [\n  \"claude\",\n  \"mistral\",\n  \"instruct\",\n];\n\nif (\n  nonAutocompleteModels.some((m) => modelName.includes(m)) &&\n  !modelName.includes(\"deepseek\") &&\n  !modelName.includes(\"codestral\") &&\n  !modelName.toLowerCase().includes(\"coder\")\n) {\n  errors.push({\n    fatal: false,\n    message: `${model.model} is not trained for tab-autocomplete, and will result in low-quality suggestions.`,\n  });\n}\n```\n\n### 用户设置面板\n\n自动补全系统提供丰富的用户配置选项，位于设置界面的 \"Autocomplete\" 配置区段。\n\n#### 配置参数表\n\n| 参数 | 类型 | 默认值 | 取值范围 | 说明 |\n|------|------|--------|----------|------|\n| `useAutocompleteMultilineCompletions` | select | `auto` | `auto` \\| `always` \\| `never` | 控制多行补全行为 |\n| `modelTimeout` | number | - | 100-5000ms | 补全请求最大超时时间 |\n| `debounceDelay` | number | - | 0-2500ms | 触发补全请求的防抖延迟 |\n| `disableAutocompleteInFiles` | string | - | Glob 模式 | 禁用补全的文件匹配模式 |\n\n资料来源：[gui/src/pages/config/sections/UserSettingsSection.tsx:1-70]()\n\n#### 多行补全配置\n\n多行补全支持三种模式：\n\n1. **Auto（自动）**：系统根据上下文自动决定是否启用多行补全\n2. **Always（始终）**：始终启用多行补全\n3. **Never（从不）**：禁用多行补全，只生成单行建议\n\n```tsx\n<UserSetting\n  type=\"select\"\n  title=\"Multiline Autocompletions\"\n  description=\"Controls multiline completions for autocomplete.\"\n  value={useAutocompleteMultilineCompletions}\n  onChange={(value) =>\n    handleUpdate({\n      useAutocompleteMultilineCompletions: value as \"auto\" | \"always\" | \"never\",\n    })\n  }\n  options={[\n    { label: \"Auto\", value: \"auto\" },\n    { label: \"Always\", value: \"always\" },\n    { label: \"Never\", value: \"never\" },\n  ]}\n/>\n```\n\n#### 文件禁用配置\n\n用户可以通过 glob 模式指定禁用自动补全的文件：\n\n- 多个模式之间用逗号分隔\n- 示例：`**/*.(txt,md)` 禁用在所有 `.txt` 和 `.md` 文件中的补全\n- 空字符串视为未配置，所有文件启用补全\n\n```tsx\n<UserSetting\n  type=\"input\"\n  title=\"Disable autocomplete in files\"\n  description=\"List of comma-separated glob pattern to disable autocomplete in matching files.\"\n  placeholder=\"**/*.(txt,md)\"\n  value={formDisableAutocomplete}\n  onChange={setFormDisableAutocomplete}\n  onSubmit={handleDisableAutocompleteSubmit}\n  onCancel={cancelChangeDisableAutocomplete}\n  isDirty={formDisableAutocomplete !== disableAutocompleteInFiles}\n  isValid={formDisableAutocomplete.trim() !== \"\"}\n/>\n```\n\n### 本地部署配置\n\n对于使用本地模型的用户，设置界面提供了模型下载和配置功能。\n\n#### 本地补全模型\n\n| 模型用途 | 模型标识 | 说明 |\n|----------|----------|------|\n| Chat 对话 | `LOCAL_ONBOARDING_CHAT_MODEL` | 用于对话交互的本地模型 |\n| 代码补全 | `LOCAL_ONBOARDING_FIM_MODEL` | 用于代码补全的 FIM（Fill-in-the-Middle）模型 |\n| 向量嵌入 | `LOCAL_ONBOARDING_EMBEDDINGS_MODEL` | 用于语义检索的嵌入模型 |\n\n资料来源：[gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx:15-35]()\n\n```tsx\n<OllamaModelDownload\n  title=\"Download Autocomplete model\"\n  modelName={LOCAL_ONBOARDING_FIM_MODEL}\n  hasDownloaded={hasDownloadedAutocompleteModel}\n/>\n```\n\n## 配置验证\n\n### 模型兼容性检查\n\n系统通过 `packages/config-yaml/src/validation.ts` 中的验证逻辑确保用户配置的补全模型适合代码补全任务。\n\n#### 验证流程\n\n```mermaid\ngraph TD\n    A[加载模型配置] --> B{检查模型名称}\n    B -->|包含 claude/mistral/instruct| C{检查特殊关键字}\n    C -->|包含 deepseek/codestral/coder| D[验证通过]\n    C -->|不包含特殊关键字| E[生成警告信息]\n    D --> F[完成验证]\n    E --> F\n    B -->|其他模型| D\n```\n\n#### 警告信息\n\n当检测到不推荐的模型时，系统会生成以下格式的警告：\n\n```json\n{\n  \"fatal\": false,\n  \"message\": \"{model} is not trained for tab-autocomplete, and will result in low-quality suggestions. See the docs to learn more about why: https://docs.continue.dev/features/tab-autocomplete#i-want-better-completions-should-i-use-gpt-4\"\n}\n```\n\n资料来源：[packages/config-yaml/src/validation.ts:47-54]()\n\n## CLI 集成\n\n### 系统消息生成\n\n在 CLI 模式下运行的 Continue 会根据配置生成相应的系统消息，告知模型当前的功能状态。\n\n#### 模型能力警告\n\n当检测到模型可能不具备最佳补全能力时，CLI 会显示相应的警告信息：\n\n```tsx\n{model && !modelCapable && (\n  <>\n    <ModelCapabilityWarning\n      modelName={model.name.split(\"/\").pop() || model.name}\n    />\n    <Text> </Text>\n  </>\n)}\n```\n\n资料来源：[extensions/cli/src/ui/IntroMessage.tsx:30-40]()\n\n#### 精简模式指令\n\n在无头模式（headless mode）下运行 CLI 时，系统会添加特定指令要求模型只提供最终答案：\n\n```typescript\nif (headless) {\n  systemMessage += `\nIMPORTANT: You are running in headless mode. Provide ONLY your final answer to the user's question. Do not include explanations, reasoning, or additional commentary unless specifically requested. Be direct and concise.`;\n}\n```\n\n资料来源：[extensions/cli/src/systemMessage.ts:50-55]()\n\n## 技术实现细节\n\n### 补全流程\n\n```\n用户输入 ──▶ 防抖计时器 ──▶ 上下文检索 ──▶ 模板填充 ──▶ 模型推理 ──▶ 流式输出 ──▶ UI 展示\n     │                         │              │              │\n     │                         ▼              ▼              ▼\n     │                   [ContextRetrieval] [Template] [CompletionStreamer]\n     │                         │              │              │\n     ▼                         ▼              ▼              ▼\n  防抖延迟              检索相关代码片段   构建提示词    实时流式返回\n  (debounceDelay)\n```\n\n### 防抖机制\n\n自动补全使用防抖机制来避免过于频繁的请求：\n\n- **最小延迟**：`0ms`（立即触发）\n- **最大延迟**：`2500ms`\n- **默认行为**：用户停止输入后等待指定时间再触发补全请求\n\n### 超时控制\n\n每个补全请求都有独立的超时控制：\n\n| 参数 | 值 | 说明 |\n|------|-----|------|\n| 最小超时 | 100ms | 最短等待时间 |\n| 最大超时 | 5000ms | 最长等待时间 |\n| 默认超时 | 未设置 | 由模型配置决定 |\n\n## 错误处理\n\n### 配置加载失败\n\n当配置加载失败时，界面会显示错误提示，并提供以下操作：\n\n| 操作 | 说明 |\n|------|------|\n| Help | 打开故障排除文档 |\n| Reload | 重新加载配置 |\n| View | 查看配置详情 |\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx:10-40]()\n\n### 模型能力不足\n\n系统会持续监测当前模型的补全能力，当模型不适合代码补全任务时：\n\n1. 在设置界面显示警告图标\n2. 在 CLI 界面显示 `ModelCapabilityWarning` 组件\n3. 仍允许用户使用，但建议更换模型\n\n## 配置示例\n\n### 基础配置（config.yaml）\n\n```yaml\nmodels:\n  - name: codellama\n    provider: openai\n    model: codellama-7b-instruct\n    role: autocomplete  # 指定为补全模型\n```\n\n### 完整配置示例\n\n```yaml\nmodels:\n  - name: codellama-13b\n    provider: llama\n    model: codellama-13b-instruct\n    role: autocomplete\n\n  - name: gpt-4\n    provider: openai\n    model: gpt-4\n    role: chat\n\n  - name: gpt-4\n    provider: openai\n    model: gpt-4\n    role: edit\n\nautocomplete:\n  useMultilineCompletions: auto\n  timeout: 3000\n  debounceDelay: 500\n  disableInFiles: \"**/*.txt,**/test/**\"\n```\n\n## 最佳实践\n\n### 选择合适的补全模型\n\n1. **优先选择专门的代码补全模型**，如：\n   - CodeLLama\n   - StarCoder\n   - Deepseek Coder\n   - Codestral\n\n2. **避免使用通用对话模型**进行代码补全\n\n3. **本地部署建议使用 FIM 模型**，以获得最佳的补全效果\n\n### 性能优化\n\n| 场景 | 建议配置 |\n|------|----------|\n| 低配置设备 | 增加 `debounceDelay` 至 1000-1500ms |\n| 高延迟网络 | 增加 `modelTimeout` 至 3000-5000ms |\n| 需要快速响应 | 减少 `debounceDelay` 至 200-500ms |\n\n### 文件排除策略\n\n使用 glob 模式排除不需要补全的文件：\n\n- 纯文本文件：`**/*.txt`\n- 文档文件：`**/*.md`\n- 测试文件：`**/test/**`\n- 生成文件：`**/*.generated.*`\n\n## 相关文档\n\n- [Tab Autocomplete 官方文档](https://docs.continue.dev/features/tab-autocomplete)\n- [模型配置指南](https://docs.continue.dev/reference/config)\n- [故障排除](https://docs.continue.dev/troubleshooting)\n\n---\n\n<a id='codebase-indexing'></a>\n\n## 代码库索引系统\n\n### 相关页面\n\n相关主题：[上下文提供者](#context-providers), [自动补全系统](#autocomplete-system)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [gui/src/pages/config/sections/IndexingSettingsSection.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/sections/IndexingSettingsSection.tsx)\n- [gui/src/pages/config/features/indexing/IndexingProgress.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/features/indexing/IndexingProgress.tsx)\n- [gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx](https://github.com/continuedev/continue/blob/main/gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx)\n- [gui/src/components/dialogs/AddDocsDialog.tsx](https://github.com/continuedev/continue/blob/main/gui/src/components/dialogs/AddDocsDialog.tsx)\n- [sync/src/README.md](https://github.com/continuedev/continue/blob/main/sync/src/README.md)\n</details>\n\n# 代码库索引系统\n\n## 概述\n\nContinue 的代码库索引系统（Codebase Indexing System）是用于构建和维护代码库知识索引的核心组件。该系统已被标记为**已弃用（deprecated）**，官方推荐使用[代码库文档感知功能](https://docs.continue.dev/guides/codebase-documentation-awareness)替代。\n\n索引系统的核心职责包括：\n\n- 对代码库中的文件进行扫描和解析\n- 构建代码片段的索引数据库\n- 支持语义搜索和代码补全\n- 管理索引的刷新和增量更新\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n## 系统架构\n\n### 主要组件\n\n索引系统由以下几个核心模块组成：\n\n| 组件 | 文件路径 | 功能描述 |\n|------|----------|----------|\n| CodebaseIndexer | `core/indexing/CodebaseIndexer.ts` | 主索引器，协调整个索引流程 |\n| CodeSnippetsIndex | `core/indexing/CodeSnippetsIndex.ts` | 代码片段索引管理 |\n| LanceDbIndex | `core/indexing/LanceDbIndex.ts` | 基于 LanceDB 的向量索引实现 |\n| ChunkCodebaseIndex | `core/indexing/chunk/ChunkCodebaseIndex.ts` | 分块处理的索引实现 |\n| refreshIndex | `core/indexing/refreshIndex.ts` | 索引刷新逻辑 |\n\n### 架构流程图\n\n```mermaid\ngraph TD\n    A[代码库文件] --> B[CodebaseIndexer]\n    B --> C{文件类型判断}\n    C -->|代码文件| D[ChunkCodebaseIndex]\n    C -->|文档文件| E[CodeSnippetsIndex]\n    D --> F[分块处理]\n    F --> G[LanceDbIndex]\n    E --> H[向量嵌入]\n    H --> G\n    G --> I[索引数据库]\n```\n\n## 用户界面组件\n\n### 索引设置页面\n\n`IndexingSettingsSection` 组件负责展示索引相关的配置选项。该组件从 Redux store 中读取配置状态，并提供启用/禁用索引的开关功能。\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n**核心配置项：**\n\n| 配置项 | 类型 | 默认值 | 说明 |\n|--------|------|--------|------|\n| disableIndexing | boolean | false | 是否禁用索引功能 |\n\n### 索引进度展示\n\n索引进度通过以下组件进行展示：\n\n- **IndexingProgress**：主进度条组件，显示当前索引任务的状态\n- **IndexingProgressTitleText**：进度标题文本\n- **IndexingProgressIndicator**：进度指示器\n- **IndexingProgressSubtext**：进度说明文本\n- **IndexingProgressErrorText**：错误信息展示\n\n资料来源：[gui/src/pages/config/features/indexing/IndexingProgress.tsx:1-40]()\n资料来源：[gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx:1-35]()\n\n**支持的状态类型：**\n\n```typescript\ntype IndexStatus = \"loading\" | \"waiting\" | \"success\" | \"failed\";\n```\n\n### 文档添加对话框\n\n`AddDocsDialog` 组件用于添加外部文档到索引系统。用户可以指定文档标题和起始 URL。\n\n资料来源：[gui/src/components/dialogs/AddDocsDialog.tsx:1-80]()\n\n**表单字段：**\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| Title | string | 是 | 文档标题，用于在 `@docs` 子菜单中显示 |\n| Start URL | string | 是 | 文档起始 URL |\n\n## 数据同步机制\n\n### Merkle 树同步\n\n索引缓存在本地文件系统中维护，使用 Merkle 树结构来跟踪已计算的哈希值：\n\n```mermaid\ngraph TD\n    A[索引缓存] --> B[全局缓存]\n    A --> C[标签特定缓存]\n    B --> D[~/.continue/index/.index_cache]\n    C --> E[~/.continue/index/tags/&lt;dir&gt;/&lt;branch&gt;/&lt;provider_id&gt;/.index_cache]\n    A --> F[反向标签映射]\n    F --> G[~/.continue/index/rev_tags]\n```\n\n资料来源：[sync/src/README.md:1-35]()\n\n**缓存文件结构：**\n\n- `~/.continue/index/.index_cache`：包含所有已计算哈希的全局缓存\n- `~/.continue/index/tags/<dir>/<branch>/<provider_id>/.index_cache`：标签特定的缓存\n- `~/.continue/index/rev_tags`：从哈希到标签的映射，文件以哈希前两位字符为前缀\n\n### sync 模块文件说明\n\n| 文件 | 功能 |\n|------|------|\n| `lib.rs` | Python 绑定的顶层调用函数 |\n| `sync/merkle.rs` | Merkle 树实现，用于构建和比较树结构 |\n| `sync/mod.rs` | 主同步逻辑，处理标签的磁盘数据库维护 |\n\n资料来源：[sync/src/README.md:35-50]()\n\n## 配置状态管理\n\n### Redux Store 结构\n\n索引状态通过 Redux 进行管理，配置存储在 `state.config.config` 中：\n\n```typescript\ninterface IndexingConfig {\n  disableIndexing?: boolean;\n  // ... 其他配置项\n}\n```\n\n资料来源：[gui/src/pages/config/sections/IndexingSettingsSection.tsx:1-45]()\n\n### 错误处理\n\n错误信息通过 `FatalErrorNotice` 组件展示，该组件：\n\n- 显示加载错误的具体描述\n- 提供帮助文档链接（https://docs.continue.dev/troubleshooting）\n- 支持重新加载配置\n- 支持跳转到配置页面\n\n资料来源：[gui/src/components/config/FatalErrorNotice.tsx:1-60]()\n\n## 当前限制\n\n根据 sync 模块的 README 文档，索引系统存在以下已知限制：\n\n1. **仅支持本地文件**：目前无法处理 Continue 服务器与 IDE 或工作空间不在同一台机器上的情况（Remote SSH、WSL 或团队 Continue 服务器）\n\n2. **全量重新计算**：目前不使用 stat 检查文件的最近更改，而是在每次 IDE 重新加载时重新计算整个 Merkle 树。这在 Continue 代码库上耗时约 0.2 秒，性能可接受但有优化空间\n\n资料来源：[sync/src/README.md:50-60]()\n\n## 替代方案\n\n索引功能已被弃用，官方推荐的替代方案是**使代理感知代码库和文档**。相关文档请访问：\n\n- [代码库文档感知指南](https://docs.continue.dev/guides/codebase-documentation-awareness)\n\n## 相关文件索引\n\n| 类别 | 文件路径 |\n|------|----------|\n| 配置组件 | `gui/src/pages/config/sections/IndexingSettingsSection.tsx` |\n| 进度展示 | `gui/src/pages/config/features/indexing/IndexingProgress.tsx` |\n| 错误展示 | `gui/src/pages/config/features/indexing/IndexingProgressErrorText.tsx` |\n| 文档添加 | `gui/src/components/dialogs/AddDocsDialog.tsx` |\n| 错误通知 | `gui/src/components/config/FatalErrorNotice.tsx` |\n| 同步模块 | `sync/src/README.md` |\n\n---\n\n<a id='context-providers'></a>\n\n## 上下文提供者\n\n### 相关页面\n\n相关主题：[代码库索引系统](#codebase-indexing), [系统架构设计](#system-architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [core/context/providers/index.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/index.ts)\n- [core/context/providers/CodeContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/CodeContextProvider.ts)\n- [core/context/providers/RepoMapContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/RepoMapContextProvider.ts)\n- [core/context/providers/SearchContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/providers/SearchContextProvider.ts)\n- [core/context/mcp/MCPContextProvider.ts](https://github.com/continuedev/continue/blob/main/core/context/mcp/MCPContextProvider.ts)\n</details>\n\n# 上下文提供者\n\n## 概述\n\n上下文提供者（Context Provider）是 Continue 智能编程助手中的核心组件，负责为 AI 模型提供各类代码上下文信息。这些提供者使 AI 能够理解当前编辑的代码文件、项目结构、搜索结果等关键信息，从而提供更准确和相关的代码补全、建议和问题解答。\n\n## 架构设计\n\n### 核心接口\n\nContinue 中的上下文提供者都遵循统一的设计模式，每个提供者需要实现以下核心方法：\n\n| 方法 | 描述 |\n|------|------|\n| `getContextItems` | 获取该提供者管理的上下文项列表 |\n| `load` | 加载或初始化提供者所需的数据 |\n| `resolve` | 解析特定的上下文项 |\n\n### 组件层次结构\n\n```mermaid\ngraph TD\n    A[上下文提供者系统] --> B[CodeContextProvider]\n    A --> C[RepoMapContextProvider]\n    A --> D[SearchContextProvider]\n    A --> E[MCPContextProvider]\n    \n    B --> F[获取当前代码上下文]\n    C --> G[获取代码库结构]\n    D --> H[获取搜索结果]\n    E --> I[获取MCP工具结果]\n```\n\n## 内置上下文提供者\n\n### CodeContextProvider\n\n**职责**：提供当前编辑文件的代码上下文信息。\n\n`CodeContextProvider` 负责追踪用户当前正在编辑的文件，并提取相关的代码上下文。这包括：\n\n- 当前光标位置的代码片段\n- 打开文件的语法树信息\n- 相关的函数和类定义\n\n### RepoMapContextProvider\n\n**职责**：提供整个代码仓库的结构信息。\n\n该提供者通过构建代码仓库的映射图，使 AI 能够：\n\n- 理解项目目录结构\n- 识别模块之间的依赖关系\n- 获取相关文件的位置信息\n\n### SearchContextProvider\n\n**职责**：提供代码搜索结果作为上下文。\n\n当用户在项目中进行代码搜索时，`SearchContextProvider` 会：\n\n- 捕获搜索查询和结果\n- 提供匹配项的代码片段\n- 支持正则表达式和普通文本搜索\n\n### MCPContextProvider\n\n**职责**：集成 MCP（Model Context Protocol）协议的上下文提供者。\n\nMCP 是一种标准化的上下文协议，允许扩展额外的上下文来源。该提供者：\n\n- 连接 MCP 服务器\n- 获取 MCP 工具返回的结果\n- 将外部工具输出转换为标准上下文格式\n\n## 工作流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant GUI as GUI组件\n    participant Provider as 上下文提供者\n    participant Core as 核心引擎\n    \n    User->>GUI: 编辑代码\n    GUI->>Provider: 请求上下文\n    Provider->>Provider: 加载/筛选数据\n    Provider-->>GUI: 返回ContextItems\n    GUI->>Core: 发送上下文\n    Core-->>User: AI响应\n```\n\n## 上下文项数据结构\n\n每个上下文提供者返回的上下文项（ContextItem）包含以下核心字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `id` | string | 唯一标识符 |\n| `name` | string | 上下文项名称 |\n| `description` | string | 简要描述 |\n| `content` | string | 实际内容 |\n| `uri` | URI | 资源定位符 |\n\n## UI 集成\n\n上下文提供者在 GUI 中通过 `ContextItemsPeek` 组件展示。该组件负责：\n\n- 渲染上下文项的图标和名称\n- 处理上下文项的点击事件\n- 显示文件类型的相关标识\n\n### 图标显示逻辑\n\n```typescript\n// 根据上下文项类型选择合适的图标\nconst shouldShowFileIcon =\n  contextItem.content.includes(\"```\") || \n  contextItem.uri?.type === \"file\";\n```\n\n## 配置与扩展\n\n### 注册新的上下文提供者\n\n开发者可以通过扩展 `core/context/providers/` 目录来添加自定义的上下文提供者：\n\n1. 创建新的提供者类\n2. 实现核心接口方法\n3. 在 `index.ts` 中注册该提供者\n\n### MCP 扩展\n\nMCP 上下文提供者支持通过 MCP 服务器进行扩展，允许：\n\n- 连接远程代码分析服务\n- 集成第三方代码库文档\n- 添加自定义的上下文来源\n\n## 最佳实践\n\n1. **按需加载**：上下文提供者应实现延迟加载，只在需要时才加载数据\n2. **缓存机制**：对于频繁访问的上下文数据，实施适当的缓存策略\n3. **错误处理**：提供优雅的错误处理和降级方案\n4. **性能优化**：避免返回过大的上下文内容，优先返回最相关的信息\n\n## 相关文件\n\n| 文件路径 | 功能 |\n|----------|------|\n| `core/context/providers/index.ts` | 提供者注册与导出 |\n| `core/context/providers/CodeContextProvider.ts` | 代码上下文实现 |\n| `core/context/providers/RepoMapContextProvider.ts` | 仓库映射实现 |\n| `core/context/providers/SearchContextProvider.ts` | 搜索上下文实现 |\n| `core/context/mcp/MCPContextProvider.ts` | MCP 协议集成 |\n\n## 总结\n\n上下文提供者是 Continue 实现智能编程辅助的基础设施。通过模块化的设计，系统能够灵活地集成各种代码上下文来源，同时保持良好的可扩展性和维护性。开发者可以根据需要添加自定义的上下文提供者，以满足特定的代码分析或辅助需求。\n\n---\n\n<a id='vscode-extension'></a>\n\n## VSCode扩展\n\n### 相关页面\n\n相关主题：[通信协议与消息传递](#communication-protocols)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [extensions/vscode/src/activation/activate.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/activation/activate.ts)\n- [extensions/vscode/src/ContinueGUIWebviewViewProvider.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/ContinueGUIWebviewViewProvider.ts)\n- [extensions/vscode/src/autocomplete/completionProvider.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/autocomplete/completionProvider.ts)\n- [extensions/vscode/src/diff/vertical/handler.ts](https://github.com/continuedev/continue/blob/main/extensions/vscode/src/diff/vertical/handler.ts)\n- [extensions/vscode/package.json](https://github.com/continuedev/continue/blob/main/extensions/vscode/package.json)\n</details>\n\n# VSCode扩展\n\n## 概述\n\nContinue 的 VSCode 扩展是该项目的核心前端组件，为开发者提供了一个集成化的 AI 辅助编程环境。该扩展通过 VSCode 的 Webview API 与核心后端逻辑通信，实现了代码补全、智能编辑、对话式交互等核心功能。\n\n## 架构设计\n\n### 整体架构\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                      VSCode 主机进程                          │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │              ContinueGUIWebviewViewProvider          │   │\n│  │                   (Webview 容器)                      │   │\n│  │  ┌───────────────────────────────────────────────┐   │   │\n│  │  │              React GUI 应用                    │   │   │\n│  │  │  ┌─────────┐  ┌──────────┐  ┌─────────────┐   │   │   │\n│  │  │  │ TipTap  │  │ Markdown │  │ StepContainer│   │   │   │\n│  │  │  │ Editor  │  │ Preview  │  │              │   │   │   │\n│  │  │  └─────────┘  └──────────┘  └─────────────┘   │   │   │\n│  │  └───────────────────────────────────────────────┘   │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                              │                               │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │           Autocomplete CompletionProvider           │   │\n│  │                 (内联代码补全)                         │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                              │                               │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │            Vertical Diff Handler                    │   │\n│  │                 (代码差异处理)                         │   │\n│  └─────────────────────────────────────────────────────┘   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### 核心组件职责\n\n| 组件名称 | 职责范围 | 主要功能 |\n|---------|---------|---------|\n| `activate.ts` | 扩展激活 | 初始化注册、事件监听设置 |\n| `ContinueGUIWebviewViewProvider` | Webview 管理 | 面板视图、消息通信 |\n| `completionProvider.ts` | 代码补全 | 内联补全、触发逻辑 |\n| `vertical/handler.ts` | 差异处理 | 代码修改应用/撤销 |\n\n## 激活机制\n\n### 扩展激活流程\n\n```mermaid\ngraph TD\n    A[VSCode 加载扩展] --> B[调用 activate 函数]\n    B --> C[注册 WebviewViewProvider]\n    C --> D[注册命令处理器]\n    D --> E[注册自动补全 Provider]\n    E --> F[注册差异视图 Provider]\n    F --> G[初始化完成,扩展就绪]\n```\n\n`activate.ts` 是扩展的入口点，负责协调所有子系统的初始化工作。扩展使用 `vscode.extensions.getExtension` 获取自身引用，并通过 `extendMarkdownIt` 注册自定义的 Markdown 处理扩展。\n\n扩展支持多种激活事件，包括：\n\n- `onLanguage:javascript` - JavaScript 文件打开时激活\n- `onLanguage:typescript` - TypeScript 文件打开时激活\n- `workspaceContains:**/*` - 工作区包含任意文件时激活\n\n## Webview 视图提供者\n\n### ContinueGUIWebviewViewProvider\n\n`ContinueGUIWebviewViewProvider` 负责管理 Continue 主面板的 Webview 实例。该组件继承自 VSCode 的 `WebviewViewProvider` 接口，提供以下核心能力：\n\n| 功能 | 描述 |\n|------|------|\n| HTML 注入 | 通过 `asWebviewUri` 转换资源路径 |\n| 消息通信 | 双向消息通道用于前端与扩展通信 |\n| 状态持久化 | 通过 `StatefulWebviewView` 保存视图状态 |\n| 命令注册 | 绑定快捷键到具体操作函数 |\n\n### 消息通信协议\n\nWebview 与扩展之间通过 `postMessage` 和 `onDidReceiveMessages` 进行通信。常见消息类型包括：\n\n```typescript\n// 客户端到扩展\ntype ClientMessage = \n  | { type: \"invokeCommand\"; command: string; args?: any[] }\n  | { type: \"showTutorial\"; }\n  | { type: \"focusEditor\"; }\n  | { type: \"closeSidebar\"; };\n\n// 扩展到客户端\ntype ServerMessage =\n  | { type: \"onOpenUrl\"; url: string }\n  | { type: \"updateAfterLoad\"; state: any }\n  | { type: \"onNewSession\"; };\n```\n\n资料来源：[extensions/vscode/src/ContinueGUIWebviewViewProvider.ts]()\n\n## 代码自动补全\n\n### CompletionProvider 实现\n\n`completionProvider.ts` 实现了 VSCode 的 `InlineCompletionItemProvider` 接口，为编辑器提供 AI 驱动的内联代码补全功能。\n\n```mermaid\ngraph LR\n    A[用户输入] --> B{触发条件检查}\n    B -->|延迟检测| C[等待无操作时间]\n    C --> D[获取文档上下文]\n    D --> E[调用补全 API]\n    E --> F[返回 InlineCompletionList]\n    F --> G[VSCode 渲染补全项]\n```\n\n### 补全配置参数\n\n| 参数名 | 类型 | 默认值 | 说明 |\n|--------|------|--------|------|\n| `delayInMs` | `number` | 150 | 触发补全前的等待时间 |\n| `maxPrefixLines` | `number` | 20 | 用于上下文的代码前缀行数 |\n| `maxSuffixLines` | `number` | 20 | 用于上下文的代码后缀行数 |\n| `multiline` | `boolean` | `true` | 是否启用多行补全 |\n\n资料来源：[extensions/vscode/src/autocomplete/completionProvider.ts]()\n\n## 差异视图处理\n\n### Vertical Diff Handler\n\n`vertical/handler.ts` 负责管理和展示代码修改的差异视图。当 AI 生成代码修改建议时，该处理器创建可交互的差异视图，支持用户接受或拒绝变更。\n\n```mermaid\ngraph TD\n    A[AI 生成代码修改] --> B[创建 Diff View]\n    B --> C{用户操作}\n    C -->|Accept| D[应用修改到文档]\n    C -->|Reject| E[撤销差异视图]\n    C -->|Partial| F[应用部分修改]\n    D --> G[清理 Diff 状态]\n    E --> G\n    F --> G\n```\n\n### 差异操作类型\n\n| 操作 | 快捷键 | 行为描述 |\n|------|--------|----------|\n| Accept Diff | `Cmd+Shift+Enter` | 接受所有待处理修改 |\n| Reject Diff | `Cmd+Shift+Backspace` | 拒绝所有待处理修改 |\n| Accept Top | `Alt+Cmd+Y` | 仅接受最顶层修改 |\n| Reject Top | `Alt+Cmd+N` | 仅拒绝最顶层修改 |\n\n资料来源：[extensions/vscode/src/diff/vertical/handler.ts]()\n\n## 快捷键绑定\n\n### 核心快捷键配置\n\n在 `HelpSection.tsx` 中定义了完整的快捷键映射表，这些快捷键通过 VSCode 的 `keybindings.json` 或扩展包配置进行注册。\n\n| 快捷键 | 功能 |\n|--------|------|\n| `Cmd '` | 切换选中的模型 |\n| `Cmd I` | 编辑高亮代码 |\n| `Cmd L` | 新建对话 / 新建对话并附带选中代码 |\n| `Cmd Backspace` | 取消响应 |\n| `Cmd Shift I` | 切换内联编辑焦点 |\n| `Cmd Shift L` | 聚焦当前对话 |\n| `Cmd Shift R` | 调试终端 |\n| `Cmd Shift Enter` | 接受差异 |\n| `Cmd Shift Backspace` | 拒绝差异 |\n\n资料来源：[gui/src/pages/config/sections/HelpSection.tsx]()\n\n## Markdown 渲染增强\n\n### patchNestedMarkdown 机制\n\n扩展对 Markdown 渲染进行了增强处理，特别是针对代码块嵌套场景。当 AI 输出包含代码块的 Markdown 时，`patchNestedMarkdown` 函数会将外层分隔符转换为波浪号 (`~~~`)，以避免解析冲突。\n\n```typescript\n// 转换示例\n// 输入:\n```markdown\n# 示例\n```javascript\nconsole.log(\"test\")\n```\n```\n\n// 输出:\n~~~markdown\n# 示例\n```javascript\nconsole.log(\"test\")\n```\n~~~\n```\n\n资料来源：[gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts]()\n\n### Mermaid 图表支持\n\n内置的 `MermaidBlock` 组件支持在 Markdown 中直接渲染 Mermaid 图表，并提供缩放控制功能：\n\n```mermaid\ngraph TD\n    A[解析 Mermaid 代码] --> B{语法正确?}\n    B -->|是| C[渲染 SVG]\n    B -->|否| D[显示错误信息]\n```\n\n组件支持的操作：\n\n- 放大 (Zoom In)\n- 缩小 (Zoom Out)\n- 重置缩放 (Reset Zoom)\n\n资料来源：[gui/src/components/StyledMarkdownPreview/MermaidBlock.tsx]()\n\n## 配置管理\n\n### 模型角色配置\n\n扩展支持为不同任务场景配置专门的 AI 模型：\n\n| 角色 | 用途 |\n|------|------|\n| `chat` | 对话交互 |\n| `autocomplete` | 内联代码补全 |\n| `edit` | 代码转换和编辑 |\n\n配置通过 VSCode 的设置界面进行管理，模型列表存储在用户工作区的 `.continue` 配置文件或全局设置中。\n\n资料来源：[gui/src/pages/config/sections/ModelsSection.tsx]()\n\n## 技术栈\n\n### 依赖技术\n\n| 技术 | 版本要求 | 用途 |\n|------|----------|------|\n| VSCode API | 1.75+ | 扩展框架 |\n| React | 18+ | UI 组件 |\n| TipTap | 2.x | 富文本编辑器 |\n| Mermaid | 最新版 | 图表渲染 |\n| Tailwind CSS | 3.x | 样式系统 |\n\n### 包结构\n\n```json\n{\n  \"name\": \"continue\",\n  \"main\": \"./out/extension.js\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\",\n    \"@tiptap/react\": \"^2.0.0\",\n    \"mermaid\": \"^10.0.0\"\n  },\n  \"activationEvents\": [\n    \"onLanguage:javascript\",\n    \"onLanguage:typescript\",\n    \"onLanguage:python\"\n  ]\n}\n```\n\n资料来源：[extensions/vscode/package.json]()\n\n## 扩展状态管理\n\n### 会话状态持久化\n\n扩展通过 `StatefulWebviewView` 接口维护会话状态，包括：\n\n- 当前对话历史\n- 上下文项缓存\n- UI 偏好设置\n- 模型配置\n\n```mermaid\ngraph TD\n    A[用户操作] --> B[更新本地状态]\n    B --> C[序列化到 VSCode 存储]\n    C --> D[持久化到工作区]\n    D --> E[下次激活时恢复]\n```\n\n## 开发与调试\n\n### 本地开发配置\n\n在开发环境下，扩展提供以下调试功能：\n\n1. **主题测试页面** - 用于测试不同 VSCode 主题下的 UI 表现\n2. **会话数据查看** - 直接查看当前对话的原始 JSON 数据\n3. **令牌使用统计** - 展示各模型的每日用量\n\n开发模式下通过 `process.env.NODE_ENV === \"development\"` 条件渲染调试入口。\n\n资料来源：[gui/src/pages/config/sections/HelpSection.tsx]()\n\n## 总结\n\nContinue 的 VSCode 扩展采用模块化架构设计，通过 Webview 容器承载 React 应用，同时利用原生 VSCode API 提供深度的编辑器集成。扩展的核心优势包括：\n\n- **无缝集成** - 与 VSCode 深度整合，支持所有主流编程语言\n- **灵活配置** - 支持为不同任务配置专用模型\n- **实时交互** - 内联补全和差异视图提供流畅的编辑体验\n- **持久化状态** - 会话数据和配置自动保存跨会话可用\n\n该扩展是 Continue 项目面向终端用户的主要入口，与 CLI 工具和其他 IDE 扩展共同构成了完整的 AI 辅助编程解决方案。\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：continuedev/continue\n\n摘要：发现 21 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag。\n\n## 1. 安装坑 · 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_823b2e0ae1ad49a78bd0a45d39a3099a | https://github.com/continuedev/continue/issues/12378 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 2. 安装坑 · 来源证据：The extension doesn't show up at all.\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：The extension doesn't show up at all.\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5d86070fe9d941ad9a44f1d09464b582 | https://github.com/continuedev/continue/issues/1312 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 3. 配置坑 · 来源证据：v1.0.67-jetbrains\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.0.67-jetbrains\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4ce3fb2dde3d48978402a51bb56fbc99 | https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains | 来源类型 github_release 暴露的待验证使用条件。\n\n## 4. 配置坑 · 来源证据：v1.2.22-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.2.22-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_51004115b2b842e0afcd08792bdf1f61 | https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 5. 配置坑 · 来源证据：v1.3.38-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.38-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5f19fd622e784966a0747963ae1dc6ce | https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:644686905 | https://github.com/continuedev/continue | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | last_activity_observed missing\n\n## 8. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 9. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:644686905 | https://github.com/continuedev/continue | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：Config error with ollama cloud\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Config error with ollama cloud\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_105f1472ec6649f28a69bd8bbd997575 | https://github.com/continuedev/continue/issues/12370 | 来源讨论提到 macos 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：Docs: Document .continue/configs directory support\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document .continue/configs directory support\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4891275e3958456796a83007de577da8 | https://github.com/continuedev/continue/issues/12377 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 13. 安全/权限坑 · 来源证据：Docs: Document dynamic model fetching feature\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document dynamic model fetching feature\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9bd2485a0ee04d4c932eaca2524598ed | https://github.com/continuedev/continue/issues/12376 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：Docs: Update Inception provider documentation for Mercury-2 model\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Update Inception provider documentation for Mercury-2 model\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_3d76e53c03d84ecdb9ecbe9d86059a37 | https://github.com/continuedev/continue/issues/12375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 15. 安全/权限坑 · 来源证据：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e2338a7a76914ae09ac534a5c23a951b | https://github.com/continuedev/continue/issues/12382 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：v1.2.19-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.19-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_f230968c0b6d4e6f9cfe6883444e094c | https://github.com/continuedev/continue/releases/tag/v1.2.19-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 17. 安全/权限坑 · 来源证据：v1.2.20-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.20-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_02ca773cf6c94b679e0167c5b5ab8155 | https://github.com/continuedev/continue/releases/tag/v1.2.20-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 18. 安全/权限坑 · 来源证据：v1.3.35-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.35-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_96fe1be3173b4eec9a748b4f053c2535 | https://github.com/continuedev/continue/releases/tag/v1.3.35-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：v1.3.36-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.36-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6b160d55daba40a3b8c23940097ff59f | https://github.com/continuedev/continue/releases/tag/v1.3.36-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 20. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | issue_or_pr_quality=unknown\n\n## 21. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | release_recency=unknown\n\n<!-- canonical_name: continuedev/continue; human_manual_source: deepwiki_human_wiki -->\n",
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "Human Manual / 人类版说明书"
    },
    "pitfall_log": {
      "asset_id": "pitfall_log",
      "filename": "PITFALL_LOG.md",
      "markdown": "# Pitfall Log / 踩坑日志\n\n项目：continuedev/continue\n\n摘要：发现 21 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag。\n\n## 1. 安装坑 · 来源证据：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Terminal commands fail when `$SHELL` is set to `tcsh` due to hardcoded `-l` shell flag\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_823b2e0ae1ad49a78bd0a45d39a3099a | https://github.com/continuedev/continue/issues/12378 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 2. 安装坑 · 来源证据：The extension doesn't show up at all.\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：The extension doesn't show up at all.\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5d86070fe9d941ad9a44f1d09464b582 | https://github.com/continuedev/continue/issues/1312 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 3. 配置坑 · 来源证据：v1.0.67-jetbrains\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.0.67-jetbrains\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4ce3fb2dde3d48978402a51bb56fbc99 | https://github.com/continuedev/continue/releases/tag/v1.0.67-jetbrains | 来源类型 github_release 暴露的待验证使用条件。\n\n## 4. 配置坑 · 来源证据：v1.2.22-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.2.22-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_51004115b2b842e0afcd08792bdf1f61 | https://github.com/continuedev/continue/releases/tag/v1.2.22-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 5. 配置坑 · 来源证据：v1.3.38-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.38-vscode\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_5f19fd622e784966a0747963ae1dc6ce | https://github.com/continuedev/continue/releases/tag/v1.3.38-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:644686905 | https://github.com/continuedev/continue | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | last_activity_observed missing\n\n## 8. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 9. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:644686905 | https://github.com/continuedev/continue | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:644686905 | https://github.com/continuedev/continue | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：Config error with ollama cloud\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Config error with ollama cloud\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_105f1472ec6649f28a69bd8bbd997575 | https://github.com/continuedev/continue/issues/12370 | 来源讨论提到 macos 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：Docs: Document .continue/configs directory support\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document .continue/configs directory support\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4891275e3958456796a83007de577da8 | https://github.com/continuedev/continue/issues/12377 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 13. 安全/权限坑 · 来源证据：Docs: Document dynamic model fetching feature\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Document dynamic model fetching feature\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9bd2485a0ee04d4c932eaca2524598ed | https://github.com/continuedev/continue/issues/12376 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：Docs: Update Inception provider documentation for Mercury-2 model\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Docs: Update Inception provider documentation for Mercury-2 model\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_3d76e53c03d84ecdb9ecbe9d86059a37 | https://github.com/continuedev/continue/issues/12375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 15. 安全/权限坑 · 来源证据：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：PR checks do not create fresh agent sessions on PR updates; stale task IDs re-post to new commits\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e2338a7a76914ae09ac534a5c23a951b | https://github.com/continuedev/continue/issues/12382 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：v1.2.19-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.19-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_f230968c0b6d4e6f9cfe6883444e094c | https://github.com/continuedev/continue/releases/tag/v1.2.19-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 17. 安全/权限坑 · 来源证据：v1.2.20-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.2.20-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_02ca773cf6c94b679e0167c5b5ab8155 | https://github.com/continuedev/continue/releases/tag/v1.2.20-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 18. 安全/权限坑 · 来源证据：v1.3.35-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.35-vscode\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_96fe1be3173b4eec9a748b4f053c2535 | https://github.com/continuedev/continue/releases/tag/v1.3.35-vscode | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：v1.3.36-vscode\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.36-vscode\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6b160d55daba40a3b8c23940097ff59f | https://github.com/continuedev/continue/releases/tag/v1.3.36-vscode | 来源类型 github_release 暴露的待验证使用条件。\n\n## 20. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | issue_or_pr_quality=unknown\n\n## 21. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:644686905 | https://github.com/continuedev/continue | release_recency=unknown\n",
      "summary": "用户实践前最可能遇到的身份、安装、配置、运行和安全坑。",
      "title": "Pitfall Log / 踩坑日志"
    },
    "prompt_preview": {
      "asset_id": "prompt_preview",
      "filename": "PROMPT_PREVIEW.md",
      "markdown": "# continue - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 continue 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. introduction：Continue项目简介。围绕“Continue项目简介”模拟一次用户任务，不展示安装或运行结果。\n2. project-structure：项目目录结构。围绕“项目目录结构”模拟一次用户任务，不展示安装或运行结果。\n3. system-architecture：系统架构设计。围绕“系统架构设计”模拟一次用户任务，不展示安装或运行结果。\n4. llm-integration：LLM集成架构。围绕“LLM集成架构”模拟一次用户任务，不展示安装或运行结果。\n5. model-providers：模型提供商支持。围绕“模型提供商支持”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. introduction\n输入：用户提供的“Continue项目简介”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. project-structure\n输入：用户提供的“项目目录结构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. system-architecture\n输入：用户提供的“系统架构设计”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. llm-integration\n输入：用户提供的“LLM集成架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. model-providers\n输入：用户提供的“模型提供商支持”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / introduction：Step 1 必须围绕“Continue项目简介”形成一个小中间产物，并等待用户确认。\n- Step 2 / project-structure：Step 2 必须围绕“项目目录结构”形成一个小中间产物，并等待用户确认。\n- Step 3 / system-architecture：Step 3 必须围绕“系统架构设计”形成一个小中间产物，并等待用户确认。\n- Step 4 / llm-integration：Step 4 必须围绕“LLM集成架构”形成一个小中间产物，并等待用户确认。\n- Step 5 / model-providers：Step 5 必须围绕“模型提供商支持”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/continuedev/continue\n- https://github.com/continuedev/continue#readme\n- .claude/skills/docs-style/SKILL.md\n- skills/cn-check/SKILL.md\n- README.md\n- core/core.ts\n- core/package.json\n- gui/package.json\n- extensions/cli/package.json\n- packages/config-yaml/package.json\n- core/protocol/index.ts\n- binary/src/IpcIde.ts\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 continue 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "summary": "不安装项目也能感受能力节奏的安全试用 Prompt。",
      "title": "Prompt Preview / 安装前试用 Prompt"
    },
    "quick_start": {
      "asset_id": "quick_start",
      "filename": "QUICK_START.md",
      "markdown": "# Quick Start / 官方入口\n\n项目：continuedev/continue\n\n## 官方安装入口\n\n### Node.js / npm · 官方安装入口\n\n```bash\nnpm i -g @continuedev/cli\n```\n\n来源：https://github.com/continuedev/continue#readme\n\n## 来源\n\n- repo: https://github.com/continuedev/continue\n- docs: https://github.com/continuedev/continue#readme\n",
      "summary": "从项目官方 README 或安装文档提取的开工入口。",
      "title": "Quick Start / 官方入口"
    }
  },
  "validation_id": "dval_50109bb4e45c493d88bcd9d58e7a3712"
}
