.gitignore 8.99 KB
# Dependencies
node_modules/

# Environment
.env.local

# OS files
.DS_Store
Thumbs.db

# Logs
*.log
bot.log
.logs/
.data/

# System agents runtime data (under system/)
# 运行态**目录**的规则见文件末尾的白名单块(28 §5.5):深度 2 现在是任意公司 id,
# 没法再像以前那样逐个枚举 conversations/ logs/ workspace/ …
system/tasklog/
# 批 5 把派单存储统一进 tasks 表后,旧目录改名保留一版再清(27-P3C §十二.5)
system/tasklog.bak-unify/

# ── Agent 自写的运行态文件(27-P3B W13 提出,28 批次 0 根治)─────────────
# system agent 的 Claude CLI workDir **就是它自己的源码目录** system/agents/<id>/,
# 所以它每跑一次就会重写自己的 todo.md / plan.md,Claude CLI 还会改
# .claude/scheduled_tasks.json。这些改动过去被整仓 git status 扫到,
# 归属算到「当时正在跑的 work 节点」头上,让真正成功的节点被判越界 fail。
# 这些文件没有人工维护的内容(内容是任务流水日志,最大的 112KB),
# 读侧一律走 agent-chat.js:loadFile()(try/catch → ''),缺失不崩;
# 新 agent 的这两个文件由 AgentScaffold / company-service._copyTemplate
# 从本体目录拷贝 —— **本体仍然被跟踪**,那才是源码。
# W13 当时只做到「守卫不冤枉节点」,注释里写的「根治要把运行态文件移出 git」
# 就是 28 批次 0 干的事:运行态整体下沉到 system/agents/{aid}/{cid}/{taskId}/,
# 由文件末尾的白名单块一并 ignore(tasks/ 等枚举项从此被它覆盖,不再单列)。
# 留在这儿的只是本体**根上**的两个 agent 自写文件 —— 它们不在任何子目录里。
system/agents/*/todo.md
system/agents/*/plan.md
# .claude/scheduled_tasks.json 已被下方 `system/agents/*/.claude/*` 规则覆盖

# Company instance data (tenant-specific, under data/)
data/companies/
data/agents/job-*/

# 迁移前的原目录快照(scripts/migrate-agent-registry.js,28 §七「回滚」):
# 纯留档,不进版本库 —— 进了就会顶着 §5.5 那条「跑完真 agent 调用 git status 必须为空」的验收。
# 用通配而不是逐个列名:同一个脚本就写了两个备份根(BACKUP_ROOT = _migration-backup-agentdirs,
# M2_BACKUP = _migration-backup-2026-08-17,178MB),只列前者时后者一直挂在 git status 里。
data/_migration-backup-*/

# 模板使用计数(27-P3B W13):每次 hire 都 +1 的纯运行态计数器,
# 以前原地改写人工维护的 system/agents/_registry.json,于是任何一次真跑
# 都会在工作区留一条 diff。搬到这里,_registry.json 只留人工写的基线。
data/template-usage.json

# API access logs (runtime generated by api-access-logger middleware)
apiconversation/

# Legacy directories (removed from architecture)
/conversations/
/skills/

# Build output
dist/
web/dist/

# Temp files
tmp/
*.tmp

# IDE
.idea/
.vscode/
*.swp
*.swo

# Lock files (keep package-lock, ignore pnpm if using npm)
# pnpm-lock.yaml
*.lock

# === 运行时文件 (不提交) ===
.claude/
# ── system/agents 白名单(28 §5.5)───────────────────────────────────────
# 本体目录下,除 .claude 外的所有子目录都是运行态(公司态 {cid}/ + 任务态 {cid}/{taskId}/),
# 深度 2 是任意公司 id,枚举法失效,所以反过来:先全排除,再把 .claude/skills 捞回来。
# 必须整块放在这里 —— 上方 `.claude/` 那条排除了任意 .claude 目录,
# 而 gitignore 是「最后一条匹配的规则说了算」,负向规则只有排在它后面才生效;
# 同理 `system/agents/*/*/` 也必须排在 `!system/agents/*/.claude/` **前面**,
# 否则父目录 .claude 被重新排除,里面的 skills 就再也 ! 不回来了。
system/agents/*/*/
!system/agents/*/.claude/
system/agents/*/.claude/*
!system/agents/*/.claude/skills/
!system/agents/*/.claude/skills/**
# train/ 是唯一的第二个例外(原 system/templates/*/train/* 那组规则,28 批次 1 随目录一起搬过来):
# hunt / digest / evolve 三个子目录装的是人工维护的训练基线(knowhow、benchmark、train/test 数据集),
# 那是源码不是运行态;train/ 下的其余内容(评分中间件、迭代日志、FRAUDULENT_* 产物)照旧 ignore。
# 同样必须先 ! 回 train/ 本身,否则父目录被排除就再也捞不回子目录。
!system/agents/*/train/
system/agents/*/train/*
!system/agents/*/train/hunt/
!system/agents/*/train/digest/
!system/agents/*/train/evolve/
.pylibs/
nohup.out
data/agents/
data/workspace/
/workspace/
system/system/
system/workspace/

