dsh-gate-agent 0.1.0 → 0.1.2

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/cordis.patch.yml CHANGED
@@ -1,144 +1,144 @@
1
- # Agent preset cordis: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
- # after the web patch. Edits saved from the Web editor override this row's
3
- # `config.plugins` by id from the profile patch.
4
- - insert:
5
- - id: preset-developer
6
- name: '@deepseek-ai/dsh-agent-preset'
7
- config:
8
- id: developer
9
- name: 开发者模式
10
- description: 基于创造模式的开发者模式,含 gate 阶段门禁。
11
- order: 5
12
- plugins:
13
- # Same persona as `standard`: tool descriptions and the skill catalog carry
14
- # the operating detail, and the skills own the preset-authoring rules.
15
- - id: persona
16
- name: '@deepseek-ai/dsh-persona'
17
- config:
18
- prefix: >-
19
- You are a coding agent powered by the {{model}} model.
20
- - id: agent-instructions
21
- name: '@deepseek-ai/dsh-agent-instructions'
22
- config:
23
- maxBytes: 65536
24
- - id: time-context
25
- name: '@deepseek-ai/dsh-time-context'
26
- - id: tool-bash
27
- name: '@deepseek-ai/dsh-tool-bash'
28
- disabled: !!js process.platform === 'win32'
29
- - id: tool-pwsh
30
- name: '@deepseek-ai/dsh-tool-pwsh'
31
- disabled: !!js process.platform !== 'win32'
32
- - id: tool-fs
33
- name: '@deepseek-ai/dsh-tool-fs'
34
- config:
35
- # Set true to add the apply_patch tool beside edit.
36
- applyPatch: false
37
- - id: tool-fs-search
38
- name: '@deepseek-ai/dsh-tool-fs-search'
39
- config:
40
- sampleOverCapGlobResults: false
41
- - id: tool-jobs
42
- name: '@deepseek-ai/dsh-tool-jobs'
43
- - id: tool-schedule
44
- name: '@deepseek-ai/dsh-tool-schedule'
45
- - id: command-goal
46
- name: '@deepseek-ai/dsh-command-goal'
47
- - id: tool-goal
48
- name: '@deepseek-ai/dsh-tool-goal'
49
- - id: planning
50
- name: cordis:group
51
- group: true
52
- isolate:
53
- planMode: true
54
- config:
55
- - id: plan-mode
56
- name: '@deepseek-ai/dsh-plan-mode'
57
- config:
58
- section: |
59
- You are in plan mode. Stay in plan mode until the user approves your plan through exit_plan_mode or switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
60
-
61
- Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
62
-
63
- The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
64
-
65
- Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
66
-
67
- Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
68
-
69
- When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
70
- - id: compaction
71
- name: cordis:group
72
- group: true
73
- isolate:
74
- compaction: true
75
- toolResultPruner: true
76
- config:
77
- - id: compaction-basic
78
- name: '@deepseek-ai/dsh-compaction-basic'
79
- - id: command-compact
80
- name: '@deepseek-ai/dsh-command-compact'
81
- - id: tool-result-pruner
82
- name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
83
- config:
84
- thresholdChars: 8192
85
- headChars: 4096
86
- tailChars: 1024
87
- - id: delegation
88
- name: cordis:group
89
- group: true
90
- isolate:
91
- workflowEngine: true
92
- config:
93
- - id: tool-subagent-control
94
- name: '@deepseek-ai/dsh-tool-subagent-control'
95
- - id: tool-subagent
96
- name: '@deepseek-ai/dsh-tool-subagent'
97
- config:
98
- provider: spawn
99
- toolName: subagent
100
- modelSelection: true
101
- modelDiscovery: true
102
- - id: tool-subagent-fork
103
- name: '@deepseek-ai/dsh-tool-subagent'
104
- config:
105
- provider: fork
106
- toolName: subagent_fork
107
- - id: workflow-ptc
108
- name: '@deepseek-ai/dsh-workflow-ptc'
109
- config:
110
- provider: spawn
111
- - id: tool-workflow
112
- name: '@deepseek-ai/dsh-tool-workflow'
113
- - id: tool-ask-user
114
- name: '@deepseek-ai/dsh-tool-ask-user'
115
- - id: tool-todo
116
- name: '@deepseek-ai/dsh-tool-todo'
117
- config:
118
- allowParallelInProgress: true
119
- - id: tool-web
120
- name: '@deepseek-ai/dsh-tool-web'
121
- config:
122
- fetch: true
123
- searchTimeoutMs: 60000
124
- - id: tool-cordis
125
- name: '@deepseek-ai/dsh-tool-cordis'
126
- - id: skill-filesystem
127
- name: '@deepseek-ai/dsh-skill-filesystem'
128
- config:
129
- customSkillDirs:
130
- - !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('@deepseek-ai/dsh-agent-preset/package.json')), 'skills')
131
- bundledSkillDir: !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('dsh-gate-agent/package.json')), 'skills')
132
- - id: tool-skill
133
- name: '@deepseek-ai/dsh-tool-skill'
134
- - id: present
135
- name: '@deepseek-ai/dsh-tool-present'
136
- - id: tool-plugin-manager
137
- name: '@deepseek-ai/dsh-plugin-manager/tools'
138
- disabled: !!js "!ctx.get('profileContext')"
139
- - id: tool-plugin-market
140
- name: '@deepseek-ai/dsh-plugin-market/tools'
141
- disabled: !!js "!ctx.get('profileContext')"
142
- - id: gate
143
- name: 'dsh-gate-agent'
144
-
1
+ # Agent preset cordis: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
+ # after the web patch. Edits saved from the Web editor override this row's
3
+ # `config.plugins` by id from the profile patch.
4
+ - insert:
5
+ - id: preset-developer
6
+ name: '@deepseek-ai/dsh-agent-preset'
7
+ config:
8
+ id: developer
9
+ name: 开发者模式
10
+ description: 基于创造模式的开发者模式,含 gate 阶段门禁。
11
+ order: 5
12
+ plugins:
13
+ # Same persona as `standard`: tool descriptions and the skill catalog carry
14
+ # the operating detail, and the skills own the preset-authoring rules.
15
+ - id: persona
16
+ name: '@deepseek-ai/dsh-persona'
17
+ config:
18
+ prefix: >-
19
+ You are a coding agent powered by the {{model}} model.
20
+ - id: agent-instructions
21
+ name: '@deepseek-ai/dsh-agent-instructions'
22
+ config:
23
+ maxBytes: 65536
24
+ - id: time-context
25
+ name: '@deepseek-ai/dsh-time-context'
26
+ - id: tool-bash
27
+ name: '@deepseek-ai/dsh-tool-bash'
28
+ disabled: !!js process.platform === 'win32'
29
+ - id: tool-pwsh
30
+ name: '@deepseek-ai/dsh-tool-pwsh'
31
+ disabled: !!js process.platform !== 'win32'
32
+ - id: tool-fs
33
+ name: '@deepseek-ai/dsh-tool-fs'
34
+ config:
35
+ # Set true to add the apply_patch tool beside edit.
36
+ applyPatch: false
37
+ - id: tool-fs-search
38
+ name: '@deepseek-ai/dsh-tool-fs-search'
39
+ config:
40
+ sampleOverCapGlobResults: false
41
+ - id: tool-jobs
42
+ name: '@deepseek-ai/dsh-tool-jobs'
43
+ - id: tool-schedule
44
+ name: '@deepseek-ai/dsh-tool-schedule'
45
+ - id: command-goal
46
+ name: '@deepseek-ai/dsh-command-goal'
47
+ - id: tool-goal
48
+ name: '@deepseek-ai/dsh-tool-goal'
49
+ - id: planning
50
+ name: cordis:group
51
+ group: true
52
+ isolate:
53
+ planMode: true
54
+ config:
55
+ - id: plan-mode
56
+ name: '@deepseek-ai/dsh-plan-mode'
57
+ config:
58
+ section: |
59
+ You are in plan mode. Stay in plan mode until the user approves your plan through exit_plan_mode or switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
60
+
61
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
62
+
63
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
64
+
65
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
66
+
67
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
68
+
69
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
70
+ - id: compaction
71
+ name: cordis:group
72
+ group: true
73
+ isolate:
74
+ compaction: true
75
+ toolResultPruner: true
76
+ config:
77
+ - id: compaction-basic
78
+ name: '@deepseek-ai/dsh-compaction-basic'
79
+ - id: command-compact
80
+ name: '@deepseek-ai/dsh-command-compact'
81
+ - id: tool-result-pruner
82
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
83
+ config:
84
+ thresholdChars: 8192
85
+ headChars: 4096
86
+ tailChars: 1024
87
+ - id: delegation
88
+ name: cordis:group
89
+ group: true
90
+ isolate:
91
+ workflowEngine: true
92
+ config:
93
+ - id: tool-subagent-control
94
+ name: '@deepseek-ai/dsh-tool-subagent-control'
95
+ - id: tool-subagent
96
+ name: '@deepseek-ai/dsh-tool-subagent'
97
+ config:
98
+ provider: spawn
99
+ toolName: subagent
100
+ modelSelection: true
101
+ modelDiscovery: true
102
+ - id: tool-subagent-fork
103
+ name: '@deepseek-ai/dsh-tool-subagent'
104
+ config:
105
+ provider: fork
106
+ toolName: subagent_fork
107
+ - id: workflow-ptc
108
+ name: '@deepseek-ai/dsh-workflow-ptc'
109
+ config:
110
+ provider: spawn
111
+ - id: tool-workflow
112
+ name: '@deepseek-ai/dsh-tool-workflow'
113
+ - id: tool-ask-user
114
+ name: '@deepseek-ai/dsh-tool-ask-user'
115
+ - id: tool-todo
116
+ name: '@deepseek-ai/dsh-tool-todo'
117
+ config:
118
+ allowParallelInProgress: true
119
+ - id: tool-web
120
+ name: '@deepseek-ai/dsh-tool-web'
121
+ config:
122
+ fetch: true
123
+ searchTimeoutMs: 60000
124
+ - id: tool-cordis
125
+ name: '@deepseek-ai/dsh-tool-cordis'
126
+ - id: skill-filesystem
127
+ name: '@deepseek-ai/dsh-skill-filesystem'
128
+ config:
129
+ customSkillDirs:
130
+ - !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('@deepseek-ai/dsh-agent-preset/package.json')), 'skills')
131
+ bundledSkillDir: !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('dsh-gate-agent/package.json')), 'skills')
132
+ - id: tool-skill
133
+ name: '@deepseek-ai/dsh-tool-skill'
134
+ - id: present
135
+ name: '@deepseek-ai/dsh-tool-present'
136
+ - id: tool-plugin-manager
137
+ name: '@deepseek-ai/dsh-plugin-manager/tools'
138
+ disabled: !!js "!ctx.get('profileContext')"
139
+ - id: tool-plugin-market
140
+ name: '@deepseek-ai/dsh-plugin-market/tools'
141
+ disabled: !!js "!ctx.get('profileContext')"
142
+ - id: gate
143
+ name: 'dsh-gate-agent'
144
+
package/icon.svg CHANGED
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
2
- <path d="M12 2.5 20 5.5v6.2c0 5.1-3.4 8.5-8 9.8-4.6-1.3-8-4.7-8-9.8V5.5L12 2.5Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
3
- <path d="M8.5 12.2 11 14.7l4.8-5.2" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
4
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
2
+ <path d="M12 2.5 20 5.5v6.2c0 5.1-3.4 8.5-8 9.8-4.6-1.3-8-4.7-8-9.8V5.5L12 2.5Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
3
+ <path d="M8.5 12.2 11 14.7l4.8-5.2" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -1,20 +1,20 @@
1
- import { spawnSync } from 'node:child_process'
2
- import { join } from 'node:path'
3
-
4
- const scriptsDir = join(process.cwd(), '.agents', 'gate', 'ci')
5
- const notesRoot = join(process.cwd(), '.agents', 'notes')
6
- const scripts = [
7
- 'verify-agent-note-tree.ts',
8
- 'verify-agent-note-format.ts',
9
- 'verify-agent-note-lifecycle.ts',
10
- 'verify-archived-agent-notes.ts',
11
- ]
12
-
13
- for (const name of scripts) {
14
- const result = spawnSync(
15
- process.execPath,
16
- [join(scriptsDir, name), '--root', notesRoot],
17
- { stdio: 'inherit' },
18
- )
19
- if (result.status !== 0) process.exit(result.status ?? 1)
20
- }
1
+ import { spawnSync } from 'node:child_process'
2
+ import { join } from 'node:path'
3
+
4
+ const scriptsDir = join(process.cwd(), '.agents', 'gate', 'ci')
5
+ const notesRoot = join(process.cwd(), '.agents', 'notes')
6
+ const scripts = [
7
+ 'verify-agent-note-tree.ts',
8
+ 'verify-agent-note-format.ts',
9
+ 'verify-agent-note-lifecycle.ts',
10
+ 'verify-archived-agent-notes.ts',
11
+ ]
12
+
13
+ for (const name of scripts) {
14
+ const result = spawnSync(
15
+ process.execPath,
16
+ [join(scriptsDir, name), '--root', notesRoot],
17
+ { stdio: 'inherit' },
18
+ )
19
+ if (result.status !== 0) process.exit(result.status ?? 1)
20
+ }
@@ -1,34 +1,34 @@
1
- # 由 gate-init 生成;校验脚本在 .agents/gate/ci/,不依赖插件安装路径。
2
- name: Verify Agent Notes
3
-
4
- on:
5
- push:
6
- branches:
7
- - main
8
- pull_request:
9
-
10
- permissions:
11
- contents: read
12
-
13
- jobs:
14
- verify:
15
- runs-on: ubuntu-latest
16
- steps:
17
- - name: Checkout
18
- uses: actions/checkout@v4
19
- with:
20
- fetch-depth: 0
21
-
22
- - name: Setup Node
23
- uses: actions/setup-node@v4
24
- with:
25
- node-version: 24
26
-
27
- - name: Verify note tree, format, lifecycle, and archive seals
28
- env:
29
- AGENT_NOTE_ARCHIVE_BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before }}
30
- run: |
31
- npx --yes tsx .agents/gate/ci/verify-agent-note-tree.ts --root .agents/notes
32
- npx --yes tsx .agents/gate/ci/verify-agent-note-format.ts --root .agents/notes
33
- npx --yes tsx .agents/gate/ci/verify-agent-note-lifecycle.ts --root .agents/notes
34
- npx --yes tsx .agents/gate/ci/verify-archived-agent-notes.ts --root .agents/notes
1
+ # 由 gate-init 生成;校验脚本在 .agents/gate/ci/,不依赖插件安装路径。
2
+ name: Verify Agent Notes
3
+
4
+ on:
5
+ push:
6
+ branches:
7
+ - main
8
+ pull_request:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ verify:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Setup Node
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: 24
26
+
27
+ - name: Verify note tree, format, lifecycle, and archive seals
28
+ env:
29
+ AGENT_NOTE_ARCHIVE_BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before }}
30
+ run: |
31
+ npx --yes tsx .agents/gate/ci/verify-agent-note-tree.ts --root .agents/notes
32
+ npx --yes tsx .agents/gate/ci/verify-agent-note-format.ts --root .agents/notes
33
+ npx --yes tsx .agents/gate/ci/verify-agent-note-lifecycle.ts --root .agents/notes
34
+ npx --yes tsx .agents/gate/ci/verify-archived-agent-notes.ts --root .agents/notes
package/lib/index.js CHANGED
@@ -52,7 +52,7 @@ var PLAN_ORCHESTRATION = `## /gate-enter-plan \u7F16\u6392
52
52
  \u4E3B\u4EE3\u7406\u6D3E worker\uFF1Bgate \u4E0D\u6D3E\u3002
53
53
 
54
54
  ## Step 1 \u2014 Planning
55
- \u4E3B agent \u52A0\u8F7D\u6280\u80FD gate-planning \u548C gate-write-agent-notes\uFF1B\u8BFB\u53D6 gate-planning \u7684 SKILL.md\u3001proposal.md \u548C assets/worker-briefs/gate-enter-plan.md \u5199 planning \u4EFB\u52A1\u3002
55
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 planning \u65F6\u52A0\u8F7D\u6280\u80FD gate-planning \u548C gate-write-agent-notes\uFF1B\u82E5\u672C\u4F1A\u8BDD\u5DF2\u52A0\u8F7D\u4E14\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\uFF0C\u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6 gate-planning \u7684 SKILL.md\u3001proposal.md \u548C assets/worker-briefs/gate-enter-plan.md \u5199 planning \u4EFB\u52A1\u3002
56
56
  \u82E5\u5DE5\u4F5C\u9879\u8981\u5199\u8BBE\u8BA1\u8282\uFF08Note \u7684 \u201C## Design\u201D / \u201C### \u8BBE\u8BA1\u201D / \u81EA\u7531\u8BBE\u8BA1\u8282\uFF09\uFF0C\u5FC5\u987B\u5148\u8BFB\u53D6 rfc.md\uFF0C\u6309\u5176\u68C0\u67E5\u9879\u6536\u655B\uFF0C\u5E76\u628A\u9002\u7528\u68C0\u67E5\u70B9\u5199\u8FDB worker prompt\uFF1Bmechanical \u6216\u4E0D\u5199\u8BBE\u8BA1\u8282\u7684\u5DE5\u4F5C\u9879\u4E0D\u5F3A\u5236\u8BFB rfc\u3002
57
57
  \u5148\u6309 write-agent-notes \xA73 \u68C0\u7D22\u5386\u53F2\uFF0C\u518D\u6309 \xA74 \u5224\u5B9A\u5F52\u5C5E\u4E0E class\uFF1B\u7528 gate_note_write \u5199 Note\uFF0C\u8DEF\u5F84\u4E0E class \u5FC5\u987B\u4E00\u81F4\u3002\u53D1\u73B0\u65E7 implemented Note \u88AB\u65B0\u51B3\u5B9A\u5B8C\u5168\u53D6\u4EE3\u65F6\uFF0C\u8BB0\u4E0B\u5F52\u6863\u5019\u9009\uFF1B\u65B0 Note \u5C1A\u672A\u843D\u5730\u524D\u4E0D\u8981\u5F52\u6863\u3002
58
58
  \u628A\u5DE5\u4F5C\u9879\u3001\u7EA6\u675F\u548C\u63D0\u70BC\u540E\u7684\u89C4\u5212\u65B9\u6CD5\u5199\u8FDB subagent prompt\uFF1Bplanning worker \u4E0D\u52A0\u8F7D gate \u6280\u80FD\u3002
@@ -60,11 +60,11 @@ var PLAN_ORCHESTRATION = `## /gate-enter-plan \u7F16\u6392
60
60
  notePaths \u662F [{path,class,lifecycle}] \u6570\u7EC4\uFF1Bpath \u63A5\u53D7 .agents/notes/<lifecycle>/<class>/...\u3001<lifecycle>/<class>/... \u6216 <class>/...\uFF0Cgate_record \u5F52\u4E00\u4E3A\u5B8C\u6574\u8DEF\u5F84\uFF1Bmechanical:<\u8BF4\u660E> \u7528 noteDecision:'mechanical' \u4E14 notePaths \u4E3A\u7A7A\u3002
