You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Makefile,兼容GPT处理人工干预后的组装流程?

解决Makefile覆盖手动修改文件的问题

修改后的Makefile内容

# 定义生成的片段文件和AI输出文件列表
SEG_FILES := $(wildcard seg-*.txt)
AI_OUTPUTS := $(SEG_FILES:seg-%.txt=ai-output-%.txt)

# 生成数据片段:仅当data.txt更新或seg文件不存在时执行拆分
segments: $(SEG_FILES)

$(SEG_FILES): data.txt
	break --size 20M ./data.txt seg-%d.txt

# 单个AI处理规则:仅对应seg文件更新或ai-output文件不存在时运行GPT
$(AI_OUTPUTS): ai-output-%.txt: seg-%.txt
	gpt $< > $@

# 拼接最终文件:仅当ai-output文件有更新或final.txt不存在时执行拼接
assemble: final.txt

final.txt: $(AI_OUTPUTS)
	concat --output $@ -- $(AI_OUTPUTS)

# 可选清理规则
clean:
	rm -f seg-*.txt ai-output-*.txt final.txt

核心修改说明

  • 替换伪目标为文件依赖:移除原有的ai伪目标,改用模式规则为每个ai-output-*.txt建立单独的依赖关系。Make会自动检查文件的修改时间,仅在必要时重新运行GPT。
  • 精准控制重生成条件:每个ai-output-%.txt仅依赖对应的seg-%.txt——如果手动修改了ai-output文件,且对应的seg文件未更新,Make不会重新生成该文件,保留手动修改结果。
  • 调整拼接触发逻辑:让final.txt直接依赖所有ai-output文件,而非伪目标ai。只有当ai-output文件有更新或final.txt不存在时,才会执行拼接操作。

两种场景的适配

  1. 目录干净时:执行make assemble,Make会依次触发segments生成片段文件,再生成所有ai-output文件,最后拼接得到final.txt。
  2. 手动修改ai-output后:执行make assemble,Make会检查所有ai-output文件的状态——只要对应的seg文件未更新,就不会重新运行GPT,直接基于修改后的文件拼接生成final.txt。

内容的提问来源于stack exchange,提问作者Dyson Cho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:27:23