draftgo-cli 3.0.35 → 3.0.38
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 +220 -272
- package/package.json +6 -2
- package/resources/skill/SKILL.md +114 -55
- package/resources/skill/init/SKILL.md +29 -15
- package/resources/skill/manifest.json +5 -4
- package/resources/skill/push/SKILL.md +41 -29
- package/resources/skill/references/aihub.md +8 -5
- package/resources/skill/references/api-endpoints.md +5 -3
- package/resources/skill/references/architecture.md +1 -1
- package/resources/skill/references/checkout.md +116 -0
- package/resources/skill/references/custom-services.md +9 -10
- package/resources/skill/references/data.md +4 -2
- package/resources/skill/references/frontend.md +1 -1
- package/resources/skill/references/mcp.md +101 -0
- package/resources/skill/references/modules.md +8 -8
- package/resources/skill/references/parallel.md +6 -3
- package/resources/skill/references/runtime.md +7 -10
- package/resources/skill/scripts/README.md +8 -0
- package/resources/skill/story/SKILL.md +8 -8
- package/src/cli.js +5 -0
- package/src/commandRegistry.js +7 -1
- package/src/commands/api.js +24 -187
- package/src/commands/autoPush.js +48 -17
- package/src/commands/check.js +17 -47
- package/src/commands/checkout.js +18 -0
- package/src/commands/commit.js +21 -0
- package/src/commands/conflict.js +30 -0
- package/src/commands/conflicts.js +16 -0
- package/src/commands/connect.js +60 -48
- package/src/commands/delete.js +79 -64
- package/src/commands/deploy.js +18 -10
- package/src/commands/diff.js +23 -0
- package/src/commands/help.js +99 -75
- package/src/commands/init.js +4 -10
- package/src/commands/local.js +23 -6
- package/src/commands/map.js +89 -89
- package/src/commands/mcp.js +126 -0
- package/src/commands/sync.js +28 -43
- package/src/commands/verifyUi.js +3 -2
- package/src/localdev/index.js +37 -7
- package/src/localdev/mysqlClient.js +1 -1
- package/src/mcp/client.js +275 -0
- package/src/mcp/hosts.js +520 -0
- package/src/mcp/protocol.js +173 -0
- package/src/mcp/stdio.js +300 -0
- package/src/mcp/tools.js +37 -0
- package/src/platforms.js +3 -4
- package/src/projectConfig.js +91 -49
- package/src/projectMap.js +123 -460
- package/src/skill.js +6 -28
- package/src/worktree/backend.js +250 -0
- package/src/worktree/errors.js +28 -0
- package/src/worktree/index.js +461 -0
- package/src/worktree/manifest.js +75 -0
- package/src/worktree/streams.js +200 -0
- package/src/worktree/types.js +103 -0
- package/src/worktree/validate.js +37 -0
- package/resources/skill/pull/SKILL.md +0 -33
- package/resources/skill/references/api.json +0 -20248
- package/resources/skill/scripts/draftgo_delete.py +0 -149
- package/resources/skill/scripts/draftgo_init.py +0 -80
- package/resources/skill/scripts/draftgo_pull.py +0 -427
- package/resources/skill/scripts/draftgo_push.py +0 -1022
- package/src/python.js +0 -27
package/resources/skill/SKILL.md
CHANGED
|
@@ -1,77 +1,136 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: draftgo
|
|
3
|
-
description: Use this skill
|
|
3
|
+
description: Use this skill before inspecting, developing, maintaining, debugging, or delivering a DraftGo application. It covers project/page/navigation inventories, business-page classification, frontend/static-asset questions, long-form docs, dynamic data, custom services, AIHub, MCP integrations, and local runtime. Read the relevant bundled reference before calling DraftGo MCP; use MCP for live state and checkout/commit for complete page/nav/docs bodies.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# DraftGo 开发助手
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## 核心边界
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
2. **确定共享契约**:从当前 `db_meta`、底座 API、自定义服务、权限、路由和导航中确认被多个资源共同依赖的契约,再展开依赖它们的实现。
|
|
12
|
-
3. **并行独立资源**:按依赖关系划分 wave。独立页面、管理页、文档和服务并行处理;共享 schema、导航、HTML 文件或调用链按依赖顺序处理。每个工作单元携带资源范围和验证方式,交付动作由汇总阶段统一执行。具体字段见 `references/parallel.md`。
|
|
13
|
-
4. **汇总接线**:连接入口、页面跳转、真实数据读写、角色可见性、加载/空/错误/成功状态和运营维护路径,随后回放关键用户路径。
|
|
14
|
-
5. **验证与交付**:按资源类型取得证据。完成本地验证后,根据用户交付意图或项目自动同步配置执行 `push`、`deploy` 或 `auto-push`。
|
|
10
|
+
DraftGo CLI 是工作区工具,不是全量云端镜像器。
|
|
15
11
|
|
|
16
|
-
|
|
12
|
+
- 用 DraftGo MCP 查询实时资源、API 契约、权限和结构化数据。
|
|
13
|
+
- 只对 pages、nav/navigations 和 docs/articles 的长正文使用 checkout、本地编辑和 commit。
|
|
14
|
+
- 完整 HTML、Markdown 或其他长正文不得作为 MCP 工具参数或 MCP 上下文传输;使用 CLI 的专用 HTTP 流式通道。
|
|
15
|
+
- MCP 不可用时报告连接、协议或 SAT 问题;不得自动回退到 pull --all 或旧索引镜像。
|
|
16
|
+
- 本地 Docker、MySQL、Redis、Milvus 和 draftgo local ... 能力与 MCP 工作流相互独立,必须保留。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
## 强制预读:Reference 优先于 MCP
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
根 `SKILL.md` 会在 Skill 触发时自动加载。调用任何 DraftGo MCP 工具、`draftgo mcp test`、`draftgo map` 或 checkout 前,先按任务路由读取下表中相关的 `references/`;不得仅凭 MCP 的元数据推断产品规则、模块归属或前端能力。前端任务的共同规则:任何页面或导航的分析、修改、交互和 UI 任务都先读 `references/frontend.md`;涉及路由、会话、`App` API、iframe/全局注入或运行时行为时加读 `references/runtime.md`;涉及外部资产/CDN、认证、用户输入或不可信内容、敏感数据或配置时加读 `references/security.md`。静态资源只是该规则的一种专门场景。对于较长 reference,先用 `rg -n` 定位指定标题,再读取该节及其明确要求的安全或运行时约束;不要无目的地加载整份资料。
|
|
21
|
+
|
|
22
|
+
| 用户问题或任务 | MCP 前必须读取的 Skill 材料 | 然后才可取得的实时证据 |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| 页面/导航清单、路由、业务页面与平台页面的区分 | `references/architecture.md`、`references/modules.md`;存在 `.draftgo/story.yaml` 时一并读取 | MCP `project_overview`、`resource_list`/`resource_search`、按需 metadata;仅在元数据或现有资源关系明确归属或系统标记时定性,否则报告“无法从可用证据确认”,不要以标题、路径或正文片段猜测业务属性 |
|
|
25
|
+
| 页面或导航的分析、修改、交互和 UI | `references/architecture.md`、`references/frontend.md` 的相关页面/导航规则;按上述共同规则追加 `references/runtime.md` 或 `references/security.md` | MCP 定位后 checkout,再在 worktree 读取完整正文 |
|
|
26
|
+
| 平台内置前端静态资源、组件库或可用资源目录 | `references/frontend.md` 的“前端底座与组件库清单”和“本地静态资源清单”章节;涉及外部资产/CDN 或安全要求时加读 `references/security.md` | 直接根据 reference 回答并标为 Skill 提供的能力;无需 MCP,不能声称这是服务器完整文件清单 |
|
|
27
|
+
| 指定页面/导航的脚本、样式或资源依赖 | `references/architecture.md`、`references/frontend.md` 的相关资源规则、`references/checkout.md`;按上述共同规则追加 `references/runtime.md` 或 `references/security.md` | MCP 定位指定资源后 checkout,再在 worktree 本地搜索精确引用 |
|
|
28
|
+
| 服务器实际全部静态文件清单 | `references/frontend.md` 的能力边界;只有平台明确暴露静态文件 API 时再读 `references/mcp.md` | 当前 Skill、MCP 元数据和 checkout 都不能证明完整服务器目录;明确说明证据不足,只有已暴露的实时 API 才可查询 |
|
|
29
|
+
| 动态 DB、筛选、字段或数据关系 | `references/modules.md`、`references/data.md`;需要关系时加读 `references/db-relations.md` | MCP `api_describe`、`api_call` |
|
|
30
|
+
| AIHub、聊天或图像能力 | `references/aihub.md` 与 `references/chat-sdk.md` | MCP 实时 API/语义工具 |
|
|
31
|
+
| 自定义服务、权限或外部调用 | `references/custom-services.md` 与 `references/security.md` | MCP 实时 API;必要时真实健康检查 |
|
|
32
|
+
| MCP 配置、连接或工具故障 | `references/mcp.md` | `draftgo mcp status`、`draftgo mcp test` |
|
|
33
|
+
| pages/nav/docs 全文编辑或完整依赖分析 | `references/checkout.md`,以及上表相应领域资料 | MCP 元数据后 `draftgo checkout`;完整正文不通过 MCP 获取 |
|
|
34
|
+
|
|
35
|
+
汇报时明确区分三类证据:Skill 给出的产品约束和内置能力、MCP 返回的当前远端状态、以及 checkout 正文中确认的精确页面依赖。不能把其中任一类冒充为另一类。例如,Skill 列出的 `/assets/` 能力不是当前服务器文件清单,MCP 的页面摘要也不是完整 HTML 依赖清单。最终答复列出具体已读取的 reference,不能只笼统声称“已读 Skill”。
|
|
36
|
+
|
|
37
|
+
## 标准工作流
|
|
38
|
+
|
|
39
|
+
### 项目清点与陌生项目
|
|
40
|
+
|
|
41
|
+
1. 先按上表读取领域 reference。仅需判断页面、导航、业务模块或静态资产时,不要跳过此步。
|
|
42
|
+
2. 若需要当前远端状态,通过 MCP 的 `project_overview`、`resource_search`/`resource_list` 获取摘要。
|
|
43
|
+
3. 只按需调用 describe 或元数据工具;不要为了建立上下文下载所有正文。
|
|
44
|
+
4. 运行 `draftgo map` 叠加本地 checkout 状态,再决定资源范围。
|
|
45
|
+
5. `draftgo mcp test` 只用于 connect 后验证、配置变更或 MCP 调用失败后的诊断;普通资源查询不应先执行它。
|
|
46
|
+
|
|
47
|
+
### 页面、导航和文档正文
|
|
48
|
+
|
|
49
|
+
1. 通过 MCP 定位资源并取得元数据、content_type、版本和哈希。
|
|
50
|
+
2. 运行 draftgo checkout pages <id...>、draftgo checkout nav <id...> 或 draftgo checkout docs <id...>。
|
|
51
|
+
3. 读取、搜索和编辑 .draftgo/worktree/ 中的正式文件;保留原始内容类型和编码。
|
|
52
|
+
4. 运行 draftgo check,页面布局或交互变化时再运行 draftgo verify-ui。
|
|
53
|
+
5. 用 draftgo diff <type> <id> 检查 base 与 local 差异。
|
|
54
|
+
6. 运行对应的 draftgo commit ...。提交遇到 409/412 时停止,保留冲突材料并等待 Agent 或用户解决。
|
|
55
|
+
|
|
56
|
+
详细 manifest、扩展名、哈希和冲突规则见 references/checkout.md。
|
|
57
|
+
|
|
58
|
+
### 只查询长内容
|
|
59
|
+
|
|
60
|
+
优先使用 MCP 的 search、fragment 或摘要工具。只有需要全文分析或编辑时才 checkout;不要要求 MCP 返回完整正文。
|
|
61
|
+
|
|
62
|
+
### 结构化资源
|
|
63
|
+
|
|
64
|
+
db_meta、AIHub、system_config、roles、users、doc_categories、普通配置和自定义服务元数据直接使用 MCP 的 api_search、api_describe、api_call 或语义化工具。
|
|
65
|
+
|
|
66
|
+
不要为这些资源创建全量本地镜像,也不要读取旧 .draftgo/*/index.json 作为事实来源。领域 schema、权限和实践约束仍可从本 Skill 的 references 读取。
|
|
67
|
+
|
|
68
|
+
## CLI 场景路由
|
|
69
|
+
|
|
70
|
+
| 场景 | 动作 |
|
|
21
71
|
|---|---|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
| 动态 DB、filters 或 order_by | 先读对应 `db_meta` schema 和 `references/data.md`。 |
|
|
33
|
-
| DraftGo 底座 API | 运行 `draftgo api <keyword>`,确认请求字段、响应结构和鉴权。 |
|
|
34
|
-
| 自定义服务 | 读取 `references/custom-services.md`;其中包含 AIHub、知识库、Memory、Skill/MCP 的完整 Go SDK;端点从 `slug + app.Route` 推导为 `/api/x/<slug><route-path>`。 |
|
|
35
|
-
| App 对象方法 | 读取 `references/app-api.md`。 |
|
|
36
|
-
| AI Agent(配置、调用、工具/子智能体/记忆/持续对话、观测) | 读取 `references/aihub.md`;页面对话 UI、协议、事件与扩展读取 `references/chat-sdk.md`;App 与旧兼容门面见 `references/app-api.md`。 |
|
|
37
|
-
| 平台架构、能力边界或安全限制 | 读取 `references/architecture.md`、`references/modules.md` 或 `references/security.md`。 |
|
|
38
|
-
| 同步已确认的本地改动 | 使用 `push/SKILL.md`,运行 `draftgo push <type> [id...]`。 |
|
|
39
|
-
| 交付前需要结构检查或预演 | 运行 `draftgo deploy [type] [id...] --delivery local\|preview\|deploy`。 |
|
|
40
|
-
| 项目明确启用自动同步 | 运行 `draftgo auto-push [type] [id...]`;批量资源使用 `--batch`,未启用 `config.auto_push` 时命令只检查并跳过推送。 |
|
|
41
|
-
| 项目已有 `.draftgo/story.yaml`,且请求可能改变产品定位或既有决定 | 读取并检查冲突;需要新建或维护 Story 时调用 `story/SKILL.md`。 |
|
|
72
|
+
| 安装、更新、移除 Skill | draftgo init [target...]、draftgo update [target...]、draftgo uninstall <target\|all> |
|
|
73
|
+
| 查看宿主和 MCP 状态 | draftgo status、draftgo list-targets、draftgo mcp status |
|
|
74
|
+
| 配置或诊断 MCP | draftgo mcp setup [target...]、draftgo mcp test;细节见 references/mcp.md |
|
|
75
|
+
| 连接基座 | draftgo connect;保存 server/SAT、验证 /mcp 和关键工具,不拉取业务资源 |
|
|
76
|
+
| 本地基座 | draftgo local setup,然后 draftgo local start/stop/logs/status;兼容 local-dev、local up/down |
|
|
77
|
+
| 远端摘要或资源定位 | MCP project_overview、resource_search、resource_list、按需 metadata 工具 |
|
|
78
|
+
| 页面、导航、文档正文 | checkout → 本地编辑 → check/verify-ui → diff → commit |
|
|
79
|
+
| 结构化资源读写 | MCP api_search、api_describe、api_call 或语义化工具 |
|
|
80
|
+
| 删除资源 | 使用实时 MCP/API 删除;不得从本地旧索引推断目标或清理正文 |
|
|
81
|
+
| 兼容旧命令 | draftgo pull 只显示迁移提示并返回非零;draftgo push pages/nav/docs 显示弃用提示后转发到 commit。其他 push 类型引导使用 MCP。 |
|
|
42
82
|
|
|
43
83
|
## DraftGo 契约
|
|
44
84
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
85
|
+
- 响应信封:调用实时 API 时先检查 code === 200,再读取 data;MCP 的结构化错误原样保留。
|
|
86
|
+
- 分页:需要完整候选集时省略 page 和 page_size;真实分页列表同时传入二者。
|
|
87
|
+
- 时间:展示按用户/浏览器时区;存储、统计、定时和自然日边界按 system_timezone 计算。
|
|
88
|
+
- 数据 schema:优先通过 MCP api_describe 获取字段、类型、必填、searchable、操作符和权限;详细关系见 references/data.md 与 references/db-relations.md。
|
|
89
|
+
- 自定义服务:使用 package main、Register(app *sdk.App) 和 handler(draftgo *sdk.Context);Route 权限与脚本管理权限是两层独立控制。完整 SDK 见 references/custom-services.md。
|
|
90
|
+
- 系统资源:登录、设置、权限、用户和系统配置属于基座资源;修改前确认影响范围并保留原有系统能力。
|
|
51
91
|
|
|
52
|
-
##
|
|
92
|
+
## 安全规则
|
|
93
|
+
|
|
94
|
+
- SAT 只保存在项目 .draftgo/config.json 中;不要写入 AI 宿主配置、命令行参数、Skill 文本、日志、manifest 或错误消息。
|
|
95
|
+
- MCP stdio bridge 从当前项目安全读取 server/SAT;宿主配置只写 draftgo mcp serve,不写远端 URL 或令牌。
|
|
96
|
+
- 不要把完整 HTML/Markdown 放进 MCP tool result、tool 参数、聊天上下文、日志或冲突 JSON;长正文只在 CLI 专用 HTTP 流中处理。
|
|
97
|
+
- 不要隐式 force、自动重试覆盖或自动合并冲突。draftgo conflict resolve 必须由 Agent/用户明确选择后执行。
|
|
98
|
+
- 旧 .draftgo 缓存视为 legacy 数据,不自动删除,也不再作为事实来源;给出清晰迁移提示。
|
|
99
|
+
- 资源权限、管理员 SDK 调用和自定义服务审计规则见 references/security.md 与 references/custom-services.md。
|
|
100
|
+
|
|
101
|
+
## 验证与交付
|
|
53
102
|
|
|
54
103
|
| 资源 | 证据 |
|
|
55
104
|
|---|---|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
| 自定义服务 |
|
|
60
|
-
|
|
|
105
|
+
| MCP 连接 | draftgo mcp test 的 initialize、tools/list 和关键工具结果;SAT 不出现在输出 |
|
|
106
|
+
| 页面、导航、文档 | checkout manifest、draftgo check、必要时 verify-ui、diff、commit 回读版本和哈希 |
|
|
107
|
+
| 结构化资源 | MCP 请求与回读的字段、权限、错误和副作用证据 |
|
|
108
|
+
| 自定义服务 | Route 或无副作用健康端点的状态码和响应;管理员调用确认审计 |
|
|
109
|
+
| 冲突 | .draftgo/conflicts/ 中的 base/local/remote 和 manifest;解决后重新 check/verify-ui/commit |
|
|
110
|
+
| 本地底座 | draftgo local status、日志和既有 local-dev 测试 |
|
|
111
|
+
|
|
112
|
+
draftgo deploy、auto-push 等旧交付入口必须遵循当前 CLI 的 commit 语义;不把它们当作旧全量 push 的回退路径。
|
|
113
|
+
|
|
114
|
+
## 参考路由
|
|
61
115
|
|
|
62
|
-
|
|
116
|
+
- MCP、宿主配置和 bridge:references/mcp.md
|
|
117
|
+
- checkout、commit、manifest 和冲突:references/checkout.md
|
|
118
|
+
- 架构和模块边界:references/architecture.md、references/modules.md
|
|
119
|
+
- 前端页面和组件:references/frontend.md、references/ui-protocol.md、references/debugging-syntax.md
|
|
120
|
+
- App、运行时和数据:references/app-api.md、references/runtime.md、references/data.md、references/db-relations.md
|
|
121
|
+
- AIHub、聊天和自定义服务:references/aihub.md、references/chat-sdk.md、references/custom-services.md
|
|
122
|
+
- 安全和并行执行:references/security.md、references/parallel.md
|
|
123
|
+
- 产品决策:story/SKILL.md
|
|
63
124
|
|
|
64
|
-
##
|
|
125
|
+
## 本地工作区
|
|
65
126
|
|
|
66
|
-
| 路径 |
|
|
127
|
+
| 路径 | 用途 |
|
|
67
128
|
|---|---|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
| `.draftgo/roles/`、`.draftgo/users/` | 角色与用户 |
|
|
77
|
-
| `.draftgo/story.yaml` | 产品身份、设计和长期决策 |
|
|
129
|
+
| .draftgo/config.json | server、SAT 和 CLI 项目设置;必须 gitignore |
|
|
130
|
+
| .draftgo/worktree/pages/ | 已 checkout 的页面正文 |
|
|
131
|
+
| .draftgo/worktree/navigations/ | 已 checkout 的导航正文 |
|
|
132
|
+
| .draftgo/worktree/docs/ | 已 checkout 的文档正文 |
|
|
133
|
+
| .draftgo/worktree/.base/ | checkout 时保存的 base;必须 gitignore |
|
|
134
|
+
| .draftgo/conflicts/ | 409/412 冲突材料;必须 gitignore |
|
|
135
|
+
| .draftgo/worktree/manifest.json | checkout 的版本、路径、内容类型和哈希;必须 gitignore |
|
|
136
|
+
| .draftgo/story.yaml、Task/、lessons/、changelog.md | 项目决策、任务和经验;按项目策略保留 |
|
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: draftgo-init
|
|
3
|
-
description: Install or refresh the DraftGo skill
|
|
3
|
+
description: Install or refresh the DraftGo skill, connect a project to a DraftGo base, and configure or diagnose its project-level MCP host integration.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# DraftGo 初始化
|
|
7
7
|
|
|
8
|
-
使用公开 CLI
|
|
8
|
+
使用公开 CLI 完成安装和连接;不要直接调用已删除的同步脚本,也不要创建全量业务镜像。
|
|
9
9
|
|
|
10
10
|
## 执行
|
|
11
11
|
|
|
12
|
-
1. 运行
|
|
13
|
-
2.
|
|
14
|
-
3. 尚未安装时运行
|
|
15
|
-
4. 已安装但需要刷新时运行
|
|
16
|
-
5. 项目缺少
|
|
17
|
-
- 已有 DraftGo 服务器:运行
|
|
18
|
-
- 需要本地 Docker 基座:运行
|
|
19
|
-
6.
|
|
12
|
+
1. 运行 draftgo status 查看已安装目标、Skill 版本和项目连接状态。
|
|
13
|
+
2. 需要查看宿主能力时运行 draftgo list-targets;不要假设每个宿主都支持项目级 MCP。
|
|
14
|
+
3. 尚未安装时运行 draftgo init [target...];不指定 target 时由 CLI 自动识别。
|
|
15
|
+
4. 已安装但需要刷新时运行 draftgo update [target...]。
|
|
16
|
+
5. 项目缺少 .draftgo/config.json 时选择基座:
|
|
17
|
+
- 已有 DraftGo 服务器:运行 draftgo connect。
|
|
18
|
+
- 需要本地 Docker 基座:运行 draftgo local setup。
|
|
19
|
+
6. 连接后运行 draftgo mcp setup(或指定目标),再运行 draftgo mcp test 验证 initialize、tools/list 和关键工具。
|
|
20
|
+
7. 运行 draftgo map 获取远端摘要和本地 checkout 状态;MCP 不可用时报告原因,不回退到 pull --all。
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
draftgo init 只负责 Skill 安装;draftgo connect 负责保存并验证 server/SAT;draftgo mcp setup 负责宿主配置。不要混用职责。
|
|
23
|
+
|
|
24
|
+
## SAT 与配置
|
|
25
|
+
|
|
26
|
+
- 交互式连接应使用隐藏输入;不要把 SAT 写入宿主配置、Skill 文件、命令行示例或日志。
|
|
27
|
+
- .draftgo/config.json、checkout manifest、base 和冲突目录必须加入项目 .gitignore。
|
|
28
|
+
- bridge 从当前项目配置读取 SAT;宿主配置只引用 draftgo mcp serve。
|
|
29
|
+
- 旧 .draftgo 缓存不自动删除。把它当作 legacy 数据,提示用户使用 MCP 或 checkout 重新建立上下文。
|
|
22
30
|
|
|
23
31
|
## 后续动作
|
|
24
32
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
33
|
+
- 宿主配置和诊断:draftgo mcp setup/status/test,详见 ../references/mcp.md。
|
|
34
|
+
- 远端资源摘要:MCP project_overview、resource_search、resource_list。
|
|
35
|
+
- 正文编辑:draftgo checkout <pages|nav|docs> <id...>,本地修改后 draftgo check、draftgo diff、draftgo commit ...。
|
|
36
|
+
- 结构化资源:直接使用 MCP 的 api_search、api_describe、api_call;不 checkout、不生成本地镜像。
|
|
37
|
+
- 管理本地基座:draftgo local start|stop|logs|status;local-dev、local up/down 仍可用。
|
|
38
|
+
- 移除指定目标:draftgo uninstall <target>;完整移除所有目标只在用户明确要求时运行 draftgo uninstall all,--purge 会删除 .draftgo/。
|
|
39
|
+
|
|
40
|
+
## 迁移旧命令
|
|
41
|
+
|
|
42
|
+
draftgo pull 不再执行同步。它只能给出迁移提示并返回非零,指导使用 MCP 定位资源或 checkout 长正文。不要悄悄恢复全量下载。
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
"schema_version": "1.0",
|
|
3
3
|
"id": "draftgo",
|
|
4
4
|
"name": "DraftGo 开发助手",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.38",
|
|
6
6
|
"entry": "SKILL.md",
|
|
7
|
-
"description": "DraftGo
|
|
7
|
+
"description": "以 Skill/reference 优先路由、MCP 实时发现、长正文 checkout/commit、验证、本地运行与 Skill 分发的 DraftGo 工作流。",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"capabilities": [
|
|
10
10
|
"draftgo-development",
|
|
11
11
|
"custom-service-ai-sdk",
|
|
12
|
-
"
|
|
12
|
+
"mcp-bridge",
|
|
13
|
+
"content-checkout-commit",
|
|
14
|
+
"conflict-safe-delivery",
|
|
13
15
|
"project-validation",
|
|
14
16
|
"skill-installation"
|
|
15
17
|
],
|
|
@@ -26,7 +28,6 @@
|
|
|
26
28
|
"scripts": "scripts",
|
|
27
29
|
"subskills": [
|
|
28
30
|
"init",
|
|
29
|
-
"pull",
|
|
30
31
|
"push",
|
|
31
32
|
"story"
|
|
32
33
|
]
|
|
@@ -1,48 +1,60 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: draftgo-
|
|
3
|
-
description:
|
|
2
|
+
name: draftgo-commit
|
|
3
|
+
description: Commit checked-out DraftGo pages, navigation, and documentation content with base-version protection, local validation, and explicit conflict handling; route structured resources through MCP and explain the limited pages/nav/docs legacy push alias.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# DraftGo
|
|
6
|
+
# DraftGo Checkout / Commit
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
commit 是长正文的唯一正式交付动作。push pages/nav/docs 仅是兼容入口,应显示弃用提示后转发到对应的 commit;其他资源不从本地索引推送。
|
|
9
9
|
|
|
10
10
|
## 选择动作
|
|
11
11
|
|
|
12
12
|
| 意图 | 命令 |
|
|
13
13
|
|---|---|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
14
|
+
| 下载页面正文 | draftgo checkout pages <id...> |
|
|
15
|
+
| 下载导航正文 | draftgo checkout nav <id...> |
|
|
16
|
+
| 下载文档正文 | draftgo checkout docs <id...> |
|
|
17
|
+
| 检查当前工作区 | draftgo check |
|
|
18
|
+
| 查看 base/local 差异 | draftgo diff <type> <id> |
|
|
19
|
+
| 提交页面、导航或文档 | draftgo commit pages|nav|docs <id...> |
|
|
20
|
+
| 列出冲突 | draftgo conflicts |
|
|
21
|
+
| 查看冲突材料 | draftgo conflict show <type> <id> |
|
|
22
|
+
| 明确解决冲突 | draftgo conflict resolve <type> <id> |
|
|
23
|
+
| 只查询正文片段 | MCP search/fragment 工具 |
|
|
24
|
+
| 操作结构化资源 | MCP api_search/api_describe/api_call |
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
## Checkout
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
1. 通过 MCP 取得元数据、content_type、base version/revision 和 base_hash。
|
|
29
|
+
2. CLI 使用项目 SAT 通过专用 HTTP 流下载完整正文;正文不进入 MCP tool result。
|
|
30
|
+
3. 直接流式写入同目录临时文件,完成后计算 SHA-256 并验证底座哈希。
|
|
31
|
+
4. 校验成功后原子重命名到 .draftgo/worktree/ 正式路径,同时保存 .base/ 内容和 manifest。
|
|
32
|
+
5. 不转换 HTML、Markdown 或原始编码;扩展名由 content_type 和底座安全扩展名决定。
|
|
24
33
|
|
|
25
|
-
|
|
26
|
-
- 创建资源:在对应 index 中加入不带 `id` 的完整条目并创建引用文件,再运行 `draftgo push <type>`。
|
|
27
|
-
- 创建成功后重新读取 index。CLI 会回写服务端 `id`,并可能把引用文件重命名为服务端约定名称。
|
|
28
|
-
- 修改已有页面、导航、文档或服务时,直接编辑 index 中 `html_file`、`content_file`、`code_file` 指向的文件;重命名文件时同步修改该字段。
|
|
29
|
-
- 不带 id 的创建支持 `pages`、`nav`、`db_meta`、`aihub`、`docs`、`doc_categories`、`custom_scripts`。系统配置按 `config_key` 更新或创建;角色与用户只更新已有记录。
|
|
34
|
+
不得通过 MCP get、聊天上下文或 Python 旧脚本请求整篇正文。
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
## Commit
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
1. 读取 checkout manifest 指向的正文,计算 current_hash。
|
|
39
|
+
2. 执行 draftgo check;页面改变时按需执行 draftgo verify-ui。
|
|
40
|
+
3. 通过专用 HTTP 流上传正文,并携带 checkout 时的 base_version/revision 或 If-Match。
|
|
41
|
+
4. 完整正文不作为 MCP tool 参数发送。
|
|
42
|
+
5. 成功后原子更新 manifest、base、版本和哈希,并回读清晰的提交结果。
|
|
43
|
+
6. 发生 409/412 时返回非零,停止重试和 auto-commit,保留 local/base 并生成 remote 及冲突 manifest。
|
|
34
44
|
|
|
35
|
-
##
|
|
45
|
+
## 冲突
|
|
36
46
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
冲突目录必须包含可定位的 base、local、remote 三份材料。不要覆盖任一份,也不要手写不可靠的 HTML 合并器。Agent 或用户完成合并后,重新运行 check/verify-ui,确认最新 base,再执行 commit。
|
|
48
|
+
|
|
49
|
+
## 结构化资源与兼容命令
|
|
50
|
+
|
|
51
|
+
db_meta、AIHub、系统配置、角色、用户、分类和自定义服务元数据直接由 Agent 通过 MCP 操作。它们没有本地镜像、checkout manifest 或隐式 push 流程。
|
|
52
|
+
|
|
53
|
+
draftgo push pages/nav/docs 可以保留为迁移兼容别名;draftgo push <other> 必须停止并提示使用 MCP。deploy 和 auto-push 若保留,只能调用当前 check + commit 语义,冲突时必须停止。
|
|
42
54
|
|
|
43
55
|
## 失败处理
|
|
44
56
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
57
|
+
- 缺少配置或 MCP 不可用:运行 draftgo mcp test,报告连接/SAT/底座问题;不要回退 pull。
|
|
58
|
+
- 指定资源未 checkout:先通过 MCP 定位元数据,再运行 checkout;不要猜测 id。
|
|
59
|
+
- 内容类型或编码未知:保留底座返回值并停止,不能强制改成 HTML/Markdown。
|
|
60
|
+
- 提交返回 409/412:保留冲突状态,禁止自动覆盖、隐式 force 或自动重试。
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
read_when: 创建或调优 AI Agent 时 ·
|
|
2
|
+
read_when: 创建或调优 AI Agent 时 · 需要工具/子智能体/记忆/多轮/结构化输出/多模态时
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# AIHub / Agent 资源
|
|
6
6
|
|
|
7
|
-
AIHub
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
AIHub 是结构化远端资源,不 checkout,也不生成本地镜像。先使用 MCP `draftgo_resource_search`/`draftgo_resource_list`
|
|
8
|
+
定位资产,再用 `draftgo_api_search`、`draftgo_api_describe` 获取实时契约,最后通过 `draftgo_api_call` 读写。
|
|
9
|
+
更新 AIHub 资产时只发送实时契约允许的字段;常见字段包括
|
|
10
|
+
`type, name, data, priority, version, tags, describe, permission, status`。供应商和模型使用各自的实时接口,
|
|
11
|
+
不要经旧 AIHub 资产接口写入。任何输出、工作区文件或调用参数都不得保存 API Key 或 header 值;只可处理
|
|
12
|
+
“是否已配置”以及 header 名称等非秘密元数据。
|
|
10
13
|
**Agent 的全部行为都在 `data`(尤其 `data.spec`)里**——本页就是 `data.spec` 的字段地图。
|
|
11
14
|
|
|
12
15
|
## 条目骨架
|
|
13
16
|
|
|
14
17
|
```jsonc
|
|
15
18
|
{
|
|
16
|
-
"type": "agent", // AIHub
|
|
19
|
+
"type": "agent", // AIHub 资产类型
|
|
17
20
|
"name": "产品顾问",
|
|
18
21
|
"describe": "面向用户的产品答疑助手",
|
|
19
22
|
"status": "active",
|
|
@@ -4,8 +4,10 @@ read_when: 需要查具体 API 端点时 · 构造请求时
|
|
|
4
4
|
|
|
5
5
|
# 后端 API 速查
|
|
6
6
|
|
|
7
|
-
>
|
|
8
|
-
>
|
|
7
|
+
> 实时契约以 MCP `draftgo_api_search` / `draftgo_api_describe` 为准;CLI 中可用 `draftgo api <keyword>` 查询。
|
|
8
|
+
> 本页只保留领域速查和 OpenAPI 无法表达的约束,不是静态完整契约。自定义服务的运行时路由由 `app.Route`
|
|
9
|
+
> 动态注册,不会出现在底座 OpenAPI 中;按 `<METHOD> /api/x/<slug><route-path>` 推导,保存或发布后必须请求
|
|
10
|
+
> 无副作用 GET Route 验证。
|
|
9
11
|
> 统一响应信封:`{ code: 200, data: <载荷>, message: "success" }`
|
|
10
12
|
> GET 列表端点通常在不传 `page` / `page_size` 时全量返回;自定义服务执行记录是固定分页特例(默认 20,最大 100)。
|
|
11
13
|
> Go 自定义服务使用 `draftgo.DB.Query(type, sdk.QueryOptions{...})`;返回 `sdk.QueryResult`,筛选和分页见 `references/custom-services.md`。
|
|
@@ -90,7 +92,7 @@ ANY /api/x/{slug}/{path} ← 脚本运行时端点
|
|
|
90
92
|
|
|
91
93
|
自定义服务要点:
|
|
92
94
|
|
|
93
|
-
-
|
|
95
|
+
- 自定义服务是结构化远端资源:通过 MCP 查询元数据和实时接口契约,通过 `draftgo_api_call` 创建或更新;不要依赖本地 `index.json` 镜像。
|
|
94
96
|
- 新服务使用 Go `Register(app *sdk.App)`;用 `app.Route` / `app.On` / `app.Schedule` 自动注册。
|
|
95
97
|
- 新服务使用 `mode=mixed`,可同时暴露 HTTP、响应事件和执行 cron。
|
|
96
98
|
- route 注册来自 `app.Route("METHOD", "/path", handler)`;一个服务可声明多个 route,共用同一个 slug 命名空间。
|
|
@@ -22,7 +22,7 @@ DraftGo **不是传统 SPA**,是「数据库驱动的页面资产运行时」
|
|
|
22
22
|
| 页面内容更新 | 需要重新编译部署 | 直接改数据库 HTML,秒级生效 |
|
|
23
23
|
| 多租户/多项目 | 需要多套工程 | 一套壳层,数据库隔离内容 |
|
|
24
24
|
| 权限控制 | 路由守卫 + 条件渲染 | `page.permission` 字段控制,壳层统一拦截 |
|
|
25
|
-
| 导航定制 | 改代码重部署 |
|
|
25
|
+
| 导航定制 | 改代码重部署 | MCP 定位后 checkout navigation.html,commit 即生效 |
|
|
26
26
|
|
|
27
27
|
**核心推论**:在 DraftGo 里「修改页面」= 修改数据库里的 HTML 字符串,不是修改 `.tsx` 文件。
|
|
28
28
|
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
read_when: 编辑 pages、navigation 或 docs 正文时 · 查看 checkout manifest 时 · 处理 409/412 冲突时
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Checkout / Commit
|
|
6
|
+
|
|
7
|
+
> 根 `SKILL.md` 在 Skill 触发时会自动加载。使用本文件前,先完成根 Skill 的“强制预读:Reference 优先于 MCP”任务路由。本文件只说明长正文的传输、版本和冲突规则,不能替代页面、前端、运行时或安全资料。
|
|
8
|
+
|
|
9
|
+
## 适用范围
|
|
10
|
+
|
|
11
|
+
只有长正文使用 worktree:
|
|
12
|
+
|
|
13
|
+
| 输入类型 | 规范类型 | 本地目录 | 文件前缀 |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `page` / `pages` | `pages` | `.draftgo/worktree/pages/` | `page_` |
|
|
16
|
+
| `nav` / `navigation` / `navigations` | `navigations` | `.draftgo/worktree/navigations/` | `nav_` |
|
|
17
|
+
| `doc` / `docs` / `article(s)` / `docs/articles` | `docs` | `.draftgo/worktree/docs/` | `article_` |
|
|
18
|
+
|
|
19
|
+
db_meta、AIHub、system_config、roles、users、doc_categories 和普通配置使用 MCP 实时 API,不 checkout。
|
|
20
|
+
|
|
21
|
+
## 命令
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
draftgo checkout <pages|nav|docs> <id...>
|
|
25
|
+
draftgo commit <pages|nav|docs> <id...>
|
|
26
|
+
draftgo diff <pages|nav|docs> <id>
|
|
27
|
+
draftgo conflicts
|
|
28
|
+
draftgo conflict show <pages|nav|docs> <id>
|
|
29
|
+
draftgo conflict resolve <pages|nav|docs> <id>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`checkout --force` 只用于用户明确允许丢弃未提交本地修改的情况。默认 checkout 检测到 worktree 文件相对
|
|
33
|
+
base 已变化时必须拒绝覆盖。
|
|
34
|
+
|
|
35
|
+
## Checkout 流程
|
|
36
|
+
|
|
37
|
+
1. CLI 通过 MCP `draftgo_resource_get_metadata` 取得规范类型、content_type、SHA-256、大小、版本/revision、
|
|
38
|
+
ETag 和受信任的下载/提交 URL。
|
|
39
|
+
2. CLI 使用 `.draftgo/config.json` 中的 SAT 通过专用 HTTP 下载完整正文;SAT 不进入 MCP 参数或日志。
|
|
40
|
+
3. 响应体直接流式写入同目录临时文件,校验 content_type、字节数和 SHA-256。
|
|
41
|
+
4. 校验成功后原子重命名到 worktree 文件,并保存相同字节的 `.base` 文件。
|
|
42
|
+
5. 最后原子更新 `.draftgo/worktree/manifest.json`。失败时不得留下半截正式文件或推进 manifest。
|
|
43
|
+
|
|
44
|
+
正文不做 HTML/Markdown 转换,也不改变编码。扩展名规则:
|
|
45
|
+
|
|
46
|
+
- `text/html`、`application/xhtml+xml` -> `.html`
|
|
47
|
+
- `text/markdown`、`text/x-markdown` -> `.md`
|
|
48
|
+
- `text/plain` -> `.txt`
|
|
49
|
+
- 其他类型只接受底座返回的安全扩展名;缺失或不安全时拒绝 checkout
|
|
50
|
+
|
|
51
|
+
## Manifest
|
|
52
|
+
|
|
53
|
+
路径固定为 `.draftgo/worktree/manifest.json`,schema version 当前为 `1`。条目键使用规范类型和 id:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"schema_version": 1,
|
|
58
|
+
"updated_at": "2026-07-30T12:00:00.000Z",
|
|
59
|
+
"entries": {
|
|
60
|
+
"pages:42": {
|
|
61
|
+
"server": "https://draftgo.example",
|
|
62
|
+
"resource_type": "pages",
|
|
63
|
+
"resource_id": "42",
|
|
64
|
+
"title": "Example",
|
|
65
|
+
"route": "/example",
|
|
66
|
+
"code": null,
|
|
67
|
+
"slug": null,
|
|
68
|
+
"local_path": ".draftgo/worktree/pages/page_42.html",
|
|
69
|
+
"content_type": "text/html",
|
|
70
|
+
"file_extension": ".html",
|
|
71
|
+
"content_size": 123,
|
|
72
|
+
"base_path": ".draftgo/worktree/.base/pages/page_42.html",
|
|
73
|
+
"base_version": "7",
|
|
74
|
+
"base_revision": null,
|
|
75
|
+
"base_etag": null,
|
|
76
|
+
"base_hash": "<sha256>",
|
|
77
|
+
"checked_out_at": "2026-07-30T12:00:00.000Z"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
`server` 必须和当前连接一致。`local_path`、`base_path` 必须是项目内相对路径。manifest、worktree `.base`
|
|
84
|
+
和冲突目录必须 gitignore;不要手工伪造版本或哈希。
|
|
85
|
+
|
|
86
|
+
## Commit 流程
|
|
87
|
+
|
|
88
|
+
1. 读取 manifest 指向的 worktree 文件,计算当前字节数和 SHA-256;未变化时返回 `unchanged`。
|
|
89
|
+
2. 按 content_type 执行本地结构检查;页面布局或交互有变化时另外运行 `draftgo verify-ui`。
|
|
90
|
+
3. 通过专用 HTTP 流式上传原始文件,携带 `If-Match`、base version/revision、content_type、长度和 SHA-256。
|
|
91
|
+
4. 完整正文不得作为 MCP tool 参数发送。
|
|
92
|
+
5. 底座确认 hash 和新版本后,CLI 原子更新 `.base` 与 manifest。返回 hash 不一致时不得推进基线。
|
|
93
|
+
|
|
94
|
+
推荐编辑顺序:完成相关 `references/` 的任务预读 -> MCP 定位 -> checkout -> 本地编辑 -> `draftgo check` -> 必要时 `draftgo verify-ui`
|
|
95
|
+
-> `draftgo diff` -> commit。
|
|
96
|
+
|
|
97
|
+
## 409 / 412 冲突
|
|
98
|
+
|
|
99
|
+
版本冲突时 CLI 返回非零,不自动重试、不 force、不覆盖 worktree local,并写入:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
.draftgo/conflicts/<pages|navigations|docs>/<id>/
|
|
103
|
+
├── conflict.json
|
|
104
|
+
├── base.<ext>
|
|
105
|
+
├── local.<ext>
|
|
106
|
+
└── remote.<ext>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- `base` 是 checkout 时的内容;`local` 是发生冲突时的本地快照;`remote` 是重新下载并校验的当前远端内容。
|
|
110
|
+
- `conflict.json` 记录三份路径、版本、ETag 和哈希,不嵌入完整正文。
|
|
111
|
+
- Agent 或用户在 worktree local 文件中完成合并;不要手写 HTML 自动合并器,也不要改动保存的三份证据。
|
|
112
|
+
- 合并完成后运行 `draftgo check`、必要时 `draftgo verify-ui`,再执行 `draftgo conflict resolve <type> <id>`。
|
|
113
|
+
- resolve 校验 worktree 与 remote,采用 remote 版本作为新的 base,但保留合并后的 worktree;随后运行
|
|
114
|
+
`draftgo diff` 并 `draftgo commit`。
|
|
115
|
+
|
|
116
|
+
存在 unresolved conflict 时 commit、deploy 或 auto-commit 必须停止。
|
|
@@ -41,29 +41,28 @@ func weekdayReport(draftgo *sdk.Context) (any, error) { return nil, nil }
|
|
|
41
41
|
|
|
42
42
|
`Register` 必须没有业务副作用。它只注册 handler;网络请求、写数据库、发通知等操作放在 handler 内。
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## 资源读写
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
```
|
|
46
|
+
自定义服务是结构化远端资源,不使用 checkout/commit,也没有约定的本地镜像目录。先用
|
|
47
|
+
`draftgo_resource_search` 定位服务,再用 `draftgo_api_search` / `draftgo_api_describe` 获取当前管理接口契约,
|
|
48
|
+
通过 `draftgo_api_call` 读取、创建或更新。Agent 可以在普通工作区文件中编写和检查 Go 源码,但不得把该文件
|
|
49
|
+
误当作远端事实来源;写入时按实时契约显式发送代码和元数据。
|
|
51
50
|
|
|
52
|
-
`
|
|
51
|
+
常见服务载荷字段如下,实际字段以 `draftgo_api_describe` 为准:
|
|
53
52
|
|
|
54
53
|
```json
|
|
55
54
|
{
|
|
56
55
|
"name": "order-service",
|
|
57
56
|
"slug": "order-service",
|
|
58
57
|
"mode": "mixed",
|
|
59
|
-
"
|
|
58
|
+
"code": "package main\n\n// ...\n",
|
|
60
59
|
"go_mod": "module example.com/order-service\n\ngo 1.26.0\n\nrequire github.com/google/uuid v1.6.0\n",
|
|
61
60
|
"go_sum": ""
|
|
62
61
|
}
|
|
63
62
|
```
|
|
64
63
|
|
|
65
64
|
- 新服务使用 `mode=mixed`,允许同一个 `Register` 同时注册 route、event 和 scheduled。旧服务可继续使用单一 `route`、`event` 或 `scheduled` mode。
|
|
66
|
-
- `go_mod` 和可选的 `go_sum`
|
|
65
|
+
- `go_mod` 和可选的 `go_sum` 随服务版本保存,并和代码一起通过实时管理 API 提交。
|
|
67
66
|
- 新依赖应锁定明确版本。构建错误会在保存/发布时返回,不会替换当前有效清单。
|
|
68
67
|
|
|
69
68
|
## 触发器
|
|
@@ -305,4 +304,4 @@ value, err := draftgo.AIHub.Request(draftgo.Context(), sdk.AIRequest{
|
|
|
305
304
|
- [ ] 路由使用 `app.Route`,事件使用 `app.On`,定时任务使用 `app.Schedule`。
|
|
306
305
|
- [ ] handler 返回 `(any, error)`,需要状态码时使用 `draftgo.Respond`。
|
|
307
306
|
- [ ] Route 显式设置 `permission` 与 `route_security`。
|
|
308
|
-
- [ ]
|
|
307
|
+
- [ ] 保存或发布后请求无副作用 GET Route,并记录状态码和响应作为验收证据。
|