skill-writer

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

Skill Writer - 智能文书写作平台

一个基于 Skill 架构的智能文书生成系统,支持多种文书类型,可扩展学习新的文书格式。

核心特性

  • Skill 系统:每种文书类型对应一个 Skill,包含结构模板、写作规范、评审要点
  • 需求理解:分层字段(必填/选填/推断)+ 多轮对话澄清
  • 高质量写作:多 Agent 协作(提纲 → 草稿 → 审核 → 修订)
  • 文件提取:上传材料自动抽取字段并补充外部信息
  • 可扩展:支持学习新的文书类型并创建新 Skill

完整工作流程(端到端)

以下流程描述真实运行顺序和数据在系统中的流转方式:

  1. 选择 Skill / 创建 Skill
    • Skill 定义结构、需求字段与写作规范,是整个写作的“蓝图”。
  2. 创建会话
    • 前端调用 POST /api/chat/start,会话进入 requirement 阶段。
  3. 需求收集与编辑
    • 用户填写必填/选填/可推断字段,系统随时保存到会话 requirements
  4. 上传材料 → 信息抽取 → Skill-Fixer 会话覆盖
    • 支持多文件上传,同一批次会合并抽取结果与外部信息摘要。
    • 抽取结果写入会话需求,并生成 skill_overlay(补充规范/准则/章节提示/材料摘要)。
    • skill_overlay 仅作用于当前会话,不会改动原始 Skill。
    • 多次上传会重新计算覆盖层:本批次字段 + 会话累计 external_information 共同参与补充。
  5. 开始生成
    • 前端调用 POST /api/chat/session/{session_id}/start-generation,会话进入 writing 阶段。
  6. 逐章节生成(流式)
    • 每个章节按顺序执行:outline → draft → review → revise(可选)
    • Reviewer 可直接给出修订结果,或触发 Writer 进行二次修订。
  7. 组装与完成
    • 将各章节合并成最终文档,写入 documents,会话进入 complete

简化流程图:

start_session
  → collect_requirements
  → upload_files & skill_fixer_overlay
  → start_generation
  → [section] outline → draft → review → revise?
  → assemble
  → complete

项目结构

skill-writer/
├── backend/
│   ├── core/
│   │   ├── skills/          # Skill 定义
│   │   │   ├── base.py      # Skill 基类
│   │   │   ├── registry.py  # Skill 注册表
│   │   │   └── loader.py    # 文件化 Skill 加载
│   │   ├── agents/          # Agent 实现
│   │   │   ├── base.py
│   │   │   ├── requirement_agent.py
│   │   │   ├── writer_agent.py
│   │   │   └── reviewer_agent.py
│   │   └── workflow/        # 工作流编排
│   │       ├── simple_workflow.py
│   │       └── state.py
│   ├── api/                 # FastAPI 路由
│   │   ├── main.py
│   │   └── routes/
│   ├── config.py            # 配置
│   └── requirements.txt
├── frontend/                # Vue3 前端
│   ├── src/
│   │   ├── views/
│   │   ├── api/
│   │   └── router/
│   └── package.json
├── backend/data/
│   └── skills/              # Skill 数据和范例
├── workflow_diagram.png     # 工作流图
└── workflow_design_philosophy.md

快速开始

1. 配置环境变量

cd backend
cp .env.example .env
# 编辑 .env 文件,填入 LLM API Key

2. 启动后端

cd backend
pip install -r requirements.txt
python -m uvicorn api.main:app --reload --host 0.0.0.0 --port 8000

3. 启动前端

cd frontend
npm install
npm run dev

4. 访问应用

打开浏览器访问 http://localhost:5173

API 接口

Skills API

  • GET /api/skills/ - 获取所有可用 Skill
  • GET /api/skills/{skill_id} - 获取 Skill 详情
  • POST /api/skills/create-from-template - 上传模板生成 Skill

Chat API

  • POST /api/chat/start - 创建会话
  • GET /api/chat/session/{session_id}/requirements - 获取需求字段
  • PUT /api/chat/session/{session_id}/requirements - 保存需求字段
  • POST /api/chat/session/{session_id}/upload-json - 上传文件提取信息
  • POST /api/chat/session/{session_id}/start-generation - 开始生成
  • GET /api/chat/generate/{session_id}/stream - SSE 流式生成

Documents API

  • GET /api/documents/ - 获取文档列表
  • POST /api/documents/ - 创建文档
  • GET /api/documents/{doc_id} - 获取文档详情

添加新的 Skill

  1. backend/data/skills/ 创建 Skill 目录
  2. 添加 SKILL.md / requirements.yaml / structure.yaml / guidelines.md
  3. 启动后会自动加载
from backend.core.skills import BaseSkill, register_skill

@register_skill
class MyNewSkill(BaseSkill):
    @property
    def metadata(self):
        return SkillMetadata(
            id="my_skill",
            name="我的文书类型",
            ...
        )

    @property
    def structure_template(self):
        return [...]

    @property
    def requirement_fields(self):
        return [...]

架构说明

Skill 系统

每个 Skill 定义了一种文书类型,包含:

  • 元数据:名称、描述、标签等
  • 结构模板:文书的章节结构
  • 需求字段:需要收集的用户信息
  • 写作风格:语言风格、禁忌词等

Agent 系统

  • RequirementAgent:通过对话收集用户需求
  • WriterAgent:根据需求生成文档内
  • ReviewerAgent:审核生成的内容质量

工作流

系统采用简化工作流(非 LangGraph),并支持流式 SSE:

start_session → collect_requirements → start_generation → outline → draft → review → revise → assemble → complete

技术栈

  • 后端:FastAPI, LangChain, OpenAI API
  • 前端:Vue 3, Tailwind CSS, Vite
  • 状态管理:Pinia