关于 caveman-discover
caveman-discover 是一项由操作人员调用的技能,用于查找代码库中的 LLM 工作流,并为经 Caveman 网关路由的调用添加标签。它先提交工作流表供审批,再修改代码并验证结果。
主要功能
- 01盘点 LLM 工作流入口
- 02使用有效 slug 命名工作流
- 03修改前征求审批
- 04标记经网关路由的调用
- 05验证已标记路径
适用场景
- 01为 Caveman Cloud 标记代码库工作流
- 02在改代码前审核工作流名称
- 03检查已执行路径的网关标签
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ juliusbrussee/ caveman --skill caveman-discover安装后在 Claude Code 中输入/caveman-discover确认已加载。
详细介绍
你正在为 Caveman Cloud 标注此代码库的 LLM 工作流。工作流是代码执行的一项任务——例如“回复支持工单”“生成每晚摘要”“运行评测套件”——而不是某种技术。每个网关请求都可以携带工作流标签;未标注的流量都会归入同一个 unlabeled-workflow 分类。你的任务是找出工作流,为它们起好名称,接入标签,并验证没有造成问题。
这会修改代码,因此要遵循用户的常规审核流程:先提出表格,获得用户同意后再应用。 对已标注的代码库重复运行时,不得做出任何更改(保持幂等)。
此技能由操作者手动调用。unlabeled-traffic Cave Plan 观测仅供审核,不会创建 advisory 文件、提案或 Draft PR。不要推断遥测数据选定了某个调用点,也不要推断它授权了编辑。请独立盘点代码库,展示标注表,并等待用户批准后再修改代码。
第 1 步 — 盘点工作流
从代码库的入口开始梳理,而不是从导入语句开始:
- 调用 LLM 的 HTTP/RPC 处理程序(直接调用或经由多层封装)
- 定时作业:调用 LLM 代码的 cron 定义、队列消费者、worker、GitHub Actions
- CLI 命令和脚本(
scripts/、bin/、package.json 脚本) - 会消耗实际 token 的评测 / 测试工具
- 框架中不同的 Agent 或链(通常每个 LangGraph 图、每个 crew、每个 Agent 定义都是独立的工作流)
一个工作流 = 一项人们会命名的任务。同一个请求处理程序中的十个调用点算作一个工作流;三个作业共用的 llm.ts 辅助工具算作三个工作流(在调用方标注,绝不要在共用的辅助工具中标注)。
第 2 步 — 命名
Slug 语法(网关会强制执行):小写 [a-z0-9_-],长度为 1–96 个字符。命名任务,而不是技术:
- 好:
support-reply、nightly-digest、pr-review、eval-suite、onboarding-email - 不好:
openai-calls(技术)、main(毫无说明)、SupportReply(无效)、johns-test-3(不适合长期使用)
名称几乎是永久的——之后重命名会拆分支出历史记录。如果无法从代码中明确判断作业的用途,请根据文件名生成 slug,并在表格中标记为 review,而不要臆造用途。
第 3 步 — 先提议,再应用
展示此表格并询问是否继续:
| workflow | job | where | how it gets labeled |
|---|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 | defaultHeaders on the reply client |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 | header on the digest client |
| eval-suite (review) | scripts/eval.ts:8 — purpose inferred from filename | scripts/eval.ts:8 | env override at invocation |
然后使用调用点可用的最轻量方式接入每个标签:
- @caveman-ai/sdk / caveman_cloud SDK:使用每条 trace 的
workflow选项,或者在单作业服务构建的客户端上设置defaultWorkflow。 - 原始提供商 SDK(OpenAI/Anthropic/LangChain/LiteLLM/Vercel):在现有的
defaultHeaders/default_headers/extra_headers配置块中添加"x-cave-workflow": "<slug>";该配置块已包含x-cave-api-key。如果多个作业共用一个客户端 → 每次调用时传入该请求头(上述 SDK 都支持按请求覆盖请求头),或者为每个作业创建独立的轻量客户端。 - 封装的编码 Agent(
caveman wrap):在调用位置(cron 行、CI 步骤)使用--workflow <slug>标志或CAVE_WORKFLOW=<slug>环境变量。 - 原始 HTTP:为请求添加
x-cave-workflow请求头。
在调用方添加标签,让差异尽可能精简,并遵循代码库的风格。如果某个调用点完全没有经过 Caveman 网关,就不要添加标签——在报告的“未接入”部分列出它(标签只会随网关流量传递;接入工作应由 caveman-setup 技能完成)。
第 4 步 — 验证
运行代码库现有的方式来执行一条已标注路径(测试、开发脚本或一次 curl)。然后确认请求仍能成功(如果网关因标签无效而返回 400 cave_invalid_request_header,请修正 slug)。每个工作流下次运行时,已标注的支出会显示在 /activity?tab=workflows 仪表板上;按计划运行的作业会在计划触发时显示。报告中应如实说明这一点,而不要声称它们已经上线运行。
第 5 步 — 报告
## Workflows labeled
| workflow | job | where |
|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 |
Verified: <the labeled path you actually exercised, and what you observed>
Lands at: <DASHBOARD>/activity?tab=workflows — each row appears as that workflow
next runs. Anything still unlabeled shows as `unlabeled-workflow`.
Not wired (no gateway routing, so no label): <list or "none">
Marked review: <slugs whose purpose was inferred from filenames, or "none">
如果完全没有找到大模型入口:请如实说明,并指向设置技能(<docs origin>/docs/agent-setup.md),而不是凭空编造表格。