easy-coding-harness 0.6.0 → 0.6.1
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/CHANGELOG.md +16 -0
- package/README.md +12 -8
- package/package.json +1 -1
- package/templates/claude/agents/ec-implementer.md +3 -0
- package/templates/codex/agents/ec-implementer.toml +3 -0
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +7 -3
- package/templates/common/skills/ec-analysis/SKILL.md +80 -45
- package/templates/common/skills/ec-brainstorming/SKILL.md +1 -1
- package/templates/common/skills/ec-git/SKILL.md +1 -1
- package/templates/common/skills/ec-implementing/SKILL.md +40 -12
- package/templates/common/skills/ec-memory/SKILL.md +9 -5
- package/templates/common/skills/ec-reviewing/SKILL.md +4 -3
- package/templates/common/skills/ec-task-management/SKILL.md +1 -1
- package/templates/common/skills/ec-verification/SKILL.md +11 -7
- package/templates/common/skills/ec-workflow/SKILL.md +80 -38
- package/templates/main-constraint/AGENTS.md.tpl +18 -14
- package/templates/main-constraint/CLAUDE.md.tpl +18 -14
- package/templates/qoder/agents/ec-implementer.md +3 -0
- package/templates/runtime/templates/dev-spec-skeleton.md +41 -46
- package/templates/shared-hooks/easy_coding_state.py +487 -13
|
@@ -59,36 +59,43 @@ replies are English.
|
|
|
59
59
|
4. **New task.** When creating a task (from step 3), create
|
|
60
60
|
the task through the state API, which creates `task.json`, sets `status:"INIT"`, writes
|
|
61
61
|
`stage_history`, and sets the session `current_task`:
|
|
62
|
-
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task --session-file <P> --task-id <MM-DD-task-slug> --type <
|
|
62
|
+
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task --session-file <P> --task-id <MM-DD-task-slug> --type <feature|bugfix|refactor|perf|doc|analysis|report|workflow> --title "<one-line summary>" --agent <agent-id>`.
|
|
63
63
|
Use the returned `status_context` as the current status source. Then enter INIT.
|
|
64
64
|
|
|
65
65
|
## State machine
|
|
66
66
|
|
|
67
67
|
```
|
|
68
|
-
INIT
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
INIT --[auto]--> ANALYSIS -> IMPLEMENT -> REVIEW -> VERIFICATION -> MEMORY --[auto]--> COMPLETE
|
|
69
|
+
\----------------> VERIFICATION
|
|
70
|
+
\--[read-only auto]------------------------------> COMPLETE
|
|
71
|
+
^ ^ | |
|
|
72
|
+
+-- replan ---+ +--- fix -----+
|
|
73
|
+
^ |
|
|
74
|
+
+------- repair ----------+
|
|
75
|
+
user-decision edge --[explicit confirmation / handoff / Other]--> target stage
|
|
74
76
|
any stage --[user abort via ec-task-close]--> CLOSED
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
| Stage | Owner skill | What happens | Exit condition |
|
|
78
80
|
|---|---|---|---|
|
|
79
|
-
| INIT | ec-workflow | collect context, settle scope AND delivery form (change code vs. produce a document) | work complete;
|
|
80
|
-
| ANALYSIS | ec-analysis | dev-spec + execution plan
|
|
81
|
-
| IMPLEMENT | ec-implementing | code changes
|
|
81
|
+
| INIT | ec-workflow | collect context, settle scope AND delivery form (change code vs. produce a document) | work complete; auto-transition to ANALYSIS |
|
|
82
|
+
| ANALYSIS | ec-analysis | dev-spec + execution plan; code tasks also get test strategy | analysis presented; request IMPLEMENT |
|
|
83
|
+
| IMPLEMENT | ec-implementing | code changes or one read-only deliverable | code: choose REVIEW or VERIFICATION; read-only: auto-complete after delivery |
|
|
82
84
|
| REVIEW | ec-reviewing | multi-dimension code review | verdict selects a legal target; request it |
|
|
83
85
|
| VERIFICATION | ec-verification | hard gate: lint/typecheck/test + coverage | result selects MEMORY or IMPLEMENT; request it |
|
|
84
|
-
| MEMORY | ec-memory | write short memory, then run the conditional long-memory gate | memory work complete;
|
|
85
|
-
| COMPLETE | ec-workflow | clear current_task, set task status, summary | terminal after
|
|
86
|
+
| MEMORY | ec-memory | write short memory, then run the conditional long-memory gate | memory work complete; auto-transition to COMPLETE |
|
|
87
|
+
| COMPLETE | ec-workflow | clear current_task, set task status, summary | automatic terminal after MEMORY or validated read-only IMPLEMENT |
|
|
86
88
|
| CLOSED | ec-task-close | user abort; no memory flow | terminal |
|
|
87
89
|
|
|
88
90
|
> **INIT delivery-form rule.** When creating the task, `type` and `title` must faithfully
|
|
89
91
|
> reflect the delivery form implied by the user's request. A refactor/fix/feature is a CODE
|
|
90
92
|
> task; do not record it as an analysis/report task. Do not let ANALYSIS later re-interpret a
|
|
91
93
|
> code task into a documentation-only task — that is a downgrade (see ec-analysis HARD RULE 5).
|
|
94
|
+
> Use `doc`, `analysis`, or `report` only when the user's original request explicitly asks for
|
|
95
|
+
> a no-code deliverable. Those task types may carry execution units with an empty file scope;
|
|
96
|
+
> code task types may not. A successful empty-scope task ends automatically from IMPLEMENT to
|
|
97
|
+
> COMPLETE after its full deliverable is shown; it never creates test-strategy.md or enters
|
|
98
|
+
> REVIEW, VERIFICATION, or MEMORY.
|
|
92
99
|
|
|
93
100
|
## Task switching
|
|
94
101
|
|
|
@@ -101,20 +108,27 @@ When the user confirms switching from task A to task B:
|
|
|
101
108
|
the user which previous agent owned the task.
|
|
102
109
|
4. Resume task B's stage via the appropriate stage skill.
|
|
103
110
|
|
|
104
|
-
No data is lost — task A's dev-spec
|
|
105
|
-
|
|
106
|
-
routing matches, and switching happens again.
|
|
111
|
+
No data is lost — task A's dev-spec and execution.jsonl stay intact, as does test-strategy.md
|
|
112
|
+
for a code task. To return to task A later, the same intent routing applies: the user mentions
|
|
113
|
+
it, routing matches, and switching happens again.
|
|
107
114
|
|
|
108
115
|
## Transition rules (hard)
|
|
109
116
|
|
|
110
|
-
- **
|
|
111
|
-
the ANALYSIS -> IMPLEMENT confirmation gate passes.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
- **Code tasks may skip only REVIEW.** ANALYSIS cannot jump to VERIFICATION; IMPLEMENT cannot
|
|
118
|
+
start before the ANALYSIS -> IMPLEMENT confirmation gate passes. After code implementation,
|
|
119
|
+
the user may enter REVIEW or skip it and enter VERIFICATION; code tasks never skip
|
|
120
|
+
VERIFICATION. Explicit read-only tasks are the separate terminal exception below.
|
|
121
|
+
- **User-decision edges are confirmation gates.** Stage completion on those edges does NOT
|
|
122
|
+
change `task.json.status`. It records a `pending_transition` through the state API, presents
|
|
123
|
+
the choices below, and stops. This applies to forward edges, repair/replan edges, and the
|
|
124
|
+
IMPLEMENT review choice. Task creation entering INIT and the separately confirmed
|
|
125
|
+
ec-task-close flow do not add a redundant second prompt.
|
|
126
|
+
- **Mechanical edges are automatic.** After INIT work completes, call `auto-transition`
|
|
127
|
+
for ANALYSIS and dispatch ec-analysis in the same flow. After `memory-complete`, call
|
|
128
|
+
`auto-transition` for COMPLETE and emit the closeout summary. A successful explicit read-only
|
|
129
|
+
task also calls `auto-transition` from IMPLEMENT to COMPLETE immediately after displaying the
|
|
130
|
+
full deliverable. These edges do not create `pending_transition`, do not offer handoff, and
|
|
131
|
+
never wait for user confirmation.
|
|
118
132
|
- **Native choice first (hard requirement).** After `request-transition` succeeds, you MUST
|
|
119
133
|
prefer the agent/platform's native user-choice tool whenever one is available. Do not render
|
|
120
134
|
a plain-text numbered list on a platform that can present selectable options and a free-form
|
|
@@ -122,14 +136,20 @@ routing matches, and switching happens again.
|
|
|
122
136
|
1. Confirm entering/returning to `<target-stage>` (recommended)
|
|
123
137
|
2. Hand off to another agent
|
|
124
138
|
3. Other — use the native tool's built-in free-form Other input.
|
|
139
|
+
Code-task IMPLEMENT completion is the one special gate: offer (1) enter REVIEW (recommended),
|
|
140
|
+
(2) skip REVIEW and enter VERIFICATION, and (3) hand off; use the native free-form Other
|
|
141
|
+
input for revisions. Record REVIEW as the recommended pending edge first. If the user chooses
|
|
142
|
+
VERIFICATION, cancel that edge, request IMPLEMENT -> VERIFICATION, and immediately confirm it
|
|
143
|
+
because that selection is explicit confirmation of the alternate target.
|
|
125
144
|
Plain-text numbered choices are fallback only: use them only when no native user-choice tool
|
|
126
145
|
exists. The runtime hook never mutates workflow state from user-prompt text. Native choice
|
|
127
146
|
results, numbered fallback replies, and every natural-language reply must be interpreted by
|
|
128
147
|
you against the current task and stored target before calling `confirm-transition` explicitly.
|
|
129
148
|
On Other feedback, cancel the pending edge before revising work or requesting a different
|
|
130
149
|
legal target. Never interpret silence, enthusiasm, or topic changes as confirmation.
|
|
131
|
-
- **State before action.** Every confirmed stage advance is a two-step protocol: first
|
|
132
|
-
the pending edge through `confirm-transition`, then run that stage's real work.
|
|
150
|
+
- **State before action.** Every user-confirmed stage advance is a two-step protocol: first
|
|
151
|
+
consume the pending edge through `confirm-transition`, then run that stage's real work. The
|
|
152
|
+
automatic edges use `auto-transition` instead. Do not start
|
|
133
153
|
analysis, implementation, review, verification, memory writing, or closeout while
|
|
134
154
|
`task.json.status` still names the previous stage. After every state API call, treat the
|
|
135
155
|
returned snapshot/read-after-write state as authoritative for the next action and status line.
|
|
@@ -137,8 +157,11 @@ routing matches, and switching happens again.
|
|
|
137
157
|
(1) Read `.easy-coding/templates/dev-spec-skeleton.md`, then (2) Write its exact content
|
|
138
158
|
to the task's dev-spec.md. This is a mechanical copy, not a generation task. Do not read
|
|
139
159
|
code, load memory, or analyze before the skeleton is on disk. This is ec-analysis
|
|
140
|
-
HARD RULE 1 — violating it means the analysis has failed.
|
|
141
|
-
|
|
160
|
+
HARD RULE 1 — violating it means the analysis has failed. After the skeleton is written,
|
|
161
|
+
inspect the required evidence without editing it. Ask and resolve every user decision during
|
|
162
|
+
ANALYSIS before filling any section; the final report must not contain a `待用户决策` section
|
|
163
|
+
or `[阶段:ANALYSIS]`. Once decisions are resolved, your plan reply must be the complete
|
|
164
|
+
dev-spec.md content, not a summary or custom format.
|
|
142
165
|
Additionally, ANALYSIS must stay faithful to the user's delivery form — it may NOT downgrade
|
|
143
166
|
a code task to a report-only task — and the 改动范围 table must list only real project code,
|
|
144
167
|
never `.easy-coding/` harness artifacts (ec-analysis HARD RULES 5 and 6).
|
|
@@ -146,9 +169,19 @@ routing matches, and switching happens again.
|
|
|
146
169
|
waives stage-boundary prompts when the user explicitly requested autonomous execution.
|
|
147
170
|
It carries NO scope or delivery-form decision. Never cite `auto_mode` to narrow scope,
|
|
148
171
|
downgrade a code task, or bypass a blocker that needs a real user decision.
|
|
149
|
-
- **At stage completion** request the legal target immediately (not at turn end):
|
|
172
|
+
- **At user-decision stage completion** request the legal target immediately (not at turn end):
|
|
150
173
|
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py request-transition --session-file <P> --stage <STAGE> --agent <agent-id> --reason "<why this edge is ready>"`.
|
|
151
174
|
This writes only `pending_transition`; it does not change the stage.
|
|
175
|
+
- **No-code IMPLEMENT delivery:** before completing the task, ec-implementing must
|
|
176
|
+
have output the successful unit's complete non-empty `deliverable` verbatim to the user.
|
|
177
|
+
A summary or execution.jsonl record is not a substitute; missing user-visible delivery keeps
|
|
178
|
+
the task in IMPLEMENT. The execution log must contain a matching `dispatch` immediately before
|
|
179
|
+
the accepted result for that unit. After delivery, call `auto-transition --stage COMPLETE`;
|
|
180
|
+
do not enter REVIEW, VERIFICATION, or MEMORY and do not write memory.
|
|
181
|
+
- **On automatic completion** call:
|
|
182
|
+
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py auto-transition --session-file <P> --stage <ANALYSIS|COMPLETE> --agent <agent-id>`.
|
|
183
|
+
The state API accepts INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and a validated
|
|
184
|
+
read-only IMPLEMENT -> COMPLETE through this command.
|
|
152
185
|
- **On user confirmation** read the current task's pending edge and call:
|
|
153
186
|
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py confirm-transition --session-file <P> --stage <STAGE> --agent <agent-id>`.
|
|
154
187
|
Only after the read-after-write status names the target stage may its action start.
|
|
@@ -165,8 +198,9 @@ routing matches, and switching happens again.
|
|
|
165
198
|
transition was rejected. Do not proceed with an illegal stage.
|
|
166
199
|
- **Repair loop sizing** (after VERIFICATION): a trivial tweak may be fixed inside
|
|
167
200
|
VERIFICATION and re-verified without a status change; a logic or structure change requests
|
|
168
|
-
VERIFICATION -> IMPLEMENT and waits at the standard confirmation gate
|
|
169
|
-
REVIEW
|
|
201
|
+
VERIFICATION -> IMPLEMENT and waits at the standard confirmation gate. After repair, present
|
|
202
|
+
the IMPLEMENT completion choice again so the user may enter REVIEW or skip directly to
|
|
203
|
+
VERIFICATION.
|
|
170
204
|
- **Scope guard** (repair loop): if the user's fix request falls outside the dev-spec scope
|
|
171
205
|
(features or files absent from the change-scope table), say so explicitly and propose a
|
|
172
206
|
new task with `spawned_from` set to the current task id. Never silently absorb scope creep.
|
|
@@ -177,10 +211,11 @@ routing matches, and switching happens again.
|
|
|
177
211
|
user confirms, MEMORY writes one short entry first, records it through `memory-short-complete`,
|
|
178
212
|
then asks the state API for the authoritative `memory` instruction. `action == "no-op"`
|
|
179
213
|
skips long-memory reads/writes; `action == "distill"` processes exactly `trim_count` older
|
|
180
|
-
entries.
|
|
181
|
-
- **COMPLETE closeout:** COMPLETE is
|
|
182
|
-
state API clears session `current_task`, so the
|
|
183
|
-
output a summary
|
|
214
|
+
entries. After `memory-complete`, ec-memory automatically advances MEMORY -> COMPLETE.
|
|
215
|
+
- **COMPLETE closeout:** COMPLETE is automatic after successful memory processing, or directly
|
|
216
|
+
after a validated read-only deliverable. The state API clears session `current_task`, so the
|
|
217
|
+
next hook injection returns to Ready. Then output a summary; for read-only tasks, the full
|
|
218
|
+
report must already have appeared before this closeout.
|
|
184
219
|
|
|
185
220
|
## Resume and handoff
|
|
186
221
|
|
|
@@ -194,14 +229,21 @@ Resuming an active task (whether from session restart, claim, handoff, or task s
|
|
|
194
229
|
records tell you exactly where work stopped.
|
|
195
230
|
3. If the task was claimed from another agent, read the latest `handoff` record first for the
|
|
196
231
|
fast summary and tell the user which previous agent handed it off.
|
|
197
|
-
4. If `pending_transition` exists, do not rerun the completed stage action.
|
|
198
|
-
|
|
199
|
-
|
|
232
|
+
4. If `pending_transition` exists, do not rerun the completed stage action. If its stored edge
|
|
233
|
+
is INIT -> ANALYSIS or MEMORY -> COMPLETE, treat it as an upgrade-era automatic edge: call
|
|
234
|
+
`auto-transition` for the stored target immediately, without confirmation or handoff. For
|
|
235
|
+
a read-only task in IMPLEMENT, cancel any stale pending REVIEW/VERIFICATION edge before the
|
|
236
|
+
terminal check below. For any other stored edge, re-present the standard
|
|
237
|
+
confirmation/handoff/Other choices. At an IMPLEMENT boundary for a code task, re-present the
|
|
238
|
+
special REVIEW / skip to VERIFICATION / handoff choices.
|
|
239
|
+
5. If a read-only task resumes in IMPLEMENT with a valid successful result, output its complete
|
|
240
|
+
deliverable again and immediately auto-transition to COMPLETE. Otherwise tell the user what
|
|
241
|
+
is being resumed and from which stage, then continue.
|
|
200
242
|
|
|
201
243
|
After a task switch, the same resume flow applies — the only difference is that `current_task`
|
|
202
244
|
was just changed by the switching procedure rather than being loaded from a prior session.
|
|
203
245
|
|
|
204
|
-
Offering handoff — every pending
|
|
246
|
+
Offering handoff — every user-decision pending edge includes the handoff option. On that
|
|
205
247
|
option, call:
|
|
206
248
|
`{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py handoff-task --session-file <P> --agent <agent-id> --summary "<dense context: plan shape, key decisions, user emphases>"`.
|
|
207
249
|
|
|
@@ -35,21 +35,25 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
35
35
|
|
|
36
36
|
## Workflow discipline
|
|
37
37
|
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
or
|
|
38
|
+
- Code tasks do not skip stages except when the user explicitly skips REVIEW after IMPLEMENT.
|
|
39
|
+
User-decision edges use `pending_transition`; offer the target and handoff, and offer
|
|
40
|
+
free-form Other through native UI when available. IMPLEMENT additionally offers direct entry
|
|
41
|
+
to VERIFICATION.
|
|
42
|
+
INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and validated read-only
|
|
43
|
+
IMPLEMENT -> COMPLETE use restricted `auto-transition` without confirmation or handoff. A
|
|
44
|
+
read-only task creates no test-strategy.md, never enters REVIEW, VERIFICATION, or MEMORY, and
|
|
45
|
+
writes no task memory.
|
|
46
|
+
`auto_mode` only waives remaining prompts; it never changes scope or delivery form.
|
|
44
47
|
- ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
|
|
45
|
-
write its exact content to the task's dev-spec.md as the FIRST tool calls
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence
|
|
49
|
+
without editing the skeleton, ask every unresolved decision during analysis, and wait. Only
|
|
50
|
+
after all decisions are resolved may the agent fill the complete dev-spec.md. The final report
|
|
51
|
+
contains neither `[阶段:ANALYSIS]` nor a `待用户决策` section.
|
|
52
|
+
- For code tasks, VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh
|
|
53
|
+
evidence, and coverage must match the test strategy, before completion.
|
|
54
|
+
- MEMORY combines short-memory creation and the conditional long-memory gate. Archive starts
|
|
55
|
+
only after explicit user acceptance; once memory processing completes, COMPLETE is automatic.
|
|
56
|
+
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
53
57
|
- All cross-platform modules (skills, hooks, references) must use universal agent protocols.
|
|
54
58
|
Do not rely on any specific agent's proprietary conventions unless the module is explicitly
|
|
55
59
|
a platform-specific compatibility layer. Reference files use descriptive filenames (e.g.,
|
|
@@ -33,21 +33,25 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
33
33
|
|
|
34
34
|
## Workflow discipline
|
|
35
35
|
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
or
|
|
36
|
+
- Code tasks do not skip stages except when the user explicitly skips REVIEW after IMPLEMENT.
|
|
37
|
+
User-decision edges use `pending_transition`; offer the target and handoff, and offer
|
|
38
|
+
free-form Other through native UI when available. IMPLEMENT additionally offers direct entry
|
|
39
|
+
to VERIFICATION.
|
|
40
|
+
INIT -> ANALYSIS, completed MEMORY -> COMPLETE, and validated read-only
|
|
41
|
+
IMPLEMENT -> COMPLETE use restricted `auto-transition` without confirmation or handoff. A
|
|
42
|
+
read-only task creates no test-strategy.md, never enters REVIEW, VERIFICATION, or MEMORY, and
|
|
43
|
+
writes no task memory.
|
|
44
|
+
`auto_mode` only waives remaining prompts; it never changes scope or delivery form.
|
|
42
45
|
- ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
|
|
43
|
-
write its exact content to the task's dev-spec.md as the FIRST tool calls
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence
|
|
47
|
+
without editing the skeleton, ask every unresolved decision during analysis, and wait. Only
|
|
48
|
+
after all decisions are resolved may the agent fill the complete dev-spec.md. The final report
|
|
49
|
+
contains neither `[阶段:ANALYSIS]` nor a `待用户决策` section.
|
|
50
|
+
- For code tasks, VERIFICATION is a hard gate: lint + typecheck + test must pass on fresh
|
|
51
|
+
evidence, and coverage must match the test strategy, before completion.
|
|
52
|
+
- MEMORY combines short-memory creation and the conditional long-memory gate. Archive starts
|
|
53
|
+
only after explicit user acceptance; once memory processing completes, COMPLETE is automatic.
|
|
54
|
+
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
51
55
|
- All cross-platform modules (skills, hooks, references) must use universal agent protocols.
|
|
52
56
|
Do not rely on any specific agent's proprietary conventions unless the module is explicitly
|
|
53
57
|
a platform-specific compatibility layer. Reference files use descriptive filenames (e.g.,
|
|
@@ -11,6 +11,8 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
11
11
|
## Hard constraints
|
|
12
12
|
|
|
13
13
|
- Modify only the files listed in the task card's "Editable scope". Touch nothing else.
|
|
14
|
+
- If the editable scope is `NONE — read-only deliverable`, modify nothing and return the full
|
|
15
|
+
requested result in `deliverable`.
|
|
14
16
|
- Do not call any Skill tool.
|
|
15
17
|
- Do not read `.qoder/skills/`, `.agents/skills/`, or any `.easy-coding/` file. All needed
|
|
16
18
|
context is in the card.
|
|
@@ -22,6 +24,7 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
22
24
|
|
|
23
25
|
- `changed_files`: the files you actually modified
|
|
24
26
|
- `summary`: one line describing what you did
|
|
27
|
+
- `deliverable`: full no-code result, or `null` for a code unit
|
|
25
28
|
- `issues`: problems you hit (empty array if none)
|
|
26
29
|
- `needs_attention`: anything the main agent must decide (empty array if none)
|
|
27
30
|
|
|
@@ -1,80 +1,75 @@
|
|
|
1
|
-
[
|
|
2
|
-
|
|
3
|
-
## 技术方案:{任务标题}
|
|
1
|
+
## 技术方案:[[EC_TODO:任务标题]]
|
|
4
2
|
|
|
5
3
|
### 项目模式
|
|
6
|
-
|
|
4
|
+
[[EC_TODO:初创项目/迭代项目]]
|
|
7
5
|
|
|
8
6
|
### 任务类型
|
|
9
|
-
|
|
7
|
+
[[EC_TODO:新功能 / Bug 修复 / 重构 / 性能优化 / 前端设计实现]]
|
|
10
8
|
|
|
11
9
|
### 需求解析
|
|
12
|
-
- **目标**:
|
|
13
|
-
- **输入**:
|
|
14
|
-
- **输出**:
|
|
15
|
-
- **边界**:
|
|
10
|
+
- **目标**:[[EC_TODO:真正要解决的问题]]
|
|
11
|
+
- **输入**:[[EC_TODO:用户输入 / 系统输入 / 触发条件]]
|
|
12
|
+
- **输出**:[[EC_TODO:先声明交付形态(改代码 / 出文档),再写最终交付结果。交付形态须忠于用户原始需求,不得擅自降级]]
|
|
13
|
+
- **边界**:[[EC_TODO:明确不做什么]]
|
|
16
14
|
|
|
17
15
|
### 现状
|
|
18
|
-
- **相关代码 / 页面 / 接口 / 模块**:
|
|
19
|
-
- **当前实现方式**:
|
|
20
|
-
- **现有问题 / 缺口**:
|
|
21
|
-
- **证据**:
|
|
16
|
+
- **相关代码 / 页面 / 接口 / 模块**:[[EC_TODO:基于实际文件与代码的现状说明]]
|
|
17
|
+
- **当前实现方式**:[[EC_TODO:现在是如何工作的]]
|
|
18
|
+
- **现有问题 / 缺口**:[[EC_TODO:为什么需要改]]
|
|
19
|
+
- **证据**:[[EC_TODO:引用的关键文件、类、页面、接口,含 file:line]]
|
|
22
20
|
|
|
23
21
|
### 冲突摘要
|
|
24
|
-
- 需求 vs RULES:
|
|
25
|
-
- 需求 vs ABSTRACT:
|
|
26
|
-
- 需求 vs 现有代码:
|
|
27
|
-
- Dev-Spec vs 现有代码:
|
|
28
|
-
|
|
29
|
-
### 待用户决策
|
|
30
|
-
- {待填写 — 影响技术路线、接口、改动范围的问题逐条列出;任何"本次不做全部 / 分批落地 / 范围或交付形态收窄"必须列入此处交由用户拍板,不得自行决定并假托既定;若无则写"无"}
|
|
22
|
+
- 需求 vs RULES:[[EC_TODO:填写结果或“无冲突”]]
|
|
23
|
+
- 需求 vs ABSTRACT:[[EC_TODO:填写结果或“无冲突”]]
|
|
24
|
+
- 需求 vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
|
|
25
|
+
- Dev-Spec vs 现有代码:[[EC_TODO:填写结果或“无冲突”]]
|
|
31
26
|
|
|
32
27
|
### 影响面分析
|
|
33
|
-
- **涉及模块**:
|
|
34
|
-
- **核心类 / 页面 / 接口**:
|
|
35
|
-
- **数据库变更**:
|
|
36
|
-
- **接口变更**:
|
|
37
|
-
- **关联历史任务**:
|
|
28
|
+
- **涉及模块**:[[EC_TODO:涉及模块]]
|
|
29
|
+
- **核心类 / 页面 / 接口**:[[EC_TODO:核心类 / 页面 / 接口]]
|
|
30
|
+
- **数据库变更**:[[EC_TODO:有/无]]
|
|
31
|
+
- **接口变更**:[[EC_TODO:有/无]]
|
|
32
|
+
- **关联历史任务**:[[EC_TODO:相关短期记忆序号;无则“无”]]
|
|
38
33
|
|
|
39
34
|
### 改动范围
|
|
40
35
|
> 只列真实项目源码/配置文件的改动。禁止把 `.easy-coding/` 下的 harness 产物(dev-spec / execution.jsonl / test-strategy / 记忆 / 报告等)当作改动对象。本表为空仅允许用于"用户明确要求的无代码交付形态";代码类任务(重构/修复/功能)若此表为空,即为自我降级。
|
|
41
36
|
|
|
42
37
|
| 改动文件 | 改动类型 | 文件编码 | 改动核心内容 |
|
|
43
38
|
|----------|---------|---------|-------------|
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
39
|
+
| `[[EC_TODO:文件路径]]` | 新增 | 项目编码 [[EC_TODO:编码]],依据:[[EC_TODO:编码依据]] | [[EC_TODO:核心改动]] |
|
|
40
|
+
| `[[EC_TODO:文件路径]]` | 修改 | 保持原编码 [[EC_TODO:编码]] | [[EC_TODO:核心改动]] |
|
|
41
|
+
| `[[EC_TODO:文件路径]]` | 删除 | — | [[EC_TODO:删除原因]] |
|
|
47
42
|
|
|
48
43
|
### 修改方案
|
|
49
|
-
- **总体改法**:
|
|
50
|
-
- **后端改动**:
|
|
51
|
-
- **前端改动**:
|
|
52
|
-
- **兼容处理**:
|
|
53
|
-
- **风险点**:
|
|
44
|
+
- **总体改法**:[[EC_TODO:一句话说清改哪里、怎么改]]
|
|
45
|
+
- **后端改动**:[[EC_TODO:填写改动;不涉及则写“不涉及”]]
|
|
46
|
+
- **前端改动**:[[EC_TODO:填写改动;不涉及则写“不涉及”]]
|
|
47
|
+
- **兼容处理**:[[EC_TODO:旧逻辑如何迁移、保留或替换]]
|
|
48
|
+
- **风险点**:[[EC_TODO:最容易出问题的位置]]
|
|
54
49
|
|
|
55
50
|
### 实施拆解
|
|
56
51
|
|
|
57
52
|
| 单元 | 说明 | 类型 | 涉及文件 | 依赖 |
|
|
58
53
|
|------|------|------|---------|------|
|
|
59
|
-
| U1 |
|
|
60
|
-
| U2 |
|
|
61
|
-
| U3 |
|
|
54
|
+
| U1 | [[EC_TODO:单元标题]] | [[EC_TODO:backend/frontend/test/...]] | [[EC_TODO:涉及文件]] | — |
|
|
55
|
+
| U2 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:涉及文件]] | — |
|
|
56
|
+
| U3 | [[EC_TODO:单元标题]] | [[EC_TODO:单元类型]] | [[EC_TODO:涉及文件]] | U1, U2 |
|
|
62
57
|
|
|
63
|
-
**执行策略**:
|
|
64
|
-
- 第一批(并行):U1
|
|
65
|
-
- 第二批(等待第一批):U3
|
|
66
|
-
(若 single
|
|
58
|
+
**执行策略**:[[EC_TODO:parallel / sequential / single]]
|
|
59
|
+
- 第一批(并行):U1 [[EC_TODO:单元标题]] | U2 [[EC_TODO:单元标题]]
|
|
60
|
+
- 第二批(等待第一批):U3 [[EC_TODO:单元标题]]
|
|
61
|
+
(若 single:单一实施单元,派发 1 个子代理执行)
|
|
67
62
|
|
|
68
63
|
### 测试策略
|
|
69
64
|
|
|
70
65
|
| 测试点 | 级别 | 归属单元 | 方式 | 验证命令 |
|
|
71
66
|
|--------|------|---------|------|---------|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
67
|
+
| [[EC_TODO:测试点描述]] | 必测 | U1 | 单测 | `npm test -- --filter=xxx` |
|
|
68
|
+
| [[EC_TODO:测试点描述]] | 应测 | U2 | 快照 | `npm test -- --snapshot` |
|
|
74
69
|
|
|
75
|
-
- **人工验收**:
|
|
76
|
-
- **无法验证项**:
|
|
70
|
+
- **人工验收**:[[EC_TODO:用户需要检查的关键行为]]
|
|
71
|
+
- **无法验证项**:[[EC_TODO:无 / 说明缺失环境、数据或权限]]
|
|
77
72
|
|
|
78
73
|
### 风险与注意事项
|
|
79
|
-
-
|
|
80
|
-
-
|
|
74
|
+
- [[EC_TODO:风险 1]]
|
|
75
|
+
- [[EC_TODO:风险 2]]
|