{"_id":"@adamplatin123/dzcf","name":"@adamplatin123/dzcf","dist-tags":{"rc":"0.0.1-rc.2","latest":"0.0.1-rc.2"},"versions":{"0.0.1-rc.2":{"name":"@adamplatin123/dzcf","description":"dzcf: DeepSeek Zero-Config Flow — one-command setup wizard for DeepSeek Harness (install dsh, store credentials, pick a surface, integrate capabilities)","version":"0.0.1-rc.2","type":"module","bin":{"dzcf":"lib/bin.js"},"license":"BSD-3-Clause","engines":{"node":"^22.19.0 || >=24.0.0"},"dependencies":{"@clack/prompts":"^1.7.0","ansis":"^4.1.0","commander":"^15.0.0","js-yaml":"^4.2.0"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^22.20.0","tsdown":"^0.22.2","tsx":"^4.22.4","typescript":"^6.0.3","vitest":"^4.1.8"},"scripts":{"build":"tsc -b && tsdown","test":"vitest run","dev":"node --import tsx/esm src/bin.ts"},"gitHead":"2fc769205c8146db8d88ee9038824eb044d89eb9","_id":"@adamplatin123/dzcf@0.0.1-rc.2","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-XsypyAjZvDY0VNDFaQ0BIVigJJFCnMyHpa6YsS9QtnFVzYzfXkWLtjbnH/dY0/+dhUD1eShcQE6M+/1/gtuURw==","shasum":"31d80b2321e42bda102c0a542ccdaf08abf8a4e1","tarball":"https://registry.npmjs.org/@adamplatin123/dzcf/-/dzcf-0.0.1-rc.2.tgz","fileCount":5,"unpackedSize":69834,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFozwbQwJz+OkjDkpy91PswweDK6nC8mujH7suv/yYwZAiBLAPzRP1JZ3l2utVE4/EIqqkGwgaRKDOBHOONsRhsNLg=="}]},"_npmUser":{"name":"adamplatin123","email":"ameriadam12@gmail.com"},"directories":{},"maintainers":[{"name":"adamplatin123","email":"ameriadam12@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dzcf_0.0.1-rc.2_1786623924815_0.6362662267821355"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-13T12:25:24.657Z","0.0.1-rc.2":"2026-08-13T12:25:24.967Z","modified":"2026-08-13T12:25:25.155Z"},"maintainers":[{"name":"adamplatin123","email":"ameriadam12@gmail.com"}],"description":"dzcf: DeepSeek Zero-Config Flow — one-command setup wizard for DeepSeek Harness (install dsh, store credentials, pick a surface, integrate capabilities)","license":"BSD-3-Clause","readme":"# `@deepseek-ai/dzcf`\n\n[English](README.md) | 中文\n\ndzcf（DeepSeek Zero-Config Flow）是 DeepSeek Harness 的一键配置向导。它把一台机器从零带到可运行的 `dsh` 部署：缺 `dsh` 时装好它，把 DeepSeek API Key（以及可选的自定义端点）写入 harness 数据目录的凭据文档，并验证所选 profile 可以组装。\n\n## 快速开始\n\n```sh\nnpx @deepseek-ai/dzcf            # install-and-run through npx; interactive: install, key, base URL, surface\nnpx @deepseek-ai/dzcf i          # same full init, explicitly\ndzcf --help                      # grammar (after a global install)\n```\n\n非交互（CI、脚本）：\n\n```sh\ndzcf i --key sk-… --mode headless --yes\ndzcf i --key sk-… --mode web --base-url https://relay.example.com --yes\ndzcf i --key sk-… --mode web --dry-run    # report the plan, write nothing\n```\n\n\n## 它做什么\n\n1. **检测 `dsh`**（`dsh -V`）。不存在？向导会提议用 `pnpm` 或 `npm` 全局安装 `@deepseek-ai/dsh`（`--yes` 跳过询问；没有可用包管理器则报错退出）。\n2. **收集输入**——DeepSeek API Key（掩码输入）、可选的 `DEEPSEEK_BASE_URL` 覆盖，以及运行形态（`headless` 一次性任务，或 `web` 浏览器 UI）。交互模式逐项询问；非交互模式必须有 `--key` 和 `--mode`，缺失即报错退出。\n3. **写入凭据**到 `$DSH_HOME/.credentials.yaml`——`dsh-credentials-local` 读取的受管文档，仅属主可读写（0700 目录下的 0600 文件）。未涉及的既有条目原样保留；写入在跨进程写锁内先重读再原子提交。Key 绝不回显：摘要里始终是掩码（`sk-***4321`）。\n4. **验证 profile**：执行 `dsh --profile <mode> --dump-default-config`——内置的 `web`/`headless` profile 首次启动会自动初始化，所以一次成功的 dump 就能证明零配置闭环，无需任何模型调用。失败时输出 dsh 的 stderr；已写入的凭据保留。\n5. **打印下一步**——`dsh web` 或 `dsh --profile headless \"你的任务\"`。\n\n除此之外不碰任何东西：不重写 profile 文件、不生成 `cordis.yml`，向导自身也从不调用模型 API。\n\n## 参数\n\n| 参数 | 含义 |\n|---|---|\n| `i` | 完整初始化（与裸命令等价）。 |\n| `c` | 仅配置集成；需要 `--profile` 与 `--with`。 |\n| `k` | 仅更新凭据（Key / Base URL）。 |\n| `-k, --key <key>` | API Key；跳过掩码输入。 |\n| `--base-url <url>` | 端点覆盖；必须是 http(s) 地址，否则退出码 1。 |\n| `-m, --mode <mode>` | `headless` 或 `web`；跳过列表选择。 |\n| `-l, --lang <lang>` | 界面语言：`zh-CN`（默认）或 `en`。 |\n| `-y, --yes` | 对安装与写入确认一律视为同意。 |\n| `-p, --profile <name>` | 集成选项所用的自定义 profile 名称。 |\n| `--with <list>` | 集成 id，逗号分隔（`exa,terminal,lsp`）。 |\n| `--mcp-command <cmd>` | MCP 服务器启动命令（非交互 `--with mcp`）。 |\n| `--dry-run` | 打印计划中的写入与验证命令，不落盘。 |\n| `-V, --version` | 打印版本后退出。 |\n\n## 集成选项\n\n向导可以在内置 `web`/`headless` 形态之外扩展部署。选择任一选项会创建自定义 profile（`--profile <name>`，默认 `dzcf`），通过启动器自身的 `dsh plugin add` 安装能力，写入其 patch 行并验证组合：\n\n| 选项 | 效果 |\n|---|---|\n| `exa` | 接入 Exa 搜索提供商（`EXA_API_KEY` → `$DSH_HOME/.env`）。 |\n| `perplexity` | 接入 Perplexity 搜索提供商（`PERPLEXITY_API_KEY` → `$DSH_HOME/.env`）。 |\n| `sqlite` | 用 SQLite 持久化会话历史（替换默认 JSONL）。 |\n| `terminal` | 添加持久 PTY 终端工具。 |\n| `lsp` | 添加语言服务器符号导航（service + stdio 后端 + 工具）。 |\n| `codex` | 把子任务委派给本机 Codex CLI（需已安装 codex）。 |\n| `claude` | 把子任务委派给本机 Claude Code（需已安装 claude）。 |\n| `mcp` | 接入一个 MCP 服务器（输入其启动命令）。 |\n\n交互模式用多选提问；非交互用 `--with exa,terminal,lsp` 与 `--profile <name>`。提供商 Key 仅在交互模式提示。\n\n## 开发\n\n向导是普通 Node CLI，依赖三个可注入接缝——`RunFn`（子进程）、`PromptFn`（@clack/prompts 端口）与 harness 数据目录——因此整个流程无需 TTY 即可测试。发布的 tarball 完全自包含：它复用的两个 `@deepseek-ai` 工具（`dsh-home-paths`、`dsh-atomic-write`）在构建期即被打入 bin（`noExternal`），因此 npx 运行只解析公共 npm 包，绝不触碰私有 `@deepseek-ai` scope。源码启动：仓库根目录执行 `pnpm dzcf <args...>`（tsx ESM 钩子，无需构建）。单元测试覆盖命令语法、凭据文档契约、能力目录、profile patch 写入与向导流程；keyless 快照通过 PATH 上的 fixture `dsh` 端到端重放真实入口。\n\n## 已知限制\n\n- Base URL 输入只校验 http(s) 格式，不检查可达性与 Key 有效性——首次真实请求才会暴露这类失败。\n- 凭据写入是原子的但非崩溃持久（继承自 `dsh-atomic-write`）；文档每次启动都会重读。\n- Windows 下跳过 0600/0700 权限校验，与 `dsh-credentials-local` 一致。\n","readmeFilename":"README.zh.md","_rev":"1-618cf939b96952530c4c49fdb7b086e6"}