@adongguo/yxdash 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
+ <p align="center">
2
+ <img src="./assets/brand/yxdash-lockup.png" alt="yxdash:终端中的云效工作流" width="960">
3
+ </p>
4
+
1
5
  # yxdash
2
6
 
3
- > 终端里的云效工作项看板(命令名 `yxdash`):缺陷 / 需求 / 迭代三视图,默认只看与我相关,链接可点击,自动刷新,同时是 Claude Code 等 agent 的结构化数据源。技术栈与 Claude Code 一致:TypeScript + React Ink 7 + Node ≥ 22(纯 ESM)。
7
+ > 终端里的云效工作项看板(命令名 `yxdash`):缺陷 / 需求 / 迭代 / 焦点四视图,默认只看与我相关,链接可点击,自动刷新,同时是 Claude Code 等 agent 的结构化数据源。技术栈与 Claude Code 一致:TypeScript + React Ink 7 + Node ≥ 22(纯 ESM)。
4
8
 
5
9
  ## 状态
6
10
 
@@ -15,7 +19,10 @@
15
19
  - ✅ M6:鼠标交互(滚轮滚动、单击选中/切换 section 与视图、双击预览、组头点击折叠;`ui.mouse: false` 或 `YXDASH_NO_MOUSE=1` 关闭,详见 `docs/20260820-000232-鼠标交互技术方案.md`)
16
20
  - ✅ M7:多选标记与批量复制(`v` 标记、`y`/`Y` 批量复制编号/链接、Esc 清除,详见 `docs/20260824-193458-多选复制与命令面板技术方案.md`)
17
21
  - ✅ M8:命令面板(`Ctrl+k` 唤起,中文/拼音/英文模糊搜索并执行任意操作,同一文档)
18
- - ⬜ M2 其余:`f` 过滤表单;M3 其余:多 profile
22
+ - ✅ M9:焦点视图(`f` 将当前项或标记批次加入/移出本地焦点集合,按需求/缺陷/任务分组,不写云效字段)
23
+ - ✅ M13:单行标题优先与横向滚动(看板卡片分隔 + 列表每项一行 + 标题列前置 + `H/L` `^/$` 与鼠标横向滚轮,详见 `docs/20260828-104159-M13-单行标题优先与横向滚动技术方案.md`)
24
+ - ✅ M2 完整过滤:`/` 本地模糊筛、`Tab` 升级为服务端主题查询、`F` 结构化过滤表单(状态/标签多选,负责人、优先级、严重程度、类型/模块、时间窗全 select;仅在当前进程内生效)
25
+ - ✅ M3 多 project/profile:单 YAML 可声明多个完整 profile,通过 `--profile` / `YXDASH_PROFILE` 选择,默认 profile 可配置且严格隔离组织、项目与令牌来源
19
26
 
20
27
  ## 安装与分发
21
28
 
@@ -32,13 +39,13 @@ yxdash --version
32
39
 
33
40
  ```bash
34
41
  (cd release && shasum -a 256 -c SHA256SUMS)
35
- npm install --global ./release/yxdash-v1.0.1.tgz
42
+ npm install --global ./release/yxdash-v1.1.1.tgz
36
43
  yxdash --help
37
44
  ```
38
45
 
39
46
  tarball 会捆绑经锁文件验证的完整运行时依赖树,可在没有 registry 网络的环境中离线安装。自有 TypeScript 代码会先合并为单个 Node ESM 入口,再以固定 seed 做 minify 与混淆;公网包的自有代码区域不包含 `src/`、`.ts`、`.tsx`、source map 或 `sourceMappingURL`。第三方运行时依赖保持原样,不参与混淆,因此依赖自身可能包含类型声明或源码文件。混淆只提高逆向成本,并不构成加密或秘密保护边界。
40
47
 
41
- 每个正式 tag 同时生成与运行时依赖树对应的 CycloneDX SBOM,以及记录源码 commit、构建工具精确版本、混淆状态和产物摘要的 manifest。本项目使用 MIT 许可证,完整条款见 `LICENSE`。
48
+ 每个正式 tag 同时生成与运行时依赖树对应的 CycloneDX SBOM,以及记录源码 commit、构建工具精确版本、混淆状态和产物摘要的 manifest。本项目从 `1.1.0` 起使用 `GPL-3.0-or-later` 许可证,完整条款见 `LICENSE`;此前已发布版本继续适用其随版本提供的 MIT 许可证。
42
49
 
