是啊
又一个代理工具
只需配置一次编码代理,即可在任何地方使用。
的问题
编码代理配置一团糟。设置位于JSON文件中,技能标记分散在各个目录中,钩子是手工连接的shell脚本,MCP服务器需要手动JSON条目。将其乘以您使用的repo和代理的数量。祝你好运,保持一致。
yaah是做什么的
yaah生成配置 四种编码剂 来自一个Go代码库:Claude Code、OpenCode、Codex CLI和GitHub Copilot CLI。每个代理、每个仓库都有一个命令,结果相同。
yaah generate # all agents
yaah generate --agent claude # Claude Code only
yaah generate --agent opencode # OpenCode only
yaah generate --agent codex # Codex CLI only
yaah generate --agent copilot # GitHub Copilot CLI only这个命令可以给你:
- 5个开箱即用的钩子:linting(golangci lint,ruff,better,tsc),一个阻挡的指挥警卫
rm -rf /和朋友,一个泄露密钥的秘密扫描仪,一个捕捉TODO: implement占位符和会话记录器 - 用于组合处理程序的中间件链(例如秘密扫描+自动修复建议)
- 用于Context7和Pulumi的MCP服务器,以及一个内置的yaah MCP服务器,将秘密扫描、linting和命令检查等工具直接暴露给代理
- 生成多代理配置,并对每个代理进行调整(MCP格式、钩子交付、代理工具、技能前沿)
- 通过官方市场为Go、Python、TypeScript和C#提供LSP支持
- 会话跟踪,记录会话中的每个工具调用、阻止的命令和文件修改
- 3种内置技能(提交、公关、审核)加上74种远程和工作流技能,涵盖Pulumi IaC、Flux CD GitOps、Go、Python、TypeScript、Kubernetes、DevOps、SRE、安全审计、代码质量、技术债务分析等
- 16个代理:3个内置代理(执行者、图书管理员、审阅者)加上4个工作流代理(研究员、规划师、文档编写者、验证者)和9个远程代理 代理代理商 涵盖人工智能工程、后端架构、安全、代码审查、DevOps、SRE和测试
- 插件支持市场自动启用——随附 OpenAI 代码专家 用于代码审查和任务委派
不想要全部吗?关闭你不需要的东西:
opts := harness.DefaultOptions{
EnableCommandGuard: true,
EnableSecretScanner: true,
EnableGopls: true,
EnableCommitSkill: true,
EnableYaahMCP: true,
}
h := harness.NewWithDefaults(opts)安装
家酿
brew install dirien/tap/yaah去
go install github.com/dirien/yet-another-agent-harness/cmd/yaah@latest二进制
获取释放 。二进制文件由共同签署,包括SBOM。
快速开始
# Generate .claude/ with all defaults
cd your-repo
yaah generate
# Check that everything is installed
yaah doctoryaah doctor 告诉您缺少什么以及如何安装:
LSP Servers:
✓ gopls /usr/local/bin/gopls
✓ pyright /usr/local/bin/pyright-langserver
✗ csharp not found → dotnet tool install -g csharp-ls工作流程
yaah包含一个结构化的项目工作流,其中包含29个斜线命令。所有命令的命名空间为 /yaah:* 并且被注册为显式用户命令——模型永远不会自动触发它们。
生命周期
/yaah:init → /yaah:discuss → /yaah:plan → /yaah:execute → /yaah:verify → /yaah:ship
↓
/yaah:next ← /yaah:progress ← /yaah:complete-milestone ← /yaah:docs命令参考
| 命令 | 描述 | 子代理 |
|---|---|---|
| 核心工作流程 | ||
/yaah:init | 项目入职:发现代码库,设定愿景,创建路线图 | 是 |
/yaah:discuss | 在规划之前捕捉实施决策 | 是 |
/yaah:plan | 创建波浪分组实施计划 | 是 |
/yaah:execute | 与并行子代理一波接一波地执行计划 | 是 |
/yaah:verify | 根据计划进行三级工件验证 | 是 |
/yaah:docs | 生成经过代码库验证的文档 | 是 |
/yaah:next | 自动检测并推荐下一步 | 否 |
/yaah:quick | 在没有充分计划的情况下执行任务 | 是 |
| 运输和里程碑 | ||
/yaah:ship | 从已验证的阶段工作创建PR | 是 |
/yaah:complete-milestone | 归档里程碑、标签发布、生成变更日志 | 是 |
/yaah:new-milestone | 以新的目标开始新的版本周期 | 是 |
| 会话管理 | ||
/yaah:pause | 保存会话状态以供稍后恢复 | 否 |
/yaah:resume | 从上一个会话切换恢复 | 否 |
| 阶段管理 | ||
/yaah:add-phase | 将阶段添加到路线图末尾 | 否 |
/yaah:insert-phase | 在现有阶段之间插入紧急阶段 | 否 |
/yaah:remove-phase | 删除未来阶段 | 否 |
| 质量与安全 | ||
/yaah:review | 阶段实施的结构化代码审查 | 是 |
/yaah:secure | STRIDE威胁建模和漏洞分析 | 是 |
/yaah:health | 验证 .planning/ 完整性和一致性 | 否 |
| 状态和捕获 | ||
/yaah:progress | 详细的项目进度和指标 | 否 |
/yaah:todo | 捕获、列出或完成快速待办事项 | 否 |
/yaah:note | 零摩擦创意捕捉 | 否 |
| 配置 | ||
/yaah:settings | 查看或更新工作流配置 | 否 |
| 分析与高级 | ||
/yaah:explore | 交互式代码库探索 | 是 |
/yaah:scan | 扫描安全性、质量、依赖性问题 | 是 |
/yaah:import | 将现有项目导入规划工作流 | 是 |
/yaah:autonomous | 无需人工干预即可运行完整的工作流程 | 是 |
/yaah:forensics | 调查失败或卡住的工作流运行 | 是 |
/yaah:cleanup | 清理临时规划工件 | 否 |
.规划/目录结构
.planning/
├── PROJECT.md # Vision, goals, tech stack, constraints
├── REQUIREMENTS.md # Scoped requirements with REQ-IDs
├── ROADMAP.md # Phases with scope, success criteria, status
├── STATE.md # Current position and progress tracking
├── HANDOFF.md # Session pause/resume state
├── TODOS.md # Quick todo items
├── config.json # Workflow settings
├── research/ # Project-level research
├── phases/ # Per-phase artifacts
│ └── 01-auth/
│ ├── CONTEXT.md # Implementation decisions
│ ├── RESEARCH.md # Phase-specific research
│ ├── 01-01-PLAN.md # Task plan with wave grouping
│ ├── 01-01-SUMMARY.md # Execution outcomes
│ ├── VERIFICATION.md # Validation results
│ ├── REVIEW.md # Code review findings
│ ├── SECURITY.md # Threat model (STRIDE)
│ └── CHANGELOG.md # Milestone changelog
├── quick/ # Ad-hoc task records
└── notes/ # Idea captures四名专业代理支持工作流程: researcher (十四行诗,只读), planner (opus,目标向后分解), doc-writer (十四行诗、代码库验证文档),以及 verifier (十四行诗,人工制品验证)。还暴露了两个MCP工具: yaah_planning_status 和 yaah_planning_init.
看 组件文档 了解全部细节。
运行时功能
yaah不仅仅是一个配置生成器,它还与Claude Code一起作为运行时运行。
MCP服务器
yaah serve 通过stdio启动MCP服务器,将yaah的功能作为Claude Code可以直接调用的工具公开:
| 工具 | 说明 |
|---|---|
yaah_scan_secrets | 扫描文件以查找硬编码的机密和凭据 |
yaah_lint | 使用配置的配置文件运行lint检查 |
yaah_check_command | 检查shell命令是否可以安全运行 |
yaah_doctor | 运行健康检查并报告缺少的依赖项 |
yaah_session_info | 查询会话历史记录或获取服务器信息 |
MCP服务器由Claude Code通过以下方式自动发现 .mcp.json 在项目根目录(由生成 yaah generate).
会话跟踪
每个钩子事件都被记录到 .claude/sessions/.json这为您提供了Claude Code在每个会话中所做工作的完整审计跟踪:工具调用、被阻止的命令、修改的文件和安全发现。
yaah session list # List recent sessions
yaah session show # Full details for a session
yaah session clean # Remove sessions older than 7 days中间件链
使用条件逻辑将处理程序组合到顺序管道中:
chain := hooks.NewChain("secret-remediation",
[]schema.HookEvent{schema.HookPostToolUse},
regexp.MustCompile(`(?i)^(Edit|Write)$`),
hooks.HandlerLink(handlers.NewSecretScanner()),
hooks.OnBlock(func(ctx context.Context, input *hooks.Input, prev *hooks.Result) (*hooks.Result, error) {
prev.Output += "\n\nRemediation: Move the secret to an env var or secrets manager."
return prev, nil
}),
)
h.Hooks().Register(chain)可用组合子: HandlerLink, OnBlock, OnError, Transform.
运作原理
yaah有一个简单的心智模型:接口和注册表。每种组件类型(钩子、MCP、LSP、技能、代理、命令)都有一个你实现的接口和一个你添加到其中的注册表 Harness 将它们连接在一起,每个代理生成器就会生成正确的文件。
多代理输出
每个代理都以其本机格式获取文件:
| 代理 | 设置 | MCP | 钩子 | 技能 | 代理 |
|---|---|---|---|---|---|
| 克劳德 | .claude/settings.json | .mcp.json | 嵌入设置中 | .claude/skills/ | .claude/agents/*.md |
| 开源代码 | opencode.json | 嵌入式("mcp" 按键) | .opencode/plugins/yaah.js | .opencode/skills/ | .opencode/agents/*.md |
| 法典 | .codex/config.toml | 嵌入式([mcp_servers]) | .codex/hooks.json | .agents/skills/ | 不支持 |
| 副驾驶 | 没有 | .copilot/mcp-config.json | .github/hooks/hooks.json | .github/skills/ | .github/agents/*.agent.md |
每个代理的关键调整:
- 开源代码:MCP使用
"mcp"钥匙与"local"/"remote"类型和"command"作为阵列。代理工具呈现为禁用映射。通过JS插件交付的钩子(execFileSync). - 副驾驶:MCP使用
"stdio"/"http"运输类型。Env vars穿过。代理文件使用.agent.md扩展。 - 法典:MCP嵌入TOML。挂钩仅限于
SessionStart/Stop--通过yaah MCP工具提供衣冠和安全检查。 - 克劳德:原生格式,支持所有功能。
写你自己的钩子?实施 hooks.Handler自定义MCP服务器?实施 mcp.Provider到处都是同样的模式。
文档
详细的参考文献位于 docs/:
