报告岗位个人档案

招聘岗位点名 Claude Code 的次数,是个人档案列出它的五倍

2026 年 9 月 21 日,Metix AI Platform 上 12 个 AI 编程助手和 agent 框架在招聘岗位和个人技能里分别出现了多少次。

运行这个案例复现需 92 API Credits复现只计数,不读取任何记录

5.1×

每个在技能里列出 Claude Code 的档案,对应 5.1 个提到它的在招岗位(27,679 比 5,407)。

每个档案对应的岗位数,对数刻度。竖线是一比一,蓝点偏向岗位,淡紫点偏向档案。

要点

  1. 九个名称不会有歧义的工具里,Claude Code 的缺口最大:27,679 个在招岗位提到它,只有 5,407 个档案把它列为技能,每个档案对应 5.1 个岗位。
  2. LangChain 正好相反:30,546 个档案,14,099 个岗位。DSPy 也是档案多于岗位(390 比 205)。
  3. 缺口在美国以外更大。Claude Code 在美国是每个档案 3.3 个岗位,在美国以外是 8.4 个。
  4. 提到 AI 编程工具不会抬高薪资下限:这类美国岗位里起薪 15 万美元以上的占 48%,软件工程师岗位是 52%。

岗位与档案对比

第 1 部分,图 01、02、03

每个工具的在招岗位数和把它列为技能的档案数,全球以及美国内外分开比较。

01

LangChain 和 Claude Code 两边都是最大的,但方向相反

九个名称没有歧义的 AI 编程助手和 Agent 框架。左边是把它列为技能的档案,右边是提到它的在招岗位,同一刻度,按岗位数排序

Claude Code: 5407 个档案, 27679 个岗位; LangChain: 30546 个档案, 14099 个岗位; GitHub Copilot: 12641 个档案, 12790 个岗位; LangGraph: 8751 个档案, 9002 个岗位; Model Context Protocol: 5435 个档案, 5777 个岗位; LlamaIndex: 2767 个档案, 5120 个岗位; CrewAI: 2078 个档案, 3570 个岗位; AutoGen: 1833 个档案, 3464 个岗位; DSPy: 390 个档案, 205 个岗位

  1. 5,407Claude Code27,679
  2. 30,546LangChain14,099
  3. 12,641GitHub Copilot12,790
  4. 8,751LangGraph9,002
  5. 5,435Model Context Protocol5,777
  6. 2,767LlamaIndex5,120
  7. 2,078CrewAI3,570
  8. 1,833AutoGen3,464
  9. 390DSPy205

图中所见

LangChain 是唯一一个档案数远超岗位数的大工具,Claude Code 则是岗位数远超档案数。

方法与局限

岗位和档案的数量级相近,所以放在同一刻度上。

来源:Metix AI Platform 岗位与个人档案数据,2026-09-21。

查询tools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

02

Claude Code 每个档案对应 5.1 个岗位,Model Context Protocol、LangGraph、GitHub Copilot 接近一比一

每个列出该技能的档案对应多少个在招岗位,对数刻度,竖线是一比一

Claude Code 5.12, AutoGen 1.89, LlamaIndex 1.85, CrewAI 1.72, Model Context Protocol 1.06, LangGraph 1.03, GitHub Copilot 1.01, DSPy 0.53, LangChain 0.46

Claude Code5.1×
AutoGen1.9×
LlamaIndex1.9×
CrewAI1.7×
Model Context Protocol1.1×
LangGraph1.0×
GitHub Copilot1.0×
DSPy0.53×
LangChain0.46×

图中所见

LlamaIndex、AutoGen、CrewAI 也在 1.7 倍以上;DSPy 和 LangChain 在 0.5 倍左右,档案比岗位多一倍。

方法与局限

比值大于 1 表示岗位多于列出技能的档案。刻度是对数的,所以 2 倍和 0.5 倍离 1 倍一样远。

来源:Metix AI Platform 岗位与个人档案数据,2026-09-21。

查询tools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

03

美国以外的缺口更大:Claude Code 在美国是 3.3 倍,在其他地方是 8.4 倍

每个档案对应的岗位数,美国(实心)和美国以外(空心)分开算,对数刻度