43
50
  ## 源码开发
44
51
 
@@ -56,22 +63,48 @@ npm ci
56
63
  npm run release:check # 类型、覆盖率、全依赖审计、registry 签名、混淆构建、包内容与安装后黑盒验证
57
64
  ```
58
65
 
59
- 正式发布采用 SemVer tag,tag 必须与 `package.json` 版本完全一致且指向干净提交。推荐用 `npm version patch|minor|major` 同步修改包清单与锁文件并创建 `v<version>` tag,推送 tag 后由 GitLab 流水线生成产物;npmjs 发布是受保护 tag 上的人工批准步骤。已推送 tag 不得移动:如果发布失败后又修改了产物,必须递增版本并创建新 tag。
66
+ 正式发布采用 SemVer tag,tag 必须与 `package.json` 版本完全一致且指向干净提交。推荐用 `npm version patch|minor|major` 同步修改包清单与锁文件并创建 `v<version>` tag,再生成 npm 与 GitHub Release 产物。已推送 tag 不得移动:如果发布失败后又修改了产物,必须递增版本并创建新 tag。
60
67
 
61
- 当前自托管 GitLab runner 不满足 npm Trusted Publishing 的云托管 runner 条件,因此 CI 使用项目级 protected + masked `NPM_TOKEN`:令牌必须是仅允许 `@adongguo/yxdash` 读写、允许发布绕过 2FA、具有最短可用期限的 npm granular access token,禁止写入仓库或日志。`release:bundle` 会拒绝脏工作区、非稳定 SemVer、tag/版本不一致、原始业务源码或 source map 入包,以及无法证明混淆状态的产物。
68
+ `release:bundle` 会拒绝脏工作区、非稳定 SemVer、tag/版本不一致、原始业务源码或 source map 入包,以及无法证明混淆状态的产物。发布凭据只通过 npm 登录态或短期 granular access token 提供,禁止写入仓库、配置示例或日志。
62
69
 
63
70
  启动落地行为由配置决定:`defaultView`(默认 `sprint`)决定打开哪个视图;迭代视图的 `views.sprint.groupBy`(默认 `statusStage` 按阶段分组,运行时 `g` 键可循环切换)与 `defaultAssignee`(默认 `self` 只看自己,可设 `all` 或具体用户 id)决定初始分组与过滤。命令行显式指定视图(`yxdash bugs`)优先于配置;**管道模式不受 `defaultView` 影响**,未指定视图时始终是 `bugs`,保证 agent 拿到的输出结构稳定。
64
71
 
65
- 令牌解析顺序:`YUNXIAO_ACCESS_TOKEN` 环境变量 → 配置中的 `token_cmd`(例如从 `~/.claude.json` 的 MCP 配置读取)。令牌永不明文落盘。
72
+ 令牌解析顺序:`YUNXIAO_ACCESS_TOKEN` 环境变量 → 配置中的 `token_cmd`(例如从系统 keychain 或密码管理器读取)。令牌永不明文落盘。
66
73
 
67
74
  配置查找顺序:`$YXDASH_CONFIG` → `./.yxdash.yaml` → `~/.config/yxdash/config.yaml`。
68
75
 
76
+ 多 profile 配置中的每个 profile 都是完整配置,互不继承,避免跨组织复用 `project`、`baseUrl` 或令牌命令。显式 `--profile` 优先于 `YXDASH_PROFILE`,其次使用 `defaultProfile`;只有一个 profile 时可自动选择。旧的单配置 YAML 继续兼容,但不能再附加 profile 选择参数。
77
+
78
+ ```yaml
79
+ defaultProfile: flow
80
+ profiles:
81
+ flow:
82
+ organizationId: <组织 id>
83
+ project: <项目 id>
84
+ baseUrl: https://yunxiaopro-cn-beijing.devops.aliyuncs.com
85
+ token_cmd: <安全令牌命令>
86
+ another-project:
87
+ organizationId: <另一组织 id>
88
+ project: <另一项目 id>
89
+ baseUrl: https://yunxiaopro-cn-beijing.devops.aliyuncs.com
90
+ token_cmd: <另一安全令牌命令>
91
+ ```
92
+
93
+ ```bash
94
+ yxdash --profile flow
95
+ YXDASH_PROFILE=another-project yxdash reqs
96
+ ```
97
+
69
98
  安全边界:工作目录的 `./.yxdash.yaml` 可能随任意 clone 的仓库而来,因此**其中的 `token_cmd` 会被拒绝执行**(`token_cmd` 只在用户级配置生效),加载工作目录配置时会在 stderr 提示确认。确实需要仓库级配置带 `token_cmd` 时,用 `--config ./.yxdash.yaml` 或 `$YXDASH_CONFIG` 显式指定(显式指定 = 显式信任)。
70
99
 
71
100
  ## 视觉与 UI 配置
72
101
 
73
102
  默认视觉系统为 Dracula Pro:背景基准 `#22212C`、交互焦点紫 `#9580FF`、多选标记粉 `#FF80BF`、信息青 `#80FFEA`、警告黄 `#FFFF80`、错误红 `#FF9580`。紫色只编码“当前可操作焦点”,粉色只编码“已持有的多选项”,严重度颜色不复用,避免同一种颜色同时表达两个状态。光标仍使用终端反显通道,因此在彩色能力受限时也能辨认。
