Skip to content
⚡ 高效工作流第 5 / 5 节

与 Claude Code 配合开发:TypeSafe Agent Skill ​

前三课把官方四种架构模式拆完了:并行提问与投机扇出、智能路由、组合打分。阶段导读里说过,第 4 课解决最后一个问题:这些代码谁来写。

官方的答案:你的 coding agent 来写——前提是给它装上 TypeSafe Agent Skill,一个把 TypeSafe 题型、架构模式、请求写法打包进 agent 工作流的官方 skill。这一课同时拆掉一个流行误解:Jev 不是拿来替换 Claude Code 背后模型的。全程 10 分钟。

学完你能做什么 ​

  • 用两条命令在 Claude Code 里装好 TypeSafe Agent Skill,其他 agent(Codex 等)一条 npx 命令,并说出更新与自动更新的做法
  • 用 3 个官方示例 prompt 驱动 agent:探索项目找接入点、用你的 API key 跑便宜实验、对照官方 cookbook 提重构方案
  • 说清 Jev 与 coding agent 的分工:agent 写代码,Jev 在代码里做判断——不存在把 agent 背后的模型换成 Jev 的配置
  • 按「问题与阈值收进一个文件」组织 Jev 集成,让 agent 的产出可审、可协作修改
  • 用官方 5 个常见问题的排查路径定位故障:skill 不加载、编造字段、路由不符预期……

你现在的困境 ​

  • 我让 Claude Code 给项目接 Jev,它没读过文档,张手就写:字段名是编的(比如给 Noul 答案读 .confidence——Noul 根本没有这个字段),一跑就报错。我贴半页文档给它,改完这处又编那处
  • 我看好 Jev「快而便宜、答案带概率」,想在项目里找接入点,但官方文档一百多页,不知道让 agent 从哪读起;自己挑着翻译进 prompt,又总漏关键规则
  • agent 写的 questions 不敢上线:选项描述含糊、一题塞三个判断、阈值随手写死。代码能跑,答案不稳;review 的时候问题定义散在五个文件里,翻不动

什么时候用这一招 ​

当你需要:

  • 让 Claude Code、Codex 等 agent 直接写出正确的 Jev 调用代码——不用每次把文档贴进上下文
  • 在现有项目里系统排查:哪些复杂解析、关键词表、脆弱启发式可以换成一道类型化问题
  • 让 agent 用真实 API 实验验证问题措辞,而不是拍脑袋断言「应该能跑」

而且不想:

  • 手动喂文档:费上下文,还喂不全
  • 反复纠正 agent 编造的字段和过期用法
  • 收到一坨问题定义散落各处、没人审得动的集成代码

这正是 SKILL.md 里写的适用场景:构建、审查、调试调用 TypeSafe 的代码时;把「LLM prompt 再解析」、关键词匹配或脆弱启发式换成类型化问题时;或者 brainstorm「可编程常识」能塞进应用哪里时。

🎒 开始前的准备 ​

  • 读过高效工作流阶段导读:知道本课是阶段第 4 课,解决「谁来写代码」
  • 装有 Claude Code,或你在用的其他 coding agent(Codex、Cursor、opencode 等)——本课不教 agent 本身的安装
  • 想跑第 4 步实验:第一个请求那课的 TYPESAFE_API_KEY 还能用;没有就去 console.typesafe.ai/keys 建一个
  • 手边最好有一个真实项目——第 3 步的示例 prompt 就是让 agent 分析你的代码

核心思路 ​

先摆正 Jev 的位置。 官方在 coding-agents 文档里开宗明义:Jev 不是 Claude Code、Cursor、opencode、Copilot、Muse Spark、Grok Bot 或类似工具背后 LLM 的直接替代品;你照常用 coding agent,让它写「调用 Jev 做决策」的代码。

Jev 是 System One 决策模型:不生成文本、不写代码、不对话,只回答类型化问题。官方原话:不存在 model: "jev-latest" 这种配置,能把你的 coding agent 变成 Jev 驱动的 agent——两套系统解决的问题不同。

那 TypeSafe Agent Skill 装的是什么? 不是换模型,是给 agent 装上下文。官方对 skill 的定义:给 coding agent 关于 TypeSafe API 的完整上下文——题型、架构模式、组织请求的最佳实践。外加一份「live docs 指南」:SKILL.md 明确要求 agent 把 docs.typesafe.ai 当请求语法、SDK、限额的事实来源,而不是凭训练记忆。

对比维度没装 skill 的 agent装了 skill 的 agent
API 字段凭记忆写,字段名可能是编的按官方题型写;不确定就查 live docs
问题设计一个 prompt 塞所有判断,输出 JSON 再解析一题一判断,答案类型化,代码直接分支
架构想到哪写到哪按官方模式组织:并行提问、门控、组合打分
验证方式断言「应该能跑」实测 API,保留每个案例的 payload

