# kcode-pi

金蝶编码助手 **kcode**：KCode runtime、技能、规则、金蝶领域工具与 MCP。

## 环境

- [Bun](https://bun.sh) ≥ 1.3.14（推荐，与 monorepo 一致）
- 或 Node ≥ 22 + 全局 `bun`（npm 包入口为 `dist/kcode.js`，仍由 Bun 执行）

## 本仓库开发：本地全局 `kcode`

在 **KCodeV2 根目录** 已 `bun install` 后：

```powershell
cd packages/kcode-pi
bun link
bun link --global kcode-pi
```

新开终端，在**业务项目根目录**：

```powershell
kcode --version
kcode
```

未 link 时也可直接：

```powershell
bun E:\path\to\KCodeV2\packages\coding-agent\src\cli.ts --version
```

## 用户安装

一键（自动 Bun + 全局包）: `irm .../scripts/install-kcode.ps1 | iex`（Windows）或 `curl .../install-kcode.sh | sh`（见 `docs/KCODE_NPM_PUBLISH.md` 完整 URL）。

或 `npm install -g kcode-pi@0.2.11`（需已装 Bun）。发布见 **`docs/KCODE_NPM_PUBLISH.md`**。

## 常用子命令

  **CLI 入口**：产品壳源码只在 `packages/coding-agent/src/cli.ts` / `cli-commands.ts`。`packages/kcode-pi` 不再包含 `cli/` 源入口；npm/bin 入口是 `dist/kcode.js`，由 `scripts/generate-kcode-launcher.ts` 生成并加载 `@kingdee-kcode/coding-agent/cli`。源码调试运行 `bun packages/coding-agent/src/cli.ts <subcommand>`；调试发布产物运行 `bun packages/kcode-pi/dist/kcode.js <subcommand>`。

| 命令 | 说明 |
|------|------|
| `kcode init --cosmic` | 初始化 Cosmic Java 项目（生成 `.trellis/` + `.kcode/`，写入产品画像到 `.trellis/spec/project/index.md`） |
| `kcode init --enterprise` | 初始化企业版 C# / Python 项目（同上） |
| `kcode init-status` | 检查当前目录是否已经初始化（不写文件） |
| `kcode auth-broker login <provider>` | 完整 OAuth 登录（含 Anthropic / OpenAI Codex / GitHub Copilot 等白名单 provider 的 PKCE 流程） |
| `kcode auth-broker list` | 列出全部支持的 OAuth provider |
| `kcode auth-broker logout [<provider>]` | 注销已登录 provider |
| `kcode` | 启动助手（已 init 则直接进入会话） |
| `kcode --version` / `kcode --help` | 版本与帮助 |

### 故障排查入口

| 症状 | 排查命令 |
|---|---|
| "No OAuth login is waiting for a manual callback" | 裸 `login` / `/login` 应打开 provider 选择面板；只有在没有待完成登录时输入 `/login <redirect URL>` 才会出现该提示。若裸 `login` 触发它，先检查本机是否仍有旧 `kd-core` shim |
| 找不到模型 | 用 `kcode auth-broker list` 确认 provider，再用 `kcode auth-broker login <provider>` 登录 |
| 提示未初始化 | `kcode init --cosmic` 或 `kcode init --enterprise`（按产品线二选一） |
| TUI 启动失败 | 先跑 `kcode init-status`，再检查 `.kcode/settings.json`、`.kcode/mcp.json` 与模型登录状态 |

文档：仓库 [`docs/README.md`](../../docs/README.md)（导航）、[`docs/USER_GUIDE.md`](../../docs/USER_GUIDE.md)；对外简明版 `scripts/kcode-install-docs/USAGE.md` → [kcode-install](https://github.com/wangneal/kcode-install)。