74
103
 
104
+ 品牌采用母版中的绿 → 青 → 蓝 → 紫工作流色谱。交互模式在首次数据真实加载期间显示终端原生品牌启动态,数据到达后立即进入看板,不附加固定等待时间;顶部根据宽度常驻 `yxdash`(≥80 列)或 `yx`(52–79 列),更窄时把全部空间留给工作项。`--json` / `--plain` 管道输出不包含任何品牌装饰,数据契约保持不变。
105
+
106
+ 仓库内品牌资产均由同一母版保真拆分:完整横版 [`assets/brand/yxdash-lockup.png`](./assets/brand/yxdash-lockup.png)、图形标 [`assets/brand/yxdash-symbol.png`](./assets/brand/yxdash-symbol.png)、文字标 [`assets/brand/yxdash-wordmark.png`](./assets/brand/yxdash-wordmark.png)。
107
+
75
108
  `ui` 段可按终端和工作习惯精调:
76
109
 
77
110
  | 配置 | 默认 | 作用 |
@@ -82,7 +115,10 @@ npm run release:check # 类型、覆盖率、全依赖审计、registry 签名
82
115
  | `animations` | `true` | `false` 后用静态点替代 spinner 动画 |
83
116
  | `previewPosition` | `auto` | 初始预览位置:`auto` / `right` / `bottom` |
84
117
  | `footer` | `auto` | `minimal` 只保留视图切换与帮助/退出 |
85
- | `density` / `detailBar` | `auto` | 列表密度与完整标题提示行 |
118
+ | `density` / `detailBar` | `auto` | 列表密度与完整标题提示行;`density: compact` = 每个工作项恒占一行 |
119
+ | `boardCardGap` | `true` | 看板卡片之间留一行空行(列高不足 16 行时自动降级为关闭) |
120
+ | `titleFirst` | `false` | 把「标题」提到第一列(表格视图与迭代/焦点视图同时生效) |
121
+ | `rowScroll` | `true` | 窄屏保留全部列并支持横向滚动;关闭则回到「按宽度丢列」。宽屏下两者渲染一致 |
86
122
  | `breakpoints` | `52/80/120` | `sm` / `md` / `lg` 响应式断点 |
87
123
  | `mouse` | `true` | 鼠标滚动、点击与双击 |
88
124
 
@@ -92,21 +128,24 @@ npm run release:check # 类型、覆盖率、全依赖审计、registry 签名
92
128
 
93
129
  | 键 | 作用 | 键 | 作用 |
94
130
  |---|---|---|---|
95
- | `1-9` | 直达 section | `s` / `S` | 循环切换视图 |
131
+ | `1` `2` `3` `4` | 切换视图:缺陷 / 需求 / 迭代 / 焦点(四个视图内含义完全一致) | `s` / `S` | 循环切换视图(同 1-4,前进/后退) |
96
132
  | `j/k` `↓/↑` `Ctrl+n/p` | 行移动(三套等价,弹层内通用) | `h/l` `←/→` | 相邻 section |
97
133
  | `g` / `G` | 首行 / 末行 | `Enter` / `p` | 预览开关 |
