Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
4b7dd4f
style: relax chat area max-width for larger screens
limityan Apr 26, 2026
bf7f8ba
style(i18n): modify zh-CN and zh-TW locales
limityan Apr 26, 2026
2530479
fix(flow-chat): use scrollToIndex for unread session scroll-to-bottom
limityan Apr 26, 2026
91734ce
feat(session): add needsUserAttention for pending tool confirmations …
limityan Apr 26, 2026
2cc3eab
Merge pull request #532 from limityan/yanzhn/fix
limityan Apr 26, 2026
c043d18
fix: skip unread marking for user-cancelled sessions
limityan Apr 26, 2026
fd0e37e
docs: update AGENTS.md with relay-server, release-fast, Windows OpenS…
limityan Apr 26, 2026
e5c82d7
Merge pull request #534 from limityan/yanzhn/fix
limityan Apr 26, 2026
c793417
docs: refactor AGENTS.md into navigation mode, deduplicate CONTRIBUTI…
limityan Apr 26, 2026
e24b5f3
fix(session): sort sessions by lastActiveAt to auto-promote on user m…
limityan Apr 26, 2026
8766969
Merge pull request #535 from limityan/yanzhn/agent
limityan Apr 26, 2026
4bca9bc
feat(desktop): add devtools feature with interactive element inspector
limityan Apr 26, 2026
8876570
feat(deep-review): improve action bar UX with priority grouping and d…
limityan Apr 26, 2026
3a7a09f
feat(deep-review): replace raw prompt with reviewer context in task c…
limityan Apr 26, 2026
0ea967e
Merge pull request #537 from limityan/yanzhn/fix
limityan Apr 26, 2026
c144f35
feat(agentic): harden tool pipeline, execution, and SSE streaming (#538)
bobleer Apr 26, 2026
957697f
refactor(web-ui): move terminal into tool cards and refresh flow chat UI
G-CWing Apr 26, 2026
7843bf9
Merge origin/main into gwing/dev
G-CWing Apr 26, 2026
0b2a2ab
Merge pull request #540 from GCWing/gwing/dev
GCWing Apr 26, 2026
34a5916
feat(web-ui): refine file operation tool card expand and open-in-editor
G-CWing Apr 26, 2026
bf84283
Merge pull request #541 from GCWing/gwing/dev
GCWing Apr 26, 2026
8e59a0c
fix(session): mark interrupted sessions as unread on close and restore
limityan Apr 26, 2026
0b1a5ff
fix(session): add interrupted unread state for partial stream recovery
limityan Apr 26, 2026
b1af2d6
fix(subagent): hide empty subagent container to prevent white gap
limityan Apr 26, 2026
60ebc25
fix(debug): use isTauriRuntime and always register shortcuts
limityan Apr 26, 2026
a1c9c5b
Merge pull request #539 from limityan/yanzhn/fix
limityan Apr 26, 2026
1a2004d
feat(web-ui): editor shortcut focus, flow chat cards, session ordering
G-CWing Apr 26, 2026
eda74a8
Merge origin/main into gwing/dev
G-CWing Apr 26, 2026
6e17973
test(web-ui): fix deepReviewActionBarStore tests for zustand snapshots
G-CWing Apr 26, 2026
d253873
Merge pull request #542 from GCWing/gwing/dev
GCWing Apr 26, 2026
58ebcd8
fix(web-ui): tool card header inset for trailing controls
G-CWing Apr 26, 2026
0c677a9
Merge pull request #543 from GCWing/fix/web-ui-tool-card-header-padding
GCWing Apr 26, 2026
f955697
docs(agentic): streamline builtin gstack skills and expand team mode …
bobleer Apr 26, 2026
ebd1c77
refactor: move ACP integration to dedicated crate
wgqqqqq Apr 25, 2026
b20265f
feat: improve ACP server integration
wgqqqqq Apr 26, 2026
27fb90e
feat: add ACP model selection support
wgqqqqq Apr 26, 2026
f91364a
Merge pull request #545 from wgqqqqq/feature/acp-server-model-selection
GCWing Apr 26, 2026
50ad4f4
fix(snapshot): handle stale dedup references and empty baselines (#549)
bobleer Apr 26, 2026
1d8ef78
fix(web-ui): align subagent items padding with tool card header (#550)
bobleer Apr 26, 2026
b01b71d
fix(web-ui): keep session ordering stable
limityan Apr 26, 2026
d155dbd
fix(web-ui): improve deep review action bar UX
limityan Apr 26, 2026
f68866a
fix: prevent unread session dots from reappearing after restart
limityan Apr 26, 2026
b4d389c
fix: internationalize reviewer role description in deep review subage…
limityan Apr 26, 2026
e0b7d79
perf(deep-review): add efficiency rules and role-specific strategy di…
limityan Apr 26, 2026
0074bc6
Merge pull request #547 from limityan/yanzhn/session
limityan Apr 26, 2026
e626f39
fix(web-ui): align ReviewTeamPage content width and padding with pare…
limityan Apr 26, 2026
64e0674
fix(persistence): add index completeness check to list_session_metadata
limityan Apr 26, 2026
d6dfc0c
docs: update deep review design with frontend reviewer and always-on …
limityan Apr 26, 2026
cedc8c9
feat(chat): add session branching from turn footer
wsp1911 Apr 26, 2026
f89fd29
refactor(btw): make /btw threads transient and align persistence flow
wsp1911 Apr 26, 2026
a69342d
feat(deep-review): add architecture and frontend reviewer UI support
limityan Apr 26, 2026
b510457
refactor(agents): redesign AgentTeamCard layout and styling
limityan Apr 27, 2026
af016f9
i18n(agents): localize agent card descriptions
limityan Apr 27, 2026
f6e4e4e
feat(skills): lower bitfun skill priority and show shadowed badges
limityan Apr 27, 2026
8a9e679
feat(web-ui): polish review team page and session config layout
G-CWing Apr 27, 2026
5e13c5c
merge origin/main into gcwing/dev
G-CWing Apr 27, 2026
cb213ef
Merge pull request #555 from GCWing/gcwing/dev
GCWing Apr 27, 2026
940d802
refactor(core): generalize frontend reviewer description beyond React
limityan Apr 27, 2026
7b4c222
style(chat-input): relax collapsed input capsule sizing
limityan Apr 27, 2026
325858d
fix(web-ui): reset session state to idle after send message failure
limityan Apr 27, 2026
337c370
fix(deep-review): make subagent ignore-timeout work correctly
limityan Apr 27, 2026
ff658fc
feat(skills, agents): rename shadowed badge and localize agent descri…
limityan Apr 27, 2026
b5419ef
test: normalize SSE fixture endings and gate raw SSE logging
wsp1911 Apr 27, 2026
5bf9b85
ci: run bitfun-core tests on linux macos and windows
wsp1911 Apr 27, 2026
d71da79
feat(nav-panel): add sticky absorption to workspace cards
limityan Apr 27, 2026
9d73acc
feat(deep-review): enhance error and interruption experience
limityan Apr 27, 2026
a1a8321
fix: modify display effect of deep review timeout
limityan Apr 28, 2026
c91e260
fix(web-ui): stabilize theme sync and session row layout
limityan Apr 28, 2026
4d4f936
fix(web-ui): localize AI initialization config error
limityan Apr 28, 2026
611adb8
fix(nav-panel): align session tree actions
limityan Apr 28, 2026
ff2e2b8
style(flow-chat): tighten chat stream spacing
limityan Apr 28, 2026
c82b962
style(nav): tighten child session row spacing
limityan Apr 28, 2026
0b30eec
fix(nav): clip collapsed workspace sidebar
limityan Apr 28, 2026
5c49b56
fix(markdown): stabilize chat link actions and color
limityan Apr 28, 2026
8b4dd94
feat(flow-chat): refine terminal command card controls
limityan Apr 28, 2026
dfe3f0c
Add flashgrep-backed workspace search
wgqqqqq Apr 28, 2026
89853bb
Merge pull request #571 from wgqqqqq/codgrep-workspace-search-boundar…
GCWing Apr 28, 2026
9873c6c
docs(readme): document flashgrep + ripgrep search gains
G-CWing Apr 28, 2026
e3d1ac7
Merge pull request #573 from GCWing/gcwing/dev
GCWing Apr 28, 2026
dc5863b
feat(web-ui): workspace flashgrep index modal and row layout
G-CWing Apr 28, 2026
b4d616d
Merge pull request #575 from GCWing/gcwing/dev
GCWing Apr 28, 2026
fd02418
fix(search): honor workspace max file size for flashgrep
wgqqqqq Apr 28, 2026
aeb956c
fix(search): honor workspace max file size for flashgrep
wgqqqqq Apr 28, 2026
1d86ba7
chore(observability): add agent runtime timing diagnostics
limityan Apr 28, 2026
c5c703c
feat(flow-chat): add transient runtime wait status
limityan Apr 28, 2026
065284c
fix(flow-chat): use runtime status i18n key
limityan Apr 28, 2026
b115d02
fix(flow-chat): align git command tool card
limityan Apr 28, 2026
32acd37
fix(git): treat git diff exit code 1 as success when stdout is non-empty
limityan Apr 28, 2026
a72b72d
fix(web-ui): polish review action bar and i18n
limityan Apr 28, 2026
95112e1
Bump version to 0.2.5
wgqqqqq Apr 28, 2026
10936db
Merge pull request #577 from wgqqqqq/codex/bump-v0.2.5
wgqqqqq Apr 28, 2026
aa8c33b
feat(ui): show warning banner when dialog turn stops abnormally
limityan Apr 29, 2026
cc19c3b
fix(flow-chat): restore processingHints random hints for runtime status
limityan Apr 29, 2026
73ba226
refactor(web-ui): unify compact tool card icon and text sizing via CS…
limityan Apr 29, 2026
2324a34
fix(git_tool): strip leading operation name from args to prevent doub…
limityan Apr 29, 2026
3091c15
fix(web-ui): only show explore region scrollbar when content overflows
limityan Apr 29, 2026
59f7151
feat: add ACP client sessions
wgqqqqq Apr 27, 2026
caba45c
fix: normalize ACP bash command params
wgqqqqq Apr 27, 2026
ec1b255
refactor: centralize ACP stream handling
wgqqqqq Apr 27, 2026
8a81248
Improve ACP agent setup UI
wgqqqqq Apr 28, 2026
530e336
Refine ACP agents settings page
wgqqqqq Apr 28, 2026
ca0e33e
Fix ACP stream timeout and nav overflow
wgqqqqq Apr 28, 2026
7373d85
fix: clean up ACP client lifecycle
wgqqqqq Apr 29, 2026
3506189
fix: isolate ACP sessions
wgqqqqq Apr 29, 2026
6db8849
chore: remove ACP design draft
wgqqqqq Apr 29, 2026
b596818
fix(skill-market): enable downloading skills to local user path while…
kev1n77 Apr 29, 2026
7f7cecc
Merge pull request #579 from wgqqqqq/feature/acp-server-model-selection
GCWing Apr 29, 2026
5c44f79
Merge pull request #580 from kev1n77/fix/remote-skill
GCWing Apr 29, 2026
9afe76e
Merge branch 'main' of https://github.com/GCWing/BitFun
wgqqqqq Apr 29, 2026
bd33617
Refactor flashgrep lifecycle and workspace activation
wgqqqqq Apr 29, 2026
2ab4504
feat(web-search): support displaying summary when no search results
limityan Apr 29, 2026
befa55f
fix(web-ui): inline-code color overrides link color in light theme
limityan Apr 29, 2026
21cbe1e
feat: increase max dialog rounds to 200 and add soft limit continuation
limityan Apr 29, 2026
141d271
fix(core): handle git diff args starting with -- separator
limityan Apr 29, 2026
9cbb6e9
Merge pull request #582 from wgqqqqq/fix/flashgrep-workspace-max-file…
GCWing Apr 29, 2026
557a932
feat(ask-user-question): add tooltip for truncated option descriptions
limityan Apr 30, 2026
547f7f2
feat(skills): add hide-duplicates filter and refine add-skill button …
limityan Apr 30, 2026
75e74f6
i18n(web-ui): internationalize context compression display texts
limityan Apr 30, 2026
cfbaa0a
perf: increase Read tool defaults and add anti-fragmentation guidance
limityan Apr 30, 2026
b1c9fa6
feat(ui): show subagent error in banner instead of tooltip
limityan Apr 30, 2026
df39134
feat(deep-review): enhance action bar UX with jump links, decision co…
limityan Apr 30, 2026
cd0192e
fix(flow-chat): improve Explore card compactness and subagent text tr…
limityan Apr 30, 2026
2bdb876
feat(desktop,web-ui): Petdex agent companion import, presets, and del…
bobleer May 6, 2026
8019cb7
fix(web-ui): restore inline ACP file approval actions
wgqqqqq May 7, 2026
d2332d8
add agent companion desktop pet (#589)
bobleer May 7, 2026
99ea372
Merge pull request #588 from wgqqqqq/codex/fix-acp-file-confirm-actions
GCWing May 7, 2026
185a64d
add desktop pet interaction moods (#590)
bobleer May 7, 2026
a7597cc
refine desktop pet task bubbles (#591)
bobleer May 7, 2026
84cd417
Gate accelerated workspace search and refresh bundled flashgrep
wgqqqqq May 7, 2026
b6c684e
Support arch-specific bundled flashgrep binaries
wgqqqqq May 7, 2026
2ee5bf0
feat(snapshot,web-ui,desktop): snapshot plumbing, pet roster, session…
bobleer May 7, 2026
f5f1b77
Refresh flashgrep binaries, add desktop dev config, and skip ACP sess…
wgqqqqq May 7, 2026
b6c0c69
Merge pull request #592 from wgqqqqq/workspace-search-flashgrep-multi…
GCWing May 8, 2026
f0eaa24
fix: make tool loop detection signatures include args hash
kev1n77 May 8, 2026
4762481
feat(desktop): agent companion pet dynamic window sizing (#597)
bobleer May 8, 2026
4bbe9d2
fix(desktop): tighten companion pet bubble width measurement (#598)
bobleer May 8, 2026
682c488
Merge pull request #596 from kev1n77/fmy/bugfix
GCWing May 8, 2026
be803ed
fix(web-ui): stop sticky workspace cards in NavPanel list
G-CWing May 8, 2026
25c625b
fix(web-ui): improve workspace row click targets and path tooltip
G-CWing May 8, 2026
2993c3c
Merge pull request #599 from GCWing/fix/nav-workspace-list-card-layout
GCWing May 8, 2026
ded1cbb
fix: avoid windows startup console flicker
wgqqqqq May 8, 2026
3f2a75a
Merge pull request #600 from wgqqqqq/workspace-search-flashgrep-multi…
wgqqqqq May 8, 2026
52e07a8
Merge remote-tracking branch 'upstream/main'
SWangHash May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@ jobs:
run: cargo check --workspace --exclude bitfun-cli

- name: Run core Rust tests
if: runner.os == 'Linux'
run: cargo test --locked -p bitfun-core

# ── Frontend: build ────────────────────────────────────────────────
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ tests/e2e/reports/
.cursor
.cursor/rules/no-cargo.mdc
.sisyphus/
.worktrees/

ASSETS_LICENSES.md

external/
external/
206 changes: 81 additions & 125 deletions AGENTS-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,77 +2,97 @@

# AGENTS-CN.md

## 概览

BitFun 是一个由 Rust workspace 与共享 React 前端组成的项目。

仓库核心原则:**先保持产品逻辑平台无关,再通过平台适配层对外暴露能力**。

- `src/crates/core`:共享产品逻辑中心
- `src/crates/transport`:Tauri / WebSocket / CLI 适配层
- `src/crates/api-layer`:共享处理器与 DTO
- `src/apps/desktop`:Tauri 桌面宿主应用
- `src/apps/server`:web 后端运行时
- `src/apps/cli`:CLI 运行时
- `src/web-ui`:桌面端与 server/web 共享前端
- `BitFun-Installer`:独立安装器应用
- `tests/e2e`:桌面端 E2E 测试
## 快速开始

1. 在修改架构敏感代码前,先阅读 `README.md` 和 `CONTRIBUTING.md`。
2. 桌面端开发优先使用 `pnpm run desktop:dev` — 提供完整热更新(Vite HMR + Rust 自动重编译并重启)。仅在需要更快冷启动且只迭代前端时使用 `pnpm run desktop:preview:debug`(Rust 改动不会自动重编译)。
3. 改完后按下方表格执行与改动范围匹配的最小验证。

## 3 步快速上手
## 模块索引

1. 在修改架构敏感代码前,先阅读 `README.md`、`CONTRIBUTING.md` 和本文件。
2. 共享前端改动或 Rust / Tauri 改动后的本地桌面快速人工验证,都优先使用 `pnpm run desktop:preview:debug`。它会在已有 debug 桌面二进制可复用时直接预览,并在二进制缺失或 Rust / Tauri 输入更新后自动执行一次快速本地重编译。`pnpm run desktop:dev` 保留给完整 Tauri dev 流程、首次初始化,或启动 / 构建链路本身的调试;仅浏览器前端验证时使用 `pnpm run dev:web`。
3. 改完后按下方最小验证集合执行检查。
| 模块 | 路径 | Agent 文档 |
|---|---|---|
| Core(产品逻辑) | `src/crates/core` | [AGENTS.md](src/crates/core/AGENTS.md) |
| Transport 适配层 | `src/crates/transport` | (使用 core 指南) |
| API layer | `src/crates/api-layer` | (使用 core 指南) |
| AI adapters | `src/crates/ai-adapters` | [AGENTS.md](src/crates/ai-adapters/AGENTS.md) |
| 桌面应用 | `src/apps/desktop` | [AGENTS.md](src/apps/desktop/AGENTS.md) |
| Server | `src/apps/server` | (使用 core 指南) |
| CLI | `src/apps/cli` | (使用 core 指南) |
| 中继服务器 | `src/apps/relay-server` | (使用 core 指南) |
| 共享前端 | `src/web-ui` | [AGENTS.md](src/web-ui/AGENTS.md) |
| 安装器 | `BitFun-Installer` | [AGENTS.md](BitFun-Installer/AGENTS.md) |
| E2E 测试 | `tests/e2e` | [AGENTS.md](tests/e2e/AGENTS.md) |

## 核心命令
## 最常用命令

```bash
# 安装
pnpm install
pnpm run e2e:install

# 主要开发流程
pnpm run desktop:dev
pnpm run desktop:preview:debug
pnpm run dev:web
pnpm run cli:dev
pnpm run installer:dev
# 开发
pnpm run desktop:dev # 完整热更新:Vite HMR + Rust 自动重编译并重启
pnpm run desktop:preview:debug # 复用预构建二进制 + Vite HMR;无 Rust 自动重编译
pnpm run dev:web # 纯浏览器前端
pnpm run cli:dev # CLI 运行时

# 前端
# 检查
pnpm run lint:web
pnpm run type-check:web
pnpm --dir src/web-ui run test:run
pnpm run build:web

# Rust
cargo check --workspace

# 测试
pnpm --dir src/web-ui run test:run
cargo test --workspace
cargo test -p bitfun-core <test_name> -- --nocapture

# Desktop / E2E
# 构建
cargo build -p bitfun-desktop
pnpm run e2e:test:l0
pnpm --dir tests/e2e exec wdio run ./config/wdio.conf.ts --spec "./specs/<file>.spec.ts"
pnpm run build:web

# 快速构建(开发 / CI 提速)
pnpm run desktop:build:fast # debug 构建,不打包
pnpm run desktop:build:release-fast # release 但降低 LTO
pnpm run desktop:build:nsis:fast # Windows 安装器,release-fast profile
pnpm run installer:build:fast # 安装器应用,快速模式
```

## 本地桌面快速迭代
完整脚本列表见 [`package.json`](package.json)。

## 全局规则

### 日志

日志必须只用英文,且不能使用 emoji。

- 前端:[src/web-ui/LOGGING.md](src/web-ui/LOGGING.md)
- 后端:[src/crates/LOGGING.md](src/crates/LOGGING.md)

### Tauri command

- command 名称:`snake_case`
- TypeScript 可以用 `camelCase` 包装,但调用 Rust 时要传结构化 `request`

```rust
#[tauri::command]
pub async fn your_command(
state: State<'_, AppState>,
request: YourRequest,
) -> Result<YourResponse, String>
```

- `pnpm run desktop:preview:debug` 会启动或复用 web dev server,并直接拉起 `target/debug/bitfun-desktop(.exe)`,不会经过 `tauri dev`。当已有 debug 二进制仍然可复用时它会直接预览;当二进制缺失,或 Rust / Tauri 输入比当前二进制更新时,它会先以 `CARGO_PROFILE_DEV_DEBUG=0` 和更高并行 codegen 快速重编 `bitfun-desktop`,再进入预览。
- `pnpm run desktop:preview:debug -- --force-rebuild` 是显式强制重编后再预览的兜底入口,只有在你明确想忽略时间戳复用判断时才使用。
- 上面的 preview 流程只是本地迭代加速手段,不能替代下方与改动范围匹配的最小验证集合。
- 如果用户的意图是“快速看看效果”“本地跑起来看一下”这类人工预览,即使表述里同时出现了“编译”或“调试版本”,也优先使用上面的 preview 命令。
- `pnpm run desktop:build:fast` 只保留给“明确要一个 debug 构建产物,且不需要顺手启动预览”的场景。
- 意图示例:
- “本地编译一个调试版本快速看看效果” -> `pnpm run desktop:preview:debug`
- “只编一个 debug 产物给我,不用启动” -> `pnpm run desktop:build:fast`
```ts
await api.invoke('your_command', { request: { ... } });
```

## 打包请求
### 平台边界

- 当用户提出打包、release 或构建可分发桌面产物,但没有明确点名产物形式时,先确认目标打包类型,再执行构建。
- 要区分“本地临时产物”和“正式 release 交付物”。除非用户明确要求,否则不要把 `desktop:preview:*`、debug 构建,或 `--no-bundle` 的快速产物当成最终给用户分发的 release。
- 如果用户的语义明显是“给 Windows 最终用户安装”,优先使用 `pnpm run desktop:build:nsis`。
- 如果用户明确要“独立可执行文件”而不是安装器,优先使用 `pnpm run desktop:build:exe`。
- 如果用户已经明确点名目标格式,就不要重复确认,直接走对应打包流程。
- 不要在 UI 组件里直接调用 Tauri API;应通过 adapter / infrastructure 层访问。
- 桌面端专属集成应放在 `src/apps/desktop`,再通过 transport / API layer 回流到共享逻辑。
- 在共享 core 中避免使用 `tauri::AppHandle` 等宿主 API;优先使用 `bitfun_events::EventEmitter` 等共享抽象。

## 架构

Expand All @@ -90,7 +110,7 @@ pnpm --dir tests/e2e exec wdio run ./config/wdio.conf.ts --spec "./specs/<file>.

`src/crates/core` 是代码库中心。

重要区域
主要区域

- `agentic/`:agents、prompts、tools、sessions、execution、persistence
- `service/`:config、filesystem、terminal、git、LSP、MCP、remote connect、project context、AI memory
Expand All @@ -104,70 +124,10 @@ SessionManager → Session → DialogTurn → ModelRound

会话数据保存在 `.bitfun/sessions/{session_id}/`。

### 前端与桌面端边界

- `src/web-ui` 同时服务 Tauri 桌面端和 server/web
- 不要在 UI 组件里直接调用 Tauri API;应通过 adapter / infrastructure 层访问
- 仅桌面端集成应放在 `src/apps/desktop`,再通过 transport / API layer 回流到共享逻辑
- 在共享 core 中避免使用 `tauri::AppHandle` 等宿主 API;优先使用 `bitfun_events::EventEmitter` 等共享抽象

## 仓库规则

### 日志

日志必须只用英文,且不能使用 emoji。

- 前端:`src/web-ui/LOGGING.md`
- 后端:`src/crates/LOGGING.md`

示例:

```ts
const log = createLogger('ModuleName');
log.info('Loaded items', { count });
```

```rust
use log::{debug, error, info, trace, warn};
info!("Registered adapter for session {}", session_id);
```

### Tauri command

- command 名称:`snake_case`
- Rust 侧:`snake_case`
- TypeScript 可以用 `camelCase` 包装,但调用 Rust 时要传结构化 `request`

```rust
#[tauri::command]
pub async fn your_command(
state: State<'_, AppState>,
request: YourRequest,
) -> Result<YourResponse, String>
```

```ts
await api.invoke('your_command', { request: { ... } });
```

### 更细粒度规则

- 如果修改 `src/crates/ai-adapters`,需要运行 `src/crates/core/tests` 中的 stream integration tests
- 如果修改 `src/crates/core/src/agentic/execution/stream_processor.rs`,结束前需要运行 stream integration tests

## 先看哪里

- Agent mode:`src/crates/core/src/agentic/agents/`、`src/crates/core/src/agentic/agents/prompts/`、`src/web-ui/src/locales/*/scenes/agents.json`
- Deep Review / 代码审核团队:`src/crates/core/src/agentic/deep_review_policy.rs`、`src/crates/core/src/agentic/agents/deep_review_agent.rs`、`src/crates/core/src/agentic/tools/implementations/{task_tool.rs,code_review_tool.rs}`、`src/web-ui/src/shared/services/reviewTeamService.ts`、`src/web-ui/src/flow_chat/services/DeepReviewService.ts`、`src/web-ui/src/app/scenes/agents/components/ReviewTeamPage.tsx`
- Tool:`src/crates/core/src/agentic/tools/implementations/`、`src/crates/core/src/agentic/tools/registry.rs`
- MCP / LSP / remote:`src/crates/core/src/service/mcp/`、`src/crates/core/src/service/lsp/`、`src/crates/core/src/service/remote_connect/`、`src/crates/core/src/service/remote_ssh/`
- 桌面端 API:`src/apps/desktop/src/api/`、`src/crates/api-layer/src/`、`src/crates/transport/src/adapters/tauri.rs`
- Web/server 通信:`src/web-ui/src/infrastructure/api/`、`src/crates/transport/src/adapters/websocket.rs`、`src/apps/server/src/routes/`、`src/apps/server/src/main.rs`

## 验证

| 改动类型 | 最低验证要求 |
| --- | --- |
|---|---|
| 前端 UI、状态、适配层或多语言文案 | `pnpm run lint:web && pnpm run type-check:web && pnpm --dir src/web-ui run test:run` |
| Deep Review / 代码审核团队行为 | 运行上面的前端验证,再运行 `cargo test -p bitfun-core deep_review -- --nocapture`;如果触及后端或 Tauri API,还需要运行下方 Rust / 桌面端验证 |
| `core`、`transport`、`api-layer` 或共享服务中的 Rust 逻辑 | `cargo check --workspace && cargo test --workspace` |
Expand All @@ -176,22 +136,18 @@ await api.invoke('your_command', { request: { ... } });
| `src/crates/ai-adapters` | 运行上面相关 Rust 检查,**并且**运行 `src/crates/core/tests` 中的 stream integration tests |
| 安装器应用 | `pnpm run installer:build` |

## Agent 文档覆盖

这是仓库级总指南。

规则优先级:

- 进入具体目录后,优先遵循离目标文件最近的 `AGENTS.md` / `AGENTS-CN.md`
- 如果局部文档与本文件冲突,以更具体、更近的文档为准
## 先看哪里

进入具体模块后,优先看最近的 agent 文档:
| 功能 | 关键路径 |
|---|---|
| Agent mode | `src/crates/core/src/agentic/agents/`、`src/crates/core/src/agentic/agents/prompts/`、`src/web-ui/src/locales/*/scenes/agents.json` |
| Deep Review / 代码审核团队 | `src/crates/core/src/agentic/deep_review_policy.rs`、`src/crates/core/src/agentic/agents/deep_review_agent.rs`、`src/crates/core/src/agentic/tools/implementations/{task_tool.rs,code_review_tool.rs}`、`src/web-ui/src/shared/services/reviewTeamService.ts`、`src/web-ui/src/flow_chat/services/DeepReviewService.ts`、`src/web-ui/src/app/scenes/agents/components/ReviewTeamPage.tsx` |
| Tool | `src/crates/core/src/agentic/tools/implementations/`、`src/crates/core/src/agentic/tools/registry.rs` |
| MCP / LSP / remote | `src/crates/core/src/service/mcp/`、`src/crates/core/src/service/lsp/`、`src/crates/core/src/service/remote_connect/`、`src/crates/core/src/service/remote_ssh/` |
| 桌面端 API | `src/apps/desktop/src/api/`、`src/crates/api-layer/src/`、`src/crates/transport/src/adapters/tauri.rs` |
| 中继服务器 | `src/apps/relay-server/` |
| Web/server 通信 | `src/web-ui/src/infrastructure/api/`、`src/crates/transport/src/adapters/websocket.rs`、`src/apps/server/src/routes/`、`src/apps/server/src/main.rs` |

- `src/web-ui/AGENTS.md`
- `src/crates/core/AGENTS.md`
- `src/apps/desktop/AGENTS.md`
- `tests/e2e/AGENTS.md`
- `BitFun-Installer/AGENTS.md`
- `src/crates/ai-adapters/AGENTS.md`
- `src/crates/core/src/agentic/execution/AGENTS.md`
## Agent 文档优先级

进入具体目录后,优先遵循离目标文件最近的 `AGENTS.md` / `AGENTS-CN.md`。如果局部文档与本文件冲突,以更具体、更近的文档为准。
Loading
Loading