61
61
 
62
62
  ## Step 2 \u2014 Plan Review
63
- \u4E3B agent \u52A0\u8F7D\u6280\u80FD gate-plan-review\uFF1B\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/plan-review.md \u5199 review \u4EFB\u52A1\uFF0C\u6309\u4EFB\u52A1\u89C4\u6A21\u548C\u98CE\u9669\u81EA\u884C\u51B3\u5B9A\u6D3E\u4E00\u4E2A\u6216\u591A\u4E2A\u53EA\u8BFB review worker\uFF0C\u8986\u76D6 Standards\u3001Spec\u3001Architecture \u4E09\u8F74\u3002
63
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 plan-review \u65F6\u52A0\u8F7D\u6280\u80FD gate-plan-review\uFF1B\u82E5\u672C\u4F1A\u8BDD\u5DF2\u52A0\u8F7D\u4E14\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\uFF0C\u540E\u7EED\u591A\u8F6E review \u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/plan-review.md \u5199 review \u4EFB\u52A1\uFF0C\u6309\u4EFB\u52A1\u89C4\u6A21\u548C\u98CE\u9669\u81EA\u884C\u51B3\u5B9A\u6D3E\u4E00\u4E2A\u6216\u591A\u4E2A\u53EA\u8BFB review worker\uFF0C\u8986\u76D6 Standards\u3001Spec\u3001Architecture \u4E09\u8F74\u3002
64
64
  \u7ED9 worker \u5DE5\u4F5C\u9879\u3001Note\u3001\u56FA\u5B9A\u70B9\u548C\u8BC4\u5BA1\u65B9\u6CD5\uFF1B\u4E0D\u8981\u5728 review worker prompt \u4E2D\u9644\u5E26\u9879\u76EE\u73AF\u5883\u9A8C\u8BC1\uFF08package.json\u3001Node \u7248\u672C\u3001git \u72B6\u6001\u3001\u6587\u4EF6\u5B58\u5728\u6027\u3001\u521D\u59CB\u5316 smoke \u7ED3\u679C\uFF09\u3002
