一个把 AI CLI、Web 会话、多用户权限和飞书机器人串起来的工作平台
通过浏览器或飞书卡片管理 AI 会话、工作区、项目和命令执行,支持桌面和移动端。
WebCode 是一个基于 Blazor Server + .NET 10 的 AI 工作平台,目标不是单纯做聊天界面,而是把本地/服务器上的 AI CLI 工具包装成一个可管理、可协作、可远程访问的工作系统。
它当前覆盖的核心场景包括:
- 在 Web 端创建和管理 AI 会话
- 为不同会话绑定独立工作区
- 发现并导入当前系统账户下已有的
Claude Code、Codex、OpenCode会话 - 基于原始 CLI transcript 恢复当前会话历史,而不只依赖 WebCode 自己记录的消息
- 在飞书中通过机器人和卡片完成会话、项目、目录等操作
- 为不同用户配置各自的 CLI 环境、飞书机器人、可访问目录和工具权限
- 在手机、平板和桌面浏览器中持续使用同一套工作流
如果你需要一个“可部署的 AI CLI 控制台”,而不是单机本地的命令行包装器,这个项目就是为这个目标设计的。
当前仓库内已经围绕以下工具做了适配或运行支持:
| 工具 | 说明 | 状态 |
|---|---|---|
Claude Code |
会话管理、流式输出、适配器解析 | 可用 |
Codex CLI |
JSONL 输出、沙箱/审批模式、会话执行 | 可用 |
OpenCode |
多模型工作流集成 | 可用 |
| 其他 CLI | 可按适配器模式继续扩展 | 可扩展 |
相关实现主要位于 WebCodeCli.Domain/Domain/Service/Adapters。
- 每个会话可绑定独立工作区
- 支持默认目录、已有目录、项目目录、自定义目录
- 支持文件浏览、预览、上传、复制路径等工作区操作
- 支持历史会话切换、关闭、隔离和清理
- 可与项目管理联动,从项目直接创建会话
- 支持导入当前系统账户下已有的外部 CLI 会话,并在 WebCode 中继续使用
- 支持从原始 CLI transcript 读取会话历史,用于恢复和回放已有上下文
外部 CLI 会话导入当前具备这些约束:
- 仅扫描当前操作系统账户下可访问的本地会话
- 仅显示工作区位于允许目录/白名单中的会话
- 同一个
(ToolId, CliThreadId)只能被一个 WebCode 用户占用 - Web 端与飞书端都支持分页浏览、导入并切换到这些会话
当前系统已经具备多用户基础能力:
- 用户启用/禁用
- 用户可用 CLI 工具限制
- 用户白名单目录策略
- 用户级 CLI 环境变量配置
- 用户级飞书机器人配置
- 默认共享配置 + 用户覆盖配置
这意味着系统已经不再是单用户本地玩具,而是可以作为团队内的 AI 工作平台运行。
飞书侧不是简单消息转发,而是一套完整的工作入口:
- 用户绑定自己的飞书机器人
- 会话管理卡片
- 导入本地 CLI 会话卡片
- 项目管理卡片
- 白名单目录浏览
- 项目克隆 / 拉取 / 分支切换
- 支持查看当前会话的原生 CLI 历史消息
- 会话完成后的普通文本提醒
飞书侧与外部会话相关的典型能力包括:
- 按工具筛选并导入
Claude Code/Codex/OpenCode的本地会话 - 在切换会话后自动回显对应 CLI 原生历史,便于快速接续上下文
- 通过内置命令
/history获取当前会话对应 CLI transcript 中的历史消息
适配代码主要位于:
- 响应式布局
- 移动端导航与输入区域优化
- 适配手机和平板
- 同一套会话、文件、预览、设置工作流
移动端界面示意:
以下图片来自仓库内置素材,用于说明典型界面和使用方式。
这是最直接的启动方式,适合试用、内网部署和小团队使用。
git clone https://github.com/lusile2024/WebCode.git
cd WebCode
docker compose up -d启动后访问:
http://localhost:5000
首次访问会进入初始化流程。
更多部署细节可查看:
适合调试、二次开发和本地联调。
.NET 10 SDK- 已安装目标 AI CLI,例如
claude、codex、opencode
git clone https://github.com/lusile2024/WebCode.git
cd WebCode
dotnet restore
dotnet run --project WebCodeCli默认访问地址:
http://localhost:6001
如果你修改了根目录 appsettings.json 或 WebCodeCli/appsettings.json 中的 urls 配置,请以实际监听端口为准。
首次启动建议按下面顺序完成配置:
- 创建管理员账户
- 确认是否开启登录认证
- 配置至少一个可用 CLI 工具的环境变量
- 验证工作区根目录和存储目录
- 如需飞书集成,再配置飞书机器人参数
- 如需多用户,进入管理界面配置用户、目录白名单和工具权限
- 如需恢复现有 CLI 工作上下文,可在 Web 端或飞书端导入本地外部会话
初始化向导界面示意:
CLI 工具配置支持通过界面和配置文件两种方式维护。
典型配置结构如下:
{
"CliTools": {
"Tools": [
{
"Id": "claude-code",
"Name": "Claude Code",
"Command": "claude",
"ArgumentTemplate": "-p \"{prompt}\"",
"Enabled": true
},
{
"Id": "codex",
"Name": "Codex",
"Command": "codex",
"ArgumentTemplate": "exec \"{prompt}\"",
"Enabled": true
}
]
}
}更详细的配置与说明可参考:
docker-compose.yml 默认会挂载以下目录:
./webcodecli-data:数据库与运行数据./webcodecli-workspaces:工作区目录./webcodecli-logs:日志
默认使用 SQLite:
WebCodeCli.db
本地开发默认连接字符串来自根目录 appsettings.json。
如果你准备把它作为团队服务运行,建议优先关注这几项:
- 为每个用户设置独立的白名单目录
- 为每个用户限制可用 CLI 工具
- 为每个用户配置自己的飞书机器人
- 为需要接续工作的用户开放“导入外部 CLI 会话”能力,但仍限制在各自白名单目录内
- 避免把数据库文件提交到 Git
- 明确区分“共享默认配置”和“用户覆盖配置”
飞书和多用户能力相关代码分布在:
- WebCodeCli/Controllers
- WebCodeCli/Components
- WebCodeCli.Domain/Domain/Service/Channels
- WebCodeCli.Domain/Repositories/Base/UserFeishuBotConfig
当前仓库的主要结构如下:
WebCode/
├── WebCodeCli/ # Web 应用(Blazor Server)
├── WebCodeCli.Domain/ # 领域服务、仓储、CLI/飞书适配
├── WebCodeCli.Domain.Tests/ # 领域层测试
├── tests/WebCodeCli.Tests/ # Web / 集成相关测试
├── cli/ # CLI 使用说明
├── docs/ # 额外文档
├── docker-compose.yml # Docker 部署入口
└── README.md
和旧版文档相比,当前实际项目名已经是:
WebCodeCliWebCodeCli.Domain
如果你在二次开发时看到 WebCode / WebCode.Domain 这类旧路径描述,请以仓库真实目录为准。
| 类别 | 技术 |
|---|---|
| Web 框架 | Blazor Server |
| 运行时 | .NET 10 |
| 编辑器 | Monaco Editor |
| 数据访问 | SqlSugar |
| 默认数据库 | SQLite |
| 反向代理 | YARP |
| Markdown | Markdig |
| AI CLI 集成 | Claude Code / Codex / OpenCode 等 |
- QUICKSTART.md
- DEPLOY_DOCKER.md
- docs/QUICKSTART_CodeAssistant.md
- docs/README_CodeAssistant.md
- docs/workspace-management-guide.md
- docs/workspace-management-deployment-guide.md
如果你保留当前公开体验入口,可以继续使用下面的信息:
| 地址 | 用户名 | 密码 |
|---|---|---|
| https://webcode.tree456.com/ | treechat |
treechat@123 |
这类公开演示环境仅适合体验,不适合存放敏感数据。
交流群二维码:
本项目采用 AGPLv3。
- 开源使用:遵循 AGPLv3
- 商业授权:请联系仓库维护者或相关商务渠道
让 AI CLI 从“本地命令”升级为“可管理的工作平台”








