首页 / 全部技能 / 基础工具与工作流 / codex-image-to-eagle
基础工具与工作流 · vibeshotclub/vsc-skills

codex-image-to-eagle

Archive Codex-generated images from the current user's Codex generated_images directory into Eagle with the prompt saved as annotation. Use when the user asks to save, archive, import, or sync Codex generated images to Eagle with prompts, tags, and folders.

L4 高权限 · 分级授权与审计V1 已固定执行命令联网读写文件Dual-pass Audit
Author vibeshotclubGitHub vibeshotclub/vsc-skills ↗Stars 832License 仓库未提供 LICENSE 文件(find 全仓无 LICENSE*;GitHub API license 字段为 null)Commit fcee81beb6
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

核心是一条 Node 脚本:扫描 Codex 生成图目录,选图,组装 item_add 载荷,把图片路径与提示词写入 Eagle 素材库。

codex-image-to-eagle/SKILL.md
Archive images generated by Codex into Eagle and preserve the prompt as searchable metadata.
脚本 822 行,只用 Node 内置 fs/path/http/os/child_process,无 npm 依赖。

与 Eagle 的通路有两条:默认走本地 HTTP 回环端点;若本机 Codex 配置里有 Eagle stdio MCP 条目,则自动改走 stdio(spawn 子进程)。

codex-image-to-eagle/SKILL.md
Stdio mode: the script reads the current user's `~/.codex/config.toml`, prefers `[mcp_servers.eagle]`, and can auto-detect other Eagle-like stdio MCP entries. Use `--transport http` to force the legacy HTTP path.
transportName() 在未显式指定 --transport 时按 config.toml 是否存在 Eagle 条目自动判定。

HTTP 路径就是对一个本地回环地址做 POST /api/tools/call,请求体是 {tool, params} 的 JSON。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
path: '/api/tools/call',
默认地址来自常量 DEFAULT_SERVER,可被 EAGLE_SERVER_URL 覆盖。

