Restructured self improvement reasoning + added training data

This commit is contained in:
Niels Geens
2025-01-23 15:51:25 +01:00
parent 69d7c6b605
commit cab452c614
33 changed files with 5983 additions and 195 deletions

View File

@@ -1,30 +1,40 @@
# Self Improvement Design Rationale
# Self Improvement
This document explains how SIA improves itself through systematic learning and adaptation. It covers both the theoretical foundations and practical implementation details of the self-improvement system.
SIA operates as a learning system that constantly seeks to enhance its capabilities while maintaining stable and reliable operation.
This improvement happens through several complementary mechanisms, each serving different aspects of the system's evolution.
## Core Philosophy
SIA operates as a learning system that constantly seeks to enhance its capabilities while maintaining stable and reliable operation. This improvement happens through several complementary mechanisms, each serving different aspects of the system's evolution.
### Improvement Mechanisms
## Improvement Mechanisms
The system can improve in several ways:
1. LLM Finetuning
The foundation of SIA's intelligence is its Large Language Model. Through careful analysis of its performance, SIA identifies cases where its reasoning or actions could have been better. These examples, when properly validated and organized, become valuable training data for improving the model's capabilities.
### LLM Finetuning
2. Source Code Evolution
SIA can modify its own Python source code, enabling both architectural and functional improvements. When stopped, SIA restarts and reloads the Python files, allowing code changes to take effect. While powerful, this capability requires robust validation to prevent system instability.
The foundation of SIA's intelligence is its Large Language Model.
Through careful analysis of its performance, SIA identifies cases where its reasoning or actions could have been better.
These examples, when properly validated and organized, become valuable training data for improving the model's capabilities.
3. Procedure Refinement
Procedures provide guided reasoning paths for complex tasks. By analyzing its operational history, SIA can identify common patterns and create new procedures or optimize existing ones. This improves consistency and efficiency while carrying lower risk than direct code modifications.
### Source Code Evolution
4. Tool Development
SIA can develop new tools and enhance existing ones, expanding its capabilities by creating new ways to interact with systems and data.
SIA can modify its own Python source code, enabling both architectural and functional improvements.
When stopped, SIA restarts and reloads the Python files, allowing code changes to take effect.
While powerful, this capability requires robust validation to prevent system instability.
### Procedure Refinement
Procedures provide guided reasoning paths for complex tasks.
By analyzing its operational history, SIA can identify common patterns and create new procedures or optimize existing ones.
This improves consistency and efficiency while carrying lower risk than direct code modifications.
### Tool Development
SIA can develop new tools and enhance existing ones, expanding its capabilities by creating new ways to interact with systems and data.
## Challenge-Based Testing
To improve systematically, SIA uses challenges that formalize specific capabilities into testable scenarios. These serve multiple purposes:
To improve systematically, SIA uses challenges that formalize specific capabilities into testable scenarios.
These serve multiple purposes:
- Testing specific capabilities
- Validating improvements
- Detecting regressions
@@ -55,54 +65,62 @@ Each challenge consists of:
### Example Challenges
Two examples illustrate different aspects of capabilities that need testing:
Two examples illustrate different aspects of capabilities that need testing.
Together they are good examples because they:
1. Time Series Analysis Challenge
Tests if SIA can effectively analyze large amounts of time series data spread across multiple files. This tests:
- Efficient file handling
- Context management with size constraints
- Data analysis capabilities
- Resource-aware processing
- Test different capability sets
- Have clear success criteria
- Include resource constraints
- Require multiple skills
- Reflect real-world tasks
Initial setup:
- Directory with many CSV files containing time series data (created by a script)
- Files too large to load into context at once
- Need to find patterns/anomalies in the data
- Resource constraints on memory usage
#### Time Series Analysis Challenge
Success criteria:
- Efficiently reads and processes files
- Manages context to stay within limits
- Uses appropriate aggregation strategies
- Finds correct answers to queries
- Validates findings across files
Tests if SIA can effectively analyze large amounts of time series data spread across multiple files. This tests:
2. Tool Development Challenge
Tests if SIA can develop a score tracking tool based on vague user requirements. This tests:
- Requirements gathering through questions
- Software design capabilities
- User interface development
- Integration with existing systems
- Documentation skills
- Efficient file handling
- Context management with size constraints
- Data analysis capabilities
- Resource-aware processing
Initial setup:
- Simple user request for card game score tracking
- Ability to ask questions about requirements
##### Initial setup
Success criteria:
- Asks relevant questions to understand needs
- Designs appropriate solution
- Implements working tool
- Documents usage clearly
- Directory with many CSV files containing time series data (created by a script)
- Files too large to load into context at once
- Need to find patterns/anomalies in the data
- Resource constraints on memory usage
These challenges are good examples because they:
- Test different capability sets
- Have clear success criteria
- Include resource constraints
- Require multiple skills
- Reflect real-world tasks
##### Success criteria
### Challenge Directory Structure
- Efficiently reads and processes files
- Manages context to stay within limits
- Uses appropriate aggregation strategies
- Finds correct answers to queries
- Validates findings across files
#### Tool Development Challenge
Tests if SIA can develop a score tracking tool based on vague user requirements. This tests:
- Requirements gathering through questions
- Software design capabilities
- User interface development
- Integration with existing systems
- Documentation skills
##### Initial setup
- Simple user request for card game score tracking
- Ability to ask questions about requirements
##### Success criteria
- Asks relevant questions to understand needs
- Designs appropriate solution
- Implements working tool
- Documents usage clearly
#### Example Directory Structure
Challenges are organized in a consistent file structure:
@@ -150,32 +168,127 @@ This structure ensures that:
- Required resources are documented
- SIA can get clarification when needed
## Web Interface Considerations
## Testing Framework
SIA's web interface allows humans to:
- Modify context before it goes to the LLM
- Review and edit responses before execution
- Load and continue from old iterations
Testing self-improvement capabilities requires running SIA instances in various scenarios while monitoring their behavior and performance.
These test instances must operate in isolation to prevent interference with the main instance or each other.
However, they must also be observable so that the managing instance can evaluate their performance and collect data for improvement.
This interface is not suitable for automated self-improvement because:
- It's designed for human interaction
- Requires manual approval steps
- Doesn't scale for batch operations
- Can't handle parallel improvements
The framework needs to handle several key tasks:
Instead, self-improvement work should use direct file access and command-line interfaces when possible.
- Creating isolated test environments with specific initial conditions
- Starting and managing test SIA instances
- Monitoring test instance behavior and performance
- Collecting and analyzing results
- Cleaning up test environments
### Process Isolation with Bubblewrap
For running test instances, we chose Bubblewrap (bwrap) over alternatives like Docker-in-Docker or systemd-nspawn.
This decision was driven by several factors:
Bubblewrap provides excellent process isolation while being significantly lighter than full container solutions.
It allows fine-grained control over the filesystem view, process namespaces, and security boundaries.
Unlike Docker-in-Docker, it doesn't require privileged containers or risk storage driver conflicts.
Compared to systemd-nspawn, it offers more granular control and doesn't require root privileges or systemd integration.
The tool's ability to create custom filesystem views is particularly valuable for testing.
We can construct exactly the environment needed for each test, including mock files and services, without maintaining full container images.
This makes it easy to create and dispose of test environments quickly.
Bubblewrap's user-space operation means test instances can be started without special privileges, making the testing framework more secure and easier to use in various environments.
Its lightweight nature also means we can run many test instances efficiently, which is important for parallel testing and rapid iteration.
### Communication and Monitoring
Test instances communicate with the managing instance primarily through standard input and output streams.
This choice leverages SIA's existing I/O handling capabilities without requiring special modifications for testing.
The managing instance can send inputs through stdin and observe responses through stdout, just like a normal user would.
For deeper inspection, the managing instance monitors the test instance's iterations directory.
Since SIA already serializes its context for each iteration, this provides a complete record of the test instance's behavior without requiring additional instrumentation.
This approach maintains clean separation between the test instance and the monitoring system.
### Test Results Storage
Test results are organized hierarchically:
```
test_runs/
20240120_131415_commit_abc123/ # Timestamp and commit
challenge_name/
iterations/ # Complete iteration history
io.log # External interaction log
```
The io.log captures all external interactions:
```
2024-01-20T13:14:15.123Z stdin Can you send an email to sarah@example.com about the project status?
2024-01-20T13:14:15.892Z stdout I'll help you draft an email about the project status. Based on recent project information, I suggest this message:
Subject: Project Status Update
Content:
Hi Sarah,
I wanted to provide a quick update on our project progress. We've completed the initial phase of development and are on track with our timeline. The team has addressed all critical issues from the last review.
Would you like me to send this email?
2024-01-20T13:14:20.456Z stdin Yes, that looks good. Please send it.
2024-01-20T13:14:20.789Z stdout I'll send the email now.
2024-01-20T13:14:21.012Z mailbox:sarah@example.com Subject: Project Status Update
Hi Sarah,
I wanted to provide a quick update on our project progress. We've completed the initial phase of development and are on track with our timeline. The team has addressed all critical issues from the last review.
2024-01-20T13:14:21.234Z stdout Email has been sent to sarah@example.com successfully.
```
### Performance Evaluation
Performance data comes from multiple sources:
1. Direct process metrics (CPU, memory, etc.) as stored in the iteration logs
2. Iteration logs showing decision-making patterns
3. Filesystem changes indicating task completion and side effects
4. Standard output showing interaction quality
This multi-faceted approach provides a comprehensive view of performance without requiring modifications to SIA's core code.
The managing instance can collect and analyze this data without interfering with the test instance's operation.
## Test Environment Setup
Test environments are created using a dedicated setup tool.
This tool manages the directory structure, initial context, and any required background processes.
The initial context for a test instance can include setup actions that are executed when the instance starts.
Instead of trying to recreate a specific state directly, we let SIA execute these actions naturally.
This approach handles both the creation of background processes and the establishment of initial conditions in a way that maintains proper timing relationships.
Each entry in the initial context uses relative timestamps (offsets from the start time).
When SIA executes these entries, they automatically align with the new instance's timeline.
This preserves the temporal relationships between entries while anchoring them to the test instance's actual start time.
## Version Control and Configuration
All components that define SIA's behavior are version controlled in a single repository, providing a clear and reproducible state for any point in time.
This is used in two ways:
1. **Training**
The training configuration defines parameters and data used for training.
A model, retrained from the same commit, should produce the same results.
Trained models reference the commit id.
2. **Testing**
Test reports contain the commit id to track changes in the challenges.
### Repository Structure
The repository contains:
- Source code for SIA and its tools
- Procedures for handling various tasks
- Training configuration and metadata
- References to training data
- Training configuration and data
- Test results and analysis
### Training Configuration
@@ -184,10 +297,8 @@ The training configuration is defined in `/training/config.yaml`, which specifie
```yaml
model:
name: "claude-3-sonnet-20240422"
context_length: 100000
temperature: 0.7
system_prompt_path: "training/prompts/system.txt"
system_prompt_path: "system_prompt.md"
action_schema: "action_schema.xsd"
training_data:
conversations:
@@ -203,119 +314,8 @@ training_params:
batch_size: 32
learning_rate: 1e-5
epochs: 3
evaluation:
metrics:
- "accuracy"
- "response_coherence"
challenge_subset: ["code_gen", "file_ops"]
```
## Testing Framework Design Rationale
Testing self-improvement capabilities requires running SIA instances in various scenarios while monitoring their behavior and performance. These test instances must operate in isolation to prevent interference with the main instance or each other. However, they must also be observable so that the managing instance can evaluate their performance and collect data for improvement.
The framework needs to handle several key tasks:
1. Creating isolated test environments with specific initial conditions
2. Starting and managing test SIA instances
3. Monitoring test instance behavior and performance
4. Collecting and analyzing results
5. Cleaning up test environments
### Process Isolation with Bubblewrap
For running test instances, we chose Bubblewrap (bwrap) over alternatives like Docker-in-Docker or systemd-nspawn. This decision was driven by several factors:
Bubblewrap provides excellent process isolation while being significantly lighter than full container solutions. It allows fine-grained control over the filesystem view, process namespaces, and security boundaries. Unlike Docker-in-Docker, it doesn't require privileged containers or risk storage driver conflicts. Compared to systemd-nspawn, it offers more granular control and doesn't require root privileges or systemd integration.
The tool's ability to create custom filesystem views is particularly valuable for testing. We can construct exactly the environment needed for each test, including mock files and services, without maintaining full container images. This makes it easy to create and dispose of test environments quickly.
Bubblewrap's user-space operation means test instances can be started without special privileges, making the testing framework more secure and easier to use in various environments. Its lightweight nature also means we can run many test instances efficiently, which is important for parallel testing and rapid iteration.
### Test Environment Setup
Test environments are created using a dedicated setup tool. This tool manages the directory structure, initial context, and any required background processes. We chose a file-based configuration approach over programmatic setup because it makes test scenarios easier to version control, review, and modify.
The initial context for a test instance can include setup actions that are executed when the instance starts. Instead of trying to recreate a specific state directly, we let SIA execute these actions naturally. This approach handles both the creation of background processes and the establishment of initial conditions in a way that maintains proper timing relationships.
Each entry in the initial context uses relative timestamps (offsets from the start time). When SIA executes these entries, they automatically align with the new instance's timeline. This preserves the temporal relationships between entries while anchoring them to the test instance's actual start time.
### Communication and Monitoring
Test instances communicate with the managing instance primarily through standard input and output streams. This choice leverages SIA's existing I/O handling capabilities without requiring special modifications for testing. The managing instance can send inputs through stdin and observe responses through stdout, just like a normal user would.
For deeper inspection, the managing instance monitors the test instance's iterations directory. Since SIA already serializes its context for each iteration, this provides a complete record of the test instance's behavior without requiring additional instrumentation. This approach maintains clean separation between the test instance and the monitoring system.
### Test Results Storage
Test results are organized hierarchically:
```
test_runs/
20240120_131415_commit_abc123/ # Timestamp and commit
challenge_name/
iterations/ # Complete iteration history
io.log # External interaction log
```
The io.log captures all external interactions:
```
timestamp|source|content
2024-01-20T13:14:15.123Z|stdin|user input
2024-01-20T13:14:15.892Z|stdout|sia response
2024-01-20T13:14:16.234Z|mailbox:user@example.com|email content
```
### Performance Evaluation
Performance data comes from multiple sources:
1. Direct process metrics (CPU, memory, etc.) as stored in the iteration logs
2. Iteration logs showing decision-making patterns
3. Filesystem changes indicating task completion and side effects
4. Standard output showing interaction quality
This multi-faceted approach provides a comprehensive view of performance without requiring modifications to SIA's core code. The managing instance can collect and analyze this data without interfering with the test instance's operation.
## Training Data Management
Training data for improving the LLM comes from analyzing SIA's performance on real tasks and challenges. This data needs special handling:
1. Separation from Production Data
- Training iterations are kept separate from the main SIA instance
- Examples can be modified or synthesized
- Bad examples can be corrected
- Multiple instances can contribute data
2. Organization
- Clear labeling of good and bad examples
- Context for why examples are good/bad
- Links to related challenges
- Documentation of improvements
3. Validation
- Examples must be complete and correct
- Context must be sufficient
- Success criteria must be clear
- Resource usage must be reasonable
## Tooling and integration in SIA
The testing framework consists of two main components:
1. A setup tool that handles:
- Creating isolated filesystem environments
- Configuring initial context and background processes
- Managing process isolation through Bubblewrap
- Cleaning up test environments
2. A command-line parameter for SIA that enables:
- Starting with a specified initial context
- Running in test mode with appropriate defaults
- Maintaining isolation awareness
The simplicity of this design is intentional. By keeping the framework minimal and focused, we reduce the chances of the testing infrastructure itself affecting test results. The framework provides the necessary capabilities for testing while maintaining clean separation between test instances and the managing system.
## Continuous Operation
While working on improvements, SIA must maintain its core functionality:
@@ -341,14 +341,4 @@ This requires:
- Balance improvement with responsiveness
- Monitor system resource usage
- Prevent training impact on user tasks
- Clean up old data regularly
## Looking Forward
The self-improvement system is designed to evolve with SIA. Future enhancements might include:
- Automated improvement suggestion generation
- More sophisticated regression testing
- Enhanced performance analytics
- Broader capability testing
Through this systematic approach to self-improvement, SIA can continue to enhance its capabilities while maintaining reliable operation and clear accountability for changes. The combination of challenge-based testing, careful version control, and comprehensive result tracking creates a foundation for sustained, measurable improvement over time.
- Clean up old data regularly

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="6.05%"
disk_total="1081101176832"
disk_used="42634932224"
memory_total="16630435840"
memory_used="932536320"
stdin="0"
time="2025-01-16T13:45:04Z"&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,17 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="6.21%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1060581376"
stdin="0"
time="2025-01-16T13:45:49Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;single&gt;
ls /
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,53 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="6.61%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1060290560"
stdin="0"
time="2025-01-16T13:45:55Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,58 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="6.95%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1066680320"
stdin="0"
time="2025-01-16T13:46:39Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;single&gt;
ls /root
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,72 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="7.15%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1068597248"
stdin="0"
time="2025-01-16T13:46:44Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,77 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="7.43%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1057677312"
stdin="0"
time="2025-01-16T13:47:29Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;single&gt;
ls /root/iterations
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,94 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="7.85%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1059065856"
stdin="0"
time="2025-01-16T13:47:36Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,99 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="8.1%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1065271296"
stdin="0"
time="2025-01-16T13:50:16Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;single&gt;
ls /root/sia/procedures
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,113 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="8.33%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1065758720"
stdin="0"
time="2025-01-16T13:50:24Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,119 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="8.55%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1067671552"
stdin="0"
time="2025-01-16T13:52:32Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;single&gt;
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,139 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="9.52%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1073836032"
stdin="0"
time="2025-01-16T13:52:53Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;single limit="1758"&gt;
cat /root/sia/procedures/using_procedures/procedure.md
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,199 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="10.97%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1070620672"
stdin="0"
time="2025-01-16T13:53:43Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;single limit="3643"&gt;
cat /root/sia/procedures/user_communication/procedure.md
&lt;/single&gt;</response></iteration>

