2026-04-01 14:30:05 +08:00
<!DOCTYPE html>
< html lang = "zh-CN" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2026-04-01 15:29:06 +08:00
< title > Bookworm Portable - 保姆式安装手册< / title >
2026-04-01 14:30:05 +08:00
< style >
:root {
--bg: #0d1117;
--card: #161b22;
--border: #30363d;
--text: #e6edf3;
--text-dim: #8b949e;
--accent: #58a6ff;
--green: #3fb950;
--yellow: #d29922;
--red: #f85149;
--purple: #bc8cff;
--cyan: #39d2c0;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--bg);
color: var(--text);
font-family: -apple-system, 'Segoe UI', 'Microsoft YaHei', sans-serif;
line-height: 1.7;
padding: 0;
}
2026-04-01 15:29:06 +08:00
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
2026-04-01 14:30:05 +08:00
.header {
background: linear-gradient(135deg, #1a1f35 0%, #0d1117 100%);
border-bottom: 1px solid var(--border);
padding: 3rem 2rem;
text-align: center;
}
.header pre {
color: var(--cyan);
font-size: 0.65rem;
line-height: 1.2;
margin-bottom: 1rem;
display: inline-block;
text-align: left;
}
2026-04-01 15:29:06 +08:00
.header h1 { font-size: 2rem; font-weight: 700; margin-bottom: 0.5rem; }
2026-04-01 14:30:05 +08:00
.header h1 span { color: var(--accent); }
.header p { color: var(--text-dim); font-size: 1.05rem; }
2026-04-01 15:29:06 +08:00
.badge-row { display: flex; gap: 0.8rem; justify-content: center; margin-top: 1rem; flex-wrap: wrap; }
2026-04-01 14:30:05 +08:00
.badge {
2026-04-01 15:29:06 +08:00
display: inline-flex; align-items: center; gap: 0.4rem;
background: var(--card); border: 1px solid var(--border);
border-radius: 20px; padding: 0.3rem 0.9rem; font-size: 0.85rem; color: var(--text-dim);
2026-04-01 14:30:05 +08:00
}
.badge strong { color: var(--text); }
2026-04-01 15:29:06 +08:00
.container { max-width: 900px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
2026-04-01 14:30:05 +08:00
2026-04-01 15:29:06 +08:00
.section { margin-bottom: 2.5rem; }
2026-04-01 14:30:05 +08:00
.section h2 {
2026-04-01 15:29:06 +08:00
font-size: 1.4rem; margin-bottom: 1rem; padding-bottom: 0.5rem;
border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 0.6rem;
2026-04-01 14:30:05 +08:00
}
.section h2 .num {
2026-04-01 15:29:06 +08:00
background: var(--accent); color: #000; width: 28px; height: 28px;
border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
font-size: 0.85rem; font-weight: 700; flex-shrink: 0;
2026-04-01 14:30:05 +08:00
}
.code-block {
2026-04-01 15:29:06 +08:00
background: #0d1117; border: 1px solid var(--border); border-radius: 8px;
padding: 1rem 1.2rem; margin: 0.8rem 0; overflow-x: auto; position: relative;
cursor: pointer; transition: border-color 0.2s;
}
.code-block:hover { border-color: var(--accent); }
.code-block::after {
content: "点击复制"; position: absolute; top: 0.4rem; right: 0.6rem;
font-size: 0.7rem; color: var(--text-dim); background: var(--card);
padding: 0.15rem 0.5rem; border-radius: 4px; border: 1px solid var(--border);
opacity: 0; transition: opacity 0.2s;
}
.code-block:hover::after { opacity: 1; }
.code-block.copied::after { content: "已复制!"; color: var(--green); opacity: 1; }
2026-04-01 14:30:05 +08:00
.code-block code {
font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
2026-04-01 15:29:06 +08:00
font-size: 0.9rem; line-height: 1.6; color: var(--text);
white-space: pre-wrap; word-break: break-all;
2026-04-01 14:30:05 +08:00
}
.code-block .label {
2026-04-01 15:29:06 +08:00
position: absolute; top: 0.4rem; left: 0.6rem;
font-size: 0.65rem; color: var(--text-dim); background: var(--card);
padding: 0.1rem 0.5rem; border-radius: 4px; border: 1px solid var(--border);
text-transform: uppercase; letter-spacing: 0.5px;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.code-block.has-label { padding-top: 2rem; }
.cmd { color: var(--green); }
.flag { color: var(--yellow); }
.url { color: var(--accent); }
.comment { color: var(--text-dim); }
2026-04-01 14:30:05 +08:00
.card {
2026-04-01 15:29:06 +08:00
background: var(--card); border: 1px solid var(--border);
border-radius: 10px; padding: 1.2rem 1.5rem; margin: 0.8rem 0;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.card h3 { font-size: 1rem; margin-bottom: 0.5rem; color: var(--accent); }
2026-04-01 14:30:05 +08:00
.card p { color: var(--text-dim); font-size: 0.95rem; }
2026-04-01 15:29:06 +08:00
.step { display: flex; gap: 1rem; margin: 1.2rem 0; align-items: flex-start; }
2026-04-01 14:30:05 +08:00
.step-icon {
2026-04-01 15:29:06 +08:00
width: 40px; height: 40px; border-radius: 10px;
display: flex; align-items: center; justify-content: center;
font-size: 1.2rem; font-weight: 700; flex-shrink: 0; margin-top: 0.1rem;
}
.step-icon.green { background: rgba(63,185,80,0.15); border: 1px solid rgba(63,185,80,0.3); color: var(--green); }
.step-icon.blue { background: rgba(88,166,255,0.15); border: 1px solid rgba(88,166,255,0.3); color: var(--accent); }
.step-icon.yellow { background: rgba(210,153,34,0.15); border: 1px solid rgba(210,153,34,0.3); color: var(--yellow); }
.step-icon.red { background: rgba(248,81,73,0.15); border: 1px solid rgba(248,81,73,0.3); color: var(--red); }
.step-icon.purple { background: rgba(188,140,255,0.15); border: 1px solid rgba(188,140,255,0.3); color: var(--purple); }
.step-content { flex: 1; }
.step-content h4 { font-size: 1.05rem; margin-bottom: 0.3rem; }
2026-04-01 14:30:05 +08:00
.step-content p { color: var(--text-dim); font-size: 0.9rem; }
2026-04-01 15:29:06 +08:00
table { width: 100%; border-collapse: collapse; margin: 0.8rem 0; font-size: 0.9rem; }
th, td { padding: 0.6rem 1rem; text-align: left; border-bottom: 1px solid var(--border); }
th { color: var(--text-dim); font-weight: 600; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.5px; }
td code { background: var(--bg); padding: 0.15rem 0.4rem; border-radius: 4px; font-size: 0.85rem; border: 1px solid var(--border); }
2026-04-01 14:30:05 +08:00
.alert {
2026-04-01 15:29:06 +08:00
border-radius: 8px; padding: 1rem 1.2rem; margin: 1rem 0;
font-size: 0.9rem; display: flex; gap: 0.8rem; align-items: flex-start;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.alert-icon { font-size: 1.2rem; flex-shrink: 0; line-height: 1.5; }
.alert.warning { background: rgba(210,153,34,0.08); border: 1px solid rgba(210,153,34,0.3); }
.alert.danger { background: rgba(248,81,73,0.08); border: 1px solid rgba(248,81,73,0.3); }
.alert.info { background: rgba(88,166,255,0.08); border: 1px solid rgba(88,166,255,0.3); }
.alert.success { background: rgba(63,185,80,0.08); border: 1px solid rgba(63,185,80,0.3); }
.checklist { list-style: none; padding: 0; }
.checklist li {
padding: 0.5rem 0; padding-left: 2rem; position: relative;
border-bottom: 1px solid rgba(48,54,61,0.5); color: var(--text-dim);
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.checklist li::before {
content: ""; position: absolute; left: 0; top: 0.65rem;
width: 18px; height: 18px; border: 2px solid var(--border); border-radius: 4px;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.checklist li.done::before {
background: var(--green); border-color: var(--green);
content: ""; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
background-size: 14px; background-position: center; background-repeat: no-repeat;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.checklist li.done { color: var(--text); }
.checklist li strong { color: var(--text); }
2026-04-01 14:30:05 +08:00
.flow {
2026-04-01 15:29:06 +08:00
display: flex; align-items: center; justify-content: center;
gap: 0; margin: 1.5rem 0; flex-wrap: wrap;
2026-04-01 14:30:05 +08:00
}
.flow-node {
2026-04-01 15:29:06 +08:00
background: var(--card); border: 1px solid var(--border); border-radius: 8px;
padding: 0.6rem 1rem; font-size: 0.85rem; text-align: center; min-width: 100px;
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.flow-node.active { border-color: var(--green); box-shadow: 0 0 8px rgba(63,185,80,0.2); }
.flow-arrow { color: var(--text-dim); font-size: 1.2rem; padding: 0 0.3rem; }
.screenshot-note {
background: var(--card); border: 1px solid var(--border); border-radius: 8px;
padding: 0.8rem 1rem; margin: 0.5rem 0; font-size: 0.85rem; color: var(--text-dim);
border-left: 3px solid var(--yellow);
2026-04-01 14:30:05 +08:00
}
2026-04-01 15:29:06 +08:00
.screenshot-note strong { color: var(--yellow); }
2026-04-01 14:30:05 +08:00
.footer {
2026-04-01 15:29:06 +08:00
text-align: center; padding: 2rem; color: var(--text-dim);
font-size: 0.8rem; border-top: 1px solid var(--border);
2026-04-01 14:30:05 +08:00
}
@media (max-width: 600px) {
.header { padding: 2rem 1rem; }
.header pre { font-size: 0.5rem; }
.header h1 { font-size: 1.5rem; }
.container { padding: 1.5rem 1rem; }
.flow { flex-direction: column; }
.flow-arrow { transform: rotate(90deg); }
2026-04-01 15:29:06 +08:00
.step { flex-direction: column; gap: 0.5rem; }
2026-04-01 14:30:05 +08:00
}
< / style >
< / head >
< body >
< div class = "header" >
< pre >
____ _
| __ ) ___ ___ | | ____ _____ _ __ _ __ ___
| _ \ / _ \ / _ \| |/ /\ \ /\ / / _ \| '__| '_ ` _ \
| |_) | (_) | (_) | < \ V V / (_) | | | | | | | |
|____/ \___/ \___/|_|\_\ \_/\_/ \___/|_| |_| |_| |_|
< / pre >
2026-04-01 15:29:06 +08:00
< h1 > Bookworm < span > Portable< / span > 保姆式安装手册< / h1 >
< p > 从零开始,一步步教你在任意 Windows 电脑上激活 Bookworm< / p >
2026-04-01 14:30:05 +08:00
< div class = "badge-row" >
< span class = "badge" > < strong > 97< / strong > Skills< / span >
< span class = "badge" > < strong > 18< / strong > Agents< / span >
< span class = "badge" > < strong > 28< / strong > Hooks< / span >
< span class = "badge" > < strong > AES-256< / strong > 加密< / span >
< span class = "badge" > < strong > HTTPS< / strong > 传输< / span >
< / div >
< / div >
< div class = "container" >
2026-04-01 15:29:06 +08:00
<!-- 整体流程 -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > 整体流程概览< / h2 >
2026-04-02 00:24:18 +08:00
< div class = "card" style = "text-align:center;border-color:var(--green);margin-bottom:1.5rem" >
< h3 style = "color:var(--green);margin-bottom:0.5rem" > 最快方式:一键安装器< / h3 >
< p style = "color:var(--text-dim);font-size:0.9rem;margin-bottom:0.8rem" > 获取 < strong > Bookworm-Setup.bat< / strong > (4KB) → 双击运行 → 输入密码 → 完成< / p >
< p style = "font-size:0.8rem;color:var(--text-dim)" > 安装器自动检测依赖、下载配置、创建桌面快捷方式、启动 Claude Code< / p >
< / div >
< p style = "text-align:center;color:var(--text-dim);font-size:0.85rem;margin-bottom:0.5rem" > 手动安装流程:< / p >
2026-04-01 14:30:05 +08:00
< div class = "flow" >
2026-04-01 15:29:06 +08:00
< div class = "flow-node" > 安装依赖< br > < small style = "color:var(--text-dim)" > Node.js + Git< / small > < / div >
< span class = "flow-arrow" > ➔ < / span >
< div class = "flow-node" > 安装 Claude Code< br > < small style = "color:var(--text-dim)" > npm 全局安装< / small > < / div >
< span class = "flow-arrow" > ➔ < / span >
2026-04-02 00:24:18 +08:00
< div class = "flow-node" > 双击安装器< br > < small style = "color:var(--text-dim)" > 或 git clone< / small > < / div >
2026-04-01 15:29:06 +08:00
< span class = "flow-arrow" > ➔ < / span >
2026-04-02 00:24:18 +08:00
< div class = "flow-node" > 输入密码< br > < small style = "color:var(--text-dim)" > 主密码< / small > < / div >
2026-04-01 15:29:06 +08:00
< span class = "flow-arrow" > ➔ < / span >
< div class = "flow-node active" > 开始使用< br > < small style = "color:var(--green)" > Bookworm 激活< / small > < / div >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-02 00:24:18 +08:00
< p style = "text-align:center;color:var(--text-dim);font-size:0.9rem" > 首次安装约 10 分钟(含依赖下载),之后每次双击启动约 10-30 秒< / p >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 第一步:安装依赖 -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > < span class = "num" > 1< / span > 安装依赖软件< / h2 >
2026-04-01 17:55:36 +08:00
< div class = "alert danger" >
< span class = "alert-icon" > ⚠ < / span >
< div >
< strong > 国内必须:代理/VPN 软件< / strong > < br >
Claude Code 启动时会检查 < code > api.anthropic.com< / code > ,国内无法直连。< br >
请先安装并启动代理软件( Clash / V2Ray / 快柠檬 / 任意 VPN) , 安装脚本会< strong > 自动检测< / strong > 系统代理。< br >
无代理 = Claude Code 无法启动。
< / div >
< / div >
< p > 需要安装以下软件。如果已装过可跳到下一步。< / p >
2026-04-01 15:29:06 +08:00
<!-- Node.js -->
< div class = "step" >
< div class = "step-icon blue" > A< / div >
< div class = "step-content" >
< h4 > 安装 Node.js( 必须) < / h4 >
< p > 去官网下载 LTS 版本安装包,双击安装,一路 Next 即可。< / p >
< / div >
< / div >
< div class = "card" >
< h3 > 方式一:官网下载(推荐)< / h3 >
< p > 打开浏览器访问 < a href = "https://nodejs.org/zh-cn" target = "_blank" > https://nodejs.org< / a > ,点击绿色的 < strong > "LTS 推荐"< / strong > 按钮下载,双击 .msi 文件安装,全部默认 Next。< / p >
< / div >
< div class = "card" >
< h3 > 方式二: PowerShell 命令安装< / h3 >
< p > 右键开始菜单 → 选择 < strong > "PowerShell (管理员)"< / strong > 或 < strong > "终端 (管理员)"< / strong > ,然后执行:< / p >
< / div >
< div class = "code-block has-label" onclick = "copyCode(this)" >
< span class = "label" > PowerShell (管理员)< / span >
< code > < span class = "comment" > # 下载 Node.js 安装包< / span >
Invoke-WebRequest -Uri "https://nodejs.org/dist/v22.15.0/node-v22.15.0-x64.msi" -OutFile "$env:TEMP\node-install.msi"
< span class = "comment" > # 运行安装(会弹出安装向导,一路 Next) < / span >
Start-Process msiexec.exe -ArgumentList "/i $env:TEMP\node-install.msi" -Wait< / code >
< / div >
< div class = "alert warning" >
< span class = "alert-icon" > ⚠ < / span >
< div >
< strong > 安装完成后必须重开 PowerShell! < / strong > < br >
关闭当前 PowerShell 窗口,重新打开一个新的,否则 < code > node< / code > 和 < code > npm< / code > 命令找不到。
< / div >
< / div >
< p style = "margin-top:0.8rem" > 验证安装成功:< / p >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > node< / span > -v < span class = "comment" > # 应显示 v22.x.x< / span >
< span class = "cmd" > npm< / span > -v < span class = "comment" > # 应显示 10.x.x< / span > < / code >
< / div >
< div class = "screenshot-note" >
< strong > 如果 npm 报 "执行策略" 错误?< / strong > 执行以下命令后重试:< br >
< code > Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned< / code > < br >
提示确认时输入 < strong > Y< / strong > 回车。
< / div >
<!-- Git -->
< div class = "step" style = "margin-top:1.5rem" >
< div class = "step-icon blue" > B< / div >
< div class = "step-content" >
< h4 > 安装 Git( 必须) < / h4 >
< p > 去官网下载安装,全部默认设置即可。< / p >
< / div >
< / div >
< div class = "card" >
< p > 打开 < a href = "https://git-scm.com/download/win" target = "_blank" > https://git-scm.com/download/win< / a > ,下载 < strong > "64-bit Git for Windows Setup"< / strong > ,双击安装,全部 Next。< / p >
< / div >
< p > 验证:< / p >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > git< / span > --version < span class = "comment" > # 应显示 git version 2.x.x< / span > < / code >
< / div >
<!-- PowerShell 7 -->
< div class = "step" style = "margin-top:1.5rem" >
< div class = "step-icon yellow" > C< / div >
< div class = "step-content" >
< h4 > 安装 PowerShell 7( 推荐) < / h4 >
< p > Windows 自带的 PowerShell 5.1 有中文兼容问题,建议升级到 7。< / p >
< / div >
< / div >
< div class = "code-block has-label" onclick = "copyCode(this)" >
< span class = "label" > PowerShell (管理员)< / span >
< code > < span class = "cmd" > winget< / span > install Microsoft.PowerShell< / code >
< / div >
< p style = "color:var(--text-dim);font-size:0.85rem" > 如果没有 winget, 去 < a href = "https://github.com/PowerShell/PowerShell/releases" target = "_blank" > GitHub Releases< / a > 下载 .msi 安装包。安装后用 < code > pwsh< / code > 命令启动新版 PowerShell。< / p >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 第二步:安装 Claude Code -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > < span class = "num" > 2< / span > 安装 Claude Code< / h2 >
< div class = "step" >
< div class = "step-icon green" > 1< / div >
< div class = "step-content" >
< h4 > 全局安装< / h4 >
< p > 在 PowerShell 中执行(不需要管理员权限):< / p >
< / div >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > npm< / span > i -g @anthropic-ai/claude-code< / code >
< / div >
< p style = "color:var(--text-dim);font-size:0.85rem" > 安装过程需要几分钟,等待完成即可。< / p >
2026-04-01 14:30:05 +08:00
< div class = "step" >
2026-04-01 15:29:06 +08:00
< div class = "step-icon green" > 2< / div >
< div class = "step-content" >
< h4 > 验证安装< / h4 >
< / div >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > claude< / span > --version < span class = "comment" > # 应显示版本号< / span > < / code >
< / div >
< div class = "alert info" >
< span class = "alert-icon" > 💡 < / span >
< div >
< strong > 不需要登录 Claude 账号!< / strong > < br >
Bookworm 使用中转站 API, 安装 Claude Code 后直接进入下一步,不用执行 < code > claude login< / code > 。
< / div >
< / div >
< / div >
<!-- ============================================================ -->
<!-- 第三步:安装 Bookworm -->
<!-- ============================================================ -->
< div class = "section" >
< h2 > < span class = "num" > 3< / span > 安装 Bookworm( 核心步骤) < / h2 >
< div class = "step" >
< div class = "step-icon purple" > 1< / div >
2026-04-01 14:30:05 +08:00
< div class = "step-content" >
< h4 > 克隆引导仓库< / h4 >
2026-04-01 15:29:06 +08:00
< p > 在 PowerShell 中执行以下命令。系统会提示输入用户名和密码。< / p >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
2026-04-01 15:29:06 +08:00
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > git clone< / span > < span class = "url" > https://code.letcareme.com/bookworm/bookworm-boot.git< / span >
< span class = "cmd" > cd< / span > bookworm-boot< / code >
< / div >
< div class = "screenshot-note" >
2026-04-01 21:04:50 +08:00
< strong > 弹出用户名密码?< / strong > 输入管理员提供给你的 Gitea 账号密码。这是 Gitea 的密码,不是主密码。
2026-04-01 14:30:05 +08:00
< / div >
< div class = "step" >
2026-04-01 15:29:06 +08:00
< div class = "step-icon purple" > 2< / div >
2026-04-01 14:30:05 +08:00
< div class = "step-content" >
2026-04-01 21:04:50 +08:00
< h4 > 双击运行安装脚本< / h4 >
< p > 双击文件夹里的 < strong > 更新并启动Bookworm.bat< / strong > ,脚本会自动完成所有配置。< / p >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
2026-04-01 21:04:50 +08:00
< div class = "card" >
< h3 > 或者用命令行运行< / h3 >
< p > 如果双击 .bat 不起作用,在 PowerShell 中手动执行:< / p >
< / div >
2026-04-01 15:29:06 +08:00
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > pwsh< / span > < span class = "flag" > -ExecutionPolicy Bypass< / span > -File install.ps1< / code >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 21:04:50 +08:00
< p style = "color:var(--text-dim);font-size:0.85rem" > 没有 pwsh 可用 < code > powershell< / code > 替代。< / p >
2026-04-01 14:30:05 +08:00
< div class = "step" >
2026-04-01 15:29:06 +08:00
< div class = "step-icon purple" > 3< / div >
2026-04-01 14:30:05 +08:00
< div class = "step-content" >
< h4 > 输入主密码< / h4 >
2026-04-01 21:04:50 +08:00
< p > 脚本会提示 < strong > "输入主密码解密凭证"< / strong > ,输入管理员提供的< strong > 主密码< / strong > (不是 Gitea 密码),按回车。< / p >
< p > 密码输入时不显示字符,这是正常的。< strong > 输错了可以重试,最多 3 次。< / strong > < / p >
2026-04-01 15:29:06 +08:00
< / div >
< / div >
2026-04-01 21:04:50 +08:00
< div class = "screenshot-note" >
< strong > 两个密码不要搞混:< / strong > < br >
< strong > Gitea 密码< / strong > = 克隆仓库时输入的,用于下载文件< br >
< strong > 主密码< / strong > = 解密 API 凭证时输入的,用于启动 Claude Code
< / div >
2026-04-01 15:29:06 +08:00
< div class = "step" >
< div class = "step-icon green" > 4< / div >
< div class = "step-content" >
< h4 > 等待完成< / h4 >
2026-04-01 21:04:50 +08:00
< p > 脚本会显示步骤进度 [1/6] 到 [6/6],自动完成:< / p >
< ul style = "color:var(--text-dim);font-size:0.9rem;padding-left:1.2rem;margin-top:0.3rem" >
< li > [1/6] 前置检查 (Claude Code / Node.js / Git)< / li >
< li > [2/6] 自动检测代理 (无需手动操作)< / li >
< li > [3/6] 解密凭证 (输入主密码)< / li >
< li > [4/6] 同步配置 (下载 97 个 Skills)< / li >
< li > [5/6] 渲染模板 + 初始化 + 系统验证< / li >
< li > [6/6] 启动 Claude Code< / li >
< / ul >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
< div class = "alert success" >
< span class = "alert-icon" > ✓ < / span >
2026-04-01 15:29:06 +08:00
< div >
2026-04-01 21:04:50 +08:00
< strong > 看到 "Bookworm 就绪" 绿色横幅就说明成功了!< / strong > < br >
Claude Code 启动后,脚本会验证 Skills/Hooks/配置 完整性,全部 [OK] 后进入 Bookworm 模式。< br >
所有 API 请求通过中转站转发,不需要自己的 Claude 账号。
< / div >
< / div >
< div class = "alert warning" >
< span class = "alert-icon" > ⚠ < / span >
< div >
< strong > 看到 "原生模式启动" 黄色横幅?< / strong > < br >
说明 Bookworm 配置不完整。请不加 -StartOnly 重新运行安装脚本,或联系管理员。
2026-04-01 15:29:06 +08:00
< / div >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 日常使用 -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > < span class = "num" > 4< / span > 日常使用< / h2 >
2026-04-01 14:30:05 +08:00
< div class = "card" >
2026-04-01 21:04:50 +08:00
< h3 > 方法一:双击 .bat 文件(推荐,最简单)< / h3 >
< p > bookworm-boot 文件夹里有两个 .bat 文件:< / p >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 21:04:50 +08:00
< table >
< tr > < th > 文件< / th > < th > 作用< / th > < th > 适用场景< / th > < / tr >
< tr >
< td > < strong > 启动Bookworm.bat< / strong > < / td >
< td > 快速启动,不更新配置< / td >
< td > 每天日常使用< / td >
< / tr >
< tr >
< td > < strong > 更新并启动Bookworm.bat< / strong > < / td >
< td > 先同步最新 Skills 再启动< / td >
< td > 管理员通知有更新时< / td >
< / tr >
< / table >
< p style = "color:var(--text-dim);font-size:0.85rem;margin-top:0.5rem" > 双击即可,无需打开 PowerShell, 无需记命令。脚本会自动检测 PowerShell 7/5.1。< / p >
< div class = "alert info" >
< span class = "alert-icon" > 💡 < / span >
< div >
< strong > 启动时显示 "有 N 个新更新可用"? < / strong > < br >
说明管理员更新了 Skills 或 Hooks。双击 < strong > 更新并启动Bookworm.bat< / strong > 即可同步。
< / div >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
< div class = "card" style = "margin-top:1rem" >
2026-04-01 21:04:50 +08:00
< h3 > 方法二:命令行(备用)< / h3 >
< p > 如果 .bat 文件无法运行,在 PowerShell 中手动执行:< / p >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
< div class = "code-block" onclick = "copyCode(this)" >
2026-04-01 21:04:50 +08:00
< code > < span class = "comment" > # 快速启动< / span >
< span class = "cmd" > cd< / span > bookworm-boot
< span class = "cmd" > pwsh< / span > < span class = "flag" > -ExecutionPolicy Bypass< / span > -File install.ps1 < span class = "flag" > -StartOnly< / span >
< span class = "comment" > # 同步更新后启动< / span >
< span class = "cmd" > cd< / span > bookworm-boot
2026-04-01 15:29:06 +08:00
< span class = "cmd" > pwsh< / span > < span class = "flag" > -ExecutionPolicy Bypass< / span > -File install.ps1< / code >
< / div >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-02 00:24:18 +08:00
<!-- ============================================================ -->
<!-- 使用完毕 -->
<!-- ============================================================ -->
<!-- ============================================================ -->
<!-- 密码说明 -->
<!-- ============================================================ -->
< div class = "section" >
< h2 > < span class = "num" > 5< / span > 密码说明< / h2 >
< div class = "card" >
< h3 > 本系统有两个密码,不要搞混< / h3 >
< table >
< tr > < th > 名称< / th > < th > 用途< / th > < th > 何时输入< / th > < / tr >
< tr > < td > < strong > Gitea 密码< / strong > < / td > < td > 下载文件(克隆仓库)< / td > < td > 首次安装时 git 弹出要求< / td > < / tr >
< tr > < td > < strong > 主密码< / strong > < / td > < td > 解密 API 凭证< / td > < td > 每次启动脚本提示输入< / td > < / tr >
< / table >
< / div >
< div class = "alert info" >
< span class = "alert-icon" > 💡 < / span >
< div >
< strong > 密码输错了?< / strong > 最多可以重试 3 次, 不用紧张。3 次都错才会退出。
< / div >
< / div >
< div class = "card" style = "margin-top:0.8rem" >
< h3 > 本日免密功能< / h3 >
< p > 首次解密成功后,脚本会询问 < strong > "今日内免密启动? (y/n)"< / strong > < / p >
< p > 选 < strong > y< / strong > 后,当天再次启动无需输入主密码,次日自动过期。< / p >
< p style = "color:var(--text-dim);font-size:0.85rem;margin-top:0.3rem" > 凭证缓存在 Windows Credential Manager 中( DPAPI 加密,仅当前用户可读)。< / p >
< / div >
< div class = "alert warning" style = "margin-top:0.8rem" >
< span class = "alert-icon" > 🔒 < / span >
< div > < strong > 主密码无法找回< / strong > — 忘记后联系管理员重新生成 secrets.enc。< / div >
< / div >
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 使用完毕 -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-02 00:24:18 +08:00
< h2 > < span class = "num" > 6< / span > 使用完毕 — 清理 / 卸载< / h2 >
< div class = "card" style = "border-color:var(--green)" >
< h3 style = "color:var(--green)" > 最简单:双击 卸载Bookworm.bat< / h3 >
< p > bookworm-boot 文件夹里的 < strong > 卸载Bookworm.bat< / strong > ,双击即可一键完整卸载:终止进程 + 清除凭证 + 恢复原始配置 + 删除桌面快捷方式。< / p >
< / div >
2026-04-01 14:30:05 +08:00
2026-04-02 00:24:18 +08:00
< p style = "margin-top:1rem;color:var(--text-dim);font-size:0.9rem" > 或者用命令行精细控制:< / p >
2026-04-01 15:29:06 +08:00
< table >
< tr > < th > 场景< / th > < th > 命令< / th > < th > 说明< / th > < / tr >
< tr >
< td > < strong > 基础清理< / strong > < / td >
< td > < code > pwsh -File stop.ps1< / code > < / td >
2026-04-02 00:24:18 +08:00
< td > 清除环境变量,保留配置供下次快速启动< / td >
2026-04-01 15:29:06 +08:00
< / tr >
< tr >
< td > < strong > 完整恢复< / strong > < / td >
< td > < code > pwsh -File stop.ps1 -Restore< / code > < / td >
< td > 删除 Bookworm, 恢复电脑原始状态< / td >
< / tr >
< tr >
< td > < strong > 深度清理< / strong > < / td >
< td > < code > pwsh -File stop.ps1 -Restore -Deep< / code > < / td >
2026-04-02 00:24:18 +08:00
< td > 完整恢复 + 清除历史 + 清除 Git/凭证缓存< / td >
2026-04-01 15:29:06 +08:00
< / tr >
< / table >
2026-04-01 14:30:05 +08:00
< div class = "alert danger" >
< span class = "alert-icon" > ⚠ < / span >
< div >
2026-04-02 00:24:18 +08:00
< strong > 在他人电脑/公用电脑上务必卸载:< / strong > < br >
双击 < strong > 卸载Bookworm.bat< / strong > 或执行 < code > pwsh -File stop.ps1 -Restore -Deep< / code >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 故障排查 -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > < span class = "num" > !< / span > 常见问题排查< / h2 >
2026-04-01 14:30:05 +08:00
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ 输入 node -v 或 npm -v 提示 "无法识别"< / h3 >
< p > < strong > 原因:< / strong > 安装 Node.js 后没有重开 PowerShell 窗口, PATH 没刷新。< / p >
< p > < strong > 解决:< / strong > 关闭当前 PowerShell, 重新打开一个新的窗口再试。< / p >
< p > 如果还不行,手动刷新 PATH: < / p >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
< span class = "cmd" > node< / span > -v< / code >
2026-04-01 14:30:05 +08:00
< / div >
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ npm 报 "执行策略" / "Execution Policy" 错误< / h3 >
< p > < strong > 原因:< / strong > Windows 默认禁止运行脚本。< / p >
< p > < strong > 解决:< / strong > < / p >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned< / code >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
< p style = "color:var(--text-dim);font-size:0.85rem" > 提示确认时输入 < strong > Y< / strong > 回车。之后 npm 和 pwsh 脚本都能正常运行。< / p >
2026-04-01 14:30:05 +08:00
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ 提示 "openssl 未找到"< / h3 >
< p > < strong > 原因:< / strong > 解密凭证需要 openssl, 它随 Git for Windows 一起安装。< / p >
< p > < strong > 解决:< / strong > 确认 Git 已安装。脚本会自动搜索 < code > C:\Program Files\Git< / code > 和 < code > D:\Git< / code > 下的 openssl。< / p >
2026-04-01 14:30:05 +08:00
< / div >
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ git clone 失败 / 认证失败< / h3 >
< p > < strong > 解决步骤:< / strong > < / p >
< ol style = "color:var(--text-dim);padding-left:1.5rem;margin-top:0.3rem" >
< li > 浏览器打开 < code > https://code.letcareme.com< / code > 确认网站可访问< / li >
< li > 确认用户名密码正确(区分大小写)< / li >
< li > 如果开了 2FA, 需要用 Access Token 替代密码< / li >
< li > 检查网络是否需要代理< / li >
< / ol >
2026-04-01 14:30:05 +08:00
< / div >
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ 解密凭证失败 / 主密码错误< / h3 >
< p > < strong > 原因:< / strong > 主密码区分大小写,且无法找回。< / p >
< p > < strong > 解决:< / strong > 仔细检查密码是否正确。如确认忘记,联系管理员重新生成 < code > secrets.enc< / code > 。< / p >
2026-04-01 14:30:05 +08:00
< / div >
< div class = "card" >
2026-04-01 15:29:06 +08:00
< h3 > ❌ Claude Code 启动后没有 Bookworm 横幅< / h3 >
< p > < strong > 原因:< / strong > 配置文件未正确同步。< / p >
< p > < strong > 解决:< / strong > 不加 < code > -StartOnly< / code > 重新运行安装脚本,让它重新 clone: < / p >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "cmd" > pwsh< / span > < span class = "flag" > -ExecutionPolicy Bypass< / span > -File install.ps1< / code >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
< div class = "card" >
< h3 > ❌ 安装包下载太慢< / h3 >
< p > < strong > 解决:< / strong > Node.js 官网在国内可能较慢,可以用淘宝镜像:< / p >
< / div >
< div class = "code-block" onclick = "copyCode(this)" >
< code > < span class = "comment" > # 设置 npm 淘宝镜像(加速下载)< / span >
< span class = "cmd" > npm< / span > config set registry https://registry.npmmirror.com
< span class = "comment" > # 然后重新安装 Claude Code< / span >
< span class = "cmd" > npm< / span > i -g @anthropic-ai/claude-code< / code >
< / div >
< div class = "card" >
< h3 > ❌ 需要自己的 Claude 账号吗?< / h3 >
< p > < strong > 不需要。< / strong > 所有 API 请求通过中转站转发,消耗中转站额度。目标机不需要任何 Anthropic 账号或订阅。< / p >
< / div >
< / div >
<!-- ============================================================ -->
<!-- 安装检查清单 -->
<!-- ============================================================ -->
< div class = "section" >
< h2 > 安装检查清单< / h2 >
< p style = "color:var(--text-dim);margin-bottom:0.5rem" > 逐项确认,全部打勾即可开始使用:< / p >
< ul class = "checklist" >
< li > < strong > Node.js 已安装< / strong > — < code > node -v< / code > 显示版本号< / li >
< li > < strong > Git 已安装< / strong > — < code > git --version< / code > 显示版本号< / li >
< li > < strong > npm 可用< / strong > — < code > npm -v< / code > 显示版本号(如报错先设 ExecutionPolicy) < / li >
< li > < strong > Claude Code 已安装< / strong > — < code > claude --version< / code > 显示版本号< / li >
< li > < strong > PowerShell 7 已安装< / strong > — < code > pwsh --version< / code > 显示 7.x( 推荐但非必须) < / li >
< li > < strong > 已获取 Gitea 账号密码< / strong > — 管理员提供< / li >
< li > < strong > 已获取主密码< / strong > — 管理员提供(用于解密 API 凭证)< / li >
< li > < strong > 能访问 code.letcareme.com< / strong > — 浏览器打开确认< / li >
2026-04-01 17:55:36 +08:00
< li > < strong > 代理/VPN 已启动< / strong > — 国内必须,脚本自动检测 (Clash/V2Ray/快柠檬等)< / li >
2026-04-01 15:29:06 +08:00
< / ul >
< / div >
<!-- ============================================================ -->
<!-- 快速参考卡片 -->
<!-- ============================================================ -->
< div class = "section" >
< h2 > 快速参考< / h2 >
< table >
2026-04-01 21:04:50 +08:00
< tr > < th > 操作< / th > < th > 最简方式< / th > < th > 命令行方式< / th > < / tr >
< tr > < td > 首次安装< / td > < td > git clone + 双击< br > < strong > 更新并启动Bookworm.bat< / strong > < / td > < td > < code > pwsh -ExecutionPolicy Bypass -File install.ps1< / code > < / td > < / tr >
< tr > < td > 快速启动< / td > < td > 双击 < strong > 启动Bookworm.bat< / strong > < / td > < td > < code > pwsh -File install.ps1 -StartOnly< / code > < / td > < / tr >
< tr > < td > 同步更新< / td > < td > 双击 < strong > 更新并启动Bookworm.bat< / strong > < / td > < td > < code > pwsh -File install.ps1< / code > < / td > < / tr >
< tr > < td > 基础清理< / td > < td colspan = "2" > < code > pwsh -ExecutionPolicy Bypass -File stop.ps1< / code > < / td > < / tr >
< tr > < td > 完整恢复< / td > < td colspan = "2" > < code > pwsh -ExecutionPolicy Bypass -File stop.ps1 -Restore< / code > < / td > < / tr >
< tr > < td > 深度清理< / td > < td colspan = "2" > < code > pwsh -ExecutionPolicy Bypass -File stop.ps1 -Restore -Deep< / code > < / td > < / tr >
2026-04-01 15:29:06 +08:00
< / table >
2026-04-01 14:30:05 +08:00
< / div >
2026-04-01 15:29:06 +08:00
<!-- ============================================================ -->
<!-- 安全须知 -->
<!-- ============================================================ -->
2026-04-01 14:30:05 +08:00
< div class = "section" >
2026-04-01 15:29:06 +08:00
< h2 > 安全须知< / h2 >
2026-04-01 14:30:05 +08:00
< table >
2026-04-01 15:29:06 +08:00
< tr > < th > 特性< / th > < th > 规格< / th > < / tr >
< tr > < td > 凭证加密< / td > < td > AES-256-CBC + PBKDF2 (600,000 迭代)< / td > < / tr >
< tr > < td > 传输加密< / td > < td > HTTPS (TLS 1.2+, Let's Encrypt 证书)< / td > < / tr >
< tr > < td > 凭证存储< / td > < td > 仅进程级环境变量,不写磁盘,不写注册表< / td > < / tr >
< tr > < td > 登录保护< / td > < td > fail2ban (5 次失败/小时 → 封禁 24 小时)< / td > < / tr >
2026-04-01 14:30:05 +08:00
< / table >
2026-04-01 15:29:06 +08:00
< div class = "alert warning" style = "margin-top:1rem" >
< span class = "alert-icon" > 🔒 < / span >
< div >
< strong > 主密码无法找回< / strong > — 请妥善保管。忘记后需管理员重新生成加密凭证。
< / div >
< / div >
2026-04-01 14:30:05 +08:00
< / div >
< / div >
< div class = "footer" >
2026-04-01 15:29:06 +08:00
Bookworm Portable v1.1 — 保姆式安装手册< br >
2026-04-01 14:30:05 +08:00
© 2026 Bookworm Smart Assistant
< / div >
2026-04-01 15:29:06 +08:00
< script >
function copyCode(el) {
const code = el.querySelector('code').innerText;
navigator.clipboard.writeText(code).then(() => {
el.classList.add('copied');
setTimeout(() => el.classList.remove('copied'), 1500);
});
}
< / script >
2026-04-01 14:30:05 +08:00
< / body >
< / html >