安装
两种方式,挑你已经有的。
独立安装 — 不需要 App
curl -fsSL https://lingcode.dev/install-cli.sh | sh
下载已签名、已公证的压缩包到 ~/.lingcode/cli/,并在 ~/.local/bin/lingcode 建立符号链接。Node 桥接内置其中,Claude 提供方无需安装 LingCode.app 也能用(仍需 Node.js 与 API 密钥)。
从已安装的 LingCode.app
/Applications/LingCode.app/Contents/Resources/bin/lingcode install
install 子命令会优先尝试 /usr/local/bin,失败回退到 ~/.local/bin,必要时输出 PATH 提示。
快速开始
# 一条命令把密钥存入钥匙串(会打开浏览器)
lingcode auth login
# 交互式会话(默认 Claude)
lingcode
# 用其他提供方启动交互式会话
lingcode --provider ollama --model llama3.2
lingcode --provider groq --model llama-3.1-70b-versatile
# 一次性问答
lingcode ask "解释这个报错" < build.log
echo "2+2 等于几?" | lingcode ask -
# 检查配置
lingcode auth status
lingcode --help
交互式 REPL
不带任何参数运行 lingcode,就进入多轮交互会话。等价于 lingcode repl,只是更短。
REPL 根据提供方分两种形态:
- Claude 模式 — 完整 Agent 循环:工具调用、文件编辑、MCP 服务器、Hooks、会话续接、权限询问、彩色 diff。通过内置 Node 桥接驱动
@anthropic-ai/claude-agent-sdk。 - OpenAI 兼容模式 — 纯文本流式对话,支持任何 OpenAI 兼容端点。没有工具调用,但可对接 OpenAI、Groq、Together、OpenRouter、Mistral、xAI、Fireworks、Ollama、DeepSeek 以及自建代理。
行编辑器
当 stdin 是终端时,你有一个完整的行编辑器:
↑ / ↓ | 历史输入前翻 / 后翻 |
← / → / Home / End | 光标移动 |
Tab | 补全斜杠命令(内置+自定义) |
行尾 \ | 继续在下一行输入 |
Ctrl-C | 取消正在执行的请求(Claude)/ 放弃当前行 |
Ctrl-D | 空行退出,否则删除光标字符 |
| 括号粘贴 | 多行剪贴板内容作为一次输入粘贴 |
提示符
REPL 在非零时显示轮次与累计费用:
lingcode> 解释这个仓库
…
lingcode [1t $0.003]> 建议一种重构方式
…
lingcode [2t $0.011]>
提供方
用 --provider 选择;可按需覆盖 model、base URL、API key 环境变量。
| 提供方 | 环境变量 | 默认模型 | 工具? |
|---|---|---|---|
claude(默认) | ANTHROPIC_API_KEY | SDK 默认 | ✓ |
deepseek | DEEPSEEK_API_KEY | deepseek-chat | — |
openai | OPENAI_API_KEY | gpt-4o-mini | — |
groq | GROQ_API_KEY | llama-3.1-70b-versatile | — |
together | TOGETHER_API_KEY | Llama-3.3-70B-Instruct-Turbo | — |
openrouter | OPENROUTER_API_KEY | anthropic/claude-sonnet-4 | — |
mistral | MISTRAL_API_KEY | mistral-large-latest | — |
xai | XAI_API_KEY | grok-2-latest | — |
fireworks | FIREWORKS_API_KEY | llama-v3p1-70b-instruct | — |
ollama | —(无) | llama3.2 | — |
deepseek-compat | DEEPSEEK_API_KEY | deepseek-chat | — |
任意 OpenAI 兼容端点
lingcode --provider openai \
--base-url https://my-proxy.example.com/v1 \
--api-key-env MY_KEY_VAR \
--model gpt-4o
工具调用、MCP、Hooks、会话续接仅 Claude 可用 —— 这些能力依赖 Agent SDK。REPL 的其他功能(斜杠命令、Markdown 渲染、token 显示、历史、Tab 补全)所有提供方都支持。
一次性 ask
# 基本用法
lingcode ask "总结这个仓库的架构"
# 把内容 pipe 进去
cat error.log | lingcode ask "解释一下"
# 整段 prompt 从 stdin 读入
echo "2+2 等于几?" | lingcode ask -
# 切换提供方
lingcode ask --provider groq "一行话解释这个正则:/\d{3}-\d{4}/"
# Claude 全工具模式,自动批准
lingcode ask --provider claude --yolo "给 .gitignore 加一条 .DS_Store"
# 附加文件
lingcode ask --provider claude --file screenshot.png "这个界面哪里不对?"
# 结构化输出(适合脚本)
lingcode ask --output-format stream-json "修复 main.swift 里失败的测试"
常用 flag
--continue | 续接当前目录下最近一次 Claude 会话 |
--resume <id> | 按 ID 续接指定会话 |
--file <path> | 附加文件(图片、PDF、文本),可重复,仅 Claude |
--allowed-tools Read,Write | 只允许这些工具(仅 Claude) |
--disallowed-tools Bash | 禁用这些工具 |
--add-dir ~/other | Agent 可访问的额外目录,可重复 |
--thinking | 启用 Claude 的扩展思考 |
--system-prompt "..." | 覆盖系统提示 |
--append-system-prompt "..." | 追加到系统提示 |
--output-format text|json|stream-json | 输出格式 |
--output path/out.md | 把回复写入文件 |
--verbose | 不截断工具输入/输出 |
--yolo | 自动批准每次工具调用。危险。 |
斜杠命令
在 REPL 提示符下输入。
所有提供方
/help | 列出命令 |
/model <name> | 中途切换模型 |
/reset | 清空对话(Claude:同时开新会话) |
/cost | 累计 token 用量 |
/export [path] | 把对话保存为 markdown |
/clear | 清屏 |
/quit | 退出 |
仅 Claude
/mode <mode> | 切换权限模式 (default / acceptEdits / plan / dontAsk / bypassPermissions) |
/yolo | 跳过所有权限询问 |
/compact | 总结并压缩对话历史 |
/session | 显示当前 session ID |
/tools | 列出可用内置工具 |
/commands | 列出自定义斜杠命令 |
/doctor | 诊断环境 (node、API key、桥接、MCP、Hooks) |
/init | 为当前项目生成 CLAUDE.md |
仅 OpenAI 兼容
/system <text> | 替换本次会话的系统提示 |
自定义
把一个 Markdown 文件放到 .claude/commands/<name>.md,就能用 /project:<name> 调用。放到 ~/.claude/commands/ 下用 /user:<name>。纯 /<name> 先查 project,再查 user。命令名后的任何文字会追加到正文之后。
$ echo "用中文解释一下当前 git 暂存区的变更。" > .claude/commands/explain-staged.md
$ lingcode
lingcode> /project:explain-staged
鉴权与 API 密钥
三种来源,按此顺序检查:环境变量、macOS 钥匙串、配置文件。任一即可。
# 浏览器辅助:打开提供方控制台,粘贴密钥,存入钥匙串
lingcode auth login
lingcode auth login --provider deepseek
# 直接写入
lingcode auth set anthropic sk-ant-...
lingcode auth set deepseek sk-...
# 查看已配置项(值已脱敏)
lingcode auth status
# 删除密钥
lingcode auth delete anthropic
关于 OAuth:Anthropic 不向第三方 CLI 发放 OAuth client ID,因此无法做真正的 /login OAuth 流程。lingcode auth login 是实际可行的替代方案 —— 打开浏览器,等你粘贴密钥,然后写入钥匙串。
其他提供方(openai、groq、together、openrouter、mistral、xai、fireworks、ollama)不走钥匙串路径,直接在 shell 里设置环境变量即可:
export OPENAI_API_KEY=sk-...
export GROQ_API_KEY=gsk-...
MCP 服务器、Hooks、自定义命令
与 Claude Code 项目约定兼容。
MCP 服务器
项目根放一个 .mcp.json(全局放 ~/.claude.json):
{
"mcpServers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}
用 --mcp-config <path> 覆盖,用 --no-mcp 关闭。MCP 仅 Claude 可用。
Hooks
把 Hooks 写在 .claude/settings.json。它们以 shell 命令运行,环境变量里包含 CLAUDE_TOOL_NAME、CLAUDE_TOOL_INPUT 以及(对 PostToolUse)CLAUDE_TOOL_RESULT:
{
"hooks": {
"PreToolUse": [
{ "matcher": "Write|Edit", "hooks": [{ "type": "command", "command": "echo 即将编辑: $CLAUDE_TOOL_INPUT" }] }
],
"Stop": [
{ "hooks": [{ "type": "command", "command": "say 完成" }] }
]
}
}
自定义斜杠命令
放在 .claude/commands/(项目)或 ~/.claude/commands/(用户)下的 Markdown 文件。格式与 Claude Code 一致 —— 文件正文就是 prompt。
与运行中的 App 通信
当 LingCode.app 打开时,以下命令通过 ~/Library/Application Support/LingCode/ipc.sock 的 Unix socket 驱动它:
| 命令 | 作用 |
|---|---|
lingcode ping | 检查 App 是否在运行并响应。 |
lingcode open path/to/file.swift | 在 App 里打开文件或文件夹(必要时启动 App)。 |
lingcode status | 显示聚焦项目与正在运行的 Agent。 |
lingcode ask "..." | 把 prompt 路由到 App,结果流式输出到 stdout。 |
lingcode watch | 实时 tail Agent 活动。Ctrl-C 停止。 |
给 ask 加 --headless 可强制本地执行,即使 App 开着。
子命令参考
| 子命令 | 用途 |
|---|---|
repl(默认) | 交互式多轮会话。lingcode 不带参数即等价。 |
ask | 一次性 prompt,支持流式、JSON 输出、附件、续接。 |
auth | login / set / get / delete / status 管理 macOS 钥匙串。 |
config | 读写 ~/.lingcode/config.json —— 默认值、已存密钥。 |
init | 分析仓库并为当前项目生成 CLAUDE.md。 |
history | 列出 ~/.lingcode/history.jsonl 里的历史会话。 |
completion zsh|bash|fish | 输出 shell 补全脚本。 |
ping | IPC 探测运行中的 App。 |
open | 在运行中的 App 打开文件或文件夹。 |
status | App 聚焦 / Agent 状态。 |
watch | 流式 Agent 活动。 |
install | 把 lingcode 符号链接到 PATH。 |
故障排查
lingcode: ANTHROPIC_API_KEY is not set
用 lingcode auth login 搞定,或在 shell 里 export,或 lingcode config set anthropic-api-key sk-ant-...。
lingcode: <PROVIDER_API_KEY> is not set
OpenAI 兼容提供方直接用环境变量。想用自定义变量名:lingcode --provider openai --api-key-env MY_KEY。
lingcode: couldn't find Claude agent bridge
Claude 提供方需要 bridge.mjs,它附带在 LingCode.app 或独立 CLI 压缩包里。要么把 LingCode.app 装到 /Applications,要么用 export LINGCODE_AGENT_BRIDGE_DIR=/path/to/agent-bridge 指向开发副本。
lingcode: cannot find `node` on PATH
装 Node.js(nodejs.org),重开 shell 后再试。或者 NODE 指向具体路径。仅 Claude 提供方需要;OpenAI 兼容提供方用纯 Swift。
被限流 / 429 / overloaded
ask 和 repl 都会自动以指数退避重试(最多 5 次,间隔最长 60 秒)。你会在 stderr 看到 rate limited (attempt N/5) — retrying in Xs…。
App 响应了,但我想要 headless
App 开着时 lingcode ask 默认路由给 App。加 --headless 强制本地执行。
我在终端里粘贴过 API 密钥
去提供方控制台轮换。shell 历史或 tmux scrollback 里的内容都要当作泄露处理。下次用 lingcode auth login(浏览器粘贴)或 lingcode auth set <provider> <key> —— 都不会把密钥打印到 stdout。