skill 教给 agent 的核心哲学:判断给 Jev,决策留代码。 SKILL.md 把每个决策看成一张真值表:Jev 供应输入(「客户听起来沮丧吗?」「这条消息在说哪个产品?」),代码持有把输入映射到动作的逻辑。反过来,让 Jev 直接做决定的问题(「这张工单该升级吗?」「agent 下一步该干什么?」)说明问题问错了层——把决策拆成它依赖的判断,决策本身写进代码,可见、可测。前三课的代码全是这个形态:Jev 给 intent 和 complexity,if/elif 决定路由。

如果你是带着别的期待来的,官方还给了一张对照表:

你本来想…正确做法
让 coding agent 更擅长写调用 TypeSafe 的代码装 TypeSafe agent skill(本课)
在你构建的应用里用 Jev 做路由、分类、打分、护栏从第一个请求起步,模式看本阶段前三课
换掉 coding agent 背后的模型Jev 不干这个。继续用 LLM coding agent,在产品需要快速、校准、结构化决策的地方单独用 Jev
不写代码先试试 Jev开 Playground(console.typesafe.ai/playground),贴 state 加问题

跟我做 ​

第 1 步:安装 TypeSafe Agent Skill ​

为什么:agent 没读过 TypeSafe 文档时,只能凭训练记忆写调用,字段名容易编错。skill 把官方集成经验一次性装进 agent 的工作流,后面所有步骤都建立在这上面。

方式 A(推荐):Claude Code 插件 ​

bash
claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai

你应该看到:两条命令正常结束、没有报错。官方文档没有给出具体的输出文案,装没装成,以下一步的验证为准。

方式 B:其他 agent(Codex 等,走 skills.sh) ​

bash
npx skills add typesafe-ai/skills --skill typesafe-ai

按提示选择你正在用的 agent。默认装到当前项目;想全局可用加 -g。

方式 C:让 agent 自己装 ​

把这段官方 prompt 原样贴给 agent,它自己判断环境并执行:

text
Install the TypeSafe skill. If you're in Claude Code, run `claude plugin marketplace add typesafe-ai/skills`, then `claude plugin install typesafe@typesafe-ai`. If you're in another agent, run `npx skills add typesafe-ai/skills --skill typesafe-ai` and select your agent. Use one installation method. You can read the skill directly at https://github.com/typesafe-ai/skills/blob/main/skills/typesafe-ai/SKILL.md (raw: https://raw.githubusercontent.com/typesafe-ai/skills/main/skills/typesafe-ai/SKILL.md). Then use the TypeSafe skill when working on this project.

⚠️ 只选一种方式

官方明确提醒:多种方式混用会产生重复副本(duplicate copies)。手动安装的话,把 skills/typesafe-ai 整个目录(含参考文件)复制进 agent 的 skills 目录。

  • 我只用了一种安装方式

第 2 步:点名调用,确认 skill 已加载 ​

为什么:装好 ≠ agent 会主动用。官方的使用方式是「在 prompt 里点名」——说 "use the TypeSafe skill" 在任何 agent 里都管用;Claude Code 插件还可以直接调命令。

在 Claude Code 里输入:

text
/typesafe:typesafe-ai

或在给其他 agent 的消息里写:

text
Use the TypeSafe skill when working on this project.

你应该看到:agent 的回应里出现 TypeSafe 语境——提起 state、questions、Choice/Score/Noul 这些题型,或主动去读 docs.typesafe.ai 的 live 文档。SKILL.md 把 live docs 定为请求语法与限额的事实来源,装好 skill 的 agent 会先查再写,而不是上来就编。

没加载?官方排查两步:确认安装命令装的就是你正在用的这个 agent(方式 B 安装时会提示选择)→ 重启 agent 再试。

  • agent 的回复里有题型 / state / questions 语境,而不是自由发挥

第 3 步:用官方示例 prompt 让 agent 找出项目里的接入点 ​

为什么:最好的入门不是你告诉 agent 在哪接 Jev,而是让带着 skill 的 agent 自己找。官方把这条列为「a good prompt to start with」。

在你的项目目录里,把这段发给 agent(官方原文):

text
Using the TypeSafe skill, explore the project and find opportunities for using
intelligent judgement to stand in for complex parsing or other fragile code.

你应该看到:agent 扫描代码,指出脆弱的解析、关键词表、启发式规则的位置,并提议哪些可以换成「类型化问题 + 代码决策」。

判断提议质量的标准就是核心思路那张真值表:好的提议长成「这里加一道 Choice / Noul,代码按答案分支」;如果 agent 提「让 Jev 决定是否升级工单」,那是把决策塞给了模型——SKILL.md 明说这种问题问错了层,让它拆成判断再改。

  • agent 的提议是「加判断、代码分支」的形态,而不是「让 Jev 做决定」