View File

@@ -0,0 +1,280 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.8%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1072431104"
stdin="0"
time="2025-01-16T13:54:09Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,289 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="14.07%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1078968320"
stdin="0"
time="2025-01-16T13:57:26Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;</response></iteration>

View File

@@ -0,0 +1,307 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="15.36%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1088708608"
stdin="0"
time="2025-01-16T14:12:27Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134549_655"/&gt;</response></iteration>

View File

@@ -0,0 +1,302 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="15.2%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1088708608"
stdin="0"
time="2025-01-16T14:12:41Z"&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134555_680"/&gt;</response></iteration>

View File

@@ -0,0 +1,270 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="14.81%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1088708608"
stdin="0"
time="2025-01-16T14:12:52Z"&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134639_663"/&gt;</response></iteration>

View File

@@ -0,0 +1,261 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="14.46%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089228800"
stdin="0"
time="2025-01-16T14:13:02Z"&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134644_445"/&gt;</response></iteration>

View File

@@ -0,0 +1,249 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="14.27%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089261568"
stdin="0"
time="2025-01-16T14:13:29Z"&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134729_674"/&gt;</response></iteration>

View File

@@ -0,0 +1,242 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.99%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089261568"
stdin="0"
time="2025-01-16T14:13:43Z"&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_134736_148"/&gt;</response></iteration>

