draftgo-cli 3.0.56 → 4.0.22
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 +169 -297
- package/package.json +12 -7
- package/resources/custom-service-sdk/ai.go +520 -0
- package/resources/custom-service-sdk/ai_test.go +156 -0
- package/resources/custom-service-sdk/billing.go +596 -0
- package/resources/custom-service-sdk/billing_test.go +150 -0
- package/resources/custom-service-sdk/go.mod +3 -0
- package/resources/custom-service-sdk/manifest.json +72 -0
- package/resources/custom-service-sdk/platform.go +360 -0
- package/resources/custom-service-sdk/platform_logger_test.go +24 -0
- package/resources/custom-service-sdk/registration_test.go +39 -0
- package/resources/custom-service-sdk/resources.go +246 -0
- package/resources/custom-service-sdk/resources_billing_test.go +115 -0
- package/resources/custom-service-sdk/resources_files_test.go +57 -0
- package/resources/custom-service-sdk/resources_scope_test.go +87 -0
- package/resources/custom-service-sdk/sdk.go +208 -0
- package/resources/skill/SKILL.md +36 -87
- package/resources/skill/init/SKILL.md +9 -14
- package/resources/skill/manifest.json +6 -2
- package/resources/skill/references/aihub.md +28 -5
- package/resources/skill/references/app-api.md +56 -6
- package/resources/skill/references/architecture.md +2 -2
- package/resources/skill/references/chat-sdk.md +4 -2
- package/resources/skill/references/checkout.md +21 -7
- package/resources/skill/references/custom-services.md +124 -222
- package/resources/skill/references/data.md +22 -6
- package/resources/skill/references/delivery.md +33 -0
- package/resources/skill/references/diagnostics.md +51 -0
- package/resources/skill/references/frontend.md +93 -499
- package/resources/skill/references/mcp.md +65 -101
- package/resources/skill/references/methods.md +189 -0
- package/resources/skill/references/modules.md +36 -8
- package/resources/skill/references/runtime.md +26 -3
- package/resources/skill/story/SKILL.md +1 -2
- package/src/apiContractCache.js +112 -0
- package/src/cli.js +24 -20
- package/src/commandRegistry.js +15 -12
- package/src/commands/api.js +41 -10
- package/src/commands/apiKey.js +34 -0
- package/src/commands/capabilities.js +93 -0
- package/src/commands/check.js +1 -10
- package/src/commands/checkout.js +1 -1
- package/src/commands/commit.js +1 -1
- package/src/commands/components.js +550 -0
- package/src/commands/conflict.js +1 -1
- package/src/commands/connect.js +18 -8
- package/src/commands/customService.js +22 -8
- package/src/commands/dataRange.js +33 -0
- package/src/commands/delete.js +34 -46
- package/src/commands/deploy.js +1 -1
- package/src/commands/diff.js +18 -2
- package/src/commands/grant.js +29 -0
- package/src/commands/group.js +38 -0
- package/src/commands/help.js +80 -51
- package/src/commands/init.js +6 -12
- package/src/commands/listTargets.js +1 -1
- package/src/commands/local.js +2 -6
- package/src/commands/map.js +145 -28
- package/src/commands/mcp.js +2 -2
- package/src/commands/reconcile.js +1 -1
- package/src/commands/role.js +32 -0
- package/src/commands/space.js +41 -0
- package/src/commands/status.js +111 -8
- package/src/commands/uninstall.js +3 -3
- package/src/commands/update.js +24 -12
- package/src/commands/verify.js +118 -21
- package/src/commands/{verifyUi.js → visualVerify.js} +28 -116
- package/src/commands/worklog.js +90 -0
- package/src/consoleEncoding.js +34 -0
- package/src/contractCompatibility.js +57 -0
- package/src/customServices.js +278 -41
- package/src/diffReport.js +106 -0
- package/src/index.js +2 -0
- package/src/{localdev → localRuntime}/compose.js +14 -17
- package/src/{localdev → localRuntime}/detect.js +1 -1
- package/src/{localdev → localRuntime}/index.js +22 -23
- package/src/{localdev → localRuntime}/mysqlClient.js +1 -1
- package/src/{localdev → localRuntime}/services.js +28 -37
- package/src/mcp/client.js +11 -2
- package/src/mcp/protocol.js +2 -2
- package/src/mcp/tools.js +14 -1
- package/src/platforms.js +9 -0
- package/src/projectConfig.js +8 -4
- package/src/releaseInstall.js +105 -0
- package/src/{installers/index.js → targets.js} +3 -5
- package/src/updateCheck.js +48 -28
- package/src/worklog.js +275 -0
- package/src/workspaceHealth.js +1 -1
- package/src/worktree/backend.js +1 -1
- package/src/worktree/index.js +86 -51
- package/src/changelog.js +0 -276
- package/src/commands/changelog.js +0 -24
- package/src/commands/localDev.js +0 -9
- package/src/commands/sync.js +0 -46
- package/src/commands/task.js +0 -408
- package/src/commands/verifyUiCompat.js +0 -16
|
@@ -4,62 +4,72 @@ read_when: 配置或诊断 DraftGo MCP 时 · 查询实时资源或 API 契约
|
|
|
4
4
|
|
|
5
5
|
# DraftGo MCP
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
根 `SKILL.md` 已负责任务路由。本文件只保留 MCP 的实时契约、调用优化和安全边界,不重复页面、前端或交付规则。
|
|
8
8
|
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
DraftGo MCP 用于实时发现、结构化查询和普通 API 操作。完整 pages、navigations、docs/articles 正文不通过
|
|
12
|
-
MCP tool result 或参数传输;需要全文时使用 `draftgo checkout`,提交时使用 `draftgo commit`。MCP 返回
|
|
13
|
-
`artifact` / `omitted` 时保留该语义,不要尝试重新展开长内容。
|
|
14
|
-
|
|
15
|
-
不要在 CLI 或 MCP 服务端增加聚合上下文工具。自然语言任务的语义筛选由已加载根 Skill 的 Agent 完成:先读取任务路由指定的最少必要 Reference,再调用下面的精确 MCP 工具,并根据结果逐步缩小范围。
|
|
16
|
-
|
|
17
|
-
标准发现顺序:
|
|
9
|
+
## 最短流程
|
|
18
10
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
```bash
|
|
12
|
+
draftgo mcp status
|
|
13
|
+
draftgo mcp test
|
|
14
|
+
draftgo api search "<业务能力>"
|
|
15
|
+
draftgo api describe <operation_id>
|
|
16
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
17
|
+
draftgo capabilities search <query> --output json
|
|
18
|
+
draftgo capabilities show <operation_id> --output json
|
|
19
|
+
draftgo capabilities audit --output json
|
|
20
|
+
|
|
21
|
+
# 领域快捷命令(仍使用实时 operation describe/cache)
|
|
22
|
+
draftgo role list
|
|
23
|
+
draftgo space list
|
|
24
|
+
draftgo grant create --input request.json
|
|
25
|
+
draftgo data-range list
|
|
26
|
+
draftgo api-key status
|
|
27
|
+
|
|
28
|
+
# 领域快捷命令(仍使用实时 operation describe/cache)
|
|
29
|
+
draftgo role list
|
|
30
|
+
draftgo group list --input request.json
|
|
31
|
+
draftgo grant list --input request.json
|
|
32
|
+
draftgo api-key status
|
|
33
|
+
```
|
|
24
34
|
|
|
25
|
-
|
|
26
|
-
这些资源不 checkout,也不生成 `.draftgo/*/index.json` 镜像。
|
|
35
|
+
已配置且连接正常时无需每次运行前两条;只在初次配置、配置变化或 MCP 失败时执行。完成标准是 initialize、tools/list 和关键 tools/call 可用,目标 operation 的 schema 已确认且调用结果可回读。401/403 查用户 API Key 或权限,session/uninitialized 查会话与服务重启,5xx 记录 request ID 后查服务日志;不要用重复写入测试连接。
|
|
27
36
|
|
|
28
|
-
##
|
|
37
|
+
## 边界
|
|
29
38
|
|
|
30
|
-
|
|
39
|
+
MCP 用于实时发现、结构化查询和普通 API 操作。pages、navigations、docs/articles、custom_services 的完整正文走 `draftgo checkout` / `draftgo commit`;工具返回 `artifact` 或 `omitted` 时保留该语义,不要求模型展开长内容。
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
不要增加聚合上下文工具或静态 API 路径表。按任务读取最少必要的 Reference,再调用精确工具:
|
|
33
42
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
+
| 需要 | 工具 |
|
|
44
|
+
|---|---|
|
|
45
|
+
| 项目能力、registry 覆盖和 checkout 类型 | `draftgo_project_overview` |
|
|
46
|
+
| 定位资源 | `draftgo_resource_search` / `draftgo_resource_list` |
|
|
47
|
+
| 元数据或短片段 | `draftgo_resource_get_metadata` / `draftgo_resource_read_fragment` |
|
|
48
|
+
| 定位 API operation | `draftgo_api_search` |
|
|
49
|
+
| 读取 operation schema | `draftgo_api_describe` |
|
|
50
|
+
| 结构化读写 | `draftgo_api_call` |
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
只在需要对应信息时调用工具,不把 `project_overview` 作为每个任务的固定前置步骤。独立资源或 operation 可并发调用;同一资源的依赖步骤保持顺序。非幂等写入失败后先读状态,不自动重试。
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
## API 契约缓存
|
|
47
55
|
|
|
48
|
-
|
|
56
|
+
动态 schema 不写入 Skill。Skill 只保存下面的缓存规则:
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
1. operation 未知时才 search;已有精确 `operation_id` 时跳过 search。
|
|
59
|
+
2. 第一次使用 operation 时 describe,检查 method、path、parameters、request body、responses、permission、risk、`destructive`、`idempotent`、`input_schema` 和 `response_policy`。
|
|
60
|
+
3. 同一 server 的 operation 描述按 `registry_revision` 复用。CLI 将缓存写在私有 `.draftgo/api-contract-cache.json`,不把 schema 注入 Skill 或对话上下文。
|
|
61
|
+
4. call 携带缓存的 `registry_revision`。服务返回 `CONTRACT_CHANGED` 时重新 describe;只读或 operation 契约未变化时最多重试一次。危险 operation 自身契约变化或服务端明确报告 CLI/契约不兼容时停止调用,升级 CLI 后重新 describe 和确认;其他工具错误不触发自动重试。
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
describe 缺少本次调用需要的 schema、权限、风险或响应契约时停止并报告,不猜字段、不拼路径、不绕过 MCP。多个 operation 仍可能匹配时继续缩小 search,而不是任选一个。
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
动态 Go 自定义服务 Route 也在 registry 中:module 为 `scripts_dynamic`,resource type 为 `custom_scripts`。Route 的 SDK、身份和运行限制见 `custom-services.md`。
|
|
57
66
|
|
|
58
|
-
|
|
67
|
+
## 调用形状
|
|
59
68
|
|
|
60
69
|
```json
|
|
61
70
|
{
|
|
62
71
|
"operation_id": "精确 operation_id",
|
|
72
|
+
"registry_revision": "describe 返回的 revision",
|
|
63
73
|
"path": {},
|
|
64
74
|
"query": {},
|
|
65
75
|
"body": null,
|
|
@@ -68,11 +78,11 @@ describe 缺少与本次调用有关的参数、请求体、responses、permissi
|
|
|
68
78
|
}
|
|
69
79
|
```
|
|
70
80
|
|
|
71
|
-
|
|
81
|
+
只传 operation schema 需要的容器。路径参数放 `path`,查询参数放 `query`,JSON 放 `body`,文件或表单字段放 `multipart`。不得传 tenant override、API Key、Authorization 或其他凭据。
|
|
72
82
|
|
|
73
|
-
|
|
83
|
+
高风险 operation 仅在用户意图和影响范围明确时设置 `confirm=true`;不要拼 `X-Confirm-Token` 或调用旧 reauth 流程。按 describe 的 responses 与实际 `status_code` 解释结果,不对自定义 Route、OpenAI 兼容流等强套 `{code,data,message}`。`response_policy.checkout_required=true` 时改走 checkout/commit。
|
|
74
84
|
|
|
75
|
-
## CLI
|
|
85
|
+
## CLI 与宿主
|
|
76
86
|
|
|
77
87
|
```bash
|
|
78
88
|
draftgo mcp setup [target...]
|
|
@@ -81,72 +91,26 @@ draftgo mcp test
|
|
|
81
91
|
draftgo mcp serve
|
|
82
92
|
```
|
|
83
93
|
|
|
84
|
-
- `setup`
|
|
85
|
-
- `status`
|
|
86
|
-
- `test`
|
|
87
|
-
- `serve`
|
|
94
|
+
- `setup` 写项目级宿主配置,只替换 `draftgo` 条目。
|
|
95
|
+
- `status` 检查配置与凭据泄漏风险。
|
|
96
|
+
- `test` 建立独立新连接并验证关键工具;它不证明宿主持有的旧 session 仍有效。
|
|
97
|
+
- `serve` 是 stdio bridge。远端 session 明确失效时重新 initialize 并重放当前请求一次;普通超时、服务错误和工具错误不重试。
|
|
88
98
|
|
|
89
|
-
|
|
99
|
+
支持项目级 setup:Codex、Claude Code、Cursor、Gemini CLI、Kiro、GitHub Copilot。Windsurf 和 Antigravity 没有可靠项目级 MCP 配置,CLI 应明确提示不支持。
|
|
90
100
|
|
|
91
|
-
|
|
92
|
-
也不创建 pages、navigation、docs、db_meta 等本地镜像。底座仍在开发或暂不可达时,报告诊断结果即可,
|
|
93
|
-
不得回退到 `pull --all`。
|
|
94
|
-
|
|
95
|
-
## 宿主配置
|
|
96
|
-
|
|
97
|
-
| 宿主 | 项目配置 | MCP setup |
|
|
98
|
-
|---|---|---|
|
|
99
|
-
| Codex | `.codex/config.toml` | 支持 |
|
|
100
|
-
| Claude Code | `.mcp.json` | 支持 |
|
|
101
|
-
| Cursor | `.cursor/mcp.json` | 支持 |
|
|
102
|
-
| Gemini CLI | `.gemini/settings.json` | 支持 |
|
|
103
|
-
| Kiro | `.kiro/settings/mcp.json` | 支持 |
|
|
104
|
-
| GitHub Copilot | `.vscode/mcp.json` | 支持 |
|
|
105
|
-
| Windsurf | 无可靠的项目级适配 | 不支持,CLI 必须明确提示 |
|
|
106
|
-
| Antigravity | 无可靠的项目级适配 | 不支持,CLI 必须明确提示 |
|
|
107
|
-
|
|
108
|
-
Codex 配置:
|
|
109
|
-
|
|
110
|
-
```toml
|
|
111
|
-
[mcp_servers.draftgo]
|
|
112
|
-
command = "draftgo"
|
|
113
|
-
args = ["mcp", "serve"]
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Claude Code、Cursor、Gemini CLI 和 Kiro 使用各自文件中的 `mcpServers`:
|
|
101
|
+
宿主配置只运行:
|
|
117
102
|
|
|
118
103
|
```json
|
|
119
|
-
{
|
|
120
|
-
"mcpServers": {
|
|
121
|
-
"draftgo": {
|
|
122
|
-
"command": "draftgo",
|
|
123
|
-
"args": ["mcp", "serve"]
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
104
|
+
{"command":"draftgo","args":["mcp","serve"]}
|
|
127
105
|
```
|
|
128
106
|
|
|
129
|
-
GitHub Copilot 使用 `servers
|
|
130
|
-
|
|
131
|
-
```json
|
|
132
|
-
{
|
|
133
|
-
"servers": {
|
|
134
|
-
"draftgo": {
|
|
135
|
-
"type": "stdio",
|
|
136
|
-
"command": "draftgo",
|
|
137
|
-
"args": ["mcp", "serve"]
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
```
|
|
107
|
+
Codex 使用 `[mcp_servers.draftgo]`;GitHub Copilot 使用 `servers` 且声明 `type="stdio"`;其他支持宿主使用各自 `mcpServers`。配置不得包含 API Key、token、Authorization、headers、远端 `/mcp` URL、`env` 或带凭据命令。bridge 从当前项目 `.draftgo/config.json` 读取 server/API Key。
|
|
142
108
|
|
|
143
|
-
|
|
144
|
-
bridge 必须从当前工作目录的 `.draftgo/config.json` 读取 server/SAT。
|
|
109
|
+
`draftgo connect` 只保存并验证连接,不下载业务资源或创建本地镜像。MCP 不可用时运行 `draftgo mcp test` 收集证据。
|
|
145
110
|
|
|
146
|
-
##
|
|
111
|
+
## 安全
|
|
147
112
|
|
|
148
|
-
- stdio 只输出 MCP JSON-RPC
|
|
149
|
-
- 代理 initialize、tools/list、tools/call
|
|
150
|
-
- HTTP 401/403
|
|
151
|
-
- `.draftgo/config.json`、`.draftgo/worktree
|
|
152
|
-
- MCP 不可用时运行 `draftgo mcp test` 收集证据;不要读取旧索引作为替代事实来源。
|
|
113
|
+
- stdio stdout 只输出 MCP JSON-RPC;日志写 stderr,且不得包含 API Key。
|
|
114
|
+
- 代理 initialize、tools/list、tools/call、通知、取消、错误和流式响应,不改写底座结果。
|
|
115
|
+
- HTTP 401/403、协议错误和工具缺失必须清晰失败;输出前脱敏 API Key 与 Authorization。
|
|
116
|
+
- `.draftgo/config.json`、`.draftgo/api-contract-cache.json`、worktree 和 conflicts 都是私有运行时状态并应 gitignore。
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
read_when: 不确定 DraftGo 任务应使用 API/MCP 还是 checkout;需要 AIHub、数据、内容、自定义服务、诊断或交付的最短正确命令链时
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 极简方法指南
|
|
6
|
+
|
|
7
|
+
只使用本页列出的真实 CLI 命令。动态 operation、字段、权限和响应以当前服务器为准;不知道精确契约时统一执行:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
draftgo api search "<能力或资源>"
|
|
11
|
+
draftgo api describe <operation_id>
|
|
12
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
已有准确 `operation_id` 且缓存 revision 未变化时可跳过 search;describe 不完整时停止,不猜字段、operation ID 或 URL。`request.json` 必须是 UTF-8 JSON object,并按 describe 使用 `path`、`query`、`body` 或 `multipart` 容器。
|
|
16
|
+
|
|
17
|
+
所有 `--output json` 命令都将单一 UTF-8 JSON 写到 stdout,诊断写入 stderr。先选择摘要、精确筛选或分页,避免用终端截断处理大结果。
|
|
18
|
+
|
|
19
|
+
## AIHub
|
|
20
|
+
|
|
21
|
+
适用场景:查询或管理 Agent、模型、供应商、路由、Skill、Prompt,或验证一次 AI 调用。
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
draftgo api search "AIHub <agent|model|provider|route>"
|
|
25
|
+
draftgo api describe <operation_id>
|
|
26
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
27
|
+
draftgo api search "AI run logs"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
关键约束与失败定位:AIHub 是结构化远端资源,不 checkout;只传 describe 允许的字段。不得把 API Key、Authorization、供应商 header 或上游地址写入文件和日志。401/403 查登录、`aihub:*` 权限和资源调用策略;503 查模型路由、适配器与凭据是否就绪。
|
|
31
|
+
|
|
32
|
+
完成条件:写入后的目标 ID 可由 get/list operation 回读;任务涉及调用时,调用成功且 run 能按入口 Agent/模型或 request ID 定位。完整字段和编排规则再读 `aihub.md`。
|
|
33
|
+
|
|
34
|
+
## 知识库与记忆
|
|
35
|
+
|
|
36
|
+
适用场景:知识库、文档、Chunk、检索/重建,以及 Agent 长期记忆和作用域配置。
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
draftgo api search "knowledge base"
|
|
40
|
+
draftgo api search "agent memory"
|
|
41
|
+
draftgo api describe <operation_id>
|
|
42
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
关键约束与失败定位:知识库保存可检索资料,记忆保存运行时提炼结果,不能互相替代。知识库操作使用独立的 `knowledge:*`,不会继承 `aihub:*`。上传、检索、重建和记忆字段均以 describe 为准;没有专用 CLI 子命令。检索为空时依次核对文档状态、索引/重建结果、作用域和调用权限。
|
|
46
|
+
|
|
47
|
+
完成条件:目标资源可回读;任务涉及检索或记忆召回时,最小验证调用能返回预期范围的数据,且运行日志可关联。
|
|
48
|
+
|
|
49
|
+
## 统一权限与数据范围
|
|
50
|
+
|
|
51
|
+
适用场景:设计角色、组织授权、动态 DB CRUD、知识库或自定义服务的资源归属。
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
Role = 无作用域的权限模板
|
|
55
|
+
AccessGrant = 主体在哪个 platform/space 范围获得 Role
|
|
56
|
+
WorkspaceMember = 加入根工作区的关系,本身不授权
|
|
57
|
+
ResourceOwnership = 资源持久化归属,服务端最终判定边界
|
|
58
|
+
DataRange = 作用域内记录策略:none / own / all
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
platform AccessGrant 可跨空间,但只覆盖角色中显式列出的权限;space Grant 只能覆盖同根的 self/subtree。请求 header 只是候选上下文。
|
|
62
|
+
创建、读取、更新、删除都必须由服务端同时校验动作权限、持久化 ResourceOwnership 和 DataRange。
|
|
63
|
+
|
|
64
|
+
### 空间化最短流程
|
|
65
|
+
|
|
66
|
+
开始前只运行一次 `draftgo status` 确认连接健康和 API Key 当前范围;需要选择空间时再运行 `draftgo space list`。目标 operation 仍须以实时 `describe` 的 `permission`、`supported_scopes` 和 `ownership_mode` 为准。
|
|
67
|
+
|
|
68
|
+
| 场景 | 最短正确做法 |
|
|
69
|
+
|---|---|
|
|
70
|
+
| 单空间 | 固定使用该业务空间;调用输入传 `scope_type=space` 和目标 `space_id`。不为“方便”创建 platform Grant、子空间或用户组。 |
|
|
71
|
+
| 多空间 | 每次先确定目标空间,再以该 `space_id` 调用;切换空间后重新读取目标资源。不要缓存一个空间的资源 ID 后在另一个空间复用。 |
|
|
72
|
+
| 平台跨空间 | 仅当 operation 的实时契约支持 `platform`,且当前用户的 platform AccessGrant 明确包含所需 permission 时传 `scope_type=platform`。普通空间写入仍选择具体空间。 |
|
|
73
|
+
| 超级管理员普通使用 | 与普通用户相同,选择当前业务空间并传 `scope_type=space`。管理员身份不把资源改成 platform 归属,也不绕过 Authorizer、DataRange 或持久化 ownership。 |
|
|
74
|
+
|
|
75
|
+
空间调用输入只增加实时 MCP 支持的范围字段,其余容器仍按 `describe` 填写:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{"scope_type":"space","space_id":120,"path":{},"query":{},"body":{}}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
平台调用使用 `{"scope_type":"platform", ...}` 且不传 `space_id`。对已有资源的按 ID 操作,客户端选择的范围不能覆盖服务端已保存的 ResourceOwnership;403 时进入 `diagnostics.md`,不要改 ID 或扩大范围反复试探。
|
|
82
|
+
|
|
83
|
+
## 页面、导航与内容
|
|
84
|
+
|
|
85
|
+
适用场景:修改已有 page/navigation/article 完整正文,或创建后继续编辑正文。
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
draftgo map --type pages --route /admin/channel-ops --output json
|
|
89
|
+
draftgo checkout pages <id>
|
|
90
|
+
draftgo diff pages <id> --stat
|
|
91
|
+
draftgo verify pages <id>
|
|
92
|
+
draftgo commit pages <id>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
导航将 `pages` 换为 `nav`,文档文章换为 `docs`。`--route` 与 `--title` 均为精确匹配,同时给出时取交集;CLI 会先用资源搜索缩小候选,再在本地判定精确结果。只需确认范围、数量和 checkout 状态时使用 `map --summary`;必须浏览时使用 `--limit <1-100>`(默认 20),并仅在单一 `--type` 下用返回的 `--cursor <opaque>` 请求下一页。`map --summary` 不含 project overview、资源列表或 hash。`diff --stat` 显示文件与增删行数,`diff --summary` 显示资源、版本和变化概览;只有需要审查正文时才运行不带这两个参数的 `diff`。新资源先发现创建契约并取得 ID:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
draftgo api search "create <page|navigation|article>"
|
|
99
|
+
draftgo api describe <operation_id>
|
|
100
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
101
|
+
draftgo checkout <pages|nav|docs> <id>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
关键约束与失败定位:checkout 只处理已存在资源的完整正文,不负责创建。409/412 时停止提交,使用 `draftgo conflicts` 和 `draftgo conflict show <type> <id>` 检查保留的 base/local/remote;不要 force、覆盖或自动合并。
|
|
105
|
+
|
|
106
|
+
完成条件:commit 返回新版本/哈希,随后 `draftgo check --remote --output json` 显示本地基线与远端一致。正文和冲突细节再读 `checkout.md`,页面运行规则再读 `frontend.md`。
|
|
107
|
+
|
|
108
|
+
## 动态数据
|
|
109
|
+
|
|
110
|
+
适用场景:管理 `db_meta` schema、权限、关系,或查询/写入动态 DB 记录。
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
draftgo api search "db meta"
|
|
114
|
+
draftgo api describe <operation_id>
|
|
115
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
116
|
+
draftgo api search "dynamic db record"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
关键约束与失败定位:schema 和记录都是结构化远端资源,不 checkout。创建或更新 schema 后先回读目标 `type`,再按实时记录 operation 做最小 CRUD。400 优先核对 searchable、filter 操作符和字段容器;403 核对 `db_meta` permission 与记录 owner;列表不完整先核对分页,不用超大 page size 假装全量。
|
|
120
|
+
|
|
121
|
+
完成条件:schema 可按 `type` 回读,目标角色的最小 CRUD/筛选符合预期;批量写入还需验证失败时整批回滚。字段和关系规则再读 `data.md`。
|
|
122
|
+
|
|
123
|
+
## 自定义服务
|
|
124
|
+
|
|
125
|
+
适用场景:编写、保存、验证、试运行或发布 Go 自定义服务。
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
draftgo api search "custom service create"
|
|
129
|
+
draftgo api describe <operation_id>
|
|
130
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
131
|
+
draftgo checkout custom-services <id>
|
|
132
|
+
draftgo diff custom-services <id>
|
|
133
|
+
draftgo commit custom-services <id>
|
|
134
|
+
draftgo validate custom-services <id>
|
|
135
|
+
draftgo test custom-services <id> --source draft --handler route:POST:/path --input request.json
|
|
136
|
+
draftgo publish custom-services <id>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
关键约束与失败定位:自定义服务只有一种 Go `Register` 形态;后端从 `Register` 自动发现 Route/Event/Scheduled handler,不需要配置服务模式或 `triggers` 字段。worktree 只含 `service.go` 和 `service.json`,`go.mod/go.sum` 由 Runner 管理。`commit custom-services` 自动完成提交、验证和发布。余额、权益、支付和订阅使用 `ctx.Billing` / `ctx.Admin.Billing`,精确签名读 checkout 后的 `.draftgo-sdk/billing.go`,不要用动态 DB 自建账本。试运行默认拒绝副作用;真实写入必须显式使用 `--side-effect-policy live --test-write`。validate 失败查编译/Register/依赖;test 失败按 execution/request ID 查运行日志;revision 冲突停止重试。
|
|
140
|
+
|
|
141
|
+
完成条件:`commit custom-services` 返回 published 且 validate passed;需要运行行为证据时再要求 test success。完整 SDK、handler selector 和依赖规则再读 `custom-services.md`。
|
|
142
|
+
|
|
143
|
+
## MCP 与实时契约
|
|
144
|
+
|
|
145
|
+
适用场景:首次连接、宿主配置变化、工具不可用,或不知道 operation/schema。
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
draftgo mcp status
|
|
149
|
+
draftgo mcp test
|
|
150
|
+
draftgo api search "<业务能力>"
|
|
151
|
+
draftgo api describe <operation_id>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
关键约束与失败定位:已配置且健康时不必每个任务重复 setup/status/test。宿主配置只运行 `draftgo mcp serve`,不得保存 API Key。401/403 查用户 API Key 和 grant;session/uninitialized 重新建立连接;operation 不唯一时继续缩小 search;describe 缺字段、风险或响应契约时停止。
|
|
155
|
+
|
|
156
|
+
完成条件:initialize、tools/list、关键 tools/call 可用,目标 operation schema 已确认且可回读一次无副作用结果。完整缓存、风险和 multipart 规则再读 `mcp.md`。
|
|
157
|
+
|
|
158
|
+
## 运行诊断
|
|
159
|
+
|
|
160
|
+
适用场景:连接失败、API 调用失败、checkout 状态异常,或需要定位 AI/custom-service run。
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
draftgo mcp status
|
|
164
|
+
draftgo mcp test
|
|
165
|
+
draftgo map --type pages --summary --output json
|
|
166
|
+
draftgo check --remote --output json
|
|
167
|
+
draftgo api describe <operation_id>
|
|
168
|
+
draftgo api call <operation_id> --input request.json --output json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
关键约束与失败定位:只运行与故障层级相关的命令。保留脱敏的 `operation_id`、`status_code`、`server_code`、`request_id`;非幂等写失败后先回读状态,不自动重试。连接问题看 mcp test,正文版本看 check/conflicts,AI 与服务运行问题再 search 对应日志 operation。
|
|
172
|
+
|
|
173
|
+
完成条件:故障被定位到连接、契约、权限、资源版本、Runner 或业务运行中的一层,并有 request ID/run 等可关联证据。完整分流再读 `diagnostics.md`。
|
|
174
|
+
|
|
175
|
+
## 交付验收
|
|
176
|
+
|
|
177
|
+
适用场景:准备提交、发布、交付或关闭 worklog 项目。
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
draftgo verify
|
|
181
|
+
draftgo check --remote --output json
|
|
182
|
+
draftgo work complete <ref> --note "<结果与证据>"
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
正文资源在 complete 前还必须成功执行 `diff -> commit`;结构化资源必须 call 后回读;自定义服务按任务要求追加 validate/test/publish。默认不启动浏览器,只有用户明确要求视觉验收时才使用 `draftgo verify --url <url> --screenshot always`,需要 DOM/交互时再加 `--ui always`。
|
|
186
|
+
|
|
187
|
+
关键约束与失败定位:本地验证通过不等于已提交或已发布。任何 verify、commit、MCP 写入、必要 test/publish、回读或视觉验收失败时,工作项保持 active。
|
|
188
|
+
|
|
189
|
+
完成条件:全部目标远端状态可回读,正文版本/哈希或结构化状态符合预期,任务要求的运行/视觉证据齐全且不含凭据,然后才 complete。
|
|
@@ -11,22 +11,43 @@ read_when: 评估功能可行性时 · 选择开发路径时 · 进入新项目
|
|
|
11
11
|
| 页面 | 数据库 HTML(`page.value.html`) | 已有页面由 MCP 定位后 `checkout pages` / `commit pages`;新页面先按实时 API 契约创建并取得 ID |
|
|
12
12
|
| 导航栏 | 数据库 HTML(`navigation.html`) | MCP 定位,`checkout nav` / `commit nav` 编辑正文 |
|
|
13
13
|
| 动态 DB | db_meta 定义 schema 并操作结构化记录 | MCP `api_search` / `api_describe` / `api_call` |
|
|
14
|
-
|
|
|
14
|
+
| 文件资产 | 文件夹、文件元数据、绑定、下载、回收站和对象存储 | MCP 实时 API;文件字节不进入普通 tool result |
|
|
15
|
+
| 自定义服务 | 单一 Go `Register` 服务;后端从注册代码自动发现 Route/Event/Scheduled handler | MCP 定位/创建;正文用 `checkout custom-services` / `commit custom-services` |
|
|
15
16
|
| AIHub | 配置 AI Agent(模型/编排/能力/子智能体/记忆);页面对话使用 `<dg-chat>`,图片模式使用 `DraftGoAI.images`;见 `references/chat-sdk.md` 与 `references/aihub.md` | MCP 实时 API;不创建本地镜像 |
|
|
16
17
|
| 文档中心 | Markdown/HTML 文章 + 分类树 | 正文用 `checkout docs` / `commit docs`;分类用 MCP |
|
|
17
18
|
| 系统配置 | KV 存储,含全局前端层槽位 | MCP 实时 API;不创建本地镜像 |
|
|
19
|
+
| 商业与计费 | 账本、余额、权益、支付订单、退款、套餐、订阅和 AI 计费 | 管理任务用 MCP 实时 API;自定义服务用 `ctx.Billing` / `ctx.Admin.Billing`;不要用动态 DB 重建金钱状态 |
|
|
18
20
|
|
|
19
21
|
## 平台内置模块(开箱即用,不需实现)
|
|
20
22
|
|
|
21
23
|
| 模块 | 能力 | 调用方式 |
|
|
22
24
|
|---|---|---|
|
|
23
25
|
| 认证 | 注册/登录/刷新/找回密码/微信登录/手机邮箱验证 | 页面使用 `App`;服务端操作通过 MCP 实时描述接口 |
|
|
24
|
-
| 角色权限 |
|
|
26
|
+
| 角色权限 | 无作用域 Role 模板 + 带 `platform` / `space` 范围的 AccessGrant | 页面可用 `App.permissions` 辅助显隐;服务端按资源授权 |
|
|
27
|
+
| 工作区与空间 | 根工作区成员、用户组和递归 Space;成员关系本身不授权 | `App.scopeContext` + MCP space/group/grant operations;资源保存直接归属 |
|
|
28
|
+
| 动态数据范围 | `DataRange=none|own|all`,限制空间内的记录级访问 | db_meta 的记录策略;不替代 ResourceOwnership 或 AccessGrant |
|
|
25
29
|
| 通知公告 | 发布公告,支持类型/状态/分页 | MCP 实时 API |
|
|
26
30
|
| 工单反馈 | 用户提交问题,支持类型/状态跟踪 | MCP 实时 API |
|
|
27
31
|
| 备份恢复 | 完整/选择性备份,JSON/.dgbak 格式,支持 dry-run | MCP 实时 API |
|
|
28
32
|
| 系统管理 | 系统配置 KV、存储健康、全局前端层、通知测试 | MCP 实时 API |
|
|
29
33
|
|
|
34
|
+
`App.currentUser.role_code` 是展示投影,不是用户表中的可写字段。真正的资源/API 授权由服务端根据 ResourceOwnership 与有效 AccessGrant 决定;platform Grant 也只能使用角色中显式声明的权限。
|
|
35
|
+
|
|
36
|
+
用户 API Key 只是一种用户认证方式;它不改变 AccessGrant、ResourceOwnership、DataRange 或管理员边界。服务身份是平台运行时主体。
|
|
37
|
+
|
|
38
|
+
## 新模块权限接入检查表
|
|
39
|
+
|
|
40
|
+
AI 新建或扩展受保护模块时,按以下最小闭环逐项确认;缺少任一项都不能用页面显隐、角色名或调用来源补洞:
|
|
41
|
+
|
|
42
|
+
- [ ] 在统一 Permission Catalog 注册每个 `resource:action`,声明支持的 `platform` / `space` 范围以及是否使用 DataRange;不在模块内另建权限字符串或角色分支。
|
|
43
|
+
- [ ] 顶层资源持久化 canonical ResourceOwnership:platform,或完整的 `ownership_type=space + workspace_id + space_id`;需要 own/all 时同时保存 `owner_user_id`。子资源只能通过不可变父键继承归属。
|
|
44
|
+
- [ ] 创建和列表只接受服务端验证后的范围上下文;读取、更新、删除及其他按 ID 操作先加载持久化 ownership,忽略客户端提交的 workspace、space、owner 或调用者替代值。
|
|
45
|
+
- [ ] 使用统一 Authorizer 校验真实 Principal、Catalog permission 和持久化 ResourceOwnership;执行记录级操作时继续应用返回的 DataRange,不能把 `all` 解释为跨工作区。
|
|
46
|
+
- [ ] HTTP、MCP、SDK、Route、Event、Schedule 和 worker 等所有实际入口复用同一授权路径;TokenScope 只能对最终权限取交集并收窄。
|
|
47
|
+
- [ ] 保留最小拒绝证据:无 Grant、space Grant 跨根、伪造归属;支持 own/all 时再覆盖他人记录拒绝。不要为同一规则复制一套测试框架。
|
|
48
|
+
|
|
49
|
+
实现位置和具体 API 以目标 DraftGo 服务端仓库的现有 Catalog、ResourceOwnership 与 WorkspaceAuthorizer 模式为准;本 Skill 不复制服务端动态 schema。
|
|
50
|
+
|
|
30
51
|
## 模块选型决策
|
|
31
52
|
|
|
32
53
|
```
|
|
@@ -34,20 +55,27 @@ read_when: 评估功能可行性时 · 选择开发路径时 · 进入新项目
|
|
|
34
55
|
→ 有固定结构 → 动态 DB(db_meta 定义 schema)
|
|
35
56
|
→ 仅需 KV → sys_config(category 自定义)
|
|
36
57
|
|
|
58
|
+
要保存文件?
|
|
59
|
+
→ 文件夹、上传、下载、回收站或业务绑定 → 文件资产模块;不要把文件字节塞进动态 DB
|
|
60
|
+
|
|
61
|
+
要做余额、支付、会员或订阅?
|
|
62
|
+
→ 管理操作走 money/payment/subscription/billing 的 MCP 实时契约;自定义服务读 `.draftgo-sdk/billing.go` 并使用 Billing SDK,不自行实现账本或扣费一致性
|
|
63
|
+
|
|
37
64
|
要调用 AI?
|
|
38
65
|
→ 聊天/问答 UI → AIHub + `<dg-chat>`(自动隔离 thread/session)
|
|
39
66
|
→ 无 UI 的旧代码文本调用 → AIHub + DraftGoAI.chat()(兼容门面)
|
|
40
67
|
→ 图片生成 → AIHub + DraftGoAI.images()
|
|
68
|
+
→ Responses、Embedding、Rerank、TTS、ASR 或 Video → AIHub capability 与 provider readiness;先确认模型的 canonical capability 和 transport
|
|
41
69
|
→ 需要工具/子智能体/记忆/结构化输出/多模态 → 都是 Agent spec 开关,见 references/aihub.md
|
|
42
70
|
|
|
43
71
|
要调用第三方服务?
|
|
44
|
-
→ 自定义服务(用 `
|
|
72
|
+
→ 自定义服务(用 `ctx.HTTP` 请求;在同一 Go 服务中按需注册 Route/Event/Scheduled handler)
|
|
45
73
|
|
|
46
74
|
要展示内容文档?
|
|
47
75
|
→ 文档中心(Markdown + 分类树)
|
|
48
76
|
|
|
49
77
|
要做定时任务或事件响应?
|
|
50
|
-
→
|
|
78
|
+
→ 自定义服务(用 `app.Schedule` / `app.On` 注册;后端自动识别定时任务和事件 handler)
|
|
51
79
|
|
|
52
80
|
要做后台管理页?
|
|
53
81
|
→ 业务页面 + 动态 DB + 角色权限
|
|
@@ -56,11 +84,11 @@ read_when: 评估功能可行性时 · 选择开发路径时 · 进入新项目
|
|
|
56
84
|
## 自定义服务边界
|
|
57
85
|
|
|
58
86
|
- 新服务使用 Go `Register(app *sdk.App)` 自动注册路由、事件和定时任务;完整语言、`draftgo` 和 SDK 契约见 `references/custom-services.md`。
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
61
|
-
- `
|
|
87
|
+
- `Route`:对外暴露 HTTP 端点;同一 Go 服务可用多个 `app.Route(method, path, handler)` 注册多个端点,实际路径通过 MCP 实时发现,草稿行为先用 `draftgo test custom-services` 验证。
|
|
88
|
+
- `Event`:响应平台事件,如 `db.created` / `db.updated` / `user.registered`;用 `app.On(event, handler)` 注册,可为同一事件注册多个 handler。
|
|
89
|
+
- `Scheduled`:用 `app.Schedule("分 时 日 月 周", handler)` 注册 cron;同一服务可声明多个定时 handler。
|
|
62
90
|
- 新 Go 服务的 `Register` 是唯一触发器事实来源;旧 `triggers` 字段不参与注册。
|
|
63
91
|
- 管理面由角色 RBAC 的 `scripts:*` 动作控制;Route 调用面继续由每个服务的 `permission` / `route_security` 独立控制,不要把两层权限混为一谈。
|
|
64
92
|
- Go 服务在独立子进程中构建/运行;只有可信角色才能获得 `scripts:create` / `scripts:update`。
|
|
65
93
|
- 自定义服务适合服务端加工、鉴权后聚合、第三方回调、定时任务和事件响应;普通 CRUD 管理界面优先用“页面 + 动态 DB”,不要把所有业务后台都塞进 route 脚本。
|
|
66
|
-
- 脚本内读动态 DB 用 `
|
|
94
|
+
- 脚本内读动态 DB 用 `ctx.DB.Query(type, sdk.QueryOptions{...})`;返回 `sdk.QueryResult`,分页和筛选见 `references/custom-services.md`。
|
|
@@ -35,7 +35,7 @@ read_when: 需要理解运行时机制时 · 处理 token/路由/事件相关问
|
|
|
35
35
|
|
|
36
36
|
壳层将 `app` 对象赋值给 `window.App`,页面通过 `window.parent.App` 访问。
|
|
37
37
|
|
|
38
|
-
`app` 组成:`api.js`(请求)+ `feedback.js`(弹窗/Toast)+ `runtime.js
|
|
38
|
+
`app` 组成:`api.js`(请求)+ `feedback.js`(弹窗/Toast)+ `runtime.js`(路由/主题/作用域)+ `i18n.js`(国际化)+ state(currentUser/isAdmin/config/theme/scopeContext)
|
|
39
39
|
|
|
40
40
|
完整 API 见 `references/app-api.md`
|
|
41
41
|
|
|
@@ -94,11 +94,34 @@ const orderId = query.orderId; // "42"
|
|
|
94
94
|
|
|
95
95
|
### 修改方法
|
|
96
96
|
|
|
97
|
-
system_config
|
|
98
|
-
|
|
97
|
+
system_config 是结构化远端资源。未知 operation 才通过 MCP `draftgo_api_search` 定位;首次使用或
|
|
98
|
+
registry revision 变化时 `draftgo_api_describe`,再用 `draftgo_api_call` 读取并更新目标键;不要 checkout
|
|
99
|
+
或维护本地索引。
|
|
99
100
|
|
|
100
101
|
前端全局层是系统默认配置。更新现有全局配置时只发送 `config_value`;不要带 `description`、`category`、
|
|
101
102
|
`value_type`、`status` 等元信息,避免触发“系统默认字段不允许修改字段描述/分类/状态”。
|
|
102
103
|
|
|
103
104
|
页面管理中 Toast 时长以秒输入,`sys_config` 中仍以毫秒存储。例如 UI 中
|
|
104
105
|
`错误 Toast 时长(s) = 4.5` 对应 `frontend_global_toast_duration_error.config_value = 4500`。
|
|
106
|
+
|
|
107
|
+
## 统一作用域
|
|
108
|
+
|
|
109
|
+
DraftGo 的资源归属和授权范围只有 `platform`、`space`。`Role` 是无作用域权限模板;`AccessGrant`
|
|
110
|
+
定义 user/group/service 主体在哪个范围拥有该角色。工作区成员与用户组成员关系本身不授予权限。
|
|
111
|
+
|
|
112
|
+
`platform` Grant 可跨全部空间,但只能使用 Role 中显式列出的权限。`space` Grant 仅覆盖同一根工作区内的
|
|
113
|
+
目标空间或 subtree;所有授权为 allow-only 并集,DataRange 使用 `all > own > none`。
|
|
114
|
+
|
|
115
|
+
页面需要切换工作范围时使用 `App.getScopeContext()`、`App.setScopeContext(context)`,不要把
|
|
116
|
+
space id 当作自定义权限判断。上下文只是请求意图,服务端仍以持久化 `ResourceOwnership` 和有效 AccessGrant 为准。
|
|
117
|
+
API 请求只使用 `X-DraftGo-Scope-Type` 与 `X-DraftGo-Space-Id`;workspace_id 由服务端推导。
|
|
118
|
+
|
|
119
|
+
动态 DB 的 `DataRange`(数据库元数据中的记录策略)是另一层:`none` 拒绝动作,`owner` 仅允许当前
|
|
120
|
+
所有者记录,`all` 允许当前 ResourceOwnership 内全部记录。它不能扩大 `platform` / `space` 范围;
|
|
121
|
+
不要把 `all` 解释成跨工作区。记录的 `userid` 是当前兼容实现的所有者字段,`created_by` / 独立
|
|
122
|
+
`owner_user_id` 只有在服务端契约明确提供后才能使用。
|
|
123
|
+
|
|
124
|
+
认证边界:交互式 CLI、MCP 和普通 HTTP API 使用当前用户的 API Key;该凭据始终代表该用户,权限来自
|
|
125
|
+
用户及用户组的 AccessGrant,TokenScope 只能收窄,不能变成管理员或服务身份。CI、定时任务和共享服务等
|
|
126
|
+
无人值守自动化使用平台的独立服务凭据通道;service principal 由平台内部注入,CLI 不生成、导出或伪造
|
|
127
|
+
服务身份凭据。
|
|
@@ -110,9 +110,8 @@ now:
|
|
|
110
110
|
- MCP resource_search/get_metadata → 页面与导航元数据(跳过 tag="系统" 的内置页)
|
|
111
111
|
- MCP api_search/api_describe/api_call → db_meta 与自定义服务结构
|
|
112
112
|
- 只有必须分析完整 pages/nav/docs 正文时才 checkout;不要要求 MCP 返回全文
|
|
113
|
-
- .draftgo/
|
|
113
|
+
- .draftgo/worklog.md → 工作进度与完成记录
|
|
114
114
|
- .draftgo/lessons/ → 开发经验记录
|
|
115
|
-
- .draftgo/Task/ → 历史任务文档
|
|
116
115
|
- 用户提供的设计文档(PRD / 原型说明 / 需求文档)→ 提取产品意图
|
|
117
116
|
|
|
118
117
|
2. 从已有数据推断系统画像,生成推断版 Story(含 design.overview 和 modules)
|