65
65
  \u5B8C\u6210\u540E\u8C03 gate_record({node:'plan-review',findings,reviewAxes,workerSessionIds,requiresDiscussion})\u3002
66
66
  reviewAxes \u5FC5\u987B\u5305\u542B standards\u3001spec\u3001architecture \u4E09\u8F74\u3002
67
- \u9700\u8981\u7528\u6237\u51B3\u5B9A\uFF1A\u8FDB\u5165 blocked\uFF0C\u7B49\u5F85 /gate-resume\uFF1B\u4ECD\u6709 findings\uFF1A\u5148 gate_record \u672C\u8F6E plan-review\uFF0C\u786E\u8BA4 node \u5DF2\u53D8\u4E3A plan-revise\uFF0C\u518D\u91CD\u65B0\u52A0\u8F7D gate-planning\uFF0C\u53EA\u5E26 findings \u548C Note \u8DEF\u5F84\u6D3E revise\uFF0C\u518D review\u3002
67
+ \u9700\u8981\u7528\u6237\u51B3\u5B9A\uFF1A\u8FDB\u5165 blocked\uFF0C\u7B49\u5F85 /gate-resume\uFF1B\u4ECD\u6709 findings\uFF1A\u5148 gate_record \u672C\u8F6E plan-review\uFF0C\u786E\u8BA4 node \u5DF2\u53D8\u4E3A plan-revise\uFF0C\u518D\u590D\u7528\u5DF2\u52A0\u8F7D\u7684 gate-planning\uFF0C\u53EA\u5E26 findings \u548C Note \u8DEF\u5F84\u6D3E revise\uFF0C\u518D review\u3002
68
68
 