98
134
  | `P` | 预览位置(自动→右→底) | `Ctrl+d/u` | 预览翻页 |
99
135
  | `o` | 浏览器打开 | `y` / `Y` | 复制编号 / URL(有标记时复制全部标记项,一行一项) |
100
136
  | `v` | 标记/取消标记当前行并下移(多选,行首 2 格色轨 + 整行 accent;Esc 清除全部标记) | `Ctrl+k` | 命令面板:模糊搜索(中文/拼音/英文)并执行任意操作 |
101
- | `/` | 本地模糊筛(Esc 清除) | `r` / `R` | 刷新当前 / 全部 |
137
+ | `/` | 本地模糊筛(`Tab` 将关键词升级为服务端主题过滤;Esc 清除) | `F` | 结构化服务端过滤(Esc 取消,`x` 重置) |
138
+ | `r` / `R` | 刷新当前 / 全部 | `f` | 当前项或标记批次加入/移出焦点集合 |
102
139
  | `e` | 编辑(状态/负责人/优先级/描述/评论) | `m` | 状态流转直达 |
103
140
  | `C` | 查看评论 | `?` / `q` | 帮助 / 退出 |
141
+ | `H` / `L` | 行内左右滚动(窄屏保留全部列时用;看板下不生效) | `^` / `$` | 回到行首 / 行尾 |
104
142
 
105
143
  鼠标(默认开启):
106
144
 
107
145
  | 操作 | 作用 |
108
146
  |---|---|
109
147
  | 滚轮 | 指针所在区域滚动:列表移光标(卡片行 1 条/格,普通行 3 行/格)、预览/评论面板滚 3 行/格、弹层列表移 1 项/格 |
148
+ | 横向滚轮 | 指针在列表上时左右移动行窗口(4 格/格);终端需上报 SGR 66/67,不支持时用 `H`/`L` |
110
149
  | 单击 | 表格行/迭代条目=选中;迭代组头=折叠展开;顶部 tab=切 section;底部视图名=切视图;左栏=切迭代;弹层条目=移动选中 |
111
150
  | 双击 | 条目=开关预览(等价 `Enter`);弹层条目=确认(等价 `Enter`);组头双击不抖动 |
112
151
  | Shift+点击/拖选 | 交回终端:原生拖选复制、编号 OSC 8 超链接 |
@@ -123,7 +162,7 @@ npm run release:check # 类型、覆盖率、全依赖审计、registry 签名
123
162
 
124
163
  | 键 | 作用 | 键 | 作用 |
125
164
  |---|---|---|---|
126
- | `h/l` `1-9` | 切换迭代 | `g` | 分组维度:阶段→负责人→类型 |
165
+ | `h/l` `←/→` | 切换迭代(也可点左栏) | `g` | 分组维度:阶段→负责人→类型 |
127
166
  | `a` | 按负责人过滤(★=自己,含计数) | `b` | 显示/隐藏迭代内缺陷 |
128
167
  | `空格` | 折叠/展开光标所在分组 | `Enter` | 组头=折叠该组;条目=预览 |
129
168
  | `za` `zo` `zc` | 切换 / 展开 / 折叠当前分组 | `zs` | **只展开当前分组**(其余全折叠) |
@@ -146,8 +185,10 @@ yxdash bugs --json # 缺陷视图全部 sections,JSON(每
146
185
  yxdash bugs --json --section 1 # 只要「我的未解」
147
186
  yxdash reqs --plain | column -t -s$'\t' # TSV,grep/awk 友好
148
187
  yxdash sprint --json # 当前迭代需求按阶段分组 + 每人计数
149
- yxdash sprint --json --assignee 卓越 --group-by assignee
188
+ yxdash sprint --json --assignee 张三 --group-by assignee
150
189
  yxdash sprint --plain --with-bugs # 连同缺陷(TSV 带 group 列)