第 4 步:让 agent 跑便宜实验、对照 cookbook 提重构方案 ​

为什么:找到位置只是计划。skill 工作流的第 3 步是「probe the live API」——用真实请求验证问题措辞,直到应用表现符合预期。官方给了两个现成 prompt。

先导出 key(没有就去 console.typesafe.ai/keys 创建):

bash
export TYPESAFE_API_KEY="<你的API Key>"

实验 prompt(官方原文):

text
Using the TypeSafe skill, run some experiments using the TypeSafe API key that I've
exported to `TYPESAFE_API_KEY`. Propose changes based on the most promising results.

你应该看到:agent 先向你要许可——SKILL.md 要求它先征得同意、说明会发送什么数据(尤其个人或隐私数据)、声明会用到你的 key,然后才发测试请求。测试会用代表性案例 + 难例 + 答案为「否」的负例,每个案例保留完整请求 payload,最后基于最有希望的结果提议改动。

再让 agent 对照官方 cookbook 找重构机会(官方原文):

text
Using the TypeSafe skill, analyze my code and see if there are any applicable
cookbooks (https://docs.typesafe.ai/cookbooks) that show how I could
refactor my code to be less fragile or complex.

你应该看到:agent 指出与你代码相似的官方 cookbook——比如脆弱的邮箱/电话提取对应 pre-parsed value extraction、复杂分发逻辑对应 intent routing——并给出按 cookbook 模式重构的方案。这些 cookbook 的完整落地就是下一阶段的场景实战。

💡 实验预算与安全

SKILL.md 原话:TypeSafe 非常便宜,一点预算就能跑很远(a little can go a very long way)。给 agent 一个实验预算上限,并确认它的运行环境能访问 API 端点。写进生产代码时,skill 的集成守则要求 key 留在服务端。

  • agent 发请求前先征得了我的许可,并说明了会发什么数据

第 5 步:把问题与阈值收进一个文件,交给人审 ​

为什么:agent 写代码快,但官方提醒「Agents aren't great at writing questions」——问题措辞、选项描述、阈值是集成里最需要人把关的部分,也是审阅时最常改的部分。集中到一个文件,你和 agent 的协作编辑才有落点。

比如把智能路由课的路由问题收进 questions.py(结构沿用官方模式页的写法):

python
# questions.py —— 所有问题与阈值集中在这里;改措辞、调阈值只动这个文件
from typesafe_sdk import Choice, Score

ROUTING_QUESTIONS = {
    "intent": Choice(...),      # 完整定义见「智能路由」课第 1 步
    "complexity": Score(...),
}

# 阈值也收在这里:兜底线与各动作的风险阈值分开
CONFIDENCE_FLOOR = 0.5          # 分类兜底:低于它先转人工
TRANSFER_THRESHOLD = 0.85       # 高危动作:过了它才免确认自动执行

官方的四条协作原则(agent-skill.md「Good vibe coding principles」):

  1. 先和 agent 把方案聊透——用上面的示例 prompt 当起点
  2. 动手实现之前,人先把计划过一遍,确认它说得通
  3. 常量(问题与阈值)收在一个地方方便审阅;agent 不擅长写问题,预期是协作编辑
  4. 别把 agent 的断言当事实——鼓励它验证自己的假设

你应该看到:项目里有一个单独文件装着全部问题定义与阈值常量。agent 后续改业务逻辑不碰它;调问题措辞时,你只审这一个文件的 diff。

  • 问题与阈值在一个文件里;agent 提的方案我先审再让它动手

检查点 ✅ ​

  • 我能说出 Jev 在 coding agent 里的位置:不是背后的模型,是 agent 写的代码里的决策引擎
  • Claude Code 里 /typesafe:typesafe-ai 能调出 skill;其他 agent 里点名 "use the TypeSafe skill" 生效
  • 三个官方示例 prompt 我跑过至少一个:找接入点 / 跑实验 / 对照 cookbook
  • 问题与阈值收在一个文件里,改措辞只动它
  • agent 编造字段时,我知道第一反应是更新 skill 再重试

踩坑提醒 ​

❌ 装了 skill,agent 还是不用 ​

现象:插件装完,agent 写 Jev 代码时依然自由发挥。官方排查路径:Claude Code 里直接调 /typesafe:typesafe-ai;其他 agent 在 prompt 里点名 "use the TypeSafe skill"。还不行,确认安装时选的目标 agent 没选错,然后重启 agent。

❌ agent 编造请求/响应字段 ​

现象:代码里出现文档里没有的字段——比如给 Noul 答案读 .confidence,而 Noul 只有 0–1 的 noul 值。官方诊断:skill 过期(stale skill)。用你的安装方式更新后重试:

bash
claude plugin marketplace update typesafe-ai
claude plugin update typesafe@typesafe-ai

然后重启 Claude Code 或运行 /reload-plugins。想省心可以开自动更新:/plugin → Marketplaces → typesafe-ai → Enable auto-update。skills.sh 装的用 npx skills update;手动复制的,整个目录换成 GitHub 最新版。

❌ 结果不符预期,先怀疑模型 ​

现象:分类或路由开始误判。官方排查顺序是先查问题和阈值:阈值太高造成假阴性(该自动的没自动),太低造成假阳性(没把握的被放行);然后再把问题写得更具体。智能路由课的踩坑提醒有展开。

❌ 到处设 confidence 阈值 ​

官方提醒:只关心选出最优选项时,直接取 confidence 最高的答案即可;有特定统计算法需求,应该用 probabilities。这条在智能路由课已展开,不重复。

❌ agent 写的 TypeSafe 代码审不动 ​

现象:review 时问题定义散落五个文件,找齐一套阈值要翻半天。官方建议:人最该审的是问题措辞和阈值常量,把它们收在一个代码文件里,不用到处翻——就是第 5 步做的事。

进阶技巧(可选) ​

读一遍 SKILL.md 本身。 skill 就是一个 288 行的 Markdown 文件(MIT 协议,github.com/typesafe-ai/skills),四块核心内容:判断与决策分层(真值表)、state 设计的「人类测试」(只看这个 state,一个聪明人能凭直觉快速回答吗)、问题措辞规则(一题一判断;选项名要描述内容,因为问题 ID 不发给模型)、答案解读(confidence 很少当闸门、Noul 0.7/0.3 起点阈值、看 Score 分布)。大部分规则前几课讲过(Noul、Confidence),剩下值得整篇读的是「黄旗清单」。

用 skill 的五步排查顺序对付「答案看起来不对」。 SKILL.md 给的检查顺序:① 实际发送的 payload → ② state 过不过人类测试 → ③ 选项里到底有没有正确答案 → ④ 问题能不能再拆小 → ⑤ 措辞。全查过仍错,去查模型的已知弱点:Jev 1.13 踩坑手册。

认识「黄旗」(prompt gymnastics)。 官方列的黄旗:为特定测试项写死的 criteria、每挂一个案例就加一条从句、为模型怪癖找说辞的 caveat、拟合特定案例的阈值、断言精确概率的测试、悄悄覆盖答案的代码。这些「为凑出特定值写的措辞」倾向在新输入和下一个模型版本上崩;结构性修复优先——更好的 state、拆出独立问题、或改代码。

本课小结 ​

✅ TypeSafe Agent Skill 两条命令装进 Claude Code(claude plugin marketplace add typesafe-ai/skills → claude plugin install typesafe@typesafe-ai);其他 agent 一条 npx skills add;只选一种方式,避免重复副本。

✅ Jev 与 coding agent 的分工:agent 写代码,Jev 在代码里做判断;不存在 model: "jev-latest" 配置把 agent 变成 Jev 驱动。

✅ 三个官方示例 prompt:探索项目找接入点、用 TYPESAFE_API_KEY 跑便宜实验、对照 cookbook 提重构。

✅ 协作原则:计划先审再实现;问题与阈值收一个文件;agent 不擅长写问题,预期协作编辑;别把断言当事实。

✅ 五个常见问题的排查:不加载 → 点名 / 查目标 / 重启;编造字段 → 更新 skill;不符预期 → 先查阈值与问题;只选最优 → 不设阈值;难审 → 常量集中。

关键命令速查:

事项命令 / 做法出处
Claude Code 安装claude plugin marketplace add typesafe-ai/skills → claude plugin install typesafe@typesafe-aidocs/agent-skill.md
其他 agent 安装npx skills add typesafe-ai/skills --skill typesafe-ai(项目级默认,-g 全局)同上
Claude Code 调用/typesafe:typesafe-ai(任何 agent 通用:点名 "use the TypeSafe skill")同上
插件更新claude plugin marketplace update typesafe-ai → claude plugin update typesafe@typesafe-ai,重启或 /reload-plugins同上
skills.sh 更新npx skills update同上
自动更新/plugin → Marketplaces → typesafe-ai → Enable auto-update同上
skill 仓库github.com/typesafe-ai/skills(MIT;2026-11-03 核对:SKILL.md 288 行,与线上逐字一致)实时抓取核对

下一课预告 ​

四种模式练完,agent 也能替你写代码了。下一站把整套东西带进真实项目——场景实战:选择你的路线,官方 cookbook 落地成的 15 个完整案例。

你会学到:

  • 按路线挑案例:每个案例都是「state 设计 + 类型化问题 + 代码决策」的完整形态
  • LLM 护栏:一次请求给 LLM 应用的出入消息全安检
  • 引文核查、RAG 段落把关这类生产级任务怎么落地
  • 前三课的模式在每个案例里怎么组合使用
搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。