Claude Code:美国 3.26,美国以外 8.40;LlamaIndex:美国 1.34,美国以外 2.18;AutoGen:美国 1.73,美国以外 1.96;CrewAI:美国 1.83,美国以外 1.67;GitHub Copilot:美国 0.87,美国以外 1.10;LangGraph:美国 0.96,美国以外 1.07;Model Context Protocol:美国 1.15,美国以外 0.99;DSPy:美国 0.40,美国以外 0.63;LangChain:美国 0.44,美国以外 0.47

Claude Code3.3× / 8.4×
LlamaIndex1.3× / 2.2×
AutoGen1.7× / 2.0×
CrewAI1.8× / 1.7×
GitHub Copilot0.87× / 1.1×
LangGraph0.96× / 1.1×
Model Context Protocol1.2× / 0.99×
DSPy0.40× / 0.63×
LangChain0.44× / 0.47×

图中所见

列出 Claude Code 的档案有 64% 在美国,提到它的岗位只有 41% 在美国。美国以外的雇主在大量点名这个工具,而公开把它写进技能栏的人主要在美国。

方法与局限

美国以外是全球数减去美国数,所以没有写国家的岗位和档案也算在美国以外。

来源:Metix AI Platform 岗位与个人档案数据,2026-09-21。

查询tools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

AI 编程助手

第 2 部分,图 04、05

雇主点名每个助手的频率,以及哪些助手常被一起点名。

04

36,208 个岗位点名 AI 编程助手,Claude Code 出现在 76% 里

提到各编程助手的在招岗位数,以及占至少提到一个工具的岗位的比例。斜线条是下限

Claude Code 27679, Cursor 15676, GitHub Copilot 12790, Codex 7878, Windsurf 2234

  1. Claude Code27,679 · 76%
  2. Cursor严格计数:需同时提到另一个工具15,676 · 43%
  3. GitHub Copilot12,790 · 35%
  4. Codex严格计数:需同时提到另一个工具7,878 · 22%
  5. Windsurf严格计数:需同时提到另一个工具2,234 · 6%

图中所见

Claude Code 之后是 Cursor,至少占这些岗位的 43%;然后是 GitHub Copilot,占 35%。

方法与局限

Cursor、Codex 和 Windsurf 也是普通词,只在同一段描述里还提到另一个 AI 编程工具时才计入,所以是下限,也不参与上面的供需比较。

来源:Metix AI Platform 岗位数据,2026-09-21。

查询tools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

05

提到 GitHub Copilot 的岗位有 55% 也提到 Claude Code,反过来只有 25%

每一列是提到该工具的岗位,格子是其中同时提到这一行工具的比例

Claude Code with Cursor 46%, Claude Code with GitHub Copilot 25%, Claude Code with Codex 24%, Claude Code with Windsurf 7%; GitHub Copilot with Claude Code 55%, GitHub Copilot with Cursor 40%, GitHub Copilot with Codex 12%, GitHub Copilot with Windsurf 5%

同时提到提到 Claude Code 的岗位27,679提到 GitHub Copilot 的岗位12,790
Claude Code同一个工具55%
Cursor46%40%
GitHub Copilot25%同一个工具
Codex24%12%
Windsurf7%5%

图中所见

点名 Copilot 的岗位多半也点名 Claude Code,点名 Claude Code 的岗位却很少再提 Copilot。

方法与局限

只画 Claude Code 和 GitHub Copilot 两列,因为另外三个工具的定义本身就要求同时提到别的工具,它们的列会被这个定义抬高。

来源:Metix AI Platform 岗位数据,2026-09-21。

查询tools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

岗位在哪里

第 3 部分,图 06、07

点名 AI 编程助手的岗位分布在哪些国家和行业。

06

美国占 40%,印度第二

至少提到一个 AI 编程助手的 36,208 个在招岗位,按国家统计,条形按占全部的比例画

美国 14388,印度 3762,英国 1463,德国 1530,加拿大 1563,法国 685,荷兰 324,新加坡 359,澳大利亚 298,日本 413,其他国家和地区 11423

  1. 美国14,388 · 39.7%
  2. 印度3,762 · 10.4%
  3. 加拿大1,563 · 4.3%
  4. 德国1,530 · 4.2%
  5. 英国1,463 · 4.0%
  6. 法国685 · 1.9%
  7. 日本413 · 1.1%
  8. 新加坡359 · 1.0%
  9. 荷兰324 · 0.9%
  10. 澳大利亚298 · 0.8%
  11. 其他国家和地区11,423 · 31.5%

