Codex /goal 使用的一个踩坑经验

首先 /goal 真的很好用, 下班之前设置一个 goal 之后就和朋友们出去 happy,第二天早上起来验收成果,爽YY。 问题描述 但是随着使用 goal 这个功能,我发了一个小坑:如果先让 codex 做某件事, 比如我们的操作序列是: 告诉 codex "先下载所有的金融数据到临时目录下,再...
Codex /goal 使用的一个踩坑经验
Codex /goal 使用的一个踩坑经验

首先 /goal 真的很好用, 下班之前设置一个 goal 之后就和朋友们出去 happy,第二天早上起来验收成果,爽YY。

问题描述 :exclamation_question_mark:

但是随着使用 goal 这个功能,我发了一个小坑:如果先让 codex 做某件事, 比如我们的操作序列是:

  • 告诉 codex "先下载所有的金融数据到临时目录下,再开始实现这个 spec plan”
  • 然后再设置 goal: “/goal 实现 spec plan new-feature-plan.md 中的所有子任务”

那么坑就来了:在经过 context compaction 之后 codex 有可能会再次去执行 “下载所有的金融数据到临时目录下”!
并且因为 goal 一般会执行很长时间,中间必定会经过很多次的 context compaction,所以这个下载操作会执行很多次 :joy:

这是因为 codex 的 context compaction 之后一定会把最后一个 user message 保留下来。所以经过 context compaction 之后,gpt 会傻傻地继续执行 last user message 中的意图,殊不知道 goal 已经驱动整个任务往前了一大截,last user message 中的意图早就完成了。

解决方法 :white_check_mark:

在 codex 本身有更好的办法解决这个问题之前 ,我的做法是:

原来的操作序列是:

  • 告诉 codex "先下载所有的金融数据到临时目录下,再开始实现这个 spec plan”
  • 然后再设置goal “/goal 实现 spec plan new-feature-plan.md 中的所有子任务”

修正之后的操作序列:

  • 告诉 codex "先下载所有的金融数据到临时目录下,再开始实现这个 spec plan”
  • 告诉 codex “实现 spec plan new-feature-plan.md 中的所有子任务”。也就是把 goal 中的提示词不带 “/goal”,直接发给 codex。 这是解决这个坑的关键步骤,目的是覆盖 last user message。
  • 然后再设置 goal “/goal 实现 spec plan new-feature-plan.md 中的所有子任务”

这样经过 context compaction 之后,codex 看到的 last user message 和 goal 是一致的,就能解决这个问题。

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文