190
+ yxdash focus --json # 本地焦点集合,按需求/缺陷/任务分组
191
+ yxdash bugs --json --profile flow # 从多 profile 配置选择目标项目
151
192
  ```
152
193
 
153
194
  - 退出码:`0` 成功 · `1` 有 section 失败 · `2` 参数/配置错误。
@@ -173,7 +214,11 @@ npm run smoke # 真实 API 冒烟(需令牌,不进 CI)
173
214
  - 限流保护:令牌桶(容量 5、2/s)+ 429/5xx 指数退避 + 只刷可见 section + 元数据 TTL 缓存。
174
215
  - 刷新三重机制:自动轮询(默认 5 分钟,`intervalSeconds: 0` 关闭)+ `r/R` 手动 + 终端焦点回归触发;刷新失败保留旧数据(stale-while-revalidate)。
175
216
  - 链接:`o` 键 `execFile` 打开为主路径;OSC 8 超链接为增强(tmux 需 `set -ga terminal-features "*:hyperlinks"`);复制经系统剪贴板,SSH 场景回退 OSC 52。
217
+ - 运行时可观测性(M10):常驻日志落 `~/.local/state/yxdash/yxdash.log`(`XDG_STATE_HOME` 生效时随之;`log.level` / `YXDASH_LOG_LEVEL` 调级,`off` 关闭;`log.file` / `YXDASH_LOG_FILE` 改路径;超 512KB 轮转一代)。记录启动、退出原因、未捕获异常堆栈与输入看门狗告警;**令牌、请求体、响应体一律不入日志**。
218
+ - 不会再静默消失(M10):全屏 TUI 的堆栈会被 alternate screen 一并抹掉,而本应用所有定时器都是 `unref` 的,一旦 stdin 失去引用事件循环就空、Ink 自行卸载、退出码 0。交互模式因此全程持有一个 **ref 的 keepalive 句柄**,并用同一个 tick 监测 stdin 是否意外丢失 raw 模式(去抖两拍后自愈,最多 3 次)。异常退出会在**主屏**留一行并指向日志。
176
219
  - 逃生舱:`YXDASH_NO_ALTSCREEN=1` 禁全屏;`YXDASH_FULL_REPAINT=1` 关增量渲染(tmux/ConPTY 残影时用);`YXDASH_NO_MOUSE=1` 关鼠标上报;`YXDASH_THEME=terminal` 临时沿用终端配色;`YXDASH_MARK_COLOR=blueBright`(或其他受支持的 ANSI 颜色名/`#rrggbb`)改多选标记色,非法值回落当前主题默认值。
220
+ - 窄屏不再丢列(M13):`ui.rowScroll` 默认开启后,列不再按宽度丢弃,而是按自然宽度排开、由 `H`/`L`/`^`/`$` 或鼠标横向滚轮移动窗口;行首 2 格色轨固定不滚,所以标记与状态色块永远可见。宽屏下自然宽度本就装得下,渲染与之前逐字节一致。状态栏在可滚动时显示 `H/L 横滚 n/max`,这是「右边还有内容」的唯一信号。
221
+ - 看板卡片分隔(M13):卡片之间加一行空行、色轨在卡片最后一行断开、编号行降一档亮度,让标题成为视觉重心。空行不带色轨也不吃光标高亮,否则它就只是高亮块上的一个缺口而非分隔。
177
222
  - 鼠标:SGR 编码(`?1000h`+`?1006h`,不开移动上报);渲染与命中测试共用 `ui/layout/lists.ts` 的同一份视口算术,所见即可点;解析失败的序列原样落回键盘路径,终端不支持时零影响。tmux 需 `set -g mouse on` 才会转发。
178
223
 
179
224
  ## 读写边界
@@ -1,12 +1,12 @@
1
1
  # yxdash 配置示例。复制为 ~/.config/yxdash/config.yaml 后按需修改。
2
2
  # 令牌永不明文落盘:优先 token_cmd(从既有 MCP 配置/keychain 取),或环境变量 YUNXIAO_ACCESS_TOKEN。
3
3
 
4
- defaultView: sprint # 启动落地视图:bugs | reqs | sprint(管道模式不受影响,始终 bugs)
5
- organizationId: cdc72bf8-26dd-4dee-9b43-148c02dbe202
6
- project: adc139311c47c887b901342519 # 云效产品研发(FLOW)
4
+ defaultView: sprint # 启动落地视图:bugs | reqs | sprint | focus(管道模式不受影响,始终 bugs)
5
+ organizationId: "<your-organization-id>"
6
+ project: "<your-project-id>" # 云效项目 ID
7
7
  baseUrl: https://yunxiaopro-cn-beijing.devops.aliyuncs.com
8
8
  # edition: region # 缺省按域名自动判定;openapi-rdc.* => central,否则 region
