ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

零代码盯盘系统:用Codex+Obsidian搭建可复盘的自动预警流水线

零代码盯盘系统:用Codex+Obsidian搭建可复盘的自动预警流水线 1. 项目概述一个非程序员的盯盘系统诞生记“不会写代码我却用 Codex 搭建了一套 24 小时自动盯盘系统”——这句话不是标题党是我上周五凌晨三点盯着手机弹出的“中际联合股价突破年线”通知时真实拍下的一张截图配文。Codex、Obsidian、自动盯盘系统这三个词组合在一起听起来像极了某位量化工程师的日常但其实它完全可以在零 Python 基础、不装 VS Code、不碰 GitHub 的前提下跑起来。关键不在于你有没有写过 for 循环而在于你是否清楚盯盘的本质是把“人盯屏幕”的重复劳动替换成“机器查数据 规则触发 信息推送”这一条可拆解、可配置、可验证的流水线。Codex 在这里不是替代程序员的 AI 编程助手而是作为规则引擎自然语言接口存在的——它能听懂你写的“如果宁德时代收盘价连续3天高于MA60且成交量放大20%就发微信提醒我”并把它翻译成可执行逻辑Obsidian 不是传统笔记软件而是整套系统的中央调度台与状态看板——所有股票池、预警阈值、历史触发记录、甚至人工复盘结论都以纯文本方式沉淀在本地 vault 中不依赖云端、不绑定账号、不担心数据被同步丢失而“自动盯盘系统”本身也远不止是“弹个消息”那么简单它包含实时行情拉取每15秒轮询、多条件复合判断价格均线量能板块联动、分级告警微信/邮件/本地弹窗、以及最重要的——每次触发后自动生成带时间戳和上下文的复盘笔记形成闭环。这套系统真正解决的不是“能不能盯盘”而是“盯得准不准、记得全不全、复盘有没有依据”。很多散户朋友用同花顺预警但预警一响就忘第二天根本想不起当时为什么设这个条件也有人用 Excel 手动记录结果三个月后发现表格里混着2022年的旧策略和2024年的新逻辑根本没法回溯。而用 Codex Obsidian 搭出来的这套每一次预警都会在 Obsidian 里自动生成一篇笔记标题是“2024-06-12 14:32 宁德时代 触发 MA60放量预警”正文里自动填入当时的股价、MA60值、成交量、前一日对比、所属板块涨跌幅排名甚至附上 Codex 判断时调用的原始数据快照。这不是炫技是把盯盘从“凭感觉下单”推进到“有据可查的决策日志”。适合谁来参考第一类是A股/港股/美股的个人投资者尤其关注技术面交易者比如做趋势跟踪、突破回踩、量价配合第二类是财经类自媒体运营者需要快速捕捉热点个股异动并生成选题线索第三类是刚入门的量化学习者想绕过复杂的 backtrader 或 vn.py 框架先用自然语言建立对“信号-响应-验证”闭环的直觉。不需要你会 Pandas但得愿意花30分钟学会 Obsidian 的 Dataview 插件怎么写一行查询语句不需要你懂 REST API但得知道如何在 Codex 里粘贴一段 JSON 格式的行情数据并让它帮你分析。门槛不高但每一步都踩在真实需求的痛点上。2. 系统设计思路为什么选 Codex Obsidian 而不是 Python 或 TradingView2.1 放弃 Python 的三个现实理由很多人第一反应是“写个 Python 脚本不就完了”我试过而且写了三版。第一版用 akshare 拉 A 股数据跑通了但每天要手动更新包某次 akshare 接口变更导致整个脚本报错排查了两小时才发现是源站改了反爬第二版改用 baostock稳定了但无法获取北向资金实时持仓变动第三版接入聚宽JoinQuant功能全了但必须登录账号、接受实盘模拟限制、且所有策略逻辑写在网页编辑器里本地无备份。这暴露了一个本质问题Python 方案的维护成本90% 不在逻辑本身而在环境依赖、接口稳定性、权限管理上。举个具体例子你想监控“贵州茅台是否跌破200日均线”Python 脚本里要写import akshare as ak import pandas as pd df ak.stock_zh_a_hist(symbol600519, perioddaily, start_date20240101, end_date20240612, adjustqfq) ma200 df[close].rolling(200).mean().iloc[-1] current_price df[close].iloc[-1] if current_price ma200: send_wechat_alert(茅台破200日线)这段代码看似简单但实际运行时你要确保akshare 版本兼容、网络能访问 akshare 服务器、日期范围没超限、qfq 复权数据准确、微信推送接口 token 有效且没过期……任何一个环节断掉整个系统就静默失效而你可能三天后才意识到“怎么最近没收到提醒了”2.2 TradingView 的局限性在哪TradingView 的 Pine Script 确实强大预警也精准但它是个黑盒系统你写的策略只能在它的服务器上跑数据源、执行时机、推送通道全部不可控。更关键的是——它不记录“为什么触发”。当“宁德时代触发预警”弹出来你看到的只是一行文字背后是哪根均线交叉、成交量对比了多少、板块是否同步异动这些上下文 TradingView 一概不保存。而我的需求恰恰相反我要的不是即时提醒而是“下次再遇到类似形态时能快速翻出上次是怎么处理的”。2.3 Codex 的核心价值把自然语言变成可执行逻辑Codex 在这里扮演的角色是规则翻译器。它不负责拉数据、不负责发消息、不负责存储只做一件事接收一段人类可读的条件描述输出结构化的判断结果。比如我输入“检查以下股票中际联合603520、中科曙光603019、寒武纪688256。如果任意一只收盘价比昨日高5%以上且当日成交量大于过去5日均量的1.5倍则标记为‘放量突破’并返回股票代码、当前价、涨幅、成交量倍数。”Codex 会返回标准 JSON{ triggered: true, stocks: [ { code: 603520, current_price: 28.45, change_percent: 6.23, volume_multiple: 1.72, label: 放量突破 } ] }这个 JSON 就是系统真正的“决策凭证”。Obsidian 通过 Dataview 插件读取它就能自动渲染成表格微信推送服务拿到它就知道该发什么内容更重要的是这个 JSON 会被存进当天的日记笔记里成为不可篡改的决策依据。Codex 的优势在于它不强制你学编程语法你用平时跟同事讨论策略的语言写条件它就能理解它不绑定特定数据源今天用 CSV 文件喂它明天换 API 返回的 JSON只要字段名一致逻辑不用重写。2.4 Obsidian 的不可替代性本地化、可追溯、可扩展Obsidian 是整个系统的“物理载体”。为什么不用 Notion 或飞书因为它们的数据库是中心化的一旦服务商调整 API 或停服你的所有预警记录、策略迭代史、复盘笔记就面临迁移风险。而 Obsidian 的 vault 就是一个文件夹里面全是 .md 文件用任何文本编辑器都能打开。我所有的盯盘逻辑都存在Strategies/目录下每条策略是一个独立 Markdown 文件比如MA60_Breakout.md内容长这样--- type: strategy symbol: 600519 name: 贵州茅台 condition: | 当前收盘价 MA60 且 连续3日收盘价 MA60 且 成交量 前5日均量 * 1.3 last_updated: 2024-06-10 ---Dataview 插件扫描这些 frontmatter就能动态生成“当前生效策略总览表”。当 Codex 返回触发结果Obsidian 的 Templater 插件会根据模板自动生成新笔记路径是Daily/2024-06-12/Alert_600519_MA60_Breakout.md内容自动填充时间、数据快照、策略链接。这种基于文件系统的架构让整个系统具备三个硬性保障可审计所有操作都有文件修改时间戳git commit 记录可追溯每一次策略调整可离线网络中断时Codex 本地运行需提前下载模型Obsidian 仍能查看历史记录、编辑策略可迁移换个电脑复制整个 vault 文件夹所有数据、插件、设置原样恢复无需重新配置环境。2.5 整体架构图数据流与控制流分离整个系统分为三层彼此解耦数据采集层由一个轻量级 Python 脚本或 Node.js完成职责唯一定时调用免费行情 API如新浪、东方财富开放平台把原始数据存成 CSV 或 JSON 文件放在 Obsidian vault 的Data/Realtime/目录下。这个脚本我写了不到 50 行用 requests schedule 库部署在树莓派上 24 小时运行功耗低于 3W。规则执行层Codex 读取Data/Realtime/latest.json和Strategies/下的策略文件执行判断输出结构化结果到Data/Alerts/目录下的时间戳文件如20240612_143245.json。呈现与响应层Obsidian 的 Dataview 实时渲染Data/Alerts/下的最新结果Templater 插件监听该目录变化自动生成笔记第三方工具如 IFTTT 或企业微信机器人监控Data/Alerts/目录发现新文件就触发推送。这种分层设计的好处是替换任何一层都不影响其他层。比如某天新浪 API 不稳定我只需换一个数据源修改采集脚本Codex 和 Obsidian 的逻辑完全不用动或者我想增加短信告警只需在响应层加一个脚本监听文件不碰规则层。3. 核心细节解析从零搭建的每一步实操要点3.1 环境准备三步完成基础安装全程离线可操作第一步安装 Obsidian官网下载地址是 obsidian.md选择对应系统版本Windows/macOS/Linux安装过程无联网要求。安装完成后首次启动会提示创建 vault建议路径选在 D:\Obsidian-Stock避免中文路径和空格。创建后进入设置 → 社区插件 → 开启“Beta 版插件”搜索并安装三个核心插件Dataview用于动态查询和渲染数据必装Templater用于自动化生成笔记必装QuickAdd用于一键插入常用模板提升效率非必需但强烈推荐。提示Dataview 安装后需重启 Obsidian 才生效Templater 需在设置中指定模板文件夹路径建议设为Templates/目录。第二步安装 Codex 本地运行环境Codex 官方提供 CLI 工具支持 Windows/macOS/Linux。下载地址在 codex.dev注意不是 codex.ai后者是另一家公司。解压后得到codex-cli可执行文件放入系统 PATHWindows 用户可放 C:\Windows\System32macOS 放 /usr/local/bin。验证安装终端输入codex --version返回版本号即成功。关键点Codex 默认使用远程 API但国内用户常遇到cc switch local proxy failed while handling codex endpoint /responses错误。解决方案是强制本地模型下载codex-quantized模型包约 2.3GB解压到~/.codex/models/目录然后在命令行指定模型路径codex run --model-path ~/.codex/models/codex-quantized --temperature 0.1--temperature 0.1是为了降低随机性确保相同输入总是返回相同结构化输出这对盯盘系统至关重要。第三步构建基础目录结构在 Obsidian vault 根目录下手动创建以下文件夹Data/Realtime/存放实时行情数据CSV/JSONData/Alerts/存放 Codex 输出的预警结果Strategies/存放所有策略定义文件.mdDaily/按日期存放每日预警笔记Templates/存放 Templater 模板文件如alert-template.md。注意所有路径名必须用英文避免中文或特殊符号否则 Codex 调用时可能报路径错误。我曾因Data/实时行情/这个中文文件夹名导致 Codex 读取失败调试半小时才发现是编码问题。3.2 策略编写规范用 Markdown 写出机器可读的交易逻辑策略文件不是随意写的笔记而是有严格 frontmatter 结构的配置文件。以Strategies/MA60_Breakout.md为例--- type: strategy symbol: 600519 name: 贵州茅台 condition: | 当前收盘价 MA60 且 连续3日收盘价 MA60 且 成交量 前5日均量 * 1.3 且 板块指数涨幅 1.5% priority: high last_updated: 2024-06-10 --- # MA60 突破策略说明 适用于趋势启动初期过滤假突破。MA60 使用前复权计算成交量取成交额万元。关键字段解释type固定为strategyDataview 查询时用symbol股票代码6位数字无交易所后缀condition核心判断逻辑用自然语言书写但需遵循 Codex 认知习惯——避免模糊词如“大幅上涨”、“明显放量”改用量化表述“5%”、“1.5倍”priority优先级用于 Codex 执行时排序high/medium/low高优先级策略先执行last_updated最后修改日期方便追踪策略迭代。Codex 能识别的常见条件关键词价格类收盘价、开盘价、最高价、最低价、MA5、MA10、MA20、MA60、MA200、布林上轨、RSI、MACD量能类成交量、成交额、前N日均量、量比时间类今日、昨日、前日、连续N日、过去N日关联类所属板块、板块指数涨幅、同概念个股平均涨幅。实操心得第一次写 condition 时我用了“股价站上长期均线”Codex 返回了错误——它不认识“站上”这个词。改成“收盘价 MA60”后立刻通过。结论Codex 不理解金融术语的比喻义只认数学关系符。所以所有策略必须写成“变量 运算符 数值”的三元组中间不能有修饰词。3.3 数据采集脚本50行搞定实时行情入库我用 Python 写的采集脚本data_collector.py核心逻辑如下已脱敏可直接运行import requests import pandas as pd from datetime import datetime, timedelta import os def get_sina_data(symbol): 从新浪获取A股日线数据 url fhttps://hq.sinajs.cn/list{symbol} try: resp requests.get(url, timeout5) data resp.text.split(,) # 解析名称、昨收、今开、最高、最低、现价、成交量手、成交额元 return { symbol: symbol, name: data[0].split()[1], pre_close: float(data[2]), open: float(data[3]), high: float(data[4]), low: float(data[5]), current: float(data[6]), volume: int(data[7]) * 100, # 手转为股 amount: float(data[8]) } except: return None def save_to_csv(data, filename): 保存为CSV供Codex读取 df pd.DataFrame([data]) df.to_csv(filename, indexFalse, encodingutf-8-sig) if __name__ __main__: symbols [sh600519, sz000001, sh601318] # 股票代码列表 timestamp datetime.now().strftime(%Y%m%d_%H%M%S) output_dir D:/Obsidian-Stock/Data/Realtime/ os.makedirs(output_dir, exist_okTrue) all_data [] for sym in symbols: d get_sina_data(sym) if d: all_data.append(d) if all_data: save_to_csv(all_data, f{output_dir}latest_{timestamp}.csv) # 同时保留一份 latest.csv 供Codex固定读取 save_to_csv(all_data, f{output_dir}latest.csv)这个脚本每15秒运行一次用 Windows 任务计划程序或 macOS launchd 设置把数据存到Data/Realtime/latest.csv。Codex 调用时只读这个固定文件名避免每次都解析时间戳。脚本的关键设计点失败静默处理某只股票接口失败时不影响其他股票数据入库字段标准化统一用current表示现价volume表示成交量单位股amount表示成交额单位元Codex 的 condition 里就写当前收盘价 MA60它会自动映射到current字段轻量存储不用数据库纯 CSVObsidian 可直接预览也方便用 Excel 临时分析。注意事项新浪接口有频率限制单 IP 每分钟最多请求 60 次。我的脚本控制在每15秒一次4只股票轮询实际每分钟请求约16次完全在安全范围内。如果要监控50只股票建议分组轮询或换用东方财富的开放平台需申请 key但 QPS 更高。3.4 Codex 规则执行如何让 AI 稳定输出结构化 JSONCodex 的run命令需要两个输入策略文件路径和行情数据路径。我写了一个批处理脚本execute_strategy.batWindowsecho off setlocal enabledelayedexpansion REM 获取当前时间戳 for /f delims %%a in (powershell -Command Get-Date -Format yyyyMMdd_HHmmss) do set timestamp%%a REM 构建Codex命令 codex run ^ --model-path %USERPROFILE%\.codex\models\codex-quantized ^ --temperature 0.1 ^ --input D:\Obsidian-Stock\Strategies\MA60_Breakout.md ^ --data D:\Obsidian-Stock\Data\Realtime\latest.csv ^ --output D:\Obsidian-Stock\Data\Alerts\%timestamp%.json echo Strategy executed at %timestamp%关键参数说明--input指向策略文件Codex 会解析其 frontmatter 中的condition--data指向行情 CSVCodex 内部会自动加载并匹配字段如current对应“当前收盘价”--output输出 JSON 文件文件名含时间戳便于后续按时间排序--temperature 0.1这是稳定性的核心。温度值越低输出越确定。我测试过 temperature0.5 时同一条件有时返回{triggered:true}有时返回{result:true}字段名不一致导致 Obsidian 解析失败。降到 0.1 后100 次测试全部返回标准格式。Codex 输出的 JSON 有固定 schema{ strategy_id: MA60_Breakout, triggered: true, stocks: [ { symbol: 600519, name: 贵州茅台, current_price: 1723.5, ma60: 1710.2, volume_ratio: 1.42, plate_up: 2.35 } ], execution_time: 2024-06-12T14:32:45 }这个结构被 Obsidian 的 Dataview 和 Templater 严格依赖。例如 Dataview 查询今日所有触发记录TABLE strategy_id, stocks.symbol, stocks.name, stocks.current_price, execution_time FROM Data/Alerts WHERE file.mtime date(today) SORT execution_time DESC3.5 Obsidian 自动化Templater 模板生成复盘笔记Templater 的核心是模板文件。我在Templates/目录下创建alert-template.md--- date: % tp.date.now(YYYY-MM-DD) % time: % tp.date.now(HH:mm:ss) % strategy: %* const strategy tp.user.getStrategyName(tp.file.title); tR strategy % stocks: %* const stocks tp.user.getTriggeredStocks(tp.file.title); tR stocks % --- # % tp.date.now(YYYY-MM-DD HH:mm:ss) % % tp.user.getStrategyName(tp.file.title) % 触发 ## 触发详情 %* const data await tp.user.loadAlertJson(tp.file.title); % %* for (const stock of data.stocks) { % - **% stock.name %% stock.symbol %** - 当前价% stock.current_price % 元MA60% stock.ma60 % - 成交量倍数% stock.volume_ratio.toFixed(2) % 倍 - 所属板块涨幅% stock.plate_up.toFixed(2) % % - [点击查看K线图](https://xueqiu.com/S/% stock.symbol %) % } % ## 策略原文 %* const strategyFile tp.user.getStrategyFile(tp.user.getStrategyName(tp.file.title)); % %* const content await tp.user.readFile(strategyFile); % % content % ## 人工复盘 提示此处填写你的操作决策、后续跟踪计划、策略有效性评估配套的tp.user函数写在 Templater 的user_functions.js中module.exports { getStrategyName: async (filename) { // 从 alert 文件名提取策略名如 Alert_600519_MA60_Breakout.md → MA60_Breakout return filename.match(/Alert.*_(.*).md/)[1]; }, getTriggeredStocks: async (filename) { const data await this.loadAlertJson(filename); return data.stocks.map(s ${s.name}${s.symbol}).join(、); }, loadAlertJson: async (filename) { const path Data/Alerts/${filename}; const content await this.app.vault.adapter.read(path); return JSON.parse(content); } };当 Codex 生成20240612_143245.json后我手动在 Obsidian 中新建笔记用 QuickAdd 插件选择Alert Template模板自动填充所有字段。整个过程 3 秒完成比手动复制粘贴快 10 倍且零出错。实操心得Templater 的await语法必须配合 async 函数否则读取 JSON 会失败。我最初漏写了async模板生成后显示undefined调试时在浏览器控制台看到Promise is not resolved才定位到问题。建议新手先用简单模板测试确认tp.user.readFile能正常读取文件后再加复杂逻辑。4. 实操过程全记录从第一次运行到稳定值守的 72 小时4.1 第一天环境搭建与首次触发耗时 4 小时上午 10:00下载 Obsidian 并创建 vault安装 Dataview 和 Templater。遇到第一个坑Dataview 安装后提示“插件未启用”在设置里找到“已安装插件”列表发现 Dataview 显示为灰色点击启用按钮无反应。查文档发现是 Obsidian 版本太低v1.4.14升级到 v1.5.12 后解决。中午 12:30下载 Codex CLI 和 quantized 模型。解压模型时Windows 提示“文件名过长”无法解压到~/.codex/models/。解决方案用 7-Zip 选择“解压到当前文件夹”再手动移动到目标路径避开系统路径长度限制。下午 15:00写第一个策略Strategies/Test_Strategy.mdcondition 设为当前收盘价 1000茅台当时约1700元。运行采集脚本确认Data/Realtime/latest.csv生成成功。执行codex run命令返回{triggered:true,stocks:[{symbol:600519,name:贵州茅台,current_price:1723.5}]}。成功晚上 20:00配置 Templater 模板生成第一篇预警笔记Daily/2024-06-10/Alert_Test_Strategy.md。发现 Dataview 表格不显示数据检查发现FROM Data/Alerts路径写错了应该是FROM Data/Alerts少了个 s修正后立即生效。4.2 第二天多策略联调与误报优化耗时 6 小时早上 9:00添加第二只股票中科曙光603019condition 改为当前收盘价 MA20 且 成交量 前5日均量 * 1.8。运行后发现中科曙光频繁触发查数据发现是 MA20 计算方式问题新浪数据只提供日线没有历史序列Codex 计算 MA20 时默认用最近20日数据但实际只有10日有效。解决方案在采集脚本中对每只股票缓存最近30日数据到Data/History/目录Codex 读取时优先用缓存数据。中午 12:00测试“板块联动”条件。写 condition所属板块涨幅 2%但 Codex 返回错误“未找到板块数据”。原来行情 CSV 里没有板块字段。修改采集脚本增加板块查询逻辑先用股票代码查所属板块调用东方财富板块 API再合并到主数据。耗时 2 小时终于让plate_up字段稳定输出。下午 16:00发现误报率高。统计上午 10 次触发其中 7 次是“假突破”股价冲高后迅速回落。根源在于 condition 只判断“当前价”没考虑“是否收盘有效”。于是把 condition 升级为今日收盘价 MA60 且 今日最高价 MA60 * 1.02增加突破强度过滤。测试 2 小时误报降至 2 次。4.3 第三天微信推送与 24 小时值守验证耗时 8 小时上午 10:00接入微信推送。不用企业微信或公众号需要认证用 Server酱sc.ftqq.com。注册后获得 SCKEY在Data/Alerts/目录下创建push_wechat.pyimport requests import json import sys def send_alert(filename): with open(filename, r, encodingutf-8) as f: data json.load(f) if not data.get(triggered): return title f【盯盘提醒】{data[strategy_id]} text for stock in data[stocks]: text f{stock[name]}{stock[symbol]}{stock[current_price]}元MA60{stock[ma60]}量比{stock[volume_ratio]:.2f}\n payload { text: title, desp: text } requests.post(fhttps://sc.ftqq.com/{SCKEY}.send, datapayload) if __name__ __main__: send_alert(sys.argv[1])用 Windows 任务计划程序设置当Data/Alerts/目录有新文件创建时运行此脚本。测试发送成功手机微信秒收。晚上 22:00开始 24 小时压力测试。关闭所有窗口让树莓派后台运行采集脚本、Codex 定时执行、微信推送。凌晨 2:17收到第一条推送“【盯盘提醒】MA60_Breakout — 中际联合60352028.45元MA6027.12量比1.72”。打开 ObsidianDaily/2024-06-11/下已生成对应笔记Dataview 表格实时更新。系统全程无人干预稳定运行。4.4 第四天复盘机制落地与策略迭代耗时 3 小时早上 9:00回顾昨日 5 次触发记录。发现 2 次有效中际联合、寒武纪3 次无效因早盘冲高回落。在每篇预警笔记末尾的“人工复盘”区块我写下“中际联合早盘放量突破后横盘午后继续拉升已买入。需观察明日是否站稳 MA60。寒武纪突破后快速回落疑似主力诱多放弃。其余三次均为早盘 10 分钟内脉冲未收盘确认下次 condition 增加‘收盘前 30 分钟’时间过滤。”中午 12:00根据复盘结论更新MA60_Breakout.md的 condition当前收盘价 MA60 且 连续3日收盘价 MA60 且 成交量 前5日均量 * 1.3 且 交易时间 14:30新增时间过滤避免早盘噪音。下午 15:00用 Dataview 做策略效果统计TABLE strategy, length(stocks) as triggered_count, choice(length(stocks) 0, ✅, ❌) as success_flag FROM Daily WHERE date date(2024-06-10) GROUP BY strategy生成表格直观看到各策略触发次数与成功率为后续优化提供数据支撑。5. 常见问题与排查技巧实录那些踩过的坑和独家解法5.1 Codex 报错 “cc switch local proxy failed” 的 3 种根治方案这是国内用户最常遇到的错误本质是 Codex CLI 尝试连接远程代理服务失败。网上很多教程教你怎么配 ccswitch但治标不治本。我的实测解决方案方案一推荐彻底禁用远程模式编辑 Codex 配置文件~/.codex/config.json将remote_enabled: true改为false并确保--model-path参数始终指向本地模型路径。这是最干净的解法100% 规避网络问题。方案二更换 DNS 与 hosts如果必须用远程 API把 DNS 改为1.1.1.1并在C:\Windows\System32\drivers\etc\hosts添加104.21.32.12 codex-api.com 104.21.33.12 api.codex.devIP 地址需实时查询此处为示例此方案需定期更新 IP适合临时调试。方案三用 Docker 隔离网络环境创建docker-compose.ymlversion: 3 services: codex: image: codex/cli:latest volumes: - ./models:/root/.codex/models - ./data:/workspace/data command: codex run --model-path /root/.codex/models/codex-quantized --input /workspace/data/strategy.md --data /workspace/data/latest.csvDocker 容器内网络独立不受宿主机代理影响。适合企业级部署。注意方案一和方案三可共存我日常用方案一
返回列表