• cut

    config.toml

    应该是当前最新版本,没有老旧字段。

    注释就不加了,看着太乱,佬们发给LLM解读吧。```

    ========== 模型相关 ==========

    model = "gpt-5.6-sol"
    model_reasoning_effort = "max"
    plan_mode_reasoning_effort = "max"
    model_reasoning_summary = "concise"
    personality = "pragmatic"

    sandbox_mode = "danger-full-access"
    approval_policy = "never"
    suppress_unstable_features_warning = true

    service_tier = "fast"
    web_search = "live"

    [shell_environment_policy]
    inherit = "all"

    ========== 自定义 API Provider ==========

    model_provider = "custom"

    [model_providers.custom]
    name = "OpenAI"

    必须是"OpenAI"才能开启远程压缩;如果中转站不支持就改为任意名字,开启本地压缩

    base_url = "https://"
    experimental_bearer_token = "sk-"

    wire_api = "responses"
    requires_openai_auth = true
    stream_max_retries = 30
    request_max_retries = 30

    ========== 其他 ==========

    [tui]
    status_line = ["model-with-reasoning", "current-dir", "git-branch", "run-state", "context-remaining", "weekly-limit", "task-progress"]
    status_line_use_colors = true

    [tui.model_availability_nux]
    "gpt-5.5" = 4
    "gpt-5.6-sol" = 4

    [notice]
    hide_rate_limit_model_nudge = true

    [analytics]
    enabled = false

    关闭遥测

    [feedback]
    enabled = false

    关闭反馈功能。

    [otel]
    exporter = "none"

    不使用 OpenTelemetry 普通数据导出器。

    trace_exporter = "none"

    不导出 Trace(链路追踪)数据。

    metrics_exporter = "none"

    不导出 Metrics(指标)数据。

    log_user_prompt = false

    不记录/导出用户 Prompt。

    ```q1:网络环境配置

    我遇到过各种各样的网络相关报错,包括但不限于重连不上、

    Error running remote compact task: stream disconnected before completion、error decoding response body等等各种乱七八糟的错误,问题源头基本都是因为代理节点质量的问题,请求没正常发出去,或者回复没正常接收到,当然也有可能是中转站崩了。

    我尝试过禁用socket方式、添加.env文件之类的方法、还有各种教程里可能以及弃用了的字段,认为是意义不大的。反正我是折腾够了,快破防了。

    建议还是对本身网络环境进行修理,换优质节点,或者直连。

    贴一个常见的问题,长连接被切断导致收不到回复,对话/远程压缩无限失败。

    【已解决】Codex远程压缩一直报错 解决经验 - 开发调优 - LINUX DO

    如果解决不了网络问题,就只能新开对话了。

    q2:远程压缩问题

    中转站支持的话,添加name = "OpenAI"即可调用原生compact了。

    如果中转站不支持,出现报错,就必须改为其他非"OpenAI"值比如custom,使用本地压缩(但我感觉效果很差,信息丢失严重)。

    远程压缩是用专门的compact模型总结,本地压缩是用当前对话的模型总结,都是要发送包含巨幅内容请求等待思考回复的,网络有问题的话都是不行的。

    q3:web search问题

    要先使用官方账号登陆一下codex,获得auth,不要退出登录,并且设置requires_openai_auth = true,就可以用原生网络搜索工具了。

    如果不行的话就是中转站不支持,自行配置一下exa mcp之类的吧。

    q4:任务完成手机提醒

    我是用的配置极其简单的pushplus + 微信,codex完成任务后会调用一下pushplus的api给我发送消息提醒,免费额度足够。

    只要注册pushplus绑定微信,然后写一个调用他家api的python脚本就行了,在配置文件里加一行notify = \["python3", "~/.codex/notify-pushplus.py"\]就可以了。

    配合UU远程+蓝牙键鼠,懒人套装在家干活。

    其他

    希望帮助到大家吧。

    主楼
  • Fangxian

    佬,请问下关于配置codex里的上下文能设置成1m吗

    #1
  • 开心就好

    notify-pushplus.py 的内容能否发来看一下, 主要是通知的标题取哪里的,通知的内容又是取哪里的内容,

    #2
  • cut
    # ~/.codex/notify-pushplus.py
    import json
    import sys
    import urllib.request
    
    TOKEN = "X"
    
    def send_pushplus(message):
        payload = {
            # 收到的消息包括{标题、时间、最终回答}
            "token": TOKEN,
            "title": "⏰Codex任务完成",
            "content": message,
            "channel": "clawbot", # 注意微信clawbot最多连续发送10次消息,需要用户回复一次保活
            "template": "markdown"
        }
    
        req = urllib.request.Request(
            "https://www.pushplus.plus/send",
            data=json.dumps(payload).encode("utf-8"),
            headers={
                "Content-Type": "application/json"
            },
            method="POST"
        )
    
        opener = urllib.request.build_opener(
            urllib.request.ProxyHandler({})
        )
    
        opener.open(req, timeout=10)
    
    def main():
        if len(sys.argv) < 2:
            return
    
        try:
            event = json.loads(sys.argv[1])
        except Exception:
            return
    
        # 只处理 Codex 完成事件
        if event.get("type") != "agent-turn-complete":
            return
    
        message = event.get(
            "last-assistant-message",
            "Codex任务完成"
        )
    
        try:
            send_pushplus(message)
        except Exception:
            # 通知失败不影响 Codex
            pass
    
    if __name__ == "__main__":
        main()
    #3
  • 开心就好

    懂了,你的标题比较简单 直接写死文字了^-^

    #4

发表回复

登录后回复