来源:Metix AI Platform 岗位数据,2026-09-21。

查询tools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

07

IT 服务和软件公司领先,金融服务(4,092)多过互联网公司(3,101)

至少提到一个 AI 编程助手的岗位里,行业包含所列行业的比例。这是挑选出的行业,不是排名;一个岗位可以属于多个行业,所以比例会重叠

IT 服务与咨询 10794,软件开发 9214,科技、信息与互联网 3101,金融服务 4092,银行 674,保险 531,制造业 1780,医院与医疗 450,零售 404,电信 355,汽车制造 129,高等教育 122,政府管理 52

科技行业

  1. IT 服务与咨询10,794 · 29.8%
  2. 软件开发9,214 · 25.4%
  3. 科技、信息与互联网3,101 · 8.6%

科技以外

  1. 金融服务4,092 · 11.3%
  2. 制造业1,780 · 4.9%
  3. 银行674 · 1.9%
  4. 保险531 · 1.5%
  5. 医院与医疗450 · 1.2%
  6. 零售404 · 1.1%
  7. 电信355 · 1.0%
  8. 汽车制造129 · 0.4%
  9. 高等教育122 · 0.3%
  10. 政府管理52 · 0.1%

来源:Metix AI Platform 岗位数据,2026-09-21。

查询tools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

薪资

第 4 部分,图 08

在美国,点名 AI 编程助手的岗位写出的薪资下限是否更高。

08

点名 AI 编程工具并不会抬高薪资下限

写明美元年薪的美国岗位里,薪资下限达到各档的比例:提到 AI 编程助手的岗位(2,688 个)和标题含 software engineer 的岗位(6,198 个)

$100k: 80% vs 89%, $150k: 48% vs 52%, $200k: 20% vs 18%, $250k: 6% vs 5%

10 万美元以上80%89%
15 万美元以上48%52%
20 万美元以上20%18%
25 万美元以上6%5%

图中所见

两组的分布几乎重合,足以说明点名工具不是高薪岗位的标志。

方法与局限

两组有重叠(很多软件工程师岗位也会点名工具),前一组还包括非工程岗位,所以这不是严格的对照。

来源:Metix AI Platform 岗位数据,2026-09-21。

查询tools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

运行这个案例

三种方式,每一种都先告诉你要花多少。

1 API Credit 可以买 25 个搜索结果或 5 条完整记录;1 美元可以买 30 API Credits。

交给你的 agent 来跑

245 到 320 API Credits8.17 到 10.67 美元超过新账户赠送的 100 API Credits

花费超过 320 API Credits 之前,agent 会先停下来问你。

你的 agent 按提示词一步步执行:先读规则,再计数,按提示词的要求检查定义,最后写出文件和图表。请使用能写文件的 agent,比如 Claude Code 或 Codex。

一次性配置key、连接和一次免费检查。如果你的 agent 已经接入 Metix AI Platform,可以跳过。
  1. 1获取 key

    在 Metix AI Platform 上创建 key →

    新账户一次性赠送 100 API Credits,30 天内有效。在启动 agent 的终端里设置,或者把这一行写进 ~/.zshrc 或 ~/.bashrc,新开的终端也能用:

    终端
    export METIX_KEY=metix_xxxxxxxx
  2. 2连接你的 agent

    Claude Code

    为所有项目注册 Metix AI Platform。在任意目录启动 claude,就能看到十个 metix 工具。

    终端
    : "${METIX_KEY:?run step 1 first}" &&
    claude mcp add --scope user --transport http metix \
      https://mira-api.metix.ai/mcp \
      --header "Authorization: Bearer $METIX_KEY"
    MCP 配置指南 →

    Codex

    注册同一个服务。key 留在环境变量里,不写进配置文件。

    终端
    codex mcp add metix \
      --url https://mira-api.metix.ai/mcp \
      --bearer-token-env-var METIX_KEY
    MCP 配置指南 →

    Skills

    四个 skill,教任何 agent 使用 Metix AI Platform 的接口和查询规则,适合不支持 MCP 的 agent。安装程序默认一项都不勾选:在每一项上按空格,再按回车。

    终端
    npx skills add MetixAI-Official/metix-skills
    Skills 安装说明 →

    其他 MCP

    让客户端通过 streamable HTTP 连接这个地址,并带上这两个请求头;缺少 Accept 请求头时服务器会返回 406。较旧的客户端使用同一主机上的 /sse。

    地址和请求头
    https://mira-api.metix.ai/mcp
    Authorization: Bearer <your key>
    Accept: application/json, text/event-stream
    MCP 配置指南 →
  3. 3检查配置

    先问这一句。它只读取余额和字段列表,不做任何搜索,不花 API Credits:

    发给 agent 的提示
    使用 Metix AI Platform:查询我的 key 状态并读取 contract,这两项都免费。然后告诉我我的 API Credit 余额和可以查询哪些数据集。不要做任何搜索。

