# TalenWork **Repository Path**: johnnie_walker/TalenWork ## Basic Information - **Project Name**: TalenWork - **Description**: TalenWork 是一款本地优先的桌面 AI 客户端。你指挥的不是单个助手,而是一支团队:主 agent 掌握你的目标并召集子 agent,每个子 agent 调用技能来完成工作。你只要在对话里说清楚目标,不用先画流程图或搭自动化规则。 它运行在 Linux 和 Windows 上,工作区默认本地优先。你可以选择接入自有服务商;自有服务商的 Key 留在本机。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-16 - **Last Updated**: 2026-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TalenWork(泰能工场) TalenWork 是一个本地优先的 AI 办公工作台:Go 单二进制内核承载业务与智能体引擎, Electron / Wails / Web 三种外壳共享同一套前端 UI。 官网: ## 特性 - **本地优先**:后端 `talenworkd` 默认只监听 `127.0.0.1`,数据落在 `~/.talenwork`, 无需把文件与凭据交给远端即可使用。 - **智能体工作台**:单聊 / 群聊多智能体协作、技能与连接器(MCP)、知识库、 自动任务、项目与记忆,均有对应的桌面界面。 - **多模型接入**:内置多家供应商目录,支持 Anthropic Messages / OpenAI 兼容等 多种协议与思考档位、凭据轮换。 - **宿主工具**:文件读写、bash、PDF / Office 文档处理、图像生成与编辑、 语音转写等以工具形式暴露给模型,并受权限与沙箱约束。 - **可观测**:每一轮的思考、工具调用、重试、上下文压缩都会作为过程轨呈现。 ## 架构 ``` 前端三壳(共享同一套 UI:app/web) └── renderer → HTTP POST /rpc/{channel} + WebSocket(唯一入口契约) │ Go 后端(cmd) ├── cmd/ ← 进程入口(装配、握手、优雅关闭) ├── internal/server/ ← HTTP 路由装配 + TALEN_READY 握手 + token 鉴权 ├── internal/bus/ ← WebSocket Hub(桥接事件总线) ├── internal/rpc/ ← RPC 通道层(invoke / stream 两路注册表) ├── internal/domain/ ← 业务域(群聊/会话/技能/代理/知识库/自动任务…) ├── pkg/engine/ ← 引擎内核(AgentRunner / LLM providers / 工具 / 沙箱) └── internal/domain/hosttool/ ← 宿主工具实现 app/ ├── electron/ ← Electron 壳(主进程 + preload + 打包配置) ├── wails/ ← Wails 壳 └── web/ ← 前端渲染层(React 18 + Vite + Tailwind) resources/ ← 内置技能 / 市场 / 运行时 assets/ ← 提示词模板 / 本地化 / 头像 ``` 前端与后端之间只有一条契约:`POST /rpc/{channel}` 调用 + WebSocket 流式推送。 新增通道必须在 `internal/rpc` 注册实现,`internal/parity` 的用例会校验前后端通道一致。 ## 环境要求 - Go 1.25+ - Node.js 20+(前端与 Electron 壳) ## 快速开始 ```bash # 1) 编译后端内核 go build ./... # 下载依赖并校验编译(不产出二进制) npm run backend:build # 产出 bin/talenworkd.exe # 2) 启动桌面端(Electron 壳自动拉起后端,CDP 监听 127.0.0.1:9222) npm run electron:dev # 3) 只调前端(Vite 开发服务器,默认 5175 端口) npm run web:dev ``` 后端也可独立运行(浏览器模式),便于用浏览器或 CDP 排查(先构建前端产物): ```bash npm run web:build go run ./cmd -renderer-dir ./app/web/dist -token talen-dev-token ``` 进程就绪后会向 stdout 输出 `TALEN_READY` 握手帧,其中携带实际监听端口与访问 token。 ## 构建与打包 ```bash # 权威打包入口:同步版本 → go build → 资源校验 → electron-builder node scripts/build.cjs --shell electron --mode dist --win npm run electron:pack # 只打包目录(不生成安装包) npm run electron:dist # 生成安装包 ``` `resources/runtime` 等运行时由 `scripts/fetch-resources.cjs` 准备,不入库; `resources/` 下的 netdisk / officecli / ripgrep 二进制与嵌入模型直接入库,用于本地离线运行。 ## 测试 ```bash go vet ./... # 静态检查 go test ./... # 全量单测 bash scripts/smoke.sh # 冒烟验收 cd app/web && npm run typecheck && npm test # 前端类型检查 + 单测 ``` 桌面端真实行为(智能体运行、UI 渲染)用仓库内置的 CDP 驱动自测,不依赖人工点击: ```bash cd app/electron node e2e/cdp-driver.js snapshot -i # 打印可交互元素 node e2e/cdp-driver.js type "#selector" "hi" # 输入 node e2e/layout-regression.js # 壳层布局回归(默认端口 9222) ``` ## 配置 所有环境变量以 `TALEN_` 为前缀,数据目录默认为 `~/.talenwork`: | 变量 | 说明 | |---|---| | `TALEN_API_BASE_URL` | 远端托管服务地址,默认 `https://talenwork.ai/api` | | `TALEN_WORKSPACE_ROOT` | 工作区根目录覆盖 | | `TALEN_RESOURCES_PATH` | 内置资源目录(开发态) | ## 贡献 开始前先读 [AGENTS.md](AGENTS.md)(仓库的 AI 协作指南,含分层、资源目录与约定)。 - **Go 代码**:提交前运行 `gofmt`、`go vet ./...`、`go test ./...`。 - **前端代码**:`cd app/web && npm run typecheck && npm test`。 - **通道契约**:前后端只有 `POST /rpc/{channel}` + WebSocket 一条契约。新增通道必须在 `internal/rpc` 注册实现,`internal/parity` 的用例会校验前后端通道一致,新增通道需同步补充用例。 - **PR 流程**:fork 仓库 → 在特性分支上提交 → 描述改动动机(为什么做,而非只写做了什么)→ 提交 PR。 ## 安全 - **鉴权**:后端默认只监听 `127.0.0.1`,启动时生成访问 token;所有非本地来源请求都会被 token 校验拦截。 - **宿主工具**:文件读写、bash、网络等工具暴露给模型时受权限与沙箱约束,需经用户授权。 - **报告漏洞**:请通过官网 或仓库 Issue 私密反馈,避免公开细节。 ## 相关文档 - [AGENTS.md](AGENTS.md) — AI 协作指南(分层、目录、约定) - `docs/` — 设计文档与走查分析(群聊协议状态机、附件链路对照等) ## 许可证 [MIT](LICENSE)