# Runtime memory/daily logs
memory/
system/memory/

# SQLite databases (runtime data)
*.sqlite
*.sqlite-wal
*.sqlite-shm

# System company runtime data
system/data/companies/

# Temp/backup files
*.bak
*.lock
EOF
PYEOF

# Evolve engine intermediate artifacts (not final deliverables)
*.FRAUDULENT_*
*FRAUDULENT_*
.batch_prompt*.txt
.batch_score_prompt*.txt
.sys_test.txt
improved_test.jsonl
iteration_*_scores_clean.json
manual_optimizations_scores.json

# Evolve iteration data (logs, generated, scores, runs)
iteration_*_scores.json
iteration_scores_*.json
iteration_*_log.txt
iteration_*_generated.json
iteration_*_generated.jsonl
iteration_*_run.json
iteration_*_test.jsonl
iteration_*_plain.jsonl

# Evolve batch/eval/runner scripts & data
batch_*.jsonl
batch_*.json
generated_test_*.json
generated_test_*.jsonl
eval_api.js
eval_cli.js
evolve.js
generate_v3*.js
batch_generate.js
batch_score.js
batch_scorer.js
reliable_generate.js
reliable_scorer.js
run_eval*.js
run_eval*.json
runner.js
runner_v*.js
score_only.js

# Evolve manual optimization & reference data
manual_optimizations*.jsonl
manual_optimized_*.json
manual_scores.json
perfect_scores.json
perfect_test.jsonl
reference_log.txt
reference_scores.json
train_sample.jsonl
train_sample_scores.json
test_scores.json

# Evolve intermediate knowhow
knowhow_v0.md

# Evolve scorer intermediate versions (keep only final scorer.js)
scorer_v*.js
scorer_old.js
scorer_batch.js
scorer_fixed.js
scorer_ai.js
scorer_ai_fixed.js
scorer_llm.js

# Evolve SKILL intermediate versions (keep SKILL.md and SKILL_final.md)
SKILL_v[0-9]*.md
SKILL_v*_base.md
SKILL_v*_premature.md
SKILL_fake_*.md

# Python cache
__pycache__/
*.pyc

# Environment (secrets)
.env


# ── 深度 >2 的「本体内容」例外(28 二轮修复,问题 1)───────────────────
# 上面 `system/agents/*/*/` 那条把本体目录下**所有**深度 2 子目录当运行态排除掉,
# 前提是「深度 2 只可能是 companyId」。存量里有 5 处不成立:它们是 agent 的源码 / 知识,
# 被历史目录结构挤到了深度 2 上。判据是「删掉它 agent 还认得自己吗」——
# 认不得的是本体(下面 !),认得的是它跑出来的产物(已 git rm --cached 退出跟踪)。
# 必须整块排在文件末尾:gitignore 最后一条匹配的规则说了算,而下面几条要覆盖的
# `system/agents/*/*/`、`evolve.js`、`scorer_v*.js`、`SKILL_v[0-9]*.md` 全在上面。
#
# org-innovator/docs/     —— 它派发给下游的 SKILL 模板库(l1-*/l2-* 共 18 份 SKILL.md +
#                            crawl_runner_template.py),没有这些它没东西可派
# org-innovator/agent_data/ —— story-architect 的 knowhow(剧本方法论),是知识不是流水
# lemonv_drama/docs/      —— create-drama 技能的实现(SKILL.md + 生图/入库脚本 + package.json)
# youtube-crawler/code/   —— SKILL.md v2.0 描述的那份三级降级爬虫实现本身
!system/agents/org-innovator/docs/
!system/agents/org-innovator/docs/**
!system/agents/org-innovator/agent_data/
!system/agents/org-innovator/agent_data/**
!system/agents/lemonv_drama/docs/
!system/agents/lemonv_drama/docs/**
!system/agents/youtube-crawler/code/
!system/agents/youtube-crawler/code/**

# 注意这里**故意不**给 train/evolve/ 加通配负向规则。content-selector 的
# scorer_v1.js / scorer_v3.js / SKILL_v1_backup.md 曾被跟踪,但它们正是文件末尾
# 「Evolve scorer/SKILL intermediate versions」两条规则点名的迭代中间产物 ——
# 那条策略是既有裁决,不是本次要推翻的。给整个 train/evolve/ 开 `**` 会连
# auto-publisher 的 SKILL_v1..v5、iteration_*_scores.json、.batch_prompt.txt 一起捞回来,
# 用 300 条新噪声换 3 个文件,不划算。这 3 个改走 rm --cached。

# 顺序问题:`.claude/skills/**` 在上面被 ! 回来,末尾的 `evolve.js` 又把
# evolver-youtube-crawler/.claude/skills/evolving/evolve.js 排除了。skills/ 下的东西
# 是 Claude CLI 真的要加载的技能实现,不是 evolve 流水线的中间脚本。
!system/agents/*/.claude/skills/**

# 上面的 `**` 负向规则会连密钥一起捞回来 —— lemonv_drama/docs/.env 里是真的生产库口令
# 和 OSS AK/SK,曾经被 git 跟踪(本次已 rm --cached)。这条必须是最后一条。
system/agents/**/.env