View File

@@ -0,0 +1,227 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.57%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089261568"
stdin="0"
time="2025-01-16T14:13:57Z"&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,215 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.34%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:10Z"&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135016_476"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135024_642"/&gt;</response></iteration>

View File

@@ -0,0 +1,208 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="13.08%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1089396736"
stdin="0"
time="2025-01-16T14:14:28Z"&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135232_795"/&gt;</response></iteration>

View File

@@ -0,0 +1,201 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="12.87%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1091063808"
stdin="0"
time="2025-01-16T14:15:16Z"&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135253_387"/&gt;</response></iteration>

View File

@@ -0,0 +1,180 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="11.89%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1091063808"
stdin="0"
time="2025-01-16T14:15:33Z"&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_135726_364"/&gt;</response></iteration>

View File

@@ -0,0 +1,171 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="11.62%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1091309568"
stdin="0"
time="2025-01-16T14:16:03Z"&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_141227_271"&gt;
&lt;![CDATA[
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;delete id="20250116_141227_271"/&gt;</response></iteration>

View File

@@ -0,0 +1,304 @@
<?xml version='1.0' encoding='utf-8'?>
<iteration system_prompt_hash="a357171f34284409058700f0d6c20cbb4f4bfe643aff5b12168c5158767f89b4" action_schema_hash="a4cf87f3d53c7b14aab3c96097d8b7bf838e8f77e413d11f51051afbe22fa3a6"><context>&lt;context
context="14.31%"
disk_total="1081101176832"
disk_used="42638553088"
memory_total="16630435840"
memory_used="1079742464"
stdin="0"
time="2025-01-16T14:00:36Z"&gt;
&lt;reasoning id="20250116_134549_655"&gt;
&lt;![CDATA[
I should start by exploring the file system to understand the environment and identify any relevant files or directories.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134555_680"&gt;
&lt;![CDATA[
ls /
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[NGC-DL-CONTAINER-LICENSE
bin
boot
cuda-keyring_1.0-1_all.deb
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134639_663"&gt;
&lt;![CDATA[
The file system contains several standard directories such as /bin, /etc, /home, /usr, and /var.
To get a better understanding of the environment, I should explore the /root directory to see if there are any user-specific files or directories.
I will use the `ls /root` command to list the contents of the /root directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134644_445"&gt;
&lt;![CDATA[
ls /root
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iterations
model
sia
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_134729_674"&gt;
&lt;![CDATA[
The /root directory contains three items: iterations, model, and sia.
I should explore the contents of these directories to understand their purpose and relevance.
I will start by listing the contents of the /root/iterations directory using the `ls /root/iterations` command.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_134736_148"&gt;
&lt;![CDATA[
ls /root/iterations
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[iteration_20250116_134549_655.xml
iteration_20250116_134555_680.xml
iteration_20250116_134639_663.xml
iteration_20250116_134644_445.xml
iteration_20250116_134729_674.xml
iteration_20250116_134736_148.xml
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135016_476"&gt;
&lt;![CDATA[
There are not tasks in the root directory and the iterations directory only contains what I'just done.
This is a clean start of SIA.
I should look for procedures to follow in the `/root/sia/procedures` directory.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135024_642"&gt;
&lt;![CDATA[
ls /root/sia/procedures
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[README.md
user_communication
using_procedures
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135232_795"&gt;
&lt;![CDATA[
There are no specific procedures to follow.
I will ask the user what I should do.
I'll load the `using_procedures` and `user_communication` procedures.
]]&gt;
&lt;/reasoning&gt;
&lt;single exit_code="0" id="20250116_135253_387"&gt;
&lt;![CDATA[
ls -la /root/sia/procedures/using_procedures
ls -la /root/sia/procedures/user_communication
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[total 16
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 1758 Jan 8 21:40 procedure.md
-rwxr-xr-x 1 root root 1831 Jan 8 21:03 reasoning.md
total 20
drwxr-xr-x 2 root root 4096 Jan 16 13:44 .
drwxr-xr-x 4 root root 4096 Jan 8 08:47 ..
-rwxr-xr-x 1 root root 244 Jan 7 12:18 description.md
-rwxr-xr-x 1 root root 3643 Jan 8 21:49 procedure.md
-rwxr-xr-x 1 root root 1035 Jan 7 12:23 reasoning.md
]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135343_982" limit="1758"&gt;
&lt;![CDATA[
cat /root/sia/procedures/using_procedures/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# Using Procedures
## Core Guidelines
When following a procedure's flowchart:
1. Start with reasoning:
- State current position in flowchart explicitly
- Focus on immediate next step, don't go ahead of the chart
- Evaluate current context and task state
- Often state entry id's that can be removed and explain why to avoid mistakes
- State expected output and runtime for scripts
2. After script execution:
- Analyze the actual output and compare with the expected output
- Reevaluate situation based on results
- Return to flowchart for next step
- Consider if current path is still appropriate
3. When a procedure fails:
- Create a task explaining the issue and the need to fix it
- Add timestamps and id's of relevant entries
## Attention Management
LLMs pay more attention to recently mentioned information.
Reasoning entries should mention what needs attention now.
To maintain focus:
1. State current flowchart position in each reasoning
2. Quote relevant parts of important entries
3. Reference specific entry IDs when using their information
4. Periodically remind about ongoing tasks or future needs
5. Clean up entries that aren't needed for current step
Example of good attention management:
```xml
&lt;reasoning&gt;
At node "evaluate_test_results". Entry 45f3d2 shows failed test: "Error: Connection timeout".
Will need to check system logs soon (noted in /tasks/reminders.txt, check at 14:00).
First focusing on this error.
&lt;/reasoning&gt;
```
## Reasons to Switch Procedures
Common triggers:
- Data available on stdin
- Time matching scheduled task
- Error conditions in script output
- Resource constraints detected
- User input needed]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;single exit_code="0" id="20250116_135409_816" limit="3643"&gt;
&lt;![CDATA[
cat /root/sia/procedures/user_communication/procedure.md
]]&gt;
&lt;stdout&gt;
&lt;![CDATA[# User Communication
## Prerequisites
- User information is stored in the /user directory
- Tasks and their progress are documented in the /tasks directory
## Flow
```mermaid
flowchart TD
Start([Start])
LoadUserBasic[The /user/basic.md file should contain info to identify and address the user properly&lt;br&gt;Also load the last 10 messages from /user/conversation_history/ ]
PrepareForDraft{Have everything needed for drafting a message?}
DraftMessage[Draft message in reasoning entry]
ReadInput[Read input from standard input]
ReasonCleanContext[List id's of entries that are no longer needed&lt;br&gt;Explain for each entry why it is no longer needed]
DeleteEntries[Remove the entries that are no longer needed&lt;br&gt;End by deleting the ReasonCleanContext entry]
AddHistoryUser[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdin entry with .user extension]
LoadTask[Look for the task in the /tasks directory and load relevant files]
LoadUserDetails[Look in the /user directory for relevant files]
EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length]
ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?}
RunScript[Run the script, make sure to set appropriate timeout and output limits]
ReviewDraft{Is the message well structured and free of logical errors?}
SendMessage[Send the message using standard output]
AddHistoryAgent[Add the message to the /user/conversation_history/ directory&lt;br&gt;The filename is the id of the stdout entry with .agent extension]
ReasonResponse[Is the conversation ongoing?&lt;br&gt;How long is the user expected to take to respond?]
NeedAwaitResponse{Is it likely to get a response within a minute?}
BusyWait[Wait 1 second for the first busy wait, double the time each iteration until a response is received&lt;br&gt;Make sure to set the timout]
End([Clean the context])
Start --&gt; LoadUserBasic
LoadUserBasic --&gt; PrepareForDraft
PrepareForDraft --&gt;|Got all needed info| DraftMessage
PrepareForDraft --&gt;|Getting the required info would slow the conversation| DraftMessage
PrepareForDraft --&gt;|Input available on stdin| ReadInput
PrepareForDraft --&gt;|Context usage more than 50%| ReasonCleanContext
PrepareForDraft --&gt;|Task mentioned but not loaded| LoadTask
PrepareForDraft --&gt;|Personal or social info mentioned but not loaded| LoadUserDetails
PrepareForDraft --&gt;|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript
ReasonCleanContext --&gt; DeleteEntries
DeleteEntries --&gt; PrepareForDraft
ReadInput --&gt; AddHistoryUser
AddHistoryUser --&gt; PrepareForDraft
LoadTask --&gt; PrepareForDraft
LoadUserDetails --&gt; PrepareForDraft
EstimateScript --&gt; ScriptAcceptable
ScriptAcceptable --&gt;|Acceptable| RunScript
ScriptAcceptable --&gt;|Not acceptable| PrepareForDraft
RunScript --&gt; PrepareForDraft
DraftMessage --&gt; ReviewDraft{Is this really what I want to say?}
ReviewDraft --&gt;|Rewrite better| DraftMessage
ReviewDraft --&gt;|Good message| SendMessage
SendMessage --&gt; AddHistoryAgent
AddHistoryAgent --&gt; ReasonResponse
ReasonResponse --&gt; NeedAwaitResponse
NeedAwaitResponse --&gt;|Quick response is unlikely| End
NeedAwaitResponse --&gt;|Input available on stdin| PrepareForDraft
NeedAwaitResponse --&gt;|Quick response is likely| BusyWait
BusyWait --&gt; NeedAwaitResponse
```]]&gt;
&lt;/stdout&gt;
&lt;stderr/&gt;
&lt;/single&gt;
&lt;reasoning id="20250116_135726_364"&gt;
&lt;![CDATA[
Let's prepare for user communication.
I'll create a reasoning block with my current findings.
Next I'll reason about which context elements I can clear.
After cleaning, I'll end up with the findings and the procedures.
This will be a good starting point for communication.
]]&gt;
&lt;/reasoning&gt;
&lt;reasoning id="20250116_140036_848"&gt;
&lt;![CDATA[
I've explored the filesystem and found this is a clean start of SIA.
I'll introduce myself to the user and report my findings.
I can wait for user input for a long time since I don't have any other tasks.
]]&gt;
&lt;/reasoning&gt;
&lt;/context&gt;</context><response>&lt;reasoning&gt;
20250116_134549_655: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134555_680: No need to keep this standard directory listing in context.
20250116_134639_663: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134644_445: No need to keep this standard directory listing in context.
20250116_134729_674: I've done this and found nothing. I've noted my conclusions. This entry can be deleted.
20250116_134736_148: This listing is likely stale by now. Best to remove it.
20250116_135016_476: I've loaded the only interesing procedures. This entry can be deleted.
20250116_135024_642: No need to keep this standard directory listing in context.
20250116_135232_795: I'm in the process of doing this. This reasoning is already summarized so the entry can be deleted.
20250116_135253_387: No need to keep this standard directory listing in context.
20250116_135726_364: I'm in the process of doing this. I'll remove this right before removing this reasoning entry about what to delete.
&lt;/reasoning&gt;</response></iteration>