🐦 Twitter Post Details

Viewing enriched Twitter post

@dotey

OpenAI 官方发布了一个 Claude Code 插件 codex-plugin-cc,让开发者可以直接在 Claude Code 里调用 Codex 做代码审查、对抗性审查,甚至把任务整个移交给 Codex 执行。 这件事有意思的地方在于:这是 OpenAI 主动把自己的工具送进竞争对手 Anthropic 的地盘。Claude Code 有自己的插件生态,OpenAI 这次正式以官方身份入场,把 Codex 包装成 Claude Code 工作流里的一个"随叫随到的第二意见"。 插件提供三个核心命令:/codex:review 跑一遍标准的只读代码审查;/codex:adversarial-review 做对抗性审查,专门挑战现有实现的隐藏假设,适合迁移、鉴权变更、基础设施脚本这类高风险操作;/codex:rescue 则直接把任务交给 Codex 接管,用于线程卡住或需要换个智能体重新来过的场景。 三个命令都支持后台运行,配合 /codex:status 和 /codex:result 管理。还有个可选的 review gate 功能,能让 Claude Code 在 Codex 审查完成前不退出,不过 Srivastav 提醒这可能导致两个智能体循环调用,快速烧掉使用额度。 技术上,插件通过本地 Codex CLI 和 app server 中转,复用已有的认证、配置和 MCP 设置,不额外起运行时。使用前提是有 ChatGPT 订阅(包括免费版)或 OpenAI API key,加上 Node.js 18.18 以上。

📊 Media Metadata

{
  "media": [
    {
      "url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/2038682622180634793/media_0.mp4",
      "media_url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/2038682622180634793/media_0.mp4",
      "type": "video",
      "filename": "media_0.mp4"
    }
  ],
  "processed_at": "2026-03-30T21:20:27.093560",
  "pipeline_version": "2.0"
}

🔧 Raw API Response

