让 <task_dir> 真正落地: 产物收敛到 workspace/tasks/<id>/
之前 SKILL.md 反复说 <task_dir>/spec_lock.md / <task_dir>/sections/,但代码里没把 task_dir 暴露给 agent,只给了 cwd——导致 spec_lock.md 落到 skills/proposal/、 sections/ 落到 repo 根。两者被 .gitignore 通配规则盖住,问题被掩盖。 - main.py system prompt 里显式注入 task_dir 绝对路径 + 强约束(只写 task_dir,不写 cwd / skills/ / repo 根)。SKILL 里的 <task_dir> 占位符明确指向这个值。 - skills/proposal/SKILL.md + skills/ppt/SKILL.md 的「工作目录约定」前面加一句解释 <task_dir> 来自 system prompt。 - .gitignore 删掉 sections/ slides/ spec_lock.md 这三条无锚 bandaid——workspace/ 已经覆盖正确路径下的产物;repo 根再写错了要靠 git status 立刻报红,不再靠 ignore 兜底。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
61ff98bb79
commit
bb9e92bb84
|
|
@ -21,9 +21,10 @@ venv/
|
|||
env/
|
||||
|
||||
# 用户运行产物 / 临时文件
|
||||
# task 内产物(sections/ slides/ spec_lock.md/ *.docx/*.pptx)都在 workspace/tasks/<id>/ 下,
|
||||
# 由上面这条 workspace/ 一并忽略。repo 根级别的 sections/ / slides/ / spec_lock.md
|
||||
# **故意不忽略**——如果 agent 又写错位置,要靠 git status 立刻暴露,不再用 .gitignore 兜底。
|
||||
workspace/
|
||||
slides/
|
||||
sections/
|
||||
*.log
|
||||
|
||||
# Claude Code 本地状态
|
||||
|
|
@ -41,7 +42,6 @@ desktop.ini
|
|||
*.tmp.pptx
|
||||
output.pptx
|
||||
untitled*.pptx
|
||||
spec_lock.md
|
||||
/*.pptx
|
||||
/*.docx
|
||||
|
||||
|
|
|
|||
12
main.py
12
main.py
|
|
@ -126,7 +126,17 @@ def build_agent(
|
|||
system_prompt = (ROOT / cfg["system_prompt"]).read_text(encoding="utf-8")
|
||||
if skills.skills:
|
||||
system_prompt += f"\n\n## 可用 skill (用 load_skill 加载完整指引)\n{skills.discovery_block()}"
|
||||
system_prompt += f"\n\n## 当前工作目录\n{tool_base}"
|
||||
task_dir_abs = task_dir.resolve()
|
||||
system_prompt += (
|
||||
f"\n\n## 工作目录\n"
|
||||
f"- cwd(用户启动时所在目录,只读用): `{tool_base}`\n"
|
||||
f"- **task_dir(所有产物写到这里)**: `{task_dir_abs}`\n\n"
|
||||
f"SKILL 文档里出现的 `<task_dir>` 占位符,一律指上面这个绝对路径。"
|
||||
f"产物示例: `{task_dir_abs}/spec_lock.md`、"
|
||||
f"`{task_dir_abs}/sections/01_summary.md`、"
|
||||
f"`{task_dir_abs}/slides/`、最终 .docx/.pptx。\n"
|
||||
f"⛔ 不要把产物写到 cwd / `skills/` / repo 根 —— 只写到 task_dir。"
|
||||
)
|
||||
now_iso = datetime.now().isoformat(timespec="seconds")
|
||||
meta = {
|
||||
"id": sid,
|
||||
|
|
|
|||
|
|
@ -89,6 +89,9 @@ python scripts/quality_check.py <output.pptx> --spec spec_lock.md
|
|||
- 详细规则见 `references/design_principles.md`
|
||||
|
||||
## 工作目录约定
|
||||
|
||||
下文 `<task_dir>` = system prompt 里「task_dir」给的**绝对路径**(形如 `…/workspace/tasks/<task_id>/`)。**所有产物都写到 task_dir 下**,不要写到 cwd / `skills/` / repo 根;`assets/icons/` 是 skill 自带的图标缓存,继续走 `skills/ppt/assets/icons/`。
|
||||
|
||||
```
|
||||
<task_dir>/
|
||||
├── source.md # source_to_md.py 转出的素材
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ python skills/proposal/scripts/render_docx.py <task_dir>/sections/ --fund-type k
|
|||
|
||||
## 工作目录约定
|
||||
|
||||
下文 `<task_dir>` = system prompt 里「task_dir」给的**绝对路径**(形如 `…/workspace/tasks/<task_id>/`)。**所有产物都写到 task_dir 下**,不要写到 cwd / `skills/` / repo 根。
|
||||
|
||||
```
|
||||
<task_dir>/
|
||||
├── source/ # 用户给的素材 (指南 PDF / 前期成果 / 团队介绍)
|
||||
|
|
|
|||
Loading…
Reference in New Issue