🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

自主编码工厂 jigjoy-ai/baro

DeepSeek Harnessv0.0.15
jigjoy-ai6 天前有提交已提供中文文档扫描:高危

在仓库里写下一个目标,然后走开。回来时,收到一个已通过验证的 pull request。

59.9/100
综合分
126
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jigjoy-ai/baro
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · security
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包baro @ 0.0.15
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:40:47

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量
查看扫描证据(共 40 处,展示前 38 条)
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:76
    mkdirSync(sessionPath, { recursive: true })
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:79
    mkdirSync(indexPath, { recursive: true })
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:125
    if (!existsSync(sessionsDir)) return
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:127
    for (const entry of readdirSync(sessionsDir)) {
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:131
    const stat = lstatSync(entryPath)
  • 删除本地文件递归
    packages/baro-memory/src/vectra-store.ts:134
    rmSync(entryPath, { recursive: true, force: true })
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:192
    if (!existsSync(this.indexFilePath)) return
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:193
    const mtimeMs = statSync(this.indexFilePath).mtimeMs
  • 删除本地文件
    packages/baro-memory/src/vectra-store.ts:391
    try { rmSync(this.lockPath, { force: true }) } catch {}
  • 读取本地文件
    packages/baro-memory/src/vectra-store.ts:434
    if (existsSync(this.cachePath)) {
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:453
    writeFileSync(this.lockPath, String(process.pid), 'utf-8')
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:456
    writeFileSync(tmp, JSON.stringify(cache), 'utf-8')
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:457
    renameSync(tmp, this.cachePath)
  • 写入本地文件
    packages/baro-memory/src/vectra-store.ts:461
    writeFileSync(this.cachePath, JSON.stringify(cache), 'utf-8')
  • 删除本地文件
    packages/baro-memory/src/vectra-store.ts:464
    try { if (existsSync(this.lockPath)) rmSync(this.lockPath) } catch {}
  • 写入本地文件
    packages/baro-memory/test-integration.mjs:64
    writeFileSync(queryScript, `
  • 执行外部命令运行时拼接
    packages/baro-memory/test-integration.mjs:74
    const output = execSync(`node ${queryScript}`, {
  • 写入本地文件
    packages/baro-memory/test-integration.mjs:91
    writeFileSync(writeScript, `
  • 执行外部命令运行时拼接
    packages/baro-memory/test-integration.mjs:106
    const writeOutput = execSync(`node ${writeScript}`, {
  • 删除本地文件递归
    packages/baro-memory/test-integration.mjs:146
    rmSync(sessionPath, { recursive: true })
  • 读取本地文件
    packages/baro-orchestrator/src/gateway-credentials.ts:48
    raw = readFileSync(path)
  • 写入本地文件
    packages/baro-orchestrator/src/orchestrate.ts:681
    mkdirSync(dirname(config.auditLogPath), { recursive: true })
  • 读取本地文件
    packages/baro-orchestrator/src/orchestrate.ts:996
    commandPath: existsSync(bundledCollaborationCommand)
  • 读取密钥环境变量
    packages/baro-orchestrator/src/orchestrate.ts:1058
    defaultApiKey: process.env.OPENAI_API_KEY,
  • 读取密钥环境变量
    packages/baro-orchestrator/src/orchestrate.ts:1745
    defaultApiKey: process.env.OPENAI_API_KEY,
  • 删除本地文件递归
    packages/baro-orchestrator/src/orchestrate.ts:2226
    rmSync(dialogueRuntimeCwd, { recursive: true, force: true })
  • 删除本地文件递归
    packages/baro-orchestrator/src/orchestrate.ts:2229
    rmSync(goalReviewRuntimeCwd, { recursive: true, force: true })
  • 读取本地文件
    packages/baro-orchestrator/src/prd.ts:232
    const raw = readFileSync(path, "utf8")
  • 写入本地文件
    packages/baro-orchestrator/src/prd.ts:238
    writeFileSync(path, JSON.stringify(prd, null, 2) + "\n")
  • 写入本地文件
    packages/baro-orchestrator/src/prd.ts:253
    writeFileSync(temporary, JSON.stringify(value, null, 2) + "\n", {
  • 写入本地文件
    packages/baro-orchestrator/src/prd.ts:256
    renameSync(temporary, path)
  • 删除本地文件
    packages/baro-orchestrator/src/prd.ts:259
    unlinkSync(temporary)
  • 读取本地文件
    packages/baro-orchestrator/src/prd.ts:293
    const parsed: unknown = JSON.parse(readFileSync(path, "utf8"))
  • 读取本地文件
    packages/baro-orchestrator/src/provider-ownership-manifest.ts:66
    const stat = lstatSync(path)
  • 读取本地文件
    packages/baro-orchestrator/src/provider-ownership-manifest.ts:70
    const bootstrap = JSON.parse(readFileSync(path, "utf8")) as {
  • 写入本地文件
    packages/baro-orchestrator/src/provider-ownership-manifest.ts:146
    writeFileSync(fd, body, "utf8")
  • 写入本地文件
    packages/baro-orchestrator/src/provider-ownership-manifest.ts:149
    renameSync(temporaryPath, config.path)
  • 删除本地文件
    packages/baro-orchestrator/src/provider-ownership-manifest.ts:161
    unlinkSync(temporaryPath)
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 沙箱测试并发智能体
  • 基于Mozaik运行时

一个命令行工具,把目标变成 pull request,也是沙箱,用来在 Mozaik 运行时上测试并发 AI 编程智能体。

README

由 DeepSeek 最新模型翻译生成
baro 在仓库里写下一个目标,然后走开。回来时,收到一个已通过验证的 pull request。 baro 是一座自主软件工厂。它把你的目标编译成一份机器可校验的契约,拆成由多个 story 组成的 DAG,在相互隔离的 git worktree 里并行构建,再用 fail-closed 闸门挡住每一次合并——声明的测试、构建、证据评审、写入面归属。你审的是一个闸门已经放行的 PR。 一条提示词 → 33 个 story 的计划 → 808 个通过的测试 → 一个 PR,用时 71 分钟。 看一次真实运行。 安装 npm install -g baro-ai 需要 Node 20+、git,以及至少一个后端:claude CLI(默认)、codex,或任意 OpenAI 兼容端点。baro --doctor 检查你的环境。 使用 cd your-repo baro "Add JWT authentication with role-based access control" 这会打开 TUI:intake 只问关键问题,你确认计划,fleet 开始跑。
展开完整文档(README 剩余 1 节)
baro

在仓库里写下一个目标,然后走开。回来时,收到一个已通过验证的 pull request。

baro 是一座自主软件工厂。它把你的目标编译成一份机器可校验的契约,拆成由多个 story 组成的 DAG,在相互隔离的 git worktree 里并行构建,再用 fail-closed 闸门挡住每一次合并——声明的测试、构建、证据评审、写入面归属。你审的是一个闸门已经放行的 PR。

一条提示词 → 33 个 story 的计划 → 808 个通过的测试 → 一个 PR,用时 71 分钟。
看一次真实运行。

安装

npm install -g baro-ai

需要 Node 20+、git,以及至少一个后端:claude CLI(默认)、codex,或任意 OpenAI 兼容端点。baro --doctor 检查你的环境。

使用

cd your-repo
baro "Add JWT authentication with role-based access control"

这会打开 TUI:intake 只问关键问题,你确认计划,fleet 开始跑。

要做自动化,就脱离终端,从任何地方跟进:

baro --headless --detach --goal-file goal.txt # prints a run id, returns immediately
baro watch <run-id> # follow milestone events
baro logs <run-id> --follow # tail the raw log
baro runs # list live runs
baro stop <run-id> # stop one

命令

| 命令 | 作用 |
| baro "<goal>" | 在当前仓库跑一个目标(TUI) |
| baro --goal-file <path> | 从文件读取目标 |
| baro --headless --detach ... | 后台运行,供 CI/自动化使用;打印 run id |
| baro watch <run-id> | 跟进一次实时运行的里程碑 |
| baro logs <run-id> [--follow] | 打印或跟踪一次运行的日志 |
| baro runs / baro stop <id> | 列出 / 停止实时运行 |
| baro --resume | 从 prd.json 恢复中断的运行——绝不重新规划 |
| baro --continue | 在当前分支上做后续——总是重新规划 |
| baro --doctor | 自诊断:后端、认证、gh、权限 |
| baro login | 浏览器登录 baro cloud |
| baro connect [--install-service] | 把本机接入为云端 runner |

关键参数

--llm claude|codex|openai|opencode|pi|devin|hybrid|jigjoy # backend for all phases
-m opus|sonnet|haiku # model override (verbatim pass-through on other backends)
--effort low..max # thinking per turn (default: high)
--parallel N # max parallel story agents (0 = unlimited)
--mode focused|sequential|parallel # force an execution mode (default: intake proposes)
--quick # trivial goals: one story, no architect/critic/surgeon
--local-only # 不推送、不提 PR——硬隔离 --shell-budget <seconds> # story shell 工具的每条命令预算 --openai-base-url <url> # 任意 OpenAI 兼容服务商(OpenRouter、vLLM、Ollama…)
--tier-map "light=openai:MiniMax-M3,heavy=claude:opus" # 按 story 层级混用后端

按阶段覆盖(--architect-llm、--story-model 等)、.barorc,以及其他所有内容:docs.baro.rs

工作原理

baro 架构——Rust TUI 宿主,TypeScript 编排器,其限界上下文在 mozaik 事件总线上会合,每次合并前都有机器门禁

- 契约先行。 架构师把目标转成不变量与义务,二者都可机器校验——这一切发生在写任何代码之前。
- 是集体,不是协调者。 Story 智能体是事件总线上的对等节点:它们只看到与自己相关的事件,互相交换笔记,并因彼此的工作而挂起或恢复。不存在一个所有东西都必须挤过去的单一上下文窗口。
- 靠门禁,不靠感觉。 声明的测试、提交前构建、评判捕获命令输出的证据评审员,以及写入面归属——失败即关闭,拦截每一次合并。人类评审的 PR,门禁已经先接受了。
- 活的计划。 计划是一张 DAG,运行过程会与它协商:运行时重新规划会在运行中途新增并重连 story,失败的闸门可以生成自己的补救 story。

用 Claude Code 驱动它

baro 很适合让编码智能体坐在驾驶位。在你的仓库里,把下面这段粘贴进 Claude Code: text Install baro (npm install -g baro-ai) and run baro --doctor to verify the setup. Then drive it for me:

1. Write my task as an evidence-rich goal file: name the exact files and line numbers
the change touches, state the constraints, and say which tests must prove it.
2. Launch it detached: baro --headless --detach --goal-file goal.txt, note the run id.
3. Follow it with baro watch <run-id>; if it stalls, read baro logs <run-id>.
4. When the pull request opens, review the diff against the goal, run the project's
test suite yourself, and report back: what shipped, what the gates proved, and
anything that needs my eyes. Merge only if everything is green.

Keep goals narrow — one concern per run. If the run fails, read why, tighten the goal with the new evidence, and launch again.

云端

没有机器,或者没有 Claude/Codex 订阅?在 app.baro.jigjoy.ai 上运行同一套机群——无需安装,隔离沙箱,用我们的密钥。或者把你自己的硬件留在池子里:baro login,然后 baro connect --install-service。

文档:docs.baro.rs · 问题反馈:github.com/jigjoy-ai/baro/issues · Twitter:@lotus_sbc
预览分享卡片长什么样 ↓jigjoy-ai/baro
分享 · DeepSeek Harness Hub
jigjoy-ai/baro

在仓库里写下一个目标,然后走开。回来时,收到一个已通过验证的 pull request。

这是你的仓库?认领条目

回到顶部