69
69
  ## Step 3 \u2014 \u56DE\u5230 Discuss
70
70
  review \u4E3A\u7A7A\u65F6\u56DE\u5230 discuss\uFF0CplanReady=true\u3002
@@ -73,18 +73,18 @@ var IMPLEMENT_ORCHESTRATION = `## /gate-enter-implement \u7F16\u6392
73
73
  \u4E3B\u4EE3\u7406\u6D3E worker\uFF1Bgate \u4E0D\u6D3E\u3002
74
74
 
75
75
  ## Step 1 \u2014 Implement
76
- \u4E3B agent \u52A0\u8F7D\u6280\u80FD gate-implement\uFF1B\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-enter-implement.md \u5199 implement \u4EFB\u52A1\u3002\u91C7\u7528\u6D4B\u8BD5\u4F18\u5148\u65F6\u540C\u65F6\u52A0\u8F7D gate-tdd\uFF0C\u5E76\u628A\u76F8\u5173\u89C4\u5219\u4EA4\u7ED9 implement worker\u3002
76
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 implement \u65F6\u52A0\u8F7D\u6280\u80FD gate-implement\uFF1B\u82E5\u672C\u4F1A\u8BDD\u5DF2\u52A0\u8F7D\u4E14\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\uFF0C\u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-enter-implement.md \u5199 implement \u4EFB\u52A1\u3002\u91C7\u7528\u6D4B\u8BD5\u4F18\u5148\u65F6\u540C\u65F6\u52A0\u8F7D gate-tdd\uFF0C\u5E76\u628A\u76F8\u5173\u89C4\u5219\u4EA4\u7ED9 implement worker\u3002
77
77
  worker \u4E0D\u52A0\u8F7D gate \u6280\u80FD\u3002
78
78
  \u5B8C\u6210\u540E\u8C03 gate_record({node:'implement', workerSessionIds})\u3002
79
79
 
80
80
  ## Step 2 \u2014 Implementation Review
81
- \u4E3B agent \u52A0\u8F7D\u6280\u80FD gate-code-review\uFF1B\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-implement-review.md \u5199 review \u4EFB\u52A1\uFF0C\u6309\u6539\u52A8\u89C4\u6A21\u81EA\u884C\u51B3\u5B9A\u6D3E\u4E00\u4E2A\u6216\u591A\u4E2A\u53EA\u8BFB review worker\uFF0C\u8986\u76D6 Standards \u4E0E Spec \u4E24\u8F74\u3002
81
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 code-review \u65F6\u52A0\u8F7D\u6280\u80FD gate-code-review\uFF1B\u82E5\u672C\u4F1A\u8BDD\u5DF2\u52A0\u8F7D\u4E14\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\uFF0C\u540E\u7EED review \u8F6E\u6B21\u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-implement-review.md \u5199 review \u4EFB\u52A1\uFF0C\u6309\u6539\u52A8\u89C4\u6A21\u81EA\u884C\u51B3\u5B9A\u6D3E\u4E00\u4E2A\u6216\u591A\u4E2A\u53EA\u8BFB review worker\uFF0C\u8986\u76D6 Standards \u4E0E Spec \u4E24\u8F74\u3002
82
82
  \u5B8C\u6210\u540E\u8C03 gate_record({node:'code-review', findings, reviewAxes, workerSessionIds})\uFF1B\u6709 findings \u65F6\u5148\u8BB0\u5F55\uFF0C\u786E\u8BA4 node \u5DF2\u53D8\u4E3A implement-revise\uFF0C\u518D\u6D3E revise worker\u3002
83
83
  \u5BA1\u67E5\u8981\u6C42\u6EE1\u8DB3\u540E\u7EE7\u7EED Step 3\uFF0C\u65E0\u9700\u518D\u6B21\u6388\u6743\u3002
84
84
  \u5B9E\u73B0\u4E2D\u53D1\u73B0\u8303\u56F4\u5916\u95EE\u9898\u3001\u5408\u540C\u53D8\u5316\u6216\u9700\u8981\u91CD\u65B0\u8BA8\u8BBA\u65F6\uFF0Cworker \u505C\u6B62\u5E76\u8FD4\u56DE receipt\uFF1B\u4E3B agent \u5411\u7528\u6237\u8BF4\u660E\uFF0C\u4F7F\u7528 gate_record \u7684 requiresDiscussion \u6216\u63D0\u793A\u7528\u6237\u6267\u884C /gate-return-discuss\u3002\u4E0D\u8981\u505C\u5728 implement \u91CC\u7EE7\u7EED\u6269\u5927\u8303\u56F4\u3002
85
85
 
86
86
  ## Step 3 \u2014 Verify
87
- \u4E3B agent \u52A0\u8F7D\u6280\u80FD gate-verify\uFF0C\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-verify.md \u5199 verify \u4EFB\u52A1\uFF0C\u6D3E verify worker \u5B8C\u6210\u6700\u7EC8\u9A8C\u6536\u3002
87
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 verify \u65F6\u52A0\u8F7D\u6280\u80FD gate-verify\uFF1B\u82E5\u672C\u4F1A\u8BDD\u5DF2\u52A0\u8F7D\u4E14\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\uFF0C\u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6\u8BE5\u6280\u80FD\u7684 assets/worker-briefs/gate-verify.md \u5199 verify \u4EFB\u52A1\uFF0C\u6D3E verify worker \u5B8C\u6210\u6700\u7EC8\u9A8C\u6536\u3002
88
88
  \u5B8C\u6210\u540E\u8C03 gate_record({node:'verify', verification, workerSessionIds})\uFF1Bverification.toolResults \u5FC5\u987B\u662F verify worker session log \u4E2D\u771F\u5B9E tool/result \u7684 call_... id\uFF0Cevidence \u662F workspace \u5185\u7684\u666E\u901A\u6587\u4EF6\u3002
89
89
  \u53EA\u6709\u6700\u7EC8 PASS \u624D\u5B8C\u6210\u4EA4\u4ED8\uFF1BFAIL \u56DE\u5230 implement-revise\u3002
90
90
  \u72B6\u6001\u66F4\u65B0\u9075\u5FAA\u9879\u76EE\u767B\u8BB0\u7684\u5DE5\u4F5C\u9879\u4E0E\u51B3\u7B56\u8BB0\u5F55\u751F\u547D\u5468\u671F\u3002
@@ -97,10 +97,10 @@ var FIX_BUG_ORCHESTRATION = `## /gate-fix-bug \u7F16\u6392
97
97
  \u4E3B agent \u8BFB\u53D6 gate-fix-bug\uFF1B\u4E3B agent \u53EA\u6C47\u603B\uFF0C\u4E0D\u81EA\u884C\u4FEE\u590D\u3002
