完成任务16:编写 04_长期发展/环境保护.md
This commit is contained in:
176
active_skills/chinese-response/chinese-response/SKILL.md
Normal file
176
active_skills/chinese-response/chinese-response/SKILL.md
Normal file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
name: chinese-response
|
||||
description: 确保所有回复都使用中文,自动翻译其他语言内容后再回复。适用于任何需要中文输出的场景。
|
||||
---
|
||||
|
||||
# 中文回复技能
|
||||
|
||||
## 概述
|
||||
|
||||
此技能确保 agent 的所有回复都使用标准中文(简体),包括:
|
||||
- 直接回复用户时自动转换为中文
|
||||
- 接收非中文输入后先翻译再回复
|
||||
- 技术文档、代码注释等内容的中文呈现
|
||||
|
||||
**何时使用此技能:**
|
||||
- 用户要求"用中文回复"或"翻译成中文"
|
||||
- 任何需要输出中文的场景(默认行为)
|
||||
- 处理多语言输入时需要统一为中文输出
|
||||
- 生成报告、文档、对话等所有文本内容
|
||||
|
||||
## 核心逻辑
|
||||
|
||||
### 1. 自动检测与翻译
|
||||
```python
|
||||
def detect_and_translate(text: str) -> str:
|
||||
"""检测非中文文本并翻译"""
|
||||
# 检测是否包含非中文字符
|
||||
if not re.match(r'^[\u4e00-\u9fff\s.,!?:;、?!“”‘’]+$', text):
|
||||
# 调用翻译 API(如 DeepL/Google Translate)
|
||||
translated = translate_api(text)
|
||||
return translated
|
||||
|
||||
return text
|
||||
```
|
||||
|
||||
### 2. 回复生成流程
|
||||
1. **接收用户输入** → 检测语言
|
||||
2. **非中文输入** → 翻译成中文
|
||||
3. **处理内容** → 生成回复
|
||||
4. **确保输出** → 全部转换为中文(包括技术术语)
|
||||
5. **返回给用户**
|
||||
|
||||
### 3. 特殊场景处理
|
||||
- **代码/命令输出**:保持原样,但添加中文注释说明
|
||||
- **错误信息**:翻译为友好的中文提示
|
||||
- **数据表格**:表头和中文字段使用中文
|
||||
- **JSON/XML**:键名可保留英文,但值转换为中文
|
||||
|
||||
### 4. 实际集成方式
|
||||
此技能需要与 agent 框架集成。当收到用户输入时:
|
||||
1. 检测输入语言(通过 `is_chinese()` 方法)
|
||||
2. 如果是非中文,调用翻译服务
|
||||
3. 处理内容后确保输出为中文
|
||||
4. 返回给用户
|
||||
|
||||
**注意:** 实际使用时需要配置翻译服务的 API 密钥或使用免费替代方案。
|
||||
|
||||
## 工作流程决策树
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[接收输入] --> B{是否中文?}
|
||||
B -->|是 | C[直接处理]
|
||||
B -->|否 | D[翻译成中文]
|
||||
C --> E[生成回复]
|
||||
D --> E
|
||||
E --> F{输出内容}
|
||||
F --> G[纯代码/数据]
|
||||
F --> H[混合内容]
|
||||
G --> I[保留原样 + 添加中文注释]
|
||||
H --> J[全部转换为中文]
|
||||
```
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 用户输入(英文):
|
||||
> "Can you help me upgrade copaw?"
|
||||
|
||||
**处理流程:**
|
||||
1. 检测到英文 → 翻译为:"你能帮我升级 copaw 吗?"
|
||||
2. 执行升级操作
|
||||
3. 回复:"好的,我已经帮你完成了 copaw 的升级。当前版本是 0.2.0(已是最新版)。"
|
||||
|
||||
### 用户输入(中文):
|
||||
> "帮我创建一个技能"
|
||||
|
||||
**处理流程:**
|
||||
1. 直接识别为中文 → 无需翻译
|
||||
2. 执行技能创建逻辑
|
||||
3. 回复:"好的,正在为你创建技能..."
|
||||
|
||||
## 技术实现建议
|
||||
|
||||
### 脚本示例 (`translator.py`)
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
from deep_translator import GoogleTranslator
|
||||
|
||||
class ChineseResponseHandler:
|
||||
def __init__(self):
|
||||
self.translator = GoogleTranslator(source='auto', target='zh-CN')
|
||||
|
||||
def is_chinese(self, text: str) -> bool:
|
||||
"""检测文本是否主要为中文"""
|
||||
chinese_pattern = re.compile(r'[\u4e00-\u9fff]')
|
||||
matches = chinese_pattern.findall(text)
|
||||
return len(matches) > len(text) * 0.5
|
||||
|
||||
def translate(self, text: str) -> str:
|
||||
"""翻译非中文文本"""
|
||||
if not self.is_chinese(text):
|
||||
try:
|
||||
return self.translator.translate(text)
|
||||
except Exception as e:
|
||||
print(f"翻译失败:{e}")
|
||||
return text
|
||||
return text
|
||||
|
||||
def process_response(self, content: str) -> str:
|
||||
"""处理回复内容,确保中文输出"""
|
||||
# 对于代码块,保留原样但添加中文注释
|
||||
if '`' in content or '```' in content:
|
||||
lines = content.split('\n')
|
||||
processed_lines = []
|
||||
for line in lines:
|
||||
if not line.strip().startswith('#'):
|
||||
translated_line = self.translate(line)
|
||||
processed_lines.append(translated_line)
|
||||
else:
|
||||
# 翻译代码注释
|
||||
translated_line = self.translate(line)
|
||||
processed_lines.append(translated_line)
|
||||
content = '\n'.join(processed_lines)
|
||||
|
||||
return content
|
||||
|
||||
# 使用示例
|
||||
handler = ChineseResponseHandler()
|
||||
response = handler.process_response("Your response here")
|
||||
print(response)
|
||||
```
|
||||
|
||||
## 资源
|
||||
|
||||
### scripts/
|
||||
- `translator.py` - 中文翻译和检测工具
|
||||
- `chinese_formatter.py` - 内容格式化器(确保输出符合中文规范)
|
||||
|
||||
### references/
|
||||
- `zh_cn_guidelines.md` - 中文写作规范文档
|
||||
- `common_terms.md` - 常用技术术语对照表
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **性能优化**:对于大量文本,批量翻译比逐行翻译更高效
|
||||
2. **专业术语**:建立常用技术词汇库,避免直译导致的专业性丢失
|
||||
3. **代码保留**:代码块、命令输出等应保留原样,仅添加中文注释
|
||||
4. **错误处理**:翻译失败时返回原文并提示用户
|
||||
|
||||
## 测试用例
|
||||
|
||||
| 输入 | 预期输出 |
|
||||
|------|----------|
|
||||
| "Hello world" | "你好世界" |
|
||||
| "pip install copaw" | "pip 安装 copaw(命令保留原样)" |
|
||||
| "Error: File not found" | "错误:文件未找到" |
|
||||
|
||||
---
|
||||
|
||||
**下一步:**
|
||||
1. 创建 `scripts/translator.py` 脚本
|
||||
2. 添加 `references/common_terms.md` 术语表
|
||||
3. 运行技能验证器检查结构完整性
|
||||
@@ -0,0 +1,112 @@
|
||||
# 常用技术术语对照表
|
||||
|
||||
## Python 相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| Python | Python(Python) |
|
||||
| import | 导入 |
|
||||
| function | 函数 |
|
||||
| class | 类 |
|
||||
| variable | 变量 |
|
||||
| loop | 循环 |
|
||||
| list | 列表 |
|
||||
| dictionary/dict | 字典/词典 |
|
||||
| string | 字符串 |
|
||||
| integer/int | 整数 |
|
||||
| float | 浮点数 |
|
||||
| boolean | 布尔值 |
|
||||
| None | None(空) |
|
||||
|
||||
## 包管理相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| pip | pip(Python 包管理器) |
|
||||
| install | 安装 |
|
||||
| upgrade | 升级 |
|
||||
| uninstall | 卸载 |
|
||||
| requirements.txt | 依赖文件 |
|
||||
| virtual environment | 虚拟环境 |
|
||||
|
||||
## 系统相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| terminal/CLI | 终端/命令行 |
|
||||
| command line interface | 命令行界面 |
|
||||
| shell | 外壳/Shell |
|
||||
| process | 进程 |
|
||||
| thread | 线程 |
|
||||
| module | 模块 |
|
||||
|
||||
## Web 开发相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| HTTP | HTTP(超文本传输协议) |
|
||||
| API | API(应用程序接口) |
|
||||
| request | 请求 |
|
||||
| response | 响应 |
|
||||
| endpoint | 端点 |
|
||||
| URL/URI | 统一资源定位符 |
|
||||
|
||||
## 数据库相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| SQL | SQL(结构化查询语言) |
|
||||
| database | 数据库 |
|
||||
| table | 表 |
|
||||
| query | 查询 |
|
||||
| insert | 插入 |
|
||||
| update | 更新 |
|
||||
| delete | 删除 |
|
||||
|
||||
## 错误处理相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| Error | 错误 |
|
||||
| Exception | 异常 |
|
||||
| traceback | 堆栈跟踪 |
|
||||
| debug | 调试 |
|
||||
| log | 日志 |
|
||||
| warning | 警告 |
|
||||
| critical | 严重 |
|
||||
|
||||
## 文件操作相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| file | 文件 |
|
||||
| directory/folder | 目录/文件夹 |
|
||||
| path | 路径 |
|
||||
| read | 读取 |
|
||||
| write | 写入 |
|
||||
| append | 追加 |
|
||||
|
||||
## 网络相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| network | 网络 |
|
||||
| server | 服务器 |
|
||||
| client | 客户端 |
|
||||
| port | 端口 |
|
||||
| socket | 套接字 |
|
||||
| bandwidth | 带宽 |
|
||||
| latency | 延迟 |
|
||||
|
||||
## 性能相关
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| performance | 性能 |
|
||||
| optimization | 优化 |
|
||||
| benchmark | 基准测试 |
|
||||
| speed | 速度 |
|
||||
| efficiency | 效率 |
|
||||
| memory leak | 内存泄漏 |
|
||||
|
||||
## 其他常用词
|
||||
| 英文 | 中文 |
|
||||
|------|------|
|
||||
| configuration | 配置 |
|
||||
| setting | 设置 |
|
||||
| option | 选项 |
|
||||
| parameter | 参数 |
|
||||
| argument | 参数/引数 |
|
||||
| default | 默认值 |
|
||||
| override | 覆盖 |
|
||||
Binary file not shown.
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
中文回复技能演示脚本
|
||||
展示如何使用 chinese-response 技能
|
||||
"""
|
||||
|
||||
from translator import ChineseResponseHandler
|
||||
|
||||
|
||||
def demo():
|
||||
"""演示技能功能"""
|
||||
|
||||
handler = ChineseResponseHandler()
|
||||
|
||||
print("=" * 60)
|
||||
print("中文回复技能演示")
|
||||
print("=" * 60)
|
||||
|
||||
# 示例输入(模拟用户输入)
|
||||
examples = [
|
||||
{
|
||||
"input": "Can you help me upgrade copaw?",
|
||||
"description": "英文问题"
|
||||
},
|
||||
{
|
||||
"input": "pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple copaw",
|
||||
"description": "命令输出"
|
||||
},
|
||||
{
|
||||
"input": "Error: File not found",
|
||||
"description": "错误信息"
|
||||
},
|
||||
{
|
||||
"input": "你好世界",
|
||||
"description": "中文输入(无需翻译)"
|
||||
}
|
||||
]
|
||||
|
||||
for i, example in enumerate(examples, 1):
|
||||
print(f"\n示例 {i}: {example['description']}")
|
||||
print("-" * 40)
|
||||
print(f"原始输入:{example['input']}")
|
||||
|
||||
# 处理回复(模拟技能处理)
|
||||
processed = handler.process_response(example['input'])
|
||||
print(f"处理后:{processed}")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
demo()
|
||||
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
中文回复翻译器
|
||||
确保所有回复都使用标准中文(简体)
|
||||
"""
|
||||
|
||||
import re
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class ChineseResponseHandler:
|
||||
"""中文回复处理器"""
|
||||
|
||||
def __init__(self):
|
||||
self.translator = None # 可配置翻译服务
|
||||
|
||||
def is_chinese(self, text: str) -> bool:
|
||||
"""检测文本是否主要为中文"""
|
||||
if not text or len(text.strip()) == 0:
|
||||
return False
|
||||
|
||||
chinese_pattern = re.compile(r'[\u4e00-\u9fff]')
|
||||
matches = chinese_pattern.findall(text)
|
||||
|
||||
# 如果中文字符占比超过 50%,认为是中文文本
|
||||
return len(matches) > len(text) * 0.5
|
||||
|
||||
def translate(self, text: str) -> str:
|
||||
"""翻译非中文文本"""
|
||||
if not self.is_chinese(text):
|
||||
try:
|
||||
# TODO: 配置实际的翻译服务(如 DeepL/Google Translate)
|
||||
from deep_translator import GoogleTranslator
|
||||
translator = GoogleTranslator(source='auto', target='zh-CN')
|
||||
return translator.translate(text)
|
||||
except Exception as e:
|
||||
print(f"翻译失败:{e}")
|
||||
# 返回原文以便调试
|
||||
return text
|
||||
|
||||
return text
|
||||
|
||||
def process_response(self, content: str) -> str:
|
||||
"""处理回复内容,确保中文输出"""
|
||||
|
||||
# 对于代码块,保留原样但添加中文注释说明
|
||||
if '`' in content or '```' in content:
|
||||
lines = content.split('\n')
|
||||
processed_lines = []
|
||||
|
||||
for line in lines:
|
||||
stripped_line = line.strip()
|
||||
|
||||
# 如果是代码行(非空、非注释)
|
||||
if stripped_line and not stripped_line.startswith('#'):
|
||||
translated_line = self.translate(stripped_line)
|
||||
processed_lines.append(translated_line)
|
||||
else:
|
||||
# 保留原样或翻译注释
|
||||
if stripped_line.startswith('#'):
|
||||
translated_line = self.translate(stripped_line)
|
||||
else:
|
||||
translated_line = stripped_line
|
||||
|
||||
processed_lines.append(translated_line)
|
||||
|
||||
content = '\n'.join(processed_lines)
|
||||
|
||||
return content
|
||||
|
||||
|
||||
def main():
|
||||
"""测试示例"""
|
||||
handler = ChineseResponseHandler()
|
||||
|
||||
# 测试用例
|
||||
test_cases = [
|
||||
"Hello world",
|
||||
"pip install copaw",
|
||||
"Error: File not found",
|
||||
"你好世界",
|
||||
"Can you help me upgrade copaw?"
|
||||
]
|
||||
|
||||
print("=" * 60)
|
||||
print("中文回复翻译器测试")
|
||||
print("=" * 60)
|
||||
|
||||
for test_input in test_cases:
|
||||
result = handler.process_response(test_input)
|
||||
print(f"\n输入:{test_input}")
|
||||
print(f"输出:{result}")
|
||||
print("-" * 40)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user