尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

开源一个 Codex 文件整理 Skill:一句话列出本次会话生成的文档、截图和交付物

发布时间:2026/9/29 23:25:18

资讯中心
01
ARTICLE

开源一个 Codex 文件整理 Skill:一句话列出本次会话生成的文档、截图和交付物

开源一个 Codex 文件整理 Skill:一句话列出本次会话生成的文档、截图和交付物
1. 为什么需要 Artifact Radar会话产物散落一地的真实痛点用 Codex 写东西的人大概率都遇到过这个场景一轮会话里让 Agent 写了三篇 Markdown 草稿、截了一张界面图、更新了 README、导出了一个 HTML 模板最后你想把这些东西打包交付或者发给同事复查结果发现自己得在文件管理器里翻半天。问题不在于文件没生成而在于「刚才这一轮到底产出了哪些能交付的东西」这件事Agent 自己说不清楚。普通文件搜索工具解决的是「某个文件在哪」而 Artifact Radar 解决的是「本次会话产出了哪些可交付、可打开、可继续使用的文件」。这两个问题的差别很大前者是定位后者是收口。在 Agent 工作流里文件是随着对话一轮轮长出来的散落在工作区、输出目录、Git 变更里没有一个统一的账本。Artifact Radar 就是给这个场景做的一个 Codex Skill它不假装自己有完美记账本而是基于证据做 best-effort 索引把文档、截图、交付物用一句话列出来。这篇内容聚焦落地配置怎么在config.toml里声明 Skill 入口怎么用 PowerShell 调git status扫描会话产物怎么跑出 Artifact Radar 清单以及怎么验证「一句话输出文档、截图与交付物」这个效果。适合经常用 Codex 写技术文章、生成截图、导出 HTML、整理交付物的人也适合想把「AI 做了什么」沉淀成文件清单的团队。2. TaoToken 前置给 Codex 配一个稳定的模型入口在配 Skill 之前得先保证 Codex 能正常跑起来。Codex 这类编码 Agent 对模型的稳定性和上下文长度有要求尤其是长会话里连续生成文件时模型入口不稳定会直接导致会话中断、产物丢失。我这边用的是 TaoToken 的 API 入口官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 配置时注意 API 地址不加 UTM 参数。TaoToken 在这里的角色是模型调用入口不是替代编辑器也不是什么灰色中转。你把它理解成一个统一的 API 网关就行Codex 通过它调用模型Skill 负责在本地文件系统里做产物索引两者分工明确。配置前先去控制台把 API Key 建好入口在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。如果你还没决定用哪个模型可以先去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 试一下对话效果确认模型能正常响应再往下配。对于长期跑编码和 Agent 任务的用户Coding Plan 会更合适入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它针对连续编码场景做了额度优化。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置细节以文档为准。如果你用的是 Claude Code 这类 Anthropic 系工具对应入口在 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite 。注意API Key 只放在本地配置文件或环境变量里不要提交到 Git 仓库也不要在截图里露出完整 Key。3. 可复制配置config.toml 骨架与 Skill 目录结构Codex 的 Skill 机制核心是在config.toml里声明入口然后让 Codex 在会话中按需加载。下面这份骨架可以直接复制改掉路径和 Key 就能用。# ~/.codex/config.toml # 模型入口走 TaoToken API [model] provider taotoken base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model gpt-4o # Skill 声明区 [[skills]] name artifact-radar description 列出本次会话生成的文档、截图和交付物 entry ~/.codex/skills/artifact-radar/SKILL.md enabled true # Skill 依赖的脚本目录 [skills.artifact-radar] script_dir ~/.codex/skills/artifact-radar/scripts default_hours 8 git_changed_only false extra_roots [~/.codex/generated_images]对应的 Skill 目录结构建议这样组织和仓库结构保持一致方便后续更新~/.codex/skills/artifact-radar/ ├── SKILL.md ├── agents/ │ └── openai.yaml ├── scripts/ │ └── find-artifacts.ps1 ├── assets/ │ └── artifact-radar-usage.png └── README.mdSKILL.md是 Skill 的入口描述文件Codex 读它来决定什么时候触发这个 Skill。内容不用写太长把触发条件和输出格式说清楚就行# Artifact Radar ## 触发条件 当用户询问「当前会话生成了哪些文件」「列出刚才的产物」「给我一个可点击的产物清单」时触发。 ## 行为 1. 调用 scripts/find-artifacts.ps1 扫描工作区 2. 优先读取 git status 作为高置信证据 3. 按置信度分层输出high / medium / low 4. 输出可点击链接而不是裸路径 ## 边界 不声称拥有完整的 session artifact ledger只做 best-effort 索引。agents/openai.yaml用来声明 Agent 侧的元信息比如 Skill 名称、版本、依赖脚本name: artifact-radar version: 0.1.0 entry_script: scripts/find-artifacts.ps1 supported_platforms: - windows - linux - macos output_format: markdown环境变量里把 Key 配上Windows 用 PowerShell$env:TAOTOKEN_API_KEY 你的KeyLinux/macOS 用export TAOTOKEN_API_KEY你的Key配完之后重启 Codex让新的 Skill 被加载。这一步别省很多人配完不重启然后问为什么 Skill 不生效。4. PowerShell 扫描脚本用 git status 抓会话产物Artifact Radar 的核心脚本是find-artifacts.ps1它做三件事读git status拿高置信证据、按时间窗口扫交付物类型、把结果按字段输出给 Agent 组织。下面这份脚本可以直接用我按实际跑通的版本整理param( [string[]]$Roots (.), [int]$Hours 8, [switch]$GitChangedOnly, [string[]]$ExtraRoots () ) $ErrorActionPreference Stop $cutoff (Get-Date).AddHours(-$Hours) # 交付物扩展名白名单 $artifactExt ( .md, .txt, .rst, .docx, .doc, .pdf, .xlsx, .xls, .csv, .tsv, .pptx, .ppt, .png, .jpg, .jpeg, .webp, .gif, .svg, .html, .htm, .json, .yaml, .yml, .ps1, .sh, .bat, .cmd, .zip, .7z, .tar, .gz ) # 排除目录 $excludeDirs (node_modules, target, .git, dist, build, .venv, __pycache__) function Get-GitChangedFiles { param([string]$Root) Push-Location $Root try { $staged git diff --cached --name-only 2$null $unstaged git diff --name-only 2$null $untracked git ls-files --others --exclude-standard 2$null return ($staged $unstaged $untracked) | Where-Object { $_ } | Sort-Object -Unique } finally { Pop-Location } } $results () $scanRoots $Roots $ExtraRoots foreach ($root in $scanRoots) { if (-not (Test-Path $root)) { continue } $gitFiles () if (Test-Path (Join-Path $root .git)) { $gitFiles Get-GitChangedFiles -Root $root } if ($GitChangedOnly -and $gitFiles.Count -eq 0) { continue } Get-ChildItem -Path $root -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $ext $_.Extension.ToLower() $artifactExt -contains $ext -and $_.LastWriteTime -ge $cutoff -and -not ($excludeDirs | Where-Object { $_.FullName -match \\$_\\ }) } | ForEach-Object { $rel Resolve-Path -Relative $_.FullName $evidence if ($gitFiles -contains $rel -or $gitFiles -contains $_.Name) { git } else { mtime } $results [PSCustomObject]{ LastWriteTime $_.LastWriteTime.ToString(yyyy-MM-dd HH:mm) Extension $_.Extension SizeKB [math]::Round($_.Length / 1KB, 1) Evidence $evidence FullName $_.FullName } } } $results | Sort-Object LastWriteTime -Descending | Format-Table -AutoSize跑基础扫描.\scripts\find-artifacts.ps1 -Roots . -Hours 8只看 Git 里新增或修改的交付物.\scripts\find-artifacts.ps1 -Roots . -GitChangedOnly加上额外的生成目录比如图片输出目录.\scripts\find-artifacts.ps1 -Roots . -ExtraRoots $env:USERPROFILE\.codex\generated_images -Hours 8脚本输出的字段是LastWriteTime / Extension / SizeKB / Evidence / FullNameAgent 拿到这些字段后再组织成用户能读的清单。Evidence字段是关键git表示这个文件出现在git status里属于高置信mtime表示只是最近修改过属于中低置信。这个区分很重要因为一旦把「可能相关」说成「全部产物」用户后面就会基于错误信心做交付。5. 验证请求确认一句话输出文档、截图与交付物配好之后要验证 Skill 真的能跑通。验证分两步先确认脚本本身能出结果再确认 Codex 能按 Skill 描述组织输出。第一步在项目目录里手动跑一次脚本确认能扫到东西cd D:\work\my-project .\scripts\find-artifacts.ps1 -Roots . -Hours 2如果输出里能看到你刚才生成的.md、.png、.html说明脚本逻辑没问题。如果输出为空先检查时间窗口是不是太窄或者文件是不是被排除目录规则误伤了。第二步在 Codex 会话里直接问当前 session 生成了哪些文件或者用英文触发show generated artifacts with timestamps预期输出应该分两层第一层是产物条把最重要的几个文件列出来带可点击链接第二层是完整明细包含文件类型、时间、证据、说明和置信度。类似这样本次会话产物最近 2 小时扫描根目录 . 高置信git 变更 - docs/codex-skill-draft.md 2025-01-15 14:22 12.4 KB - assets/artifact-radar-usage.png 2025-01-15 14:25 86.1 KB - templates/report.html 2025-01-15 14:28 4.7 KB 中置信最近修改 - README.md 2025-01-15 14:30 3.2 KB 扫描范围. 及 ~/.codex/generated_images 时间窗口2 小时如果 Codex 输出的是裸路径而不是可点击链接检查SKILL.md里的输出格式描述是不是写清楚了「输出可点击链接」。如果 Skill 根本没触发检查config.toml里的entry路径是不是写对了以及 Codex 有没有重启。提示验证时尽量在项目目录里跑这样git status和最近修改文件都更容易收敛结果更干净。6. 本篇常见错排查配 Skill 的过程中有几个坑比较常见我按实际遇到的顺序列一下。Skill 不触发最常见的原因是config.toml里entry路径写错或者 Codex 没重启。先确认路径存在再重启 Codex。如果还不行检查SKILL.md里的触发条件描述是不是太窄Codex 匹配不到。脚本报权限错误PowerShell 默认执行策略可能禁止运行脚本。用管理员权限开 PowerShell执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned然后重试。这个改动只影响当前用户风险可控。扫描结果为空先看时间窗口-Hours 8改成-Hours 24试试。再看排除目录规则如果你把产物放在dist或build里会被默认排除。最后确认文件扩展名在白名单里比如.log不在白名单扫不到是正常的。git status 拿不到变更脚本只在检测到.git目录时才读git status。如果你的项目不在 Git 仓库里Evidence字段会全是mtime置信度会偏低。建议在 Git 仓库里跑高置信证据更可靠。输出里混入源码文件检查$artifactExt白名单确认没有把.js、.ts、.py这类源码扩展名加进去。Artifact Radar 的定位是交付物索引不是全盘文件扫描器源码默认不列。API 调用报 401检查TAOTOKEN_API_KEY环境变量是不是配在当前 shell 会话里以及 Key 有没有过期。配置细节以接入文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。长会话结果太杂把时间窗口收窄比如-Hours 2或者加-GitChangedOnly只看 Git 变更。长会话里产物多收窄范围比扩大扫描更有效。7. 下一步把产物索引接进你的工作流Artifact Radar 本身不复杂它解决的是一个很具体的问题当 Codex 在文件系统里连续生成交付物时你需要一个干净、可点击、带时间和证据的产物清单。配好之后建议把它接进你的日常流程写文章、做 README、生成截图、导出 HTML 之后最后让它跑一次收口确认有没有漏掉文件。如果你还没配好模型入口先去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 把 Key 建好再按第 3 节的config.toml骨架配上去。长期跑编码和 Agent 任务的可以看 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。接入过程中遇到报错先查 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 大部分配置问题文档里都有说明。最后提醒一句Artifact Radar 的定位是「当前会话产物」不是全盘文件管理器。别让它默认扫整个磁盘也别指望它给出完美账本。把边界说清楚比假装什么都知道更有用。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。