98
98
 
99
99
  ## Step 1 \u2014 Fix
100
- \u4E3B agent \u8BFB\u53D6 gate-fix-bug \u6280\u80FD\u7684 assets/worker-briefs/gate-fix-bug.md\uFF0C\u6D3E fix worker\u3002fix worker \u4F7F\u7528 gate-fix-bug \u6267\u884C Process 1-9\uFF1A\u590D\u73B0\u3001\u56DE\u5F52\u8986\u76D6\u3001\u6839\u56E0\u3001\u6700\u5C0F\u4FEE\u590D\u3001\u539F\u590D\u73B0\u4E0E\u76F8\u5173\u6D4B\u8BD5\u3002\u5B8C\u6210\u540E\u8FD4\u56DE\u4FEE\u590D receipt\uFF1B\u4E0D\u8981\u81EA\u884C\u5B8C\u6210 Step 10-12\uFF0C\u4E5F\u4E0D\u8981\u63D0\u4EA4\u3002
100
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 fix-bug \u65F6\u8BFB\u53D6/\u52A0\u8F7D gate-fix-bug\uFF1B\u5DF2\u52A0\u8F7D\u5219\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u8BFB\u53D6 gate-fix-bug \u6280\u80FD\u7684 assets/worker-briefs/gate-fix-bug.md\uFF0C\u6D3E fix worker\u3002fix worker \u4F7F\u7528 gate-fix-bug \u6267\u884C Process 1-9\uFF1A\u590D\u73B0\u3001\u56DE\u5F52\u8986\u76D6\u3001\u6839\u56E0\u3001\u6700\u5C0F\u4FEE\u590D\u3001\u539F\u590D\u73B0\u4E0E\u76F8\u5173\u6D4B\u8BD5\u3002\u5B8C\u6210\u540E\u8FD4\u56DE\u4FEE\u590D receipt\uFF1B\u4E0D\u8981\u81EA\u884C\u5B8C\u6210 Step 10-12\uFF0C\u4E5F\u4E0D\u8981\u63D0\u4EA4\u3002
101
101
 
