feat(site): redesign landing page and documentation
@@ -1,4 +1,4 @@
|
||||
# Claude Code Haha
|
||||
# cc-haha
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/images/readme-cover-en.jpg" alt="cc-haha — Open-source desktop for Claude Code" width="960">
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
Claude Code Haha is a **desktop Claude Code workspace** for macOS, Windows, and Linux: multi-session workspaces, global search, branch / Worktree launch, diff review, built-in browser preview, GUI permission approval, any model — Claude, ChatGPT, Grok, presets, or local endpoints — image generation, visual MCP & SubAgent managers, an Agent Teams workbench, dynamic Workflow orchestration, model trace, Computer Use, skill marketplace, colour themes, desktop pets, H5 remote access, IM integration, and scheduled tasks, all in one app.
|
||||
cc-haha is a **desktop Claude Code workspace** for macOS, Windows, and Linux: multi-session workspaces, global search, branch / Worktree launch, diff review, built-in browser preview, GUI permission approval, any model — Claude, ChatGPT, Grok, presets, or local endpoints — image generation, visual MCP & SubAgent managers, an Agent Teams workbench, dynamic Workflow orchestration, model trace, Computer Use, skill marketplace, colour themes, desktop pets, H5 remote access, IM integration, and scheduled tasks, all in one app. **On macOS, Computer Use can operate other apps without taking over your physical mouse or keyboard.**
|
||||
|
||||
<p align="center">
|
||||
<a href="#desktop-preview">Desktop Preview</a> · <a href="#install-the-desktop-app">Install</a> · <a href="#desktop-highlights">Highlights</a> · <a href="#more-documentation">More Docs</a> · <a href="#sponsorship--partnership">Sponsorship</a> · <a href="#user-group">User Group</a>
|
||||
@@ -33,19 +33,25 @@ Claude Code Haha is a **desktop Claude Code workspace** for macOS, Windows, and
|
||||
<a href="https://github.com/NanmiCoder/cc-haha/releases"><img src="https://img.shields.io/badge/⬇_Download_Desktop-macOS_%7C_Windows_%7C_Linux-FF7A00?style=for-the-badge" alt="Download Desktop"></a>
|
||||
</p>
|
||||
|
||||
The top row covers **getting started and daily work**: sessions, permissions, changes, and Computer Use. The second shows **extensions**: models, skills, scheduled tasks, and IM. These screenshots show the real project in the Chinese interface. Click a thumbnail to see the full screen.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/session-new.webp" alt="Empty desktop session before the first task"><br><b>Start with a clear, empty session</b><br><sub>Project and permissions stay visible</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/session-main.webp" alt="Real task running with the Activity panel open"><br><b>Follow the task as it runs</b><br><sub>Tool calls and stage-by-stage progress stay in view</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/workspace-diff.webp" alt="Workspace diff review"><br><b>See exactly what changed</b><br><sub>A focused, full-width syntax-highlighted diff</sub></td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/session-new.webp"><img src="docs/images/readme-features/en/session-new.webp" width="100%" alt="New session with project, permission, and model choices"></a><br><b>01 · Start a session</b><br>Pick a project and permissions</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/permission-modes.webp"><img src="docs/images/readme-features/en/permission-modes.webp" width="100%" alt="Choose one of five permission modes in a real project session"></a><br><b>02 · Set permissions</b><br>Control what each task can do</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/workspace-diff.webp"><img src="docs/images/readme-features/en/workspace-diff.webp" width="100%" alt="Review a code diff file by file in the workspace"></a><br><b>03 · Review changes</b><br>Inspect each file's diff</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/settings-computer-use.webp"><img src="docs/images/readme-features/en/computer-use.webp" width="100%" alt="macOS Computer Use settings with enabled status and Accessibility and Screen Recording permissions"></a><br><b>04 · Computer Use</b><br>Keep your Mac mouse and keyboard free</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/workspace-preview.webp" alt="Built-in browser previewing the page that was just changed"><br><b>Verify on the spot</b><br><sub>The real edited page in the built-in browser</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/model-picker.webp" alt="Model picker showing providers, presets, and local endpoints"><br><b>Choose the exact model</b><br><sub>Your providers, presets, and local endpoints in one list</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/en/skill-market.webp" alt="Skill marketplace"><br><b>Missing a trick? Install it</b><br><sub>Source and safety status shown up front</sub></td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/settings-provider-add.webp"><img src="docs/images/readme-features/en/settings-provider-add.webp" width="100%" alt="Add a model provider using a preset and endpoint URL"></a><br><b>05 · Connect models</b><br>Use presets or local endpoints</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/skill-market.webp"><img src="docs/images/readme-features/en/skill-market.webp" width="100%" alt="Browse skills and inspect their sources"></a><br><b>06 · Add skills</b><br>Install what a task needs</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/schedule-create.webp"><img src="docs/images/readme-features/en/schedule-create.webp" width="100%" alt="Create a scheduled task in its own session"></a><br><b>07 · Schedule tasks</b><br>Automate recurring work</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/en/settings-im.webp"><img src="docs/images/readme-features/en/settings-im.webp" width="100%" alt="Configure Slack in the IM access settings"></a><br><b>08 · Work remotely</b><br>Continue through IM</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Start here: [install the app](docs/en/start/install.md) → [connect a model](docs/en/start/models.md) → [run your first session](docs/en/start/first-session.md) → [explore settings](docs/en/desktop/settings.md) → [try real workflows](docs/en/cases/index.md). For hands-free cross-app work on macOS, follow the [Computer Use guide](docs/en/desktop/computer-use.md).
|
||||
|
||||
---
|
||||
|
||||
## Sponsorship & Partnership
|
||||
@@ -173,7 +179,7 @@ If this project helps you, consider buying me a coffee — every bit of support
|
||||
- **Agent Teams workbench**: visualize multi-agent collaboration in the GUI — members, tasks, a communication feed, and a dependency-lane canvas.
|
||||
- **Dynamic Workflow orchestration**: the model writes and runs orchestration scripts on the fly, driving subagents concurrently or in pipelines, with phase views, interrupts, and resume.
|
||||
- **Model trace**: every model request is logged locally with status and timing — search and filter to diagnose stuck or failed calls.
|
||||
- **Computer Use**: let the agent take screenshots, click, type, and control desktop apps after authorization.
|
||||
- **Computer Use**: let the agent take screenshots, click, type, and control desktop apps after authorization; the native macOS runtime does not take over your physical mouse or keyboard.
|
||||
- **Desktop pets**: Dada, Huhu, Bubu, and Huihui change what they do with the task at hand — or raise one of your own (off by default).
|
||||
- **H5 remote access**: scan a QR code to continue the session in your phone browser; locking the screen won't kill a running task.
|
||||
- **IM integration**: chat, switch projects, and approve actions through Telegram / Feishu / WeChat / DingTalk / WhatsApp / WeCom / QQ / Slack.
|
||||
@@ -221,7 +227,7 @@ Thanks to the following open-source projects and community practices for referen
|
||||
|
||||
## ⭐ Star History
|
||||
|
||||
If this project helps you, please support it with a ⭐ Star so more people can discover Claude Code Haha.
|
||||
If this project helps you, please support it with a ⭐ Star so more people can discover cc-haha.
|
||||
|
||||
<a href="https://www.repostars.dev/?repos=NanmiCoder%2Fcc-haha&theme=ocean">
|
||||
<img alt="Star History Chart" src="https://www.repostars.dev/api/embed?repo=NanmiCoder%2Fcc-haha&theme=ocean" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Claude Code Haha
|
||||
# cc-haha
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/images/readme-cover-zh.jpg" alt="cc-haha — Claude Code 开源桌面端" width="960">
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
Claude Code Haha 是一个**桌面端 Claude Code 工作台**:多会话与全局搜索、分支 / Worktree 启动、Diff 审阅、内置浏览器预览、图形化权限审批、模型自选(Claude / ChatGPT / Grok / 预设 / 本地端点)、图片生成、MCP 与 SubAgent 可视化管理、Agent Teams 协作工作台、动态 Workflow 编排、模型请求追踪、Computer Use、技能市场、多主题、桌面宠物、H5 远程访问、IM 接入和定时任务,集中在一个 macOS / Windows / Linux APP 里。
|
||||
cc-haha 是一个**桌面端 Claude Code 工作台**:多会话与全局搜索、分支 / Worktree 启动、Diff 审阅、内置浏览器预览、图形化权限审批、模型自选(Claude / ChatGPT / Grok / 预设 / 本地端点)、图片生成、MCP 与 SubAgent 可视化管理、Agent Teams 协作工作台、动态 Workflow 编排、模型请求追踪、Computer Use、技能市场、多主题、桌面宠物、H5 远程访问、IM 接入和定时任务,集中在一个 macOS / Windows / Linux APP 里。**在 macOS 上,Computer Use 能操作其他应用,同时不占用你的真实鼠标和键盘。**
|
||||
|
||||
<p align="center">
|
||||
<a href="#桌面端预览">桌面端预览</a> · <a href="#安装桌面端">安装桌面端</a> · <a href="#桌面端亮点">桌面端亮点</a> · <a href="#更多文档">更多文档</a> · <a href="#赞助与合作">赞助与合作</a> · <a href="#用户交流群">用户交流群</a>
|
||||
@@ -33,19 +33,25 @@ Claude Code Haha 是一个**桌面端 Claude Code 工作台**:多会话与全
|
||||
<a href="https://github.com/NanmiCoder/cc-haha/releases"><img src="https://img.shields.io/badge/⬇_下载桌面端-macOS_%7C_Windows_%7C_Linux-FF7A00?style=for-the-badge" alt="下载桌面端"></a>
|
||||
</p>
|
||||
|
||||
上排看**上手与日常工作**:新建、权限、改动与 Computer Use;下排看**扩展能力**:模型、技能、定时任务与 IM。截图来自真实项目,保留项目与会话列表。点击缩略图可查看完整界面。
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/session-new.webp" alt="第一次任务前的空会话"><br><b>从清爽的空会话开始</b><br><sub>项目和权限都在首屏</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/session-main.webp" alt="打开活动面板的真实执行中任务"><br><b>跟着任务一步步往前</b><br><sub>工具调用与阶段进度都留在眼前</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/workspace-diff.webp" alt="工作区 Diff 评审"><br><b>改了什么,逐行看清楚</b><br><sub>放大的高亮 Diff,文字和代码更清楚</sub></td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/session-new.webp"><img src="docs/images/readme-features/zh-CN/session-new.webp" width="100%" alt="新建会话:选择项目、权限和模型"></a><br><b>01 · 新建会话</b><br>从项目与权限开始</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/permission-modes.webp"><img src="docs/images/readme-features/zh-CN/permission-modes.webp" width="100%" alt="真实项目会话中的五档执行权限菜单"></a><br><b>02 · 选择权限</b><br>按任务控制操作范围</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/workspace-diff.webp"><img src="docs/images/readme-features/zh-CN/workspace-diff.webp" width="100%" alt="在工作区逐文件查看代码 Diff"></a><br><b>03 · 审阅改动</b><br>逐文件检查 Diff</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/settings-computer-use.webp"><img src="docs/images/readme-features/zh-CN/computer-use.webp" width="100%" alt="macOS Computer Use 设置:启用状态、辅助功能与屏幕录制权限"></a><br><b>04 · Computer Use</b><br>Mac 上不占用真实鼠标键盘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/workspace-preview.webp" alt="内置浏览器预览刚改完的页面"><br><b>改完当场验证</b><br><sub>内置浏览器打开真实本地页面</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/model-picker.webp" alt="显示服务商、预设和本地端点的模型选择器"><br><b>每条会话自选模型</b><br><sub>自己的服务商、预设和本地端点都在一个列表里</sub></td>
|
||||
<td align="center" width="33.33%"><img src="docs/images/app/zh-CN/skill-market.webp" alt="技能市场"><br><b>缺什么手艺装什么</b><br><sub>来源和安全状态摆在明处</sub></td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/settings-provider-add.webp"><img src="docs/images/readme-features/zh-CN/settings-provider-add.webp" width="100%" alt="添加模型服务商时选择预设并填写接口地址"></a><br><b>05 · 接入模型</b><br>预设、本地端点都能用</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/skill-market.webp"><img src="docs/images/readme-features/zh-CN/skill-market.webp" width="100%" alt="浏览技能市场并查看技能来源"></a><br><b>06 · 扩展技能</b><br>按任务安装所需能力</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/schedule-create.webp"><img src="docs/images/readme-features/zh-CN/schedule-create.webp" width="100%" alt="创建独立执行的定时任务"></a><br><b>07 · 定时执行</b><br>让重复任务自动跑</td>
|
||||
<td align="center" valign="top" width="25%"><a href="docs/images/app/zh-CN/settings-im.webp"><img src="docs/images/readme-features/zh-CN/settings-im.webp" width="100%" alt="IM 接入页的 Slack 配置表单"></a><br><b>08 · 远程接力</b><br>在 IM 中继续会话</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
从 0 开始:[下载安装](docs/start/install.md) → [连接模型](docs/start/models.md) → [跑通第一条会话](docs/start/first-session.md) → [设置指南](docs/desktop/settings.md) → [实战案例](docs/cases/index.md)。想体验不抢鼠标的跨应用操作,接着看 [Computer Use 指南](docs/desktop/computer-use.md)。
|
||||
|
||||
---
|
||||
|
||||
## 赞助与合作
|
||||
@@ -173,7 +179,7 @@ cp .env.example .env
|
||||
- **Agent Teams 协作工作台**:桌面端可视化多 Agent 协作团队——成员、任务、通信流和依赖泳道一目了然。
|
||||
- **动态 Workflow 编排**:模型当场编写并运行编排脚本,并发或流水线调度多个子代理,支持阶段视图、中断与断点续跑。
|
||||
- **模型请求追踪**:本地记录每轮模型请求的状态与耗时,可搜索筛选,快速定位卡死或失败调用。
|
||||
- **Computer Use**:让 Agent 在授权后截图、点击、输入并控制桌面应用。
|
||||
- **Computer Use**:让 Agent 在授权后截图、点击、输入并控制桌面应用;macOS 原生运行时不占用你的真实鼠标和键盘。
|
||||
- **桌面宠物**:搭搭、弧弧、补补、回回随任务状态换动作,也能自己做一只(默认关闭)。
|
||||
- **H5 远程访问**:扫码用手机浏览器接入当前会话,锁屏切后台都不打断正在跑的任务。
|
||||
- **IM 接入**:通过 Telegram / 飞书 / 微信 / 钉钉 / WhatsApp / 企业微信 / QQ / Slack 远程对话、切换项目和审批权限。
|
||||
@@ -221,7 +227,7 @@ cp .env.example .env
|
||||
|
||||
## ⭐ Star History
|
||||
|
||||
如果这个项目对你有帮助,欢迎点一个 ⭐ Star,让更多人发现 Claude Code Haha。
|
||||
如果这个项目对你有帮助,欢迎点一个 ⭐ Star,让更多人发现 cc-haha。
|
||||
|
||||
<a href="https://www.repostars.dev/?repos=NanmiCoder%2Fcc-haha&theme=ocean">
|
||||
<img alt="Star History Chart" src="https://www.repostars.dev/api/embed?repo=NanmiCoder%2Fcc-haha&theme=ocean" />
|
||||
|
||||
@@ -6,14 +6,14 @@ These rules apply to `docs/` changes in addition to the root instructions.
|
||||
|
||||
Two audiences, nothing else. If a page serves neither, it does not belong here.
|
||||
|
||||
- **People using the app** — `start/`, `desktop/`, `im/`. No prior code knowledge assumed.
|
||||
- **People using the app** — `start/`, `cases/`, `desktop/`, `im/`. No prior code knowledge assumed.
|
||||
- **People reading the source** — `internals/`, `cli/`. Architecture, implementation, contributing.
|
||||
|
||||
Internal process artefacts (migration task lists, validation checklists, design proposals, release runbooks) are not documentation. Keep them out of `docs/`, or fold the durable part into `internals/contributing.md`.
|
||||
|
||||
## Structure
|
||||
|
||||
Five top-level sections: `start/`, `desktop/`, `im/`, `cli/`, `internals/`. Adding a sixth means registering it in the `sections` array of `site/scripts/generate-docs-manifest.mjs`.
|
||||
Six top-level sections: `start/`, `cases/`, `desktop/`, `im/`, `cli/`, `internals/`. Register any added section in the `sections` array of `site/scripts/generate-docs-manifest.mjs`.
|
||||
|
||||
`docs/en/` mirrors the Chinese tree file for file. Keep Chinese pages and their `docs/en/` counterparts aligned.
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: 建立每日代码审查
|
||||
nav_title: 每日审查
|
||||
description: 创建一条只报告问题的定时任务,立即试跑并从日志检查结果。
|
||||
order: 4
|
||||
---
|
||||
|
||||
# 建立每日代码审查
|
||||
|
||||
每天打开电脑后想知道昨天的改动有没有明显问题,可以把审查提示词存成定时任务。先手动跑通,再让它按工作日重复。
|
||||
|
||||
## 准备
|
||||
|
||||
- 完成模型配置,并有一个自己能查看 Git 历史的项目。
|
||||
- 桌面应用需要保持打开,电脑保持唤醒;错过的触发不会补跑。[定时任务](../desktop/schedule.md)是本机功能。
|
||||
- 定时任务使用**所有权限**。请选择范围尽量小的工作目录,审阅下面的提示词;想隔离试跑时开启任务的独立工作树。
|
||||
|
||||
## 操作
|
||||
|
||||
1. 点左侧**定时任务 → + 新建任务**。名称填 `daily-code-review`,描述填“工作日审查最近 24 小时的提交”。
|
||||
2. 选择目标仓库作为**工作目录**,选一个已配置的模型,把频率设为**工作日**和你电脑通常开着的时间。通知可先关闭;跑通后再决定是否打开桌面或 IM 通知。
|
||||
3. 提示词填入下面内容。第一次可把“最近 24 小时”改成一个确有提交的时间范围。
|
||||
|
||||
```text
|
||||
只审查这个仓库最近 24 小时内的提交,不修改文件、不提交代码、不安装依赖。
|
||||
先列出实际查到的提交;没有提交就明确写“没有待审提交”。
|
||||
对每个可能的问题给出:文件与行号、触发条件、影响、验证方法。没有证据的问题不要列。
|
||||
最后用三行总结:审查范围、发现数、最需要我处理的事。
|
||||
如果无法读取 Git 历史或运行检查,写出失败原因;不要把未执行的检查写成“通过”。
|
||||
```
|
||||
|
||||
4. 保存后点任务卡片的**立即执行**。在**日志**里看状态、摘要,再点“查看完整对话”核对实际命令和结论。
|
||||
5. 若结果太空泛,编辑提示词,明确需要检查的目录或风险,再立即执行一次。确认有用后让任务保持启用。
|
||||
|
||||
## 应看到什么
|
||||
|
||||
首次运行在日志里留下状态和完整会话。报告要么列出可追溯的问题,要么明确说没有待审提交或没有发现;不能只给“代码质量良好”这种无法核对的判断。
|
||||
|
||||
## 验收与常见卡点
|
||||
|
||||
- 核对报告中的提交是否在目标仓库、目标时间范围里;随机打开一处引用文件,确认行号与问题吻合。
|
||||
- 如果任务没有触发,先检查应用是否打开、电脑是否唤醒、任务是否启用、时间设置是否符合预期。
|
||||
- 提示词中的“只审查”是任务要求,不是权限隔离;所有权限模式仍然生效。工作目录选窄,必要时使用独立工作树,首次运行仔细看完整会话。
|
||||
- 频率太密会增加模型用量;从每天一次开始。[定时任务设置详解](../desktop/schedule.md)列出所有字段和日志操作。
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: 10 分钟读懂陌生项目
|
||||
nav_title: 读懂项目
|
||||
description: 用计划模式摸清项目入口、运行方法和关键模块,并逐项核对来源。
|
||||
order: 1
|
||||
---
|
||||
|
||||
# 10 分钟读懂陌生项目
|
||||
|
||||
接手一个仓库时,先让 Claude 画出有证据的“项目地图”,再决定要不要动代码。这个案例不需要写文件。
|
||||
|
||||
## 准备
|
||||
|
||||
- 完成[安装、连接模型与第一条会话](../start/first-session.md)。
|
||||
- 准备一个你能读取的项目目录,最好有 README、包管理文件和 Git 历史。
|
||||
|
||||
## 操作
|
||||
|
||||
1. 新建会话,选择这个项目目录。在输入框工具栏把权限切到**计划模式**。
|
||||
|
||||

