用途
solo 用于在一个会话内独立攻克一个较难的数学问题。它与“多智能体围攻”式流程不同:没有子智能体、没有轮次划分,只有当前会话自身、一个笔记文件和最终的 proof.md。
调用与参数
调用消息内容读作 $ARGUMENTS,其中包含问题本身,可选地还包含运行目录。
- 消息开头形如
DIR=path的片段用于指定运行目录(路径含空格时用引号包裹),该片段会从问题文本中移除。 - 若还存在其它形如
NAME=value的前导片段(NAME 为两个及以上大写字母与下划线组成的词,value 为整数),则视为该技能不具备的设置项:用一句话告知用户/math-proof:solo在问题前只接受DIR=path(轮次与波次设置属于/math-proof:siege),并说明若该片段属于问题本身,可将问题改为文件路径给出,然后停止。 - 若剩余内容整体(去掉首尾空白与一对包裹引号、把反斜杠转义的空格视为空格后)是某个已存在文件的路径,则该文件即问题文件;需通过 view_file 或 run_command 而非 shell 确认其存在。
- 若不存在这样的文件、而剩余内容只能被理解为文件路径(单行以 .md、.txt 或 .tex 结尾,或去掉引号后不含空格且含“/”或“\”的单个词),则用一句话告知用户所查找的绝对路径下不存在该文件,并说明可改为在命令后直接给出完整问题文本,然后停止。
- 否则,剩余全部内容即为问题陈述原文,包括数学内容与换行(“n=3”“N=pq”“AB=AC”属于数学内容,不是设置项)。
运行目录 DIR 默认为当前目录下的 ./math-proof-solo,后续一律使用其绝对路径。若消息中既无可读的问题文件也无问题文本,用一句话指出并给出用法 /math-proof:solo <problem statement, or the path of a file holding it>,然后停止。
运行目录与文件
运行的文件包括 DIR/problem.md(问题)、DIR/notes.md(笔记)、DIR/proof.md(交付物)。用 mkdir -p 创建 DIR。
若 DIR/notes.md 已存在,说明该目录中已有进行中的工作:先比对 DIR/problem.md 与本次给出的问题(忽略空白与换行差异;文件用 cmp),若不同则说明该目录存放的是另一个问题的进展,并提示用 DIR=<另一个目录> 选择新目录后停止;若相同则读取 notes.md,以及已存在的 proof.md。若其中记录解答已完成(proof.md 已写、笔记中无待办),说明此前会话已结束,指出 proof.md 位置并说明 DIR=<另一个目录> 可开启新的尝试后停止;否则说明此前会话未完成、未写下的推理已丢失,应从笔记最后记录的位置继续而非重头开始。
若 DIR/notes.md 尚不存在,则把问题写入 DIR/problem.md:若问题来自文件,用 cp 逐字节复制;若来自调用消息文本,用 write_to_file 原样写入,不增删改写。随后完整 view_file DIR/problem.md,它是问题的权威文本。shell 仅用于该 mkdir、cp 与 cmp。
工作方式
任务是对 DIR/problem.md 中的问题求解,交付物为 DIR/proof.md。该任务以可跨多条消息的对话形式运行,每条消息的输出额度有限;被截断的消息通常随后会有继续请求,且只有已写下的内容(而非未写出的推理)能保证带入下一条消息。因此需要边做边写:每当确定一个结论(引理及其证明、归约、死路及其原因、当前试图证明的精确命题),先写入 DIR/notes.md 再继续推理。写笔记不等于完成,每次写入后应继续推进。
由于每条消息的输出额度也覆盖内部推理,且远小于难题所需,不应试图一条消息完成全部工作。应分阶段推进:每条消息早期、在任何长推导之前,先把当前计划和所尝试的精确命题写入 DIR/notes.md;然后推理到下一个具体的中间结果,一得到就追加到笔记并继续。许多短的书面步骤优于一次长的未写出推理。若消息被截断,应重读 DIR/notes.md 并从最后写下的内容继续,绝不重头开始。
该任务无网页访问、无代码执行,是纯推理任务。问题解决或已推进到尽可能远处时,把完整解答写入 DIR/proof.md。proof.md 会被无法打开其它文件(包括笔记)的审阅者单独阅读,因此必须自包含:解答依赖的每个论证都要在其中有完整写出。
整个流程无人值守:没有人可以回答问题,因此不得停下来提问。
结束时
DIR/proof.md 写好后,简要回复:proof.md 所在位置,以及它是否完全解决了问题,或按 proof.md 自身的措辞说明还留下了什么未决之处。