lab-agent
Health Gecti
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 20 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in install.sh
- network request — Outbound network request in package.json
- spawnSync — Synchronous process spawning in scripts/build-all.ts
- spawnSync — Synchronous process spawning in scripts/build-cli.ts
- spawnSync — Synchronous process spawning in scripts/build-engine.ts
- process.env — Environment variable access in scripts/build-engine.ts
- process.env — Environment variable access in src/QueryEngine.ts
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Lab Agent — open-source coding agent (terminal + desktop)
Lab Agent CLI
一个面向终端的开源 coding agent,正在长出独立的监督者。
Lab Agent 不再维护桌面端。仓库现在只包含两件事:
lab:产品 CLI,负责配置、诊断、启动和未来的双 Agent 编排;lab-engine:执行层,负责 TUI、工具、会话与模型调用。
当前版本:
0.3.0预览版。CLI-only 重构已完成,双 Agent 监督以lab supervise的形式进入预览。
为什么是 Lab Agent
大多数 coding agent 只回答一个问题:它能不能把活干完?
Lab Agent 想多回答一个问题:另一个独立的 Agent 能不能验收它?
我们正在构建的方向:
- 写作者 + 审查者:一个 Agent 改代码,另一个 Agent 在独立上下文里只读审查;
- 证据化验收:审查者必须引用命令输出、diff、测试结果,而不是“看起来没问题”;
- 可追溯记录:任务契约、工具调用、验收结论写入项目的
.lab/; - CLI 优先:没有 Electron,没有第二套 UI 栈,所有能力都能在终端和 CI 里复现。
监督者已在 lab supervise 中提供预览:writer 先改代码,wrapper 执行你指定的验收命令并采集 diff,auditor 在独立进程、只读工具集和新上下文中审查证据;确定性 gate 保证验收失败或越界改动不会被 auditor 的 accept 覆盖。
安装
预编译包(Release 发布后)
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/yu7dan/lab-agent/main/install.sh | bash
Windows PowerShell:
irm https://raw.githubusercontent.com/yu7dan/lab-agent/main/install.ps1 | iex
安装脚本会下载对应平台的 lab 与 lab-engine,并放到 ~/.local/bin(Windows 为 %LOCALAPPDATA%\LabAgent\bin)。
从源码构建(当前推荐)
需要 Bun 1.3.11 或更高版本:
git clone https://github.com/yu7dan/lab-agent.git
cd lab-agent
bun install
bun run build
构建产物是仓库根目录的 lab(Windows 为 lab.exe)和 lab-engine。
把它加入 PATH,或直接使用绝对路径:
export PATH="$PWD:$PATH" # macOS / Linux
./lab --version # Windows: .\lab.exe --version
快速开始
lab setup # 选择 DeepSeek / Anthropic / 自定义端点,填入 API Key
lab doctor # 检查引擎、配置、密钥和真实连接
lab # 启动交互式会话
一次性执行:
lab -p "解释这个仓库的构建流程"
lab -p "修复失败的测试" --output-format json
双 Agent 监督(在干净的 git 仓库中运行):
lab supervise "修复 add 函数,不要修改测试" \
--accept "bun test" \
--allow src/ \
--max-rounds 2
writer 修改工作区,wrapper 运行验收命令并采集 diff,auditor 只读审查后给出accept | reject | needs_human。工件写入 .lab/tasks/<taskId>/,退出码见lab supervise --help。
查看配置(不会打印完整密钥):
lab config
lab config path # 只输出配置文件路径
直接调用引擎:
lab engine --version
lab engine --help
命令
| 命令 | 作用 |
|---|---|
lab |
启动交互式 TUI |
lab "任务" |
带初始任务启动 |
lab -p "任务" |
一次性执行(headless) |
lab supervise "任务" --accept ... --allow ... |
双 Agent 监督:writer 修改,auditor 独立审查 |
lab setup |
配置模型提供方与 API Key |
lab doctor [--json] |
检查引擎、配置、密钥和端点连接 |
lab config [path] |
查看配置;path 只输出 .env 路径 |
lab engine [args] |
透传给 lab-engine |
lab version |
显示版本 |
lab help |
显示帮助 |
除保留命令外,所有参数都会原样传给引擎,例如 lab --resume、lab --model deepseek-flash。
配置
配置文件:~/.lab-agent/.env(权限尽可能设为仅当前用户可读)。
# 默认:DeepSeek
DEEPSEEK_API_KEY=sk-...
BASE_URL=https://api.deepseek.com
MODEL=deepseek-flash
也支持:
# Anthropic 官方
ANTHROPIC_API_KEY=sk-ant-...
BASE_URL=https://api.anthropic.com
MODEL=claude-sonnet-5-5
# 任意 Anthropic 兼容端点(使用 Bearer)
ANTHROPIC_AUTH_TOKEN=...
BASE_URL=https://your-provider.example.com
MODEL=your-model
优先级:进程环境变量 > 项目目录 .lab-agent.env > ~/.lab-agent/.env。
密钥只保存在本地,不会上传;lab config 和 lab doctor 只显示掩码。
其他环境变量:
| 变量 | 作用 |
|---|---|
LAB_AGENT_HOME |
覆盖配置目录(默认 ~/.lab-agent) |
LAB_ENGINE_PATH |
指定 lab-engine 的绝对路径 |
LAB_SECURITY_URL |
覆盖首次启动展示的安全文档链接 |
lab supervise 的 auditor 默认复用 writer 的提供方、模型和密钥,可用以下变量单独覆盖:
| 变量 | 作用 |
|---|---|
LAB_AUDITOR_MODEL |
auditor 模型;默认同 writer |
LAB_AUDITOR_BASE_URL |
auditor 端点;默认同 writer |
LAB_AUDITOR_API_KEY |
auditor 密钥;默认同 writer |
LAB_AUDITOR_MAX_TURNS |
auditor 最大 turn 数(默认 20) |
LAB_AUDITOR_TIMEOUT_SEC |
单轮 auditor 超时秒数(默认 600) |
LAB_AUDITOR_MAX_BUDGET_USD |
单轮 auditor 预算上限(美元) |
这些变量只注入 auditor 子进程;writer 和验收命令的环境中会被移除。
DeepSeek 的 Anthropic 兼容端点会自动补上 /anthropic;如果你填写了带 /v1 的 URL,也会自动归一化。
架构
lab (产品 CLI, TypeScript/Bun)
├── setup / doctor / config
├── provider 环境归一化
├── supervise
│ ├── writer ──> lab-engine(独立进程,可写)
│ ├── 验收命令 ──> shell(由 wrapper 执行)
│ └── auditor ──> lab-engine(独立进程,只读 + 结构化 verdict)
└── spawn ──> lab-engine (TUI、工具、会话、模型调用)
src/lab/:产品层,保持小而清晰;src/lab/supervise/:监督编排、契约解析、git 证据、验收执行、verdict 与报告;src/:执行引擎,来源于公开源码快照;已移除桌面耦合与产品层上游品牌,引擎内部仍保留少量兼容名称;scripts/:构建与打包;.lab/tasks/:监督工件(契约、diff、验收日志、审计结论),默认被.lab/tasks/.gitignore排除。
更多说明见 docs/architecture.md 与 docs/roadmap.md。
开发
bun install
bun run typecheck # 产品层 + 脚本 + 测试
bun run test
bun run build # lab + lab-engine
bun run build:dev # 带 dev 版本号与开发特性
bun run compile # 输出到 dist/
bun run clean
注意:引擎源码快照自身仍存在缺失的纯类型文件,因此 bun run typecheck:engine 目前不是绿色基线;产品层类型检查使用 tsconfig.lab.json。
路线图
| 阶段 | 内容 | 状态 |
|---|---|---|
| Phase 0 | 归档桌面端、仓库 CLI-only 化 | 已完成 |
| Phase 1 | 产品 CLI、配置/诊断、品牌清理、CI/Release | 已完成 |
| Phase 2 | 双 Agent 监督 MVP:任务契约、只读审查、证据验收 | 预览(lab supervise) |
| Phase 3 | 审计记录增强、基准对比、监督者模型独立配置 | 规划中 |
详细设计见 docs/roadmap.md。
已知边界
- 引擎内部仍保留
CLAUDE.md、.claude/等兼容命名;Lab Agent 自身的配置目录是~/.lab-agent。 lab supervise要求工作区干净(忽略.lab),不支持 dirty baseline;每轮 writer 都是新进程、新 session,不持久化 transcript。- 监督不是沙箱:writer 默认以
bypassPermissions运行,可执行任意用户级命令;allowlist 是事后证据,不是访问控制。只有在可信仓库、可信验收命令下使用,高风险任务应在容器或一次性 clone 中运行。 - 确定性 gate 只覆盖验收命令、允许路径、敏感文件与 HEAD 变化;无法发现
git push、未切换的新分支,或修改.gitignore后隐藏的文件。verdict.json仍建议人工复核。 - Anthropic 订阅/OAuth、Chrome 扩展、Slack、GitHub App、Claude Code Web 等上游专属功能不属于当前支持范围,相关命令可能隐藏或不可用。Anthropic API Key 仍然受支持。
- 引擎是公开源码快照,完整引擎类型检查尚未恢复为绿色基线;产品层使用独立的
tsconfig.lab.json。
安全与许可
- 本项目不启用遥测;
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1与DISABLE_TELEMETRY=1默认开启。 - 不要提交
.env、lab-agent.env或任何真实 API Key。 - 安全问题请按
SECURITY.md私下报告,不要先开公开 Issue。 - 引擎代码来源于公开源码快照,品牌与运行时由 Lab Agent 独立维护;来源与商标声明见
NOTICE。 - 项目使用 Apache-2.0 许可,详见
LICENSE。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi