academic-army 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/README.zh-CN.md +4 -4
- package/agent-forge.yaml +30 -0
- package/dist/cli.js +3 -44
- package/dist/cli.js.map +1 -1
- package/dist/evolve-skill/pipeline.d.ts +48 -3
- package/dist/evolve-skill/pipeline.d.ts.map +1 -1
- package/dist/evolve-skill/pipeline.js +44 -35
- package/dist/evolve-skill/pipeline.js.map +1 -1
- package/metaskills/academic-army-coding-style/METASKILL.md +38 -5
- package/package.json +3 -10
- package/runs/develop-skill.sh +4 -5
- package/runs/develop.sh +4 -5
- package/skills/academic-army-coding-style/SKILL.md +705 -806
- package/dist/developing/agents/developer.d.ts +0 -9
- package/dist/developing/agents/developer.d.ts.map +0 -1
- package/dist/developing/agents/developer.js +0 -34
- package/dist/developing/agents/developer.js.map +0 -1
- package/dist/developing/agents/factory.d.ts +0 -3
- package/dist/developing/agents/factory.d.ts.map +0 -1
- package/dist/developing/agents/factory.js +0 -9
- package/dist/developing/agents/factory.js.map +0 -1
- package/dist/developing/agents/index.d.ts +0 -6
- package/dist/developing/agents/index.d.ts.map +0 -1
- package/dist/developing/agents/index.js +0 -6
- package/dist/developing/agents/index.js.map +0 -1
- package/dist/developing/agents/manager.d.ts +0 -19
- package/dist/developing/agents/manager.d.ts.map +0 -1
- package/dist/developing/agents/manager.js +0 -56
- package/dist/developing/agents/manager.js.map +0 -1
- package/dist/developing/agents/prompts.d.ts +0 -3
- package/dist/developing/agents/prompts.d.ts.map +0 -1
- package/dist/developing/agents/prompts.js +0 -12
- package/dist/developing/agents/prompts.js.map +0 -1
- package/dist/developing/agents/reviewer.d.ts +0 -10
- package/dist/developing/agents/reviewer.d.ts.map +0 -1
- package/dist/developing/agents/reviewer.js +0 -35
- package/dist/developing/agents/reviewer.js.map +0 -1
- package/dist/developing/agents/trajectory-optimizer.d.ts +0 -19
- package/dist/developing/agents/trajectory-optimizer.d.ts.map +0 -1
- package/dist/developing/agents/trajectory-optimizer.js +0 -51
- package/dist/developing/agents/trajectory-optimizer.js.map +0 -1
- package/dist/developing/agents/types.d.ts +0 -19
- package/dist/developing/agents/types.d.ts.map +0 -1
- package/dist/developing/agents/types.js +0 -21
- package/dist/developing/agents/types.js.map +0 -1
- package/dist/developing/index.d.ts +0 -3
- package/dist/developing/index.d.ts.map +0 -1
- package/dist/developing/index.js +0 -3
- package/dist/developing/index.js.map +0 -1
- package/dist/developing/pipeline.d.ts +0 -31
- package/dist/developing/pipeline.d.ts.map +0 -1
- package/dist/developing/pipeline.js +0 -174
- package/dist/developing/pipeline.js.map +0 -1
- package/dist/developing/pipelineskill.d.ts +0 -15
- package/dist/developing/pipelineskill.d.ts.map +0 -1
- package/dist/developing/pipelineskill.js +0 -110
- package/dist/developing/pipelineskill.js.map +0 -1
- package/dist/pipeline.d.ts +0 -13
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/pipeline.js +0 -24
- package/dist/pipeline.js.map +0 -1
package/README.md
CHANGED
|
@@ -83,11 +83,11 @@ $EDITOR output/goal.md
|
|
|
83
83
|
bash runs/develop.sh
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
Run [`runs/develop.sh`](runs/develop.sh) to call the
|
|
86
|
+
Run [`runs/develop.sh`](runs/develop.sh) to call the `developing-agent-forge` development pipeline, which reads the three planning artifacts plus the current `--goal-path` file and iteratively writes code under `output/codebase`. Each time you want the next new task, update `output/goal.md` before rerunning the wrapper.
|
|
87
87
|
|
|
88
|
-
The development loop
|
|
88
|
+
The development loop stores project progress memory under `output/developing/project-progress-memory` and code design memory under `output/developing/code-design-memory`. If a new goal starts inheriting old context, edit or delete stale memory files in those directories before rerunning.
|
|
89
89
|
|
|
90
|
-
See [`src/README.md`](src/README.md) for the TypeScript entry points
|
|
90
|
+
See [`src/README.md`](src/README.md) for the local TypeScript entry points. The development loop implementation lives in the `developing-agent-forge` package.
|
|
91
91
|
|
|
92
92
|
## Common Tasks
|
|
93
93
|
|
|
@@ -137,7 +137,7 @@ Find the closest papers to this research idea, compare their methods, and return
|
|
|
137
137
|
| `src/` | TypeScript pipeline structure and implementation notes. |
|
|
138
138
|
| `output/` | Generated planning artifacts, codebase output, and archives. |
|
|
139
139
|
|
|
140
|
-
Agent and team wiring lives in [`agent-forge.yaml`](agent-forge.yaml). The
|
|
140
|
+
Agent and team wiring lives in [`agent-forge.yaml`](agent-forge.yaml). The local TypeScript agents are implemented under [`src/evolve-skill/agents`](src/evolve-skill/agents); developing agents come from `developing-agent-forge`.
|
|
141
141
|
|
|
142
142
|
Prepared AcademicArmy skills live under [`skills/`](skills/), and their matching metaskill design/evolution files live under [`metaskills/`](metaskills/).
|
|
143
143
|
|
package/README.zh-CN.md
CHANGED
|
@@ -83,11 +83,11 @@ $EDITOR output/goal.md
|
|
|
83
83
|
bash runs/develop.sh
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
运行 [`runs/develop.sh`](runs/develop.sh) 来调用
|
|
86
|
+
运行 [`runs/develop.sh`](runs/develop.sh) 来调用 `developing-agent-forge` 提供的 `developing` pipeline,读取三份规划产物和当前 `--goal-path` 文件,并在 `output/codebase` 下迭代写代码。每次想执行下一个新任务时,先更新 `output/goal.md`,再重新运行 wrapper。
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
开发循环会把项目进度记忆放在 `output/developing/project-progress-memory`,把代码设计记忆放在 `output/developing/code-design-memory`。如果新 goal 开始继承旧上下文,可以在重新运行前编辑或删除这些目录里的过期 memory 文件。
|
|
89
89
|
|
|
90
|
-
TypeScript 入口和目录结构见 [`src/README.zh-CN.md`](src/README.zh-CN.md)
|
|
90
|
+
本仓库的 TypeScript 入口和目录结构见 [`src/README.zh-CN.md`](src/README.zh-CN.md)。开发循环实现来自 `developing-agent-forge` 包。
|
|
91
91
|
|
|
92
92
|
## 常见任务
|
|
93
93
|
|
|
@@ -137,7 +137,7 @@ Find the closest papers to this research idea, compare their methods, and return
|
|
|
137
137
|
| `src/` | TypeScript pipeline 的目录结构和实现说明。 |
|
|
138
138
|
| `output/` | 生成的规划产物、代码库输出和归档。 |
|
|
139
139
|
|
|
140
|
-
Agent 和团队 wiring 位于 [`agent-forge.yaml`](agent-forge.yaml)
|
|
140
|
+
Agent 和团队 wiring 位于 [`agent-forge.yaml`](agent-forge.yaml)。本仓库内的 TypeScript agents 实现于 [`src/evolve-skill/agents`](src/evolve-skill/agents);developing agents 来自 `developing-agent-forge`。
|
|
141
141
|
|
|
142
142
|
已准备的 AcademicArmy skills 位于 [`skills/`](skills/),对应的 metaskill 设计与 evolution 文件位于 [`metaskills/`](metaskills/)。
|
|
143
143
|
|
package/agent-forge.yaml
CHANGED
|
@@ -22,6 +22,16 @@ runtimes:
|
|
|
22
22
|
OPENAI_BASE_URL: https://api.deepseek.com
|
|
23
23
|
OPENAI_MODEL: deepseek-v4-pro
|
|
24
24
|
OPENAI_REASONING_EFFORT: high
|
|
25
|
+
mcpServers:
|
|
26
|
+
academic_army_mcp_tools:
|
|
27
|
+
command: python
|
|
28
|
+
args:
|
|
29
|
+
- -m
|
|
30
|
+
- mcp-server
|
|
31
|
+
cwd: .
|
|
32
|
+
env:
|
|
33
|
+
PYTHONPATH: .
|
|
34
|
+
timeout: 3600000
|
|
25
35
|
|
|
26
36
|
threads:
|
|
27
37
|
codex-5.5-full-access:
|
|
@@ -81,3 +91,23 @@ agents:
|
|
|
81
91
|
workspacePath: *developerWorkspacePath
|
|
82
92
|
trajectory-optimizer:
|
|
83
93
|
thread: codex-5.5-full-access
|
|
94
|
+
memory-reader:
|
|
95
|
+
thread: codex-5.5-read-only
|
|
96
|
+
constants:
|
|
97
|
+
memoryDir: .
|
|
98
|
+
memory-modify-planner:
|
|
99
|
+
thread: codex-5.5-full-access
|
|
100
|
+
constants:
|
|
101
|
+
memoryDir: .
|
|
102
|
+
memory-modifier:
|
|
103
|
+
thread: codex-5.5-full-access
|
|
104
|
+
constants:
|
|
105
|
+
memoryDir: .
|
|
106
|
+
memory-create-planner:
|
|
107
|
+
thread: codex-5.5-full-access
|
|
108
|
+
constants:
|
|
109
|
+
memoryDir: .
|
|
110
|
+
memory-creator:
|
|
111
|
+
thread: codex-5.5-full-access
|
|
112
|
+
constants:
|
|
113
|
+
memoryDir: .
|
package/dist/cli.js
CHANGED
|
@@ -1,47 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { developingPipeline, developingSkillPipeline } from "
|
|
2
|
+
import { runPipelinesCli } from "coding-agent-forge";
|
|
3
|
+
import { developingPipeline, developingSkillPipeline } from "developing-agent-forge";
|
|
4
4
|
import { evolveSkillPipeline } from "./evolve-skill/index.js";
|
|
5
|
-
|
|
6
|
-
return {
|
|
7
|
-
name: entry.name,
|
|
8
|
-
description: entry.description,
|
|
9
|
-
run: (args) => runPipelineCli(entry.definition, args),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
const cliDefinitions = [
|
|
13
|
-
defineCli({
|
|
14
|
-
name: "developing",
|
|
15
|
-
description: "Run the code development loop.",
|
|
16
|
-
definition: developingPipeline,
|
|
17
|
-
}),
|
|
18
|
-
defineCli({
|
|
19
|
-
name: "developing-skill",
|
|
20
|
-
description: "Run the code development loop and evolve its skill.",
|
|
21
|
-
definition: developingSkillPipeline,
|
|
22
|
-
}),
|
|
23
|
-
defineCli({
|
|
24
|
-
name: "evolve-skill",
|
|
25
|
-
description: "Run the skill evolution loop.",
|
|
26
|
-
definition: evolveSkillPipeline,
|
|
27
|
-
}),
|
|
28
|
-
];
|
|
29
|
-
function buildHelp() {
|
|
30
|
-
const pipelineList = cliDefinitions
|
|
31
|
-
.map((pipeline) => ` ${pipeline.name.padEnd(16)} ${pipeline.description}`)
|
|
32
|
-
.join("\n");
|
|
33
|
-
return `Usage: npm run cli -- <pipeline> [...args]
|
|
34
|
-
|
|
35
|
-
Available pipelines:
|
|
36
|
-
${pipelineList}`;
|
|
37
|
-
}
|
|
38
|
-
const [pipelineName, ...pipelineArgs] = process.argv.slice(2);
|
|
39
|
-
const pipelineDefinition = cliDefinitions.find((pipeline) => pipeline.name === pipelineName);
|
|
40
|
-
if (pipelineDefinition === undefined) {
|
|
41
|
-
console.log(buildHelp());
|
|
42
|
-
process.exitCode = 1;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
await pipelineDefinition.run(pipelineArgs);
|
|
46
|
-
}
|
|
5
|
+
await runPipelinesCli([developingPipeline, developingSkillPipeline, evolveSkillPipeline], process.argv.slice(2));
|
|
47
6
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,eAAe,CACnB,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,EAClE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AgentTeam } from "coding-agent-forge";
|
|
2
|
-
import type { ParsedPipelineArgs } from "../pipeline.js";
|
|
3
2
|
import type { SkillEvaluatorVariables, SkillModifierVariables, SkillRunnerVariables } from "./agents/index.js";
|
|
4
3
|
export type EvolveSkillAgentVariables = {
|
|
5
4
|
"skill-runner": SkillRunnerVariables;
|
|
@@ -13,7 +12,53 @@ export type EvolveSkillOptions = {
|
|
|
13
12
|
taskPaths: readonly string[];
|
|
14
13
|
rounds: number;
|
|
15
14
|
};
|
|
16
|
-
export declare function parseEvolveSkillArgs(args: readonly string[]): ParsedPipelineArgs<EvolveSkillOptions>;
|
|
17
15
|
export declare function evolveSkill(team: AgentTeam<EvolveSkillAgentVariables>, options: EvolveSkillOptions): Promise<void>;
|
|
18
|
-
export declare const
|
|
16
|
+
export declare const evolveSkillArgsOptions: {
|
|
17
|
+
readonly "skill-path": {
|
|
18
|
+
readonly type: "string";
|
|
19
|
+
readonly description: "Skill directory or file to revise";
|
|
20
|
+
};
|
|
21
|
+
readonly "artifact-path": {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "Output folder cleared and reused by each runner round";
|
|
24
|
+
};
|
|
25
|
+
readonly "metaskill-path": {
|
|
26
|
+
readonly type: "string";
|
|
27
|
+
readonly description: "Metaskill design document used by the evaluator and modifier";
|
|
28
|
+
};
|
|
29
|
+
readonly "task-path": {
|
|
30
|
+
readonly type: "string";
|
|
31
|
+
readonly multiple: true;
|
|
32
|
+
readonly description: "Fixed task used by the runner to test the skill";
|
|
33
|
+
};
|
|
34
|
+
readonly rounds: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
readonly default: "3";
|
|
37
|
+
readonly description: "Number of self-evolve rounds to run";
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export declare const evolveSkillPipeline: import("coding-agent-forge").Pipeline<{
|
|
41
|
+
readonly "skill-path": {
|
|
42
|
+
readonly type: "string";
|
|
43
|
+
readonly description: "Skill directory or file to revise";
|
|
44
|
+
};
|
|
45
|
+
readonly "artifact-path": {
|
|
46
|
+
readonly type: "string";
|
|
47
|
+
readonly description: "Output folder cleared and reused by each runner round";
|
|
48
|
+
};
|
|
49
|
+
readonly "metaskill-path": {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
readonly description: "Metaskill design document used by the evaluator and modifier";
|
|
52
|
+
};
|
|
53
|
+
readonly "task-path": {
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
readonly multiple: true;
|
|
56
|
+
readonly description: "Fixed task used by the runner to test the skill";
|
|
57
|
+
};
|
|
58
|
+
readonly rounds: {
|
|
59
|
+
readonly type: "string";
|
|
60
|
+
readonly default: "3";
|
|
61
|
+
readonly description: "Number of self-evolve rounds to run";
|
|
62
|
+
};
|
|
63
|
+
}, EvolveSkillAgentVariables>;
|
|
19
64
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/evolve-skill/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/evolve-skill/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAKV,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,SAAS,CAAC,yBAAyB,CAAC,EAC1C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuDf;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;CAuBK,CAAC;AAEzC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;6BAmC9B,CAAC"}
|
|
@@ -1,38 +1,6 @@
|
|
|
1
|
+
import { definePipeline, } from "coding-agent-forge";
|
|
1
2
|
import { mkdir, readFile, rm } from "node:fs/promises";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
import { definePipeline } from "../pipeline.js";
|
|
4
3
|
import { agentFactories } from "./agents/index.js";
|
|
5
|
-
const USAGE = "Usage: npm run evolve-skill -- --config <path> --skill-path <path> --artifact-path <folder> --metaskill-path <path> --task-path <path> [--task-path <path> ...] [--rounds <positive-integer>]";
|
|
6
|
-
export function parseEvolveSkillArgs(args) {
|
|
7
|
-
const { values: { config, "skill-path": skillPath, "artifact-path": artifactPath, "metaskill-path": metaskillPath, "task-path": taskPath, rounds, }, } = parseArgs({
|
|
8
|
-
args: [...args],
|
|
9
|
-
options: {
|
|
10
|
-
config: { type: "string", multiple: true },
|
|
11
|
-
"skill-path": { type: "string" },
|
|
12
|
-
"artifact-path": { type: "string" },
|
|
13
|
-
"metaskill-path": { type: "string" },
|
|
14
|
-
"task-path": { type: "string", multiple: true },
|
|
15
|
-
rounds: { type: "string" },
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
if (config === undefined ||
|
|
19
|
-
skillPath === undefined ||
|
|
20
|
-
artifactPath === undefined ||
|
|
21
|
-
metaskillPath === undefined ||
|
|
22
|
-
taskPath === undefined) {
|
|
23
|
-
throw new Error(USAGE);
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
configPaths: config,
|
|
27
|
-
runningOptions: {
|
|
28
|
-
skillPath,
|
|
29
|
-
artifactPath,
|
|
30
|
-
metaskillPath,
|
|
31
|
-
taskPaths: taskPath,
|
|
32
|
-
rounds: Number(rounds ?? 3),
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
4
|
export async function evolveSkill(team, options) {
|
|
37
5
|
const logRecord = (thread, record) => {
|
|
38
6
|
console.log(thread.recordToPrettyString(record));
|
|
@@ -66,9 +34,50 @@ export async function evolveSkill(team, options) {
|
|
|
66
34
|
console.log(`# Edit\n${edit}\n`);
|
|
67
35
|
}
|
|
68
36
|
}
|
|
37
|
+
export const evolveSkillArgsOptions = {
|
|
38
|
+
"skill-path": {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Skill directory or file to revise",
|
|
41
|
+
},
|
|
42
|
+
"artifact-path": {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Output folder cleared and reused by each runner round",
|
|
45
|
+
},
|
|
46
|
+
"metaskill-path": {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "Metaskill design document used by the evaluator and modifier",
|
|
49
|
+
},
|
|
50
|
+
"task-path": {
|
|
51
|
+
type: "string",
|
|
52
|
+
multiple: true,
|
|
53
|
+
description: "Fixed task used by the runner to test the skill",
|
|
54
|
+
},
|
|
55
|
+
rounds: {
|
|
56
|
+
type: "string",
|
|
57
|
+
default: "3",
|
|
58
|
+
description: "Number of self-evolve rounds to run",
|
|
59
|
+
},
|
|
60
|
+
};
|
|
69
61
|
export const evolveSkillPipeline = definePipeline({
|
|
62
|
+
name: "evolve-skill",
|
|
63
|
+
description: "Run the skill evolution loop.",
|
|
64
|
+
argsOptions: evolveSkillArgsOptions,
|
|
70
65
|
agentFactories,
|
|
71
|
-
|
|
72
|
-
|
|
66
|
+
async run(team, options) {
|
|
67
|
+
const { "skill-path": skillPath, "artifact-path": artifactPath, "metaskill-path": metaskillPath, "task-path": taskPaths, rounds, } = options;
|
|
68
|
+
if (skillPath === undefined ||
|
|
69
|
+
artifactPath === undefined ||
|
|
70
|
+
metaskillPath === undefined ||
|
|
71
|
+
taskPaths === undefined) {
|
|
72
|
+
throw new Error("--skill-path, --artifact-path, --metaskill-path and --task-path are required");
|
|
73
|
+
}
|
|
74
|
+
await evolveSkill(team, {
|
|
75
|
+
skillPath,
|
|
76
|
+
artifactPath,
|
|
77
|
+
metaskillPath,
|
|
78
|
+
taskPaths,
|
|
79
|
+
rounds: Number(rounds),
|
|
80
|
+
});
|
|
81
|
+
},
|
|
73
82
|
});
|
|
74
83
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/evolve-skill/pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/evolve-skill/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,GAIf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAqBnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAA0C,EAC1C,OAA2B;IAE3B,MAAM,SAAS,GAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CACvB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,QAAQ,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9C,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACtD,MAAM,MAAM,CAAC,WAAW,CACtB;gBACE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,QAAQ;aACT,EACD,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,CACb,MAAM,IAAI,CAAC,WAAW,CACpB,iBAAiB,EACjB;YACE,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,gBAAgB;SACjB,EACD,SAAS,CACV,CACF,CAAC,IAAI,EAAE,CAAC;QAET,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CACjC,gBAAgB,EAChB;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM;SACP,EACD,SAAS,CACV,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mCAAmC;KACjD;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;KACrE;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8DAA8D;KAC5E;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,iDAAiD;KAC/D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,qCAAqC;KACnD;CACqC,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;IAChD,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,sBAAsB;IACnC,cAAc;IACd,KAAK,CAAC,GAAG,CACP,IAA0C,EAC1C,OAAuD;QAEvD,MAAM,EACJ,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,aAAa,EAC/B,WAAW,EAAE,SAAS,EACtB,MAAM,GACP,GAAG,OAAO,CAAC;QACZ,IACE,SAAS,KAAK,SAAS;YACvB,YAAY,KAAK,SAAS;YAC1B,aAAa,KAAK,SAAS;YAC3B,SAAS,KAAK,SAAS,EACvB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,CAAC,IAAI,EAAE;YACtB,SAAS;YACT,YAAY;YACZ,aAAa;YACb,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -21,6 +21,36 @@
|
|
|
21
21
|
如果当前repo已有自己的结构,本skill应尊重既有结构和项目惯例;只有当现有结构影响可读性、局部修改能力或harness/test组织时,才做局部整理。
|
|
22
22
|
如果已有repo没有某个初始化模板约定,本skill不应为了补齐模板而强行创建;只有当前任务需要该结构时才新增。
|
|
23
23
|
|
|
24
|
+
## Project-agnostic skill hygiene
|
|
25
|
+
|
|
26
|
+
skill本身必须保持项目无关,只包含通用任务定义、输入输出边界、代码质量原则、framework维护原则、harness/test组织原则和检查机制。
|
|
27
|
+
skill文件只沉淀通用方法、边界、质量标准和检查机制;具体项目名、路径、类名、函数名、模块名、数据集名、method名、harness名只能来自当次输入或当次生成结果,不能写死进skill本身。
|
|
28
|
+
skill中不应写入某次具体项目运行产生的内容,例如具体文件路径、目录名、类名、函数名、模块名、仓库名、数据集名、method名、baseline名、metric名、harness名、test名或artifact字段名。
|
|
29
|
+
固定目录约定可以保留,例如`data/`、`output/`、`results/`和`harness/`;除此之外的路径、源码布局、测试路径、模块路径和文件名应由当前repo、初始化模板、用户输入和当次任务共同决定。
|
|
30
|
+
skill可以说明“根据当前repo已有结构选择测试位置”,但不应写成某个具体测试路径。
|
|
31
|
+
skill可以说明“根据当前功能设计class/function/module”,但不应在skill里预设具体class name、function name或module name。
|
|
32
|
+
skill可以说明“method、baseline、metric、harness应语义化命名”,但具体名称只能来自当次用户输入、goal/reference context、已有repo或当次生成结果。
|
|
33
|
+
skill中如果必须举例,应使用明显的抽象占位符,例如`<method_name>`、`<harness_name>`、`<module_name>`、`<artifact_type>`,并确保这些例子不会被误认为固定模板。
|
|
34
|
+
skill中不要放入某次生成出来的`FRAMEWORK.md`、代码片段、目录树、class skeleton或配置文件作为长期规则;这些属于项目输出,不属于skill知识。
|
|
35
|
+
如果需要描述目录结构,应描述决策原则,而不是写死结构。例如写“遵守已有repo的源码布局和测试布局”,不要写某个具体项目的实际文件树。
|
|
36
|
+
如果需要描述代码结构,应描述抽象关系,而不是写死符号。例如写“将candidate method接入统一method interface”,不要写具体类名或函数名。
|
|
37
|
+
如果需要描述harness结构,应描述它应包含目标、输入、输出、metric、raw artifact和修改边界,不要写具体harness名称,除非该名称来自当次输入。
|
|
38
|
+
如果需要描述testing结构,应描述测试应覆盖的功能类型和pass/fail标准,不要写具体测试文件路径或具体测试类名。
|
|
39
|
+
如果需要描述framework文档,应说明`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`应记录当前repo实际结构、修改点和设计理由,而不是在skill里预设某个项目的framework内容。
|
|
40
|
+
skill中的变量应保持抽象,例如“当前repo”“当前任务”“当前功能”“当前harness”“当前method”“当前artifact”,不要使用某个项目里的真实命名。
|
|
41
|
+
skill可以要求agent读取当次输入中的项目特定信息,并在生成代码或文档时使用这些信息;但这些项目特定信息只属于当次输出,不应反向写回skill规则。
|
|
42
|
+
如果某条规则换一个项目就不成立,说明它大概率是项目特定内容,不应写进skill。
|
|
43
|
+
如果某条规则包含真实路径、真实类名、真实函数名、真实实验名或真实仓库名,应检查它是否只是某次运行的残留;如果是,应删除或改写成抽象原则。
|
|
44
|
+
如果某条规则来自某次debug、某次repo结构、某次框架实现或某次代码生成结果,应先判断它是否能泛化为质量原则;不能泛化就不要写进skill。
|
|
45
|
+
skill不应通过硬编码项目细节来“帮助下次运行”;下次运行需要的项目细节应从输入文件、当前repo和deepresearch结果中重新获得。
|
|
46
|
+
skill中保留的固定内容应只包括跨项目稳定成立的约定,例如任务定位、输出边界、文档维护、harness/test职责区分、固定实验目录、代码可读性、change locality、高内聚低耦合和scope hygiene。
|
|
47
|
+
skill应避免把示例写得过于真实;过真实的示例容易被agent误当成固定结构,从而在其他项目中生成错误路径或错误类名。
|
|
48
|
+
如果确实需要示例,示例应放在“illustrative only”语境下,并使用中性占位符,不使用真实项目命名。
|
|
49
|
+
skill输出的代码和文档可以是项目特定的,因为它们服务当前repo;skill定义本身必须是项目无关的,因为它会被多种任务复用。
|
|
50
|
+
`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`可以记录当前项目的具体模块、路径、harness、test和修改点;但这些内容应生成在当前repo文档里,不应复制进skill文件。
|
|
51
|
+
当agent从某次任务中总结经验时,只能把可泛化的设计原则加入skill,例如“避免长文件”“减少不必要配置”“保持修改局部化”;不能把当次项目的具体结构加入skill。
|
|
52
|
+
skill应采用“runtime binding”思路:skill定义通用规则,当次运行再把规则绑定到当前repo、当前goal/reference context和当前代码结构上。
|
|
53
|
+
|
|
24
54
|
## 通用代码写作原则
|
|
25
55
|
|
|
26
56
|
agent写代码时应优先保证代码清晰、直接、可读,而不是为了显得“工程化”引入不必要抽象。
|
|
@@ -124,7 +154,7 @@ harness如果变复杂,应在`harness/`下对应harness子文件夹内拆成
|
|
|
124
154
|
harness应支持“修改模块 -> 运行harness -> 读取结果 -> 再修改”的循环,因此需要稳定入口语义、固定输入协议、可解析输出格式和清晰metric定义。
|
|
125
155
|
harness输出应优先记录原始、低加工的artifact,例如per-example prediction、raw score、timing trace、resource usage、intermediate decision、error case、log metadata、config snapshot、seed、split和metric values。
|
|
126
156
|
harness不应把面向论文图表的数据聚合和转换写进核心逻辑;聚合、绘图和论文表格生成应由后续分析、绘图或论文写作skill基于原始artifact完成。
|
|
127
|
-
test应覆盖数据读取、配置解析、method接口、baseline接口、metric计算、结果导出、CLI
|
|
157
|
+
test应覆盖数据读取、配置解析、method接口、baseline接口、metric计算、结果导出、CLI入口和核心模块交互等功能正确性问题;具体覆盖范围由当前任务和goal/reference context决定。
|
|
128
158
|
testing输出主要服务debug和开发反馈,应和论文实验结果artifact分开管理。
|
|
129
159
|
如果已有repo使用`test/`作为测试布局,本skill应把它当作已有repo约定维护;如果已有repo使用别的测试布局,本skill应尊重目标生态和repo已有测试结构。
|
|
130
160
|
|
|
@@ -135,13 +165,13 @@ testing输出主要服务debug和开发反馈,应和论文实验结果artifact
|
|
|
135
165
|
每次重要代码结构、模块边界、harness/test组织、extension point或artifact schema发生变化时,应同步更新`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`。
|
|
136
166
|
`FRAMEWORK.md`使用英文,`FRAMEWORK.zh-CN.md`使用中文;中文版可以自然保留英文模块名、harness名、test名、method名、metric、命令、配置项和代码标识符。
|
|
137
167
|
文档应说明当前framework如何支持后续功能局部修改,而不是只列目录树。
|
|
138
|
-
|
|
168
|
+
文档应根据当前任务和goal/reference context分析:后续可能还需要做哪些修改、这些修改应在哪里做、能否限定在小范围内、有没有做到高内聚低耦合。
|
|
139
169
|
文档可以包含“Change Map”或类似内容,用自然名称说明主要变化点、对应模块、相关接口、harness/test覆盖和修改范围。
|
|
140
170
|
文档应说明哪些接口是稳定边界,哪些模块是扩展点,哪些位置是后续实现点。
|
|
141
171
|
`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`应说明固定实验目录的含义,包括`data/`、`output/`、`results/`和`harness/`,并说明测试文件遵循当前模板或已有repo的测试布局。
|
|
142
172
|
`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`应记录当前repo实际采用的测试组织方式,而不是假设测试一定在`test/`下。
|
|
143
173
|
文档应说明复杂功能如何被拆成子功能模块,以及这种拆分如何支持高内聚、低耦合和后续局部修改。
|
|
144
|
-
文档应说明harness结构:每种harness
|
|
174
|
+
文档应说明harness结构:每种harness服务什么目标、修改哪个逻辑模块、如何运行、关注哪些metric、输出哪些raw artifact。
|
|
145
175
|
文档应说明testing结构:每类test验证什么功能目标、使用什么最小输入、期望什么行为、测试文件或测试说明位于已有repo的哪个测试区域。
|
|
146
176
|
文档应说明结果导出思路:系统应优先导出原始、低加工artifact,后续绘图和论文写作skill再从这些artifact转换出图表、统计结果和论文表格。
|
|
147
177
|
如果某个后续修改目前无法限定在小范围内,文档应说明这是framework设计风险,并提示后续实现时优先整理该边界。
|
|
@@ -151,14 +181,14 @@ testing输出主要服务debug和开发反馈,应和论文实验结果artifact
|
|
|
151
181
|
## 命名、顺序和边界
|
|
152
182
|
|
|
153
183
|
命名必须精确反映真实含义,不使用泛化、含糊、历史残留或与数据形态不一致的名称。
|
|
154
|
-
|
|
184
|
+
名称应来自当前领域契约、goal/reference context、用户输入和当前代码语义,而不是来自临时实现细节。
|
|
155
185
|
名称应尽量短而语义完整,删除不增加信息量的前缀、后缀和包装词。
|
|
156
186
|
同一个概念在接口、配置、类型、文案、文档、调用点和输出artifact中应使用一致名称。
|
|
157
187
|
改名时必须全链路同步,避免旧概念残留在变量、接口、配置、提示文本、文档或报告中。
|
|
158
188
|
名称后缀应反映真实数据形态;表示引用、路径、内容、状态、结果、配置的名称不能混用。
|
|
159
189
|
如果一个名称暗示它是引用或外部资源,它就不应承载已经读取后的内容。
|
|
160
190
|
如果一个名称表示内容本身,就不应继续保留引用式或路径式命名。
|
|
161
|
-
|
|
191
|
+
已由goal/reference context或用户输入形成契约的术语、拼写和领域词应保持一致,不应擅自改写。
|
|
162
192
|
代码排列顺序应帮助读者理解流程;执行顺序明确的逻辑,应让代码顺序尽量反映执行顺序。
|
|
163
193
|
输入、校验、构造、调用、输出等步骤应按自然阅读顺序组织。
|
|
164
194
|
语义对应的结构应尽量保持字段顺序、参数顺序和定义顺序一致,减少读者在多个结构之间反复做脑内映射。
|
|
@@ -244,6 +274,8 @@ readability audit应检查外部代码来源标注是否完整:复制或改写
|
|
|
244
274
|
readability audit应检查是否有未标注来源的外部代码片段、疑似无license来源代码或大段无关复制代码;如果有,应补充来源说明、移除不必要代码或改成从依赖调用。
|
|
245
275
|
readability audit应检查是否存在职责过多的文件、过长的runner、过大的utils、混杂的harness/test文件、重复样板代码或明显应该拆分的子功能。
|
|
246
276
|
readability audit应同时检查反方向问题:是否存在过度拆分、空壳文件、薄wrapper、只被调用一次的抽象层或让调用链变长的碎片化模块。
|
|
277
|
+
编写或更新skill时,应做一次project leakage audit,检查是否混入项目名、路径、类名、函数名、模块名、实验名、数据集名、method名、harness名、test名、artifact字段名或某次运行输出。
|
|
278
|
+
project leakage audit发现具体项目内容时,应优先改写成抽象变量、通用原则或运行时读取规则;无法抽象的内容应删除。
|
|
247
279
|
如果发现代码能工作但不够清楚,应优先重构到更清晰的形式,而不是把复杂性留给后续任务。
|
|
248
280
|
如果发现为了“可扩展”而加入了当前任务不需要的抽象,应删除或简化。
|
|
249
281
|
如果发现某个函数、文件或模块的名称不能解释其用途,应重新命名或重新拆分。
|
|
@@ -283,6 +315,7 @@ readability audit应同时检查反方向问题:是否存在过度拆分、空
|
|
|
283
315
|
**No initialization responsibility原则**:这个skill不负责初始化模板repo,不生成通用仓库骨架;它在已有repo和当前任务范围内维护代码质量、局部结构和framework文档一致性。
|
|
284
316
|
**Existing framework preservation原则**:已有framework不能丢;新增或修改代码时,应继续维护模块边界、harness/test组织、extension point、artifact schema、`FRAMEWORK.md`和`FRAMEWORK.zh-CN.md`。
|
|
285
317
|
**Template-aligned testing layout原则**:测试文件路径不由本skill固定;本skill应遵守初始化模板或已有repo的测试布局,只维护测试目标、测试覆盖、测试可读性和局部修改能力。`data/`、`output/`、`results/`和`harness/`仍作为固定实验目录保留。
|
|
318
|
+
**Project-agnostic skill原则**:skill只写通用方法和质量标准,不写具体项目事实;具体路径、类名、函数名、模块名、harness名、test名和artifact schema由当次输入、已有repo和当前任务决定,并只出现在当次生成的代码、文档或输出中。
|
|
286
319
|
**Readable implementation over clever abstraction原则**:代码应优先让后续agent和人类读者容易理解;抽象只有在能减少重复、缩短调用方代码、隔离变化点或提升测试性时才引入。
|
|
287
320
|
**Local change principle原则**:每个具体功能都应尽量只在自己的小范围内实现和修改;如果做不到,应先分析模块边界和耦合关系,再决定是否做局部重构。
|
|
288
321
|
**File granularity原则**:优秀代码应避免长文件和职责混杂文件;复杂功能先拆成清晰子功能,再映射到文件和模块,使每个文件主题明确、变化原因清晰、后续修改局部化。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "academic-army",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Agent workflows and skills for AcademicArmy.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -12,14 +12,6 @@
|
|
|
12
12
|
"node": ">=20.19"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
|
-
".": {
|
|
16
|
-
"types": "./dist/pipeline.d.ts",
|
|
17
|
-
"import": "./dist/pipeline.js"
|
|
18
|
-
},
|
|
19
|
-
"./developing": {
|
|
20
|
-
"types": "./dist/developing/index.d.ts",
|
|
21
|
-
"import": "./dist/developing/index.js"
|
|
22
|
-
},
|
|
23
15
|
"./evolve-skill": {
|
|
24
16
|
"types": "./dist/evolve-skill/index.d.ts",
|
|
25
17
|
"import": "./dist/evolve-skill/index.js"
|
|
@@ -55,7 +47,8 @@
|
|
|
55
47
|
},
|
|
56
48
|
"dependencies": {
|
|
57
49
|
"@openai/codex-sdk": "^0.134.0",
|
|
58
|
-
"coding-agent-forge": "^1.
|
|
50
|
+
"coding-agent-forge": "^1.3.1",
|
|
51
|
+
"developing-agent-forge": "^2.0.0"
|
|
59
52
|
},
|
|
60
53
|
"devDependencies": {
|
|
61
54
|
"@eslint/js": "^10.0.1",
|
package/runs/develop-skill.sh
CHANGED
|
@@ -6,12 +6,11 @@ npm run developing-skill -- \
|
|
|
6
6
|
--config "secret.yaml" \
|
|
7
7
|
--target-path "output/codebase" \
|
|
8
8
|
--achive-dir "output/developing-archives" \
|
|
9
|
-
--
|
|
9
|
+
--project-progress-memory-path "output/developing/project-progress-memory" \
|
|
10
|
+
--code-design-memory-path "output/developing/code-design-memory" \
|
|
10
11
|
--coding-style-skill-path "skills/academic-army-coding-style" \
|
|
11
12
|
--metaskill-path "metaskills/academic-army-coding-style/METASKILL.md" \
|
|
12
|
-
--paper-blueprint-path "output/paper_blueprint.md" \
|
|
13
|
-
--experiment-plan-path "output/experiment_plan.md" \
|
|
14
|
-
--coding-plan-path "output/coding_plan.md" \
|
|
15
13
|
--goal-path "output/goal.md" \
|
|
16
14
|
--max-iterations "100" \
|
|
17
|
-
--max-
|
|
15
|
+
--max-task-devloop-iterations "10" \
|
|
16
|
+
--max-memory-rounds "3"
|
package/runs/develop.sh
CHANGED
|
@@ -6,11 +6,10 @@ npm run developing -- \
|
|
|
6
6
|
--config "secret.yaml" \
|
|
7
7
|
--target-path "output/codebase" \
|
|
8
8
|
--achive-dir "output/developing-archives" \
|
|
9
|
-
--
|
|
9
|
+
--project-progress-memory-path "output/developing/project-progress-memory" \
|
|
10
|
+
--code-design-memory-path "output/developing/code-design-memory" \
|
|
10
11
|
--coding-style-skill-path "skills/academic-army-coding-style" \
|
|
11
|
-
--paper-blueprint-path "output/paper_blueprint.md" \
|
|
12
|
-
--experiment-plan-path "output/experiment_plan.md" \
|
|
13
|
-
--coding-plan-path "output/coding_plan.md" \
|
|
14
12
|
--goal-path "output/goal.md" \
|
|
15
13
|
--max-iterations "100" \
|
|
16
|
-
--max-
|
|
14
|
+
--max-task-devloop-iterations "10" \
|
|
15
|
+
--max-memory-rounds "3"
|