{
  "type": "tweet",
  "id": "2038682622180634793",
  "url": "https://x.com/dotey/status/2038682622180634793",
  "twitterUrl": "https://twitter.com/dotey/status/2038682622180634793",
  "text": "OpenAI 官方发布了一个 Claude Code 插件 codex-plugin-cc,让开发者可以直接在 Claude Code 里调用 Codex 做代码审查、对抗性审查,甚至把任务整个移交给 Codex 执行。\n\n这件事有意思的地方在于:这是 OpenAI 主动把自己的工具送进竞争对手 Anthropic 的地盘。Claude Code 有自己的插件生态,OpenAI 这次正式以官方身份入场,把 Codex 包装成 Claude Code 工作流里的一个\"随叫随到的第二意见\"。\n\n插件提供三个核心命令:/codex:review 跑一遍标准的只读代码审查;/codex:adversarial-review 做对抗性审查,专门挑战现有实现的隐藏假设,适合迁移、鉴权变更、基础设施脚本这类高风险操作;/codex:rescue 则直接把任务交给 Codex 接管,用于线程卡住或需要换个智能体重新来过的场景。\n\n三个命令都支持后台运行,配合 /codex:status 和 /codex:result 管理。还有个可选的 review gate 功能,能让 Claude Code 在 Codex 审查完成前不退出,不过 Srivastav 提醒这可能导致两个智能体循环调用,快速烧掉使用额度。\n\n技术上,插件通过本地 Codex CLI 和 app server 中转,复用已有的认证、配置和 MCP 设置,不额外起运行时。使用前提是有 ChatGPT 订阅(包括免费版)或 OpenAI API key,加上 Node.js 18.18 以上。",
  "source": "Twitter for iPhone",
  "retweetCount": 41,
  "replyCount": 17,
  "likeCount": 289,
  "quoteCount": 10,
  "viewCount": 31941,
  "createdAt": "Mon Mar 30 18:19:48 +0000 2026",
  "lang": "zh",
  "bookmarkCount": 374,
  "isReply": false,
  "inReplyToId": null,
  "conversationId": "2038682622180634793",
  "displayTextRange": [
    0,
    190
  ],
  "inReplyToUserId": null,
  "inReplyToUsername": null,
  "author": {
    "type": "user",
    "userName": "dotey",
    "url": "https://x.com/dotey",
    "twitterUrl": "https://twitter.com/dotey",
    "id": "3178231",
    "name": "宝玉",
    "isVerified": false,
    "isBlueVerified": true,
    "verifiedType": null,
    "profilePicture": "https://pbs.twimg.com/profile_images/561086911561736192/6_g58vEs_normal.jpeg",
    "coverPicture": "",
    "description": "",
    "location": "Chicago, IL",
    "followers": 204191,
    "following": 1593,
    "status": "",
    "canDm": true,
    "canMediaTag": true,
    "createdAt": "Mon Apr 02 03:42:14 +0000 2007",
    "entities": {
      "description": {
        "urls": []
      },
      "url": {}
    },
    "fastFollowersCount": 0,
    "favouritesCount": 48313,
    "hasCustomTimelines": true,
    "isTranslator": false,
    "mediaCount": 5391,
    "statusesCount": 30778,
    "withheldInCountries": [],
    "affiliatesHighlightedLabel": {},
    "possiblySensitive": false,
    "pinnedTweetIds": [
      "1996285439867556304"
    ],
    "profile_bio": {
      "description": "Prompt Engineer, dedicated to learning and disseminating knowledge about AI, software engineering, and engineering management.",
      "entities": {
        "description": {
          "hashtags": [],
          "symbols": [],
          "urls": [],
          "user_mentions": []
        },
        "url": {
          "urls": [
            {
              "display_url": "baoyu.io",
              "expanded_url": "https://baoyu.io",
              "indices": [
                0,
                23
              ],
              "url": "https://t.co/icobX4A3Ae"
            }
          ]
        }
      }
    },
    "isAutomated": false,
    "automatedBy": null
  },
  "extendedEntities": {
    "media": [
      {
        "additional_media_info": {
          "monetizable": true
        },
        "display_url": "pic.twitter.com/h82T4e1AbT",
        "expanded_url": "https://twitter.com/dotey/status/2038682622180634793/video/1",
        "ext_media_availability": {
          "status": "Available"
        },
        "id_str": "2038682166285017088",
        "indices": [
          191,
          214
        ],
        "media_key": "13_2038682166285017088",
        "media_results": {
          "id": "QXBpTWVkaWFSZXN1bHRzOgwABAoAARxK2qD7V6AAAAA=",
          "result": {
            "__typename": "ApiMedia",
            "id": "QXBpTWVkaWE6DAAECgABHEraoPtXoAAAAA==",
            "media_key": "13_2038682166285017088"
          }
        },
        "media_url_https": "https://pbs.twimg.com/amplify_video_thumb/2038682166285017088/img/7hNLFACoB0EH-Cc1.jpg",
        "original_info": {
          "focus_rects": [],
          "height": 720,
          "width": 1280
        },
        "sizes": {
          "large": {
            "h": 720,
            "w": 1280
          }
        },
        "type": "video",
        "url": "https://t.co/h82T4e1AbT",
        "video_info": {
          "aspect_ratio": [
            16,
            9
          ],
          "duration_millis": 39936,
          "variants": [
            {
              "content_type": "application/x-mpegURL",
              "url": "https://video.twimg.com/amplify_video/2038682166285017088/pl/TveGNDScJE2QXD60.m3u8?tag=21&v=cfc"
            },
            {
              "bitrate": 256000,
              "content_type": "video/mp4",
              "url": "https://video.twimg.com/amplify_video/2038682166285017088/vid/avc1/480x270/MxrbWJxhOugti179.mp4?tag=21"
            },
            {
              "bitrate": 832000,
              "content_type": "video/mp4",
              "url": "https://video.twimg.com/amplify_video/2038682166285017088/vid/avc1/640x360/w56HW2P92hWpLMzu.mp4?tag=21"
            },
            {
              "bitrate": 2176000,
              "content_type": "video/mp4",
              "url": "https://video.twimg.com/amplify_video/2038682166285017088/vid/avc1/1280x720/HKK687HqoKXUo-Sv.mp4?tag=21"
            }
          ]
        }
      }
    ]
  },
  "card": null,
  "place": {},
  "entities": {
    "hashtags": [],
    "symbols": [],
    "timestamps": [],
    "urls": [],
    "user_mentions": []
  },
  "quoted_tweet": {
    "type": "tweet",
    "id": "2038670509768839458",
    "url": "https://x.com/reach_vb/status/2038670509768839458",
    "twitterUrl": "https://twitter.com/reach_vb/status/2038670509768839458",
    "text": "https://t.co/II9ILcpPUX",
    "source": "Twitter for iPhone",
    "retweetCount": 45,
    "replyCount": 20,
    "likeCount": 463,
    "quoteCount": 37,
    "viewCount": 354843,
    "createdAt": "Mon Mar 30 17:31:40 +0000 2026",
    "lang": "zxx",
    "bookmarkCount": 678,
    "isReply": false,
    "inReplyToId": null,
    "conversationId": "2038670509768839458",
    "displayTextRange": [
      0,
      23
    ],
    "inReplyToUserId": null,
    "inReplyToUsername": null,
    "author": {
      "type": "user",
      "userName": "reach_vb",
      "url": "https://x.com/reach_vb",
      "twitterUrl": "https://twitter.com/reach_vb",
      "id": "874987512850128897",
      "name": "Vaibhav (VB) Srivastav",
      "isVerified": false,
      "isBlueVerified": true,
      "verifiedType": null,
      "profilePicture": "https://pbs.twimg.com/profile_images/1509901130670747666/JFlrSzB4_normal.jpg",
      "coverPicture": "https://pbs.twimg.com/profile_banners/874987512850128897/1651638851",
      "description": "",
      "location": "nvidia-smi",
      "followers": 39563,
      "following": 265,
      "status": "",
      "canDm": true,
      "canMediaTag": true,
      "createdAt": "Wed Jun 14 13:50:54 +0000 2017",
      "entities": {
        "description": {
          "urls": []
        },
        "url": {}
      },
      "fastFollowersCount": 0,
      "favouritesCount": 20433,
      "hasCustomTimelines": true,
      "isTranslator": false,
      "mediaCount": 1818,
      "statusesCount": 11810,
      "withheldInCountries": [],
      "affiliatesHighlightedLabel": {},
      "possiblySensitive": false,
      "pinnedTweetIds": [
        "1749130868533207403"
      ],
      "profile_bio": {
        "description": "Bringing Codex to developers @OpenAI | ex @huggingface | F1 fan | Here for @at_sofdog’s wisdom | *opinions my own",
        "entities": {
          "description": {
            "hashtags": [],
            "symbols": [],
            "urls": [],
            "user_mentions": [
              {
                "id_str": "0",
                "indices": [
                  29,
                  36
                ],
                "name": "",
                "screen_name": "OpenAI"
              },
              {
                "id_str": "0",
                "indices": [
                  42,
                  54
                ],
                "name": "",
                "screen_name": "huggingface"
              },
              {
                "id_str": "0",
                "indices": [
                  75,
                  85
                ],
                "name": "",
                "screen_name": "at_sofdog"
              }
            ]
          },
          "url": {
            "urls": [
              {
                "display_url": "vaibhavs10.github.io",
                "expanded_url": "http://vaibhavs10.github.io",
                "indices": [
                  0,
                  23
                ],
                "url": "https://t.co/83qEAS9kQ4"
              }
            ]
          }
        }
      },
      "isAutomated": false,
      "automatedBy": null
    },
    "extendedEntities": {},
    "card": null,
    "place": {},
    "entities": {
      "hashtags": [],
      "symbols": [],
      "timestamps": [],
      "urls": [
        {
          "display_url": "x.com/i/article/2038…",
          "expanded_url": "http://x.com/i/article/2038660599110926337",
          "indices": [
            0,
            23
          ],
          "url": "https://t.co/II9ILcpPUX"
        }
      ],
      "user_mentions": []
    },
    "quoted_tweet": null,
    "retweeted_tweet": null,
    "isLimitedReply": false,
    "article": {
      "title": "Introducing Codex Plugin for Claude Code",
      "preview_text": "If you already use Claude Code, this Codex plugin gives you a simple way to pull Codex into the same workflow.\nIt is useful for three things: a normal Codex review, a more skeptical adversarial",
      "cover_media_img_url": "https://pbs.twimg.com/media/HErJLsmaAAIfjiw.jpg"
    }
  },
  "retweeted_tweet": null,
  "isLimitedReply": false,
  "article": null
}