4粘贴提示词

在一个空文件夹里启动 agent,再粘贴。它会把文件写在那里。

要回答的问题

用 Metix AI Platform 回答一个问题:雇主在招聘岗位里点名的 AI 编程助手和 Agent 框架,需求和把它们列为技能的人相比如何?只通过公开的 Platform 访问(REST 地址 https://mira-api.metix.ai、MCP 服务或 metix-skills),密钥从 METIX_KEY 读取,任何时候都不要打印密钥。

  1. 01先读规则再查询

    调用 GET /contract(免费)。岗位用 querySpecByEntity.job,匹配 "description";档案用 querySpecByEntity.profile,匹配 "skills"。size 1 的计数花 1 API Credit,所以每个数字都按计数来设计。开始和结束时各调用一次 GET /auth/key/status(免费)查余额,总花费超过 320 API Credits 之前先停下来问我。

  2. 02工具

    编程助手:Claude Code、Cursor、GitHub Copilot、Codex、Windsurf。Agent 框架和协议:LangChain、LangGraph、LlamaIndex、CrewAI、AutoGen、DSPy,以及 Model Context Protocol(匹配 "model context protocol")。

  3. 03每个名称都先抽检再相信

    match 要求每个词都出现,但不要求连在一起。每个工具读 40 到 60 条职位描述,检查名称附近是不是 AI 的上下文。Cursor、Codex、Windsurf 同时也是普通词;无关的超过 5%,就改成同一段文字里还提到另一个 AI 编程工具时才计入,岗位和档案都这样改,然后再抽检一次。

  4. 04有歧义的工具不进比值

    收紧之后也数一下它们的档案。如果只剩几百个档案,比值主要反映的是定义本身,所以只在需求图里作为下限出现,不参与任何供需比较。

  5. 05计数

    每个工具算四次:岗位和档案,各分全球和 location.country eq "United States"。所有人数都要过小格子规则(少于 10 写成 "<10")。

  6. 06维度,全部用计数

    同一个岗位同时点名两个编程助手的次数。至少点名一个助手的岗位,按国家(最大的 10 个加其他)和一份挑选出的行业列表计数(说明这不是排名,一个岗位可以属于多个行业)。美国的薪资下限:点名任意助手的岗位,以及作为对照的标题含 "software engineer" 的岗位,条件是 salary.currency eq "USD",再分别数 salary.annual_min 不低于 100000、150000、200000、250000 的数量。

  7. 07当心定义本身决定了答案

    一个定义为"和另一个工具一起被提到"的工具,一定会和别的工具同时出现,所以同时点名的比例只画按名称匹配的工具。

  8. 08输出

    写出 demand.json、co-mentions.json、countries.json、industries.json、pay.json("unit": "jobs")和 supply.json("unit": "profiles"),每个文件都带快照日期和来源查询文件。运行前后各调用一次 GET /auth/key/status,余额差就是花费。

  9. 09图表

    双向图:档案向左、岗位向右,同一刻度;每个档案对应的岗位数,对数刻度,画一条一比一的线;同一个比值拆成美国和美国以外;各编程助手的岗位数,下限用斜线;同时点名的比例;按国家、按总数缩放;行业分两组;薪资画两组达到各档的比例。每张图的标题都写结论。

  10. 10局限,在第一张图之前说清楚

    岗位每天刷新,档案的技能是本人填写、更新慢,越新的工具越跟不上,所以比值是需求和已公开技能之间的差距,不是和实际技能的差距。提到一个工具不等于要求会用它。不合并重复发布。这是某一天的截面,不是趋势。

查看 PROMPT.md →

你会得到

聚合文件和图表,一段说明抽检发现了什么、改了什么,以及这次运行花了多少 API Credits(取自运行前后的余额)。

如果调用返回 402 insufficient_quota,说明 key 有效,只是余额用完了。

复现数字

92 API Credits3.07 美元新账户赠送的 100 API Credits 够用

一个只用 Python 标准库的小脚本,把已提交的查询按计数发出去,写出这个页面所用的聚合文件。需要 Python,并在终端里设置好 METIX_KEY(见 agent 路径的第 1 步),也可以让你的 agent 替你运行这几行。

终端
curl -fsSL https://platform.metix.ai/casebook/source/ai-tool-stack-in-hiring-2026.tar.gz | tar xz
cd ai-tool-stack-in-hiring-2026
: "${METIX_KEY:?set METIX_KEY first}" && python3 cases/ai-tool-stack-in-hiring-2026/fetch.py

你会得到

data/*.json 和 data/receipt.json。运行 git diff cases/ai-tool-stack-in-hiring-2026/data 看哪些数字变了:除去快照之后数据本身的变化,数字应该一致。

改成你的问题

花费取决于你的版本读取多少。在提示词第 1 步里写上你自己的上限。

提示词就是这个案例本身。改掉下表里的部分,你的 agent 就会回答你的问题,用同样的检查和同样的花费记录方式。

想改的 改哪里 例子
工具 第 2 步,每个都在第 3 步抽检 向量数据库:Pinecone、Weaviate、Qdrant、pgvector
对比维度 第 6 步 把国家拆分换成资历或职能
市场 第 5 步 只看一个国家:每次计数都加上它的 location.country

运行前先问清楚

  1. 看哪些工具?有没有名字会有别的意思?
  2. 只看需求,还是需求和供给对比?供给要用档案技能,并且要过小格子规则。
  3. 哪些拆分维度重要:国家、行业、薪资?
  4. 抽检读描述最多能花多少 API Credits?
查看 PROMPT.md →

方法与局限

统计范围怎么定义、怎么计数和抽检,以及这些数字不能说明什么。

需求:岗位

2026 年 9 月 21 日 Metix AI Platform 上的在招岗位,职位描述里提到某个工具。Claude Code、GitHub Copilot、LangChain、LangGraph、LlamaIndex、CrewAI、AutoGen、DSPy 和 Model Context Protocol 按名称匹配;Cursor、Codex、Windsurf 需要同一段描述里还提到另一个 AI 编程工具。定义在 tools.json。

供给:档案

在技能栏里列出同一个工具的个人档案,条件和岗位一一对应。只做计数,没有读取任何档案,也没有读取任何岗位。所有人数都经过小格子规则:少于 10 的写成 "<10"。

抽检

agent 读了职位描述样本来检查匹配:Claude Code 和 GitHub Copilot 40 条里 40 条是工具本身,AutoGen 40 条里 39 条。只看单词时 Cursor、Codex、Windsurf 分别是 60 条里 55、55、56 条,所以收紧了条件;收紧后这三个工具在档案里只剩 258、452、13 人,比值没有意义,因此不参与供需比较。

国家、行业和薪资

国家是至少提到一个编程助手的岗位按 location.country 计数,其余国家合并。行业是挑选出的列表,不是排名,一个岗位可以属于多个行业。薪资对照组是标题含 "software engineer" 的美国岗位,两组可能重叠。维度定义在 dimensions.json。

局限

档案的技能栏由本人填写、更新慢,越新的工具越可能被低估,所以比值衡量的是需求和已公开技能之间的差距。岗位的重复发布没有合并。提到一个工具不等于要求会用它。这是快照当天的截面。

最近一次复现

上一次复现花了多少,取自运行前后 Metix AI Platform 记录的余额。

运行日期
2026-09-21
调用次数
92
搜索结果
92
读取记录
0
API Credits
92

搜索结果是搜索返回的 ID 数,每次计数查询算一个,完整搜索按命中数算。记录是完整读取的岗位或档案:这个案例一条都没读。

做这个案例另外花了大约 236 API Credits:agent 做的抽检、试探性查询,以及被公开复现取代的早先运行。你不需要再花这部分。