-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
231 lines (203 loc) · 12.5 KB
/
Copy path.env.example
File metadata and controls
231 lines (203 loc) · 12.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# Wraith CLI 配置示例
# 用法:
# 1. 复制本文件为 .env
# 2. 按需填写下面的配置项
# 3. 未填写的项会回退到代码默认值
# ========== GLM 配置 ==========
# API Key(必填其一:任意 provider 的 <NAME>_API_KEY,见文末「provider 的发现方式」;
# 这里以 GLM 为例)
GLM_API_KEY=your_api_key_here
# 模型名称(可选,默认 glm-5.1)
# 可选值:glm-5.1, glm-5v-turbo, glm-5.0, glm-4-flash 等
# glm-5v-turbo 支持图片输入,可配合 Ctrl+V / @image: 使用
# GLM_MODEL=glm-5.1
# ========== DeepSeek 配置 ==========
# API Key(/model deepseek 切换后使用)
# DEEPSEEK_API_KEY=your_deepseek_api_key_here
# 模型名称(可选,默认 deepseek-v4-flash)
# 可选值:deepseek-v4-flash, deepseek-v4-pro
# DEEPSEEK_MODEL=deepseek-v4-flash
# ========== 阶跃星辰 StepFun 配置 ==========
# API Key(/model step 切换后使用)
# STEP_API_KEY=your_step_api_key_here
# 模型名称(可选,默认 step-3.5-flash)
# 可选值:step-3.5-flash, step-3.5-flash-2603, step-router-v1, step-1-256k 等
# STEP_MODEL=step-3.5-flash
# Base URL(可选,默认 https://api.stepfun.com/v1)
# 如果使用 Step Plan 专用通道,可设置为 https://api.stepfun.com/step_plan/v1
# STEP_BASE_URL=https://api.stepfun.com/v1
# ========== Kimi / Moonshot 配置 ==========
# API Key(/model kimi 切换后使用;兼容官方 MOONSHOT_API_KEY)
# KIMI_API_KEY=your_kimi_api_key_here
# MOONSHOT_API_KEY=your_moonshot_api_key_here
# 模型名称(可选,默认 kimi-k2.6;兼容 MOONSHOT_MODEL)
# KIMI_MODEL=kimi-k2.6
# Base URL(可选,默认 https://api.moonshot.ai/v1;兼容 MOONSHOT_BASE_URL)
# KIMI_BASE_URL=https://api.moonshot.ai/v1
# ========== FreeLLMAPI 本地网关配置 ==========
# API Key(/model freellmapi 切换后使用;可从 FreeLLMAPI /keys 顶部 unified API key 复制)
# FREELLMAPI_API_KEY=your_freellmapi_unified_key_here
# 模型名称(可选,默认 auto;也可填 /v1/models 返回的具体 model id)
# FREELLMAPI_MODEL=auto
# Base URL(可选,默认 http://localhost:5173/v1)
# FREELLMAPI_BASE_URL=http://localhost:5173/v1
#
# freellmapi 同时是「通用 OpenAI 兼容」入口:把 BASE_URL 指向任意 OpenAI 兼容端点即可接入自定义模型,
# 无需改代码。客户端会自动在 BASE_URL 后追加 /chat/completions,鉴权用 Authorization: Bearer <key>。
# 示例:接入 SophNet 托管的 DeepSeek-V4-Flash(注意 base 必须带 /v1)
# FREELLMAPI_BASE_URL=https://www.sophnet.com/api/open-apis/v1
# FREELLMAPI_MODEL=DeepSeek-V4-Flash
# FREELLMAPI_API_KEY=your_sophnet_api_key_here
# 切换:启动后 /model freellmapi,或 /config provider freellmapi --base-url <url> --api-key <key> --model <id> --default
# ── provider 的发现方式 ────────────────────────────────────────────────────
# wraith 按这个顺序找可用 provider:
# 1. ~/.wraith/config.json 里 defaultProvider 指定的那个(若它有 key)
# 2. config.json 的 providers 里其余有 key 的(按你添加的顺序)
# 3. 本文件 / 环境变量里发现的 <NAME>_API_KEY → provider 名 = 小写的 NAME
#
# 所以只在这里写一行 ANTHROPIC_API_KEY=sk-... 就能跑,不必打开桌面面板。
# 同理 OPENAI_API_KEY / DEEPSEEK_API_KEY / GLM_API_KEY 等。
#
# 第 3 条有一道护栏:端点定不了的不会被采用。以下 provider 有内置端点,只给 key 即可 ——
# glm / deepseek / step / kimi / freellmapi / xfyun / anthropic / openai
# 其它(自建服务、代理网关)必须同时给 <NAME>_BASE_URL,例如:
# MY_GATEWAY_API_KEY=sk-...
# MY_GATEWAY_BASE_URL=https://llm.internal/v1
# 为什么要这道闸:baseUrl 空着时会兜底到 https://api.openai.com/v1 ——
# 那意味着把你的 key 静默发给 OpenAI,比连不上更糟。
#
# 注意 EMBEDDING_API_KEY 与任何 WRAITH_* 都不会被当成推理 provider(前者是 RAG 的
# embedding 后端,后者是 wraith 自己的命名空间,如 Runtime HTTP API 的认证 key)。
# Embedding 配置(用于 /index、/search、Agent 的代码检索)
# 支持 provider:ollama / openai / zhipu / glm
# 不配置时默认使用 ollama + nomic-embed-text:latest + http://localhost:11434
EMBEDDING_PROVIDER=ollama
EMBEDDING_MODEL=nomic-embed-text:latest
EMBEDDING_BASE_URL=http://localhost:11434
# 如果使用需要鉴权的远程 Embedding 服务,再打开这一项
# EMBEDDING_API_KEY=your_api_key_here
# ========== Web 搜索配置 ==========
# Key 取值链:环境变量 → 系统属性 → ./.env → ~/.env → ~/.wraith/config.json 的 search 节
# 三条路现在是对等的——都能从 config.json 读到。此前只有 GLM_API_KEY 能(它蹭的是
# providers.glm.apiKey),SERPAPI_KEY / SEARXNG_URL 在 config.json 里没有对应概念,
# 于是只能来自环境变量:「只有配了 GLM 的人 web_search 才零配置可用」就是这么来的。
# 也可以不写 .env,直接用 CLI 写进 config.json:
# /config search --provider searxng --base-url http://localhost:8888
# /config search --provider serpapi --api-key <key>
#
# 选择搜索 provider(zhipu | serpapi | searxng | duckduckgo),不配置时按 Key/URL 自动判断:
# 1. 有 GLM_API_KEY → zhipu(与 GLM 推理共用 Key)
# 2. 有 SERPAPI_KEY → serpapi(国际通用,付费即开即用)
# 3. 有 SEARXNG_URL → searxng(开源自托管,免费无需 key,需本地跑 docker 实例)
# 4. 都没有 → 报「未配置」,并按本机环境给引导(有 docker 就给 docker run + /config search)
#
# duckduckgo 无需任何 key,但靠抓 HTML,会因改版或限流失效,只建议临时用;
# 它永远不会被自动选中,只能显式指定(SEARCH_PROVIDER=duckduckgo 或 /config search)。
# SEARCH_PROVIDER=zhipu
# 智谱 Web Search 引擎(SEARCH_PROVIDER=zhipu 时启用)
# 可选:search_std(0.01 元/次,默认)、search_pro(0.03 元/次)、
# search_pro_sogou(0.05 元/次,搜狗)、search_pro_quark(0.05 元/次,夸克)
# 中文搜索建议用 search_pro 或搜狗 / 夸克版本,效果优于通用 std
# ZHIPU_SEARCH_ENGINE=search_std
# SerpAPI Key(SEARCH_PROVIDER=serpapi 时启用)
# 免费 100 次/月:https://serpapi.com/manage-api-key
# SERPAPI_KEY=your_serpapi_key_here
# SearXNG 实例地址(SEARCH_PROVIDER=searxng 时启用)
# 本地 docker:docker run --rm -p 8888:8888 searxng/searxng
# 公共实例(不稳定,仅试玩):见 https://searx.space
# SEARXNG_URL=http://localhost:8888
# ========== Web 抓取配置 ==========
# web_fetch 工具:抓取 URL 并提取正文 Markdown
# 当前实现走「直接 HTTP + Jsoup + 简易 readability」,对静态/SSR 页面有效
# 对 SPA / 防爬墙站点会返回空正文(已知边界),Agent 会 fallback 到 Chrome DevTools MCP
# 默认安全策略:屏蔽 file:// / 内网 / loopback;30 秒超时;5MB 响应上限;每分钟 30 次限流
# ========== MCP 配置 ==========
# MCP server 配置文件位置:
# 1. 用户级 ~/.wraith/mcp.json
# 2. 项目级 .wraith/mcp.json(按 server 名覆盖用户级)
# 支持 ${PROJECT_DIR}、${HOME} 和环境变量 ${VAR} 展开。
# 远程 Streamable HTTP server 常用 token 示例:
# REMOTE_TOKEN=your_remote_mcp_token_here
# ========== 渲染器形态(v16.1+)==========
# 默认 inline 流式 TUI(Claude Code 风格:底部状态栏 + 行内可折叠工具块 + 行内 diff)
# WRAITH_RENDERER=inline # 默认值,显式声明
# WRAITH_RENDERER=lanterna # 切换到 Lanterna 三栏全屏 TUI(v16 形态,可选保留)
# WRAITH_RENDERER=plain # 纯 println 兜底,无折叠/状态栏
# WRAITH_NO_STATUSBAR=true # inline 模式下禁用底部状态栏(终端不支持 DECSTBM 时使用)
# 兼容旧设置:WRAITH_TUI=true 自动映射为 WRAITH_RENDERER=lanterna(已 deprecated)
# WRAITH_TUI=true
# ========== LSP 诊断注入(第 17 期)==========
# write_file 成功后触发 post-edit 诊断;当前 MVP 对 Java 文件使用 JavaParser 语法诊断,
# 不依赖本机安装 JDT LS。后续接真实 LSP server 时复用同一注入链路。
# WRAITH_LSP_ENABLED=true
# WRAITH_LSP_MAX_DIAGNOSTICS=20
# ========== Side-Git 快照与回滚(第 18 期)==========
# 每个用户 turn 开始前创建 pre-turn 快照,结束后异步创建 post-turn 快照。
# 快照仓库位于 ~/.wraith/snapshots/<project_hash>/<worktree_hash>/.git,不写用户项目 .git。
# WRAITH_SNAPSHOT_ENABLED=true
# WRAITH_SNAPSHOT_MAX=50
# WRAITH_SNAPSHOT_EXCLUDES=.git,.wraith/snapshots,target,node_modules,dist,.idea,*.class,*.jar
# WRAITH_SNAPSHOT_DIR=/Users/yourname/.wraith/snapshots
# ========== 后台任务 + Runtime API(第 20 期)==========
# 后台任务 SQLite 队列默认位于 ~/.wraith/tasks/tasks.db
# WRAITH_TASK_DIR=/Users/yourname/.wraith/tasks
# 后台任务 worker 数,默认 2
# WRAITH_TASK_WORKERS=2
# Runtime API 仅监听 127.0.0.1,并强制要求 API Key。
# 启动示例:
# WRAITH_RUNTIME_API_KEY=your_local_api_key java -jar target/wraith-1.0-SNAPSHOT.jar serve --http --port 8080
# 请求头:
# Authorization: Bearer your_local_api_key
# 或:
# X-Wraith CLI-API-Key: your_local_api_key
# WRAITH_RUNTIME_API_KEY=your_local_api_key
# WRAITH_RUNTIME_DIR=/Users/yourname/.wraith/runtime
# ========== Chrome DevTools MCP ==========
# chrome-devtools 是内建 server,无需任何配置文件即可用,等价于:
# npx -y chrome-devtools-mcp@latest --isolated=true
# 它不会被写进 ~/.wraith/mcp.json;在 mcp.json 里写同名条目即可完全覆盖。
# 永久关掉内建项(不想要浏览器能力,或不想让它每次都拉 npx 包):
# WRAITH_MCP_BUILTIN_BROWSER=off
# isolated 模式使用临时 user-data-dir;复用登录态时,Chrome 144+ 推荐在
# chrome://inspect/#remote-debugging 勾选 Allow remote debugging for this browser instance,
# 然后让 Agent 自动调用 browser_connect,或手动执行 /browser connect。
# 如果希望默认连接调试 Chrome,可手动把 ~/.wraith/mcp.json args 改成:
# ["-y", "chrome-devtools-mcp@latest", "--autoConnect"]
# 旧式 CDP HTTP JSON 端口可改成:
# ["-y", "chrome-devtools-mcp@latest", "--browser-url=http://127.0.0.1:9222"]
# 如果首次启动 npx 拉包或 Chrome 冷启较慢,可调长 MCP initialize 超时:
# WRAITH_MCP_INITIALIZE_TIMEOUT_SECONDS=60
# ========== LLM HTTP 超时(可选)==========
# SSE 流式接口下,readTimeout 是"两次 read 之间最大间隔"。
# GLM-5.1 在生成大段 reasoning_content 时服务端可能长时间静默,超时容易触发。
# 仅当遇到频繁 "调用 LLM 失败: timeout" 时再调大;通过 -D 系统属性传入:
# java -Dwraith.llm.read.timeout.seconds=600 -jar target/wraith-1.0-SNAPSHOT.jar
# 默认值:connect=60s / read=300s / write=60s / call=600s
# 日志配置(支持自动滚动、压缩和清理)
# 默认日志目录:~/.wraith/logs
# 默认日志文件:~/.wraith/logs/wraith.log
# 日志级别可选:ERROR / WARN / INFO / DEBUG
WRAITH_LOG_LEVEL=INFO
# 日志目录。建议填绝对路径
WRAITH_LOG_DIR=/Users/yourname/.wraith/logs
# 最多保留多少天的历史日志
WRAITH_LOG_MAX_HISTORY=7
# 单个日志文件滚动前的最大体积
WRAITH_LOG_MAX_FILE_SIZE=10MB
# 所有归档日志允许占用的总容量,超出后会自动清理更老的日志
WRAITH_LOG_TOTAL_SIZE_CAP=100MB
# ========== 操作审计配置 ==========
# 危险工具(write_file / execute_command / create_project / revert_turn)调用会按天写一行 JSONL 审计
# 默认目录:~/.wraith/audit/audit-YYYY-MM-DD.jsonl
# 也可通过 -Dwraith.audit.dir=/path/to/dir 系统属性覆盖
# WRAITH_AUDIT_DIR=/Users/yourname/.wraith/audit
# ========== 第 15 期:Skill 系统 ==========
# Skill 加载位置(按优先级,后者覆盖前者):
# 1. jar 内置 (resources/skills/) — Wraith CLI 自带 web-access
# 2. 用户级 ~/.wraith/skills/<name>/SKILL.md
# 3. 项目级 <project>/.wraith/skills/<name>/SKILL.md
# 启动期 jar 内置 skill 自动解压到 ~/.wraith/skills-cache/<name>/,避免每次启动 IO
# 启用状态持久化:~/.wraith/skills.json (格式 {"disabled": ["name1", ...]},默认全启用)
# 内置 web-access 含决策手册 + 6 个 site-patterns(mp.weixin / zhihu / x.com / xiaohongshu / github / juejin)
# CLI: /skill list | /skill show <name> | /skill on/off <name> | /skill reload
# LLM 自决加载:当 system prompt 里某个 skill 的 description 匹配任务时,LLM 调 load_skill(name) 加载完整指引