ワンクリックで
architecture-overview
Use when asked about harness9 architecture, module design, or how components interact — explains the system design
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when asked about harness9 architecture, module design, or how components interact — explains the system design
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | architecture-overview |
| description | Use when asked about harness9 architecture, module design, or how components interact — explains the system design |
| trigger | architecture, design, how does, module, component, structure |
| 原则 | 说明 |
|---|---|
| 简洁 | 最小化抽象层,极少的直接依赖 |
| 完备 | 覆盖 Agent 运行所需的全部核心模块 |
| 生产可用 | 错误恢复、超时控制、路径沙箱、并发安全 |
Turn N:
LLM(messages + tools) → 推理 + 工具调用决策
→ 并发执行所有工具调用 → Observation 注入 context
→ Turn N+1
自然终止:模型不再发起工具调用 → 输出最终回复
三重终止保障:
len(responseMsg.ToolCalls) == 0WithMaxTurns 配置cancel() 或超时cmd/harness9 (入口)
├── internal/context (System Prompt 组装)
│ └── internal/skills (Skills 解析 + 索引)
├── internal/engine (ReAct 主循环)
│ ├── internal/provider (LLM 调用)
│ ├── internal/tools (工具注册 + 执行)
│ └── internal/schema (数据类型)
└── internal/env (配置加载)
关键设计决策:接口定义在使用者侧
tools.Registry 接口定义在 tools 包,engine 包依赖它engine.PromptBuilder 接口定义在 engine 包,context 包实现它skills.UseSkillTool 通过 Go 结构类型满足 tools.BaseTool 接口,不需要 import tools 包(避免循环依赖)用户输入 → RunTUI → eng.RunStream(ctx, prompt)
→ engine.Event stream → 逐 token 追加到对话视图
→ ToolCalls → Spinner 动画 + 耗时计数
→ EventDone → 最终回复渲染到屏幕
用户输入 → RunCLI → eng.Run(ctx, prompt)
→ runLoop → LLM Generate
→ ToolCalls → 并发执行 → ToolResults → 继续循环
→ 最终回复打印到 stdout
DefaultPromptBuilder.Build() 按顺序组装:
- name: description 列表(为空时跳过)完整内容示例:
You are harness9, an expert coding assistant...
## Project Guidelines (AGENTS.md)
{AGENTS.md 全文}
## Available Skills
Use the `use_skill` tool to load full content of any skill when needed.
- go-coding-standards: Use when writing or reviewing Go code...
- debugging-guide: Use when debugging Go errors...
type LLMProvider interface {
Generate(ctx, messages, tools) (Message, error)
GenerateStream(ctx, messages, tools) (<-chan StreamChunk, error)
}
当前实现:
OpenAIProvider:兼容所有 OpenAI Chat Completions API(包括 OpenRouter、Azure)AnthropicProvider:Anthropic Messages APIAnthropic 约束:user/assistant 消息必须严格交替,禁止连续 assistant 消息。
type BaseTool interface {
Name() string
Definition() schema.ToolDefinition // JSON Schema,传给 LLM
Execute(ctx context.Context, args json.RawMessage) (string, error)
}
内置工具:
| 工具 | 说明 |
|---|---|
bash | Shell 命令执行,workDir 为 CWD |
read_file | 文件读取,4096 字节截断 |
write_file | 文件写入,自动 mkdir |
edit_file | 字符串替换编辑,多级模糊匹配 |
use_skill | 按需加载 Skill 全文 |
所有文件工具通过 safePath() 校验路径,防止 Path Traversal 攻击。
Feature auto-development — clarify requirements, generate spec, dispatch dev sub-agent to implement and merge into current branch
Use when the user invokes /commit or asks to commit changes, after a code review has been completed and the changes are confirmed ready to stage and commit to git.
Use when the user invokes /cr, requests a code review, or before committing to verify correctness, security, and quality of new or modified code in the working tree.
Use when the user invokes /pr or asks to push changes and open a pull request, after commits are ready to be pushed to a remote branch and merged into the main branch.
发布 harness9 CLI 新版本。接受可选的 version 参数;若未提供,则自动将当前最新 tag 的 patch 号加 1。执行:切换到 master、拉取最新代码、创建 tag、推送 tag 触发 GoReleaser,并基于两个 tag 之间的提交生成详细、结构化的 Release Note 覆盖 GitHub Release 默认说明。
Use when debugging Go errors, test failures, or unexpected behavior — step-by-step diagnosis approach