4.5 Opencode 初实践

本节将前面学习的提示词工程技术整合到 Opencode 的实际应用中。

4.5.1 系统提示配置

Opencode 采用分层提示架构,每层有不同的作用域和注入时机:

Opencode 分层提示架构

各层特点对比

层级 机制 触发方式 典型用途
消息级 AGENTS.md 自动加载 项目上下文
消息级 Slash Commands /command 可重复工作流
消息级 Skills 模型判断 专业能力扩展
对话级 Subagent 委托触发 任务委派

Skill 目录结构

.opencode/skills/
└── financial-analysis/
    ├── SKILL.md            # 核心定义文件(必需)
    ├── templates/          # 模板文件(可选)
    │   └── report.md
    └── examples/           # 示例(可选)
        └── sample_analysis.md

4.5.2 Few-shot 示例实现

在 Skill 中嵌入 Few-shot 示例:

---
name: sentiment-analysis
description: |
  金融新闻情感分析技能。分析新闻的市场情感倾向。
---

# 金融情感分析技能

## 分析框架

判断金融新闻的情感倾向(积极/消极/中性)。

## 示例

输入:公司第四季度净利润同比增长 25%,超出市场预期。
情感:积极
置信度:90%

输入:受原材料价格上涨影响,公司毛利率环比下降 3 个百分点。
情感:消极
置信度:85%

输入:央行维持基准利率不变,符合市场普遍预期。
情感:中性
置信度:80%

## 边界案例

输入:公司宣布大规模裁员计划,预计年节省成本 10 亿元。
情感:中性
置信度:65%
分析:裁员是负面事件,但成本节省是正面影响,整体中性。

4.5.3 输出格式控制

在 Skill 中定义输出格式:

---
name: financial-data-extraction
description: |
  财务数据提取技能。从文本中提取结构化财务数据。
---

# 财务数据提取技能

## 输出格式

必须按以下 JSON 格式输出:

{
  "company_info": {
    "name": "公司名称",
    "stock_code": "股票代码",
    "report_period": "报告期"
  },
  "metrics": {
    "revenue": {"value": 数值, "unit": "单位"},
    "net_profit": {"value": 数值, "unit": "单位"},
    "yoy_growth": 百分比数值
  }
}

## 输出要求

- 直接输出 JSON,不要使用代码块
- 确保所有字符串使用双引号
- 数值不带引号
- 未提及的字段填 null

4.5.4 意图路由实现

在 Opencode 中,可以通过设计一个专门的路由 Skill 来实现意图分流:

---
name: financial-router
description: |
  金融问题智能路由技能。当用户提出金融相关问题时,
  自动分类并路由到合适的专业 Skill。
  Use PROACTIVELY for any financial question.
---

# 金融问题路由技能

## 功能说明

本技能作为金融问题的入口路由器,负责:
1. 分析用户问题的意图
2. 提取关键实体
3. 路由到对应的专业 Skill

## 路由目标

| 意图类型 | 目标 Skill | 触发场景 |
|---------|-----------|----------|
| market-query | market-query | 价格、行情、涨跌幅 |
| financial-analysis | financial-analysis | 财报、财务指标 |
| policy-interpretation | policy-interpretation | 政策、监管 |
| general | 直接回答 | 概念解释、基础知识 |

## 路由决策格式

{
  "intent": "路由目标",
  "confidence": 0.0-1.0,
  "reasoning": "分类理由",
  "next_action": "调用的 Skill 或直接回答"
}