102
102
  ## Step 2 \u2014 Independent review
103
- \u4E3B agent \u52A0\u8F7D gate-code-review\uFF0C\u63D0\u70BC\u4E24\u8F74\u8BC4\u5BA1\u8981\u6C42\uFF0C\u518D\u8BFB\u53D6 gate-fix-bug \u6280\u80FD\u7684 assets/worker-briefs/fix-bug-review.md\uFF0C\u6D3E\u4E00\u4E2A\u72EC\u7ACB review worker\uFF1B\u4FEE\u590D\u57FA\u7EBF\u3001\u9009\u5B9A\u5931\u8D25\u3001\u5408\u540C\u5F15\u7528\u548C\u5B8C\u6574 diff \u5199\u8FDB\u7B80\u62A5\u3002review \u53EA\u62A5 findings\u3002
103
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165 review \u65F6\u52A0\u8F7D gate-code-review\uFF1B\u5DF2\u52A0\u8F7D\u5219\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u63D0\u70BC\u4E24\u8F74\u8BC4\u5BA1\u8981\u6C42\uFF0C\u518D\u8BFB\u53D6 gate-fix-bug \u6280\u80FD\u7684 assets/worker-briefs/fix-bug-review.md\uFF0C\u6D3E\u4E00\u4E2A\u72EC\u7ACB review worker\uFF1B\u4FEE\u590D\u57FA\u7EBF\u3001\u9009\u5B9A\u5931\u8D25\u3001\u5408\u540C\u5F15\u7528\u548C\u5B8C\u6574 diff \u5199\u8FDB\u7B80\u62A5\u3002review \u53EA\u62A5 findings\u3002
104
104
 
105
105
  ## Step 3 \u2014 Resolve
106
106
  \u628A material in-scope findings \u4EA4\u56DE fix worker\uFF08send_message \u6216\u65B0 worker\uFF09\uFF0C\u5B8C\u6210 gate-fix-bug Step 11-12\uFF0C\u91CD\u8DD1\u539F\u590D\u73B0\u548C\u76F8\u5173\u6D4B\u8BD5\uFF1B\u91CD\u590D Step 2-3 \u76F4\u5230\u6CA1\u6709 material findings\u3002
@@ -133,12 +133,15 @@ var NODE_INFO = {
133
133
  };
134
134
  var NODE_METHODS = Object.fromEntries(Object.entries(NODE_INFO).map(([node, info]) => [node, info.method]));
135
135
  var WORKER_NODES = new Set(GATE_RECORD_NODES.filter((node) => node !== "docs" && node !== "note-lifecycle"));
