logo
0
0
WeChat Login
📝 docs: 命令名修正 cnb → cnb-rs,明确 dispatch 入口

cnb-chat

用自然语言与 CNB OpenAPI 交互的 chat agent — cnb-rs extension。

灵感来自 git-cnb chat(Go 实现,独立项目),用 Rust 重写并打包为 cnb-rs extension。

特性

  • 一次性模式cnb-rs chat --do "查询本仓库 issue" 适合 CI/CD
  • 交互式模式cnb-rs chat 持续对话,/exit 退出
  • 流式输出:边接边显示,含 thinking 内容
  • 零密钥负担:直接用 CNB_TOKEN 调 CNB AI Chat Completions(OpenAI 兼容),默认模型 hunyuan-a13b(腾讯混元)
  • 两阶段检索:system prompt 中含 CNB OpenAPI 精简索引(~200 行);AI 决定调哪个 API 时再拉详细文档(避免 ~2700 行 SKILL.md 全塞 context 浪费 token)
  • agent loop:AI 输出 ```get_api_doc service/apiname``` → 拉文档;输出 ```bash curl ...``` → 执行;最多 10 轮

安装

cnb-rs ext install cnb-chat

用法

# 一次性
cnb-rs chat --do "列出本仓库的 open issue"

# 交互式
cnb-rs chat
>>> 帮我查 last 7 天的 commit 数量
>>> /exit

# CI 友好(禁用动画/颜色,一次性纯文本输出)
cnb-rs chat --do "..." --no-stream

环境变量

必填说明
CNB_TOKENCNB 访问令牌,AI chat + OpenAPI 调用共用
CNB_DOMAIN默认 cnb.cool,由 cnb-rs dispatch 注入
CNB_REPO当前仓库(group/repo),cnb-rs dispatch 自动从 git remote 推导

设计

  • 数据源vendor/cnb-openapi-skills/ 作为 git submodule,编译时 include_dir! 嵌入 SKILL.md + references/*.md
  • HTTP layer:自带 reqwestPOST /{repo}/-/ai/chat/completions,不依赖 cnb-api crate(与 cnb-stats / cnb-stars 同设计原则:零 cnb-rs 内部依赖)
  • curl 执行:复用 git-cnb ExecCurl 算法(占位符替换 <CNB_TOKEN> / {repo} + 30s 超时 + JSON 尝试解析)

详见 src/ 各 module 文档注释。

许可证

MIT