.gitignore
8.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# 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/
# ── 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