136
- var DISPATCH_RULE = `## \u6D3E\u53D1\u89C4\u5219
137
- \u6BCF\u6B21\u6D3E subagent \u524D\uFF0C\u6309\u5F53\u524D procedure \u7684 method \u91CD\u65B0\u52A0\u8F7D\u6280\u80FD\uFF1B\u4E0D\u8981\u4F7F\u7528\u8BB0\u5FC6\u4E2D\u7684\u8282\u70B9\u6216\u6280\u80FD\uFF1B\u591A\u8F6E/\u538B\u7F29\u540E\u91CD\u65B0\u786E\u8BA4\u3002`;
136
+ var DISPATCH_RULE = `## \u6280\u80FD\u52A0\u8F7D\u89C4\u5219
137
+ 1. \u672C\u4F1A\u8BDD\u5DF2\u7ECF\u901A\u8FC7 skill \u5DE5\u5177\u52A0\u8F7D\u8FC7\u7684\u6280\u80FD\uFF0C\u5185\u5BB9\u4ECD\u5728\u4E0A\u6587\u65F6\u76F4\u63A5\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002
138
+ 2. \u53EA\u6709\u4EE5\u4E0B\u60C5\u51B5\u624D\u91CD\u65B0\u52A0\u8F7D\uFF1A\u672C\u4F1A\u8BDD\u9996\u6B21\u8FDB\u5165\u8BE5\u6280\u80FD\uFF1Bcompaction \u540E\u5185\u5BB9\u5DF2\u4E0D\u5728\u4E0A\u4E0B\u6587\uFF1B\u6280\u80FD\u6587\u4EF6/\u7248\u672C\u53D1\u751F\u53D8\u5316\uFF1B\u7528\u6237\u660E\u786E\u8981\u6C42\u5237\u65B0\u3002
139
+ 3. gate_record / gate_status \u8FD4\u56DE\u65B0\u7684 procedure \u53EA\u4EE3\u8868 node\u3001\u8F6E\u6B21\u6216 findings \u53D8\u5316\uFF0C\u4E0D\u4EE3\u8868\u8981\u91CD\u65B0\u52A0\u8F7D\u6280\u80FD\u3002
140
+ 4. \u591A\u8F6E review/revise \u590D\u7528\u540C\u4E00\u4EFD\u6280\u80FD\u5185\u5BB9\uFF1B\u628A\u65B0\u7684 findings\u3001\u6587\u4EF6\u8303\u56F4\u548C\u8981\u6C42\u4F20\u7ED9 worker\uFF0C\u4E0D\u8981\u91CD\u65B0\u52A0\u8F7D\u6280\u80FD\u3002`;
138
141
  var REVIEWING_CODE_PROCEDURE = `## /gate-implement-review \u7F16\u6392
139
- \u4E3B agent \u52A0\u8F7D gate-code-review\uFF1B\u6D3E\u53EA\u8BFB review worker \u8986\u76D6 Standards \u4E0E Spec \u4E24\u8F74\uFF1B\u5B8C\u6210\u540E gate_record({node:'code-review-standalone', findings, reviewAxes, workerSessionIds}) \u56DE discuss\u3002`;
142
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165\u65F6\u52A0\u8F7D gate-code-review\uFF1B\u5DF2\u52A0\u8F7D\u5219\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u6D3E\u53EA\u8BFB review worker \u8986\u76D6 Standards \u4E0E Spec \u4E24\u8F74\uFF1B\u5B8C\u6210\u540E gate_record({node:'code-review-standalone', findings, reviewAxes, workerSessionIds}) \u56DE discuss\u3002`;
140
143
  var REVIEWING_PROPOSAL_PROCEDURE = `## /gate-propose-review \u7F16\u6392
141
- \u4E3B agent \u52A0\u8F7D gate-plan-review\uFF1B\u6D3E\u53EA\u8BFB review worker \u8986\u76D6 Standards/Spec/Architecture \u4E09\u8F74\uFF1B\u5B8C\u6210\u540E gate_record({node:'proposal-review', findings, reviewAxes, workerSessionIds}) \u56DE discuss\u3002`;
144
+ \u4E3B agent \u9996\u6B21\u8FDB\u5165\u65F6\u52A0\u8F7D gate-plan-review\uFF1B\u5DF2\u52A0\u8F7D\u5219\u590D\u7528\uFF0C\u4E0D\u8981\u91CD\u590D\u8C03\u7528 skill\u3002\u6D3E\u53EA\u8BFB review worker \u8986\u76D6 Standards/Spec/Architecture \u4E09\u8F74\uFF1B\u5B8C\u6210\u540E gate_record({node:'proposal-review', findings, reviewAxes, workerSessionIds}) \u56DE discuss\u3002`;
142
145
  var REVIEWING_VERIFY_PROCEDURE = `## /gate-code-verify \u7F16\u6392
143
146
  \u6D3E\u5B50\u4EE3\u7406\u52A0\u8F7D\u4F7F\u7528 gate-user-verify \u6309 Step 6 \u6C47\u62A5\uFF1Bverification.toolResults \u5FC5\u987B\u662F verify worker session log \u4E2D\u771F\u5B9E tool/result \u7684 call_... id\uFF0Cevidence \u662F workspace \u5185\u7684\u666E\u901A\u6587\u4EF6\uFF1B\u5B8C\u6210\u540E gate_record({node:'verify-standalone', verification, workerSessionIds}) \u56DE discuss\u3002`;
