chichot-0.07 Agent Tool/Personal Assistant with Tk Interface.

chichot-0.07 Agent Tool/Personal Assistant with Tk Interface.

Post by Zbigniew Wieckows » Wed, 28 Dec 1994 23:14:40

Currently uploaded to

1.0 What is chichot?

Chichot is an agent software that assists the user throughout the interaction
with the xterm session. In this case the word agent should be taken as a
personal assistant. Chichot learns from the user and follows the changing
context of interaction, providing the user with previously defined macros and
actions in those contexts. Hopefully, using this tool will allow to reuse
patterns of interactions of a single user, as well as allow sharing them
between different users.

2.0 Basic concepts.

context - words/phrases that uniquely define the sematics of the current

trigger - an output string that causes a change of the current context

macro   - a string with a name that can be invoked (input and output) that
          doesn't assume any interaction with the underlying application

action  - an interactive procedure that is able to sychronize with the
          underlying application

3.0 Programming.

One programs by defining contexts, triggers, macros, and actions. I will
focus only on defining actions, since other things are relatively simple.


Can be relative to the cursor (Area) or absolute (Row). Selected area, can
be saved, retrieved, or compared to a string.

The whole screen can be saved and retieved (Dump).


You can search for sequences of words, numbers, and characters (SEARCH),
as also for 2D patterns (Pattern). When you specify a pattern, '#' character
is used to mark "don't care" positions.


Specifying timeouts used as a default later (Standard), or one time values
(e.g. before issuing a command that is known to have weak response time)
is possible. The two values - arrival and interarrival - describe the
characteristics of the application's response, e.g. ftp might have high
connect time - 20s, but later the data comes in chunks every 200ms. Defining
those values allows predicting the amount of time to wait before declaring
the end of output.


An approximation of the number of keywords can be compared to the supplied


When defining an action specify the assertion that is currently true. Later,
an invoked action will ask you to provide an alternative if the condition
is not true, e.g. when you are searching for a pattern on the screen make
sure this pattern is really there.


If the assertion is not true, a window should pop up asking you to confirm
the beginning of a definition of an alternate action. After you confirm,
chichot goes into recording mode, just like before when you were defining
an action initially. With time you can refine your actions. After you are
done defining an alternate action, select Action/Record/End. Next time the
assertion is not true, the just defined alternate action will be invoked
automatically, without requiring your intervention.

4.0 Uses.

Since chichot can work with any terminal application, the possibilities are
limitless. Let me just mentioned several uses that I have though about:

- IRC monitor - monitor IRC channels, and send screen dumps over e-mail when
  the number of keywords on the screen is higher than some threshold,
- play games - finally get your name on the top of score list on all machines
  on the network,
- tutor for Unix beginner - define error messages as triggers that take the
  user to a specially defined contexts where defined macros print hints,
  explanations, and encouragement messages.
- ...

5.0 License.

GNU Public License - "tool is free, what you develop with it, does not
necesarily have to be free", so if you set up a macro and action repository
you can charge for your effort. In case the need arises, I intend to set up a
free repsitory.

6.0 Install

Edit chichotConfig.C and customize it to suit your needs. Also, edit the
appropriate Makefile, and correct, if necessary, locations of different

7.0 Running

Set your TERM environment variable to vt100.

Typing chichot at the shell prompt should be enough to get the interface
started. Make sure that the initial text widget named Contexts contains
exactly one space before trying to define any context changes.

Now - very important step - tell chichot what your shell prompt looks like.
To accomplish that choose Context/Change from the menu, in the Add contexts
text widget enter "shell" (without enclosing double quotes), and specify
your prompt string, e.g. what works for me is "\n% " (again, without
enclosing double quotes). Then press OK button (leave those red lights on
radiobuttons alone for now). After that pressing Enter on the keyboard
should cause different things to be displayed on the interface.

8.0 Main future directions.

- right now the end result depends on the history of interactions, I will
  work on allowing the user to interactively reprioritize clustered sets
  of conditions/assertions (much like it is done with rules in expert systems).
- background execution - with kibitz it would still be possible to contact the
  user and request alternate action,
- more robust pattern recognition features - right now a pattern is a
  contiguous area, and you cannot really relate two distant things that
  will be needed for determining more complex relationships between patterns,
- ASCII interface, so chichot could work on a plain terminal - if I see a
  real need (actually you can theoretically do it right now, but I wouldn't
  recommend it - it is really hard to determine what state you are in
  without any feedback),
- more platforms,
- more terminal types,
- more screen control sequences taken care of,
- more comments,
- more efficient and readable code,
- new features as a response to your comments.


Zbigniew Wieckowski, Department of Computer Science, University of Minnesota,

         What is mind? No matter. What is matter? Never mind.

Version: 2.6.2



PLEASE remember Keywords: and a short description of the software.


1. RH6.2/LILO install problem: "L 07 07 07...."

RH6.2 install question:

I am trying to install RH6.2 on an Intel 586 machine from a maker I
haven't used before.  It seems to go successfully but when I try to boot
from the hard drive I get "L 07 07 07 07 . . . ."  I can boot from my
boot floppy just fine.

I have:

(1) verified that my /boot partition is within the first 1024 cylinders
(it is in cylinders 1 - 4).  LILO is being written to /dev/hdb (the

(2) verified that my BIOS has LBA enabled and the MBR not

(3)  looked at /etc/lilo.conf on the hard drive and the floppy.  I don't
see anything on the hard drive version that gives me pause, except maybe
a line "map=/boot/map" that is not present in the floppy version.  But
deleting this line didn't help.  /boot/map is a binary that I can't
troubleshoot myself with my present knowledge.

Any advice?


SkyPilot Network, L.L.C.       <URL goes here>

2. Installation Success (Free SCO)

3. Personal Search Agent

4. Any suggestions for a good database library for Linux?

5. Kernal Panic : VFS : Unable to mount root fs on 07 : 07

6. XServer Won't completely shut down

7. C++ app built on Solaris8 Generic_108528-07 crashes on Solaris8 Generic_108528-07

8. SHAREWARE: Crack dot Com's "Abuse" : Screenshots

9. Xinvest 2.3.1 - personal finance tracking and performance tool

10. Q: Interfacing with Casio Personal Organizer

11. Personal Antivirus (PAV or Personal AV) removal

12. Updated Tcl/Tk Interface for the NExS Spreadsheet

13. TK/tcl gurus: wrong version of Tk loaded (3.6): need 4.x?