从编程工具到电脑操控
2026 年的 Codex 最令人兴奋的不是它写代码的能力,而是它操控整台电脑的能力。通过浏览器控制、文件系统操作、Shell 执行和 API 调用的组合,Codex 可以完成过去需要人工操作多个软件才能完成的任务。
┌──────────────────────────────────────────┐
│ Codex Agent │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 浏览器 │ │ 文件系统│ │ Shell │ │
│ │ 控制器 │ │ 操作器 │ │ 执行器 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ ┌────┴────────────┴────────────┴────┐ │
│ │ API 调用层 │ │
│ └───────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────┐ │
│ │ 安全沙箱 │ │
│ │ 权限控制 + 审计日志 + 隔离执行 │ │
│ └───────────────────────────────────┘ │
└──────────────────────────────────────────┘
浏览器操控
基本操作
Codex 内置了基于 Playwright/CDP 的浏览器控制能力:
# Codex 内部执行(用户只需自然语言描述)
# 用户: "打开 GitHub,搜索 'codex agent',把前5个仓库名和星数整理成表格"
# Codex 执行流程:
browser.open("https://github.com")
browser.fill('input[name="q"]', "codex agent")
browser.press("Enter")
browser.wait_for_selector(".repo-list")
repos = browser.evaluate("""
() => {
const items = document.querySelectorAll('.repo-list-item');
return Array.from(items).slice(0, 5).map(item => ({
name: item.querySelector('a').textContent.trim(),
stars: item.querySelector('[aria-label*="star"]')?.textContent.trim(),
url: item.querySelector('a').href
}));
}
""")
# 自动写入 Excel 文件
file.write_excel("github_repos.xlsx", repos)
实战:自动填表
用户: "帮我把这个 Excel 里的客户信息逐条录入到 CRM 系统中"
Codex 执行:
1. 读取 Excel 文件,解析 200 条客户数据
2. 打开 CRM 网页,登录
3. 循环 200 次:
a. 点击"新增客户"
b. 填写姓名、电话、邮箱、公司
c. 点击"保存"
d. 验证保存成功
4. 输出: "已完成 200 条客户录入,成功 198 条,失败 2 条(重复记录)"
浏览器操作能力清单
| 能力 | 支持度 | 示例 |
|---|---|---|
| 页面导航 | ✅ | 打开 URL、前进后退、刷新 |
| 元素交互 | ✅ | 点击、输入、选择、拖拽 |
| 表单填写 | ✅ | 自动填充、文件上传 |
| 页面截图 | ✅ | 全页面截图、元素截图 |
| 数据提取 | ✅ | CSS选择器、XPath、JS执行 |
| 标签页管理 | ✅ | 新建、切换、关闭 |
| 弹窗处理 | ✅ | alert、confirm、prompt |
| 认证状态 | ✅ | Cookie 持久化、Session 复用 |
| 代理设置 | ✅ | HTTP/SOCKS 代理 |
文件管理
批量文件操作
用户: "把项目里所有 .jpeg 文件重命名为 .jpg,并移动到 assets/images/ 目录"
Codex 执行:
1. 扫描项目,找到 34 个 .jpeg 文件
2. 创建 assets/images/ 目录
3. 批量重命名并移动:
- photo1.jpeg → assets/images/photo1.jpg
- banner.jpeg → assets/images/banner.jpg
- ... (共 34 个文件)
4. 验证: 确认无 .jpeg 残留
5. 输出报告
文件处理能力
# 支持的文件操作
file_operations = {
"read": ["txt", "md", "json", "yaml", "csv", "xml", "html", "code"],
"write": ["txt", "md", "json", "yaml", "csv", "xml", "html", "code"],
"convert": [
"csv → xlsx",
"json → csv",
"md → html",
"html → pdf",
"xlsx → csv"
],
"archive": ["zip", "unzip", "tar", "gzip"],
"search": ["filename", "content", "regex", "fuzzy"]
}
实战:日志分析
用户: "分析 nginx access.log,找出访问量前10的IP和最频繁的请求路径"
Codex 执行:
1. 读取 access.log (2.3GB)
2. 流式解析,避免内存溢出
3. 统计 IP 访问次数
4. 统计请求路径频率
5. 生成 Markdown 报告:
| 排名 | IP地址 | 访问次数 | 占比 |
|------|-----------------|----------|-------|
| 1 | 192.168.1.100 | 45,231 | 12.3% |
| 2 | 10.0.0.52 | 38,104 | 10.4% |
| ... | ... | ... | ... |
| 排名 | 请求路径 | 次数 |
|------|----------------------|---------|
| 1 | /api/v1/users | 89,234 |
| 2 | /api/v1/products | 67,891 |
| ... | ... | ... |
表格处理
Excel 读写
# Codex 内部执行的代码
import openpyxl
# 读取
wb = openpyxl.load_workbook("report.xlsx")
ws = wb.active
# 处理数据
for row in ws.iter_rows(min_row=2):
name = row[0].value
salary = row[1].value
row[2].value = salary * 1.1 # 涨薪10%
row[3].value = "已调薪"
# 添加图表
from openpyxl.chart import BarChart, Reference
chart = BarChart()
data = Reference(ws, min_col=2, min_row=1, max_row=20)
chart.add_data(data)
ws.add_chart(chart, "E2")
wb.save("report_updated.xlsx")
实战:多表合并
用户: "我有3个部门的销售数据 Excel 文件,合并成一个总表,按金额降序排列,添加汇总行"
Codex 执行:
1. 读取 sales_dept_a.xlsx (156行)
2. 读取 sales_dept_b.xlsx (203行)
3. 读取 sales_dept_c.xlsx (178行)
4. 合并数据 (537行)
5. 按金额降序排列
6. 添加汇总行 (总计: ¥12,345,678)
7. 格式化: 千分位、货币符号、条件格式
8. 保存为 sales_combined.xlsx
代码项目构建
从零构建完整项目
用户: "用 Next.js 15 + Prisma + PostgreSQL 创建一个任务管理系统,支持 CRUD、用户认证、任务分配"
Codex 执行 (约 15 分钟):
1. npx create-next-app@latest task-manager
2. npm install prisma @prisma/client next-auth bcryptjs
3. 设计数据库 schema (User, Task, Project, Assignment)
4. npx prisma migrate dev
5. 创建 API 路由 (12 个端点)
6. 创建页面组件 (8 个页面)
7. 实现认证逻辑 (NextAuth.js)
8. 添加 Tailwind 样式
9. 编写单元测试 (23 个测试)
10. npm run build → 构建成功
11. git init && git add . && git commit
多应用协同
典型协同场景
用户: "从 Jira 导出本 sprint 的 task 列表,根据 task 描述在 GitHub 创建对应 branch,完成后在 Slack 通知团队"
Codex 执行:
1. [浏览器] 打开 Jira,导出当前 sprint 的 25 个 task
2. [API] 调用 GitHub API,为每个 task 创建 branch
3. [文件] 生成 branch 创建报告 CSV
4. [API] 调用 Slack Webhook,发送通知:
"已完成 sprint branch 创建:
- 25 个 branch 已创建
- branch 命名: feature/TASK-XXX-task-name
- 报告见附件"
5. [浏览器] 上传报告到 Jira sprint 附件
数据流编排
# Codex 多应用协同的数据流
data_flow = {
"step_1": {
"app": "browser",
"action": "scrape_table_from_web",
"input": "https://internal-app.com/report",
"output": "raw_data.json"
},
"step_2": {
"app": "python",
"action": "clean_and_transform",
"input": "raw_data.json",
"output": "clean_data.csv"
},
"step_3": {
"app": "excel",
"action": "create_pivot_table",
"input": "clean_data.csv",
"output": "summary.xlsx"
},
"step_4": {
"app": "email",
"action": "send_with_attachment",
"input": "summary.xlsx",
"to": "team@company.com",
"subject": "本周数据汇总报告"
}
}
安全沙箱
沙箱架构
┌─────────────────────────────────────┐
│ Codex Agent │
│ ┌─────────────────────────┐ │
│ │ 任务解析层 │ │
│ └────────┬────────────────┘ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ 权限检查层 │ │
│ │ - 文件路径验证 │ │
│ │ - 域名白名单检查 │ │
│ │ - 命令黑名单检查 │ │
│ └────────┬────────────────┘ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ 沙箱执行环境 │ │
│ │ ┌─────┐ ┌─────┐ ┌────┐ │ │
│ │ │文件 │ │网络 │ │Shell│ │ │
│ │ │隔离 │ │隔离 │ │隔离 │ │ │
│ │ └─────┘ └─────┘ └────┘ │ │
│ └─────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ 审计日志层 │ │
│ └─────────────────────────┘ │
└─────────────────────────────────────┘
权限管理
// 权限配置示例
{
"sandbox": {
"filesystem": {
"mode": "whitelist",
"allow": [
"/home/user/projects/**",
"/tmp/codex/**"
],
"deny": [
"/etc/**",
"/root/**",
"/.ssh/**",
"/.env*"
]
},
"network": {
"mode": "whitelist",
"allow": [
"api.github.com",
"registry.npmjs.org",
"localhost",
"*.internal.company.com"
]
},
"shell": {
"mode": "blacklist",
"deny": [
"rm -rf",
"sudo *",
"chmod 777 *",
"dd *",
"mkfs*",
"> /dev/*"
],
"requireApproval": [
"git push *",
"npm publish *",
"docker *",
"kubectl *"
]
},
"browser": {
"allowedDomains": [
"github.com",
"*.company.com"
],
"blockedActions": [
"download_executable",
"install_extension"
]
}
}
}
审批流程
敏感操作会暂停执行,等待用户确认:
Codex: 即将执行以下操作,请确认:
1. git push origin main (推送代码到远程仓库)
2. npm publish (发布包到 npm registry)
[Y] 全部允许 [N] 全部拒绝 [1] 仅允许第1项 [2] 仅允许第2项
审计日志
// ~/.codex/logs/audit-2026-06-25.json
[
{
"timestamp": "2026-06-25T10:00:05Z",
"action": "file_read",
"path": "/workspace/project/src/app.ts",
"approved": "auto"
},
{
"timestamp": "2026-06-25T10:00:12Z",
"action": "shell_exec",
"command": "npm install express",
"approved": "auto"
},
{
"timestamp": "2026-06-25T10:01:30Z",
"action": "git_push",
"command": "git push origin feature/auth",
"approved": "user",
"user_response": "Y"
},
{
"timestamp": "2026-06-25T10:01:35Z",
"action": "browser_navigate",
"url": "https://github.com/user/repo",
"approved": "auto"
}
]
性能基准
| 任务类型 | 操作数 | 耗时 | 成功率 |
|---|---|---|---|
| 文件批量重命名 | 100个 | 8s | 100% |
| Excel 数据处理 | 10000行 | 15s | 100% |
| 网页数据抓取 | 50页 | 3min | 96% |
| 多应用协同 | 5个应用 | 5min | 92% |
| 项目构建 | 40个文件 | 12min | 95% |
最佳实践
- 渐进式权限:先给最小权限,需要时再扩展
- 关键操作审批:涉及数据外发、代码推送的操作必须审批
- 定期审计日志:检查是否有异常操作
- 沙箱测试:新任务先在沙箱中试运行
- 错误回滚:利用 Git 作为回滚点
总结
Codex 的跨应用操作能力让它从一个"编程助手"变成了一个"数字员工"。通过浏览器、文件系统、Shell 和 API 的组合,它能够完成过去需要多个软件工具和人工操作才能完成的复杂工作流。安全沙箱和权限系统确保了这种能力在可控范围内发挥价值。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