9
- token_cmd: "jq -r '.mcpServers.yunxiao.env.YUNXIAO_ACCESS_TOKEN' ~/.claude.json"
9
+ token_cmd: "security find-generic-password -s yxdash-yunxiao-token -w"
10
10
 
11
11
  refresh:
12
12
  intervalSeconds: 300 # 自动刷新间隔;0 = 关闭
@@ -30,12 +30,19 @@ views:
30
30
  - title: 本迭代全部
31
31
  filters: { category: "Req,Task", sprint: current }
32
32
  sprint:
33
+ # 看板形态(M12):list=分组列表(默认) | board=阶段分列看板 | auto=够宽自动上看板。
34
+ # 运行时按 B 一键切换,无需改配置。看板隐藏左侧迭代栏(切迭代改用 [ 和 ]),
35
+ # 且只支持按阶段分组;宽度不够时自动回退列表并提示。
36
+ style: list
37
+ boardMinWidth: 100 # 仅 auto 生效:终端宽度达到它才自动上看板
33
38
  groupBy: statusStage # statusStage(阶段) | assignee(负责人) | type(类型);g 键运行时循环
34
39
  defaultAssignee: self # self(当前登录人) | all(全员) | <用户id>
35
40
  categories: "Req" # 默认只看需求(产品类/技术类/AR 都属 Req);b 键临时叠加缺陷
36
41
  showBugs: false # 迭代视图默认不展示缺陷
37
42
  # stageNames: # 阶段名覆盖(默认映射实测自当前租户)
38
43
  # "1": 确认阶段
44
+ focus:
45
+ maxItems: 50 # 本地焦点集合容量;每项刷新会查询一次详情
39
46
 
40
47
  columns:
41
48
  bugs: [serialNumber, status, seriousLevel, priority, assignedTo, subject]
@@ -53,4 +60,31 @@ ui:
53
60
  # 关闭后行为与未引入该特性时一致;开启时按住 Shift 可恢复终端原生拖选
54
61
  density: auto # auto(按宽度) | compact(单行) | comfortable(卡片)
55
62
  detailBar: auto # auto | always | off
63
+ # 行首色块:完成=绿 取消=灰 紧急/1-=红 高/2-=黄 中/3-=青,低/无值不画。
64
+ # auto 按工作项类型取字段(缺陷=严重程度,其余=优先级);off 同时把表格视图
65
+ # 那 2 格还回去(行首轨道退回「有标记才出现」)。
66
+ rowDot: auto # auto | priority | seriousLevel | off
67
+ boardCardGap: true # 看板卡片之间留一行空行(列高不足 16 行时自动降级为关闭)
68
+ titleFirst: false # true 时把「标题」提到第一列(表格视图与迭代/焦点视图同时生效)
69
+ rowScroll: true # 窄屏保留全部列并支持横向滚动(H/L、^/$、鼠标横向滚轮)
70
+ # 关闭则回到「按宽度丢列」的行为;宽屏下两者渲染一致
71
+ # 每项只占一行请配合 density: compact
56
72
  breakpoints: { sm: 52, md: 80, lg: 120 }
73
+
74
+ log:
75
+ level: info # off | error | warn | info | debug;YXDASH_LOG_LEVEL 优先
76
+ # 记录启动/退出/未捕获异常/输入看门狗告警,用于事后定位"跑着跑着就退了"
77
+ # 默认落 ~/.local/state/yxdash/yxdash.log(超过 512KB 轮转一代)
78
+ # 令牌、请求体、响应体一律不入日志
79
+ # file: /abs/path/yxdash.log # 可选,覆盖默认路径;YXDASH_LOG_FILE 优先
80
+
81
+ # 多项目时可把上面的完整配置改为以下结构;每个 profile 都必须提供一份完整配置,
82
+ # 不做跨组织继承。选择优先级:--profile > YXDASH_PROFILE > defaultProfile > 唯一 profile。
83
+ # defaultProfile: flow
84
+ # profiles:
85
+ # flow:
86
+ # organizationId: <组织 id>
87
+ # project: <项目 id>
88
+ # baseUrl: https://yunxiaopro-cn-beijing.devops.aliyuncs.com
89
+ # token_cmd: <安全令牌命令>
90
+ # # refresh / views / columns / ui 可按上面的完整配置继续填写