Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

建议:新增 bl completion <shell> 命令,提供 zsh/bash/fish 自动补全

Offen
#286 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
bash, fish, node.js, shell, typescript, zsh

Rechercherichtung

Run bl --introspect and read where the existing skill/reference generators consume that metadata under packages/cli; the new completion subcommand and its introspect→shell conversion layer belong alongside them. Build the zsh path first against the issue's acceptance cases (bl text ch<TAB>, --api <TAB> listing choices, --outpu<TAB>), then reuse the same conversion for bash and fish, and add choices for --output to globalFlags in the introspect schema. Done when pnpm check passes and every acceptance example completes; coordinate with the reporter, who has a working local prototype.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

背景

bl 目前没有 shell 补全命令(bl completion 报 Unknown command),322 个多级子命令(如 memory node show、agents security alerts)加上每个命令十几个 flag,纯靠手敲和 --help 记忆成本比较高。

现状
  • bl --introspect 已经输出结构化的命令元数据(commands[].path / flags / choices / description,globalFlags),天然适合作为补全的数据源,但目前只有 skill/reference 生成在消费它。
  • issues 里没有找到补全相关的既有讨论。
提议

新增顶层命令:

bl completion <zsh|bash|fish>          # 输出补全脚本到 stdout(可重定向)
bl completion zsh --install            # (可选)自动写入 rc 文件

数据流复用 --introspect:

introspect JSON → 转换层 → 各 shell 的补全脚本/函数

zsh 侧的转换规则(已在本地验证可行):

introspect 字段 zsh spec
flags.choices: [chat, responses] '--api[desc]:value:(chat responses)'
type: switch '--stream[desc]'
valueHint 含 path/file ':file:_files'
其他 string '--message[desc]:value:'

多级命令用「收集已输入的非 flag 词 → 前缀匹配 → 前缀组补下一级 / 叶子命令补 flags」的 dispatch 即可,不需要为每个命令写死函数。

实现时值得注意的两个坑(本地原型踩过)
  1. zsh _arguments 里消费已输入子命令的占位 positional 必须写成 'N:cmd:'(带尾冒号、空 action);写成 'N:cmd' 会被当成可补全位置参数,与 flag 候选形成"二义",导致单次 TAB 只列出不插入。
  2. flag 描述文本需要双层转义:shell 引号层 + _arguments 描述层的 ] 和 :(zh-CN 描述里的全角冒号没事,但半角冒号会截断 spec)。
顺带发现的数据缺口

--introspect 的 globalFlags 里 --output 没有带 choices: ["text", "json"],补全只能硬编码。建议在 schema 里补上这个字段,任何消费方都能受益。

验收示例(以 zsh 为例)
bl text ch<TAB>            → bl text chat
bl text chat --sys<TAB>    → --system(列出时带描述)
bl text chat --api <TAB>   → chat / responses
bl --outpu<TAB>            → --output
备注

我已按上述思路在本地基于 bl --introspect 生成 zsh 补全并逐项验证通过(bl 2.6.1,322 命令 / 81 命令组)。如果这个方向可行,我愿意提交 PR 把转换层按仓库结构(packages/cli + 单一逻辑改动 + pnpm check)实现。

Vorherrschende Sprache
TypeScript
Sterne
364
Forks
32
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
36

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus modelstudioai/cli

Alle Issues in modelstudioai/cli

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.