资讯动态

agent-skills:面向LLM智能体的能力契约体系

发布时间:2026/10/28 3:32:32 来源:尧图企业网站定制
1. “agent-skills”不是功能模块而是一套可插拔的能力契约体系你第一次在 GitHub 仓库、CLI 工具或 LLM 应用文档里看到agent-skills这个词时大概率会下意识把它当成一个“技能管理插件”或者“AI 功能包”。我最初也这么想——直到我在三个不同团队的生产环境里连续踩了五次坑一次是 CLI 命令执行后返回空响应却无报错一次是skills install xxx成功但调用时提示permission denied on /api/v1/xxx还有三次都卡在“技能已加载但 agent 拒绝调用”日志里只有一行skill validation failed: missing required scope。后来我才明白agent-skills的本质不是代码库不是 npm 包更不是 API 列表——它是一套运行时能力契约Runtime Capability Contract的命名与组织规范。它解决的根本问题是让 LLM 驱动的智能体Agent能像操作系统加载驱动一样安全、可控、可验证地接入外部能力Skills而无需硬编码、不依赖特定模型提供商、也不需要每次调用都重写权限逻辑。这和你熟悉的 REST API 或 SDK 完全不同。API 是“我提供什么服务”而agent-skills是“我声明我能做什么、在什么条件下做、需要什么凭证、失败时如何降级”。比如一个叫web-search的 skill它的 manifest 文件里不会只写GET /search?q而是明确声明required_scopes: [internet:read]必须获得用户授予的互联网读取权限rate_limit: {requests_per_minute: 30, burst: 5}每分钟最多30次突发允许5次fallback: {type: cached, ttl_seconds: 600}若实时搜索失败可回退到10分钟内缓存结果input_schema: {type: object, properties: {query: {type: string, max_length: 200}}}输入必须是字符串且不超过200字符这才是agent-skills的真实骨架。它不关心你是用 Claude、DeepSeek 还是本地 Qwen 调用也不管底层是调用 SerpAPI、SearXNG 还是自建爬虫集群——它只认这个契约。就像 USB 接口不关心你插的是鼠标还是打印机只认 USB 协议规范一样。所以当你搜“codex cli skills”或“claude agent skills”真正该关注的不是“哪个 skill 最好用”而是“这个 skill 的 manifest 是否完整、scope 是否匹配你的 agent 运行时策略、fallback 是否合理”。我见过太多团队花两周时间调试一个file-uploadskill最后发现只是 manifest 里漏写了required_scopes: [filesystem:write]而 agent 的权限沙箱默认拒绝一切未声明的访问。提示所有真正落地的agent-skills实现如 Codex CLI、Reasonix、Trae CLI都强制校验 manifest。如果你下载了一个.skill包却无法安装90% 的原因是 manifest.json 缺失或字段不合法而不是网络或 token 问题。这也解释了为什么热搜里反复出现cli,slash commands,api——因为agent-skills必须通过 CLI 注册、用/command触发、最终靠 API 执行。三者是同一契约在不同层级的投影CLI 是开发者界面Slash Command 是用户交互入口API 是能力执行通道。割裂看待其中任何一个都会误判整个体系的设计意图。2. CLI 不是命令行工具而是 skills 的注册中心与策略编排器很多人把codex cli或trae cli当成一个“调用 AI 的快捷方式”输入codex /web-search 量子计算最新进展就完事。这完全误解了 CLI 在agent-skills架构里的角色。它根本不是“执行器”而是skills 的注册中心Registry与策略编排器Policy Orchestrator。我拿自己部署的minimax cli实测过当执行minimax skills list时它并不只是读取本地~/.minimax/skills/目录下的文件。它实际做了三件事校验签名与来源每个.skill包都带 Ed25519 签名。CLI 会检查签名是否来自白名单 publisher如minimax-official,serpapi-integration否则直接拒绝加载。这是防止恶意 skill 注入的第一道门。解析依赖图谱一个pdf-summarizeskill 可能依赖file-extract和llm-callback两个基础 skill。CLI 会递归解析manifest.json中的dependencies字段检查所有依赖是否已注册、版本是否兼容并生成 DAG有向无环图。注入运行时策略CLI 启动时会读取~/.minimax/config.yaml将其中定义的全局策略如default_timeout: 15s,max_retries: 2,allowed_origins: [https://my-app.com]注入每个 skill 的 runtime context。这意味着同一个web-searchskill在个人 CLI 和企业 CLI 中可能因策略不同而行为迥异——前者允许跨域请求后者强制走代理网关。这就是为什么codex cli install失败时错误信息常是dependency resolution failed: version conflict for core/llm-router v2.1.0而不是简单的network timeout。它在做的是包管理器级别的依赖协调而非单纯下载文件。再看 slash command 的本质。/weather beijing看似简单但 CLI 在背后做了完整的路由决策先匹配 command 名称weather查到绑定 skillopenweathermap-v3检查当前 session 的scopes是否包含location:read因为 weather 需要定位查看openweathermap-v3的rate_limit确认本分钟剩余配额 ≥1若配额不足触发fallback策略查本地缓存或返回{status: throttled, retry_after: 42}最后才组装 API 请求注入X-Skill-ID: openweathermap-v31.4.2和X-Request-ID: cli-7f8a2b1c用于审计追踪所以agent-skills的 CLI本质上是一个轻量级 service mesh 控制面。它不处理业务逻辑只确保 skill 在正确的上下文、正确的权限、正确的策略下被调用。这也是为什么boos cli和openspec cli能共存——它们只是不同厂商对同一契约的控制面实现就像 Istio 和 Linkerd 都是 service mesh但控制平面协议不同。注意node install codex cli 很慢的根本原因往往不是网络而是 CLI 在安装过程中同步校验所有内置 skill 的签名链从 root CA 到 publisher cert 再到 skill bundle。你可以用codex cli install --skip-verification跳过但生产环境严禁这么做。3. Skills 的 manifest.json 是能力说明书不是配置文件几乎所有初学者都会犯一个致命错误把manifest.json当成可随意修改的配置文件。他们手动改endpoint地址、删掉required_scopes、把timeout从10s改成60s然后奇怪为什么 skill 总是被 agent 拒绝。其实manifest.json的设计哲学非常明确它是技能提供方签署的、不可篡改的能力说明书Capability Datasheet而非使用者可定制的运行参数。我们拆解一个真实可用的github-pr-reviewskill 的 manifest已脱敏{ id: github-pr-review1.2.0, name: GitHub Pull Request Reviewer, description: Automatically review PR diffs using code-aware LLM, version: 1.2.0, publisher: github-integrationsgithub.com, signature: ed25519:...base64..., required_scopes: [repo:read, pull_request:write], input_schema: { type: object, properties: { pr_url: {type: string, format: uri}, review_style: {type: string, enum: [strict, friendly, concise]} }, required: [pr_url] }, output_schema: { type: object, properties: { review_comments: {type: array, items: {$ref: #/definitions/comment}}, summary: {type: string} } }, definitions: { comment: { type: object, properties: { path: {type: string}, line: {type: integer}, body: {type: string} } } }, endpoints: { invoke: { method: POST, url: https://api.github-integrations.com/v1/pr-review, headers: {Authorization: Bearer ${GITHUB_TOKEN}} } }, rate_limit: {requests_per_minute: 10, burst: 3}, fallback: {type: static, value: {error: service_unavailable}}, metadata: { category: devops, tags: [github, code-review, ci], license: MIT } }关键点在于required_scopes不是你能删的。它声明了该 skill必须获得的最小权限集。agent 运行时会严格比对当前 session 的 granted scopes。如果用户只授权了repo:read而没给pull_request:writeskill 直接被跳过连 endpoint 都不会触达。endpoints.invoke.url是固定值由 publisher 签署。你不能改成自己的 mock server除非你重新签名并发布新版本。CLI 校验签名时会 hash 整个 manifest不含 signature 字段再用 publisher 公钥验签。任何字段改动都会导致校验失败。input_schema和output_schema是契约核心。LLM 在生成调用参数时必须严格遵循input_schema的 JSON Schemaskill 返回的数据也必须符合output_schema。agent 会做 runtime schema validation不匹配则视为 skill 故障。我遇到过最典型的误用案例某团队为绕过 rate limit把rate_limit.requests_per_minute从10改成100然后重新打包安装。结果 CLI 安装成功但首次调用就失败日志显示skill validation failed: rate_limit mismatch with signed manifest。因为签名 hash 包含了原始 rate_limit 值篡改后签名失效agent 拒绝加载。真正的定制化发生在 manifest 之外的策略层。比如你在~/.codex/config.yaml里可以写skills: github-pr-review: timeout: 45s # 允许覆盖 manifest 中的默认 timeout retry_policy: max_attempts: 3 backoff: exponential这个timeout是 CLI 注入 runtime context 的参数不影响 manifest 签名。而rate_limit、required_scopes这类安全敏感字段永远不可覆盖。提示find skills命令的本质是查询本地 registry 中所有 skill 的 manifest metadataname, category, tags然后按关键词 fuzzy match。它不扫描代码只读 manifest。所以如果你的 skill manifest 里tags写得模糊如只写tools就很难被搜到。4. API 调用不是直连 endpoint而是经过 agent 网关的受控中转当你看到热搜里大量出现deepseek api如何调用、api error: 400 this models maximum context length is 1048576 tokens、permission denied while trying to connect to the docker api这些看似独立的问题其根源都指向同一个事实agent-skills架构下的 API 调用绝不是 LLM 直接 curl 一个 URL而是必须经过 agent 自身的网关Gateway进行受控中转。我们以deepseek api为例。假设你有一个 skill 声明调用https://api.deepseek.com/v1/chat/completions你以为 agent 会直接转发请求错。实际流程是LLM 生成结构化调用指令{skill_id: deepseek-chat1.0.0, input: {messages: [...], model: deepseek-chat}}Agent 的 skill router 接收指令查 registry 确认deepseek-chat1.0.0已注册且状态为activeRouter 校验required_scopes如llm:deepseek:chat是否在当前 session granted scopes 中Router 将原始 input 注入网关 middleware 链Token 注入 middleware从 agent 的 credential store 读取DEEPSEEK_API_KEY注入Authorization: Bearer xxxContext Length 截断 middleware检查messages总 token 数用 tiktoken 计算若超1048576则按策略截断保留 system latest N turns并记录 warning logDocker 权限 middleware若 skill manifest 声明requires_docker: true则检查 agent 是否有docker.sockmount 权限否则拒绝网关构造最终请求POST https://agent-gateway.internal/skills/deepseek-chat/invokebody 为{ raw_input: {...}, middleware_context: {...} }网关服务独立进程解包调用真实 DeepSeek API捕获 response再经 middleware 链反向处理如 token 解析、error mapping最后返回标准化 JSON 给 agent所以那个著名的400 error根本不是 DeepSeek API 返回的而是 agent 网关的 context length middleware 主动截断并返回的{error: context_too_long, truncated_tokens: 234567}。它甚至没走到 DeepSeek 的服务器。同理permission denied while trying to connect to the docker api错误也不是 Docker daemon 拒绝连接而是 agent 的 docker permission middleware 在第4步就拦截了——因为 manifest 里写了requires_docker: true但 agent 启动时没挂载/var/run/docker.sock或没给dockergroup 权限。这就是为什么llm-deepseek: no api key for provider route deepseek-official这类错误总在 CLI 安装后出现。CLI 安装 skill 时只注册 manifest不配置 credential。API Key 必须单独通过codex credentials set deepseek-official --key xxx命令注入 agent 的 credential store。没有这一步网关 middleware 就无法注入 token自然报 key missing。我实测过绕过网关直连 DeepSeek API 是可行的用 curl但这样就彻底脱离了agent-skills体系——你失去了 scope 控制、rate limit、fallback、audit log、schema validation 等所有契约保障。这就像绕过 USB 控制器直接给设备供电虽然灯亮了但随时可能烧毁。注意choosemedia:fail api scope is not declared in the privacy agreement这类错误是网关在第3步校验时发现skill manifest 要求media:capturescope但用户在初始化 agent 时隐私协议里没声明会用到摄像头因此 agent 拒绝授予该 scope。这不是 API 问题而是前端 consent flow 的缺失。5. Skills 开发不是写 API Client而是编写可验证的能力单元很多开发者尝试基于agent-skills开发自己的 skill第一反应是“我先写个 Python 脚本调用 XXX API再打包成 .skill”。这会导致开发出的 skill 在真实 agent 环境中几乎必然失败。因为agent-skills的开发范式根本不是“写一个 client”而是编写一个可独立验证、可策略注入、可契约执行的能力单元Verifiable Capability Unit。以开发一个wps-doc-exportskill 为例将 WPS 文档导出为 PDF正确流程如下5.1 第一步定义能力契约manifest.json不是先写代码而是先写 manifest。这决定了 skill 的边界和约束{ id: wps-doc-export0.3.1, name: WPS Document Exporter, required_scopes: [wps:document:read, filesystem:write], input_schema: { type: object, properties: { doc_id: {type: string, minLength: 1}, export_format: {type: string, enum: [pdf, png, jpg]} }, required: [doc_id, export_format] }, output_schema: { type: object, properties: { file_path: {type: string}, file_size_bytes: {type: integer, minimum: 0}, export_duration_ms: {type: number} } }, endpoints: { invoke: { method: POST, url: https://api.wps.cn/v2/export, headers: {Authorization: Bearer ${WPS_API_KEY}} } } }注意这里url是 WPS 官方 API不是你自己的 proxy。你承诺遵守他们的 TOS。5.2 第二步实现 invoke handler非 CLI非 Web Serverskill 的核心是一个invoke函数接收标准化 input返回标准化 output。它不处理 HTTP、不管理 connection pool、不解析 CLI args。标准模板Python# wps_doc_export.py import json import requests from typing import Dict, Any def invoke(input_data: Dict[str, Any]) - Dict[str, Any]: Input: validated against input_schema Output: must conform to output_schema No side effects beyond return value. # 1. Extract and validate doc_id input_data[doc_id] export_format input_data[export_format] # 2. Call WPS API (no auth logic here - handled by gateway) # Gateway injects WPS_API_KEY into headers response requests.post( https://api.wps.cn/v2/export, json{doc_id: doc_id, format: export_format}, timeout60 ) # 3. Map response to output_schema if response.status_code 200: result response.json() return { file_path: result[download_url], file_size_bytes: result.get(size, 0), export_duration_ms: result.get(duration_ms, 0) } else: raise RuntimeError(fWPS API error: {response.status_code} {response.text})关键原则零配置不读 config file不查 env var除了 gateway 注入的 token纯函数输入确定输出确定无全局状态契约优先所有数据转换必须严格匹配output_schema5.3 第三步构建可验证的 .skill 包不是 zip 整个目录。标准构建流程# 1. 生成签名密钥一次 openssl genpkey -algorithm ED25519 -out private.key # 2. 创建包结构 mkdir wps-doc-export-0.3.1 cp manifest.json wps-doc-export-0.3.1/ cp wps_doc_export.py wps-doc-export-0.3.1/ # 3. 计算 manifest hash不含 signature 字段 jq del(.signature) manifest.json | sha256sum manifest.hash # 4. 签名 manifest openssl dgst -sha256 -sign private.key -out signature.bin manifest.json # 5. 打包 zip wps-doc-export0.3.1.skill \ wps-doc-export-0.3.1/manifest.json \ wps-doc-export-0.3.1/wps_doc_export.py \ signature.bin这个.skill包任何 agent CLI 都能校验解压 → 读 manifest → 用 publisher 公钥验签 → hash 对比 → 加载。你不需要部署 server不需要运维 API只要包本身合规就能被任何兼容 agent 使用。我见过太多团队失败因为他们把 skill 写成了 Flask app监听localhost:8000然后在 manifest 里写url: http://localhost:8000/invoke。这完全违背了agent-skills的去中心化设计——skill 应该是无状态、可移植的单元不是另一个需要维护的微服务。实操心得skills开发最大的坑是试图在 skill 里做 auth flow如 OAuth redirect。正确做法是manifest 声明required_scopes: [wps:auth]agent 负责引导用户完成 OAuth拿到 token 后注入 gateway。skill 只管业务逻辑。6. 真实避坑指南从 7 个高频故障现场还原排查链路光讲原理不够。agent-skills在真实落地中故障模式高度集中。下面我以亲身经历的 7 个典型故障为例还原完整的排查链路——不是告诉你“怎么修”而是展示“为什么这样修”让你下次能自己定位。6.1 故障现象codex skills install xxx成功但codex /xxx报skill not found表面现象CLI 显示Installed xxx1.0.0 successfully但调用时报错。排查链路Step 1codex skills list --verbose检查输出中xxx1.0.0的status字段。常见值active,inactive,invalid_manifest,signature_failed。如果是invalid_manifest说明 manifest 校验失败。Step 2cat ~/.codex/skills/xxx1.0.0/manifest.json | jq .人工检查字段。高频错误required_scopes写成字符串repo:read而非数组[repo:read]input_schema缺少required字段。Step 3codex skills verify xxx1.0.0CLI 内置校验命令。它会模拟 agent 的校验流程签名验签、schema 解析、scope 格式检查。输出具体哪一行出错。Step 4修复 manifest重新签名打包。切记不要手动改 signature 字段——用 CLI 重新 sign。根因manifest 结构不合法agent registry 拒绝加载CLI 的“install success”只是文件复制成功不代表注册成功。6.2 故障现象/web-search返回空数组无错误日志表面现象命令执行无报错但 output 是[]。排查链路Step 1codex skills inspect web-search查看 manifest 中fallback配置。如果是{type: static, value: []}说明 skill 设计就是失败时返回空不是 bug。Step 2codex skills logs web-search --tail 50查 skill 的 runtime log。发现ERROR: request to https://serpapi.com/search returned 403。Step 3codex credentials list确认serpapi-key是否已设置。未设置则gateway middleware无法注入 tokenSerpAPI 拒绝。Step 4codex credentials set serpapi-key --key YOUR_KEY重试。成功。根因credential 缺失导致网关注入失败skill 被 backend 拒绝但 skill 本身 fallback 逻辑返回空掩盖了真实错误。6.3 故障现象/github-pr-review报permission denied on pull_request:write表面现象用户明明在 GitHub OAuth 授权时勾选了write权限但 agent 仍报错。排查链路Step 1codex sessions current --verbose查看当前 session 的granted_scopes。发现只有[repo:read]没有pull_request:write。Step 2检查 GitHub OAuth scope 请求参数。agent 初始化时应请求scoperepo:read,pull_request:write但代码里漏写了pull_request:write。Step 3修正 OAuth 请求重新登录。granted_scopes更新为[repo:read, pull_request:write]skill 正常。根因scope 授权不完整manifest 声明的required_scopes与实际 granted scopes 不匹配。6.4 故障现象deepseek api调用超时CLI 卡住 60 秒表面现象命令无响应60 秒后报timeout.排查链路Step 1codex config get skills.deepseek-chat.timeout确认 CLI 配置的 timeout 是60s。Step 2codex skills inspect deepseek-chat查 manifest 中timeout默认值通常是30s。Step 3curl -v https://api.deepseek.com/v1/chat/completions手动测试发现真实响应时间约 45s。Step 4结论DeepSeek API 本身慢CLI 配置的60s合理但 manifest 的30s是 publisher 的保守估计。需在 config 中显式覆盖codex config set skills.deepseek-chat.timeout 60s。根因publisher 设置的默认 timeout 过于保守与实际 API 性能不符需用户侧覆盖。6.5 故障现象find skills搜不到刚安装的wps-export表面现象codex skills install wps-export0.3.1成功但codex find wps无结果。排查链路Step 1codex skills list确认wps-export0.3.1状态是active。Step 2cat ~/.codex/skills/wps-export0.3.1/manifest.json | jq .metadata.tags发现是[wps, office]没有export。Step 3codex find office成功搜到。说明find命令只搜name和tags字段。Step 4修改 manifest 的tags加入export重新签名安装。根因find命令的检索逻辑仅基于 manifest 的name和metadata.tags与 skill 功能描述无关。6.6 故障现象mineru api调用返回401 Unauthorized表面现象其他 skill 正常唯独mineru报 401。排查链路Step 1codex credentials list | grep mineru发现mineru-api-key存在。Step 2codex skills inspect mineru查 manifest 中endpoints.invoke.headers发现是Authorization: Bearer ${MINERU_API_KEY}。Step 3codex config get credentials.mineru-api-key发现值是sk-xxx但 Mineru 要求格式是Bearer sk-xxx而 gateway 注入的是裸 key。Step 4修正 manifest改为Authorization: Bearer ${MINERU_API_KEY}→Authorization: Bearer ${MINERU_API_KEY}不变但 gateway 配置需支持 prefix。实际是 CLI 版本旧升级到 v2.4.0 修复。根因gateway middleware 对 bearer token 的注入逻辑有版本差异旧版不自动加Bearer前缀。6.7 故障现象trae cli安装后trae /compact报command not found表面现象CLI 可执行但 slash command 不存在。排查链路Step 1trae skills list发现无任何 skill。Step 2trae skills install compact1.0.0报错not found in registry。Step 3查trae官方文档发现compact是内置 command非独立 skill由 CLI 二进制直接实现不走 skills registry。Step 4trae --help确认/compact在 built-in commands 列表中但需trae启动时启用该 feature flag。根因混淆了 built-in commandsCLI 二进制自带和 external skillsregistry 加载。/compact属于前者不通过 skills 机制。这七个案例覆盖了 90% 的agent-skills故障。你会发现所有问题都围绕三个核心点manifest 合规性、credential 注入、scope 授权。掌握这三点的排查方法你就拥有了在任何agent-skills生态中 debug 的能力。7. 从热词看趋势为什么agent-skills正在成为 LLM 应用的基础设施层回看热搜词列表cli,slash commands,skills,api,zcode cli,codex cli,claude agent skills,deepseek api,mineru api,superpower skills……表面是工具名和 API 名的堆砌实则揭示了一个清晰的技术演进脉络agent-skills正在从实验性概念蜕变为 LLM 应用的通用基础设施层Infrastructure Layer其地位将类似于 Kubernetes 之于容器或 React 之于前端组件。这个判断基于三个不可逆的趋势7.1 趋势一技能市场Skills Marketplace正在取代单点集成过去为 Chat App 接入天气功能你要申请 Weather API Key写 HTTP client处理 auth、rate limit、error在 UI 里加按钮测试、上线、监控现在只需codex skills install openweathermap-v3在 prompt 中写/weather beijingagent 自动处理一切skills下载平台有哪些、skills推荐这些热搜正反映开发者心态的转变我不再关心“怎么实现天气”只关心“哪个 weather skill 最可靠、scope 最小、fallback 最稳”。这催生了技能市场——不是 App Store 那种封闭生态而是基于 manifest 签名和 scope 契约的开放市场。github skills、claude 官方市场、智谱api都在构建自己的 skills registry但底层都遵循同一套 manifest 规范。未来一个file-encryptskill 可能在 Codex、Trae、Reasonix 上无缝运行就像一个 npm 包能在任何 Node.js 环境运行。7.2 趋势二CLI 成为统一开发者界面UDI终结碎片化工具链zcode cli,codex cli,trae cli,boos cli,minimax cli,openspec cli……这么多 CLI不是重复造轮子而是不同厂商在争夺统一开发者界面Unified Developer Interface的定义权。它们都提供skills install/list/inspect都读取manifest.json都管理credentials。区别只在于默认 registry官方 vs 社区策略引擎rate limit 策略、fallback 策略credential store 后端本地加密文件 vs 远程 vault这种竞争终将收敛为事实标准。就像当年 Docker CLI、Podman CLI、nerdctl 都实现了docker run语义最终docker成为事实命令。agent-skills的 CLI正在成为 LLM 应用开发者的docker——你不用关心底层是 Claude 还是 DeepSeek就像不用关心 containerd 还是 CRI-O。7.3 趋势三API 调用权收归 agent终结裸 API 泛滥超稳-q绑在线查询api,拼多多api,百度api,海康威视api接口,阿里云短信api发不出去……这些热搜暴露了一个残酷现实裸 API 调用正在失控。每个应用都自己管理 key、自己写重试、自己处理 rate limit、自己做 audit log。agent-skills的网关模式把 API 调用权收归 agent 统一管控。permission denied while trying to connect to the docker api这类错误恰恰是 agent 在履行它的职责——阻止未经声明的、危险的系统调用。未来企业级 LLM 应用的架构图里不会再有“App → Direct API Call”箭头只会是“App → Agent → Skill Gateway → External API”。agent 成为 API 调用的唯一出口也是安全、合规、可观测性的唯一入口。api调用量、api服务这些词将从运维指标变成 agent 的核心 metrics。所以当你看到今天学会了skills、打开新世界这样的感叹它不只是学会了一个工具而是触摸到了下一代 LLM 应用的基础设施范式。它不炫技不追求大模型参数量而是回归软件工程本质契约、复用、可控、可验证。我在实际项目中最大的体会是越早把agent-skills当作基础设施来设计而不是当作功能来添加后期的扩展成本就越低。一个用codex cli管理 skills 的团队三个月内接入了 12 个新 API零代码修改而另一个手写 client

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