144
147
  function stepSection(text, from, to) {
@@ -169,7 +172,7 @@ var NODE_PROCEDURES = {
169
172
  "verify-standalone": REVIEWING_VERIFY_PROCEDURE
170
173
  };
171
174
  var GATE_METHODOLOGY = `## Gate \u65B9\u6CD5\u8BBA
172
- \u672C\u6BB5\u53EA\u5B9A\u4E49\u5404\u9636\u6BB5\u7684\u5DE5\u4F5C\u65B9\u6CD5\u4E0E\u8D28\u91CF\u6807\u51C6\u3002\u5F53\u524D phase/node\u3001procedure \u548C\u8981\u52A0\u8F7D\u7684\u6280\u80FD\u6765\u81EA\u6700\u8FD1\u4E00\u6B21 gate_status\u3001gate_record \u6216\u547D\u4EE4\u7ED3\u679C\uFF1B\u53EA\u6267\u884C\u5F53\u524D phase \u7684 procedure\uFF0C\u5176\u4ED6\u9636\u6BB5\u7684\u65B9\u6CD5\u8BBA\u4EC5\u4F5C\u80CC\u666F\u53C2\u8003\uFF1Bcompaction \u540E\u5FC5\u987B\u91CD\u65B0\u83B7\u53D6\u3002
175
+ \u672C\u6BB5\u53EA\u5B9A\u4E49\u5404\u9636\u6BB5\u7684\u5DE5\u4F5C\u65B9\u6CD5\u4E0E\u8D28\u91CF\u6807\u51C6\u3002\u5F53\u524D phase/node\u3001procedure \u548C\u8981\u52A0\u8F7D\u7684\u6280\u80FD\u6765\u81EA\u6700\u8FD1\u4E00\u6B21 gate_status\u3001gate_record \u6216\u547D\u4EE4\u7ED3\u679C\uFF1B\u53EA\u6267\u884C\u5F53\u524D phase \u7684 procedure\uFF0C\u5176\u4ED6\u9636\u6BB5\u7684\u65B9\u6CD5\u8BBA\u4EC5\u4F5C\u80CC\u666F\u53C2\u8003\uFF1Bcompaction \u540E\u5FC5\u987B\u91CD\u65B0\u83B7\u53D6 procedure\uFF0C\u5E76\u786E\u8BA4\u6280\u80FD\u5185\u5BB9\u662F\u5426\u4ECD\u5728\u4E0A\u4E0B\u6587\uFF1A\u9996\u6B21\u9700\u8981\u65F6\u52A0\u8F7D\uFF0C\u5DF2\u5728\u4E0A\u6587\u5219\u590D\u7528\uFF0C\u4E0D\u8981\u56E0 procedure \u66F4\u65B0\u91CD\u590D\u52A0\u8F7D\u3002
173
176
 
174
177
  ## discuss
175
178
  discuss \u662F\u9ED8\u8BA4\u9636\u6BB5\u3002\u5148\u8BFB\u76F8\u5173\u4EE3\u7801\u3001\u6587\u6863\u3001\u5386\u53F2 Note \u4E0E\u9879\u76EE\u7EA6\u675F\uFF1B\u660E\u786E\u5B9E\u9645\u95EE\u9898\u3001\u7EA6\u675F\u3001\u5DF2\u6709\u51B3\u5B9A\u4E0E\u51B2\u7A81\uFF1B\u7ED9\u51FA\u6709\u5B9E\u8D28\u5DEE\u5F02\u7684\u53EF\u884C\u65B9\u6848\u3001\u63A8\u8350\u4E0E\u5173\u952E\u6743\u8861\uFF1B\u53EA\u5BF9\u672A\u51B3\u7684\u4EA7\u54C1\u3001\u8303\u56F4\u3001\u517C\u5BB9\u6027\u3001\u6210\u672C\u3001\u98CE\u9669\u7B49\u4EF7\u503C\u5224\u65AD\u63D0\u95EE\uFF1B\u6C47\u62A5\u5DF2\u89E3\u51B3\u3001\u672A\u51B3\u4E8B\u9879\u548C\u5EFA\u8BAE\u4E0B\u4E00\u9636\u6BB5\u3002\u4E0D\u8FDB\u5165\u5B9E\u65BD\uFF0C\u53EA\u6709\u7528\u6237\u660E\u786E\u6388\u6743\u624D\u79BB\u5F00\u3002
package/locale/en.json CHANGED
@@ -1,6 +1,6 @@
1
- {
2
- "meta": {
3
- "title": "Gate",
4
- "description": "Phase gate and write policy for agent workflows."
5
- }
6
- }
1
+ {
2
+ "meta": {
3
+ "title": "Gate",
4
+ "description": "Phase gate and write policy for agent workflows."
5
+ }
6
+ }
package/locale/zh.json CHANGED
@@ -1,6 +1,6 @@
1
- {
2
- "meta": {
3
- "title": "Gate 门禁",
4
- "description": "按阶段控制 agent 的写入与评审流程。"
5
- }
6
- }
1
+ {
2
+ "meta": {
3
+ "title": "Gate 门禁",
4
+ "description": "按阶段控制 agent 的写入与评审流程。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,34 +1,34 @@
1
- {
2
- "name": "dsh-gate-agent",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "description": "Full write gate and phase orchestrator with plugin-local skills.",
6
- "exports": {
7
- ".": "./lib/index.js",
8
- "./locale/*.json": "./locale/*.json",
9
- "./icon": "./icon.svg",
10
- "./package.json": "./package.json"
11
- },
12
- "files": [
13
- "lib",
14
- "skills",
15
- "launchers",
16
- "cordis.patch.yml",
17
- "README.md",
18
- "locale/*.json",
19
- "icon.svg"
20
- ],
21
- "scripts": {
22
- "build": "node scripts/bundle.mjs",
23
- "typecheck": "tsc -p tsconfig.json",
24
- "test": "node scripts/bundle.mjs && node scripts/check-split.mjs && node test/unit.mjs && node test/composition.mjs && node test/registry.mjs"
25
- },
26
- "dsh": {
27
- "bundle": {
28
- "patch": "./cordis.patch.yml"
29
- }
30
- },
31
- "publishConfig": {
32
- "access": "public"
33
- }
34
- }
1
+ {
2
+ "name": "dsh-gate-agent",
3
+ "version": "0.1.2",
4
+ "type": "module",
5
+ "description": "Full write gate and phase orchestrator with plugin-local skills.",
6
+ "exports": {
7
+ ".": "./lib/index.js",
8
+ "./locale/*.json": "./locale/*.json",
9
+ "./icon": "./icon.svg",
10
+ "./package.json": "./package.json"
11
+ },
12
+ "files": [
13
+ "lib",
14
+ "skills",
15
+ "launchers",
16
+ "cordis.patch.yml",
17
+ "README.md",
18
+ "locale/*.json",
19
+ "icon.svg"
20
+ ],
21
+ "scripts": {
22
+ "build": "node scripts/bundle.mjs",
23
+ "typecheck": "tsc -p tsconfig.json",
24
+ "test": "node scripts/bundle.mjs && node scripts/check-split.mjs && node test/unit.mjs && node test/composition.mjs && node test/registry.mjs"
25
+ },
26
+ "dsh": {
27
+ "bundle": {
28
+ "patch": "./cordis.patch.yml"
29
+ }
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ }
34
+ }
@@ -6,8 +6,8 @@ user-invocable: false
6
6
 
7
7
  ## Gate 使用
8
8
 
9
- 主 agent 读取本方法后,按改动规模派一个或多个 review worker;worker 不加载本技能或其他 gate 方法文件。`gate_record({node:'code-review'})` 需要 `reviewAxes.standards.findings` 与 `reviewAxes.spec.findings`;worker 数量由主 agent 决定,但两轴都必须产出。
10
-
9
+ 主 agent 读取本方法后,按改动规模派一个或多个 review worker;worker 不加载本技能或其他 gate 方法文件。`gate_record({node:'code-review'})` 需要 `reviewAxes.standards.findings` 与 `reviewAxes.spec.findings`;worker 数量由主 agent 决定,但两轴都必须产出。
10
+
11
11
  任务模板:本技能 `assets/worker-briefs/gate-implement-review.md`。
12
12
 
13
13
  Two-axis review of the requested change scope, including uncommitted work when applicable: