Oxygen AI Positron Assistant for Eclipse
The Oxygen AI Positron Assistant Enterprise plugin for Ecliplse provides advanced support for technical documentation writers throughout their content creation process by using a company-specific AI service (by configuring your company's specific OpenAI key, Microsoft Azure OpenAI Service connection, or Anthropic Claude).
The Oxygen AI Positron Assistant uses the advanced Oxygen AI Positron service to support technical documentation writers throughout their content creation process.
Overview
In a simplified form, technical documentation is often done in two stages: analysis and implementation. In the analysis stage, technical writers could use various resources such as web searches, ChatGPT, or discussions with colleagues or engineers to further understand the subject that needs to be documented. In the second stage, technical writers would use tools such as Oxygen XML Editor/Author/Developer to write the actual content.
The Oxygen AI Positron Assistant plugin provides various ways to use AI services (such as ChatGPT) to help writers while editing or reviewing the technical documentation. For example, it can be used to receive hints about what to write next, improve the readability of content, or re-structure the content in various ways.
To try it in a GitHub sample, see: AI Positron Assistant Samples Playground.
Installation
- Download the Oxygen AI Positron Assistant Enterprise for Eclipse archive.
- Extract the archive's contents into the dropins folder located within your Eclipse installation directory.
- Restart Oxygen XML.
Licensing and Configuration
You can configure the company-specific AI service details in the AI Service Configuration Preferences Page.
The AI Positron Enterprise add-on works free of charge with any Oxygen installation using an Enterprise license type for Oxygen.
If your license of Oxygen is not an Enterprise license, a special license key needs to be purchased for the add-on to enable this direct access. You can use the Register button in the AI Positron Assistant side view to configure the special license key.
Accessing AI-Powered Actions
- The Actions drop-down menu at the top of the AI Positron Assistant side view.
- The main chat panel when a conversation has not yet started.
The progress and results of triggering an action are displayed in the main chat pane.
Built-in AI Actions
- Accessibility
-
- Generate Image Alternate Text -
Generates an alternate text for an image that is selected in the main editing area
when working with DITA XML content in the Author visual editing mode.Tip:Conveniently access this action by clicking the
Generate Alternate Text button that is available from the floating toolbar that appears when you select an image.
- Generate Image Alternate Text -
Generates an alternate text for an image that is selected in the main editing area
when working with DITA XML content in the Author visual editing mode.
- Content Generation
-
- Generate Documentation Draft - Generates a documentation draft of a DITA XML topic based on a configuration file that fine tunes the generation process by specifying the context, audience, summary, instructions, images, and a similar topic to help the AI generate the draft content.
- New DITA Topic - Generates a DITA XML topic based on a text description entered in a popup dialog box. For Oxygen version 27 and newer, related content from the current set of project resources is also taken into account.
- Update Content Based on Images - Updates the content of a DITA XML topic based on the images that it references.
- Short Description - Generates a short
description ( inside a
<shortdesc>
element) based on a summary of the selected text (or the entire document if there is no selection). You can configure the style and the approximate number of sentences to be generated. - Index Terms - Generates a
<keywords>
element that contains index terms obtained from the selected text (or the entire document if there is no selection). - Formula/Equation - Generates an AI proposal for a MathML formula or equation based on information provided by the user when invoking the action (for example, a description of a substance, physics formula, mathematical expression, or LaTeX equation).
- Follow Instructions (available for XSLT, Schematron, XSD, CSS, XQuery, JSON, and JSON Schema) - Replaces the selected instructions with content generated based on them.
- Development
-
- Explain Code (available for XSLT, Schematron, XSD, CSS, XQuery, JSON, and JSON Schema) - Generates an explanation of the code found in the current selection or the element content at the current cursor location.
- Chat About Code (available for XSLT, Schematron, XSD, CSS, XQuery, JSON, and JSON Schema) - Creates a new chat to start a discussion with the AI regarding the code found in the current selection or the element content at the current cursor location.
- Document Code (available for XSLT, XSD, and Schematron) - Generates the documentation for the code and includes it as a comment in the document. If code is selected, it documents the selected code. Otherwise, it documents the element at the cursor location. It inserts the documentation as an XML comment before the documented code.
- Generate Code (available for XSLT, Schematron,
XSD, CSS, XQuery, JSON, and JSON Schema) - Generates the code for
the current editor type (
text/xsl
,text/xquery
,text/css
,text/json
,text/xsd
,text/sch
) based on an instruction. It also reuses components found in the current document when generating the new code. The instruction can be a selected text, in which case the text will be replaced with the generated code. Alternatively, the instruction can be the previous XML comment, in which case the generated text will be inserted after the comment. - Suggest Refactoring (available for XSLT and
XSD) - Generates a suggestion for refactoring the selected code to
simplify it and make it easier to read and understand. It has some enhanced
features for XSLT files, such as it upgrades selected XSLT code to version 3.0,
it breaks down large templates into small units, it incorporates
xsl:try
andxsl:catch
instructions for error handling, and adds XML comments to clarify the purpose and functionality of the code. - Annotate Code (available for XSLT, Schematron, and XSD) - Generates XML comments within the code found in the current selection, at the cursor location, or in the whole document. The generated annotations explain key concepts of the code.
- Rewrite
-
- Correct Grammar - Generates a suggestion for correcting the grammar and spelling within the selected content.
- Improve Readability - Modifies the
selected content to improve readability and fix grammar/spelling errors. If you
hover the mouse prompt over this button, a
Settings button becomes available in the top-right corner. Clicking the
Settings button opens a pop-up window where you can choose the writing level of the content to be generated. You can choose between: 5th grade (Very Easy), 8th grade (Plain English), and College (Advanced).
- Use Active Voice - Generates a suggestion for replacing the selected content with content that has been converted from passive to active voice.
- Improve Structure - Improves the selected DITA XML content by adding additional structure or inline elements.
- Itemize - Generates a suggestion for converting the selected content into a list of items.
- Join Items - Generates a suggestion for converting the selected list of items into a paragraph.
- Review
-
- Proofread - Adds comments in content that has logical consistency problems, grammar or spelling mistakes, or is hard to read and comprehend.
- Resolve Comments - Changes the selected content based on the suggestions within comments and then removes the comments.
- Overview
-
- Answer Questions - Generates answers to questions that the AI finds within the selected content (or the entire document if there is no selection).
- Generate Questions - Generates a list of five questions that are answered within the selected content (or the entire document if there is no selection).
- Summarize - Generates a summary of the selected content (or the entire document if there is no selection).
- Readability - Generates suggestions for changing the selected content (or the entire document if there is no selection) to improve its general readability.
- Translation
-
- English, French, German, Japanese - These actions translate the selected text to the target language, while preserving the original XML markup.
- Other... - This action behaves like the previous ones, but it allows you to provide the target language. You can either choose from the predefined values or type another one.
- Intelligent Agents
-
- Create Topics - Generates DITA XML topics based upon user input, incorporating relevant project content. It creates a topic hierarchy, assigns DITA document types, and proposes a DITA map location. Topics are then saved and added upon user approval. The AI considers the DITA map opened in the DITA Maps Manager and the selected topic and then looks for similar content in topics gathered from the related links or through the Retrieval-Augmented Generation (RAG) process. After the action processes, a Preview dialog box shows the list of proposed changes.
- Expand Draft - Enhances a draft of a DITA XML topic by refining the existing content, adding new content, adding markup that is consistent with similar topics, and generating documentation based on the referenced images using the Vision support. The AI looks for similar content in topics gathered from the related links or through the Retrieval-Augmented Generation (RAG) process.
- Split Topic - Analyzes the current DITA XML topic based on modular document development best practices. If the topic is too large or contains multiple subjects, the AI may split it into several topic files. References to the new topics are also added in the DITA map that is currently open in the DITA Maps Manager. After the action processes, a Preview dialog box shows the list of proposed changes.
- Fix Validation Problems - Validates the entire content of the current document, finds problems, and then uses AI to fix all the reported problems.
- Fix Terminology Problems [optional] - When installed along with the latest Terminology Checker add-on, this action that is contributed by the Terminology Checker gathers terminology problems from the entire content of the current document, and then uses AI to fix all the reported problems.
- Reuse
-
- Product Names - Finds product names in the selected
content and replaces them with key references (
@keyref
). If keys are not defined for specific product names, those names are wrapped in<keyword>
elements. - Component - Use the AI to identify the closest existing reusable component that matches the current selected paragraph.
- Product Names - Finds product names in the selected
content and replaces them with key references (
- DITA Conversion
-
- Analyze and Update Topic - This action analyzes and optimizes your DITA topics to ensure modularity and consistency. It reviews and updates the topics to align with the DITA standards, generates new topics, and updates the DITA map as needed.
- Convert to [DITA_TYPE] - Actions that convert plain text,
Markdown, or DITA content to a specific type of DITA topic:
- Task - A topic type used to describe a series of steps to accomplish a specific goal. It is ideal for procedural information.
- Concept - A topic type used to explain an idea, definition, or concept. It is typically used for background or explanatory information.
- Reference - A topic type used to provide detailed, structured information such as tables, lists, or specifications. It is often used for quick look-up information.
- Troubleshooting - A topic type used to describe problems, their causes, and solutions. It is designed to help users resolve issues effectively.
- Glossary - A topic type used to define terms and provide explanations. It is commonly used to build a glossary of terms for a project or document.
- File Creation
-
- Create New XSLT - Generates a new XSLT file based on a text description that you provide in a pop-up dialog box.
- Create New XML Schema - Generates a new XML Schema file (XSD) based on a text description that you provide in a pop-up dialog box.
- Create New Schematron - Generates a new Schematron file based on a text description that you provide in a pop-up dialog box.
- Create New JSON Schema - Generates a new JSON Schema file based on a text description that you provide in a pop-up dialog box.
- Create New DTD - Generates a new Document Type Definition (DTD) file based on a text description that you provide in a pop-up dialog box.
- Marketing
-
- Release Notes - Creates release notes based on a set of features or issue ticket numbers with optional descriptions.
- Marketing Post - Creates a marketing post based on a list of ideas or release notes.
- Improve SEO - Rewrites the content to enhance search engine optimization.
- Pain-Agitate-Solution - Rewrites the content using a marketing style based on the Pain-Agitate-Solution framework.
- Features-Advantages-Benefits - Rewrites the content using a marketing style based on the Features-Advantages-Benefits framework.
Export and Import Chats
A conversation with the AI can be exported to a JSON file using the Export Chat action (available in the Actions menu). The exported file includes helpful information such as details about the invoked action, its parameters, the tools available, the tool calls, the user and assistant messages, and, if applicable, the content that the action was invoked on.
You can import a conversation from a JSON file using the Import Chat action, allowing you to continue the conversation from that point.
These actions are particularly useful for debugging purposes. For instance, you can export a conversation and share it with the developer of a custom action to help them investigate any issues encountered. Once the issue is resolved, you can import the previous conversation and resume from where you left off.
AI Positron Assistant View in Eclipse
The add-on provides access to the AI Positron Assistant side-view. If the view is not displayed, it can be opened by selecting it from .

To clear the information in the chat pane and start a new chat, click
the New Chat button in the
far-left side of the view's header.
The chat History drop-down toolbar button makes it easy to go back to previous
conversations and continue them.
The Actions drop-down menu at the top of the
AI Positron Assistant view contains the available AI-powered
actions that can be used to generate and refine content. Simply select the action to trigger
it. You can hover the mouse cursor over an action to see a description of what the action
does. A set of 5 recently used actions are also available in the
Actions drop-down menu. The Record button located in the
Actions drop down menu allows you to create custom actions or
prompts by recording changes.
A drop-down button on the right side of the view's header allows you to select the AI model to be used for chat purposes and for the processing of actions.
- Preferences - Opens the Oxygen AI Positron Assistant preferences page where you can configure the AI Positron service address and provide a Context for the user that the AI will use to create more relevant and personalized responses.
The main chat pane presents the results after processing an action and allows you to further refine the responses by sending messages to the Positron service platform. When an AI Positron action is triggered, the chat pane displays the progress and results.
You can also start chatting with the AI directly in the chat box at the bottom of the view, without invoking an action. In this case, if there is content selected in the main editor area when a chat is initiated, the selection is passed to the AI along with the document type as context for the conversation.
The response is received from the server in streaming mode (the AI sends chunks of the response as it is being generated rather than waiting to send the entire response after it is generated). When the AI returns XML, Markdown, or JSON content, the response area has the appropriate syntax highlights, depending on the type of content received. You can open links from the response area in a web browser by hovering over the links, then hold the Control/Command key and mouse click.
Create document - Available only for the actions that generate an entire DITA topic, this action opens the topic in a new editor.
Insert/
Replace - Inserts the response at the cursor location within the document (or replaces the selected content).
Modify Document and Review Changes - Opens the built-in file comparison tool where you to review the changes that were inserted in the document. After reviewing the changes, click Accept to keep the changes or Reject to revert the changes.
Copy - Copies the response to the system clipboard.
Regenerate - Requests the AI to give another response. You can also use the drop-down arrow to decide which engine model to use.
Review documents and approve AI modifications - Available for actions that save changes to disk, this opens a pop-up that lists the files that are being modified by the AI operation and offers options for reviewing the changes. You can click See changes to open a visual comparison of the changes. Click Accept changes to accept the modifications or click Reject changes to revert all the modifications.
You can use the bottom pane to refine the response by sending a message
to the AI platform and it will generate a new response based upon your message. You can edit
your message by clicking the Edit button that appears to the right of your message in the response area.
You would then edit your message and click Submit to regenerate the
response. For multiple edited messages, you can use the
Next/
Previous buttons to navigate between chat
threads.


- ${selection} - Expands to the currently selected content.
- ${selection-original} - Expands to the currently selected content. If the current selected content contains track changes, they are rejected, resulting in the original version of the text.
- ${selection-final} - Expands to the currently selected content. If the current selected content contains track changes, they are accepted, resulting in the final version of the text.
- ${document} - Expands to the content of the entire document.
- ${attach(filePath)} - Attaches a
specified image (in png or jpeg format) or
XML, Markdown, text, Word (.docx), Powerpoint
(.pptx), or PDF file to the conversation. For Word and PDF files,
the included images are also sent to the AI engine. You can also attach files in an
easier way by using the dedicated
Attach action.
Oxygen AI Positron Assistant Preferences Page

- Enable AI Positron Assistant
- Deselect this setting to disable the AI assistant.
- Context
- The context provides useful information about the user to the AI and is used in each action and chat request to create more relevant and personalized responses.
- Actions section
-
- Load default actions
- Specifies if default actions are loaded.
- Additional actions folder
- You can use this option to specify a local folder where you have stored additional actions.
- Actions to exclude
- You can specify a comma-separated list of IDs for the actions that you do not want presented in the list of available actions. Use the menu to the right of the text field to choose the actions to exclude.
Enabling Functions for Retrieval Augmented Generation (RAG)

- Enable functions
- Enables the use of functions for retrieval-augmented generation and for writing
content in the project.
- Enable project-based RAG
- Enables retrieval-augmented generation based on similar content obtained from the current open project. Actions and chat interactions generate content give more precise and meaningful responses when this setting is enabled. It is enabled by default. The available functions used for RAG are listed in the text box.
- Enable external RAG sources
- Enables the use of external retrieval augmented generation sources.
- Oxygen Feedback site token
-
When the Oxygen Feedback product is used to provide search functionality for a web site generated from the DITA XML project, its search system can be used to retrieve related content. In the Oxygen Feedback administrative interface, find the installation instructions for the site version that you want to use (click the Installation button on your version's tile in the Site Version page). The installation information contains a unique
deploymentToken
value that can be copied and pasted into the Oxygen Feedback site token field. - Oxygen Feedback site description
- A description for this external content retrieval site that is passed to the AI engine to help it decide whether or not the external source is used.
- Enable writing content in project
- Allows functions that can be used by the AI to write content in the current project. The available functions used for this purpose are listed in the text box.
- Limit read/write access to
- Allows you to restrict the locations where functions can read and write content. You can specify these locations as a comma-separated list of resource paths. By default, read and write access is restricted to the project directory and the directory of the current root map.
AI Service Configuration Preferences Page

- AI Connector
- Specifies the connector type: OpenAI, Microsoft Azure OpenAI or Anthropic Claude.
OpenAI:
If OpenAI is chosen as the connector type, the following settings are available:
- Address
- The web address of the OpenAI service. By default:
https://api.openai.com
. - API key
- The OpenAI API key necessary to work with the connector. Note:This option does not get saved in the Project-level options.
- Organization ID
- For users who belong to multiple organizations, they can specify which organization is used for an API request. Usage from these API requests will count as usage for the specified organization.
- Default model
- The default model is used for the chat view and for actions that do not explicitly specify a model.
- Enable text moderation
- This setting applies moderation (checks whether content complies with OpenAI's usage
policies) to both the input text sent to the AI service and the response received from
the AI service. It is enabled by default.Tip:
By default, when executing an action using the OpenAI connector, three requests are made:
- A moderation on input content request to
configured_web_address/v1/moderations
. - A completion request to
configured_web_address/v1/chat/completions
. -
A moderation on content returned by AI to
configured_web_address/v1/moderations
.If your AI service does not require moderation (for example, moderation is already made by chat/completions endpoint) you can disable it by unchecking this checkbox.
- A moderation on input content request to
- Enable streaming
- This option controls whether streaming is enabled. When enabled (default), AI-generated answers are delivered in real time as a continuous flow. If disabled, the complete answer is delivered all at once after the processing is finished.
- Extra Headers
- Extra name/value parameters to set in the headers that are specific for the AI
requests.Tip:If the service uses Bearer Authentication, you can specify the key in the Key text field. If another authentication method is used, the Key field can be left empty, and the Extra Headers table can be used to set the authentication info on the request header. Note that editor variables can be used in this field and you can set your key in editor variables and specify the value in this table like this:
${env(AI_SERVICE_KEY)}
to access pre-set values of environmental variables.
- You can use your own fine-tuned OpenAI models.
- The OpenAI connector might work with other AI engines that use the OpenAI APIs (like Grok or Deepseek).
MS Azure OpenAI:
If Microsoft Azure OpenAI is chosen as the connector type, the following settings are available:
- Endpoint
- The web address where the connector service is located. This value can be found in the
Keys & Endpoint section when examining your resource from the Azure
portal. For example:
https://your-company-name.openai.azure.com/
. - Deployment
- The deployment name that was chosen when the model was deployed in Microsoft Azure.
- API key
- The Microsoft Azure OpenAI Service key necessary to work with the connector.
- Vision-specific Settings
- Vision-specific settings are only used when images are attached in the Chat
panel or sent to the AI engine with specific actions (e.g. Generate Documentation
Draft).
- Vision - Endpoint
- Optional Azure AI deployment endpoint that can analyze images using
Vision. This setting specifies the web address where the connector
service is located. This value can be found in the Keys & Endpoint
section when examining your resource from the Azure portal. For example:
https://your-company-name.openai.azure.com/
. - Vision - Deployment
- Optional deployment name that was chosen when the Vision model was deployed in Microsoft Azure.
- Vision - API key
- Optional Microsoft Azure OpenAI Service for the endpoint that can analyze images using Vision.
- Enable streaming
- This option controls whether streaming is enabled. When enabled (default), AI-generated answers are delivered in real time as a continuous flow. If disabled, the complete answer is delivered all at once after the processing is finished.
- Extra Headers
- Extra name/value parameters to set in the headers that are specific for the AI requests.
Anthropic Claude:
If Anthropic Claude is chosen as the connector type, the following settings are available:
- Endpoint
- The web address where the connector service is located. By default, it is
https://api.anthropic.com/
. - API key
- The Anthropic Claude API key necessary to work with the connector.
- Model
- The Anthropic Claude model to use. By default, it is
claude-3-opus-20240229
. - Enable streaming
- This option controls whether streaming is enabled. When enabled (default), AI-generated answers are delivered in real time as a continuous flow. If disabled, the complete answer is delivered all at once after the processing is finished.
- Extra Headers
- Extra name/value parameters to set in the headers that are specific for the AI requests.
${env(ENV_NAME)}
in all configuration and header parameter values.Function Calls
Within the definition of custom actions, you can reference existing functions that are called by the AI engine to interact with the application. This gives actions more context information and generates more accurate responses from the AI.
{
"id": "action.summarize",
"title": "Summarize",
"categoryId": "Overview",
"type": "show-response",
"description": "Generate a summary of the selected content or the entire document.",
"context": "Your task is to summarize the provided user text.",
"parameters": {
"function_refs": [
{
"ref": "get_current_document_plain_text_content"
}
]
}
}
The current available function reference values are:
add_to_toc(ditaMapURL, resourceURL, anchorNodeURL, positionOfInsertion)
- Modifies the DITA map currently opened in the DITA Maps Manager view and adds a topic reference to it.
get_content_around_caret
- Retrieves size-limited content around the current cursor location within the document open in the editor.
get_content_for_document_url
- Retrieves content from the document specified by the provided URL. An optional
lineNumbering
parameter allows the AI to request the returned content to be returned with line numbers included. get_current_document_marked_up_content
- Retrieves all text with markup from the current document open in the editor. An
optional
lineNumbering
parameter allows the AI to request the returned content to be returned with line numbers included. get_current_document_plain_text_content
- Retrieves all plain text (e.g. without markup) from the current document open in the editor.
get_current_editor_file_location
- Retrieves the location (absolute path/URL) of the current file that is open in the editor.
get_related_content_from_webhelp
- Returns content from the associated Oxygen Feedback WebHelp system for which a Enable external RAG sources has been configured.
get_related_content_from_specific_feedback_site
- Returns content from the specified Oxygen Feedback WebHelp token passed as a parameter. The Enable external RAG sources checkbox must be selected.
get_topic_context_in_toc
- Returns a hierarchical structure of the DITA map that is currently open in the DITA Maps Manager view. This structure shows the selected topic and provides context, including its parent, siblings, descendants, and nearby nodes within the DITA map. This feature helps the AI understand where the topic is located in relation to other elements in the DITA map. If the selected topic cannot be identified, the hierarchy will start from the root of the DITA map.
invoke_ai_action(actionID, content)
- Invoke an action by passing the action ID and content to process.Tip:To define actions that are hidden in the interface and intended only for use by other actions, prefix their IDs with
agent.hidden.action
. retrieve_all_ai_actions
- Get IDs and descriptions for each available AI action.
save_document(URL,content)
- Saves the document at the specified path and writes content to it. If a resource already exists at the specified URL, the content of the document will be overridden with the new content. For actions that use this function, the application gathers a list of resources to modify and displays them in a Preview dialog box after the action processes.
validate_document_content(URL, content)
- Validates specified content and reports error messages in JSON format.
validate_current_document()
- Validates the current document's content and reports error messages in JSON format.
You can impose a description for the referenced function that is called by the AI engine:
"function_refs": [
{
"ref": "get_current_document_plain_text_content",
"description": "The function is designed to retrieve the complete document as
plain text without markup."
}
]
Create Custom Prompts/Actions by Recording Changes
The Record button in the top-left corner of the view allows you to create new AI
actions. It opens the Record examples for instructions dialog box
where you can provide a set of instructions that are intended for the AI to follow. Then,
after clicking the Start recording button at the bottom of the dialog
box, you can record a collection of examples in the editing area that will help the AI
better follow the given instructions. The examples are recorded from the changes made in the
open editors.
After providing examples, you need to click the Record button
again to stop the recording. You will then have the opportunity to save the final result as
either a Positron action or as a favorite chat prompt.
- Click the
Record button.
- In the Record examples for instructions dialog box, enter some instructions like: You are a technical writer. Add DITA markup to menu cascades.
- Click Start recording.
- Open a DITA topic that has a menu cascade without markup (for example:
File > Export
). - Edit the topic and add markup, transforming it to:
<menucascade> <uicontrol>File</uicontrol> <uicontrol>Export</uicontrol> </menucascade>
- Click the
Record button again to stop the recording. The system generates the following instructions with examples:
You are a technical writer. Add DITA markup to a menu cascades. ### Input: <p>File > Export</p> Output: <p><menucascade><uicontrol>File</uicontrol> <uicontrol>Export</uicontrol></menucascade></p> Input: ${selection} Output:
- In the resulting dialog box, save the final result as either a Positron action or as a favorite chat prompt.
Change Tracking Limitations/Behavior
Change tracking and comments are serialized as processing instructions in XML documents. When processing content from XML documents opened in the Author visual editor mode, the AI engine receives the XML content with the change tracking and comment processing instructions present inside of it. However, all changes made by the AI engine to the processed XML content are previewed and inserted with change tracking turned off in the document.
Security
All possibly confidential user-specific content (history list, favorite prompts, local caches for improving speed) is stored encrypted and cannot be exported and used by others.