|
||||
|
||||
2. 发送下面的提示词。这里的“证据”指仓库文件和实际命令输出,不要求它猜测没有读过的部分。
|
||||
|
||||
```text
|
||||
请只读地带我认识这个项目,不修改文件,不安装依赖,不启动外部服务。
|
||||
先读 README、项目清单和主要入口,再回答:
|
||||
1. 它解决什么问题?用户从哪里开始使用?
|
||||
2. 程序从哪个入口启动?列出 3~5 个关键目录及各自职责。
|
||||
3. 本地启动和运行测试的命令是什么?只列出你在仓库中找到的命令,不要执行。
|
||||
4. 我如果要改 [填入你关心的功能],应该先读哪几个文件?
|
||||
每项结论附文件路径;找不到证据就写“未确认”。最后给我一个不超过 5 步的阅读顺序。
|
||||
```
|
||||
|
||||
3. 对照它给出的路径打开“所有文件”树。点开入口文件和测试脚本,核对回答是否对应源码。
|
||||
4. 如果某项仍含糊,继续问:“你说的启动命令来自哪个文件的哪一段?请只给证据,不补猜测。”
|
||||
|
||||
### 用这个仓库实际练一次
|
||||
|
||||
如果手边没有练习项目,就把 cc-haha 源码仓库选为项目目录,在计划模式发送:
|
||||
|
||||
```text
|
||||
只读地找出这个仓库的文档官网如何工作:页面入口在哪里,长文档从哪里来,本地如何构建。每个结论给出文件路径;不要改文件,也不要运行构建。
|
||||
```
|
||||
|
||||
你应能核对到三个具体结果:`site/src/App.jsx` 负责首页与文档页路由,`site/scripts/generate-docs-manifest.mjs` 从 `docs/` 生成文档索引,根目录 `package.json` 提供 `bun run docs:build`。逐个打开这些文件确认;若模型给出了不同命令,要求它指出对应的脚本行。
|
||||
|
||||
## 应看到什么
|
||||
|
||||
一份短项目地图:用途、入口、关键目录、仓库里能找到的启动与测试命令,以及下一步阅读顺序。**不应出现文件改动**;在 Git 项目里,“已更改文件”应与开始前一致。
|
||||
|
||||
## 验收与常见卡点
|
||||
|
||||
- 随机挑两条结论,打开引用文件核对。命令只在你确认适合本机后再运行。
|
||||
- 如果它把通用框架习惯当成项目事实,要求它标为“推测”并补证据。
|
||||
- 仓库没有 README 也能做;让它从项目清单、入口和测试目录开始,并明确哪些问题无法确认。
|
||||
|
||||
下一步可以用[修复 Bug](./fix-bug.md)练习一轮真正的代码改动;[会话与权限](../desktop/sessions.md)解释计划模式和文件引用。
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: 修复 Bug 并检查回归
|
||||
nav_title: 修复 Bug
|
||||
description: 把复现步骤交给 Claude,要求先定位原因与测试,再审阅最小修复。
|
||||
order: 2
|
||||
---
|
||||
|
||||
# 修复 Bug 并检查回归
|
||||
|
||||
“按钮坏了”很难验证;“点提交后列表出现两条相同记录”就能复现。把输入、预期与实际结果写清楚,才能判断修复是否真的有效。
|
||||
|
||||
## 准备
|
||||
|
||||
- 使用有 Git 的项目,先记录已有改动;本案例选**询问权限**,逐次审阅编辑和命令。
|
||||
- 手动复现一次错误,记下操作步骤、错误信息,以及发生在哪个页面或命令。
|
||||
- 如果只是想先看方案,先用[计划模式](../desktop/sessions.md)调查,再另开一轮实施。
|
||||
|
||||
## 操作
|
||||
|
||||
1. 新建会话,选择出错的项目目录。把下面方括号中的内容替换成自己的真实现象。
|
||||
|
||||
```text
|
||||
修复这个可复现的问题:
|
||||
操作:[例如打开任务列表,连续点击一次“保存”]
|
||||
预期:[例如只新增一条任务]
|
||||
实际:[例如出现两条相同任务]
|
||||
环境或报错:[浏览器、系统、日志;没有就写“暂无”]
|
||||
|
||||
先定位原因并告诉我证据。然后添加一个能复现这个问题的回归测试,再做范围尽量小的修复。
|
||||
不要顺手重构无关文件。需要运行命令时说明用途。
|
||||
完成后列出改动文件、实际运行的测试及结果、尚未验证的风险。
|
||||
```
|
||||
|
||||
2. 看工具调用卡和权限询问卡。确认它读的是目标项目、准备改的是相关文件,再放行。看不懂的命令先点“显示完整输入”。
|
||||
3. 一轮结束后打开右侧**工作区 → 已更改文件**,逐个看 Diff;必要时点具体行写评论,例如“这里还要覆盖空输入”。评论会带着位置回到输入框。
|
||||
4. 在本机复做原来的操作,并运行项目对应的测试命令。再核对 `git status`、`git diff`,确认没有额外改动。
|
||||
|
||||
## 应看到什么
|
||||
|
||||
Claude 应能给出问题原因、对应证据、一个覆盖原问题的测试,以及修复后的测试结果。测试是否运行由它的命令记录证明;只有“测试应该通过”的文字不算运行过。
|
||||
|
||||
## 验收与常见卡点
|
||||
|
||||
- 原来的步骤现在得到预期结果;回归测试在修复后通过,并且只检查相关行为。
|
||||
- 项目没有测试框架时,让它先说明现有验证方式,选一个与项目相称的检查;不要为了小修复硬加一整套框架。
|
||||
- 会话“撤销”只能恢复通过编辑工具记录的文件;Shell 生成或修改的文件可能不会被还原。用 Git 复核磁盘上的最终状态。详见[会话回滚说明](../desktop/sessions.md)。
|
||||
|
||||
下一步试试[实现功能并预览页面](./ship-feature.md)。
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: 实战案例:从目标到验收
|
||||
nav_title: 案例总览
|
||||
description: 用五个真实任务练习 cc-haha,从读项目、改代码到定时任务与手机接力。
|
||||
order: 0
|
||||
---
|
||||
|
||||
# 实战案例:从目标到验收
|
||||
|
||||
不必先记住所有设置。选一个你现在想完成的任务,照着步骤走一遍:每篇都给出前置条件、可复制的提示词和验收方法。
|
||||
|
||||
## 按你要做的事选择
|
||||
|
||||
| 你的目标 | 从哪开始 | 练到的能力 |
|
||||
|---|---|---|
|
||||
| 刚接手代码,不知道从哪里读 | [10 分钟读懂陌生项目](./explore-project.md) | 选目录、计划模式、核对证据 |
|
||||
| 有一个能复现的错误 | [修复 Bug 并检查回归](./fix-bug.md) | 限定范围、测试、审 Diff |
|
||||
| 想给网页加一个功能 | [实现功能并预览页面](./ship-feature.md) | 分步实现、浏览器预览、行级反馈 |
|
||||
| 想每天自动检查仓库 | [建立每日代码审查](./daily-review.md) | 定时任务、首次试跑、查看日志 |
|
||||
| 离开电脑后继续跟进 | [用手机接力当前会话](./phone-handoff.md) | H5 配对、查看进度、远程回复 |
|
||||
|
||||
## 每条路径都遵守这套节奏
|
||||
|
||||
1. **先给目标和边界。** 写清楚要解决什么、哪些目录能碰、哪些事需要先问你。
|
||||
2. **让它给出证据。** 要求列出读到的文件、实际运行的命令、测试结果和改动清单。
|
||||
3. **自己验收。** 打开工作区看 Diff;涉及代码时再核对磁盘上的 `git status`、`git diff` 和相关测试。模型说“完成”不等于交付完成。
|
||||
|
||||
还没有安装或连接模型?先完成[跑通第一条会话](../start/first-session.md)。界面按钮找不到时查[桌面端功能地图](../desktop/index.md)。
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: 用手机接力当前会话
|
||||
nav_title: 手机接力
|
||||
description: 在可信局域网开启 H5 访问,配对手机,查看电脑上的任务并继续回复。
|
||||
order: 5
|
||||
---
|
||||
|
||||
# 用手机接力当前会话
|
||||
|
||||
电脑上有一条长任务正在跑,你要离开桌面一会儿。H5 访问能让手机浏览器看到同一条会话、回复问题和处理权限请求;任务仍在电脑上执行。
|
||||
|
||||
## 准备
|
||||
|
||||
- 电脑和手机连接你信任的同一局域网;桌面应用保持打开,电脑不要休眠。
|
||||
- 在桌面端已有一条会话。第一次练习建议用无敏感信息的项目,并先发送一个只读问题,例如“读一下 README,列出三件我该先知道的事”。
|
||||
- H5 默认关闭。[手机 H5 与 IM 接力](../desktop/remote.md)解释令牌、固定端口与公网访问的边界。
|
||||
|
||||
## 操作
|
||||
|
||||
1. 在电脑上打开**设置 → H5 访问**,开启“启用 H5 访问”并确认提示。点“生成令牌”,页面会给出二维码与链接。
|
||||
2. 用手机扫码,在常用的系统浏览器里打开。第一次验证成功后,浏览器会保存连接信息;如果连不上,核对“访问主机 / IP”是否为电脑在当前网络中的地址。
|
||||
3. 在手机的会话列表里打开刚才的会话,确认能看到电脑上已经出现的回复。继续发送:
|
||||
|
||||
```text
|
||||
把刚才的结论压缩成三条:现在我应该先做什么、有什么未确认、下一步需要我提供什么信息?只总结,不改文件。
|
||||
```
|
||||
|
||||
4. 回到电脑查看同一条会话,确认手机发出的消息和回复也出现在桌面。练习结束后,如果短期内不再使用远程访问,就在设置里关掉 H5。
|
||||
|
||||
## 应看到什么
|
||||
|
||||
手机与桌面显示同一条会话;手机消息会进入桌面正在运行的会话,回复也会同步。手机锁屏或短暂断线时,已开始的任务可在电脑上继续,重连后查看结果。
|
||||
|
||||
## 验收与常见卡点
|
||||
|
||||
- 手机一直连不上时,先确认桌面应用仍在运行、电脑未休眠、两台设备网络可互通,再检查设置里显示的 IP 和端口。换 Wi-Fi 后地址可能变化。
|
||||
- 二维码和链接包含访问凭据,不要发进群聊或公开截图。怀疑泄露时在桌面**重新生成令牌**,旧链接随即失效。
|
||||
- H5 有会话与部分设置能力,但没有桌面工作区、内嵌终端和 Computer Use 授权界面;要评审 Diff 或操作桌面专用功能,回到电脑上做。
|
||||
- 想跨公网使用时,先读[公网访问的配对和隐私说明](../desktop/remote.md),不要把局域网链接直接公开。
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: 实现功能并预览页面
|
||||
nav_title: 做网页功能
|
||||
description: 把一个网页需求拆成可验收的步骤,在工作区预览和逐行反馈。
|
||||
order: 3
|
||||
---
|
||||
|
||||
# 实现功能并预览页面
|
||||
|
||||
做界面时,“代码已写好”和“页面真的好用”是两次检查。这里以给已有列表增加搜索框为例,你可以把目标替换成自己的网页功能。
|
||||
|
||||
## 准备
|
||||
|
||||
- 找一个已经能在本机启动的 Web 项目,确认它的启动命令和本地地址。
|
||||
- 如果这次想大胆试验,先在输入框的**运行位置**选择[独立工作树](../desktop/workspace.md)。先记下原目录的未提交改动;工作树不会自动复制它们。
|
||||
- 保持**询问权限**,方便核对文件编辑和启动服务的命令。
|
||||
|
||||
## 操作
|
||||
|
||||
1. 在项目会话里发出下面的需求。把列表名称、字段和启动命令改成自己的项目情况。
|
||||
|
||||
```text
|
||||
给 [任务列表页面] 增加一个搜索框。输入文字后,按 [标题] 不区分大小写过滤;清空输入后显示全部项目;无匹配时显示明确的空状态。
|
||||
先找现有列表组件和测试,说明你准备改哪些文件。实现时沿用项目现有样式和测试方式,不改无关页面。
|
||||
完成后运行相关测试,告诉我启动本地预览的命令、预期地址,以及你实际验证过什么。
|
||||
```
|
||||
|
||||
2. 审阅权限请求与内联 Diff。若它提出安装依赖或大范围改造,先问原因,再决定是否继续。
|
||||
3. 按项目文档启动开发服务器;在右侧[工作区](../desktop/workspace.md)切到**浏览器**,填入本地地址,例如 `http://localhost:3000`。实际端口以终端输出为准。
|
||||
4. 在页面中试三种状态:原始列表、搜索有结果、搜索无结果。工作区浏览器的**截图**按钮可以把当前画面送回会话;**选择元素**可以把具体元素的位置和截图送回去。
|
||||
5. 若发现问题,在工作区文件 Diff 上点对应行写评论,或在会话里描述可复现的操作,让 Claude 只修这个问题。最后再走一遍三种状态并核对 `git diff`。
|
||||
|
||||
## 应看到什么
|
||||
|
||||
列表会随着输入更新;清空后恢复;无匹配时有空状态。相关测试通过,工作区显示预期文件的改动。
|
||||
|
||||
## 验收与常见卡点
|
||||
|
||||
- 不只看截图:亲自输入、删除、快速改变关键词,确认交互有效。
|
||||
- 页面打不开时先看开发服务器是否仍在运行、地址和端口是否与终端输出一致。
|
||||
- 选择元素和截图用于把页面现状交给 Claude;涉及登录态的网页在截图或分享前先检查是否含私人信息。
|
||||
- 独立工作树里的改动要在清理前审阅并决定如何保留;不要把临时工作区当成备份。
|
||||
@@ -7,7 +7,7 @@ order: 2
|
||||
|
||||
# 环境变量
|
||||
|
||||
Claude Code Haha 有两条配置路径:
|
||||
cc-haha 有两条配置路径:
|
||||
|
||||
- 桌面端用户优先在 **设置 → 服务商** 中选择、测试并激活提供商。应用会管理对应的认证、模型映射和协议代理。
|
||||
- 从源码运行 CLI 时,可以使用 `.env`、Shell 环境变量或 Claude Code 的 `settings.json`。
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 0
|
||||
|
||||
# 安装与启动
|
||||
|
||||
CLI 是 Claude Code Haha 的内核,桌面端每个会话背后跑的都是它。如果你只想用图形界面,装桌面端就够了,见 [下载与安装](../start/install.md);下面这些步骤是给需要终端交互、`--print` 脚本自动化,或者准备读源码、提 PR 的人看的。
|
||||
CLI 是 cc-haha 的内核,桌面端每个会话背后跑的都是它。如果你只想用图形界面,装桌面端就够了,见 [下载与安装](../start/install.md);下面这些步骤是给需要终端交互、`--print` 脚本自动化,或者准备读源码、提 PR 的人看的。
|
||||
|
||||
CLI 目前只从源码运行,没有单独的安装包。
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 1
|
||||
|
||||
# 命令参考
|
||||
|
||||
Claude Code Haha 默认启动交互式会话,也可以用 `--print` 作为脚本、CI 或其他程序中的非交互式 Agent。源码仓库中的命令是 `./bin/claude-haha`;安装后的可执行文件名称以安装方式为准。
|
||||
cc-haha 默认启动交互式会话,也可以用 `--print` 作为脚本、CI 或其他程序中的非交互式 Agent。源码仓库中的命令是 `./bin/claude-haha`;安装后的可执行文件名称以安装方式为准。
|
||||
|
||||
```bash
|
||||
./bin/claude-haha --help
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
---
|
||||
title: Computer Use
|
||||
nav_title: Computer Use
|
||||
description: 让 Claude 读屏幕、点鼠标、敲键盘,替你操作别的应用。
|
||||
description: macOS 上无需接管真实鼠标和键盘,让 Claude 操作别的应用。
|
||||
order: 7
|
||||
---
|
||||
|
||||
# Computer Use
|
||||
|
||||
开了 Computer Use,Claude 就能截屏看你的屏幕、移动鼠标、点击、输入文字,去操作那些没有 API 的应用——系统设置、原生笔记、Finder、第三方桌面软件都行。
|
||||
开了 Computer Use,Claude 就能截屏、点击、输入文字,去操作那些没有 API 的应用——系统设置、原生笔记、Finder、第三方桌面软件都行。
|
||||
|
||||
**macOS 上的特色是不用抢你的鼠标和键盘。** 原生运行组件把操作发给目标应用,屏幕上显示的是独立的虚拟光标;真实鼠标不会被拖走,你仍可用自己的鼠标和键盘处理其他事情。目标应用的内容仍会被修改;少数操作可能改变应用焦点。Windows 使用兼容执行器,会移动真实鼠标,不适用这一点。
|
||||
|
||||
它直接作用于你这台电脑,所以开之前请先看清楚要授权什么。
|
||||
|
||||
支持 macOS 和 Windows。Linux 暂无执行器。
|
||||
|
||||
## 准备环境
|
||||
## 开启前检查环境
|
||||
|
||||

|
||||

|
||||
|
||||
打开 设置 → Computer Use,页面顶部是一排环境检查:
|
||||
打开「设置 → Computer Use」。macOS 14.4 或更新版本会优先显示原生运行组件和系统权限状态。Windows 等使用兼容运行组件的环境会显示 Python 3、虚拟环境和依赖包检查;按页面提示安装,不必在 macOS 原生页面寻找 Python 配置。
|
||||
|
||||
1. **Python 3** — 需要本机装了 Python 3。没检测到时点「下载 Python 3」去装。装在 conda、pyenv 或其他自定义环境里的话,在「Python 解释器路径」里手动选可执行文件,之后会优先用它。
|
||||
2. **虚拟环境** 和 **依赖包** — 点「安装环境」,应用会自己建一个隔离的 venv 并装好平台依赖,不污染你的全局 Python。
|
||||
3. 全绿以后页面会显示「所有检查通过,Computer Use 已就绪」。
|
||||
|
||||
装完可以随时点「重新检测」核对状态。
|
||||
如果页面显示 Python 检查,未安装时先安装 Python 3。使用 conda、pyenv 等自定义环境时,可指定「Python 解释器路径」,再点「安装环境」创建隔离的 venv 和依赖包。完成后点「重新检测」。若页面提示原生运行组件缺失,请更新或重新安装应用,再重新检测。
|
||||
|
||||
## macOS 的两项系统授权
|
||||
|
||||
@@ -31,7 +29,7 @@ macOS 上还需要两个系统权限,缺一个都用不了:
|
||||
|
||||
| 权限 | 用来干什么 |
|
||||
|---|---|
|
||||
| 辅助功能 | 移动鼠标、点击、输入文字 |
|
||||
| 辅助功能 | 向目标应用发送点击和输入;不会移动真实鼠标 |
|
||||
| 屏幕录制 | 截屏,也就是「让它看见」 |
|
||||
|
||||
页面上有「打开辅助功能设置」和「打开屏幕录制设置」两个按钮,直接跳到系统设置对应位置。
|
||||
@@ -40,22 +38,13 @@ macOS 上还需要两个系统权限,缺一个都用不了:
|
||||
授权之后必须**完全退出并重新打开应用**才会生效。macOS 只在进程启动时读一次权限,不重启的话页面上会一直显示未授权。
|
||||
:::
|
||||
|
||||
授权时注意勾的是真正启动 Claude Code Haha 的那个 App。屏幕录制的自动检测偶尔不稳定,如果系统设置里明明已经勾上、页面却还显示未授权,通常直接用就行。
|
||||
授权时注意勾的是真正启动 cc-haha 的那个 App。屏幕录制的自动检测偶尔不稳定,如果系统设置里明明已经勾上、页面却还显示未授权,通常直接用就行。
|
||||
|
||||
## 预授权应用
|
||||
## 开启 Computer Use
|
||||
|
||||
默认情况下,Claude 每次想控制一个新应用,都会先弹一个「Computer Use 想控制这些应用」的确认框,写清它要控制哪些应用、为什么。你可以「本次会话允许」或者「拒绝」。
|
||||
打开页面上的「启用」开关,仔细阅读确认弹窗。**确认一次后,Computer Use 可以控制这台电脑上所有受支持的应用,不再按应用逐个请求授权。** macOS 的「辅助功能」和「屏幕录制」仍由操作系统另行授权;全局开关、系统权限及目标进程有效性检查仍会生效。
|
||||
|
||||
如果某几个应用你反复都会同意,可以在设置页的「已授权应用」里预先勾上。勾了以后 Claude 控制它们就不再弹窗。搜索框可以按名字过滤已安装的应用。
|
||||
|
||||
另外两个开关是单独的,不会因为授权了某个应用就自动获得:
|
||||
|
||||
- **剪贴板访问** — 读写系统剪贴板。
|
||||
- **系统快捷键** — 发送系统级组合键。
|
||||
|
||||
:::danger
|
||||
预授权等于永久放行。密码管理器、银行 App、企业 IM 这类应用不要放进列表——让它每次都问你一次。
|
||||
:::
|
||||
请在开始任务前关闭含有不想展示的信息的窗口,给任务写清操作范围,并在需要时用会话的停止按钮或 Esc 中断。结束后可回到这里关闭「启用」。
|
||||
|
||||
## 开始用
|
||||
|
||||
@@ -69,14 +58,14 @@ macOS 上还需要两个系统权限,缺一个都用不了:
|
||||
|
||||
Claude 的工作方式是「截图 → 判断 → 操作 → 再截图」,所以它会比人慢,也会偶尔点错。给它明确的边界(「只在 X 应用里操作」「不要保存」)比给它一个笼统目标更靠谱。
|
||||
|
||||
同一时间只能有一条会话控制鼠标键盘。看到「正在被其他会话使用」时,先停掉或跑完那条会话。
|
||||
同一时间只能有一条会话使用 Computer Use。看到「正在被其他会话使用」时,先停掉或跑完那条会话;macOS 上这不表示你的真实鼠标和键盘被占用。
|
||||
|
||||
## 已知边界
|
||||
|
||||
- **没有全局中止热键。** 想停下来就点会话里的停止按钮(`⌘.`)。
|
||||
- **Windows 截图不过滤窗口。** macOS 的截图只保留已授权应用和桌面,Windows 上所有可见窗口都会进画面。开始前请关掉或最小化含敏感信息的窗口。
|
||||
- **浏览器和终端里的操作受限。** 浏览器只允许读(能看见但不能点),终端和 IDE 只允许点击(不能输入)。要操作网页请用浏览器扩展,要跑命令请让它用 Bash 工具。
|
||||
- **UI 变了要重新截图。** 页面变化之后不能沿用旧坐标。
|
||||
- **只有一条会话能同时操控。** 另一条会话占用 Computer Use 控制锁时,先让它结束或手动停止。
|
||||
- **截图可能包含敏感信息。** Windows 上所有可见窗口都可能入镜;在任何平台上,截图前都应整理桌面与窗口。
|
||||
- **UI 变了要重新观察。** 页面变化之后不能沿用旧坐标或元素状态。
|
||||
- **想停下时**用会话停止按钮、Esc,或者关闭设置页的「启用」开关。
|
||||
|
||||
## 排查
|
||||
|
||||
@@ -84,9 +73,9 @@ Claude 的工作方式是「截图 → 判断 → 操作 → 再截图」,所
|
||||
确认授权的是实际启动应用的那个 App,完全退出后重开,再点「重新检测」。
|
||||
|
||||
**环境装不上**
|
||||
在「Python 解释器路径」里明确选一个 Python 3,确认它支持 `venv`,重新点「安装环境」。还不行就去 设置 → 诊断 看安装日志。
|
||||
仅在页面显示 Python 检查时,在「Python 解释器路径」里明确选一个支持 `venv` 的 Python 3,重新点「安装环境」。原生运行组件缺失时更新或重新安装应用。还不行就去「设置 → 诊断」看日志。
|
||||
|
||||
**能截图但点不动**
|
||||
确认目标应用在已授权列表里,并且它现在是前台窗口。浏览器和终端类应用受上面说的分级限制。
|
||||
检查 Computer Use 是否仍开启、macOS「辅助功能」是否已授权,以及目标应用是否仍在运行。更新系统授权后完全退出并重开应用,再点「重新检测」。
|
||||
|
||||
想了解权限分级、Python 桥接和执行器的实现,看[Computer Use 架构](../internals/computer-use.md)。
|
||||
想了解全局授权、原生运行组件和兼容执行器的实现,看[Computer Use 架构](../internals/computer-use.md)。
|
||||
|
||||
@@ -11,6 +11,8 @@ order: 0
|
||||
|
||||
这一篇是地图,不是说明书。每个功能只写一句话,想细看点进去。还没装好或还没连上模型,先去[开始使用](../start/index.md)。
|
||||
|
||||
想按任务动手练习,从[实战案例](../cases/index.md)选一条路径。
|
||||
|
||||
## 先认识三块地方
|
||||
|
||||
- **左侧边栏**:品牌印章下面是「新建会话」「定时任务」「技能市场」,再往下是搜索条和你的项目、历史会话,最底部是「设置」。边界可以拖动改宽窄。
|
||||
@@ -28,7 +30,7 @@ order: 0
|
||||
- [子 Agent 与任务拆分](./agents.md) — 什么时候该派 Agent,内置 Agent 有哪些,怎么捏一个自己的。
|
||||
- [技能与技能市场](./skills.md) — 技能是什么、和 Agent 有什么区别、从市场装技能前要看什么。
|
||||
- [定时任务](./schedule.md) — 让 Claude 每天早上自动跑一遍代码审查。
|
||||
- [Computer Use](./computer-use.md) — 让它读屏幕、点鼠标、敲键盘,替你操作别的应用。
|
||||
- [Computer Use](./computer-use.md) — 在 macOS 上不占用真实鼠标和键盘,替你操作别的应用。
|
||||
|
||||
## 换个设备继续
|
||||
|
||||
|
||||
@@ -35,8 +35,6 @@ order: 8
|
||||
|
||||
## 和它互动
|
||||
|
||||

|
||||
|
||||
- **悬停** — 空闲时它会跳一下,视线跟着你的指针转。
|
||||
- **单击** — 唤起主窗口,同时挥个手。注意它只是把窗口叫出来,不会自动跳进某条会话。
|
||||
- **拖动** — 按住它挪到桌面别的位置,下次打开会尽量回到原处。
|
||||
@@ -59,6 +57,8 @@ order: 8
|
||||
|
||||
## 做一只自己的
|
||||
|
||||

|
||||
|
||||
点「你的宠物」右边的「添加宠物」。所有图片都在你自己的电脑上处理,不会上传,也不消耗对话额度。
|
||||
|
||||
不管选哪种做法都要先填三个字段:**宠物 ID**(只用小写字母、数字和中间的连字符,比如 `moon-cat`)、**显示名称**、**宠物描述**。
|
||||
|
||||
@@ -27,7 +27,7 @@ order: 9
|
||||
|
||||
扫出来的链接里带着服务器地址和令牌。用手机相机扫码后,在你常用的 Safari、Chrome 或系统浏览器中打开,首次验证成功会把连接信息保存在该浏览器的 localStorage 中,并移除地址栏中的令牌。之后再次扫码或打开收藏可直接连接;短暂断网不会删除配对,连接失败时可点击「重试」使用已保存的凭据。令牌被撤销或重新生成后,需要用新二维码更新。
|
||||
|
||||

|
||||

|
||||
|
||||
### 令牌是访问凭据
|
||||
|
||||
@@ -88,9 +88,9 @@ H5 默认关闭,它也不是公开服务。开启前先确认你在自己信
|
||||
|
||||
## IM 接入
|
||||
|
||||

|
||||

|
||||
|
||||
设置 → IM 接入 支持五个平台,接入方式各不相同:
|
||||
设置 → IM 接入 支持八个平台,接入方式各不相同。这里先列出常见接法,完整步骤见 [IM 接入总览](../im/index.md):
|
||||
|
||||
| 平台 | 怎么接 |
|
||||
|---|---|
|
||||
@@ -99,6 +99,9 @@ H5 默认关闭,它也不是公开服务。开启前先确认你在自己信
|
||||
| WhatsApp | 生成二维码,在 WhatsApp 的「已关联设备」里扫码 |
|
||||
| Telegram | 找 @BotFather 要一个 Bot Token 填进来 |
|
||||
| 飞书 | 填 App ID 和 App Secret;没有机器人的话可以用页面上的模板一键创建 |
|
||||
| 企业微信 | 在设置页扫码创建智能机器人 |
|
||||
| QQ | 扫码授权,回填 App ID 和 App Secret |
|
||||
| Slack | 用应用清单创建 App,再回填两枚 Token |
|
||||
|
||||
### 绑定账号 ≠ 允许对话
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ order: 1
|
||||
|
||||
## 读懂对话流
|
||||
|
||||

|
||||

|
||||
|
||||
Claude 干活时不是一句话回你,中间会插进来几种卡片:
|
||||
|
||||
@@ -32,8 +32,6 @@ Claude 干活时不是一句话回你,中间会插进来几种卡片:
|
||||
|
||||
## 权限弹窗:三个按钮怎么选
|
||||
|
||||

|
||||
|
||||
默认权限模式下,Claude 每次要改文件或跑高风险命令,都会停下来问你。弹窗里会先给出这次改动的预览,然后是三个按钮:
|
||||
|
||||
- **允许** — 只放行这一次。下次同样的操作还会再问。
|
||||
@@ -44,6 +42,8 @@ Claude 干活时不是一句话回你,中间会插进来几种卡片:
|
||||
|
||||
### 五档权限模式
|
||||
|
||||

|
||||
|
||||
输入框工具栏上的权限按钮可以整体调松紧:
|
||||
|
||||
| 模式 | 它会做什么 |
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: 设置速查
|
||||
title: 设置指南
|
||||
nav_title: 设置
|
||||
description: 16 个设置分栏,每栏能配什么、什么时候需要动它。
|
||||
description: 从第一条会话出发,选择必要设置,并按任务查找高级配置。
|
||||
order: 6
|
||||
---
|
||||
|
||||
# 设置速查
|
||||
# 设置指南
|
||||
|
||||
点侧边栏最底部的「设置」打开。左边 16 个分栏,顺序固定。这一篇按这个顺序过一遍,说清每栏能配什么、什么时候才需要动它。
|
||||
点侧边栏最底部的「设置」打开。第一次使用时,先在「服务商」接通模型,再到「通用」确认权限与语言,就能开始[第一条会话](../start/first-session.md)。其余设置等遇到对应任务再打开。
|
||||
|
||||
## 服务商
|
||||
|
||||
@@ -17,23 +17,51 @@ order: 6
|
||||
|
||||
## 通用
|
||||
|
||||
最常动的一栏,配的都是「用起来顺不顺手」的东西。
|
||||
通用设置分成四件事:界面和表达、Agent 如何工作、网络与提醒、数据保存。第一次只需要确认前两件;遇到具体问题再改后两件。
|
||||
|
||||

|
||||
|
||||
- **配色主题** — 六套:纯白(默认)、纸墨、经典暖色、青瓷、墨夜、墨夜蓝。另有「跟随系统」开关,打开后可以分别指定浅色模式和深色模式各用哪一套。
|
||||
- **语言** — 界面显示语言。
|
||||
- **回复语言** — 让 Claude 始终用某种语言回复,和界面语言分开设。
|
||||
- **输出风格** — 默认 / 解释型 / 学习型。「解释型」会额外讲清实现选择和代码库里的模式,「学习型」会让你自己动手写一小段。改完对正在跑的会话不生效,新建会话才用新风格。
|
||||
- **默认会话权限** — 新建会话时用哪一档权限模式。每条会话里还能单独改。
|
||||
- **推理强度** 与 **思考模式** — 新会话的默认思考档位。关掉思考模式后,DeepSeek 这类需要显式非思考参数的模型会收到对应设置。
|
||||
- **消息发送方式** — Enter 发送(Shift+Enter 换行),或 `Ctrl/Cmd+Enter` 发送。
|
||||
- **系统通知** — 授权确认、回复完成、定时任务结果走系统通知中心。开启时会请求系统权限。
|
||||
- **网络** — 三选一:直连(明确绕过系统代理)、系统代理(按目标地址动态遵循系统规则)、手动代理(填 `http://user:password@127.0.0.1:7890` 这样的地址)。下面还有「AI 请求超时」,默认值不够用时可以加大到 1800 秒。应用自身的更新下载走另一套代理设置,在「关于」里。
|
||||
- **WebSearch** — 联网搜索走哪条路。自动模式会对 Claude 模型优先用原生 WebSearch,失败或换成非 Claude 模型时再用 Tavily / Brave,这两个需要你自己填 API Key。
|
||||
- **自动做梦** — 后台定期整理和压缩记忆文件。默认关闭,因为它会额外消耗 token。
|
||||
- **界面缩放** — 整体放大缩小,也可以用 `⌘+` / `⌘-` 快捷键,`⌘0` 回到 100%。
|
||||
- **数据存储位置** — 低频高级设置。默认用系统目录 `~/.claude`,也可以改成你指定的绝对路径。切换后会话记录、技能、MCP、插件、服务商配置全部从新目录读取,需要重启应用生效,两个目录之间不会自动合并或迁移。
|
||||
### 第一条会话前:权限与表达
|
||||
|
||||
| 设置 | 建议怎么选 | 何时生效 |
|
||||
|---|---|---|
|
||||
| 默认会话权限 | 初次使用保持默认的「询问权限」。写文件或运行高风险命令时先看清请求,再决定是否允许。[五档模式](./sessions.md#五档权限模式)可在会话输入框里单独切换。 | 作为新建聊天会话的默认值;已有会话的权限在会话里调整。 |
|
||||
| 回复语言 | 想让 Agent 稳定用中文回答就选中文;它与下方的界面语言相互独立。默认不指定。 | 保存后用于后续回复;已生成的内容不会改写。 |
|
||||
| 输出风格 | 默认最简洁;「解释型」解释实现选择;「学习型」会让你自己写一小段。还可选已安装的自定义风格。 | 新会话、在新进程中继续,或重启会话后生效;当前运行中的提示词不变。 |
|
||||
| 推理强度与思考模式 | 先沿用模型支持的默认档位。只有想调节速度、成本或遇到模型兼容问题时再改;关闭思考会给需要它的兼容供应商传递非思考参数。 | 新会话默认值;可选推理档位随当前模型变化。 |
|
||||
|
||||
**试一次:**选一个有 Git 的练习目录,发「先列出你会改的文件,再做一个最小改动;完成后说明怎么验证」。收到权限请求时看目标文件和命令,结束后在工作区逐行[审阅 Diff](./workspace.md#diff-评审给某一行留话)。
|
||||
|
||||
### 界面与输入:按个人习惯调整
|
||||
|
||||
- **配色主题**有纯白、纸墨、经典暖色、青瓷、墨夜、墨夜蓝六套。开启「跟随系统」后,可分别指定浅色和深色主题。
|
||||
- **语言**只改变应用界面,支持简体中文、繁体中文、英语、日语和韩语;它不等同于「回复语言」。
|
||||
- **界面缩放**改变整个窗口。macOS 用 `⌘+` / `⌘-`,Windows 用 `Ctrl+` / `Ctrl-`,按 `0` 恢复到 100%。
|
||||
- **消息发送方式**默认 Enter 发送、Shift+Enter 换行;常写多行提示词可改成 `Ctrl/Cmd+Enter` 发送。
|
||||
- **默认编辑器**决定文件「打开方式」菜单默认选哪个本机已检测到的编辑器。
|
||||
|
||||
### 需要更复杂的 Agent 工作流时
|
||||
|
||||
| 设置 | 何时开启或调整 |
|
||||
|---|---|
|
||||
| Ultracode | 默认开启。独立出现的关键词会触发动态 Workflow 编排;普通代码块、引号、路径里的同名文字不会触发。 |
|
||||
| Agent Teams | 默认开启。需要多个 Agent 分工处理较大任务时使用;设置对新会话生效,已有会话在重启应用后生效。入门先看[子 Agent 与任务拆分](./agents.md)。 |
|
||||
| 自动回答问题 | 默认关闭。无人响应 Agent 的选择题时,可在 1、5、10、30 分钟后尝试选择推荐项;没有可靠选择时继续等待。只适合你愿意让任务在无人值守时继续的场景。 |
|
||||
| 自动做梦 | 默认关闭。会话积累足够后,可在后台整理 auto-memory;会产生额外模型调用和 token 消耗。 |
|
||||
| Agent Trace | 默认开启。新会话的精简请求、响应与状态事件写入本机 traces 目录,出错时到「Trace」查看;关闭后不再产生新记录,旧记录仍可查看。 |
|
||||
|
||||
### 网络、联网搜索和提醒
|
||||
|
||||
- **系统通知**默认关闭。需要离开窗口等权限请求、回复或定时任务结果时打开,并授予操作系统通知权限。
|
||||
- **网络**默认采用系统代理。直连会绕过系统及进程代理;手动代理接收 HTTP/HTTPS 地址,带认证的例子是 `http://user:password@127.0.0.1:7890`。改完点「保存」,对新请求生效;正在执行的请求仍用原来的路由。模型服务、账号登录、MCP 与 Agent 工具受此设置影响,应用更新另在「关于」配置代理。
|
||||
- **AI 请求超时**默认 1800 秒,可填写至少 30 秒。只在模型首个响应或连接测试确实超时时调高;本地模型长时间思考可按需填 14400 秒(4 小时)。
|
||||
- **WebFetch 预检**默认跳过上游域名预检,以免第三方服务商或受限网络误报。只有明确需要恢复上游预检时才关闭此选项。
|
||||
- **WebSearch**默认「自动」:Claude 模型优先使用原生搜索,失败或非 Claude 模型再尝试 Tavily / Brave。想明确指定某条路径,可选 Claude、Tavily、Brave 或关闭;后两者需要填自己的 API Key 并点「保存」。
|
||||
|
||||
### 数据保留与存放:改前先确认结果
|
||||
|
||||
- **会话记录**默认保留 365 天,可设置 0–3650 天。缩短时间会立即删除更早记录,设置为 0 会删除已有全部记录并停止记录会话内容;界面会先预览并再次确认。这里不能用来代替备份。
|
||||
- **数据存储位置**默认是 `~/.claude`(Windows 为 `%USERPROFILE%\\.claude`)。便携模式可以指定一个不在应用安装目录内的绝对路径。切换后,配置、任务、会话、技能和插件将从新目录读取,重启应用才生效;两个目录不会自动合并或迁移。若启动时设置了 `CLAUDE_CONFIG_DIR`,需先移除该环境变量才能在界面里切换。
|
||||
|
||||
本文的产品截图统一使用「纯白」主题,避免不同配色影响界面对比。
|
||||
|
||||
@@ -43,7 +71,7 @@ order: 6
|
||||
|
||||
## IM 接入
|
||||
|
||||
从微信、钉钉、WhatsApp、Telegram、飞书直接和 Claude 对话,并管理配对用户。见[手机 H5 与 IM 接力](./remote.md)和[IM 接入](../im/index.md)。
|
||||
从微信、钉钉、WhatsApp、Telegram、飞书、企业微信、QQ、Slack 直接和 Claude 对话,并管理配对用户。见[手机 H5 与 IM 接力](./remote.md)和[IM 接入](../im/index.md)。
|
||||
|
||||
## 终端
|
||||
|
||||
@@ -87,7 +115,7 @@ Windows 用户可以在这里指定启动 Shell(系统默认 / PowerShell 7 /
|
||||
|
||||
## Computer Use
|
||||
|
||||
让 Claude 读屏幕、点鼠标、敲键盘。装好运行环境并授予系统权限之前用不了。见[Computer Use](./computer-use.md)。
|
||||
让 Claude 读屏幕、点鼠标、敲键盘。开启开关、确认全局授权并满足系统权限要求后才能使用;各平台的环境准备步骤不同。见[Computer Use](./computer-use.md)。
|
||||
|
||||
## Token 用量
|
||||
|
||||
@@ -101,7 +129,7 @@ Windows 用户可以在这里指定启动 Shell(系统默认 / PowerShell 7 /
|
||||
|
||||
## Trace
|
||||
|
||||
记录每条会话的模型请求链路——请求、响应、状态事件、耗时都留档,用来排查卡住、失败和异常等待。开关不在这一栏:要先在 设置 → 通用 里打开「收集 Agent Trace」,这一栏才会有数据。
|
||||
记录每条会话的模型请求链路——请求、响应、状态事件、耗时都留档,用来排查卡住、失败和异常等待。开关在「设置 → 通用」,默认开启;新会话才会产生新记录。
|
||||
|
||||
开启后新会话会把精简记录写到本机 traces 目录。已有记录在关掉之后仍然能看,只是不再写新的。Trace 列表支持搜索、筛选(全部 / LLM / 工具 / 错误)、单独在新窗口打开,也能删除某个会话的 Trace 而不影响聊天记录。
|
||||
|
||||
|
||||
@@ -11,33 +11,35 @@ order: 2
|
||||
|
||||
## 打开工作区
|
||||
|
||||
点标签栏右侧的文件夹图标。再点一次收起。面板左边界可以拖动改宽窄。
|
||||
点标签栏右侧的「显示工作区」按钮。再点一次收起。面板左边界可以拖动改宽窄。
|
||||
|
||||
面板顶部有个「文件 ⇄ 浏览器」的切换:
|
||||
空面板里可以打开「侧边聊天」「审查」「终端」「浏览器」或「文件」。每种工具都有独立标签;之后也可以点顶部的 `+` 添加标签,在它们之间切换。
|
||||
|
||||
- **文件** — 看项目文件和 Git 改动,做 Diff 评审。
|
||||
- **浏览器** — 内置浏览器,用来预览刚改完的页面。
|
||||
## 审查:选择比较范围
|
||||
|
||||
## 已更改文件 / 所有文件
|
||||

|
||||
|
||||

|
||||
打开「审查」,先在工具栏的「比较范围」里选择要看的改动:
|
||||
|
||||
文件模式下有两个视图:
|
||||
- **未暂存 / 已暂存 / 全部未提交** — 查看当前工作目录中对应范围的改动。
|
||||
- **分支 / 比较分支…** — 查看与所选分支的差异。
|
||||
- **查看提交…** — 输入提交引用,查看某一次提交的改动。
|
||||
|
||||
- **已更改文件** — 只列这个 Git 仓库里当前有改动的文件,每行带状态(已修改 / 已新增 / 已删除 / 已重命名 / 未跟踪)和增删行数。这是审阅时最常待的地方。
|
||||
- **所有文件** — 完整目录树。上面的搜索框可以搜整个项目的文件名,也能搜还没展开的目录。
|
||||
点「显示/隐藏文件树」可以展开所选比较范围的变更文件列表。每行显示文件状态和增删行数,点文件查看对应 Diff。本页的审查截图通过「查看提交…」打开已有的 `HEAD` 提交,是只读查看。
|
||||
|
||||
点文件名打开预览,双列显示 Diff 或单文件内容。预览标签会累积,像编辑器的标签一样切换。
|
||||
不是 Git 仓库时,「审查」入口会说明原因。
|
||||
|
||||
不是 Git 仓库时「已更改文件」会直接说明,不是出错。
|
||||
## 文件标签
|
||||
|
||||
「文件」是独立标签,用来浏览项目目录和预览单个文件。搜索框可以筛选文件名;也可以从审查里的「在文件标签页中打开」进入对应文件。打开的标签可以像编辑器一样切换。
|
||||
|
||||
任何文件都可以右键复制路径,或者点「添加到聊天」把它作为上下文塞回输入框。
|
||||
|
||||
## Diff 评审:给某一行留话
|
||||
|
||||

|
||||

|
||||
|
||||
Diff 保留旧行和新行,带语法高亮。真正有用的是行级评论:
|
||||
Diff 保留旧行和新行,带语法高亮。工具栏可以切换「统一 Diff / 并排 Diff」、开启自动换行;看完一个文件,还可以「标记为已查看」。需要反馈时,可以使用行级评论:
|
||||
|
||||
1. 点某一行,右边出现评论框。
|
||||
2. 想评一段而不是一行,按住 `Shift` 点起止行——只能选同一侧、同一变更块里的连续行。
|
||||
@@ -49,7 +51,7 @@ Diff 保留旧行和新行,带语法高亮。真正有用的是行级评论:
|
||||
如果你在写评论的过程中 Claude 又改了这个文件,界面会提示差异已更新,需要重新选行——这是防止评论落到错误的位置。
|
||||
|
||||
:::tip
|
||||
被拒绝的工具调用不会写盘,也就不会出现在已更改文件里。交付前还是建议自己再过一遍 `git diff`。
|
||||
被拒绝的工具调用不会写盘,也就不会形成待审查的文件改动。交付前还是建议自己再过一遍 `git diff`。
|
||||
:::
|
||||
|
||||
## 独立工作树:把试验关在笼子里
|
||||
@@ -68,7 +70,7 @@ Diff 保留旧行和新行,带语法高亮。真正有用的是行级评论:
|
||||
|
||||

|
||||
|
||||
把工作区切到「浏览器」,地址栏里填本地开发地址或者任意网址就能预览。这里有三个专门为「让 Claude 看见」设计的按钮:
|
||||
在工作区的空面板或顶部 `+` 菜单里打开「浏览器」标签,地址栏里填本地开发地址或者任意网址就能预览。它与「文件」「审查」分别保留在独立标签中。这里有三个专门为「让 Claude 看见」设计的按钮:
|
||||
|
||||
- **截图** — 把当前页面画面带回会话,Claude 就能看到渲染结果。
|
||||
- **选择元素** — 在页面上点一个元素,它的选择器、位置和截图会一起作为上下文交给 Claude。改样式时特别省事。
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Set up a daily code review
|
||||
nav_title: Daily review
|
||||
description: Create a scheduled task that reports findings, run it immediately, and inspect the result in the logs.
|
||||
order: 4
|
||||
---
|
||||
|
||||
# Set up a daily code review
|
||||
|
||||
If you want a quick look at yesterday's changes when you open your computer, save a review prompt as a scheduled task. Run it manually first, then let it repeat on workdays.
|
||||
|
||||
## Before you start
|
||||
|
||||
- Connect a model and choose a project whose Git history you can inspect.
|
||||
- The desktop app must be open and the computer awake. Missed runs are not replayed; [scheduled tasks](../desktop/schedule.md) run locally.
|
||||
- Scheduled tasks use **full permissions**. Choose the narrowest practical working directory and read the prompt below. For an isolated trial, enable the task's worktree option.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Open **Scheduled → + New task** in the sidebar. Name it `daily-code-review` and describe it as “Review commits from the last 24 hours on workdays.”
|
||||
2. Set the repository as **working directory**, choose a configured model, and set frequency to **workdays** at a time when your computer is normally on. Leave notifications off for the first run; turn on desktop or messaging notifications after you trust the output.
|
||||
3. Paste the prompt. For the first trial, you can change “last 24 hours” to a range you know contains a commit.
|
||||
|
||||
```text
|
||||
Review only commits in this repository from the last 24 hours. Do not edit files, commit code, or install dependencies.
|
||||
List the commits you actually found first. If there are none, say “no commits to review.”
|
||||
For each possible issue give the file and line, the trigger, the impact, and a way to verify it. Do not list issues without evidence.
|
||||
End with three lines: scope reviewed, number of findings, and the one thing I should handle first.
|
||||
If you cannot read Git history or run a check, state why. Never call a check “passed” if you did not run it.
|
||||
```
|
||||
|
||||
4. Save and click **Run now** on the task card. Open **Logs**, read the status and summary, then use **View full conversation** to verify the actual commands and findings.
|
||||
5. If the report is vague, edit the prompt to name the directories or risks that matter, and run it again. Leave the task enabled once the result is useful.
|
||||
|
||||
## Expected result
|
||||
|
||||
The first run leaves a status and full session in the logs. The report should cite traceable findings, explicitly say there were no commits, or say it found no issues. “Code quality looks good” alone is not verifiable.
|
||||
|
||||
## Acceptance and common snags
|
||||
|
||||
- Check that cited commits belong to the intended repo and time range. Open one cited file to verify the location and finding.
|
||||
- If nothing runs, check that the app is open, the computer awake, the task enabled, and the scheduled time correct.
|
||||
- “Review only” is a prompt instruction, not a permission boundary. Full permissions still apply. Keep the working directory narrow, consider an isolated worktree, and inspect the full first run.
|
||||
- Frequent runs increase model use; start with once a day. The [scheduled task reference](../desktop/schedule.md) explains every field and log action.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Understand an unfamiliar project in 10 minutes
|
||||
nav_title: Explore a project
|
||||
description: Use Plan mode to identify entry points, run commands, and important modules, then verify each claim.
|
||||
order: 1
|
||||
---
|
||||
|
||||
# Understand an unfamiliar project in 10 minutes
|
||||
|
||||
When you inherit a repository, ask Claude for an evidence-backed map before changing code. This guide does not require writing files.
|
||||
|
||||
## Before you start
|
||||
|
||||
- Finish [installation, model setup, and your first session](../start/first-session.md).
|
||||
- Have a project folder you can read. A README, package manifest, and Git history help.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Start a new session and select the project folder. Switch the composer permission control to **Plan mode**.
|
||||
|
||||

|
||||
|
||||
2. Send this prompt. “Evidence” means repository files and actual command output, not guesses about files it has not read.
|
||||
|
||||
```text
|
||||
Help me understand this project using read-only investigation. Do not edit files, install dependencies, or start external services.
|
||||
Read the README, project manifests, and main entry points first. Then answer:
|
||||
1. What problem does it solve, and where does a user start?
|
||||
2. Where does the program start? Name 3–5 important directories and their roles.
|
||||
3. What are the local run and test commands? List only commands found in this repository; do not run them.
|
||||
4. To change [the feature you care about], which files should I read first?
|
||||
Cite file paths for every conclusion. Write “unconfirmed” where evidence is missing. End with a reading order of no more than five steps.
|
||||
```
|
||||
|
||||
3. Open the cited paths in the **All files** tree. Check the entry points and test scripts against the answer.
|
||||
4. If a claim is vague, ask: “Which file and passage supports that run command? Give the evidence without guessing.”
|
||||
|
||||
### Try it on this repository
|
||||
|
||||
If you do not have a practice project, select the cc-haha source repository and send this in Plan mode:
|
||||
|
||||
```text
|
||||
Investigate this repository's documentation site without editing or building it. Find the page entry point, the source of long-form docs, and the local build command. Cite a file path for each conclusion.
|
||||
```
|
||||
|
||||
You can verify three concrete results: `site/src/App.jsx` routes the homepage and documentation pages, `site/scripts/generate-docs-manifest.mjs` creates the docs index from `docs/`, and the root `package.json` offers `bun run docs:build`. Open each file to confirm it. If the model suggests a different command, ask it to cite the exact script.
|
||||
|
||||
## Expected result
|
||||
|
||||
A short project map: purpose, entry point, key directories, run and test commands found in the repo, and a reading order. **No files should change**; in a Git project, the Changed files view should match its starting state.
|
||||
|
||||
## Check it and unblock yourself
|
||||
|
||||
- Pick two claims at random and verify them in the referenced files. Run commands only after checking they make sense on your machine.
|
||||
- If Claude presents a framework convention as a project fact, ask it to mark that claim as an inference and find evidence.
|
||||
- No README? Start from manifests, entry points, and tests, and call out what remains unknown.
|
||||
|
||||
Next, practice a real edit with [Fix a bug](./fix-bug.md). [Sessions and permissions](../desktop/sessions.md) explains Plan mode and file references.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Fix a bug and check for regressions
|
||||
nav_title: Fix a bug
|
||||
description: Give Claude reproduction steps, ask it to identify the cause and add a test, then review a focused fix.
|
||||
order: 2
|
||||
---
|
||||
|
||||
# Fix a bug and check for regressions
|
||||
|
||||
“The button is broken” is hard to verify. “Saving once creates two identical records” is reproducible. Give the input, expected behavior, and actual result so you can tell whether the fix works.
|
||||
|
||||
## Before you start
|
||||
|
||||
- Use a Git project and note any changes already present. Select **Ask permissions** so you can review edits and commands.
|
||||
- Reproduce the issue once yourself. Write down the steps, error message, and affected page or command.
|
||||
- If you only want a proposal first, investigate in [Plan mode](../desktop/sessions.md), then start an implementation turn.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Start a session in the affected project. Replace the bracketed text with your actual observations.
|
||||
|
||||
```text
|
||||
Fix this reproducible issue:
|
||||
Steps: [for example, open the task list and click Save once]
|
||||
Expected: [for example, exactly one task is added]
|
||||
Actual: [for example, two identical tasks appear]
|
||||
Environment or error: [browser, OS, log; write “none yet” if unknown]
|
||||
|
||||
First identify the cause and show me the evidence. Then add a regression test that reproduces this issue and make the smallest practical fix.
|
||||
Do not refactor unrelated files. Explain the purpose of any command you need to run.
|
||||
When done, list changed files, tests actually run and their results, and any remaining unverified risk.
|
||||
```
|
||||
|
||||
2. Read the tool cards and permission prompts. Confirm Claude is reading the right project and changing relevant files before allowing an action. Open **Show full input** for a command you do not understand.
|
||||
3. After the turn, open **Workspace → Changed files** and inspect every diff. Add a line comment if needed, such as “Cover empty input here”; the comment and its location go back to the composer.
|
||||
4. Reproduce the original steps locally and run the project's relevant tests. Check `git status` and `git diff` for unrelated changes.
|
||||
|
||||
## Expected result
|
||||
|
||||
Claude should show the cause and supporting evidence, a test covering the original problem, and the result after the fix. A statement that a test “should pass” is not evidence it ran; check the command record.
|
||||
|
||||
## Acceptance and common snags
|
||||
|
||||
- The original steps now produce the expected behavior; the regression test passes after the fix and targets the affected behavior.
|
||||
- No test framework? Ask for the project's existing verification method. Avoid adding a whole framework for a small fix without good reason.
|
||||
- Session rollback only restores files captured through editing tools; files generated or changed by shell commands might remain. Verify the final disk state with Git. See [session rollback](../desktop/sessions.md).
|
||||
|
||||
Next, try [building and previewing a feature](./ship-feature.md).
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Practical guides: from goal to verification
|
||||
nav_title: Guide overview
|
||||
description: Five real tasks to practice with cc-haha, from understanding a project to scheduled work and phone access.
|
||||
order: 0
|
||||
---
|
||||
|
||||
# Practical guides: from goal to verification
|
||||
|
||||
You do not need to memorize every setting first. Pick a task you want to finish and follow its steps. Every guide has prerequisites, a prompt you can copy, and a way to check the result.
|
||||
|
||||
## Choose your task
|
||||
|
||||
| Your goal | Start here | What you practice |
|
||||
|---|---|---|
|
||||
| You inherited an unfamiliar codebase | [Understand a project in 10 minutes](./explore-project.md) | Select a folder, use Plan mode, check evidence |
|
||||
| You can reproduce an error | [Fix a bug and check for regressions](./fix-bug.md) | Scope the change, test, review the diff |
|
||||
| You want to add a web feature | [Build a feature and preview it](./ship-feature.md) | Implement in steps, preview, give line-level feedback |
|
||||
| You want to check a repo daily | [Set up a daily code review](./daily-review.md) | Schedule a task, run it once, inspect logs |
|
||||
| You need to leave your desk | [Continue a session on your phone](./phone-handoff.md) | Pair H5, check progress, respond remotely |
|
||||
|
||||
## A repeatable rhythm
|
||||
|
||||
1. **State the goal and boundary.** Say what success looks like, which folders are in scope, and what requires your approval.
|
||||
2. **Ask for evidence.** Request the files inspected, commands actually run, test results, and a change list.
|
||||
3. **Verify it yourself.** Review the diff in the workspace. For code changes, check `git status`, `git diff`, and the relevant tests on disk. A model's “done” message is not the final check.
|
||||
|
||||
Need to install or connect a model? Start with [your first session](../start/first-session.md). If you cannot find a control, use the [desktop feature map](../desktop/index.md).
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: Continue a session on your phone
|
||||
nav_title: Phone handoff
|
||||
description: Enable H5 on a trusted local network, pair your phone, and continue a task running on your computer.
|
||||
order: 5
|
||||
---
|
||||
|
||||
# Continue a session on your phone
|
||||
|
||||
A long task is running on your computer and you need to step away. H5 lets your phone browser see the same session, answer questions, and respond to permission requests. The work still runs on the computer.
|
||||
|
||||
## Before you start
|
||||
|
||||
- Connect phone and computer to the same trusted local network. Keep the desktop app open and the computer awake.
|
||||
- Have an existing desktop session. For the first trial, use a project without sensitive data and ask a read-only question such as “Read the README and list the first three things I should know.”
|
||||
- H5 is off by default. [Phone and messaging access](../desktop/remote.md) explains tokens, fixed ports, and public access.
|
||||
|
||||
## Steps
|
||||
|
||||
1. On the computer, open **Settings → H5 access**, enable H5, and confirm the notice. Click **Generate token** to show a QR code and link.
|
||||
2. Scan the code with your phone and open it in your usual system browser. After the first successful verification, the browser remembers the connection. If it cannot connect, check that **Access host / IP** is your computer's address on this network.
|
||||
3. Open the existing session from the phone's session list and verify that you see the replies already shown on the computer. Send:
|
||||
|
||||
```text
|
||||
Summarize the previous answer in three points: what should I do first, what is unconfirmed, and what information do you need from me next? Summarize only; do not edit files.
|
||||
```
|
||||
|
||||
4. Return to the computer and confirm that the phone message and reply appear in the same desktop session. When the trial is over, turn H5 off in Settings if you do not need remote access for now.
|
||||
|
||||
## Expected result
|
||||
|
||||
Phone and desktop show the same session. A message sent from the phone appears in the desktop session and the reply syncs back. A task already running on the computer can continue during a brief phone disconnect or lock; reconnect to see its result.
|
||||
|
||||
## Acceptance and common snags
|
||||
|
||||
- If the phone cannot connect, check that the app is still running, the computer is awake, and the devices can reach each other. Then check the IP and port shown in Settings. Changing Wi-Fi may change the address.
|
||||
- The QR code and link contain access credentials. Do not post them in chats or public screenshots. If exposed, **regenerate the token** on the desktop; the old link stops working.
|
||||
- H5 supports sessions and some settings, but not the desktop workspace, embedded terminal, or Computer Use authorization UI. Review diffs and use desktop-only controls back on the computer.
|
||||
- For access outside your local network, read the [public pairing and privacy guidance](../desktop/remote.md) first. Do not publish the local-network link.
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Build a feature and preview the page
|
||||
nav_title: Build a web feature
|
||||
description: Turn a web request into verifiable steps, preview the page, and give precise diff feedback.
|
||||
order: 3
|
||||
---
|
||||
|
||||
# Build a feature and preview the page
|
||||
|
||||
“The code is written” and “the page works” are two separate checks. This example adds search to an existing list; replace it with your own web feature if you prefer.
|
||||
|
||||
## Before you start
|
||||
|
||||
- Use a web project you can already run locally. Know its start command and local URL.
|
||||
- For an experiment, choose an [isolated worktree](../desktop/workspace.md) in the composer **run location**. Note uncommitted changes in your original folder; they are not copied into the worktree.
|
||||
- Keep **Ask permissions** so you can inspect file edits and server commands.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Send the request in a project session. Replace the list, field, and commands with your project's details.
|
||||
|
||||
```text
|
||||
Add a search field to [the task list page]. Filter by [title] without case sensitivity as I type. Clearing the field shows every item again. Show a clear empty state when nothing matches.
|
||||
First find the existing list component and tests, then tell me which files you plan to change. Follow the project's existing styles and test conventions. Do not change unrelated pages.
|
||||
When finished, run relevant tests and tell me the local preview command, expected URL, and what you actually verified.
|
||||
```
|
||||
|
||||
2. Review permission prompts and inline diffs. If Claude proposes installing dependencies or a broad redesign, ask why before proceeding.
|
||||
3. Start the development server following the project's instructions. Switch the right [workspace](../desktop/workspace.md) to **Browser** and open the local URL, such as `http://localhost:3000`. Use the port printed by your server.
|
||||
4. Try three states: the original list, a query with results, and a query without results. The workspace browser's **Screenshot** button can send the current page back to the session; **Select element** can send a specific element's position and screenshot.
|
||||
5. If something fails, comment on the relevant diff line or send reproduction steps in the session. Ask Claude to fix that issue only. Repeat the three checks and inspect `git diff`.
|
||||
|
||||
## Expected result
|
||||
|
||||
The list updates as you type, resets when cleared, and shows an empty state for no matches. Relevant tests pass and the workspace shows the expected file changes.
|
||||
|
||||
## Acceptance and common snags
|
||||
|
||||
- Do not rely on a screenshot alone: type, erase, and rapidly change a query yourself.
|
||||
- If the page will not load, confirm the development server is still running and its address and port match the terminal output.
|
||||
- Screenshot and Select element send the page state to Claude. Check for personal data before capturing or sharing a signed-in page.
|
||||
- Review worktree changes and decide how to keep them before the temporary workspace is cleaned up; do not treat it as a backup.
|
||||
@@ -7,7 +7,7 @@ order: 2
|
||||
|
||||
# Environment Variables
|
||||
|
||||
Claude Code Haha has two configuration paths:
|
||||
cc-haha has two configuration paths:
|
||||
|
||||
- Desktop users should select, test, and activate a provider under **Settings → Providers**. The app manages authentication, model mappings, and protocol translation.
|
||||
- When running the CLI from source, use a repository `.env`, shell variables, or Claude Code `settings.json`.
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 0
|
||||
|
||||
# Install and Run
|
||||
|
||||
The CLI is the core of Claude Code Haha — every desktop session runs one underneath. If you only want the graphical app, installing that is enough; see [Download and install](../start/install.md). The steps below are for people who want a terminal workflow, `--print` automation, or a source checkout to read and contribute to.
|
||||
The CLI is the core of cc-haha — every desktop session runs one underneath. If you only want the graphical app, installing that is enough; see [Download and install](../start/install.md). The steps below are for people who want a terminal workflow, `--print` automation, or a source checkout to read and contribute to.
|
||||
|
||||
The CLI runs from source only. There is no separate installer for it.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 1
|
||||
|
||||
# Command Reference
|
||||
|
||||
Claude Code Haha starts an interactive session by default. With `--print`, it can also run as a non-interactive agent in scripts, CI, or another program. The command in a source checkout is `./bin/claude-haha`; the installed executable name depends on the installation method.
|
||||
cc-haha starts an interactive session by default. With `--print`, it can also run as a non-interactive agent in scripts, CI, or another program. The command in a source checkout is `./bin/claude-haha`; the installed executable name depends on the installation method.
|
||||
|
||||
```bash
|
||||
./bin/claude-haha --help
|
||||
|
||||
@@ -38,7 +38,7 @@ You can name one directly ("use Explore to find…") or let Claude decide who to
|
||||
|
||||
## Seeing what's installed
|
||||
|
||||

|
||||

|
||||
|
||||
Open **Settings → Agents**. Three cards at the top show total agents, how many are active, and how many sources are in play. Below that, agents are grouped by source in a fixed order:
|
||||
|
||||
@@ -76,7 +76,7 @@ If you create a user agent with the same name (a hand-written file with `name: E
|
||||
|
||||
## Writing your own
|
||||
|
||||

|
||||

|
||||
|
||||
Click **Create Agent** in the top right. The fields:
|
||||
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
---
|
||||
title: Computer Use
|
||||
nav_title: Computer Use
|
||||
description: Let Claude read your screen, move the mouse, and type into other apps.
|
||||
description: Let Claude use other apps on macOS without taking over your physical mouse or keyboard.
|
||||
order: 7
|
||||
---
|
||||
|
||||
# Computer Use
|
||||
|
||||
With Computer Use enabled, Claude can take screenshots of your screen, move the mouse, click, and type — driving applications that have no API at all: system settings, native note apps, Finder, third-party desktop software.
|
||||
With Computer Use enabled, Claude can take screenshots, click, and type in applications that have no API at all: system settings, native note apps, Finder, and third-party desktop software.
|
||||
|
||||
**On macOS, it does not take over your physical mouse or keyboard.** The native runtime sends actions to the target app and displays a separate virtual cursor. Your real pointer stays in place, so you can keep using your own mouse and keyboard for other work. Actions still change the target app, and some may change app focus. The Windows compatibility executor moves the real pointer, so this benefit is specific to macOS.
|
||||
|
||||
It acts on this computer, so read what you're authorizing before you turn it on.
|
||||
|
||||
macOS and Windows are supported. There is no Linux executor yet.
|
||||
|
||||
## Preparing the environment
|
||||
## Check the environment
|
||||
|
||||

|
||||

|
||||
|
||||
Open **Settings → Computer Use**. The top of the page is a row of environment checks:
|
||||
Open **Settings → Computer Use**. On macOS 14.4 or later, the app prefers the native runtime component and shows OS permission status. Windows and other compatible runtime paths show checks for Python 3, a virtual environment, and dependencies. Follow the checks shown on your own screen; the native macOS page does not require a Python setup step.
|
||||
|
||||
1. **Python 3** — required on your machine. If it isn't found, click **Download Python 3**. If your Python lives in conda, pyenv, or another custom environment, pick the executable under **Python interpreter path** and it will be preferred from then on.
|
||||
2. **Virtual environment** and **Dependencies** — click **Install Environment** and the app creates an isolated venv and installs the platform dependencies. Your global Python is left alone.
|
||||
3. When everything is green the page says all checks passed and Computer Use is ready.
|
||||
|
||||
**Re-check** re-runs the detection at any time.
|
||||
If the page shows Python checks, install Python 3 if needed. For conda, pyenv, or another custom installation, select **Python interpreter path**, then click **Install Environment** to create the isolated venv and dependencies. Click **Re-check** when finished. If the native runtime component is missing, update or reinstall the app and check again.
|
||||
|
||||
## The two macOS permissions
|
||||
|
||||
@@ -31,7 +29,7 @@ macOS additionally requires two system permissions. Neither is optional:
|
||||
|
||||
| Permission | What it's for |
|
||||
|---|---|
|
||||
| Accessibility | Moving the mouse, clicking, typing |
|
||||
| Accessibility | Sending clicks and typing to the target app without moving the physical pointer |
|
||||
| Screen Recording | Taking screenshots — i.e. letting it see |
|
||||
|
||||
The page has **Open accessibility settings** and **Open screen recording settings** buttons that jump straight to the right pane.
|
||||
@@ -40,22 +38,13 @@ The page has **Open accessibility settings** and **Open screen recording setting
|
||||
After granting either one you must **fully quit and reopen the app**. macOS reads these permissions once at process start, so without a restart the page will keep reporting them as not granted.
|
||||
:::
|
||||
|
||||
Make sure you're granting the permission to the app that actually launches Claude Code Haha. Screen Recording detection is occasionally unreliable — if the system settings clearly show it granted but the page still says otherwise, it generally works anyway.
|
||||
Make sure you're granting the permission to the app that actually launches cc-haha. Screen Recording detection is occasionally unreliable — if the system settings clearly show it granted but the page still says otherwise, it generally works anyway.
|
||||
|
||||
## Pre-authorized apps
|
||||
## Enable Computer Use
|
||||
|
||||
By default, every time Claude wants to control a new app it raises a "Computer Use wants to control these apps" prompt naming the apps and the reason. You can **Allow for session** or **Deny**.
|
||||
Turn on **Enable** and read the confirmation dialog. **Once you confirm, Computer Use may control every supported app on this computer without another approval for each app.** macOS Accessibility and Screen Recording are still granted separately by the OS. The global switch, OS permissions, and target-process checks continue to apply.
|
||||
|
||||
For apps you keep approving, tick them under **Authorized Apps** in settings and Claude will control them without prompting. The search box filters your installed apps.
|
||||
|
||||
Two more grants are separate and never come along with an app authorization:
|
||||
|
||||
- **Clipboard access** — reading and writing the system clipboard.
|
||||
- **System key combos** — sending system-level shortcuts.
|
||||
|
||||
:::danger
|
||||
Pre-authorization is permanent approval. Keep password managers, banking apps, and corporate chat off that list — make it ask, every time.
|
||||
:::
|
||||
Before starting, close windows with information you do not want shown, state the task's boundaries clearly, and use the session stop button or Esc to interrupt control when needed. Turn **Enable** off here when you are finished.
|
||||
|
||||
## Getting started
|
||||
|
||||
@@ -69,24 +58,24 @@ Find the Displays pane in System Settings, but don't change anything.
|
||||
|
||||
Claude works in a screenshot → decide → act → screenshot loop, so it's slower than you are and will occasionally misclick. Explicit boundaries ("only inside app X", "don't save") work far better than a broad goal.
|
||||
|
||||
Only one session can drive the mouse and keyboard at a time. If you see that another session holds it, stop or finish that session first.
|
||||
Only one session can use Computer Use at a time. If another session holds the control lock, stop or finish it first. On macOS, this does not mean your physical mouse or keyboard is occupied.
|
||||
|
||||
## Known limits
|
||||
|
||||
- **There is no global abort hotkey.** Use the stop button in the session (`⌘.`).
|
||||
- **Windows screenshots aren't filtered.** On macOS a screenshot keeps only authorized apps and the desktop; on Windows every visible window is captured. Close or minimize anything sensitive first.
|
||||
- **Browsers and terminals are restricted.** Browsers are read-only (visible but not clickable) and terminals and IDEs are click-only (no typing). Use the browser extension for web pages and the Bash tool for commands.
|
||||
- **Re-screenshot after the UI changes.** Old coordinates don't survive a page change.
|
||||
- **Only one session can use Computer Use at a time.** Let another session finish or stop it before trying to take control.
|
||||
- **Screenshots can contain sensitive information.** Every visible window may appear in a Windows screenshot; tidy windows and the desktop on any platform before capture.
|
||||
- **Observe again after the UI changes.** Old coordinates or element state may no longer be valid.
|
||||
- **To stop control,** use the session stop button, Esc, or the **Enable** switch in Settings.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**The page keeps saying permissions are missing**
|
||||
Confirm you granted them to the app that actually launches Claude Code Haha, fully quit and reopen, then click **Re-check**.
|
||||
Confirm you granted them to the app that actually launches cc-haha, fully quit and reopen, then click **Re-check**.
|
||||
|
||||
**The environment won't install**
|
||||
Pick an explicit Python 3 under **Python interpreter path**, confirm it supports `venv`, and click **Install Environment** again. If it still fails, check the install log in **Settings → Diagnostics**.
|
||||
If your page shows Python checks, choose a Python 3 installation that supports `venv` and click **Install Environment** again. If the native runtime component is missing, update or reinstall the app. For other failures, check **Settings → Diagnostics**.
|
||||
|
||||
**Screenshots work but clicks don't**
|
||||
Make sure the target app is in the authorized list and is currently in the foreground. Browsers and terminals are subject to the tier restrictions above.
|
||||
Check that Computer Use is still enabled, that macOS Accessibility permission is granted, and that the target app is still running. After changing OS permissions, fully quit and reopen the app, then click **Re-check**.
|
||||
|
||||
For the permission tiers, the Python bridge, and the executors, see [Computer Use architecture](../internals/computer-use.md).
|
||||
For global consent, the native runtime component, and compatible executors, see [Computer Use architecture](../internals/computer-use.md).
|
||||
|
||||
@@ -11,6 +11,8 @@ The desktop app puts "talking to Claude" and "seeing what it actually changed" i
|
||||
|
||||
This page is a map, not a manual. One line per feature — click through for the details. If you haven't installed it or connected a model yet, start with [Get started](../start/index.md).
|
||||
|
||||
To learn by doing, choose a task from the [practical guides](../cases/index.md).
|
||||
|
||||
## Three places to know
|
||||
|
||||
- **Sidebar** — under the brand seal: New session, Scheduled, Skills Market. Below that, the search bar and your projects and past sessions. Settings sits at the bottom. Drag the edge to resize it.
|
||||
@@ -28,7 +30,7 @@ This page is a map, not a manual. One line per feature — click through for the
|
||||
- [Subagents](./agents.md) — when to delegate, which agents ship built in, how to write your own.
|
||||
- [Skills and the Skills Market](./skills.md) — what a skill is, how it differs from an agent, what to check before installing one.
|
||||
- [Scheduled tasks](./schedule.md) — have Claude review yesterday's commits every morning.
|
||||
- [Computer Use](./computer-use.md) — let it read the screen, move the mouse, and type into other apps.
|
||||
- [Computer Use](./computer-use.md) — control other apps on macOS without taking over your physical mouse or keyboard.
|
||||
|
||||
## Continuing somewhere else
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ The pet is **off by default**:
|
||||
3. Pick one from **Built-in pets**.
|
||||
4. Turn on **Show desktop pet**.
|
||||
|
||||

|
||||

|
||||
|
||||
## The four built-in pets
|
||||
|
||||
@@ -35,8 +35,6 @@ Switching characters updates an already-open pet window immediately.
|
||||
|
||||
## Interacting with it
|
||||
|
||||

|
||||
|
||||
- **Hover** — while idle it hops, and its gaze follows your pointer.
|
||||
- **Click** — brings the main window forward with a wave. Note that it only raises the window; it doesn't jump into a particular session.
|
||||
- **Drag** — move it anywhere on the desktop. It tries to return to the same spot next launch.
|
||||
@@ -59,6 +57,8 @@ Clicking a row raises the main window and opens that session. Permissions are st
|
||||
|
||||
## Making your own
|
||||
|
||||

|
||||
|
||||
Click **Add pet** to the right of **Your pets**. Every image is processed on your own machine — nothing is uploaded, and nothing costs conversation credits.
|
||||
|
||||
All three routes ask for the same three fields first: a **pet ID** (lowercase letters, digits, and single hyphens, e.g. `moon-cat`), a **display name**, and a **description**.
|
||||
|
||||
@@ -16,7 +16,7 @@ Both require your computer to be on with the app running. Tasks execute on your
|
||||
|
||||
## H5 Access
|
||||
|
||||

|
||||

|
||||
|
||||
### Turning it on
|
||||
|
||||
@@ -27,7 +27,7 @@ Both require your computer to be on with the app running. Tasks execute on your
|
||||
|
||||
The scanned link carries the server address and token. Scan with your phone camera and open it in your usual Safari, Chrome, or system browser. Successful verification stores the connection in that browser's localStorage and removes the token from the address bar. Scanning again or opening a bookmark reconnects automatically. Temporary network failures do not forget pairing; choose **Retry** to use the saved credential. A revoked or regenerated token requires a fresh QR code.
|
||||
|
||||

|
||||

|
||||
|
||||
### The token is the credential
|
||||
|
||||
@@ -88,9 +88,9 @@ Automatic restoration on desktop startup is off by default. Enable it to reconne
|
||||
|
||||
## IM Adapters
|
||||
|
||||

|
||||

|
||||
|
||||
**Settings → IM Adapters** supports five platforms, each connected differently:
|
||||
**Settings → IM Adapters** supports eight platforms, each connected differently. These are the common setup paths; see the [messaging guide](../im/index.md) for full steps:
|
||||
|
||||
| Platform | How to connect |
|
||||
|---|---|
|
||||
@@ -99,6 +99,9 @@ Automatic restoration on desktop startup is off by default. Enable it to reconne
|
||||
| WhatsApp | Generate a QR code and scan it under **Linked devices** in WhatsApp |
|
||||
| Telegram | Get a bot token from @BotFather and paste it in |
|
||||
| Feishu | Enter an App ID and App Secret; if you don't have a bot, the page can create one from a template |
|
||||
| WeCom | Scan in settings to create an intelligent bot |
|
||||
| QQ | Scan to authorize, then provide the App ID and App Secret |
|
||||
| Slack | Create an app from the supplied manifest, then enter two tokens |
|
||||
|
||||
### Binding an account is not the same as allowing a person
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Scheduled tasks only run while the desktop app is open and your computer is awak
|
||||
|
||||
## Every field in the form
|
||||
|
||||

|
||||

|
||||
|
||||
- **Name** (required) — the identifier in the list. A hyphenated form like `daily-code-review` reads well.
|
||||
- **Description** (required) — one line about what it does, so you recognize it later.
|
||||
|
||||
@@ -19,7 +19,7 @@ The small line under the session title is metadata: project path, branch, model.
|
||||
|
||||
## Reading the conversation
|
||||
|
||||

|
||||

|
||||
|
||||
Claude doesn't just reply with a paragraph. Several kinds of card appear along the way:
|
||||
|
||||
@@ -32,8 +32,6 @@ In a long conversation, `⌘F` opens find-in-page and jumps between matches in t
|
||||
|
||||
## The permission prompt: which button?
|
||||
|
||||

|
||||
|
||||
In the default permission mode, Claude stops and asks before editing a file or running a risky command. The dialog previews the change, then offers three buttons:
|
||||
|
||||
- **Allow** — just this once. The same operation will ask again next time.
|
||||
@@ -44,6 +42,8 @@ When in doubt, pick **Allow** — being asked a few extra times costs nothing. I
|
||||
|
||||
### The five permission modes
|
||||
|
||||

|
||||
|
||||
The permission button in the composer toolbar sets the overall strictness:
|
||||
|
||||
| Mode | What it does |
|
||||
@@ -90,7 +90,7 @@ Tool activity from background subagents bubbles up here too, so you don't have t
|
||||
|
||||
## What the composer can do
|
||||
|
||||

|
||||

|
||||
|
||||
- **`/` slash commands** — type `/` for the command panel. `/status` for session state and usage, `/context` for context breakdown, `/compact` to compress, `/review` to review changes, `/commit`, `/memory` to open project memory, `/doctor` to open the diagnostics check.
|
||||
- **`@` file and session references** — type `@` to search files and past sessions. Files are attached as paths; sessions appear as clickable references.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Settings reference
|
||||
title: Settings guide
|
||||
nav_title: Settings
|
||||
description: All 16 settings tabs — what each one configures and when you'd need it.
|
||||
description: Choose the settings needed for a first session, then find advanced options by task.
|
||||
order: 6
|
||||
---
|
||||
|
||||
# Settings reference
|
||||
# Settings guide
|
||||
|
||||
Click **Settings** at the bottom of the sidebar. Sixteen tabs on the left, in a fixed order. This page walks through them in that order: what each one configures, and when you'd actually need to touch it.
|
||||
Click **Settings** at the bottom of the sidebar. For your first session, connect a model in **Providers**, check permissions and language in **General**, then follow [Your first session](../start/first-session.md). Open the other tabs when a task calls for them.
|
||||
|
||||
## Providers
|
||||
|
||||
@@ -17,23 +17,51 @@ You'll come here once during setup and rarely again. Full steps in [Connecting a
|
||||
|
||||
## General
|
||||
|
||||
The tab you'll open most often — everything about how the app feels.
|
||||
General covers four areas: appearance and replies, how the agent works, network and notifications, and local data. Check the first two before your first session; adjust the others when you need them.
|
||||
|
||||

|
||||

|
||||
|
||||
- **Color theme** — six of them: Pure White (default), Paper, Warm Classic, Celadon, Ink Night, Ink Blue. There's also **Follow the system**, which lets you pick which theme to use in light mode and which in dark mode.
|
||||
- **Language** — the interface language.
|
||||
- **Response Language** — makes Claude always reply in a given language, set independently of the interface.
|
||||
- **Output Style** — Default, Explanatory, or Learning. Explanatory adds reasoning about implementation choices and codebase patterns; Learning pauses and asks you to write small pieces yourself. Running sessions keep their current prompt; the change applies to new sessions.
|
||||
- **Default Session Permissions** — which permission mode new sessions start in. Each session can still be changed individually.
|
||||
- **Effort Level** and **Thinking Mode** — defaults for new sessions. Turning thinking off sends an explicit non-thinking parameter to providers like DeepSeek that need one.
|
||||
- **Message Sending** — Enter to send (Shift+Enter for a newline), or `Ctrl/Cmd+Enter` to send.
|
||||
- **System Notifications** — route permission prompts, completed replies, and scheduled task results to the OS notification center. Enabling it requests system permission.
|
||||
- **Network** — three modes: Direct connection (explicitly bypass the system proxy), System proxy (follow system or PAC rules per destination), or Manual proxy (a URL like `http://user:password@127.0.0.1:7890`). Below that, **AI request timeout**, which can go up to 1800 seconds when a provider is slow to first byte. App updates use their own proxy setting, over in About.
|
||||
- **WebSearch** — how web search is routed. Auto prefers Claude's native WebSearch for Claude models and falls back to Tavily or Brave otherwise; those two need API keys you supply.
|
||||
- **Auto-dream** — periodically tidies and compresses memory files in the background. Off by default, because it spends tokens.
|
||||
- **UI Zoom** — scale the whole interface, also bound to `⌘+` / `⌘-`, with `⌘0` back to 100%.
|
||||
- **Data Storage Location** — an advanced, rarely-touched setting. Defaults to the system directory `~/.claude`, or point it at an absolute path of your own. After switching, sessions, skills, MCP, plugins, and provider config are all read from the new directory; it needs a restart, and the two directories are never merged or migrated automatically.
|
||||
### Before your first session: permissions and replies
|
||||
|
||||
| Setting | What to choose | When it takes effect |
|
||||
|---|---|---|
|
||||
| Default session permissions | Keep the default **Ask for permission** at first. Inspect the target file or command before approving edits or higher-risk commands. You can change any session separately with the composer control; see [the five modes](./sessions.md#the-five-permission-modes). | Default for new chat sessions; change an existing session in its composer. |
|
||||
| Response language | Choose a language if you want consistent replies in it. This is independent of the interface language and is unset by default. | Subsequent replies; earlier messages are unchanged. |
|
||||
| Output style | **Default** is concise; **Explanatory** explains implementation choices; **Learning** asks you to write small pieces. Installed custom styles can also appear here. | New sessions, sessions resumed in a new process, or restarted sessions. A running session keeps its current prompt. |
|
||||
| Effort level and Thinking Mode | Start with the supported model default. Adjust for speed, cost, or provider compatibility; disabling thinking sends a non-thinking parameter to compatible providers that require one. | Defaults for new sessions; available effort levels depend on the selected model. |
|
||||
|
||||
**Try it:** Choose a disposable Git project and ask: “List the files you plan to change, make one small edit, then tell me how to verify it.” Inspect any permission prompt, then [review the Diff](./workspace.md#diff-review-leaving-a-note-on-a-line) file by file.
|
||||
|
||||
### Appearance and input
|
||||
|
||||
- **Color theme:** Pure White, Paper, Warm Classic, Celadon, Ink Night, or Ink Blue. **Follow the system** lets you choose separate light and dark themes.
|
||||
- **Language:** changes only the interface, with English, Simplified and Traditional Chinese, Japanese, and Korean choices. It does not set the response language.
|
||||
- **UI Zoom:** scales the whole window. Use `⌘+` / `⌘-` on macOS or `Ctrl+` / `Ctrl-` on Windows; press `0` to reset to 100%.
|
||||
- **Message sending:** defaults to Enter to send and Shift+Enter for a newline. If you write long prompts, choose `Ctrl/Cmd+Enter` to send.
|
||||
- **Default editor:** chooses which detected local editor appears as the default under a file's **Open with** menu.
|
||||
|
||||
### For more involved agent workflows
|
||||
|
||||
| Setting | When to use it |
|
||||
|---|---|
|
||||
| Ultracode | On by default. A standalone keyword triggers dynamic Workflow orchestration; the same text in code blocks, quotes, or paths keeps its literal meaning. |
|
||||
| Agent Teams | On by default. Use it when a larger task needs several agents working together. New sessions pick it up; existing sessions do after an app restart. See [Subagents](./agents.md) first. |
|
||||
| Auto-answer questions | Off by default. After 1, 5, 10, or 30 minutes without an answer to an agent's multiple-choice question, it can choose a recommended option. If it cannot choose reliably, it keeps waiting. Use only when you want unattended work to continue. |
|
||||
| Auto-dream | Off by default. After enough sessions have accumulated, it can organize auto-memory in the background, using additional model calls and tokens. |
|
||||
| Agent Trace | On by default. New sessions write condensed request, response, and status events to a local traces directory. Use the **Trace** tab to investigate a failure; turning it off stops new records, while old ones remain readable. |
|
||||
|
||||
### Network, web search, and notifications
|
||||
|
||||
- **System Notifications** are off by default. Enable them and grant OS permission when you need alerts for permission requests, completed replies, or scheduled tasks away from the app.
|
||||
- **Network** uses the system proxy by default. **Direct** bypasses system and inherited process proxies; **Manual** accepts an HTTP/HTTPS URL such as `http://user:password@127.0.0.1:7890`. Click **Save**. New requests use the new route; requests already in flight keep their old route. Model services, account sign-in, MCP, and agent tools use this setting. App updates have a separate proxy under **About**.
|
||||
- **AI request timeout** defaults to 1800 seconds and accepts at least 30 seconds. Raise it only when the first model response or connection test really times out. For a local model that thinks for a long time, you can enter 14400 seconds (four hours).
|
||||
- **WebFetch preflight** skips the upstream domain check by default to avoid false failures with third-party providers or restricted networks. Turn this off only when you specifically want the upstream check.
|
||||
- **WebSearch** defaults to **Auto**: Claude models try native search first, then Tavily or Brave on failure or with non-Claude models. You can force Claude, Tavily, Brave, or Off. Tavily and Brave require your own API keys and a click on **Save**.
|
||||
|
||||
### Local data: check the effect before changing it
|
||||
|
||||
- **Session retention** defaults to 365 days and accepts 0–3650 days. Reducing it immediately removes older records; setting 0 removes all existing records and stops recording session contents. The UI previews and confirms the change. This is not a backup system.
|
||||
- **Data Storage Location** defaults to `~/.claude` (`%USERPROFILE%\\.claude` on Windows). Portable mode takes an absolute path outside the app installation folder. After an app restart, sessions, configuration, tasks, skills, and plugins are read from the new location. The two directories are not merged or migrated automatically. If `CLAUDE_CONFIG_DIR` is set at launch, remove that environment variable before switching locations in the UI.
|
||||
|
||||
Product screenshots in this guide consistently use the **Pure White** theme so the interface can be compared without palette changes.
|
||||
|
||||
@@ -43,7 +71,7 @@ Continue the same session in your phone's browser. Off by default. See [Phone (H
|
||||
|
||||
## IM Adapters
|
||||
|
||||
Talk to Claude from WeChat, DingTalk, WhatsApp, Telegram, or Feishu, and manage paired users. See [Phone (H5) and IM](./remote.md) and [IM integrations](../im/index.md).
|
||||
Talk to Claude from WeChat, DingTalk, WhatsApp, Telegram, Feishu, WeCom, QQ, or Slack, and manage paired users. See [Phone (H5) and IM](./remote.md) and [IM integrations](../im/index.md).
|
||||
|
||||
## Terminal
|
||||
|
||||
@@ -87,11 +115,11 @@ A little robot floating on your desktop. Off by default. See [Desktop pet](./pet
|
||||
|
||||
## Computer Use
|
||||
|
||||
Let Claude read the screen, click, and type. Unusable until you install the runtime environment and grant system permissions. See [Computer Use](./computer-use.md).
|
||||
Let Claude read the screen, click, and type. Enable it, confirm the global consent, and satisfy the OS permission checks; setup steps vary by platform. See [Computer Use](./computer-use.md).
|
||||
|
||||
## Token usage
|
||||
|
||||

|
||||

|
||||
|
||||
A usage dashboard computed from the Claude Code session records on this machine. Everything is calculated locally and nothing is uploaded.
|
||||
|
||||
@@ -101,7 +129,7 @@ A usage dashboard computed from the Claude Code session records on this machine.
|
||||
|
||||
## Trace
|
||||
|
||||
Records the model request chain for each session — requests, responses, status events, timings — for debugging stalls, failures, and unexplained waits. The switch isn't on this tab: turn on **Agent trace** in **Settings → General** first, and this tab fills up.
|
||||
Records the model request chain for each session — requests, responses, status events, timings — for debugging stalls, failures, and unexplained waits. The switch is in **Settings → General** and is on by default; new sessions produce new records.
|
||||
|
||||
Once enabled, new sessions write condensed records to a local traces directory. Existing records stay readable after you turn it off; only new ones stop being written. The trace list supports search, filtering (all / LLM / tools / errors), opening a trace in its own window, and deleting a session's trace without touching its chat history.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ A skill is a procedure someone else already worked out. Install it and Claude fo
|
||||
|
||||
## The Skills Market
|
||||
|
||||

|
||||

|
||||
|
||||
Click **Skills Market** in the sidebar. It aggregates two sources, **ClawHub** and **SkillHub**, and loads more as you scroll — there is no "load more" button.
|
||||
|
||||
|
||||
@@ -11,33 +11,35 @@ The conversation tells you what Claude said. The workspace tells you what it act
|
||||
|
||||
## Opening it
|
||||
|
||||
Click the folder icon on the right of the tab bar. Click it again to collapse. Drag the panel's left edge to resize.
|
||||
Click **Show Workspace** on the right of the tab bar. Click it again to collapse. Drag the panel's left edge to resize.
|
||||
|
||||
At the top of the panel is a **Files / Browser** switch:
|
||||
The empty panel offers **Side chat**, **Review**, **Terminal**, **Browser**, and **Files**. Each opens in its own tab. Use the `+` at the top to add more tabs and switch between tools.
|
||||
|
||||
- **Files** — project files, Git changes, and diff review.
|
||||
- **Browser** — a built-in browser for previewing the page you just changed.
|
||||
## Review: choose a comparison
|
||||
|
||||
## Changed files and All files
|
||||

|
||||
|
||||

|
||||
Open **Review** and use **Comparison** in the toolbar to choose the changes you want to inspect:
|
||||
|
||||
In Files mode there are two views:
|
||||
- **Unstaged / Staged / All uncommitted** — the corresponding changes in the current working directory.
|
||||
- **Branch / Compare branch…** — differences against the selected branch.
|
||||
- **View commit…** — enter a commit reference to inspect that commit's changes.
|
||||
|
||||
- **Changed files** — only files with uncommitted changes in this Git repo, each row showing its status (modified, added, deleted, renamed, untracked) and lines added or removed. This is where you'll spend review time.
|
||||
- **All files** — the full directory tree. The search box above it matches file names across the whole project, including directories you haven't expanded yet.
|
||||
Use **Toggle file tree** to show the files changed in the selected comparison. Each row includes a status and line counts; select a file to see its diff. The Review screenshots on this page use **View commit…** to inspect the existing `HEAD` commit in read-only mode.
|
||||
|
||||
Click a file name to open a preview: a diff in two columns, or the file itself. Previews accumulate as tabs, like an editor.
|
||||
If the folder is not a Git repository, the **Review** entry explains why it is unavailable.
|
||||
|
||||
When the directory isn't a Git repo, **Changed files** says so plainly — that isn't an error.
|
||||
## Files tabs
|
||||
|
||||
**Files** is a separate tab for browsing the project directory and previewing individual files. Use its search box to filter file names, or choose **Open file in tab** from a review. Open tabs work like editor tabs: switch between them as needed.
|
||||
|
||||
Any file can have its path copied, or be pushed back into the composer as context with **Add to chat**.
|
||||
|
||||
## Diff review: leaving a note on a line
|
||||
|
||||

|
||||

|
||||
|
||||
The diff keeps old and new lines with full syntax highlighting. The genuinely useful part is line-level comments:
|
||||
The diff keeps old and new lines with syntax highlighting. The toolbar lets you switch between **Unified diff** and **Split diff** and enable word wrap. When you finish a file, use **Mark as viewed**. To leave feedback, use line-level comments:
|
||||
|
||||
1. Click a line — a comment box opens beside it.
|
||||
2. To comment on a range, hold `Shift` and click the first and last line. The selection must stay on one side of the diff and inside one hunk.
|
||||
@@ -49,7 +51,7 @@ This is far more precise than describing "the null check in that one function" i
|
||||
If Claude changes the file while you're writing a comment, the panel tells you the diff has updated and asks you to reselect — that's there to stop a comment from landing on the wrong lines.
|
||||
|
||||
:::tip
|
||||
Denied tool calls never reach disk, so they never show up in Changed files. Even so, give `git diff` one last read before you ship.
|
||||
Denied tool calls never reach disk, so they do not create file changes to review. Even so, give `git diff` one last read before you ship.
|
||||
:::
|
||||
|
||||
## Isolated worktree: keeping experiments caged
|
||||
@@ -66,9 +68,9 @@ The temporary worktree is cleaned up when you're done. History stays readable, b
|
||||
|
||||
## Built-in browser
|
||||
|
||||

|
||||

|
||||
|
||||
Switch the workspace panel to **Browser** and type a local dev address or any URL. Three buttons here exist specifically so Claude can see what you see:
|
||||
Open a **Browser** tab from the empty workspace panel or the `+` menu at the top, then type a local dev address or any URL. It stays in its own tab alongside **Files** and **Review**. Three buttons here exist specifically so Claude can see what you see:
|
||||
|
||||
- **Capture** — send the current rendering back into the conversation.
|
||||
- **Pick element** — click an element on the page; its selector, position, and a screenshot go to Claude as context. This saves an enormous amount of back-and-forth on styling.
|
||||
|
||||
@@ -11,7 +11,7 @@ A session running in the Desktop app can be reached from a private chat on your
|
||||
|
||||
The chat partner is a bot or account you bound yourself. Messages reach your local Desktop app; no intermediate service holds your code.
|
||||
|
||||

|
||||

|
||||
|
||||
## What you get
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ The fastest of the five to set up: ask `@BotFather` for a token, paste it into D
|
||||
|
||||
In Telegram, open the official `@BotFather` account and send `/newbot`. Then:
|
||||
|
||||
1. Choose a display name, for example `ClaudeCodeHaha Bot`.
|
||||
1. Choose a display name, for example `cc-haha Bot`.
|
||||
2. Choose a username in Latin letters ending in `_bot`, for example `jiang_cc_hah_bot`.
|
||||
3. Copy the **Bot Token** that BotFather returns.
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Session authorization and safe dispatch
|
||||
src/vendor/computer-use-mcp/toolCalls.ts
|
||||
src/vendor/computer-use-mcp/mcpServer.ts
|
||||
↓
|
||||
Claude Code Haha integration
|
||||
cc-haha integration
|
||||
src/utils/computerUse/
|
||||
↓
|
||||
Python bridge
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 0
|
||||
|
||||
# Architecture Overview
|
||||
|
||||
Claude Code Haha looks like one desktop app, but it is five pieces of code that each run on their own. Before reading source or opening a PR, get the boundaries straight — every other page in this section lives inside one of them.
|
||||
cc-haha looks like one desktop app, but it is five pieces of code that each run on their own. Before reading source or opening a PR, get the boundaries straight — every other page in this section lives inside one of them.
|
||||
|
||||
```text
|
||||
desktop/src/ Frontend — React + Zustand. Draws the UI, touches no native capability.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Code signing policy
|
||||
nav_title: Signing policy
|
||||
description: Signing scope, responsible roles, approval, verification, and revocation rules for official Claude Code Haha releases.
|
||||
description: Signing scope, responsible roles, approval, verification, and revocation rules for official cc-haha releases.
|
||||
order: 5
|
||||
---
|
||||
|
||||
# Code signing policy
|
||||
|
||||
This policy applies to official Windows releases of Claude Code Haha. The project is applying for free code signing through the SignPath Foundation. Until onboarding is complete, the Windows download page will continue to identify installers as unsigned. After onboarding, only artifacts that comply with this policy will be submitted for signing.
|
||||
This policy applies to official Windows releases of cc-haha. The project is applying for free code signing through the SignPath Foundation. Until onboarding is complete, the Windows download page will continue to identify installers as unsigned. After onboarding, only artifacts that comply with this policy will be submitted for signing.
|
||||
|
||||
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
|
||||
|
||||
@@ -17,7 +17,7 @@ The service is provided by [SignPath.io](https://about.signpath.io) and the [Sig
|
||||
|
||||
Signing is limited to the Windows desktop application, project-owned sidecars, and final x64 and ARM64 NSIS installers built from source owned by this project in [NanmiCoder/cc-haha](https://github.com/NanmiCoder/cc-haha).
|
||||
|
||||
Release packages may include third-party or upstream open-source components distributed under their respective licenses. Those components may be bundled unchanged, but they will not be signed as binaries owned by Claude Code Haha. The certificate will not be used for other projects, personal builds, debug builds, or files of unknown origin.
|
||||
Release packages may include third-party or upstream open-source components distributed under their respective licenses. Those components may be bundled unchanged, but they will not be signed as binaries owned by cc-haha. The certificate will not be used for other projects, personal builds, debug builds, or files of unknown origin.
|
||||
|
||||
## Trusted source and build
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Your model is connected. Now let it actually do something. Find a project you do
|
||||
|
||||
Click "New session" in the sidebar, or press `Cmd/Ctrl + N`.
|
||||
|
||||

|
||||

|
||||
|
||||
Look at the row along the bottom of the composer: `+` for attachments, then **permission mode**, **launch location**, **model and effort**, and finally "Run".
|
||||
|
||||
@@ -25,7 +25,7 @@ If the folder is a Git repository, the same pill also lets you choose a branch a
|
||||
|
||||
Click the permission mode button and all five levels open up.
|
||||
|
||||

|
||||

|
||||
|
||||
| Mode | What the app says it does |
|
||||
|---|---|
|
||||
@@ -68,7 +68,7 @@ Press `Enter` to send (`Shift + Enter` for a newline).
|
||||
|
||||
## 4. Watch it work
|
||||
|
||||

|
||||

|
||||
|
||||
It orients itself before it starts editing, and you'll see several kinds of card go by:
|
||||
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
---
|
||||
title: What Claude Code Haha is
|
||||
title: What cc-haha is
|
||||
nav_title: What it is
|
||||
description: An AI coding workbench that runs on your own machine. You pick the model; you approve every change.
|
||||
order: 0
|
||||
---
|
||||
|
||||
# What Claude Code Haha is
|
||||
# What cc-haha is
|
||||
|
||||
It's an app on your computer. You hand it a project folder, describe what you want in plain language, and it goes off to read the code, edit files, and run commands — with every change laid out in front of you, waiting for your approval.
|
||||
|
||||

|
||||

|
||||
|
||||
That's a real session. Projects and history on the left, the conversation in the middle, and when Claude edits a file the diff appears right underneath, line by line.
|
||||
|
||||
## How this relates to the Claude Code CLI
|
||||
|
||||
Claude Code is Anthropic's command-line coding agent. The engine inside Claude Code Haha is a CLI built from repaired Claude Code sources (it's called `claude-haha` in this repo), and the desktop app is the graphical shell wrapped around it.
|
||||
Claude Code is Anthropic's command-line coding agent. The engine inside cc-haha is a CLI built from repaired Claude Code sources (it's called `claude-haha` in this repo), and the desktop app is the graphical shell wrapped around it.
|
||||
|
||||
Two practical consequences:
|
||||
|
||||
@@ -53,4 +53,6 @@ Work through these in order; about twenty minutes gets you to a working first se
|
||||
3. [Run your first session](./first-session.md) — pick a folder, set permissions, state a goal, watch it work, review the diff.
|
||||
4. [Desktop feature map](../desktop/index.md) — once it's running, see what else is in the box.
|
||||
|
||||
For a goal you can practice end to end, continue with the [practical guides](../cases/index.md): explore an unfamiliar project, fix a bug, preview a page, schedule a review, and continue on your phone.
|
||||
|
||||
Stuck along the way? [Won't install, won't open, won't connect](./troubleshooting.md) is organized by symptom.
|
||||
|
||||
@@ -9,6 +9,8 @@ order: 1
|
||||
|
||||
Install and go. You don't need Node.js, Python, or Claude Code — the CLI engine and the ripgrep binary used for file search are both bundled inside the installer.
|
||||
|
||||
The product is now called **cc-haha**. Existing packages, installed apps, and system processes may still use the legacy name `Claude Code Haha`; filenames and commands below match those published packages.
|
||||
|
||||
## Pick the right package
|
||||
|
||||
Everything lives on [GitHub Releases](https://github.com/NanmiCoder/cc-haha/releases/latest). Choose by operating system and CPU architecture:
|
||||
@@ -29,7 +31,7 @@ The `.blockmap` and `latest*.yml` files are used by the app's own updater. You d
|
||||
## macOS
|
||||
|
||||
1. Open the DMG.
|
||||
2. Drag Claude Code Haha into Applications.
|
||||
2. Drag cc-haha into Applications.
|
||||
3. Launch it from Applications.
|
||||
|
||||
### If macOS says the app is damaged
|
||||
|
||||
@@ -7,7 +7,7 @@ order: 2
|
||||
|
||||
# Connect a model
|
||||
|
||||
Claude Code Haha ships without a model. It's the shell that does the work; you have to give it a brain first.
|
||||
cc-haha ships without a model. It's the shell that does the work; you have to give it a brain first.
|
||||
|
||||
Click "Settings" at the bottom of the sidebar, then pick the first tab, "Providers". From there you have three routes:
|
||||
|
||||
@@ -31,7 +31,7 @@ Click the sign-in button on the card ("Sign in to Claude" / "Sign in with ChatGP
|
||||
|
||||
Three things to watch for:
|
||||
|
||||
- Leave Claude Code Haha running for the whole flow — the callback has to land in the running app.
|
||||
- Leave cc-haha running for the whole flow — the callback has to land in the running app.
|
||||
- If the browser doesn't open by itself, click "Copy authorization link" and paste it in manually.
|
||||
- Proxies and blocking browser extensions can intercept either the authorization page or the local callback. Turn them off before retrying.
|
||||
|
||||
@@ -70,7 +70,7 @@ Whether a local model can complete an agent workflow depends on its tool-calling
|
||||
|
||||
## The Add Provider dialog, field by field
|
||||
|
||||

|
||||

|
||||
|
||||
**Name** (required) — how this provider appears in the list. A preset fills it in; rename it to something you'll recognize, like "DeepSeek — work account".
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Privacy and network access
|
||||
nav_title: Privacy
|
||||
description: What Claude Code Haha stores locally, when it uses the network, and how to remove its data.
|
||||
description: What cc-haha stores locally, when it uses the network, and how to remove its data.
|
||||
order: 6
|
||||
---
|
||||
|
||||
# Privacy and network access
|
||||
|
||||
Claude Code Haha is a local-first, open-source development tool. The project itself does not operate a cloud backend that receives session content. The application is not fully offline: when you choose a model provider, MCP server, messaging integration, or update feature, relevant data is sent to the third-party service you selected or configured.
|
||||
cc-haha is a local-first, open-source development tool. The project itself does not operate a cloud backend that receives session content. The application is not fully offline: when you choose a model provider, MCP server, messaging integration, or update feature, relevant data is sent to the third-party service you selected or configured.
|
||||
|
||||
## Data stored locally
|
||||
|
||||
@@ -32,7 +32,7 @@ The project maintainers do not sell user data or place advertising based on pers
|
||||
|
||||
## Removing data
|
||||
|
||||
Uninstalling the application does not automatically delete sessions and configuration under `~/.claude`. To remove local data completely, first back up anything you want to keep, then manually delete `~/.claude` and the Claude Code Haha data in your operating system's application-data directory. To remove data already sent to a third-party service, follow that provider's process.
|
||||
Uninstalling the application does not automatically delete sessions and configuration under `~/.claude`. To remove local data completely, first back up anything you want to keep, then manually delete `~/.claude` and the cc-haha data in your operating system's application-data directory (installed versions may still use the legacy directory name `Claude Code Haha`). To remove data already sent to a third-party service, follow that provider's process.
|
||||
|
||||
## Contact
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ First, one check: make sure you're on the latest stable build from [GitHub Relea
|
||||
|
||||
1. Quit the main window, and quit the tray icon too.
|
||||
2. Give background processes a few seconds to exit.
|
||||
3. Still stuck? End any remaining Claude Code Haha processes in Task Manager.
|
||||
3. Still stuck? End any remaining cc-haha processes in Task Manager; installed versions may still show the legacy name `Claude Code Haha`.
|
||||
4. Run the installer again. **Don't** use "Run as administrator", and **don't** manually delete data from the old install directory.
|
||||
|
||||
### The Linux AppImage does nothing when I run it
|
||||
@@ -188,11 +188,11 @@ Scanning only binds the platform account; it doesn't authorize everyone who can
|
||||
**What to do** — Open Settings → Computer Use and find the first item that isn't green:
|
||||
|
||||
1. Is the toggle at the top on? (With it off, new sessions never get these tools at all.)
|
||||
2. Did the Python 3 check pass? If not, install it, or point "Python Interpreter Path" at one you already have — conda and pyenv both work.
|
||||
3. Are the virtual environment and dependencies ready and installed? If not, click "Install Environment".
|
||||
2. Does your page show the native runtime component or the Python compatibility path? macOS 14.4 and later prefer the native component; update or reinstall if it is missing. Install Python 3 or select an existing interpreter only when Python checks are shown.
|
||||
3. If the page shows virtual environment and dependency checks, make sure both are ready; otherwise click "Install Environment".
|
||||
4. On macOS, both "Accessibility Permission" and "Screen Recording Permission" must show as granted. Grant them under System Settings → Privacy & Security.
|
||||
5. **Restart Claude Code Haha after granting them.** System permissions don't apply to an already-running process.
|
||||
6. Is the app you want to control listed under "Authorized Apps"?
|
||||
5. **Restart cc-haha after granting them.** System permissions don't apply to an already-running process.
|
||||
6. Did you confirm the one-time Computer Use consent in the app? It covers all apps; also check that the target app is running and OS permissions are granted.
|
||||
|
||||
Full details in [Computer Use](../desktop/computer-use.md).
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ order: 0
|
||||
|
||||
对话对象是你自己绑定的机器人或账号,消息只经过你本机的桌面端,没有中间服务器托管你的代码。
|
||||
|
||||

|
||||

|
||||
|
||||
## 接进来之后能做什么
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ order: 2
|
||||
|
||||
按提示走完两步:
|
||||
|
||||
1. 取一个机器人名称,例如 `ClaudeCodeHaha机器人`。
|
||||
1. 取一个机器人名称,例如 `cc-haha 机器人`。
|
||||
2. 取一个用户名,全英文且必须以 `_bot` 结尾,例如 `jiang_cc_hah_bot`。
|
||||
|
||||
创建成功后复制 BotFather 返回的**Bot Token**。这枚 Token 等同于机器人的密码,别贴到公开的地方。
|
||||
|
||||
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 164 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 297 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 320 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 164 KiB |