Skip to main content

structured-writer — AI Agent

Project description

Structured Writer

结构化写作智能体 — 模板驱动的大纲规划 + 串行写作引擎。 版本:1.1.0b12 | 作者:wUwproject | 许可证:Apache 2.0

基于 Planner → Writer 双流水线的文档生成工具,支持模板驱动的元数据/内容树分离、大纲交互编辑、逻辑提示词等特性。


核心特性

特性 说明
meta+content 分离 模板分元数据区(短标识)和内容树区(文章正文),各有独立渲染/规划规则
LLM 对话生成模板 描述需求 → LLM 自动生成 meta/content/style/logic 四部分
串行写作引擎 按 order batch 逐节写作,支持 RAG 参考 + 辅助知识注入 + 事实自检
交互式大纲编辑 勾选/排序/重点/RAG/字数调整,leaf 和 section 类型独立字数控制
重新规划 + plan_hints 模态框输入章节/字数修改要求,LLM 按优先级重规划
逻辑提示词 与风格提示词分离,控制 LLM 的认知流程顺序(先写什么后写什么),不影响文章最终排列

快速开始

# 1. 安装依赖
pip install -r requirements.txt

# 2. 启动(需要 LM Studio 或 Ollama 运行中)
python main.py

# 3. 打开浏览器访问 http://localhost:8770

用户界面概览

配置 Tab

┌─ 模板管理 ───────────────────────────────────────┐
│  [下拉选择模板]  [另存为] [删除] [从对话生成]      │
│                                                  │
│  元数据区(橙色)   名称 | 显 | 字段意义 | 填写    │
│  ┌─────────────────────────────────────────────┐ │
│  │ 标题  | ☐ | 文章标题 | auto                 │ │
│  │ 作者  | ☑ | 作者姓名 | user                 │ │
│  └─────────────────────────────────────────────┘ │
│                                                  │
│  内容树区(蓝色)   名称 | 显 | 字段意义 | 子结构  │
│  ┌─────────────────────────────────────────────┐ │
│  │ 摘要  | ☐ | 概括全文  | 无                  │ │
│  │ 正文  | ☐ | 详细展开  | 有                  │ │
│  └─────────────────────────────────────────────┘ │
│                                                  │
│  风格提示词:控制文风和语气,注入每一步写作 prompt │
│  逻辑提示词:控制LLM认知顺序,不改变文章最终排列   │
└──────────────────────────────────────────────────┘

填写 → 规划 → 生成流程

1. 选择模板 → meta 输入框出现在聊天区
   ↓ 填写meta字段(或留空让LLM生成)
2. 发送写作主题 → LLM按模板生成大纲
   ↓
3. 编辑大纲(勾选/排序/字数/重点/RAG)
   ↓ 点「重新规划」→ 输入调整要求 → LLM重规划
4. 点「开始生成」→ 逐节串行写作

常见操作

1. 配置模型

在配置 Tab 的 规划模型 / 写作模型 区设置后端地址和模型名,点「刷新」加载可用模型列表。

2. 管理模板

  • 切换:下拉选择
  • 编辑:直接修改表格中的字段
  • 另存为:基于当前模板创建副本
  • 删除:仅自定义模板可删,双击确认
  • 从对话生成:输入文档描述,LLM 自动构造 meta+content+style+logic

3. 调整大纲

操作 方式
隐藏/显示节 勾选复选框
调整顺序 下拉选择 I~X
标记重点 勾选 ⭐重点
调整字数 leaf 节直接改输入框,section 节改子结构输入框
设为 0 不做字数限制,LLM 自由发挥
启用 RAG 勾选 RAG + 选择知识库(需 8767 在线)
重新规划 点击 → 模态框输入要求 → LLM 按新要求重生成

4. 写作控制

  • 自动撰写:单篇/批量自动执行规划+生成
  • 延时停止:当前子结构写完停
  • 立即停止:续写边界停

模板字段说明

元数据区:
  source=user: 用户必须填,LLM不碰(作者、单位、文号)
  source=auto: 用户可填,留空LLM生成(标题)
  source=llm: 由LLM生成(关键词等短数据)
  show_label=☑: 渲染时显示标签,无值也显示" > 名称:" 
  show_label=☐: 渲染时不显示标签,有值才显示" > 值"

内容树区:
  type=leaf: 无子结构,单段直接写
  type=section: 拆2-4个子结构(用户指定则按用户要求)
  source 固定 llm,不在表格中显示

文件结构

structured-writer/
├── main.py                           # 入口
├── setup.bat                         # Windows 一键启动
├── config.json                       # 全量配置(模板/模型/参数)
├── requirements.txt                  # 依赖
├── CHANGELOG.md                      # 版本日志
├── README.md                         # 本文件
│
├── structured_writer/                # 核心模块
│   ├── web_ui.py                     # Web UI(port 8770)
│   ├── planner.py                    # 大纲规划器(LLM 调用)
│   ├── writer.py                     # 串行写作引擎
│   ├── config_manager.py             # 配置读写 + 迁移
│   ├── state_manager.py              # 会话状态管理
│   ├── llm_client.py                 # LLM 统一客户端
│   └── rag_client.py                 # RAG 外部 API 客户端
│
└── data/                             # 运行时数据
    ├── sessions/                     # 会话存档
    └── archives/                     # 归档会话

技术栈

  • LLM 后端: LM Studio / Ollama
  • Python: 3.10+
  • 架构: ThreadingHTTPServer + 串行写作流水线
  • 模板: meta[] + content[] + style + logic 四部分
  • 渲染: Markdown(#/##/### 三级标题)

协议

Apache 2.0


更新说明

[1.1.0b12] - 2026-07-31

修复

  • leaf 节写作报错 Missing section_title:删除了 _build_context_section_prompt()section_title 参数,已补回
  • LLM 输出引用自来源 N 带空格不匹配:后处理新增 引用自来源 N引自来源 N 空格变种替换
  • max_tokens 硬编码覆盖用户配置citation_validator.py 的 LLM 格式化调用 max_tokens=4096 改为 None,走用户上下文窗口
  • logic 模板残留旧引用指令:学术论文/论文综述 logic 字段中的"引用来源标注为目标文件名"已删除
  • IMRaD 缩写清理:学术论文 logic 字段 IMRaD → "按顺序撰写"

改进

  • 删除按钮二次确认:输出列表删除不再使用浏览器 confirm 弹窗,改为行内确认/取消
  • 上下文行为保持一致:恢复 _logical_order==2 传全部上下文的原始设计

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structured_writer_ldxs-1.1.0b12-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file structured_writer_ldxs-1.1.0b12-py3-none-any.whl.

File metadata

File hashes

Hashes for structured_writer_ldxs-1.1.0b12-py3-none-any.whl
Algorithm Hash digest
SHA256 bd8ceb5cf78aa652876cbe7d56bac81a3cf8eb49640541d4199ddc69dbf7d46e
MD5 db36f4bed50080450632270eade08b6f
BLAKE2b-256 195cc1d5fee1225ad75794f0e32b2e6452cdc5558a580fdfafeed80adf712182

See more details on using hashes here.

Provenance

The following attestation bundles were made for structured_writer_ldxs-1.1.0b12-py3-none-any.whl:

Publisher: publish-pypi.yml on Ldxs001/workbuddy-skills

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page