stdio 路径用 child_process.spawn 拉起配置里的命令,并且把宿主的整个 process.env 透传进子进程(再叠加配置里的 env)。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
this.child = spawn(this.config.command, this.config.args || [], {
紧随一行为 `env: { ...process.env, ...(this.config.env || {}) },`。

文件夹解析按「精确父子路径」而非名字:先向上解析根目录,再只在根下按 name+parentId 找日期目录,避免同名串台。

codex-image-to-eagle/SKILL.md
- Folder safety: resolve folders by exact parent-child path, not by name alone.
SKILL.md 另用 5 条编号规则把这条纪律写到「用 Eagle MCP 工具直调」的场景。

并发安全用本地文件锁(os.tmpdir 下以参数哈希命名的 lock 目录)串行化「查目录 → 建目录」临界区。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
const lockDir = path.join(os.tmpdir(), `codex-image-to-eagle-${hashKey(key)}.lock`);
默认 15s 超时、150ms 轮询,可用 EAGLE_FOLDER_LOCK_TIMEOUT_MS / EAGLE_FOLDER_LOCK_POLL_MS 覆盖。

提示词与溯源信息以固定文本模板写入 Eagle 的 annotation 字段,构成可检索的复盘元数据。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
'- source: Codex',
buildAnnotation() 生成 Prompt: … / Archive: - source/- original_path/- archived_at 三段。

幂等与防重复:同一根目录下若已存在多个同名日期目录,复用最旧的那个并报告重复,而不是再造一个。

codex-image-to-eagle/SKILL.md
If more than one matching date folder already exists under the same root, reuse the oldest existing folder ID and report the duplicate instead of creating another one.
代码侧对应 findFolderByNameAndParent() 按 createdAt 升序取第一个。

2核心能力

01三选一的选图策略:--latest(最新一张)/ --latest-session(最新会话目录全部)/ --path(指定文件)
02提示词搬运:写入 Eagle annotation,支持 --prompt / --prompt-file / --prompt-stdin
03默认标签 Codex / AI生成 / Prompt,并支持 --tags 追加(JSON 数组或逗号分隔)
04按本地生成日期归档到 根目录/YYYY-M-D 子目录,可 --no-date-subfolders 退回扁平归档
05自动化友好:固定 folder id 可跳过 folder_get/folder_create 权限确认
06--dry-run 预览与 --check-connection 连通性自检
07跨平台默认路径:~/.codex/generated_images(可用 CODEX_GENERATED_IMAGES_DIR 覆盖)

3外部依赖

KindDependency / Endpoint
packageNode.js(无 npm 依赖,仅内置 fs/path/http/os/child_process)
networkEagle MCP Server(本地回环 HTTP)
networkEagle MCP Server(本地回环,README 侧写为 localhost 同端口)
cliEagle 桌面应用 + Eagle MCP 插件(第三方,必须运行才能写入)
clistdio MCP 代理子进程(从 ~/.codex/config.toml 解析出的 command/args,如 mcp-proxy.js)

4管控建议与判定依据

建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
  • scripts/: 执行本地脚本或命令: node scripts/archive-codex-image-to-eagle.js(随包脚本,agent 通过 Bash(node *) 触发,
  • 网络端点: 声明外部网络访问: 仅本地回环:HTTP POST http://127.0.0.1:41596/api/tools/call(可被 EAGLE_SERVER_URL 改
  • 本地工作目录: 文件读写与工件输出: 本地:仅在 os.tmpdir() 下创建/删除 <hash>.lock 目录用于串行化目录创建;不写图片、不改源文件
审计说明: 。触发条件与依据:① 默认路径会读取用户级配置文件 ~/.codex/config.toml,并据此 spawn 子进程,且 spawn 时把宿主全量 process.env 透传给子进程——这是「依赖本机配置决定执行内容」的代码执行面;② 强依赖第三方软件与插件(Eagle + Eagle MCP 插件 + 可能的 mcp-proxy.js),属于第三方依赖链;③ 会向本地素材库写入目录与素材。缓解因素:无任何外发互联网调用(仅 127.0.0.1 回环)、不删改源文件、支持 --dry-run 预览、目录操作有本地锁与精确父子路径匹配。共享机器或配置被第三方改写时风险上升。

5第二遍独立确认

  • [ok] 每条外部依赖的反查 — Node 依赖:脚本 require 仅 fs/path/http/os/child_process,无 node_modules、无 package.json;Eagle 回环端点:DEFAULT_SERVER 常量 + callTool() 的 http.request 两处互证;stdio 子进程:spawn 调用点 + README 的 mcp-proxy.js 示例互证。
  • [ok] 是否有被遗漏的网络调用 — 全文件仅 import http 一处,唯一 http.request 出现在 httpRequest(),被 callTool() 以 DEFAULT_SERVER 构造的 hostname/port 使用;无 fetch/https/axios/WebSocket。
  • [ok] 凭证读取结论的反例搜索 — process.env 命中集中在配置项(图片目录/服务地址/文件夹 ID/MCP 参数/锁超时),未见读取密钥文件、keychain、.env 或打印敏感值;但 spawn 透传全量 env 确认成立,故归入橙档依据之一。
  • [ok] 文件夹安全规则 vs 代码实现 — SKILL 第 1–5 条规则均可在代码定位:fixedFolderId 短路、folder_get(getAllHierarchy/fullDetails)、findFolderByNameAndParent(name+parentId)、folder_create(parentId)、复用最旧(按 createdAt 升序取 matches[0])。
  • [ok] 默认服务地址描述一致性 — SKILL.md/脚本为 127.0.0.1:41596 并说明优先 IPv4 回环的原因;README 写 localhost:41596。二者同端口不同写法,已分别作为独立条目取证,不视为出入。
  • [ok] 功能声明与实现相符度 — description 承诺的 save/archive/import/sync + prompt/tags/folders 全部有对应实现(item_add 载荷含 tags/items、annotation、folders);『不泛化为任意素材库迁移』与代码仅面向 Eagle 相符。
  • [ok] dry-run 是否真的不写库 — resolveFolderPath() 在 dryRun 时直接返回伪造的 folder-path 字符串,main() 在 dryRun 分支提前 return,未调用 item_add —— 预览路径无写入,结论成立。

6结论

  • 把「生成图 + 原始提示词」一起归档,提示词进 Eagle annotation 可被检索,解决了 AIGC 复盘最容易丢的一环。
  • 工程细节扎实:本地文件锁避免并发建重复日期目录,目录按父子路径精确解析。
  • 有 --dry-run 与「不删/不移动源文件」的显式安全条款,误操作成本低。
  • 双通路(回环 HTTP / stdio MCP)覆盖了 Eagle 插件的两种接入方式,并诚实说明 shell 沙箱下子进程可能继承限制。
  • 适合: 适合用 Codex 批量生图、且已经用 Eagle 管素材的创作者:一次性把「图 + 原始提示词 + 标签 + 日期目录」归档,便于后续检索与提示词复用;也适合做无人值守的自动化归档(固定 EAGLE_CODEX_FOLDER_ID/ROOT_FOLDER_ID 减少权限弹窗)。
    不适合: 不适合没有 Eagle 或不愿装 MCP 插件的用户(本 skill 无替代路径);不适合非 Codex 来源图片或其他素材库的迁移(vsc-distinction 明确不泛化);不适合以「先试试看」心态反复真跑导入的场景——重复素材会污染库,应先 --dry-run。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload codex-image-to-eagle.tar.gz
    sha256: 5914cacc5fbf46dc…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit fcee81beb6.